@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/atkinson-hyperlegible-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/atkinson-hyperlegible-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #101827;--panel: #182433;--stage: #0b101a;--line: #31445c;--ink: #e8eef7;--muted: #b7c5d8;--accent: #7dd3fc;--accent-ink: #0369a1;--accent-ink-hover: #075985;--danger-bg: #3a1620;--danger-ink: #ffd5dc;--danger-line: #8a3a4a;--ease: cubic-bezier(.16, 1, .3, 1);--shadow: 0 14px 28px -16px rgb(2 6 16 / .85);color-scheme:dark;background:var(--bg)}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--ink);font-family:Atkinson Hyperlegible,Verdana,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:.005em;caret-color:var(--accent)}::selection{background:#075985;color:#f8fafc}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}*{scrollbar-width:thin;scrollbar-color:#3d516c transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#3d516c;border-radius:999px;border:2px solid var(--bg)}button,input{font:inherit;letter-spacing:inherit}p,dd,.file-name{overflow-wrap:anywhere}.skip{position:absolute;left:.75rem;top:.75rem;z-index:5;padding:.5rem .75rem;background:var(--ink);color:var(--bg);border-radius:.5rem;font-weight:700;text-decoration:none;transform:translateY(-150%)}.skip:focus{transform:none}.app-shell{min-height:100vh;min-height:100dvh}.app-frame{width:100%;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;gap:1.25rem;padding:1.25rem 1rem 1.5rem}.app-header h1{margin:0;font-size:1.5rem;line-height:1.15;font-weight:700;letter-spacing:-.02em;text-wrap:balance;color:var(--ink)}.app-header p{margin:.4rem 0 0;max-width:40rem;color:var(--muted)}.app-main{display:flex;flex-direction:column;gap:1.25rem;flex:1}.rail{display:contents}.upload{order:1}.alert{order:2}.viewer-well{order:3}.details{order:4}.panel{background:var(--panel);border:1px solid var(--line);border-radius:.875rem;padding:1rem 1.125rem 1.125rem;box-shadow:var(--shadow)}.panel h2{margin:0 0 .75rem;font-size:1.125rem;line-height:1.3;font-weight:700;letter-spacing:-.02em}.drop{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-height:9.5rem;padding:1.25rem 1rem;border:1.5px dashed rgb(125 211 252 / .7);border-radius:.75rem;background:#7dd3fc0d;color:var(--accent);text-align:center;cursor:pointer;transition:border-color .18s var(--ease),background-color .18s var(--ease)}.drop:hover,.drop.is-hot,.viewer-well.is-hot{border-color:var(--accent);background-color:#7dd3fc1a}.drop.is-hot{border-style:solid}.drop.is-busy{cursor:progress;opacity:.72}.drop svg{width:2rem;height:2rem}.drop p,.file-name{margin:0}.file-prompt{color:var(--muted)}.file-name{color:var(--ink);font-weight:700}.status{margin:.75rem 0 0;text-align:center;color:var(--accent);font-weight:700}.alert{background:var(--danger-bg);color:var(--danger-ink);border:1px solid var(--danger-line);border-radius:.75rem;padding:.875rem 1rem;box-shadow:var(--shadow)}.alert strong{display:block;margin-bottom:.2rem;color:#fff}.alert p{margin:0}.details{display:flex;flex-direction:column;gap:1rem;animation:arrive .24s var(--ease)}@keyframes arrive{0%{opacity:0;filter:blur(6px);transform:translateY(6px)}to{opacity:1;filter:blur(0);transform:none}}.stats{display:grid;gap:.625rem;margin:0}.stat{display:grid;grid-template-columns:minmax(7.5rem,auto) minmax(0,1fr);gap:.25rem .75rem;align-items:baseline}.stat dt{margin:0;color:var(--muted);font-weight:400}.stat dd{margin:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.toggle{width:100%;margin-top:1rem;padding:.85rem 0 0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2.75rem;cursor:pointer;text-align:left}.switch{width:2.75rem;height:1.5rem;border-radius:999px;background:#3d4f66;position:relative;flex:none;transition:background-color .18s var(--ease)}.toggle.is-on .switch{background:var(--accent-ink)}.switch-thumb{position:absolute;top:2px;left:2px;width:1.25rem;height:1.25rem;border-radius:50%;background:#fff;box-shadow:0 1px 2px #02061066;transition:transform .18s var(--ease)}.toggle.is-on .switch-thumb{transform:translate(1.25rem)}.analyze{width:100%;min-height:2.75rem;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1rem;border:0;border-radius:.625rem;background:var(--accent-ink);color:#fff;font-weight:700;cursor:pointer;transition:background-color .18s var(--ease),transform .18s var(--ease)}.analyze:hover{background:var(--accent-ink-hover)}.analyze:active{transform:translateY(1px)}.analyze:disabled{background:#243246;color:#b7c5d8;cursor:not-allowed;transform:none}.analyze svg{width:1.25rem;height:1.25rem}.spin{animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.analysis{margin:1rem 0 0;max-width:65ch;color:var(--ink);line-height:1.6;white-space:pre-wrap}.viewer-well{position:relative;height:min(28rem,52svh);min-height:20rem;border-radius:1rem;border:1px solid var(--line);background:var(--stage);box-shadow:inset 0 1px #ffffff0a,0 18px 36px -22px #020610e6;overflow:hidden;transition:border-color .18s var(--ease)}.viewer-root,.stage-overlay{position:absolute;top:0;right:0;bottom:0;left:0}.stage-overlay{display:flex;align-items:center;justify-content:center;pointer-events:none}.stage-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(to right,rgb(166 196 224 / .16) 1px,transparent 1px),linear-gradient(to bottom,rgb(166 196 224 / .16) 1px,transparent 1px);background-size:3rem 3rem;background-position:center;-webkit-mask-image:radial-gradient(ellipse at 50% 45%,#000 46%,transparent 94%);mask-image:radial-gradient(ellipse at 50% 45%,#000 46%,transparent 94%)}.is-loading .stage-grid{animation:breathe 1.4s ease-in-out infinite}@keyframes breathe{50%{opacity:.45}}.stage-message{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1.5rem;text-align:center}.stage-copy{display:grid;gap:.25rem}.stage-copy p,.stage-message p{margin:0;color:var(--muted)}.stage-title{color:var(--ink);font-size:1.125rem;font-weight:700;letter-spacing:-.02em}.reticle{width:2.75rem;height:2.75rem;border:1px solid rgb(183 197 216 / .7);border-radius:50%;position:relative}.reticle:before,.reticle:after{content:"";position:absolute;background:#b7c5d8b3}.reticle:before{left:-.45rem;right:-.45rem;top:50%;height:1px}.reticle:after{top:-.45rem;bottom:-.45rem;left:50%;width:1px}.legend{position:absolute;z-index:2;left:.75rem;right:.75rem;bottom:.75rem;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .85rem;margin:0;padding:.5rem .7rem;list-style:none;background:var(--panel);border:1px solid var(--line);border-radius:.625rem;box-shadow:0 10px 22px -14px #020610e6;font-size:.875rem;line-height:1.3}.legend li{display:inline-flex;align-items:center;gap:.4rem}.legend .hint{color:var(--muted)}.swatch{width:.6rem;height:.6rem;border-radius:50%;flex:none}.swatch-hull{background:transparent;border:1.5px solid #34d399;border-radius:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:64rem){.app-frame{min-height:100dvh;padding:1.25rem 1.75rem 1.5rem;gap:1rem}.app-header h1{font-size:2rem}.app-main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(19rem,24rem) minmax(0,1fr);grid-template-rows:auto;gap:1.25rem;align-items:start}.rail{display:flex;flex-direction:column;gap:1rem;min-width:0}.legend .hint{margin-left:auto}.upload,.alert,.viewer-well,.details{order:0}.viewer-well{position:sticky;top:1.25rem;height:calc(100dvh - 8.75rem);min-height:0;min-width:0;align-self:start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
