anentrypoint-design 0.0.140 → 0.0.142
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/app-shell.css +332 -45
- package/colors_and_type.css +2 -1
- package/dist/247420.css +334 -46
- package/dist/247420.js +8 -8
- package/package.json +1 -1
- package/src/kits/os/about-app.js +1 -2
- package/src/kits/os/freddie-dashboard.js +2 -2
- package/src/kits/os/theme.css +284 -0
package/dist/247420.css
CHANGED
|
@@ -177,7 +177,8 @@
|
|
|
177
177
|
outline-offset: 2px;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
.ds-247420[data-theme="ink"]
|
|
180
|
+
.ds-247420[data-theme="ink"],
|
|
181
|
+
.ds-247420[data-theme="dark"] {
|
|
181
182
|
--bg: var(--ink);
|
|
182
183
|
--bg-2: var(--ink-2);
|
|
183
184
|
--bg-3: #464650;
|
|
@@ -945,17 +946,18 @@
|
|
|
945
946
|
|
|
946
947
|
/* File Grid */
|
|
947
948
|
.ds-247420 .ds-file-grid {
|
|
948
|
-
display:
|
|
949
|
-
|
|
950
|
-
gap:
|
|
949
|
+
display: flex;
|
|
950
|
+
flex-direction: column;
|
|
951
|
+
gap: 3px;
|
|
951
952
|
}
|
|
952
953
|
.ds-247420 .ds-file-row {
|
|
953
|
-
grid-template-columns:
|
|
954
|
+
grid-template-columns: 22px minmax(0, 1fr) auto;
|
|
954
955
|
gap: 10px; padding: 10px 12px;
|
|
955
956
|
font-size: var(--fs-xs);
|
|
956
957
|
}
|
|
957
|
-
|
|
958
|
-
.ds-247420 .ds-file-row .
|
|
958
|
+
/* On mobile, fold meta under the title and keep actions inline. */
|
|
959
|
+
.ds-247420 .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
960
|
+
.ds-247420 .ds-file-row .ds-file-actions { opacity: 1; }
|
|
959
961
|
|
|
960
962
|
/* Chat */
|
|
961
963
|
.ds-247420 .chat-stack { max-width: 100%; min-width: 0; }
|
|
@@ -1061,14 +1063,9 @@
|
|
|
1061
1063
|
.ds-247420 h2, .ds-247420 .t-h2 { font-size: clamp(20px, 4cqi, 36px); }
|
|
1062
1064
|
.ds-247420 h3, .ds-247420 .t-h3 { font-size: clamp(18px, 3.5cqi, 28px); }
|
|
1063
1065
|
|
|
1064
|
-
/* File
|
|
1065
|
-
.ds-247420 .ds-file-grid {
|
|
1066
|
-
display: grid;
|
|
1067
|
-
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
1068
|
-
gap: var(--space-3);
|
|
1069
|
-
}
|
|
1066
|
+
/* File list — single column rows on tablet (cards only via data-columns) */
|
|
1070
1067
|
.ds-247420 .ds-file-row {
|
|
1071
|
-
grid-template-columns: 24px 1fr auto;
|
|
1068
|
+
grid-template-columns: 24px minmax(0, 1fr) auto auto;
|
|
1072
1069
|
gap: 12px; padding: 12px 14px;
|
|
1073
1070
|
}
|
|
1074
1071
|
|
|
@@ -1110,13 +1107,6 @@
|
|
|
1110
1107
|
Desktop Breakpoint Enhancements (1025px and up)
|
|
1111
1108
|
────────────────────────────────────────────────────────────────────── */
|
|
1112
1109
|
@media (min-width: 1025px) {
|
|
1113
|
-
/* File Grid — 3-4 columns on desktop */
|
|
1114
|
-
.ds-247420 .ds-file-grid {
|
|
1115
|
-
display: grid;
|
|
1116
|
-
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
1117
|
-
gap: var(--space-4);
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
1110
|
/* Chat Bubbles */
|
|
1121
1111
|
.ds-247420 .chat-stack { max-width: min(70%, 480px); }
|
|
1122
1112
|
.ds-247420 .chat-bubble {
|
|
@@ -1145,43 +1135,341 @@
|
|
|
1145
1135
|
File surface — responsive grid + row layouts
|
|
1146
1136
|
============================================================ */
|
|
1147
1137
|
|
|
1148
|
-
/* Default file grid —
|
|
1138
|
+
/* Default file grid — a vertical list of rows. Each row lays out its own
|
|
1139
|
+
columns internally; the container only stacks them. Card mode (multi-column)
|
|
1140
|
+
is opt-in via [data-columns]. */
|
|
1149
1141
|
.ds-247420 .ds-file-grid {
|
|
1150
|
-
display:
|
|
1151
|
-
|
|
1152
|
-
gap:
|
|
1153
|
-
/* Responsive via container queries in media breakpoints below */
|
|
1142
|
+
display: flex;
|
|
1143
|
+
flex-direction: column;
|
|
1144
|
+
gap: 4px;
|
|
1154
1145
|
}
|
|
1155
1146
|
|
|
1156
|
-
/* File row — linear layout (
|
|
1147
|
+
/* File row — linear layout (icon · title · meta · actions) */
|
|
1157
1148
|
.ds-247420 .ds-file-row {
|
|
1158
|
-
display: grid; grid-template-columns:
|
|
1149
|
+
display: grid; grid-template-columns: 26px minmax(0, 1fr) auto auto;
|
|
1159
1150
|
gap: 14px; align-items: center;
|
|
1160
|
-
padding:
|
|
1151
|
+
padding: 11px 16px; background: var(--bg);
|
|
1152
|
+
border: var(--bw-hair) solid transparent;
|
|
1161
1153
|
border-radius: var(--r-2); color: var(--fg);
|
|
1162
|
-
|
|
1154
|
+
cursor: pointer;
|
|
1155
|
+
transition: background var(--dur-snap) var(--ease),
|
|
1156
|
+
border-color var(--dur-snap) var(--ease),
|
|
1157
|
+
transform var(--dur-snap) var(--ease);
|
|
1158
|
+
}
|
|
1159
|
+
.ds-247420 .ds-file-row:hover {
|
|
1160
|
+
background: var(--bg-2);
|
|
1161
|
+
border-color: var(--rule);
|
|
1162
|
+
}
|
|
1163
|
+
.ds-247420 .ds-file-row:active { transform: translateY(1px); }
|
|
1164
|
+
.ds-247420 .ds-file-row.active { background: var(--accent-tint); border-color: var(--accent); }
|
|
1165
|
+
.ds-247420 .ds-file-row[data-file-type="dir"] { border-left-width: 3px; border-left-color: var(--accent); }
|
|
1166
|
+
.ds-247420 .ds-file-row[data-file-type="image"] { border-left-width: 3px; border-left-color: var(--mascot); }
|
|
1167
|
+
.ds-247420 .ds-file-row[data-file-type="video"] { border-left-width: 3px; border-left-color: var(--purple-2); }
|
|
1168
|
+
.ds-247420 .ds-file-row[data-file-type="audio"] { border-left-width: 3px; border-left-color: var(--sky); }
|
|
1169
|
+
.ds-247420 .ds-file-row[data-file-type="code"] { border-left-width: 3px; border-left-color: var(--green-2); }
|
|
1170
|
+
.ds-247420 .ds-file-row[data-file-type="text"] { border-left-width: 3px; border-left-color: var(--ink-3); }
|
|
1171
|
+
.ds-247420 .ds-file-row[data-file-type="archive"] { border-left-width: 3px; border-left-color: var(--flame); }
|
|
1172
|
+
.ds-247420 .ds-file-row[data-file-type="document"] { border-left-width: 3px; border-left-color: var(--sun); }
|
|
1173
|
+
.ds-247420 .ds-file-row[data-file-type="symlink"] { border-left-width: 3px; border-left-color: var(--purple); }
|
|
1174
|
+
.ds-247420 .ds-file-row[data-file-type="other"] { border-left-width: 3px; border-left-color: var(--fg-3); }
|
|
1175
|
+
|
|
1176
|
+
/* Row internals — these are the classes FileRow actually renders. */
|
|
1177
|
+
.ds-247420 .ds-file-row .title {
|
|
1178
|
+
font-weight: 500; font-size: var(--fs-sm);
|
|
1179
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
1180
|
+
min-width: 0;
|
|
1181
|
+
}
|
|
1182
|
+
.ds-247420 .ds-file-row .code {
|
|
1183
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro);
|
|
1184
|
+
color: var(--fg-3);
|
|
1185
|
+
}
|
|
1186
|
+
.ds-247420 .ds-file-row .ds-file-meta {
|
|
1187
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
1188
|
+
color: var(--fg-3); white-space: nowrap;
|
|
1163
1189
|
}
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
.ds-247420 .ds-file-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
.ds-247420 .ds-file-row[data-file-type="
|
|
1172
|
-
.ds-247420 .ds-file-row[data-file-type="
|
|
1173
|
-
.ds-247420 .ds-file-row[data-file-type="
|
|
1174
|
-
.ds-247420 .ds-file-row[data-file-type="
|
|
1175
|
-
.ds-247420 .ds-file-row
|
|
1176
|
-
.ds-247420 .ds-file-row
|
|
1177
|
-
.ds-247420 .ds-file-row .
|
|
1178
|
-
|
|
1179
|
-
/*
|
|
1190
|
+
|
|
1191
|
+
/* File icon — glyph chip, tinted per type. */
|
|
1192
|
+
.ds-247420 .ds-file-icon {
|
|
1193
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1194
|
+
width: 26px; height: 26px; font-size: 15px; line-height: 1;
|
|
1195
|
+
color: var(--fg-2);
|
|
1196
|
+
}
|
|
1197
|
+
.ds-247420 .ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent); }
|
|
1198
|
+
.ds-247420 .ds-file-row[data-file-type="image"] .ds-file-icon { color: var(--mascot); }
|
|
1199
|
+
.ds-247420 .ds-file-row[data-file-type="video"] .ds-file-icon { color: var(--purple-2); }
|
|
1200
|
+
.ds-247420 .ds-file-row[data-file-type="audio"] .ds-file-icon { color: var(--sky); }
|
|
1201
|
+
.ds-247420 .ds-file-row[data-file-type="code"] .ds-file-icon { color: var(--green-2); }
|
|
1202
|
+
.ds-247420 .ds-file-row[data-file-type="archive"] .ds-file-icon { color: var(--flame); }
|
|
1203
|
+
.ds-247420 .ds-file-row[data-file-type="document"] .ds-file-icon { color: var(--sun); }
|
|
1204
|
+
|
|
1205
|
+
/* Row actions — hidden until hover/focus, revealed without layout shift. */
|
|
1206
|
+
.ds-247420 .ds-file-actions {
|
|
1207
|
+
display: inline-flex; gap: 2px; align-items: center;
|
|
1208
|
+
opacity: 0; transition: opacity var(--dur-base) var(--ease);
|
|
1209
|
+
}
|
|
1210
|
+
.ds-247420 .ds-file-row:hover .ds-file-actions,
|
|
1211
|
+
.ds-247420 .ds-file-row:focus-within .ds-file-actions { opacity: 1; }
|
|
1212
|
+
.ds-247420 .ds-file-act {
|
|
1213
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1214
|
+
width: 28px; height: 28px; padding: 0;
|
|
1215
|
+
background: transparent; border: 0; border-radius: var(--r-1);
|
|
1216
|
+
color: var(--fg-3); font-size: 14px; cursor: pointer;
|
|
1217
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1218
|
+
}
|
|
1219
|
+
.ds-247420 .ds-file-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
1220
|
+
.ds-247420 .ds-file-act-warn:hover { background: color-mix(in oklab, var(--warn) 18%, var(--bg)); color: var(--warn); }
|
|
1221
|
+
|
|
1222
|
+
/* Card mode — opt-in via data-columns; switches the list to a grid. */
|
|
1223
|
+
.ds-247420 .ds-file-grid[data-columns] { display: grid; gap: var(--space-3); }
|
|
1180
1224
|
.ds-247420 .ds-file-grid[data-columns="1"] { grid-template-columns: 1fr; }
|
|
1181
1225
|
.ds-247420 .ds-file-grid[data-columns="2"] { grid-template-columns: repeat(2, 1fr); }
|
|
1182
1226
|
.ds-247420 .ds-file-grid[data-columns="3"] { grid-template-columns: repeat(3, 1fr); }
|
|
1183
1227
|
.ds-247420 .ds-file-grid[data-columns="4"] { grid-template-columns: repeat(4, 1fr); }
|
|
1184
1228
|
|
|
1229
|
+
/* ============================================================
|
|
1230
|
+
File browser surface — stage, toolbar, breadcrumb, dropzone,
|
|
1231
|
+
upload progress, empty state, modals, preview. Authored for
|
|
1232
|
+
fsbrowse but lives in the shared kit under .ds-247420 scope.
|
|
1233
|
+
============================================================ */
|
|
1234
|
+
|
|
1235
|
+
/* Stage — the scrollable content column. */
|
|
1236
|
+
.ds-247420 .ds-file-stage {
|
|
1237
|
+
display: flex; flex-direction: column; gap: var(--space-3);
|
|
1238
|
+
width: 100%; max-width: 920px; margin: 0 auto;
|
|
1239
|
+
padding: var(--space-2) var(--space-3) var(--space-4);
|
|
1240
|
+
}
|
|
1241
|
+
/* When the stage is the app-main child, the shell already supplies top
|
|
1242
|
+
padding — collapse the stage's own so content isn't pushed down. */
|
|
1243
|
+
.ds-247420 .app-main > div > .ds-file-stage,
|
|
1244
|
+
.ds-247420 .app-main .ds-file-stage { padding-top: 0; }
|
|
1245
|
+
|
|
1246
|
+
/* Breadcrumb path */
|
|
1247
|
+
.ds-247420 .ds-crumb-path {
|
|
1248
|
+
display: flex; align-items: center; flex-wrap: wrap; gap: 2px;
|
|
1249
|
+
font-size: var(--fs-sm);
|
|
1250
|
+
}
|
|
1251
|
+
.ds-247420 .ds-crumb-seg {
|
|
1252
|
+
background: transparent; border: 0; cursor: pointer;
|
|
1253
|
+
padding: 4px 8px; border-radius: var(--r-1);
|
|
1254
|
+
color: var(--fg-3); font-family: inherit; font-size: var(--fs-sm);
|
|
1255
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1256
|
+
}
|
|
1257
|
+
.ds-247420 .ds-crumb-seg:hover { background: var(--bg-2); color: var(--fg); }
|
|
1258
|
+
.ds-247420 .ds-crumb-seg.leaf { color: var(--fg); font-weight: 600; }
|
|
1259
|
+
.ds-247420 .ds-crumb-sep { color: var(--fg-3); opacity: 0.6; user-select: none; }
|
|
1260
|
+
|
|
1261
|
+
/* Toolbar */
|
|
1262
|
+
.ds-247420 .ds-file-toolbar {
|
|
1263
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
1264
|
+
gap: var(--space-2); flex-wrap: wrap;
|
|
1265
|
+
}
|
|
1266
|
+
.ds-247420 .ds-file-toolbar-left,
|
|
1267
|
+
.ds-247420 .ds-file-toolbar-right {
|
|
1268
|
+
display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
|
|
1269
|
+
}
|
|
1270
|
+
.ds-247420 .ds-meta-mono {
|
|
1271
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
1272
|
+
color: var(--fg-3); letter-spacing: var(--tr-caps);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
/* Error banner — dismissible toast row. */
|
|
1276
|
+
.ds-247420 .ds-error-banner {
|
|
1277
|
+
padding: 10px 14px; border-radius: var(--r-2);
|
|
1278
|
+
background: color-mix(in oklab, var(--warn) 14%, var(--bg));
|
|
1279
|
+
border: var(--bw-hair) solid color-mix(in oklab, var(--warn) 40%, transparent);
|
|
1280
|
+
color: var(--warn); font-size: var(--fs-sm); cursor: pointer;
|
|
1281
|
+
}
|
|
1282
|
+
.ds-247420 .ds-error-banner:hover { background: color-mix(in oklab, var(--warn) 20%, var(--bg)); }
|
|
1283
|
+
|
|
1284
|
+
/* Dropzone */
|
|
1285
|
+
.ds-247420 .ds-dropzone {
|
|
1286
|
+
border: var(--bw-rule) dashed var(--rule);
|
|
1287
|
+
border-radius: var(--r-3); background: var(--bg);
|
|
1288
|
+
transition: border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
|
|
1289
|
+
}
|
|
1290
|
+
.ds-247420 .ds-dropzone-inner {
|
|
1291
|
+
display: flex; align-items: center; justify-content: center;
|
|
1292
|
+
gap: var(--space-2); flex-wrap: wrap;
|
|
1293
|
+
padding: var(--space-4) var(--space-3); text-align: center;
|
|
1294
|
+
}
|
|
1295
|
+
.ds-247420 .ds-dropzone-glyph { font-size: 22px; color: var(--fg-3); }
|
|
1296
|
+
.ds-247420 .ds-dropzone-label { font-size: var(--fs-sm); color: var(--fg-3); }
|
|
1297
|
+
.ds-247420 .ds-dropzone.dragover {
|
|
1298
|
+
border-color: var(--accent);
|
|
1299
|
+
background: var(--accent-tint);
|
|
1300
|
+
}
|
|
1301
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1302
|
+
.ds-247420 .ds-dropzone.dragover { animation: ds-dropzone-pulse 1.1s var(--ease) infinite; }
|
|
1303
|
+
}
|
|
1304
|
+
.ds-247420 .ds-dropzone.dragover .ds-dropzone-glyph,
|
|
1305
|
+
.ds-247420 .ds-dropzone.dragover .ds-dropzone-label { color: var(--accent); }
|
|
1306
|
+
@keyframes ds-dropzone-pulse {
|
|
1307
|
+
0%, 100% { border-color: var(--accent); }
|
|
1308
|
+
50% { border-color: color-mix(in oklab, var(--accent) 45%, transparent); }
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
/* Upload progress */
|
|
1312
|
+
.ds-247420 .ds-upload-progress { display: flex; flex-direction: column; gap: 6px; }
|
|
1313
|
+
.ds-247420 .ds-upload-item {
|
|
1314
|
+
display: grid; grid-template-columns: minmax(0, 1fr) 120px 44px;
|
|
1315
|
+
gap: var(--space-2); align-items: center;
|
|
1316
|
+
padding: 8px 12px; border-radius: var(--r-2);
|
|
1317
|
+
background: var(--bg-2); font-size: var(--fs-xs);
|
|
1318
|
+
}
|
|
1319
|
+
.ds-247420 .ds-upload-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1320
|
+
.ds-247420 .ds-upload-bar {
|
|
1321
|
+
height: 6px; border-radius: var(--r-pill);
|
|
1322
|
+
background: var(--bg-3); overflow: hidden;
|
|
1323
|
+
}
|
|
1324
|
+
.ds-247420 .ds-upload-fill {
|
|
1325
|
+
display: block; height: 100%; width: 0;
|
|
1326
|
+
background: var(--accent); border-radius: var(--r-pill);
|
|
1327
|
+
transition: width var(--dur-base) var(--ease);
|
|
1328
|
+
}
|
|
1329
|
+
.ds-247420 .ds-upload-pct {
|
|
1330
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro);
|
|
1331
|
+
color: var(--fg-3); text-align: right;
|
|
1332
|
+
}
|
|
1333
|
+
.ds-247420 .ds-upload-item.done .ds-upload-fill { background: var(--success); }
|
|
1334
|
+
.ds-247420 .ds-upload-item.done .ds-upload-pct { color: var(--success); }
|
|
1335
|
+
.ds-247420 .ds-upload-item.error .ds-upload-fill { background: var(--warn); }
|
|
1336
|
+
.ds-247420 .ds-upload-item.error .ds-upload-pct { color: var(--warn); }
|
|
1337
|
+
|
|
1338
|
+
/* Empty state */
|
|
1339
|
+
.ds-247420 .ds-file-empty {
|
|
1340
|
+
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
1341
|
+
gap: var(--space-2); padding: var(--space-6) var(--space-3);
|
|
1342
|
+
color: var(--fg-3); text-align: center;
|
|
1343
|
+
}
|
|
1344
|
+
.ds-247420 .ds-file-empty-glyph { font-size: 34px; opacity: 0.55; }
|
|
1345
|
+
.ds-247420 .ds-file-empty-text { font-size: var(--fs-sm); }
|
|
1346
|
+
|
|
1347
|
+
/* ── Modals ───────────────────────────────────────────────── */
|
|
1348
|
+
.ds-247420 .ds-modal-backdrop {
|
|
1349
|
+
position: fixed; inset: 0; z-index: var(--z-modal, 800);
|
|
1350
|
+
display: flex; align-items: center; justify-content: center;
|
|
1351
|
+
padding: var(--space-3);
|
|
1352
|
+
background: color-mix(in oklab, var(--ink) 55%, transparent);
|
|
1353
|
+
backdrop-filter: blur(3px);
|
|
1354
|
+
}
|
|
1355
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1356
|
+
.ds-247420 .ds-modal-backdrop { animation: ds-modal-fade var(--dur-base) var(--ease); }
|
|
1357
|
+
}
|
|
1358
|
+
@keyframes ds-modal-fade { from { opacity: 0; } to { opacity: 1; } }
|
|
1359
|
+
.ds-247420 .ds-modal {
|
|
1360
|
+
display: flex; flex-direction: column;
|
|
1361
|
+
width: 100%; max-width: 460px; max-height: calc(100vh - 2 * var(--space-4));
|
|
1362
|
+
background: var(--bg); color: var(--fg);
|
|
1363
|
+
border: var(--bw-hair) solid var(--rule);
|
|
1364
|
+
border-radius: var(--r-3); box-shadow: var(--shadow-3);
|
|
1365
|
+
overflow: hidden;
|
|
1366
|
+
}
|
|
1367
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1368
|
+
.ds-247420 .ds-modal { animation: ds-modal-rise var(--dur-base) var(--ease); }
|
|
1369
|
+
}
|
|
1370
|
+
@keyframes ds-modal-rise {
|
|
1371
|
+
from { opacity: 0; transform: translateY(8px) scale(0.98); }
|
|
1372
|
+
to { opacity: 1; transform: none; }
|
|
1373
|
+
}
|
|
1374
|
+
.ds-247420 .ds-modal-small { max-width: 380px; }
|
|
1375
|
+
.ds-247420 .ds-modal-preview { max-width: 880px; }
|
|
1376
|
+
.ds-247420 .ds-modal-head {
|
|
1377
|
+
padding: var(--space-3) var(--space-4);
|
|
1378
|
+
font-weight: 600; font-size: var(--fs-body);
|
|
1379
|
+
border-bottom: var(--bw-hair) solid var(--rule);
|
|
1380
|
+
}
|
|
1381
|
+
.ds-247420 .ds-modal-body { padding: var(--space-4); overflow: auto; font-size: var(--fs-sm); }
|
|
1382
|
+
.ds-247420 .ds-modal-actions {
|
|
1383
|
+
display: flex; justify-content: flex-end; gap: var(--space-2);
|
|
1384
|
+
padding: var(--space-3) var(--space-4);
|
|
1385
|
+
border-top: var(--bw-hair) solid var(--rule);
|
|
1386
|
+
}
|
|
1387
|
+
.ds-247420 .ds-modal-input {
|
|
1388
|
+
width: 100%; padding: 10px 12px;
|
|
1389
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--rule);
|
|
1390
|
+
border-radius: var(--r-2); color: var(--fg);
|
|
1391
|
+
font-family: inherit; font-size: var(--fs-sm);
|
|
1392
|
+
}
|
|
1393
|
+
.ds-247420 .ds-modal-input:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1394
|
+
.ds-247420 .btn-primary.danger {
|
|
1395
|
+
background: var(--warn);
|
|
1396
|
+
border-color: var(--warn);
|
|
1397
|
+
color: #fff;
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
/* ── Preview ──────────────────────────────────────────────── */
|
|
1401
|
+
.ds-247420 .ds-preview-head {
|
|
1402
|
+
display: flex; align-items: center; gap: var(--space-3);
|
|
1403
|
+
padding: var(--space-3) var(--space-4);
|
|
1404
|
+
border-bottom: var(--bw-hair) solid var(--rule);
|
|
1405
|
+
}
|
|
1406
|
+
.ds-247420 .ds-preview-name {
|
|
1407
|
+
font-weight: 600; font-size: var(--fs-body);
|
|
1408
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
|
|
1409
|
+
}
|
|
1410
|
+
.ds-247420 .ds-preview-meta {
|
|
1411
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
1412
|
+
color: var(--fg-3); white-space: nowrap;
|
|
1413
|
+
}
|
|
1414
|
+
.ds-247420 .ds-preview-actions { display: inline-flex; gap: 2px; margin-left: auto; }
|
|
1415
|
+
.ds-247420 .ds-preview-body {
|
|
1416
|
+
flex: 1; min-height: 0; overflow: auto;
|
|
1417
|
+
padding: var(--space-3) var(--space-4);
|
|
1418
|
+
display: flex; flex-direction: column;
|
|
1419
|
+
}
|
|
1420
|
+
.ds-247420 .ds-preview-media {
|
|
1421
|
+
max-width: 100%; max-height: 70vh; margin: 0 auto;
|
|
1422
|
+
border-radius: var(--r-2); object-fit: contain;
|
|
1423
|
+
}
|
|
1424
|
+
.ds-247420 .ds-preview-audio { width: 100%; }
|
|
1425
|
+
.ds-247420 .ds-preview-code,
|
|
1426
|
+
.ds-247420 .ds-preview-text {
|
|
1427
|
+
margin: 0; flex: 1; min-height: 0; overflow: auto;
|
|
1428
|
+
padding: var(--space-3);
|
|
1429
|
+
background: var(--ink); color: var(--paper);
|
|
1430
|
+
border-radius: var(--r-2);
|
|
1431
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs); line-height: var(--lh-base);
|
|
1432
|
+
white-space: pre; tab-size: 2;
|
|
1433
|
+
}
|
|
1434
|
+
.ds-247420 .ds-preview-text { white-space: pre-wrap; word-break: break-word; }
|
|
1435
|
+
.ds-247420 .ds-preview-code code, .ds-247420 .ds-preview-text code { font: inherit; color: inherit; background: none; }
|
|
1436
|
+
.ds-247420 .ds-preview-truncated {
|
|
1437
|
+
margin-top: var(--space-2); padding-top: var(--space-2);
|
|
1438
|
+
border-top: var(--bw-hair) solid color-mix(in oklab, var(--paper) 20%, transparent);
|
|
1439
|
+
color: var(--paper-3); font-size: var(--fs-micro);
|
|
1440
|
+
}
|
|
1441
|
+
.ds-247420 .ds-preview-fallback {
|
|
1442
|
+
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
1443
|
+
gap: var(--space-2); padding: var(--space-6); color: var(--fg-3);
|
|
1444
|
+
}
|
|
1445
|
+
.ds-247420 .ds-preview-glyph { font-size: 34px; opacity: 0.6; }
|
|
1446
|
+
|
|
1447
|
+
/* Thin scrollbars inside preview bodies. */
|
|
1448
|
+
.ds-247420 .ds-preview-code, .ds-247420 .ds-preview-text, .ds-247420 .ds-modal-body, .ds-247420 .ds-preview-body {
|
|
1449
|
+
scrollbar-width: thin;
|
|
1450
|
+
}
|
|
1451
|
+
.ds-247420 .ds-preview-code::-webkit-scrollbar,
|
|
1452
|
+
.ds-247420 .ds-preview-text::-webkit-scrollbar,
|
|
1453
|
+
.ds-247420 .ds-preview-body::-webkit-scrollbar,
|
|
1454
|
+
.ds-247420 .ds-modal-body::-webkit-scrollbar { width: 10px; height: 10px; }
|
|
1455
|
+
.ds-247420 .ds-preview-code::-webkit-scrollbar-thumb,
|
|
1456
|
+
.ds-247420 .ds-preview-text::-webkit-scrollbar-thumb {
|
|
1457
|
+
background: color-mix(in oklab, var(--paper) 28%, transparent);
|
|
1458
|
+
border-radius: var(--r-pill); border: 2px solid transparent; background-clip: padding-box;
|
|
1459
|
+
}
|
|
1460
|
+
.ds-247420 .ds-preview-body::-webkit-scrollbar-thumb,
|
|
1461
|
+
.ds-247420 .ds-modal-body::-webkit-scrollbar-thumb {
|
|
1462
|
+
background: var(--bg-3); border-radius: var(--r-pill);
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
/* Mobile — modals go near-fullscreen, preview media shrinks. */
|
|
1466
|
+
@media (max-width: 560px) {
|
|
1467
|
+
.ds-247420 .ds-modal { max-width: 100%; max-height: calc(100vh - 2 * var(--space-3)); }
|
|
1468
|
+
.ds-247420 .ds-modal-preview { width: 100%; height: calc(100vh - 2 * var(--space-3)); max-height: none; }
|
|
1469
|
+
.ds-247420 .ds-preview-media { max-height: 50vh; }
|
|
1470
|
+
.ds-247420 .ds-file-stage { padding: var(--space-3) var(--space-2); }
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1185
1473
|
/* ============================================================
|
|
1186
1474
|
Theme toggle (segmented + compact) — bound to src/theme.js
|
|
1187
1475
|
============================================================ */
|