@a83/orbiter-admin 0.3.14 → 0.3.16

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/public/style.css CHANGED
@@ -1022,3 +1022,1145 @@ html[data-style="glass"] .login-card {
1022
1022
  /* Scheme toggle icon labels (set in JS) */
1023
1023
  [data-scheme="dark"] .scheme-toggle { color: var(--accent); }
1024
1024
  [data-scheme="light"] .scheme-toggle { color: var(--gold); }
1025
+
1026
+
1027
+ /* ════════════════════════════════════════════════════════════
1028
+ XFCE DOCK MODE (html[data-style="xfce"])
1029
+ Space-station OS: status bar top, floating dock bottom.
1030
+ ════════════════════════════════════════════════════════════ */
1031
+
1032
+ /* ── Glass vars inherited ─────────────────────────────────── */
1033
+ html[data-style="xfce"] {
1034
+ --radius: 12px;
1035
+ --glass-blur: blur(28px) saturate(210%);
1036
+ --glass-blur-sm: blur(16px) saturate(180%);
1037
+ --glass-border: color-mix(in srgb, var(--accent) 22%, transparent);
1038
+ --glass-bg: color-mix(in srgb, var(--bg2) 46%, transparent);
1039
+ --glass-bg-side: color-mix(in srgb, var(--bg1) 48%, transparent);
1040
+ --glass-shadow: 0 8px 40px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.07);
1041
+ --sb-h: 26px;
1042
+ --dock-h: 76px;
1043
+ --dock-item-base: 44px;
1044
+ }
1045
+
1046
+ html[data-style="xfce"][data-scheme="light"],
1047
+ html[data-style="xfce"] body[data-scheme="light"] {
1048
+ --glass-shadow: 0 4px 20px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.6);
1049
+ }
1050
+
1051
+ /* ── Layout overrides ─────────────────────────────────────── */
1052
+ html[data-style="xfce"],
1053
+ html[data-style="xfce"] body {
1054
+ overscroll-behavior: none;
1055
+ }
1056
+ html[data-style="xfce"] .app {
1057
+ display: block !important;
1058
+ height: 100dvh;
1059
+ overflow: hidden;
1060
+ }
1061
+ html[data-style="xfce"] .topbar { display: none !important; }
1062
+ html[data-style="xfce"] .sidebar { display: none !important; }
1063
+
1064
+ html[data-style="xfce"] .main {
1065
+ height: 100dvh;
1066
+ box-sizing: border-box;
1067
+ padding-top: calc(var(--sb-h) + 20px) !important;
1068
+ padding-bottom: calc(var(--dock-h) + 28px) !important;
1069
+ overflow-y: auto;
1070
+ overscroll-behavior-y: none;
1071
+ }
1072
+ /* Editor page: don't flex-column — editor-shell needs direct control */
1073
+ html[data-style="xfce"] .main:has(.editor-shell) {
1074
+ display: block;
1075
+ gap: 0;
1076
+ padding-left: 0 !important;
1077
+ padding-right: 0 !important;
1078
+ }
1079
+
1080
+ /* Editor: fix full-height shell */
1081
+ html[data-style="xfce"] .editor-shell {
1082
+ height: calc(100vh - var(--sb-h) - var(--dock-h) - 8px) !important;
1083
+ position: relative;
1084
+ top: var(--sb-h);
1085
+ }
1086
+
1087
+ /* ── Status Bar ───────────────────────────────────────────── */
1088
+ .xfce-sb {
1089
+ position: fixed;
1090
+ top: 0; left: 0; right: 0;
1091
+ height: var(--sb-h, 26px);
1092
+ z-index: 99999;
1093
+ display: flex;
1094
+ align-items: center;
1095
+ padding: 0 14px;
1096
+ gap: 0;
1097
+ background: var(--glass-bg-side, rgba(20,20,32,.7));
1098
+ backdrop-filter: var(--glass-blur, blur(24px));
1099
+ -webkit-backdrop-filter: var(--glass-blur, blur(24px));
1100
+ border-bottom: 1px solid var(--glass-border, rgba(139,124,248,.18));
1101
+ font-family: var(--mono);
1102
+ font-size: 10px;
1103
+ color: var(--muted);
1104
+ user-select: none;
1105
+ }
1106
+ .xfce-sb-left { display: flex; align-items: center; gap: 6px; flex: 1; }
1107
+ .xfce-sb-center{ flex: 1; text-align: center; color: var(--mid); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 9.5px; letter-spacing: .04em; }
1108
+ .xfce-sb-right { flex: 1; display: flex; align-items: center; gap: 6px; justify-content: flex-end; }
1109
+ .xfce-sb-logo { color: var(--accent); letter-spacing: .16em; font-size: 9px; font-weight: 600; display: flex; align-items: center; }
1110
+ .xfce-sb-div { color: var(--line); }
1111
+ #xfce-sb-site { color: var(--text); }
1112
+ #xfce-sb-user { color: var(--mid); }
1113
+ #xfce-sb-clock { color: var(--gold); font-variant-numeric: tabular-nums; }
1114
+
1115
+ /* ── Dock ─────────────────────────────────────────────────── */
1116
+ .xfce-dock {
1117
+ position: fixed;
1118
+ bottom: 18px;
1119
+ left: 50%;
1120
+ transform: translateX(-50%);
1121
+ z-index: 99998;
1122
+ padding: 6px 10px;
1123
+ background: var(--glass-bg-side);
1124
+ backdrop-filter: var(--glass-blur);
1125
+ -webkit-backdrop-filter: var(--glass-blur);
1126
+ border: 1px solid var(--glass-border);
1127
+ border-radius: 20px;
1128
+ box-shadow: var(--glass-shadow), 0 0 0 1px color-mix(in srgb, var(--accent) 8%, transparent);
1129
+ display: flex;
1130
+ align-items: flex-end;
1131
+ }
1132
+
1133
+ .xfce-dock-inner {
1134
+ display: flex;
1135
+ align-items: flex-end;
1136
+ gap: 6px;
1137
+ }
1138
+
1139
+ .xfce-dock-group {
1140
+ display: flex;
1141
+ align-items: flex-end;
1142
+ gap: 6px;
1143
+ }
1144
+
1145
+ /* Dock separator */
1146
+ .xfce-dock-sep {
1147
+ width: 1px;
1148
+ height: 32px;
1149
+ background: var(--glass-border);
1150
+ margin: 0 6px;
1151
+ align-self: center;
1152
+ flex-shrink: 0;
1153
+ }
1154
+
1155
+ /* Dock items */
1156
+ .xfce-dock-item {
1157
+ display: flex;
1158
+ flex-direction: column;
1159
+ align-items: center;
1160
+ justify-content: flex-end;
1161
+ width: var(--dock-item-base, 44px);
1162
+ padding: 5px 4px 4px;
1163
+ background: transparent;
1164
+ border: none;
1165
+ border-radius: 12px;
1166
+ cursor: pointer;
1167
+ text-decoration: none;
1168
+ color: var(--mid);
1169
+ transform: scale(var(--ds, 1));
1170
+ transform-origin: bottom center;
1171
+ transition: transform .12s cubic-bezier(.34,1.5,.64,1), color .12s, background .12s, box-shadow .12s;
1172
+ position: relative;
1173
+ overflow: hidden;
1174
+ }
1175
+ /* top-light radial spot — appears on hover */
1176
+ .xfce-dock-item::before {
1177
+ content: '';
1178
+ position: absolute;
1179
+ inset: 0;
1180
+ border-radius: inherit;
1181
+ background: radial-gradient(ellipse 90% 55% at 50% -10%,
1182
+ color-mix(in srgb, var(--accent) 40%, transparent) 0%,
1183
+ transparent 70%);
1184
+ opacity: 0;
1185
+ transition: opacity .12s;
1186
+ pointer-events: none;
1187
+ }
1188
+ .xfce-dock-item:hover::before { opacity: 1; }
1189
+ .xfce-dock-item:hover {
1190
+ color: var(--heading);
1191
+ background: color-mix(in srgb, var(--accent) 13%, transparent);
1192
+ box-shadow:
1193
+ 0 0 0 1px color-mix(in srgb, var(--accent) 38%, transparent),
1194
+ 0 0 18px color-mix(in srgb, var(--accent) 28%, transparent),
1195
+ inset 0 1px 0 color-mix(in srgb, white 22%, transparent);
1196
+ }
1197
+ .xfce-dock-item.active {
1198
+ color: var(--accent);
1199
+ background: color-mix(in srgb, var(--accent) 9%, transparent);
1200
+ }
1201
+ .xfce-dock-item.active::before { opacity: .5; }
1202
+ /* active indicator: glowing scan-line instead of dot */
1203
+ .xfce-dock-item.active::after {
1204
+ content: '';
1205
+ position: absolute;
1206
+ bottom: 0;
1207
+ left: 50%;
1208
+ transform: translateX(-50%);
1209
+ width: 60%;
1210
+ height: 2px;
1211
+ border-radius: 1px;
1212
+ background: linear-gradient(90deg, transparent, var(--accent) 30%, var(--accent) 70%, transparent);
1213
+ box-shadow: 0 0 8px 1px color-mix(in srgb, var(--accent) 70%, transparent);
1214
+ }
1215
+
1216
+ .xfce-dock-icon {
1217
+ font-size: 18px;
1218
+ line-height: 1;
1219
+ display: block;
1220
+ opacity: .35;
1221
+ transition: filter .12s, transform .12s cubic-bezier(.34,1.5,.64,1), opacity .12s, color .12s;
1222
+ }
1223
+ .xfce-dock-item:hover .xfce-dock-icon {
1224
+ opacity: 1;
1225
+ color: var(--accent);
1226
+ filter: drop-shadow(0 0 7px color-mix(in srgb, var(--accent) 75%, transparent));
1227
+ transform: scale(1.14);
1228
+ }
1229
+ .xfce-dock-item.active .xfce-dock-icon {
1230
+ opacity: .95;
1231
+ color: var(--accent);
1232
+ filter: drop-shadow(0 0 5px color-mix(in srgb, var(--accent) 65%, transparent));
1233
+ }
1234
+ .xfce-dock-lbl {
1235
+ font-family: var(--mono);
1236
+ font-size: 8px;
1237
+ letter-spacing: .05em;
1238
+ margin-top: 3px;
1239
+ color: var(--mid);
1240
+ white-space: nowrap;
1241
+ transition: color .12s, opacity .12s;
1242
+ opacity: .32;
1243
+ }
1244
+ .xfce-dock-item:hover .xfce-dock-lbl {
1245
+ opacity: 1;
1246
+ color: color-mix(in srgb, var(--accent) 80%, var(--heading));
1247
+ }
1248
+ .xfce-dock-item.active .xfce-dock-lbl {
1249
+ opacity: .85;
1250
+ color: var(--accent);
1251
+ }
1252
+
1253
+ /* ── HUD Panel ────────────────────────────────────────────── */
1254
+ .xfce-hud {
1255
+ position: fixed;
1256
+ top: var(--sb-h, 26px);
1257
+ right: -280px;
1258
+ width: 260px;
1259
+ height: calc(100vh - var(--sb-h, 26px) - var(--dock-h, 76px) - 26px);
1260
+ z-index: 99997;
1261
+ background: var(--glass-bg-side);
1262
+ backdrop-filter: var(--glass-blur);
1263
+ -webkit-backdrop-filter: var(--glass-blur);
1264
+ border-left: 1px solid var(--glass-border);
1265
+ border-bottom: 1px solid var(--glass-border);
1266
+ border-radius: 0 0 0 14px;
1267
+ box-shadow: var(--glass-shadow);
1268
+ display: flex;
1269
+ flex-direction: column;
1270
+ overflow: hidden;
1271
+ transition: right .25s cubic-bezier(.4,0,.2,1);
1272
+ }
1273
+ .xfce-hud.open { right: 0; }
1274
+
1275
+ .xfce-hud-bar {
1276
+ display: flex;
1277
+ align-items: center;
1278
+ justify-content: space-between;
1279
+ padding: 10px 14px 8px;
1280
+ border-bottom: 1px solid var(--line);
1281
+ flex-shrink: 0;
1282
+ }
1283
+ .xfce-hud-title {
1284
+ font-family: var(--mono);
1285
+ font-size: 10px;
1286
+ letter-spacing: .14em;
1287
+ text-transform: uppercase;
1288
+ color: var(--accent);
1289
+ }
1290
+ .xfce-hud-close {
1291
+ background: none;
1292
+ border: none;
1293
+ cursor: pointer;
1294
+ color: var(--muted);
1295
+ font-size: 12px;
1296
+ padding: 2px 4px;
1297
+ border-radius: 4px;
1298
+ transition: color .12s, background .12s;
1299
+ }
1300
+ .xfce-hud-close:hover { color: var(--heading); background: var(--hover-bg); }
1301
+
1302
+ .xfce-hud-body {
1303
+ flex: 1;
1304
+ overflow-y: auto;
1305
+ padding: 14px;
1306
+ }
1307
+
1308
+ .xfce-hud-section-label {
1309
+ font-family: var(--mono);
1310
+ font-size: 9px;
1311
+ letter-spacing: .18em;
1312
+ text-transform: uppercase;
1313
+ color: var(--muted);
1314
+ margin-bottom: 6px;
1315
+ }
1316
+
1317
+ .xfce-hud-rows {}
1318
+
1319
+ .xfce-hud-row {
1320
+ display: flex;
1321
+ justify-content: space-between;
1322
+ align-items: center;
1323
+ padding: 4px 0;
1324
+ border-bottom: 1px solid var(--line2);
1325
+ font-size: 11px;
1326
+ }
1327
+ .xfce-hud-row:last-child { border-bottom: none; }
1328
+ .xfce-hud-row span:first-child { color: var(--muted); }
1329
+ .xfce-hud-row span:last-child { color: var(--text); font-family: var(--mono); font-size: 10px; }
1330
+
1331
+ .xfce-hud-nav-links {
1332
+ display: flex;
1333
+ flex-direction: column;
1334
+ gap: 2px;
1335
+ }
1336
+ .xfce-hud-nav-item {
1337
+ display: flex;
1338
+ align-items: center;
1339
+ gap: 10px;
1340
+ padding: 6px 8px;
1341
+ border-radius: 6px;
1342
+ text-decoration: none;
1343
+ color: var(--mid);
1344
+ font-size: 12px;
1345
+ transition: background .1s, color .1s;
1346
+ }
1347
+ .xfce-hud-nav-item:hover { background: var(--hover-bg); color: var(--heading); }
1348
+ .xfce-hud-nav-item.active { color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, transparent); }
1349
+ .xfce-hud-nav-item span:first-child { font-size: 14px; width: 20px; text-align: center; }
1350
+
1351
+ /* ── Animated background orbs (glass mode carries over) ───── */
1352
+ html[data-style="xfce"] body::before,
1353
+ html[data-style="xfce"] body::after {
1354
+ content: '';
1355
+ position: fixed;
1356
+ border-radius: 50%;
1357
+ pointer-events: none;
1358
+ z-index: 0;
1359
+ filter: blur(80px);
1360
+ animation: orb-drift 20s ease-in-out infinite alternate;
1361
+ }
1362
+ html[data-style="xfce"] body::before {
1363
+ width: 500px; height: 500px;
1364
+ background: radial-gradient(circle, color-mix(in srgb, var(--accent) 12%, transparent), transparent 70%);
1365
+ top: -120px; left: -100px;
1366
+ }
1367
+ html[data-style="xfce"] body::after {
1368
+ width: 400px; height: 400px;
1369
+ background: radial-gradient(circle, color-mix(in srgb, var(--gold) 8%, transparent), transparent 70%);
1370
+ bottom: 60px; right: -80px;
1371
+ animation-delay: -8s; animation-duration: 26s;
1372
+ }
1373
+ @keyframes orb-drift {
1374
+ from { transform: translate(0, 0) scale(1); }
1375
+ to { transform: translate(30px, 20px) scale(1.08); }
1376
+ }
1377
+
1378
+ /* ── XFCE: Content centering + card polish ────────────────── */
1379
+ html[data-style="xfce"] .main {
1380
+ padding-left: max(24px, calc(50vw - 560px)) !important;
1381
+ padding-right: max(24px, calc(50vw - 560px)) !important;
1382
+ display: flex;
1383
+ flex-direction: column;
1384
+ gap: 16px;
1385
+ }
1386
+ /* Prevent cards from compressing — let main scroll instead */
1387
+ html[data-style="xfce"] .main > * {
1388
+ flex-shrink: 0;
1389
+ }
1390
+
1391
+ /* Rounded + glowing glass cards */
1392
+ html[data-style="xfce"] .glass-card,
1393
+ html[data-style="xfce"] .settings-group,
1394
+ html[data-style="xfce"] .table-wrap {
1395
+ border-radius: 16px !important;
1396
+ position: relative;
1397
+ background: var(--glass-bg-side) !important;
1398
+ backdrop-filter: var(--glass-blur-sm);
1399
+ -webkit-backdrop-filter: var(--glass-blur-sm);
1400
+ border: 1px solid var(--glass-border) !important;
1401
+ box-shadow:
1402
+ var(--glass-shadow),
1403
+ 0 0 0 1px color-mix(in srgb, var(--accent) 10%, transparent),
1404
+ 0 0 28px color-mix(in srgb, var(--accent) 5%, transparent) !important;
1405
+ overflow: hidden;
1406
+ }
1407
+
1408
+ /* Entries page: header and content card */
1409
+ html[data-style="xfce"] .page-header {
1410
+ padding: 20px 24px !important;
1411
+ margin-bottom: 0;
1412
+ }
1413
+ html[data-style="xfce"] .entries-content-card {
1414
+ padding: 16px 20px !important;
1415
+ }
1416
+ html[data-style="xfce"] .filter-tab {
1417
+ border-radius: 20px;
1418
+ transition: all .12s;
1419
+ }
1420
+ html[data-style="xfce"] .filter-tab:hover {
1421
+ background: color-mix(in srgb, var(--accent) 8%, transparent);
1422
+ border-color: color-mix(in srgb, var(--accent) 30%, transparent);
1423
+ color: var(--accent);
1424
+ }
1425
+ html[data-style="xfce"] .filter-tab.active {
1426
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
1427
+ border-color: var(--accent);
1428
+ color: var(--accent);
1429
+ box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 25%, transparent);
1430
+ }
1431
+
1432
+ /* ── XFCE: Button hover glow ──────────────────────────────── */
1433
+ html[data-style="xfce"] .btn-primary:hover,
1434
+ html[data-style="xfce"] .btn-save:hover,
1435
+ html[data-style="xfce"] .btn-deploy:hover {
1436
+ box-shadow: 0 0 14px color-mix(in srgb, var(--accent) 45%, transparent) !important;
1437
+ transform: translateY(-1px) scale(1.02);
1438
+ }
1439
+ html[data-style="xfce"] .btn-ghost:hover {
1440
+ box-shadow: 0 0 10px color-mix(in srgb, var(--accent) 20%, transparent) !important;
1441
+ transform: translateY(-1px);
1442
+ }
1443
+ html[data-style="xfce"] .btn,
1444
+ html[data-style="xfce"] button:not(.xfce-dock-item):not(.xfce-hud-close) {
1445
+ transition: background .15s, color .15s, border-color .15s, box-shadow .15s, transform .12s !important;
1446
+ }
1447
+
1448
+ /* ── XFCE: Schema sidebar rounding ────────────────────────── */
1449
+ html[data-style="xfce"] .coll-panel {
1450
+ border-radius: 14px;
1451
+ border: 1px solid var(--glass-border);
1452
+ background: var(--glass-bg-side);
1453
+ backdrop-filter: var(--glass-blur);
1454
+ -webkit-backdrop-filter: var(--glass-blur);
1455
+ overflow: hidden;
1456
+ margin-right: 0;
1457
+ }
1458
+ html[data-style="xfce"] .coll-panel-head {
1459
+ border-radius: 14px 14px 0 0;
1460
+ background: color-mix(in srgb, var(--accent) 5%, transparent);
1461
+ }
1462
+ html[data-style="xfce"] .coll-item {
1463
+ border-radius: 8px;
1464
+ margin: 2px 6px;
1465
+ border-bottom: none;
1466
+ padding: 8px 12px;
1467
+ }
1468
+ html[data-style="xfce"] .coll-item:hover {
1469
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
1470
+ color: var(--heading);
1471
+ }
1472
+ html[data-style="xfce"] .coll-item.active {
1473
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
1474
+ }
1475
+ html[data-style="xfce"] .coll-item.active::before {
1476
+ border-radius: 2px 0 0 2px;
1477
+ top: 6px; bottom: 6px;
1478
+ }
1479
+
1480
+ /* ── XFCE: Dashboard window-manager blocks ────────────────── */
1481
+ html[data-style="xfce"] .hero.glass-card {
1482
+ border-radius: 16px !important;
1483
+ position: relative;
1484
+ overflow: hidden;
1485
+ background: linear-gradient(
1486
+ 118deg,
1487
+ color-mix(in srgb, var(--accent) 22%, var(--glass-bg-side)),
1488
+ var(--glass-bg-side) 68%
1489
+ ) !important;
1490
+ padding: 30px 36px 26px !important;
1491
+ align-items: center !important;
1492
+ }
1493
+ html[data-style="xfce"] .hero-site {
1494
+ font-size: 28px !important;
1495
+ font-weight: 400 !important;
1496
+ letter-spacing: 0.06em !important;
1497
+ background: linear-gradient(
1498
+ 90deg,
1499
+ var(--heading) 50%,
1500
+ color-mix(in srgb, var(--accent) 80%, var(--heading)) 100%
1501
+ );
1502
+ -webkit-background-clip: text;
1503
+ -webkit-text-fill-color: transparent;
1504
+ background-clip: text;
1505
+ margin-bottom: 8px !important;
1506
+ }
1507
+ html[data-style="xfce"] .hero-date {
1508
+ font-family: var(--mono) !important;
1509
+ font-size: 11px !important;
1510
+ letter-spacing: 0.08em !important;
1511
+ color: var(--mid) !important;
1512
+ }
1513
+ html[data-style="xfce"] .hero-url {
1514
+ border-radius: 20px !important;
1515
+ padding: 7px 16px !important;
1516
+ font-size: 10px !important;
1517
+ }
1518
+ html[data-style="xfce"] .btn-deploy {
1519
+ border-radius: 20px !important;
1520
+ padding: 8px 18px !important;
1521
+ box-shadow: 0 0 12px color-mix(in srgb, var(--gold) 25%, transparent);
1522
+ }
1523
+ html[data-style="xfce"] .hero.glass-card::before {
1524
+ content: '';
1525
+ position: absolute;
1526
+ inset: 0;
1527
+ background: radial-gradient(
1528
+ ellipse at 90% 50%,
1529
+ color-mix(in srgb, var(--gold) 6%, transparent) 0%,
1530
+ transparent 60%
1531
+ );
1532
+ pointer-events: none;
1533
+ }
1534
+
1535
+ /* Dashboard: 2-column grid — stats panel on the right */
1536
+ html[data-style="xfce"] .main:has(.stats-row) {
1537
+ display: grid !important;
1538
+ grid-template-columns: 1fr 190px;
1539
+ grid-template-rows: auto auto auto;
1540
+ grid-template-areas:
1541
+ "hero stats"
1542
+ "dash stats"
1543
+ "ws ws";
1544
+ }
1545
+ html[data-style="xfce"] .hero.glass-card { grid-area: hero; }
1546
+ html[data-style="xfce"] .stats-row.glass-card { grid-area: stats; }
1547
+ html[data-style="xfce"] .dash-content.glass-card { grid-area: dash; }
1548
+ html[data-style="xfce"] .workspace.glass-card { grid-area: ws; }
1549
+
1550
+ /* Stats: vertical compact list */
1551
+ html[data-style="xfce"] .stats-row.glass-card {
1552
+ display: flex !important;
1553
+ flex-direction: column !important;
1554
+ border-radius: 16px !important;
1555
+ overflow: hidden;
1556
+ }
1557
+ html[data-style="xfce"] .stat-cell {
1558
+ flex: 1;
1559
+ border-right: none !important;
1560
+ border-bottom: 1px solid var(--glass-border);
1561
+ padding: 14px 16px !important;
1562
+ transition: background .15s;
1563
+ }
1564
+ html[data-style="xfce"] .stat-cell:last-child { border-bottom: none; }
1565
+ html[data-style="xfce"] .stat-cell:hover {
1566
+ background: color-mix(in srgb, var(--accent) 5%, transparent);
1567
+ }
1568
+ html[data-style="xfce"] .stat-num {
1569
+ font-size: 22px !important;
1570
+ margin-bottom: 2px !important;
1571
+ }
1572
+ html[data-style="xfce"] .stat-label {
1573
+ font-size: 8px !important;
1574
+ letter-spacing: 0.22em !important;
1575
+ margin-bottom: 6px !important;
1576
+ }
1577
+ html[data-style="xfce"] .stat-sub {
1578
+ font-size: 9px !important;
1579
+ }
1580
+ html[data-style="xfce"] .stat-bar {
1581
+ margin-top: 8px !important;
1582
+ }
1583
+
1584
+ html[data-style="xfce"] .dash-content.glass-card {
1585
+ border-radius: 16px !important;
1586
+ overflow: hidden;
1587
+ }
1588
+ html[data-style="xfce"] .content-main {
1589
+ overflow-y: auto;
1590
+ max-height: 380px;
1591
+ }
1592
+ html[data-style="xfce"] .content-side {
1593
+ overflow-y: auto;
1594
+ max-height: 380px;
1595
+ }
1596
+
1597
+ html[data-style="xfce"] .workspace.glass-card {
1598
+ border-radius: 16px !important;
1599
+ overflow: visible; /* let panel content grow freely */
1600
+ }
1601
+ html[data-style="xfce"] .ws-panel {
1602
+ transition: background .15s;
1603
+ min-height: 0;
1604
+ }
1605
+ html[data-style="xfce"] .ws-panel:hover {
1606
+ background: color-mix(in srgb, var(--accent) 3%, transparent);
1607
+ }
1608
+ html[data-style="xfce"] .ws-panel + .ws-panel {
1609
+ border-left: 1px solid var(--glass-border);
1610
+ }
1611
+ html[data-style="xfce"] .notes-area {
1612
+ min-height: 220px;
1613
+ resize: vertical;
1614
+ }
1615
+
1616
+
1617
+ /* ── XFCE: Settings page ──────────────────────────────────── */
1618
+ html[data-style="xfce"] .settings-group {
1619
+ border-radius: 16px !important;
1620
+ border: 1px solid var(--glass-border) !important;
1621
+ background: var(--glass-bg-side) !important;
1622
+ backdrop-filter: var(--glass-blur) !important;
1623
+ -webkit-backdrop-filter: var(--glass-blur) !important;
1624
+ margin-bottom: 16px;
1625
+ }
1626
+ html[data-style="xfce"] .settings-group .group-header,
1627
+ html[data-style="xfce"] .settings-group-title {
1628
+ border-radius: 16px 16px 0 0;
1629
+ background: color-mix(in srgb, var(--accent) 5%, transparent);
1630
+ }
1631
+
1632
+ /* ── XFCE: Table wrap ─────────────────────────────────────── */
1633
+ html[data-style="xfce"] .table-wrap {
1634
+ border-radius: 14px !important;
1635
+ border: 1px solid var(--glass-border) !important;
1636
+ overflow: hidden;
1637
+ }
1638
+
1639
+ /* Settings / Import content: center within padded main */
1640
+ html[data-style="xfce"] .settings-wrap,
1641
+ html[data-style="xfce"] .import-wrap {
1642
+ width: 100%;
1643
+ max-width: 720px;
1644
+ margin: 0 auto;
1645
+ padding-left: 0;
1646
+ padding-right: 0;
1647
+ }
1648
+
1649
+ /* Build card glass treatment */
1650
+ html[data-style="xfce"] .build-card {
1651
+ background: var(--glass-bg) !important;
1652
+ backdrop-filter: var(--glass-blur-sm);
1653
+ -webkit-backdrop-filter: var(--glass-blur-sm);
1654
+ border: 1px solid var(--glass-border) !important;
1655
+ border-radius: 14px !important;
1656
+ box-shadow: var(--glass-shadow);
1657
+ }
1658
+
1659
+ /* ── XFCE: Focus mode (spotlight) ─────────────────────────── */
1660
+ .xfce-focus-dim {
1661
+ position: fixed;
1662
+ inset: 0;
1663
+ z-index: 9988;
1664
+ background: rgba(0,0,0,0);
1665
+ backdrop-filter: blur(0px);
1666
+ -webkit-backdrop-filter: blur(0px);
1667
+ pointer-events: none;
1668
+ transition: background .25s, backdrop-filter .25s;
1669
+ }
1670
+ .xfce-focus-dim.active {
1671
+ background: rgba(0,0,0,.56);
1672
+ backdrop-filter: blur(5px);
1673
+ -webkit-backdrop-filter: blur(5px);
1674
+ pointer-events: all;
1675
+ cursor: zoom-out;
1676
+ }
1677
+
1678
+ /* Section head: zoom-in cursor + accent on hover */
1679
+ html[data-style="xfce"] .xfce-focus-trigger {
1680
+ cursor: zoom-in;
1681
+ user-select: none;
1682
+ transition: color .12s;
1683
+ }
1684
+ html[data-style="xfce"] .xfce-focus-trigger:hover .section-title {
1685
+ color: var(--accent);
1686
+ }
1687
+ html[data-style="xfce"] .xfce-focus-trigger::after {
1688
+ content: '⊕';
1689
+ font-size: 10px;
1690
+ color: var(--muted);
1691
+ margin-left: 8px;
1692
+ opacity: 0;
1693
+ transition: opacity .15s;
1694
+ pointer-events: none;
1695
+ }
1696
+ html[data-style="xfce"] .xfce-focus-trigger:hover::after {
1697
+ opacity: .65;
1698
+ }
1699
+
1700
+ /* Focused card: brighter solid surface so content is readable */
1701
+ html[data-style="xfce"] .xfce-in-focus {
1702
+ background: color-mix(in srgb, var(--bg1) 94%, transparent) !important;
1703
+ backdrop-filter: blur(28px) brightness(1.06) !important;
1704
+ -webkit-backdrop-filter: blur(28px) brightness(1.06) !important;
1705
+ border-color: color-mix(in srgb, var(--accent) 22%, var(--line)) !important;
1706
+ }
1707
+
1708
+ /* Scale up content inside focused card */
1709
+ html[data-style="xfce"] .xfce-in-focus .content-main,
1710
+ html[data-style="xfce"] .xfce-in-focus .content-side {
1711
+ padding: 32px 40px !important;
1712
+ max-height: none !important;
1713
+ overflow: visible !important;
1714
+ }
1715
+ html[data-style="xfce"] .xfce-in-focus .entry-row {
1716
+ padding: 14px 18px !important;
1717
+ grid-template-columns: 1fr 110px 80px !important;
1718
+ gap: 20px !important;
1719
+ }
1720
+ html[data-style="xfce"] .xfce-in-focus .entry-name {
1721
+ font-size: 13px !important;
1722
+ }
1723
+ html[data-style="xfce"] .xfce-in-focus .entry-coll,
1724
+ html[data-style="xfce"] .xfce-in-focus .entry-date {
1725
+ font-size: 11px !important;
1726
+ }
1727
+ html[data-style="xfce"] .xfce-in-focus .section-title {
1728
+ font-size: 10px !important;
1729
+ letter-spacing: .28em !important;
1730
+ }
1731
+ html[data-style="xfce"] .xfce-in-focus .coll-card {
1732
+ padding: 14px 0 !important;
1733
+ }
1734
+ html[data-style="xfce"] .xfce-in-focus .coll-card-name {
1735
+ font-size: 13px !important;
1736
+ }
1737
+ html[data-style="xfce"] .xfce-in-focus .btn-sm {
1738
+ font-size: 10px !important;
1739
+ padding: 5px 12px !important;
1740
+ }
1741
+
1742
+ /* Focused card: hint to close */
1743
+ html[data-style="xfce"] .xfce-in-focus .xfce-focus-trigger::after {
1744
+ content: 'ESC';
1745
+ opacity: .4;
1746
+ font-size: 8px;
1747
+ letter-spacing: .1em;
1748
+ }
1749
+
1750
+ /* ── XFCE: Workspace overlay (Notes + To-do) ──────────────── */
1751
+ .xfce-ws-overlay {
1752
+ position: fixed;
1753
+ bottom: calc(var(--dock-h, 76px) + 30px);
1754
+ left: 50%;
1755
+ transform: translateX(-50%);
1756
+ width: min(620px, 90vw);
1757
+ height: 420px;
1758
+ z-index: 99996;
1759
+ background: var(--glass-bg-side);
1760
+ backdrop-filter: var(--glass-blur);
1761
+ -webkit-backdrop-filter: var(--glass-blur);
1762
+ border: 1px solid var(--glass-border);
1763
+ border-radius: 16px;
1764
+ box-shadow: var(--glass-shadow), 0 0 0 1px color-mix(in srgb, var(--accent) 14%, transparent),
1765
+ 0 0 32px color-mix(in srgb, var(--accent) 8%, transparent);
1766
+ display: none;
1767
+ flex-direction: column;
1768
+ overflow: hidden;
1769
+ }
1770
+ .xfce-ws-overlay.open { display: flex; }
1771
+
1772
+ .xfce-ws-bar {
1773
+ display: flex;
1774
+ align-items: center;
1775
+ justify-content: space-between;
1776
+ padding: 10px 14px 8px;
1777
+ border-bottom: 1px solid var(--glass-border);
1778
+ flex-shrink: 0;
1779
+ background: color-mix(in srgb, var(--accent) 4%, transparent);
1780
+ }
1781
+ .xfce-ws-tabs { display: flex; gap: 4px; }
1782
+ .xfce-ws-tab {
1783
+ background: none;
1784
+ border: 1px solid transparent;
1785
+ border-radius: 8px;
1786
+ color: var(--mid);
1787
+ cursor: pointer;
1788
+ font-family: var(--mono);
1789
+ font-size: 10px;
1790
+ letter-spacing: .06em;
1791
+ padding: 4px 11px;
1792
+ transition: all .12s;
1793
+ }
1794
+ .xfce-ws-tab:hover { color: var(--heading); background: var(--hover-bg); }
1795
+ .xfce-ws-tab.active {
1796
+ color: var(--accent);
1797
+ border-color: color-mix(in srgb, var(--accent) 35%, transparent);
1798
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
1799
+ }
1800
+ .xfce-ws-ind {
1801
+ font-size: 9px;
1802
+ font-family: var(--mono);
1803
+ color: var(--muted);
1804
+ transition: color .2s;
1805
+ white-space: nowrap;
1806
+ }
1807
+ .xfce-ws-export {
1808
+ background: none;
1809
+ border: 1px solid var(--line);
1810
+ border-radius: 6px;
1811
+ cursor: pointer;
1812
+ color: var(--muted);
1813
+ font-family: var(--mono);
1814
+ font-size: 9px;
1815
+ letter-spacing: .04em;
1816
+ padding: 2px 8px;
1817
+ transition: border-color .12s, color .12s;
1818
+ }
1819
+ .xfce-ws-export:hover { border-color: var(--accent); color: var(--accent); }
1820
+ .xfce-ws-close {
1821
+ background: none;
1822
+ border: none;
1823
+ cursor: pointer;
1824
+ color: var(--muted);
1825
+ font-size: 12px;
1826
+ padding: 2px 5px;
1827
+ border-radius: 4px;
1828
+ transition: color .12s, background .12s;
1829
+ }
1830
+ .xfce-ws-close:hover { color: var(--heading); background: var(--hover-bg); }
1831
+
1832
+ .xfce-ws-body {
1833
+ flex: 1;
1834
+ overflow: hidden;
1835
+ padding: 12px 14px 14px;
1836
+ display: flex;
1837
+ flex-direction: column;
1838
+ }
1839
+ .xfce-ws-pane {
1840
+ flex: 1;
1841
+ display: flex;
1842
+ flex-direction: column;
1843
+ gap: 8px;
1844
+ overflow-y: auto;
1845
+ }
1846
+ .xfce-ws-textarea {
1847
+ flex: 1;
1848
+ width: 100%;
1849
+ min-height: 0;
1850
+ resize: none;
1851
+ background: color-mix(in srgb, var(--bg0) 40%, transparent);
1852
+ border: 1px solid var(--line);
1853
+ padding: 10px 12px;
1854
+ color: var(--text);
1855
+ font-family: var(--mono);
1856
+ font-size: 12px;
1857
+ line-height: 1.8;
1858
+ outline: none;
1859
+ border-radius: 10px;
1860
+ transition: border-color .15s;
1861
+ box-sizing: border-box;
1862
+ }
1863
+ .xfce-ws-textarea:focus { border-color: var(--accent); }
1864
+
1865
+ .xfce-ws-todo-row {
1866
+ display: flex;
1867
+ align-items: center;
1868
+ border: 1px solid var(--line);
1869
+ border-radius: 8px;
1870
+ background: color-mix(in srgb, var(--bg0) 40%, transparent);
1871
+ overflow: hidden;
1872
+ flex-shrink: 0;
1873
+ }
1874
+ .xfce-ws-todo-prompt { font-family: var(--mono); font-size: 11px; color: var(--muted); padding: 7px 6px 7px 10px; flex-shrink: 0; }
1875
+ .xfce-ws-todo-inp {
1876
+ flex: 1;
1877
+ background: transparent;
1878
+ border: none;
1879
+ padding: 7px 4px;
1880
+ color: var(--text);
1881
+ font-family: var(--mono);
1882
+ font-size: 11px;
1883
+ outline: none;
1884
+ }
1885
+ .xfce-ws-todo-add {
1886
+ padding: 7px 12px;
1887
+ background: transparent;
1888
+ border: none;
1889
+ border-left: 1px solid var(--line);
1890
+ color: var(--muted);
1891
+ font-family: var(--mono);
1892
+ font-size: 12px;
1893
+ cursor: pointer;
1894
+ transition: color .12s;
1895
+ flex-shrink: 0;
1896
+ }
1897
+ .xfce-ws-todo-add:hover { color: var(--heading); }
1898
+
1899
+ .xfce-ws-todo-list {
1900
+ flex: 1;
1901
+ display: flex;
1902
+ flex-direction: column;
1903
+ gap: 1px;
1904
+ overflow-y: auto;
1905
+ }
1906
+ .xfce-ws-todo-item {
1907
+ display: flex;
1908
+ align-items: center;
1909
+ gap: 8px;
1910
+ padding: 6px 8px;
1911
+ border-radius: 7px;
1912
+ cursor: pointer;
1913
+ transition: background .1s;
1914
+ font-size: 12px;
1915
+ color: var(--text);
1916
+ user-select: none;
1917
+ }
1918
+ .xfce-ws-todo-item:hover { background: var(--hover-bg); }
1919
+ .xfce-ws-todo-item.done span { text-decoration: line-through; color: var(--muted); }
1920
+ .xfce-ws-todo-item input[type="checkbox"] {
1921
+ accent-color: var(--accent);
1922
+ width: 13px; height: 13px;
1923
+ cursor: pointer;
1924
+ flex-shrink: 0;
1925
+ }
1926
+ .xfce-ws-todo-footer {
1927
+ display: flex;
1928
+ justify-content: space-between;
1929
+ align-items: center;
1930
+ padding-top: 8px;
1931
+ font-size: 10px;
1932
+ color: var(--muted);
1933
+ font-family: var(--mono);
1934
+ flex-shrink: 0;
1935
+ }
1936
+ .xfce-ws-todo-empty {
1937
+ text-align: center;
1938
+ color: var(--muted);
1939
+ font-size: 11px;
1940
+ padding: 32px 0;
1941
+ font-family: var(--mono);
1942
+ letter-spacing: .04em;
1943
+ }
1944
+
1945
+ /* ── XFCE: Tools popup (Schema / Build / Import) ──────────── */
1946
+ .xfce-tools-popup {
1947
+ position: fixed;
1948
+ bottom: calc(var(--dock-h, 76px) + 28px);
1949
+ transform: translateX(-50%);
1950
+ z-index: 99997;
1951
+ background: var(--glass-bg-side);
1952
+ backdrop-filter: var(--glass-blur);
1953
+ -webkit-backdrop-filter: var(--glass-blur);
1954
+ border: 1px solid var(--glass-border);
1955
+ border-radius: 12px;
1956
+ box-shadow: var(--glass-shadow), 0 0 0 1px color-mix(in srgb, var(--accent) 10%, transparent);
1957
+ padding: 6px;
1958
+ display: none;
1959
+ flex-direction: column;
1960
+ gap: 2px;
1961
+ min-width: 130px;
1962
+ }
1963
+ .xfce-tools-popup.open {
1964
+ display: flex;
1965
+ }
1966
+ .xfce-tools-item {
1967
+ display: flex;
1968
+ align-items: center;
1969
+ gap: 10px;
1970
+ padding: 8px 12px;
1971
+ border-radius: 8px;
1972
+ text-decoration: none;
1973
+ color: var(--mid);
1974
+ font-size: 12px;
1975
+ transition: background .1s, color .1s;
1976
+ }
1977
+ .xfce-tools-item:hover {
1978
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
1979
+ color: var(--heading);
1980
+ }
1981
+ .xfce-tools-item.active {
1982
+ color: var(--accent);
1983
+ background: color-mix(in srgb, var(--accent) 8%, transparent);
1984
+ }
1985
+ .xfce-tools-icon {
1986
+ font-size: 14px;
1987
+ width: 18px;
1988
+ text-align: center;
1989
+ flex-shrink: 0;
1990
+ }
1991
+
1992
+ /* ════════════════════════════════════════════════════════════
1993
+ XFCE — MOBILE (≤ 640px)
1994
+ ════════════════════════════════════════════════════════════ */
1995
+ @media (max-width: 640px) {
1996
+
1997
+ /* Reduce chrome heights */
1998
+ html[data-style="xfce"] {
1999
+ --sb-h: 22px;
2000
+ --dock-h: 62px;
2001
+ --dock-item-base: 38px;
2002
+ }
2003
+
2004
+ /* Status bar: hide center on small screens */
2005
+ .xfce-sb-center { display: none; }
2006
+ .xfce-sb { padding: 0 10px; }
2007
+
2008
+ /* ── Dock → full-width bottom tab bar ── */
2009
+ .xfce-dock {
2010
+ bottom: 0;
2011
+ left: 0;
2012
+ right: 0;
2013
+ transform: none;
2014
+ border-radius: 0;
2015
+ border-left: none;
2016
+ border-right: none;
2017
+ border-bottom: none;
2018
+ padding: 4px 6px;
2019
+ padding-bottom: max(4px, env(safe-area-inset-bottom));
2020
+ justify-content: center;
2021
+ }
2022
+ .xfce-dock-inner {
2023
+ gap: 2px;
2024
+ overflow-x: auto;
2025
+ scrollbar-width: none;
2026
+ -webkit-overflow-scrolling: touch;
2027
+ }
2028
+ .xfce-dock-inner::-webkit-scrollbar { display: none; }
2029
+ .xfce-dock-group { gap: 2px; }
2030
+ .xfce-dock-sep { margin: 0 3px; }
2031
+
2032
+ /* Hide labels — save horizontal space */
2033
+ .xfce-dock-lbl { display: none; }
2034
+
2035
+ /* Tighter item padding */
2036
+ .xfce-dock-item {
2037
+ padding: 6px 4px 4px;
2038
+ }
2039
+
2040
+ /* No magnification on touch — keep scale neutral */
2041
+ .xfce-dock-item { transform: none !important; }
2042
+
2043
+ /* ── Main content: compact padding ── */
2044
+ html[data-style="xfce"] .main {
2045
+ padding-left: 16px !important;
2046
+ padding-right: 16px !important;
2047
+ padding-top: calc(var(--sb-h) + 14px) !important;
2048
+ gap: 12px;
2049
+ }
2050
+
2051
+ /* ── Dashboard grid: single column ── */
2052
+ html[data-style="xfce"] .main:has(.stats-row) {
2053
+ grid-template-columns: 1fr !important;
2054
+ grid-template-rows: unset !important;
2055
+ grid-auto-rows: auto !important;
2056
+ grid-template-areas:
2057
+ "hero"
2058
+ "stats"
2059
+ "dash"
2060
+ "ws" !important;
2061
+ }
2062
+ /* Prevent grid children expanding beyond track width */
2063
+ html[data-style="xfce"] .main > * {
2064
+ min-width: 0;
2065
+ }
2066
+
2067
+ /* Stats: 2×2 grid on mobile */
2068
+ html[data-style="xfce"] .stats-row.glass-card {
2069
+ display: grid !important;
2070
+ grid-template-columns: 1fr 1fr !important;
2071
+ flex-direction: unset !important;
2072
+ overflow: visible !important;
2073
+ height: auto !important;
2074
+ }
2075
+ html[data-style="xfce"] .stat-cell {
2076
+ border-right: none !important;
2077
+ border-bottom: 1px solid var(--glass-border) !important;
2078
+ flex: unset !important;
2079
+ }
2080
+ html[data-style="xfce"] .stat-cell:nth-child(odd) {
2081
+ border-right: 1px solid var(--glass-border) !important;
2082
+ }
2083
+ html[data-style="xfce"] .stat-cell:nth-last-child(-n+2) {
2084
+ border-bottom: none !important;
2085
+ }
2086
+
2087
+ /* Dash-content: stack recently edited + collections vertically */
2088
+ html[data-style="xfce"] .dash-content {
2089
+ grid-template-columns: 1fr !important;
2090
+ overflow: visible !important;
2091
+ }
2092
+ html[data-style="xfce"] .content-main {
2093
+ border-right: none !important;
2094
+ border-bottom: 1px solid var(--glass-border);
2095
+ padding: 16px !important;
2096
+ }
2097
+ /* Entry rows: hide date column, keep name + status */
2098
+ html[data-style="xfce"] .content-main .entry-row {
2099
+ grid-template-columns: 1fr 72px !important;
2100
+ gap: 8px !important;
2101
+ }
2102
+ html[data-style="xfce"] .content-main .entry-date {
2103
+ display: none !important;
2104
+ }
2105
+
2106
+ /* ── HUD: full-width slide-in ── */
2107
+ .xfce-hud {
2108
+ width: 100%;
2109
+ right: -100%;
2110
+ }
2111
+ .xfce-hud.open { right: 0; }
2112
+
2113
+ /* ── Workspace overlay: full available height ── */
2114
+ .xfce-ws-overlay {
2115
+ width: 94vw;
2116
+ height: calc(100dvh - var(--sb-h) - var(--dock-h) - 20px);
2117
+ bottom: calc(var(--dock-h) + 10px);
2118
+ }
2119
+
2120
+ /* ── Tools popup: center on mobile ── */
2121
+ .xfce-tools-popup {
2122
+ left: 50% !important;
2123
+ transform: translateX(-50%);
2124
+ bottom: calc(var(--dock-h) + 8px);
2125
+ }
2126
+
2127
+ /* ── Focus mode: full width ── */
2128
+ html[data-style="xfce"] .xfce-in-focus {
2129
+ left: 3vw !important;
2130
+ width: 94vw !important;
2131
+ }
2132
+
2133
+ /* ── Workspace: stack panels vertically on mobile ── */
2134
+ html[data-style="xfce"] .workspace {
2135
+ grid-template-columns: 1fr !important;
2136
+ }
2137
+ html[data-style="xfce"] .ws-panel {
2138
+ padding: 16px !important;
2139
+ }
2140
+ html[data-style="xfce"] .ws-panel + .ws-panel {
2141
+ border-left: none !important;
2142
+ border-top: 1px solid var(--glass-border);
2143
+ }
2144
+
2145
+ /* ── Hero: smaller title, tighter padding ── */
2146
+ html[data-style="xfce"] .hero.glass-card {
2147
+ padding: 18px 20px 16px !important;
2148
+ flex-direction: column !important;
2149
+ align-items: flex-start !important;
2150
+ gap: 10px !important;
2151
+ /* overflow:hidden + grid = row collapses to 0 min-size; clip avoids that */
2152
+ overflow: clip !important;
2153
+ align-self: start !important;
2154
+ }
2155
+ html[data-style="xfce"] .hero-site {
2156
+ font-size: 20px !important;
2157
+ }
2158
+ html[data-style="xfce"] .hero-date {
2159
+ font-size: 10px !important;
2160
+ }
2161
+
2162
+ /* ── Page header: tighter ── */
2163
+ html[data-style="xfce"] .page-header {
2164
+ padding: 14px 16px !important;
2165
+ }
2166
+ }