mapshaper 0.7.67 → 0.7.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/www/page.css CHANGED
@@ -944,46 +944,156 @@ body.sidebar-panels-resizing .sidebar-panels-resize-handle::before,
944
944
  }
945
945
  }
946
946
 
947
+ :root {
948
+ --sidebar-strip-height: 33px;
949
+ }
950
+
951
+ /* Icon buttons for opening the sidebar, shown on the map while the sidebar is
952
+ closed. Sized and styled to mirror the .nav-buttons on the right, and like
953
+ them hidden on the splash screen: body.map-view is set once data is
954
+ imported or the splash popup is dismissed. */
947
955
  .sidebar-tabs {
948
956
  position: absolute;
949
- top: 66px; /* below line intersection repair link */
957
+ top: 35px; /* 29px header + the 6px offset of .nav-buttons */
950
958
  left: 0;
951
959
  z-index: 40;
960
+ padding: 3px;
961
+ background-color: white;
962
+ border-radius: 7px;
952
963
  pointer-events: auto;
953
964
  }
954
965
 
966
+ body:not(.map-view) .sidebar-tabs {
967
+ display: none;
968
+ }
969
+
955
970
  body.sidebar-open .sidebar-tabs {
956
- left: var(--left-sidebar-width);
957
- margin-left: -1.5px;
971
+ display: none;
958
972
  }
959
973
 
960
974
  body.sidebar-tabs-over-popup .sidebar-tabs {
961
975
  z-index: 90;
962
976
  }
963
977
 
978
+ /* keep the line intersection readout clear of the buttons */
979
+ body:not(.sidebar-open) .intersection-display {
980
+ left: 44px;
981
+ }
982
+
964
983
  .sidebar-tab {
965
- border: 1px solid rgba(255,255,255,0.8);
966
- border-right: none; ;
967
- writing-mode: vertical-rl;
968
- transform: rotate(180deg);
969
- background-color: var(--theme-col);
970
- color: white;
971
- padding: 9px 4px;
972
- margin-bottom: 4px;
973
- border-radius: 5px 0 0 5px;
984
+ position: relative;
985
+ padding: 3px 4px;
986
+ line-height: 1;
987
+ cursor: pointer;
988
+ }
989
+
990
+ .sidebar-icon {
991
+ display: block;
992
+ }
993
+
994
+ .sidebar-icon * {
995
+ fill: var(--theme-col);
996
+ }
997
+
998
+ .sidebar-tab.console-tab {
999
+ padding-top: 8px;
1000
+ }
1001
+
1002
+ .sidebar-tab:hover .sidebar-icon * {
1003
+ fill: #166689;
1004
+ }
1005
+
1006
+ /* Tooltip to the right of the button, matching the .nav-btn tooltips */
1007
+ .sidebar-tab[data-tooltip]:hover::after {
1008
+ content: attr(data-tooltip);
1009
+ position: absolute;
1010
+ top: 50%;
1011
+ left: calc(100% + 3px);
1012
+ transform: translateY(-50%);
1013
+ pointer-events: none;
1014
+ background-color: rgba(255, 255, 255, 0.85);
1015
+ color: var(--colored-text);
1016
+ font-size: 12px;
1017
+ line-height: 12px;
1018
+ padding: 3px 6px 4px 6px;
1019
+ white-space: nowrap;
1020
+ }
1021
+
1022
+ /* centre on the icon, which the console button's extra top padding lowers */
1023
+ .sidebar-tab.console-tab[data-tooltip]:hover::after {
1024
+ top: calc(50% + 2px);
1025
+ }
1026
+
1027
+ /* Panel toggles at the top of the open sidebar. Each toggles its own panel,
1028
+ so both can be on at once. */
1029
+ .sidebar-strip {
1030
+ display: none;
1031
+ position: absolute;
1032
+ top: 29px;
1033
+ left: 0;
1034
+ z-index: 30;
1035
+ width: var(--left-sidebar-width);
1036
+ max-width: 100%;
1037
+ height: var(--sidebar-strip-height);
1038
+ box-sizing: border-box;
1039
+ align-items: flex-start;
1040
+ gap: 6px;
1041
+ padding: 7px 10px 0 10px;
1042
+ background-color: white;
1043
+ border-right: 1px solid #c6c6c6;
1044
+ }
1045
+
1046
+ body.sidebar-open .sidebar-strip {
1047
+ display: flex;
1048
+ }
1049
+
1050
+ body.sidebar-open .sidebar-panels {
1051
+ margin-top: calc(29px + var(--sidebar-strip-height));
1052
+ }
1053
+
1054
+ .sidebar-strip-btn {
1055
+ display: flex;
1056
+ align-items: center;
1057
+ gap: 5px;
1058
+ padding: 2px 8px 2px 6px;
1059
+ border: 1px solid #cfdde4;
1060
+ border-radius: 12px;
1061
+ color: var(--theme-col);
974
1062
  font-size: 13px;
975
1063
  font-weight: 500;
1064
+ line-height: 14px;
976
1065
  cursor: pointer;
977
- pointer-events: auto;
1066
+ user-select: none;
1067
+ }
1068
+
1069
+ .sidebar-strip-btn:hover {
1070
+ border-color: var(--theme-col);
1071
+ }
1072
+
1073
+ .sidebar-strip-btn.active {
1074
+ background-color: var(--theme-col);
1075
+ border-color: var(--theme-col);
1076
+ color: white;
978
1077
  }
