parent
dc3f61acee
commit
b7b2297635
28 changed files with 340 additions and 403 deletions
@ -1,127 +0,0 @@ |
||||
// Copyright (c) 2021 Proton Technologies AG |
||||
// |
||||
// This file is part of ProtonMail Bridge. |
||||
// |
||||
// ProtonMail Bridge is free software: you can redistribute it and/or modify |
||||
// it under the terms of the GNU General Public License as published by |
||||
// the Free Software Foundation, either version 3 of the License, or |
||||
// (at your option) any later version. |
||||
// |
||||
// ProtonMail Bridge is distributed in the hope that it will be useful, |
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
// GNU General Public License for more details. |
||||
// |
||||
// You should have received a copy of the GNU General Public License |
||||
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>. |
||||
|
||||
// credits |
||||
|
||||
import QtQuick 2.8 |
||||
import BridgeUI 1.0 |
||||
import ProtonUI 1.0 |
||||
|
||||
Item { |
||||
Rectangle { |
||||
id: wrapper |
||||
anchors.centerIn: parent |
||||
width: 2*Style.main.width/3 |
||||
height: Style.main.height - 6*Style.dialog.titleSize |
||||
color: "transparent" |
||||
|
||||
Flickable { |
||||
anchors.fill : wrapper |
||||
contentWidth : wrapper.width |
||||
contentHeight : content.height |
||||
flickableDirection : Flickable.VerticalFlick |
||||
clip : true |
||||
|
||||
|
||||
Column { |
||||
id: content |
||||
anchors.top: parent.top |
||||
anchors.horizontalCenter: parent.horizontalCenter |
||||
width: wrapper.width |
||||
spacing: Style.dialog.spacing |
||||
|
||||
AccessibleText { |
||||
visible: go.changelog != "" |
||||
anchors { |
||||
left: parent.left |
||||
} |
||||
font.bold: true |
||||
font.pointSize: Style.main.fontSize * Style.pt |
||||
color: Style.main.text |
||||
text: qsTr("Release notes", "list of release notes for this version of the app") + ":" |
||||
} |
||||
|
||||
AccessibleSelectableText { |
||||
anchors { |
||||
left: parent.left |
||||
leftMargin: Style.main.leftMargin |
||||
} |
||||
font { |
||||
pointSize : Style.main.fontSize * Style.pt |
||||
} |
||||
width: wrapper.width - anchors.leftMargin |
||||
onLinkActivated: { |
||||
Qt.openUrlExternally(link) |
||||
} |
||||
wrapMode: Text.Wrap |
||||
color: Style.main.text |
||||
text: go.changelog |
||||
} |
||||
|
||||
AccessibleText { |
||||
visible: go.bugfixes != "" |
||||
anchors { |
||||
left: parent.left |
||||
} |
||||
font.bold: true |
||||
font.pointSize: Style.main.fontSize * Style.pt |
||||
color: Style.main.text |
||||
text: qsTr("Fixed bugs", "list of bugs fixed for this version of the app") + ":" |
||||
} |
||||
|
||||
AccessibleSelectableText { |
||||
visible: go.bugfixes!="" |
||||
anchors { |
||||
left: parent.left |
||||
leftMargin: Style.main.leftMargin |
||||
} |
||||
font { |
||||
pointSize : Style.main.fontSize * Style.pt |
||||
} |
||||
width: wrapper.width - anchors.leftMargin |
||||
onLinkActivated: { |
||||
Qt.openUrlExternally(link) |
||||
} |
||||
wrapMode: Text.Wrap |
||||
color: Style.main.text |
||||
text: go.bugfixes |
||||
} |
||||
|
||||
Rectangle{id:spacer; color:Style.transparent; width: Style.main.dummy; height: buttonClose.height} |
||||
|
||||
ButtonRounded { |
||||
id: buttonClose |
||||
anchors.horizontalCenter: content.horizontalCenter |
||||
text: qsTr("Close") |
||||
onClicked: { |
||||
dialogVersionInfo.hide() |
||||
} |
||||
} |
||||
|
||||
|
||||
AccessibleSelectableText { |
||||
anchors.horizontalCenter: content.horizontalCenter |
||||
font { |
||||
pointSize : Style.main.fontSize * Style.pt |
||||
} |
||||
color: Style.main.textDisabled |
||||
text: "\n Current: "+go.fullversion |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -1,125 +0,0 @@ |
||||
// Copyright (c) 2021 Proton Technologies AG |
||||
// |
||||
// This file is part of ProtonMail Bridge. |
||||
// |
||||
// ProtonMail Bridge is free software: you can redistribute it and/or modify |
||||
// it under the terms of the GNU General Public License as published by |
||||
// the Free Software Foundation, either version 3 of the License, or |
||||
// (at your option) any later version. |
||||
// |
||||
// ProtonMail Bridge is distributed in the hope that it will be useful, |
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
// GNU General Public License for more details. |
||||
// |
||||
// You should have received a copy of the GNU General Public License |
||||
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>. |
||||
|
||||
// credits |
||||
|
||||
import QtQuick 2.8 |
||||
import ProtonUI 1.0 |
||||
import ImportExportUI 1.0 |
||||
|
||||
Item { |
||||
id: root |
||||
Rectangle { |
||||
id: wrapper |
||||
anchors.centerIn: parent |
||||
width: 2*Style.main.width/3 |
||||
height: Style.main.height - 6*Style.dialog.titleSize |
||||
color: "transparent" |
||||
|
||||
Flickable { |
||||
anchors.fill : wrapper |
||||
contentWidth : wrapper.width |
||||
contentHeight : content.height |
||||
flickableDirection : Flickable.VerticalFlick |
||||
clip : true |
||||
|
||||
|
||||
Column { |
||||
id: content |
||||
anchors.top: parent.top |
||||
anchors.horizontalCenter: parent.horizontalCenter |
||||
width: wrapper.width |
||||
spacing: 5 |
||||
|
||||
Text { |
||||
visible: go.changelog != "" |
||||
anchors { |
||||
left: parent.left |
||||
} |
||||
font.bold: true |
||||
font.pointSize: Style.main.fontSize * Style.pt |
||||
color: Style.main.text |
||||
text: qsTr("Release notes:") |
||||
} |
||||
|
||||
Text { |
||||
anchors { |
||||
left: parent.left |
||||
leftMargin: Style.main.leftMargin |
||||
} |
||||
font.pointSize: Style.main.fontSize * Style.pt |
||||
width: wrapper.width - anchors.leftMargin |
||||
wrapMode: Text.Wrap |
||||
color: Style.main.text |
||||
text: go.changelog |
||||
} |
||||
|
||||
Text { |
||||
visible: go.bugfixes != "" |
||||
anchors { |
||||
left: parent.left |
||||
} |
||||
font.bold: true |
||||
font.pointSize: Style.main.fontSize * Style.pt |
||||
color: Style.main.text |
||||
text: qsTr("Fixed bugs:") |
||||
} |
||||
|
||||
Repeater { |
||||
anchors.fill: parent |
||||
model: go.bugfixes.split(";") |
||||
|
||||
Text { |
||||
visible: go.bugfixes!="" |
||||
anchors { |
||||
left: parent.left |
||||
leftMargin: Style.main.leftMargin |
||||
} |
||||
font.pointSize: Style.main.fontSize * Style.pt |
||||
width: wrapper.width - anchors.leftMargin |
||||
wrapMode: Text.Wrap |
||||
color: Style.main.text |
||||
text: modelData |
||||
} |
||||
} |
||||
|
||||
Rectangle{id:spacer; color:"transparent"; width:10; height: buttonClose.height} |
||||
|
||||
|
||||
ButtonRounded { |
||||
id: buttonClose |
||||
anchors.horizontalCenter: content.horizontalCenter |
||||
text: "Close" |
||||
onClicked: { |
||||
root.parent.hide() |
||||
} |
||||
} |
||||
|
||||
|
||||
AccessibleSelectableText { |
||||
anchors.horizontalCenter: content.horizontalCenter |
||||
font { |
||||
pointSize : Style.main.fontSize * Style.pt |
||||
} |
||||
color: Style.main.textDisabled |
||||
text: "\n Current: "+go.fullversion |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,61 @@ |
||||
## v1.4.5 |
||||
- 2020-10-22 |
||||
|
||||
### New |
||||
|
||||
Improving Performance |
||||
|
||||
* Bulletproofing against any potential data loss and/or duplication |
||||
* Performance improvements for handling attachments and non-standard formatting |
||||
* Better stability of the message parser |
||||
|
||||
Outgoing messages support |
||||
|
||||
* Additional foreign encoding support for outgoing messages |
||||
* Complete refactor of the way messages are parsed to simplify code maintenance |
||||
* Improved User-Agent detection |
||||
|
||||
Added MacOS Big Sur compatibility |
||||
|
||||
Added persistent anonymous API cookies |
||||
|
||||
### Fixed |
||||
|
||||
Fixed rare mail loss when moving from Spam folder |
||||
|
||||
Limited log size |
||||
|
||||
Fixed Linux font issues (mouse hover) |
||||
|
||||
## v1.3.3 |
||||
- 2020-08-12 |
||||
|
||||
### New |
||||
|
||||
Improvements to Alternative Routing |
||||
|
||||
* Version two of this feature is now more resilient to unstable internet connections, which results in a smoother experience using this feature. |
||||
* Includes fixes to previous implementation of Alternative Routing when first starting the application or when turning it off. |
||||
|
||||
Email parsing improvements |
||||
|
||||
* Improved detection of email encodings embedded in html/xml in addition to message header; add a fallback option if encoding is not specified and decoding as UTF8 fails (ISO-8859-1) |
||||
* tweaked logic of parsing "References" header. |
||||
|
||||
User interaction improvements |
||||
|
||||
* Some smaller improvements in specific cases to make the interaction with Proton Bridge clearer for the user |
||||
|
||||
Code updates & maintenance |
||||
|
||||
* Migrated to GopenPGP v2 |
||||
* updates to GoIMAPv1 |
||||
* increased bbolt version to 1.3.5 and various improvements regarding extensibility and maintainability for upcoming work. |
||||
|
||||
General stability improvements |
||||
|
||||
* Improvements to the behavior of the application under various unstable internet conditions. |
||||
|
||||
### Fixed |
||||
|
||||
Fixed a slew of smaller bugs and some conditions which could cause the application to crash. |
||||
@ -0,0 +1,26 @@ |
||||
## v1.1.2 |
||||
- 2020-09-23 |
||||
|
||||
### New |
||||
|
||||
Improving performance |
||||
|
||||
* Speed up import by implementing parallel processing (parallel fetch, encrypt and upload of messages) |
||||
* Optimising the initial fetch of messages from external accounts |
||||
|
||||
Better message parsing |
||||
|
||||
* Better handling of attachments and non-standard formatting |
||||
* Improved stability of the message parser |
||||
|
||||
Improved metrics |
||||
|
||||
* Added persistent anonymous API cookies |
||||
|
||||
|
||||
### Fixed |
||||
|
||||
Fixed issues causing failing of import |
||||
|
||||
* Import from mbox files with long lines |
||||
* Improvements to import from Yahoo accounts |
||||
@ -1,24 +0,0 @@ |
||||
#!/bin/bash |
||||
|
||||
# Copyright (c) 2021 Proton Technologies AG |
||||
# |
||||
# This file is part of ProtonMail Bridge. |
||||
# |
||||
# ProtonMail Bridge is free software: you can redistribute it and/or modify |
||||
# it under the terms of the GNU General Public License as published by |
||||
# the Free Software Foundation, either version 3 of the License, or |
||||
# (at your option) any later version. |
||||
# |
||||
# ProtonMail Bridge is distributed in the hope that it will be useful, |
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
# GNU General Public License for more details. |
||||
# |
||||
# You should have received a copy of the GNU General Public License |
||||
# along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>. |
||||
|
||||
PACKAGE=$1 |
||||
|
||||
# Generate release notes information |
||||
cat ../utils/license_header.txt > ../internal/$PACKAGE/release_notes.go |
||||
echo -e "// Code generated by `echo $0` at '`date`'. DO NOT EDIT.\n\npackage ${PACKAGE}\n\nconst ReleaseNotes = \``cat ../release-notes/notes-${PACKAGE}.txt`\n\`\n\nconst ReleaseFixedBugs = \``cat ../release-notes/bugs-${PACKAGE}.txt`\n\`" >> ../internal/$PACKAGE/release_notes.go |
||||
@ -0,0 +1,174 @@ |
||||
/* CUSTOM CSS */ |
||||
html, body { |
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", system-ui, "Ubuntu", "Droid Sans", sans-serif; |
||||
font-size: 14px; |
||||
padding: 0 26px; |
||||
line-height: 1.6 22px; |
||||
word-wrap: break-word; |
||||
} |
||||
|
||||
body { |
||||
border: 1px dashed #aaa; |
||||
max-width: 1024px; |
||||
margin: auto; |
||||
margin-top: 2em; |
||||
margin-bottom: 2em; |
||||
padding-bottom: 1em; |
||||
} |
||||
|
||||
h1 { |
||||
font-weight: 400; |
||||
color: #666; |
||||
font-size: 2em; |
||||
text-align: center; |
||||
|
||||
} |
||||
|
||||
h2 { |
||||
font-size: 2.6em; |
||||
font-weight: 400; |
||||
color: #666; |
||||
margin-bottom: 0; |
||||
} |
||||
|
||||
h3 { |
||||
font-size: 1.6em; |
||||
font-weight: 400; |
||||
color: #222; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
p { |
||||
padding: 1em 2em 0 2em; |
||||
margin: 0; |
||||
} |
||||
|
||||
a { |
||||
color: rgb(0, 116, 224); |
||||
text-decoration: none; |
||||
} |
||||
|
||||
a:hover { |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
ul { |
||||
list-style-type: square; |
||||
list-style-position: inside; |
||||
margin: 0; |
||||
padding: 0 3em 1em 3em; |
||||
} |
||||
|
||||
li { |
||||
padding-top: 1em; |
||||
color: #666; |
||||
} |
||||
|
||||
section[id^="new"] h3::before { |
||||
content: ""; |
||||
display: inline-block; |
||||
margin-right: 0.3em; |
||||
width: 1em; |
||||
height: 1em; |
||||
background-size: 1em; |
||||
background-position: center; |
||||
background-repeat: no-repeat; |
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIj4KPHBhdGggZD0iTTUyOC4xIDE3MS41TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMEwxOTQgMTUwLjIgNDcuOSAxNzEuNWMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4zIDIzLjIgNDYgNDYuNCAzMy43TDI4OCA0MzkuNmwxMzAuNyA2OC43YzIzLjIgMTIuMiA1MC45LTcuNCA0Ni40LTMzLjdsLTI1LTE0NS41IDEwNS43LTEwM2MxOS0xOC41IDguNS01MC44LTE3LjctNTQuNnpNMzg4LjYgMzEyLjNsMjMuNyAxMzguNEwyODggMzg1LjRsLTEyNC4zIDY1LjMgMjMuNy0xMzguNC0xMDAuNi05OCAxMzktMjAuMiA2Mi4yLTEyNiA2Mi4yIDEyNiAxMzkgMjAuMi0xMDAuNiA5OHoiIGZpbGw9IiMyMjIiLz4KPC9zdmc+Cg==") |
||||
} |
||||
|
||||
section[id^="fixed"] h3::before { |
||||
content: ""; |
||||
display: inline-block; |
||||
margin-right: 0.3em; |
||||
width: 1em; |
||||
height: 1em; |
||||
background-size: 1em; |
||||
background-position: center; |
||||
background-repeat: no-repeat; |
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNjYuNTIzIDM2Ni41MjMiPg0KPHBhdGggZmlsbD0iIzIyMiIgZD0iTTM1OC4zNzksODQuNjQ5Yy0xLjY2Ni0zLjc2Ni01LjA3OC02LjQ2OS05LjEyNS03LjIyOGMtNC4wNTMtMC43NjItOC4yMTEsMC41MjMtMTEuMTI3LDMuNDI5bC00Ni4xNDgsNDUuOTY2LGMtNi45ODYsNi45ODctMTYuMjc5LDEwLjgzNS0yNi4xNjIsMTAuODM2Yy05Ljg4MSwwLTE5LjE3Mi0zLjg0OC0yNi4xNi0xMC44MzdjLTYuOTg4LTYuOTg4LTEwLjgzNy0xNi4yNzgtMTAuODM4LTI2LjE2MSxjMC05Ljg4MywzLjg1LTE5LjE3MywxMC44MjItMjYuMTQ4bDQ2LjEwNy00NS45NzRjMi45MjItMi45MTIsNC4yMTktNy4wNzksMy40NjUtMTEuMTM1Yy0wLjc1NC00LjA1Ni0zLjQ2MS03LjQ3OS03LjIzMi05LjE0NixjLTEyLjEyMS01LjM2Mi0yNS41OTQtOC4xOTctMzguOTY1LTguMTk4Yy0yNC44MzgsMC4wMDEtNDcuODgxLDkuMzYyLTY0Ljg3OSwyNi4zNjFMMTYyLjkzOSw0MS42MSxjLTI2LjM0OCwyNi4zNDgtMzQuMTQ2LDY1LjE3OS0yMC43Miw5OS4yMDdMMTcuMjgxLDI2NS43NTVDNi4xMzgsMjc2LjksMC4wMDEsMjkxLjcxNCwwLDMwNy40NzMsYy0wLjAwMSwxNS43NTksNi4xMzYsMzAuNTc0LDE3LjI3OSw0MS43MTljMTEuMTQ1LDExLjE0NCwyNS45NjEsMTcuMjc5LDQxLjcxOSwxNy4yNzljMTUuNzU5LTAuMDAxLDMwLjU3NC02LjEzNyw0MS43MTktMTcuMjc5LEwyMjUuNjY4LDIyNC4yNGMxMC43MTksNC4xOTEsMjIuMjM4LDYuMzc5LDMzLjc5Nyw2LjM3OWMyNC43MDUsMCw0Ny45My05LjYxOSw2NS4zOTYtMjcuMDg4bDE1LjE5NS0xNS4xOTQsQzM2Ni42NzgsMTYxLjcxNCwzNzQuMDM5LDEyMC4wNDYsMzU4LjM3OSw4NC42NDl6IE0yNTkuNDY1LDIwNS42MTljLTEwLjgwMS0wLjAwMi0yMS40NzctMi41NDEtMzEuMDAyLTcuNDgxLGMtNS4yOTUtMi43NDQtMTEuMzk2LTEuMDc5LTE1LjUxOCwzLjI5M0w4My4wMzgsMzMxLjUxMmMtNi40MjIsNi40MjMtMTQuOTYsOS45NTgtMjQuMDQxLDkuOTU4cy0xNy42MTktMy41MzYtMjQuMDQxLTkuOTU3LGMtNi40Mi02LjQyMi05Ljk1Ny0xNC45NTktOS45NTctMjQuMDRzMy41MzctMTcuNjE5LDkuOTU5LTI0LjA0MWwxMzAuMDYtMTI5LjkyNWM0LjQ4NS00LjI2Miw2LjA0MS0xMC4yMjYsMy4yOTQtMTUuNTIxLGMtMTMuNTk2LTI2LjIyMy04LjU5OC01Ny43OTUsMTIuMzA1LTc4LjY5OGwxNS4xOTctMTUuMTk2YzEyLjI3Ny0xMi4yNzgsMjkuMDQxLTE5LjA0LDQ3LjIwMS0xOS4wNCxjMy4zNzMsMCw2Ljc1MiwwLjI0MywxMC4wOTYsMC43MTlsLTMxLjEzNSwzMS4wNDVjLTExLjcxMSwxMS43MS0xOC4xNTgsMjcuMjc5LTE4LjE1OCw0My44MzksYzAuMDAyLDE2LjU2MSw2LjQ0OSwzMi4xMywxOC4xNiw0My44MzljMTEuNzA5LDExLjcxMSwyNy4yNzksMTguMTYsNDMuODQsMTguMTU5YzE2LjU2MS0wLjAwMiwzMi4xMjktNi40NSw0My44Mi0xOC4xNDEsbDMxLjIxNS0zMS4wOTNjMi45NjUsMjAuOTMxLTMuNjAyLDQyLjM2NC0xOC40NzUsNTcuMjM4bC0xNS4xOTUsMTUuMTk2QzI5NC40MzgsMTk4LjU5OCwyNzcuNDksMjA1LjYxOSwyNTkuNDY1LDIwNS42MTl6Ii8+DQo8cGF0aCBmaWxsPSIjMjIyIiBkPSJNNjEuODk0LDI4NS4wNzhjLTUuMjA5LDAtMTAuMTA2LDIuMDI3LTEzLjc4OSw1LjcxMWMtMy42ODIsMy42ODQtNS43MTEsOC41OC01LjcxMSwxMy43ODlzMi4wMjgsMTAuMTA0LDUuNzExLDEzLjc4OSxjMy42ODMsMy42ODMsOC41OCw1LjcxMSwxMy43ODksNS43MTFjNS4yMDktMC4wMDIsMTAuMTA1LTIuMDI4LDEzLjc4OS01LjcxM2MzLjY4NC0zLjY4Myw1LjcxMS04LjU4LDUuNzExLTEzLjc4NyxjMC01LjIwOS0yLjAyOC0xMC4xMDYtNS43MTEtMTMuNzg5QzcxLjk5OSwyODcuMTA0LDY3LjEwMywyODUuMDc4LDYxLjg5NCwyODUuMDc4eiIvPg0KPC9zdmc+DQo=") |
||||
} |
||||
|
||||
.level2 { |
||||
border-top: 1px dashed #999; |
||||
padding-bottom: 2em; |
||||
} |
||||
|
||||
.level2::after { |
||||
content: ""; |
||||
clear: both; |
||||
display: table; |
||||
} |
||||
|
||||
.level2>h2 { |
||||
float: left; |
||||
width: 20%; |
||||
text-align: center; |
||||
} |
||||
|
||||
.level2>ul { |
||||
float: left; |
||||
width: 20%; |
||||
text-align: center; |
||||
clear: both; |
||||
padding: 0; |
||||
list-style-type: none; |
||||
} |
||||
|
||||
.level2>ul>li { |
||||
border-radius: 5px; |
||||
border: 1px solid #ccc; |
||||
color: #444; |
||||
padding: 0.5em; |
||||
font-size: 0.8em; |
||||
font-family: 'Courier New', Courier, monospace; |
||||
margin-top: 0.5em; |
||||
} |
||||
|
||||
.level3 { |
||||
float: right; |
||||
width: 70%; |
||||
} |
||||
|
||||
.level3>h3 { |
||||
margin-top: 1em; |
||||
} |
||||
|
||||
.level3:first-of-type>h3 { |
||||
margin-top: -1.5em; |
||||
} |
||||
|
||||
|
||||
@media only screen and (max-width: 600px) { |
||||
.level2>h2 { |
||||
float: none; |
||||
text-align: left; |
||||
width: 30%; |
||||
display: inline-block; |
||||
|
||||
} |
||||
|
||||
.level2>ul { |
||||
float: none; |
||||
display: inline-block; |
||||
width: 69%; |
||||
text-align: right; |
||||
margin: 0; |
||||
} |
||||
|
||||
.level2>ul>li { |
||||
display: inline-block; |
||||
} |
||||
|
||||
.level3 { |
||||
clear: both; |
||||
float: none; |
||||
width: auto; |
||||
} |
||||
|
||||
.level3:first-of-type>h3 { |
||||
margin-top: 1em; |
||||
|
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue