Spaces:
Running
Running
File size: 34,440 Bytes
0631870 457ac40 0631870 457ac40 67ae379 457ac40 0631870 457ac40 90ce97b 457ac40 90ce97b 457ac40 90ce97b f8669ab 57b5792 796081d 57b5792 f8669ab 796081d f8669ab 457ac40 0631870 457ac40 0631870 457ac40 0ed8fd9 457ac40 0631870 457ac40 0ed8fd9 457ac40 0ed8fd9 90ce97b 0ed8fd9 90ce97b 0ed8fd9 90ce97b 0ed8fd9 90ce97b 0ed8fd9 90ce97b 0ed8fd9 90ce97b 0ed8fd9 90ce97b 0ed8fd9 457ac40 90ce97b 457ac40 90ce97b 796081d 457ac40 90ce97b 457ac40 0ed8fd9 90ce97b 796081d 90ce97b 0631870 457ac40 90ce97b 457ac40 0ed8fd9 457ac40 90ce97b 796081d 457ac40 0631870 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | :root {
color-scheme: dark;
--bg: #050c16;
--surface: rgba(12, 25, 40, 0.84);
--surface-2: #0c1a2b;
--line: rgba(142, 174, 201, 0.16);
--line-bright: rgba(71, 231, 205, 0.36);
--text: #f4f8fb;
--muted: #8499ad;
--aqua: #39e6c6;
--aqua-dark: #11ad9c;
--blue: #51a7ff;
--amber: #ffc66d;
--danger: #ff7083;
--radius: 18px;
--shadow: 0 25px 70px rgba(0, 0, 0, 0.26);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-height: 100vh; overflow-x: hidden; background: var(--bg); color: var(--text); font-family: "Poppins", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
body::before { content: ""; position: fixed; inset: 0; z-index: -3; opacity: .28; background-image: linear-gradient(rgba(87, 145, 180, .08) 1px, transparent 1px), linear-gradient(90deg, rgba(87, 145, 180, .08) 1px, transparent 1px); background-size: 48px 48px; mask-image: linear-gradient(to bottom, black, transparent 80%); }
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ambient { position: fixed; z-index: -2; border-radius: 50%; filter: blur(120px); pointer-events: none; }
.ambient-one { width: 520px; height: 520px; left: -220px; top: -200px; background: rgba(15, 111, 150, .25); }
.ambient-two { width: 480px; height: 480px; right: -230px; top: 240px; background: rgba(33, 211, 178, .11); }
.topbar { height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 max(24px, calc((100vw - 1240px) / 2)); border-bottom: 1px solid var(--line); background: rgba(5, 12, 22, .72); backdrop-filter: blur(18px); position: sticky; top: 0; z-index: 20; }
.brand { display: flex; align-items: center; gap: 12px; color: var(--text); text-decoration: none; }
.brand-icon { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--line-bright); border-radius: 13px; color: var(--aqua); background: linear-gradient(145deg, rgba(57, 230, 198, .14), rgba(81, 167, 255, .06)); box-shadow: inset 0 1px rgba(255,255,255,.05), 0 0 32px rgba(57,230,198,.08); }
.brand-icon svg { width: 24px; }
.brand > span:last-child { display: grid; gap: 2px; }
.brand strong { font-size: 15px; letter-spacing: -.01em; }
.brand small { color: var(--muted); font: 700 8px/1.1 ui-monospace, monospace; letter-spacing: .16em; }
.app-tabs { display: flex; align-items: center; gap: 4px; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.025); }
.app-tab { padding: 8px 12px; border: 0; border-radius: 8px; color: var(--muted); background: transparent; font-size: 9px; font-weight: 600; cursor: pointer; transition: .18s ease; }
.app-tab:hover { color: var(--text); }
.app-tab.active { color: #04151a; background: var(--aqua); box-shadow: 0 4px 18px rgba(57,230,198,.16); }
.topbar-actions { display: flex; gap: 12px; align-items: center; }
.model-link { display: flex; align-items: center; gap: 7px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; color: #b9c8d4; background: rgba(255,255,255,.025); font-size: 9px; font-weight: 600; text-decoration: none; }
.model-link span { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 6px; color: #101820; background: #ffd21e; font-size: 8px; font-weight: 800; }
.model-link:hover { color: var(--text); border-color: var(--line-bright); }
.system-pill { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 999px; color: #b5c4d1; font-size: 10px; background: rgba(255,255,255,.025); }
.system-pill i { width: 7px; height: 7px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 12px currentColor; }
.system-pill i.ready { background: var(--aqua); }
.system-pill i.error { background: var(--danger); }
.icon-link { width: 36px; height: 36px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 10px; color: var(--muted); }
.icon-link:hover { color: var(--text); border-color: var(--line-bright); }
.page-shell { width: min(1240px, calc(100% - 40px)); margin: 0 auto; padding: 34px 0 24px; }
.tab-panel { display: none; animation: tab-in .2s ease; }
.tab-panel.active { display: block; }
@keyframes tab-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
#tab-reader .intro { grid-template-columns: minmax(0, 1fr) 310px; align-items: center; gap: 28px; margin-bottom: 12px; }
#tab-reader .intro .kicker { margin-bottom: 5px; font-size: 7px; }
#tab-reader .intro h1 { margin-bottom: 4px; font-size: clamp(19px, 2vw, 27px); line-height: 1.1; letter-spacing: -.035em; }
#tab-reader .intro > div > p { max-width: 680px; font-size: 9px; line-height: 1.4; }
#tab-reader .model-card { padding: 12px 15px; border-radius: 14px; }
#tab-reader .model-card-head { padding-bottom: 9px; }
#tab-reader .model-orbit { width: 30px; height: 30px; }
#tab-reader .model-card dl { margin-top: 9px; }
#tab-reader .model-card dl div { gap: 2px; }
#tab-reader .upload-panel { padding: 15px; }
#tab-reader .upload-panel .section-title { margin-bottom: 10px; }
#tab-reader .drop-zone { min-height: 138px; gap: 4px; padding: 13px; }
#tab-reader .upload-symbol { width: 42px; height: 42px; margin-bottom: 2px; }
#tab-reader .drop-zone small { margin-top: 2px; }
#tab-reader .photo-guide { display: none; }
#tab-reader .range-control { gap: 5px; }
#tab-reader .range-control small { line-height: 1.3; }
#tab-reader .model-status { order: 3; margin-top: -7px; }
#tab-reader .canvas-wrap { min-height: 380px; }
.settings-strip { display: grid; grid-template-columns: 170px repeat(3, minmax(0, 1fr)); align-items: stretch; gap: 10px; margin-bottom: 14px; padding: 10px; border-color: rgba(81,167,255,.48); border-radius: 14px; background: linear-gradient(115deg, rgba(23,72,116,.72), rgba(12,37,66,.9)); box-shadow: 0 12px 34px rgba(9,63,105,.18), inset 0 1px rgba(126,204,255,.08); }
.settings-strip-title { display: flex; align-items: center; gap: 10px; }
.settings-strip-title > div { display: grid; gap: 2px; }
.settings-strip-title small { color: #8fcaff; font: 700 7px ui-monospace, monospace; letter-spacing: .12em; }
.settings-strip-title h2 { margin: 0; color: #f3f9ff; font-size: 12px; }
.settings-strip .step-number { color: #051526; border-color: #69bfff; background: #69bfff; }
.settings-strip .range-control { gap: 4px; padding: 9px 10px; border: 1px solid rgba(105,191,255,.24); border-radius: 10px; background: rgba(4,18,34,.38); }
.settings-strip .range-control > span { color: #e4f2ff; font-size: 9px; }
.settings-strip .range-control output { color: #7ee8ff; }
.settings-strip .range-control small { min-height: 18px; color: #8da9bf; font-size: 7px; line-height: 1.35; }
.intro { display: grid; grid-template-columns: minmax(0, 1fr) 350px; align-items: end; gap: 48px; margin-bottom: 38px; }
.kicker { display: flex; align-items: center; gap: 9px; margin-bottom: 15px; color: var(--aqua); font: 800 10px ui-monospace, monospace; letter-spacing: .18em; }
.kicker span { width: 22px; height: 1px; background: var(--aqua); box-shadow: 0 0 8px var(--aqua); }
h1, h2, p { margin-top: 0; }
h1 { margin-bottom: 16px; font-size: clamp(38px, 5vw, 68px); line-height: .98; letter-spacing: -.055em; font-weight: 720; }
h1 em { color: transparent; font-style: normal; background: linear-gradient(90deg, var(--aqua), #62b8ff); background-clip: text; -webkit-background-clip: text; }
.intro > div > p { max-width: 690px; margin: 0; color: var(--muted); font-size: 15px; line-height: 1.7; }
.model-card { padding: 19px; border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(145deg, rgba(16, 34, 54, .75), rgba(8, 19, 32, .85)); box-shadow: var(--shadow); }
.model-card-head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.model-card-head div { display: grid; gap: 3px; }
.model-card-head small, .section-title small { color: var(--muted); font: 700 8px ui-monospace, monospace; letter-spacing: .14em; }
.model-card-head strong { font-size: 13px; }
.model-orbit { width: 36px; height: 36px; display: grid; place-items: center; border: 1px solid rgba(57,230,198,.25); border-radius: 50%; }
.model-orbit::before { content: ""; width: 18px; height: 18px; border: 1px dashed var(--aqua); border-radius: 50%; animation: spin 5s linear infinite; }
.model-orbit i { position: absolute; width: 6px; height: 6px; border-radius: 50%; background: var(--aqua); box-shadow: 0 0 12px var(--aqua); }
.live-tag { padding: 5px 7px; border-radius: 6px; background: rgba(57,230,198,.1); color: var(--aqua); font: 800 8px ui-monospace, monospace; letter-spacing: .1em; }
.model-card dl { display: grid; grid-template-columns: repeat(3, 1fr); margin: 15px 0 0; }
.model-card dl div { display: grid; gap: 4px; padding-left: 12px; border-left: 1px solid var(--line); }
.model-card dt { color: var(--muted); font-size: 9px; }
.model-card dd { margin: 0; color: #dce7ef; font: 700 10px ui-monospace, monospace; }
@keyframes spin { to { transform: rotate(360deg); } }
.app-grid { display: grid; grid-template-columns: 360px minmax(0, 1fr); gap: 18px; align-items: start; }
.control-column, .results-column { display: grid; gap: 14px; }
.glass-panel { border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(145deg, rgba(13, 28, 45, .88), rgba(8, 19, 32, .9)); box-shadow: var(--shadow); backdrop-filter: blur(16px); }
.upload-panel, .settings-panel, .viewer-panel, .reading-panel, .digits-panel { padding: 20px; }
.section-title { display: flex; align-items: center; gap: 12px; margin-bottom: 17px; }
.section-title.compact { margin-bottom: 0; }
.section-title > div { display: grid; gap: 3px; }
.section-title h2 { margin: 0; font-size: 15px; letter-spacing: -.02em; }
.step-number { width: 30px; height: 30px; display: grid; place-items: center; border: 1px solid rgba(57,230,198,.22); border-radius: 9px; color: var(--aqua); background: rgba(57,230,198,.06); font: 800 10px ui-monospace, monospace; }
.quiet-button { margin-left: auto; padding: 6px 0; border: 0; background: transparent; color: var(--muted); font-size: 10px; cursor: pointer; }
.quiet-button:hover:not(:disabled) { color: var(--aqua); }
.quiet-button:disabled { opacity: .3; cursor: default; }
.drop-zone { position: relative; min-height: 220px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 22px; overflow: hidden; border: 1px dashed rgba(81,167,255,.36); border-radius: 14px; background: rgba(4,13,24,.56); text-align: center; cursor: pointer; transition: .18s ease; }
.drop-zone::after { content: ""; position: absolute; width: 130px; height: 130px; border-radius: 50%; background: rgba(57,230,198,.06); filter: blur(32px); }
.drop-zone:hover, .drop-zone.dragging { transform: translateY(-2px); border-color: var(--aqua); background: rgba(22,71,76,.2); }
.drop-zone input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.drop-zone > * { z-index: 1; }
.drop-zone strong { font-size: 13px; }
.drop-zone > span:not(.upload-symbol), .drop-zone small { color: var(--muted); font-size: 10px; }
.drop-zone small { margin-top: 7px; font: 700 8px ui-monospace, monospace; letter-spacing: .08em; }
.upload-symbol { width: 52px; height: 52px; display: grid; place-items: center; margin-bottom: 5px; border: 1px solid rgba(81,167,255,.24); border-radius: 15px; color: var(--blue); background: rgba(81,167,255,.09); }
.upload-symbol svg { width: 24px; }
.photo-guide { display: flex; align-items: flex-start; gap: 10px; margin-top: 13px; padding: 11px; border: 1px solid rgba(81,167,255,.12); border-radius: 10px; background: rgba(81,167,255,.045); }
.photo-guide svg { width: 15px; flex: 0 0 auto; color: var(--blue); }
.photo-guide p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.55; }
.photo-guide strong { display: block; margin-bottom: 2px; color: #cbd8e4; }
.settings-panel { display: grid; gap: 18px; }
.range-control { display: grid; gap: 8px; }
.range-control > span { display: flex; justify-content: space-between; gap: 12px; color: #c4d1dc; font-size: 10px; }
.range-control output { color: var(--aqua); font: 800 10px ui-monospace, monospace; }
.range-control small { color: #667d91; font-size: 8px; line-height: 1.45; }
.range-control small b { color: var(--amber); }
.unknown-control { padding-top: 14px; border-top: 1px solid var(--line); }
.unknown-control output { color: var(--amber); }
input[type="range"] { width: 100%; height: 4px; border-radius: 99px; appearance: none; background: linear-gradient(90deg, var(--aqua) var(--range-progress, 10%), #213349 var(--range-progress, 10%)); cursor: pointer; }
input[type="range"]::-webkit-slider-thumb { width: 15px; height: 15px; border: 3px solid #081522; border-radius: 50%; appearance: none; background: var(--aqua); box-shadow: 0 0 0 1px var(--aqua), 0 0 14px rgba(57,230,198,.45); }
.analyze-button { width: 100%; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 15px 16px; border: 0; border-radius: 14px; color: #031713; background: linear-gradient(110deg, #43e8c9, #4bb9e9); box-shadow: 0 14px 34px rgba(40,208,190,.18); cursor: pointer; text-align: left; }
.analyze-button:disabled { filter: grayscale(.45); opacity: .48; cursor: not-allowed; box-shadow: none; }
.analyze-button:not(:disabled):hover { filter: brightness(1.08); transform: translateY(-1px); }
.button-icon { width: 35px; height: 35px; display: grid; place-items: center; border-radius: 10px; background: rgba(0,0,0,.11); }
.analyze-button > span:nth-child(2) { display: grid; gap: 2px; }
.analyze-button b { font-size: 12px; }
.analyze-button small { font-size: 8px; opacity: .7; }
.button-arrow { width: 18px; }
.model-status { min-height: 16px; display: flex; align-items: center; justify-content: center; gap: 7px; color: var(--muted); font-size: 9px; text-align: center; }
.model-status i { width: 6px; height: 6px; border-radius: 50%; background: var(--aqua); }
.model-status i.loading { animation: pulse 1.1s infinite; }
.model-status i.error { background: var(--danger); }
@keyframes pulse { 50% { opacity: .25; transform: scale(.7); } }
.viewer-panel { padding-bottom: 0; overflow: hidden; }
.viewer-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 17px; }
.viewer-actions { display: flex; gap: 8px; }
.view-switch { display: flex; padding: 3px; border: 1px solid var(--line); border-radius: 9px; background: rgba(3,11,20,.5); }
.view-switch button { padding: 6px 10px; border: 0; border-radius: 6px; background: transparent; color: var(--muted); font-size: 9px; cursor: pointer; }
.view-switch button.active { background: rgba(57,230,198,.12); color: var(--aqua); }
.tool-button { display: flex; align-items: center; gap: 6px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.025); color: var(--muted); font-size: 9px; cursor: pointer; }
.tool-button svg { width: 14px; }
.tool-button:hover:not(:disabled) { color: var(--text); border-color: var(--line-bright); }
.tool-button:disabled { opacity: .35; cursor: default; }
.canvas-wrap { position: relative; min-height: 470px; display: grid; place-items: center; overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: #030914; }
.canvas-wrap::before { content: ""; position: absolute; inset: 0; opacity: .15; pointer-events: none; background-image: linear-gradient(rgba(74,164,207,.12) 1px, transparent 1px), linear-gradient(90deg, rgba(74,164,207,.12) 1px, transparent 1px); background-size: 28px 28px; }
.canvas-wrap canvas { display: block; width: 100%; height: auto; max-height: 600px; object-fit: contain; z-index: 1; }
.canvas-placeholder { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--muted); text-align: center; }
.canvas-placeholder strong { margin-top: 18px; color: #c4d1dc; font-size: 13px; }
.canvas-placeholder p { margin: 7px 0 0; font-size: 10px; }
.canvas-wrap:not(.empty) .canvas-placeholder { display: none; }
.placeholder-reticle { position: relative; width: 84px; height: 84px; }
.placeholder-reticle i { position: absolute; width: 24px; height: 24px; border-color: rgba(57,230,198,.42); border-style: solid; }
.placeholder-reticle i:nth-child(1) { left: 0; top: 0; border-width: 1px 0 0 1px; }
.placeholder-reticle i:nth-child(2) { right: 0; top: 0; border-width: 1px 1px 0 0; }
.placeholder-reticle i:nth-child(3) { left: 0; bottom: 0; border-width: 0 0 1px 1px; }
.placeholder-reticle i:nth-child(4) { right: 0; bottom: 0; border-width: 0 1px 1px 0; }
.placeholder-reticle b { position: absolute; width: 7px; height: 7px; left: 50%; top: 50%; transform: translate(-50%,-50%); border-radius: 50%; background: var(--aqua); box-shadow: 0 0 18px var(--aqua); }
.scan-overlay { display: none; position: absolute; z-index: 3; inset: 0; pointer-events: none; background: linear-gradient(to bottom, transparent, rgba(57,230,198,.04), transparent); }
.canvas-wrap.scanning .scan-overlay { display: block; }
.scan-overlay span { position: absolute; left: 0; right: 0; height: 1px; background: var(--aqua); box-shadow: 0 0 16px var(--aqua); animation: scan 1.5s ease-in-out infinite; }
@keyframes scan { 0%,100% { top: 8%; opacity: .3; } 50% { top: 92%; opacity: 1; } }
.image-badge { display: none; position: absolute; z-index: 4; left: 12px; top: 12px; padding: 6px 8px; border: 1px solid var(--line); border-radius: 7px; color: #b6c5d2; background: rgba(3,9,20,.74); backdrop-filter: blur(8px); font: 700 8px ui-monospace, monospace; letter-spacing: .1em; }
.canvas-wrap:not(.empty) .image-badge { display: block; }
.metric-strip { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0 -20px; padding: 0 20px; border-top: 1px solid var(--line); background: rgba(4,12,22,.44); }
.metric-strip div { display: grid; gap: 5px; padding: 14px; border-left: 1px solid var(--line); }
.metric-strip div:first-child { border-left: 0; }
.metric-strip small { color: var(--muted); font: 700 8px ui-monospace, monospace; letter-spacing: .1em; }
.metric-strip strong { font: 700 13px ui-monospace, monospace; }
.result-grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: 14px; }
.result-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 15px; color: var(--muted); font: 700 8px ui-monospace, monospace; letter-spacing: .12em; }
.result-heading b { padding: 5px 7px; border-radius: 6px; color: var(--muted); background: rgba(255,255,255,.04); font-size: 7px; }
.result-heading b.success { color: var(--aqua); background: rgba(57,230,198,.1); }
.result-heading b.warning { color: var(--amber); background: rgba(255,198,109,.1); }
.reading-line { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
#readingOutput { overflow: hidden; color: var(--text); font: 760 clamp(28px, 4vw, 42px)/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .13em; text-overflow: ellipsis; }
#copyButton { width: 34px; height: 34px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.025); color: var(--muted); cursor: pointer; }
#copyButton svg { width: 15px; }
#copyButton:hover:not(:disabled) { color: var(--aqua); border-color: var(--line-bright); }
#copyButton:disabled { opacity: .3; cursor: default; }
.raw-reading-row { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 9px; margin-top: 13px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.02); }
.raw-reading-row span { color: var(--muted); font-size: 8px; }
.raw-reading-row output { color: #d5e1ea; font: 700 11px ui-monospace, monospace; letter-spacing: .08em; }
.raw-reading-row b { color: var(--muted); font: 700 7px ui-monospace, monospace; text-transform: uppercase; }
.raw-reading-row b.has-unknown { color: var(--amber); }
.quality-row { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 9px; margin-top: 19px; color: var(--muted); font-size: 8px; }
.quality-track { height: 4px; overflow: hidden; border-radius: 99px; background: #1b2b3d; }
.quality-track i { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--aqua)); transition: width .4s ease; }
.quality-row strong { color: #b9c7d3; font-size: 8px; }
.digit-list { min-height: 67px; display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; }
.empty-copy { margin: auto 0; color: var(--muted); font-size: 9px; }
.digit-chip { min-width: 74px; display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 8px; padding: 8px 9px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,.025); }
.digit-chip b { width: 25px; height: 25px; display: grid; place-items: center; border-radius: 7px; color: #061510; background: var(--aqua); font: 800 13px ui-monospace, monospace; }
.digit-chip span { display: grid; gap: 3px; color: var(--muted); font-size: 7px; }
.digit-chip strong { color: #d4e0e9; font: 700 9px ui-monospace, monospace; }
.digit-chip.unknown { border-color: rgba(255,198,109,.28); background: rgba(255,198,109,.05); }
.digit-chip.unknown b { color: #251603; background: var(--amber); }
.digit-chip.unknown strong { color: var(--amber); }
.performance-section { margin-top: 0; padding-top: 0; border-top: 0; }
.performance-heading { display: flex; align-items: end; justify-content: space-between; gap: 36px; margin-bottom: 22px; }
.performance-heading .kicker { margin-bottom: 9px; }
.performance-heading h2 { margin: 0 0 9px; font-size: clamp(25px, 3vw, 36px); letter-spacing: -.04em; }
.performance-heading p { max-width: 700px; margin: 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.evidence-link { flex: 0 0 auto; padding: 9px 12px; border: 1px solid var(--line); border-radius: 9px; color: #b8c8d5; background: rgba(255,255,255,.025); font-size: 9px; text-decoration: none; }
.evidence-link:hover { color: var(--aqua); border-color: var(--line-bright); }
.evidence-link span { color: var(--aqua); }
.metric-card-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 11px; }
.validation-metric { position: relative; min-height: 126px; padding: 15px; overflow: hidden; border: 1px solid var(--line); border-radius: 14px; background: linear-gradient(145deg, rgba(13,28,45,.86), rgba(8,19,32,.9)); }
.validation-metric.featured { border-color: rgba(57,230,198,.28); box-shadow: inset 0 1px rgba(57,230,198,.08); }
.validation-metric > div { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.validation-metric span { color: var(--muted); font: 700 8px ui-monospace, monospace; letter-spacing: .1em; }
.validation-metric strong { font: 750 25px ui-monospace, monospace; letter-spacing: -.05em; }
.validation-metric strong small { color: var(--aqua); font-size: 10px; }
.validation-metric p { min-height: 28px; margin: 10px 0; color: var(--muted); font-size: 9px; line-height: 1.45; }
.validation-metric > i { display: block; width: 100%; height: 4px; overflow: hidden; border-radius: 99px; background: #1a2b3e; }
.validation-metric > i::after { content: ""; display: block; width: var(--metric); height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--aqua)); }
.metric-comparison { margin-top: 10px; padding: 16px 20px; }
.chart-header, .evidence-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; }
.chart-header { margin-bottom: 20px; }
.chart-header small, .evidence-heading small { color: var(--aqua); font: 700 8px ui-monospace, monospace; letter-spacing: .12em; }
.chart-header h3, .evidence-heading h3 { margin: 4px 0 0; font-size: 15px; }
.chart-header > span, .evidence-heading p { margin: 0; color: var(--muted); font-size: 8px; }
.metric-bars { display: grid; gap: 12px; }
.metric-bars > div { display: grid; grid-template-columns: 92px 1fr 48px; align-items: center; gap: 12px; }
.metric-bars span { color: #bbc9d5; font-size: 9px; }
.metric-bars b { height: 16px; overflow: hidden; border-left: 1px solid #557188; border-radius: 0 4px 4px 0; background: repeating-linear-gradient(90deg, rgba(112,145,172,.06) 0, rgba(112,145,172,.06) 1px, transparent 1px, transparent 25%); }
.metric-bars i { display: block; width: var(--value); height: 100%; border: 1px solid rgba(57,230,198,.42); border-left: 0; border-radius: 0 4px 4px 0; background: rgba(57,230,198,.22); }
.metric-bars strong { text-align: right; color: var(--aqua); font: 700 10px ui-monospace, monospace; }
.chart-axis { display: flex; justify-content: space-between; margin: 8px 60px 0 104px; color: #526b80; font: 700 7px ui-monospace, monospace; }
.evidence-heading { margin: 18px 0 10px; }
.evidence-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 9px; }
.evidence-card { overflow: hidden; border: 1px solid var(--line); border-radius: 13px; color: var(--text); background: rgba(11,25,41,.7); text-decoration: none; transition: .18s ease; }
.evidence-card:hover { transform: translateY(-2px); border-color: var(--line-bright); box-shadow: 0 18px 38px rgba(0,0,0,.18); }
.evidence-card img { width: 100%; height: 126px; display: block; object-fit: cover; object-position: center; background: #fff; }
.evidence-card > div { display: grid; gap: 4px; padding: 12px; }
.evidence-card strong { font-size: 10px; }
.evidence-card span { color: var(--muted); font-size: 8px; line-height: 1.45; }
.evidence-card.wide { grid-column: auto; display: block; }
.evidence-card.wide img { height: 126px; }
.evidence-card.wide > div { align-content: center; }
.metrics-note { margin: 12px 0 0; padding: 11px 13px; border-left: 2px solid var(--blue); border-radius: 7px; color: var(--muted); background: rgba(81,167,255,.045); font-size: 9px; line-height: 1.55; }
.metrics-note strong { color: #c9d7e2; }
.history-section { margin-top: 0; }
.history-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 15px; }
.history-heading .kicker { margin-bottom: 7px; }
.history-heading h2 { margin: 0; font-size: 21px; letter-spacing: -.03em; }
.history-list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.history-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: rgba(11,25,41,.62); }
.history-card > div { display: grid; gap: 4px; }
.history-card strong { font: 750 16px ui-monospace, monospace; letter-spacing: .08em; }
.history-card small { color: var(--muted); font-size: 8px; }
.history-card span { color: var(--aqua); font: 700 9px ui-monospace, monospace; }
.history-empty { grid-column: 1 / -1; padding: 18px; border: 1px dashed var(--line); border-radius: 12px; color: var(--muted); font-size: 10px; text-align: center; }
.guide-section { min-height: 560px; }
.guide-heading .evidence-link { cursor: pointer; }
.guide-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.guide-card { display: grid; grid-template-columns: auto 1fr; gap: 14px; padding: 20px; border: 1px solid var(--line); border-radius: 16px; background: linear-gradient(145deg, rgba(13,28,45,.86), rgba(8,19,32,.9)); }
.guide-card > span { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--line-bright); border-radius: 10px; color: var(--aqua); font: 800 10px ui-monospace, monospace; }
.guide-card small { color: var(--aqua); font: 700 8px ui-monospace, monospace; letter-spacing: .1em; }
.guide-card h3 { margin: 7px 0 8px; font-size: 14px; }
.guide-card p { min-height: 62px; margin: 0 0 13px; color: var(--muted); font-size: 9px; line-height: 1.65; }
.guide-card p b { color: #d4e1e9; }
.guide-card strong { color: var(--aqua); font-size: 9px; }
.reading-flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; align-items: center; gap: 14px; margin-top: 14px; padding: 20px; }
.reading-flow > div { display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center; }
.reading-flow span { grid-row: span 2; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; color: #06131b; background: var(--aqua); font-size: 9px; font-weight: 800; }
.reading-flow strong { font-size: 11px; }
.reading-flow small { color: var(--muted); font-size: 8px; line-height: 1.4; }
.reading-flow > i { width: 24px; height: 1px; background: var(--line-bright); }
.guide-note { margin-top: 12px; padding: 13px 15px; border-left: 2px solid var(--amber); border-radius: 8px; color: var(--muted); background: rgba(255,198,109,.045); font-size: 9px; }
.guide-note strong { color: var(--amber); }
.team-section { min-height: 560px; }
.team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.team-card { display: grid; grid-template-columns: auto 1fr; gap: 16px; align-items: center; min-height: 170px; padding: 22px; border: 1px solid var(--line); border-radius: 17px; background: linear-gradient(145deg, rgba(13,28,45,.88), rgba(8,19,32,.92)); }
.team-card > span { width: 58px; height: 58px; display: grid; place-items: center; border: 1px solid var(--line-bright); border-radius: 17px; color: #04151a; background: linear-gradient(145deg, var(--aqua), var(--blue)); font-size: 15px; font-weight: 800; }
.team-card small, .team-project small { color: var(--aqua); font: 700 8px ui-monospace, monospace; letter-spacing: .12em; }
.team-card h3 { margin: 6px 0; font-size: 18px; }
.team-card p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.55; }
.team-project { display: grid; grid-template-columns: 300px 1fr; align-items: center; gap: 30px; margin-top: 14px; padding: 22px; }
.team-project h3 { margin: 6px 0 0; font-size: 16px; }
.team-project p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.7; }
.tech-strip { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 32px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.tech-strip > div { display: flex; align-items: center; gap: 13px; padding: 18px; border-left: 1px solid var(--line); }
.tech-strip > div:first-child { border-left: 0; }
.tech-strip span { color: var(--aqua); font: 700 10px ui-monospace, monospace; }
.tech-strip p { display: grid; gap: 3px; margin: 0; color: var(--muted); font-size: 8px; }
.tech-strip strong { color: #cbd7e1; font-size: 10px; }
footer { width: min(1240px, calc(100% - 40px)); display: flex; align-items: center; justify-content: space-between; margin: 0 auto; padding: 24px 0 34px; color: var(--muted); font-size: 9px; }
footer > div:first-child { display: flex; gap: 9px; }
footer strong { color: #c8d4de; }
.footer-links { display: flex; gap: 18px; }
.footer-links a { color: var(--muted); text-decoration: none; }
.footer-links a:hover { color: var(--aqua); }
.toast { position: fixed; z-index: 50; left: 50%; bottom: 25px; transform: translate(-50%, 20px); padding: 10px 14px; border: 1px solid var(--line-bright); border-radius: 10px; background: rgba(6,18,30,.94); color: #dce7ef; box-shadow: var(--shadow); opacity: 0; pointer-events: none; font-size: 10px; transition: .2s ease; }
.toast.show { transform: translate(-50%, 0); opacity: 1; }
@media (max-width: 980px) {
.topbar { height: auto; min-height: 76px; flex-wrap: wrap; gap: 8px; padding-top: 10px; padding-bottom: 10px; }
.app-tabs { order: 3; width: 100%; justify-content: center; }
.intro { grid-template-columns: 1fr; }
.model-card { max-width: 440px; }
.app-grid { grid-template-columns: 1fr; }
.control-column { grid-template-columns: 1.15fr .85fr; align-items: stretch; }
.analyze-button, .model-status { grid-column: 1 / -1; }
.history-list { grid-template-columns: repeat(2, 1fr); }
.metric-card-grid, .evidence-grid { grid-template-columns: repeat(2, 1fr); }
.guide-grid { grid-template-columns: 1fr; }
.settings-strip { grid-template-columns: repeat(2, 1fr); }
.settings-strip-title { grid-column: 1 / -1; }
.team-grid { grid-template-columns: 1fr; }
.reading-flow { grid-template-columns: 1fr 1fr; }
.reading-flow > i { display: none; }
}
@media (max-width: 680px) {
.topbar { height: 66px; padding: 0 14px; }
.system-pill span { display: none; }
.system-pill { padding: 9px; }
.model-link { padding: 7px; }
.model-link > span { width: 18px; height: 18px; }
.app-tabs { justify-content: flex-start; overflow-x: auto; }
.app-tab { flex: 0 0 auto; }
.page-shell { width: min(100% - 20px, 1240px); padding-top: 38px; }
.intro { gap: 24px; margin-bottom: 25px; }
.control-column, .result-grid { grid-template-columns: 1fr; }
.viewer-toolbar { align-items: flex-start; flex-direction: column; }
.viewer-actions { width: 100%; justify-content: space-between; }
.canvas-wrap { min-height: 320px; }
.metric-strip { grid-template-columns: repeat(2, 1fr); }
.metric-strip div:nth-child(3) { border-left: 0; border-top: 1px solid var(--line); }
.metric-strip div:nth-child(4) { border-top: 1px solid var(--line); }
.history-list { grid-template-columns: 1fr; }
.performance-heading, .chart-header, .evidence-heading { align-items: flex-start; flex-direction: column; }
.metric-card-grid, .evidence-grid { grid-template-columns: 1fr; }
.evidence-card.wide { grid-column: auto; display: block; }
.metric-bars > div { grid-template-columns: 72px 1fr 42px; gap: 8px; }
.chart-axis { margin-left: 80px; margin-right: 50px; }
.tech-strip { grid-template-columns: 1fr; }
.tech-strip > div { border-left: 0; border-top: 1px solid var(--line); }
.reading-flow { grid-template-columns: 1fr; }
.settings-strip { grid-template-columns: 1fr; }
.settings-strip-title { grid-column: auto; }
.team-project { grid-template-columns: 1fr; gap: 10px; }
.tech-strip > div:first-child { border-top: 0; }
footer { width: calc(100% - 20px); align-items: flex-start; gap: 18px; }
footer > div:first-child { flex-direction: column; gap: 3px; }
}
|