979
1078
 
980
- .sidebar-tab:hover {
1079
+ .sidebar-strip-btn.active:hover {
981
1080
  background-color: var(--dk-theme-col);
1081
+ border-color: var(--dk-theme-col);
982
1082
  }
983
1083
 
984
- body.layers-open .layer-tab,
985
- body.console-open .console-tab {
986
- background-color: black;
1084
+ .sidebar-strip-btn.active .sidebar-icon * {
1085
+ fill: white;
1086
+ }
1087
+
1088
+ /* matches the × of .label-style-close on the tool panels */
1089
+ .sidebar-hide-btn {
1090
+ margin-left: auto;
1091
+ padding: 3px 0 0 4px;
1092
+ font-size: 16px;
1093
+ line-height: 1;
1094
+ cursor: pointer;
1095
+ user-select: none;
1096
+ color: black;
987
1097
  }
988
1098
 
989
1099
 
@@ -1198,7 +1308,7 @@ body.simplify .layer-control-btn {
1198
1308
  max-height: 500px;
1199
1309
  overflow: hidden;
1200
1310
  overflow-y: auto;
1201
- padding: 9px 14px 10px 14px;
1311
+ padding: 2px 14px 10px 14px;
1202
1312
  pointer-events: auto;
1203
1313
  border-radius: 9px;
1204
1314
  }
@@ -1242,10 +1352,42 @@ body.simplify .layer-control-btn {
1242
1352
  font-size: 13px;
1243
1353
  }
1244
1354
 
1355
+ /* "Add files" and "Draw: labels · points · ..." are two groups, and a narrow
1356
+ sidebar wraps between them, so the second line starts with "Draw:". The dot
1357
+ between them is each group's ::before, hung to the group's left: a group that
1358
+ starts a line has its dot pushed past the left edge of the row and clipped,
1359
+ so no line ends or begins with a stray dot. */
1245
1360
  .layer-add-links {
1246
1361
  margin: 2px 0 2px 0;
1247
1362
  font-size: 13px;
1248
1363
  line-height: 1.2;
1364
+ overflow: hidden;
1365
+ }
1366
+
1367
+ .layer-add-links-inner {
1368
+ display: flex;
1369
+ flex-wrap: wrap;
1370
+ margin-left: -1.6em;
1371
+ }
1372
+
1373
+ /* The padding holds the dot, so that a group long enough to wrap starts its
1374
+ later lines at the row's edge rather than under the clipped dot. */
1375
+ .layer-add-links-group {
1376
+ padding-left: 1.6em;
1377
+ }
1378
+
1379
+ .layer-add-links-group::before {
1380
+ content: "·";
1381
+ display: inline-block;
1382
+ width: 1.6em;
1383
+ margin-left: -1.6em;
1384
+ text-align: center;
1385
+ color: #777;
1386
+ font-weight: bold;
1387
+ }
1388
+
1389
+ .layer-add-links-group:first-child {
1390
+ white-space: nowrap;
1249
1391
  }
1250
1392
 
1251
1393
  .layer-menu-link {
@@ -1301,7 +1443,7 @@ body.simplify .layer-control-btn {
1301
1443
  .map-frame-empty {
1302
1444
  cursor: pointer;
1303
1445
  font-size: 12px;
1304
- padding: 7px 4px 4px;
1446
+ padding: 4px 0;
1305
1447
  }
1306
1448
 
1307
1449
  .pin-all img,
@@ -1401,12 +1543,47 @@ img.eye-btn {
1401
1543
  z-index: 1;
1402
1544
  }
1403
1545
 
1404
- .layer-item .row {
1546
+ /* Name and contents on one line. The contents column has a fixed width, so it
1547
+ lines up from row to row, and the name takes the rest, truncated if long. */
1548
+ .layer-item .layer-row {
1549
+ display: flex;
1550
+ align-items: baseline;
1551
+ gap: 12px;
1552
+ margin-right: 44px; /* room for row controls */
1405
1553
  line-height: 17px;
1406
- margin-bottom: 1px;
1407
1554
  white-space: nowrap;
1408
1555
  }
1409
1556
 
1557
+ .layer-item .layer-name-col {
1558
+ flex: 1 1 auto;
1559
+ min-width: 0;
1560
+ }
1561
+
1562
+ /* wraps a point layer that lists several kinds of feature */
1563
+ .layer-item .layer-contents {
1564
+ flex: none;
1565
+ width: 9em;
1566
+ white-space: normal;
1567
+ font-size: 12.5px;
1568
+ color: #666;
1569
+ }
1570
+
1571
+ /* bar on the left edge of the active layer; a shadow rather than a border, so
1572
+ the row's text keeps its alignment with the other rows */
1573
+ .layer-menu .layer-item.active {
1574
+ box-shadow: inset 5px 0 0 var(--theme-col);
1575
+ }
1576
+
1577
+ /* hints at a tooltip that counts the features with null geometry */
1578
+ .layer-item .layer-contents.has-nulls span {
1579
+ border-bottom: 1px dotted #999;
1580
+ }
1581
+
1582
+ /* a name being edited is shown in full, over the contents column */
1583
+ .layer-item:has(.layer-name.editing) .layer-contents {
1584
+ visibility: hidden;
1585
+ }
1586
+
1410
1587
  .layer-item .layer-name {
1411
1588
  display: inline-block;
1412
1589
  max-width: 100%;
@@ -1446,20 +1623,6 @@ img.eye-btn {
1446
1623
  background-color: #f7f7f7;
1447
1624
  }
1448
1625
 
1449
- .layer-item .row > div {
1450
- display: inline-block;
1451
- }
1452
-
1453
- .layer-item .col1 {
1454
- width: 84px;
1455
- }
1456
-
1457
- .layer-item .row1 .col2 {
1458
- margin-right: 44px; /* room for row controls */
1459
- max-width: calc(100% - 132px);
1460
- vertical-align: top;
1461
- }
1462
-
1463
1626
 
1464
1627
  .layer-item.drag-target:not(.active) {
1465
1628
  background-color: #f7f7f7;
@@ -2649,12 +2812,12 @@ body.pan.panning .map-layers:not(.drawing) {
2649
2812
  width: 100%;
2650
2813
  }
2651
2814
 
2652
- /* Three columns on the appearance rows: the neatline's width sits with the
2653
- colour and opacity it applies to, and the background row leaves the last
2654
- column empty rather than pushing a lone field onto a line of its own. */
2815
+ /* The neatline's width sits beside the colour and opacity it applies to, and
2816
+ the background row leaves the column empty rather than pushing a lone field
2817
+ onto a line of its own. */
2655
2818
  .frame-properties-form .label-split-row {
2656
2819
  column-gap: 8px;
2657
- grid-template-columns: 1fr 54px 54px;
2820
+ grid-template-columns: 1fr 54px;
2658
2821
  }
2659
2822
 
2660
2823
  /* Wide enough for "Aspect ratio", and fixed rather than auto so that the ratio
@@ -2732,9 +2895,6 @@ body.pan.panning .map-layers:not(.drawing) {
2732
2895
  width: 130px;
2733
2896
  }
2734
2897
 
2735
- /* Stretches so that the margin field ends where the fields above it do: the
2736
- row is shorter than they are, and a ragged right edge reads as unfinished
2737
- rather than as deliberate grouping. */
2738
2898
  .frame-create-margin {
2739
2899
  align-items: center;
2740
2900
  display: flex;
@@ -2743,11 +2903,6 @@ body.pan.panning .map-layers:not(.drawing) {
2743
2903
  min-width: 0; /* a flex item defaults to min-width:auto and will not shrink below its field */
2744
2904
  }
2745
2905
 
2746
- .frame-create-margin > span {
2747
- color: #555;
2748
- font-size: 12px;
2749
- }
2750
-
2751
2906
  .frame-create-margin > input {
2752
2907
  box-sizing: border-box;
2753
2908
  flex: 1;
@@ -2784,6 +2939,7 @@ body.pan.panning .map-layers:not(.drawing) {
2784
2939
  grid-template-columns: 1fr 1fr 54px;
2785
2940
  }
2786
2941
 
2942
+ .frame-create-margin > span,
2787
2943
  .frame-input-cell > span {
2788
2944
  color: #555;
2789
2945
  font-size: 12px;
@@ -3080,8 +3236,9 @@ body.pan.panning .map-layers:not(.drawing) {
3080
3236
  different place.
3081
3237
 
3082
3238
  Bottom-aligned, so that a caption above one control cannot push it out of
3083
- line with the control beside it: the icon size has a "Size" over it and the
3084
- shape buttons beside it have nothing, and the two still have to be level. */
3239
+ line with the control beside it: the frame's neatline width has a "Width"
3240
+ over it and the colour beside it has a longer caption, and the two still
3241
+ have to be level. */
3085
3242
  .label-split-row {
3086
3243
  display: grid;
3087
3244
  grid-template-columns: 1fr var(--label-split-b-width);
@@ -3096,28 +3253,26 @@ body.pan.panning .map-layers:not(.drawing) {
3096
3253
  color: #555;
3097
3254
  }
3098
3255
 
3099
- /* Captions a couple of sizes down from the values they name. They are read
3100
- once, when the panel is first met, and the narrow column of a split row is
3101
- only as wide as the longest of them -- "Letter spacing" is what set it --
3102
- so quieter captions are also a narrower panel. Direct children only: the
3103
- colour picker's H/S/B captions are spans in a row too. */
3256
+ .label-editing-status,
3257
+ .label-style-panel .label-style-row.label-style-selection-row > span {
3258
+ font-size: 12px;
3259
+ color: #555;
3260
+ }
3261
+
3104
3262
  .label-style-panel .label-style-row > span,
3105
- .label-style-panel .label-style-selection-row > span,
3106
3263
  .label-style-panel .label-split-cell > span,
3107
3264
  .label-style-panel .label-style-row > .label-style-row-label,
3108
3265
  .label-style-panel .label-split-cell > .label-style-row-label,
3109
- .label-style-panel .label-icon-size-caption,
3266
+ .label-style-panel .frame-input-cell > span,
3110
3267
  .label-style-panel .point-style-note {
3111
- font-size: 12px;
3268
+ font-size: 11px;
3269
+ color: #555;
3112
3270
  }
3113
3271
 
3114
3272
  .label-split-row .label-split-cell + .label-split-cell {
3115
3273
  white-space: nowrap;
3116
3274
  }
3117
3275
 
3118
- /* Each column's control fills its column: the widths are the grid's to decide
3119
- now, and a control keeping a width of its own would sit inside its cell
3120
- rather than lining up with the one above it. */
3121
3276
  .label-split-cell > select,
3122
3277
  .label-split-cell > .size-field,
3123
3278
  .label-split-cell > input[type="text"] {
@@ -3191,7 +3346,7 @@ body.pan.panning .map-layers:not(.drawing) {
3191
3346
  /* Whitespace and a bold heading separate the sections; a rule as well would be
3192
3347
  a third answer to a question already settled twice. */
3193
3348
  .label-style-panel .label-style-section + .label-style-section {
3194
- margin-top: 12px;
3349
+ margin-top: 10px;
3195
3350
  padding-top: 0;
3196
3351
  border-top: 0;
3197
3352
  }
@@ -3210,25 +3365,17 @@ body.pan.panning .map-layers:not(.drawing) {
3210
3365
  align-self: center;
3211
3366
  }
3212
3367
 
3213
- /* A section switched off shows only its heading (see setSectionCollapsed()),
3214
- including the caption the Icon heading carries over its size column. */
3215
- .label-style-panel .label-style-section.collapsed > :not(.label-style-section-title),
3216
- .label-style-panel .label-style-section.collapsed .label-icon-size-caption {
3368
+ /* A section switched off shows only its heading (see setSectionCollapsed()). */
3369
+ .label-style-panel .label-style-section.collapsed > :not(.label-style-section-title) {
3217
3370
  display: none;
3218
3371
  }
3219
3372
 
3220
- /* .hidden is one class and the rule above is two, so a heading told to hide
3221
- would go on being laid out. The circle panel hides its Circles heading once
3222
- the points are circles: the panel's title says so, and the section is the
3223
- only thing left in it. */
3224
3373
  .label-style-panel .label-style-section-title.hidden {
3225
3374
  display: none;
3226
3375
  }
3227
3376
 
3228
- /* 15.5px is what the dialogs subhead at (.info-box h4); the weight is the
3229
- sketch's, which wants these read as headings rather than as captions. */
3230
3377
  .label-style-panel .label-style-section-name {
3231
- font-size: 15.5px;
3378
+ font-size: 15px;
3232
3379
  color: #222;
3233
3380
  }
3234
3381
 
@@ -3261,22 +3408,6 @@ body.pan.panning .map-layers:not(.drawing) {
3261
3408
  overflow: hidden;
3262
3409
  }
3263
3410
 
3264
- /* Closer to the heading above it than a row usually is, because that heading
3265
- line carries this row's "Size" caption: the gap between a caption and the
3266
- field it names is 2px everywhere else in the panel. */
3267
- .text-style-panel .label-icon-shapes-row {
3268
- margin-top: 2px;
3269
- }
3270
-
3271
- /* Pushed to the right and given the width of a split row's narrow column, so
3272
- that it sits over the size field a row below it. */
3273
- .text-style-panel .label-icon-size-caption {
3274
- width: var(--label-split-b-width);
3275
- margin-left: auto;
3276
- font-weight: normal;
3277
- color: #555;
3278
- }
3279
-
3280
3411
  /* Darker than the app's default placeholder. These fields show the value the
3281
3412
  renderer will use when the property is absent -- 0 and auto are true of the
3282
3413
  label, they are just not stored on it -- so at #aaa they read as a control
@@ -3320,9 +3451,6 @@ body.pan.panning .map-layers:not(.drawing) {
3320
3451
  background: #f0f0f0;
3321
3452
  }
3322
3453
 
3323
- /* A grey fill, not the inverse the panel's other buttons use: the glyph is
3324
- what identifies the choice, and reversing it out makes the selected shape
3325
- the hardest one to read. */
3326
3454
  .label-style-panel .label-btn-group .label-panel-btn.selected {
3327
3455
  background: #dcdcdc;
3328
3456
  color: black;
@@ -3390,9 +3518,6 @@ body.pan.panning .map-layers:not(.drawing) {
3390
3518
  margin-top: 0;
3391
3519
  }
3392
3520
 
3393
- /* The cell a colour field sits in, which is also what its picker hangs from:
3394
- the picker is wider than the panel, so it opens over the map, and anchoring
3395
- it to the cell keeps it on the same side of the panel as its field. */
3396
3521
  .label-color-row {
3397
3522
  position: relative;
3398
3523
  }
@@ -3415,10 +3540,6 @@ body.pan.panning .map-layers:not(.drawing) {
3415
3540
  opacity: 0.45;
3416
3541
  }
3417
3542
 
3418
- /* A button with a word on it: Clear style, Random fills, Create. The same
3419
- shape as Save current in the saved styles row, which is the same kind of
3420
- thing -- a named action, as wide as its name -- and the same height as the
3421
- fields above it. */
3422
3543
  .label-panel-action-btn {
3423
3544
  box-sizing: border-box;
3424
3545
  display: inline-flex;
@@ -3428,6 +3549,7 @@ body.pan.panning .map-layers:not(.drawing) {
3428
3549
  border: 1px solid var(--label-field-border);
3429
3550
  border-radius: var(--label-field-radius);
3430
3551
  background-color: white;
3552
+ font-size: 12px;
3431
3553
  color: var(--normal-text);
3432
3554
  cursor: pointer;
3433
3555
  user-select: none;
@@ -3449,9 +3571,6 @@ body.pan.panning .map-layers:not(.drawing) {
3449
3571
  gap: 4px 6px;
3450
3572
  }
3451
3573
 
3452
- /* A swatch and its hex value inside one border: the pair is one answer to one
3453
- question, and a separate button beside a text box reads as two. The swatch
3454
- keeps its own outline so that white does not disappear into the field. */
3455
3574
  .label-style-panel .label-color-field {
3456
3575
  display: flex;
3457
3576
  align-items: center;
@@ -3472,8 +3591,8 @@ body.pan.panning .map-layers:not(.drawing) {
3472
3591
  width: 13px;
3473
3592
  height: 13px;
3474
3593
  margin-right: 6px;
3475
- border: 1px solid #bbb;
3476
- border-radius: 2px;
3594
+ border: 1px solid rgba(0,0,0,0.22);
3595
+ /* border-radius: 2px; */
3477
3596
  }
3478
3597
 
3479
3598
  /* A swatch for a selection whose colours disagree: split rather than empty,
@@ -3505,6 +3624,23 @@ body.pan.panning .map-layers:not(.drawing) {
3505
3624
  opacity: 0.45;
3506
3625
  }
3507
3626
 
3627
+ /* The opacity at the end of a colour field, behind a divider the height of the
3628
+ field. Wide enough for "100%" and for "mixed", and no wider: the hex value
3629
+ beside it gets the rest. Selectors as specific as the colour field's input
3630
+ rules above, which would otherwise stretch it and take its divider away. */
3631
+ .label-style-panel .label-color-field input.label-opacity-input,
3632
+ .label-style-panel .label-color-field input.label-opacity-input:focus {
3633
+ flex: none;
3634
+ align-self: stretch;
3635
+ width: 44px;
3636
+ height: auto;
3637
+ margin: 0 -3px 0 4px;
3638
+ padding: 0 4px 0 6px;
3639
+ border: none;
3640
+ border-left: 1px solid var(--label-field-border);
3641
+ border-radius: 0;
3642
+ }
3643
+
3508
3644
  .label-color-row .label-color-picker input[type="text"] {
3509
3645
  width: 45px;
3510
3646
  }
@@ -3514,10 +3650,6 @@ body.pan.panning .map-layers:not(.drawing) {
3514
3650
  box-sizing: border-box;
3515
3651
  }
3516
3652
 
3517
- /* What a section of this panel says when there is nothing in it to set: the
3518
- layer is drawn some way this panel cannot edit, or the thing the section is
3519
- for has to be made in the console. Set like a caption, not like a field's
3520
- value. */
3521
3653
  .point-style-note {
3522
3654
  color: #555;
3523
3655
  line-height: 1.3;
@@ -3667,10 +3799,6 @@ body.dragging-color-picker * {
3667
3799
  display: none;
3668
3800
  }
3669
3801
 
3670
- .label-editing-status {
3671
- color: #555;
3672
- }
3673
-
3674
3802
  .label-style-selection-row .label-editing-clear {
3675
3803
  margin-left: 8px;
3676
3804
  color: var(--colored-text);
@@ -3701,7 +3829,7 @@ body.dragging-color-picker * {
3701
3829
  .text-style-panel .label-position-grid {
3702
3830
  grid-template-columns: repeat(3, 10px);
3703
3831
  gap: 3px;
3704
- margin-top: -13px;
3832
+ margin-top: -15px;
3705
3833
  margin-bottom: 3px;
3706
3834
  }
3707
3835
 
@@ -3973,6 +4101,27 @@ body.dragging-color-picker * {
3973
4101
  top: 1px;
3974
4102
  }
3975
4103
 
4104
+ /* Active-layer name at the top of the arrow menu. inline-size containment
4105
+ keeps a long name from widening the menu: the heading takes the width set
4106
+ by the tool names and cuts the layer name short with an ellipsis. */
4107
+ .nav-menu-heading {
4108
+ contain: inline-size;
4109
+ overflow: hidden;
4110
+ text-overflow: ellipsis;
4111
+ white-space: nowrap;
4112
+ margin: 1px 10px 3px 10px;
4113
+ padding: 1px 0 3px 0;
4114
+ border-bottom: 1px solid #e4e4e4;
4115
+ color: #999;
4116
+ font-size: 11px;
4117
+ line-height: 12px;
4118
+ }
4119
+
4120
+ .nav-menu-divider {
4121
+ margin: 4px 10px;
4122
+ border-top: 1px solid #e4e4e4;
4123
+ }
4124
+
3976
4125
  .save-menu {
3977
4126
  text-align: right;
3978
4127
  padding-bottom: 5px;