@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin-600-normal.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin-700-normal.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--bg: #14100C;--surface: #241B14;--surface-2: #2E2317;--line: rgba(245, 239, 230, .14);--accent: #E8A33D;--accent-ink: #2A1D0E;--healthy: #8BC34A;--alert: #E2604A;--neutral: #B9AB99;--text: #F5EFE6;--text-dim: #B9AB99;--font-display: "Fraunces", Georgia, serif;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}body{background-color:var(--bg);color:var(--text);font-family:var(--font-ui);height:100vh;height:100dvh;overflow:hidden}.app-container{display:flex;flex-direction:column;height:100%}header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--line);z-index:10;flex-shrink:0}.wordmark{display:flex;align-items:center;gap:.5rem}.pod-mark{width:22px;height:22px;color:var(--accent)}.wordmark h1{font-family:var(--font-display);font-weight:600;font-size:1.3rem;letter-spacing:.01em;white-space:nowrap}.wordmark h1 em{font-style:normal;color:var(--accent)}.header-right{display:flex;align-items:center;gap:.6rem;min-width:0}.offline-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.68rem;letter-spacing:.04em;color:var(--text-dim);border:1px solid var(--line);border-radius:999px;padding:.25rem .55rem;white-space:nowrap}.offline-chip svg{width:11px;height:11px;color:var(--healthy)}.icon-btn{width:34px;height:34px;padding:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--line);border-radius:999px;color:var(--text-dim);cursor:pointer;transition:color .15s,border-color .15s,transform .1s}.icon-btn span{font-family:var(--font-display);font-weight:600;font-size:1.15rem;line-height:1}.icon-btn:hover,.icon-btn:focus-visible{color:var(--accent);border-color:var(--accent)}.icon-btn:active{transform:scale(.94)}main{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.camera-view{flex:1;min-height:0;position:relative;background:#000;overflow:hidden;display:flex;align-items:center;justify-content:center}video{width:100%;height:100%;object-fit:cover}#image-preview{width:100%;height:100%;object-fit:contain;background:#000}.reticle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(68%,48vh,340px);aspect-ratio:1 / 1;pointer-events:none;overflow:hidden;border-radius:18px}.corner{position:absolute;width:26px;height:26px;border:3px solid var(--accent);opacity:.9;animation:breathe 3.5s ease-in-out infinite}.corner.tl{top:0;left:0;border-right:none;border-bottom:none;border-top-left-radius:14px}.corner.tr{top:0;right:0;border-left:none;border-bottom:none;border-top-right-radius:14px}.corner.bl{bottom:0;left:0;border-right:none;border-top:none;border-bottom-left-radius:14px}.corner.br{bottom:0;right:0;border-left:none;border-top:none;border-bottom-right-radius:14px}@keyframes breathe{0%,to{opacity:.55}50%{opacity:1}}.scan-line{display:none;position:absolute;left:6%;right:6%;top:0;height:2px;background:var(--accent);box-shadow:0 0 12px var(--accent);opacity:.85}.camera-view.scanning .scan-line{display:block;animation:scan 1.1s ease-in-out infinite alternate}.camera-view.scanning .corner{animation:none;opacity:1}@keyframes scan{0%{top:4%}to{top:calc(96% - 2px)}}.camera-hint{position:absolute;bottom:.9rem;left:50%;transform:translate(-50%);font-size:.78rem;letter-spacing:.03em;color:var(--text);background:#14100c99;border:1px solid var(--line);border-radius:999px;padding:.35rem .85rem;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dock{background:var(--surface);border-top:1px solid var(--line);flex-shrink:0}.samples{padding:.7rem 1rem 0}.samples-label{display:block;font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);margin-bottom:.45rem}.samples-strip{display:flex;gap:.6rem;overflow-x:auto;padding-bottom:.25rem;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.sample{flex:0 0 auto;width:52px;height:52px;padding:0;border:2px solid transparent;border-radius:12px;overflow:hidden;background:var(--surface-2);cursor:pointer;transition:border-color .15s,transform .1s}.sample img{width:100%;height:100%;object-fit:cover;display:block}.sample:hover,.sample:focus-visible{border-color:var(--accent)}.sample:active{transform:scale(.94)}.controls{padding:.9rem 1rem;padding-bottom:calc(.9rem + env(safe-area-inset-bottom));display:flex;gap:.75rem}.btn-primary,.btn-secondary{font-family:var(--font-ui);border:none;padding:.95rem 1rem;border-radius:12px;font-size:1.02rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:transform .1s,background-color .2s}.btn-primary:active,.btn-secondary:active{transform:scale(.98)}.btn-primary{position:relative;overflow:hidden;flex:1.4;background:var(--accent);color:var(--accent-ink)}.btn-primary:disabled{background:var(--surface-2);color:var(--text-dim);cursor:default}.btn-progress{position:absolute;top:0;right:0;bottom:0;left:0;width:0%;background:#e8a33d47;transition:width .2s ease-out}.btn-label{position:relative;z-index:1}.btn-secondary{flex:1;background:transparent;border:1px solid var(--line);color:var(--text)}.btn-secondary:hover{background:#f5efe60f}.btn-secondary input[type=file]{display:none}.result-panel{position:absolute;bottom:0;left:0;right:0;background:var(--surface-2);padding:1rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;border-top:1px solid var(--line);transform:translateY(0);transition:transform .35s cubic-bezier(.2,.8,.2,1);z-index:20;box-shadow:0 -8px 30px #0000008c;max-height:100%;overflow-y:auto;--verdict: var(--neutral)}.result-panel.hidden{transform:translateY(110%);visibility:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1),visibility 0s .35s}.result-panel.verdict-healthy{--verdict: var(--healthy)}.result-panel.verdict-disease{--verdict: var(--alert)}.result-panel.verdict-neutral{--verdict: var(--neutral)}.result-panel.verdict-uncertain{--verdict: var(--accent)}.handle{width:40px;height:4px;background:var(--line);border-radius:2px;margin:0 auto 1rem}.verdict{display:flex;align-items:center;gap:1rem}.ring{position:relative;width:72px;height:72px;flex-shrink:0}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring circle{fill:none;stroke-width:6}.ring-track{stroke:var(--line)}.ring-fill{stroke:var(--verdict);stroke-linecap:round;stroke-dasharray:195;stroke-dashoffset:195;transition:stroke-dashoffset .6s ease-out}.ring-value{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:700;font-variant-numeric:tabular-nums}.verdict-text{min-width:0}.eyebrow{font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim)}#prediction-label{font-family:var(--font-display);font-weight:700;font-size:1.65rem;line-height:1.15;color:var(--verdict);margin:.15rem 0 .3rem}.advice{font-size:.88rem;line-height:1.4;color:var(--text-dim)}.prob-list{margin:1.1rem 0;display:flex;flex-direction:column;gap:.55rem}.prob-row{display:grid;grid-template-columns:8rem 1fr 2.9rem;align-items:center;gap:.7rem;font-size:.8rem}.prob-name{color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prob-bar{height:6px;background:#f5efe614;border-radius:3px;overflow:hidden}.prob-bar .fill{height:100%;border-radius:3px;width:0%;transition:width .5s ease-out}.fill-healthy{background:var(--healthy)}.fill-disease{background:var(--alert)}.fill-neutral{background:var(--neutral)}.prob-pct{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}#close-result,#close-about{width:100%}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a08058c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:24}.about-panel{z-index:25;max-width:560px;margin:0 auto}.about-title{font-family:var(--font-display);font-weight:700;font-size:1.8rem;margin:.2rem 0 .5rem}.about-title em{font-style:normal;color:var(--accent)}.about-text{font-size:.9rem;line-height:1.5;color:var(--text-dim)}.partners-eyebrow{margin-top:1.2rem}.partners{display:flex;gap:.75rem;margin:.7rem 0 1.2rem}.partner-card{flex:1;display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem .8rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--text);transition:border-color .15s,transform .1s}.partner-card:hover,.partner-card:focus-visible{border-color:var(--accent)}.partner-card:active{transform:scale(.98)}.partner-logo{display:block;flex-shrink:0}.wur-mark{height:34px;width:auto}.uesc-mark{height:54px;width:auto}.partner-name{font-family:var(--font-display);font-weight:600;font-size:1.15rem;line-height:1.1;display:flex;flex-direction:column;gap:.2rem}.partner-name small{font-family:var(--font-ui);font-weight:400;font-size:.66rem;letter-spacing:.02em;color:var(--text-dim)}@media (max-height: 560px){header{padding:.4rem 1rem}.wordmark h1{font-size:1.1rem}.samples{display:none}.controls{padding:.6rem 1rem;padding-bottom:calc(.6rem + env(safe-area-inset-bottom))}.btn-primary,.btn-secondary{padding:.65rem 1rem;font-size:.95rem}.result-panel{padding:.6rem 1.25rem calc(.75rem + env(safe-area-inset-bottom))}.handle{margin-bottom:.5rem}.ring{width:56px;height:56px}#prediction-label{font-size:1.3rem}.prob-list{margin:.7rem 0}}@media (max-width: 350px){.prob-row{grid-template-columns:6.2rem 1fr 2.6rem}#prediction-label{font-size:1.4rem}.offline-chip{display:none}.wordmark h1{font-size:1.1rem}}@media (max-width: 430px){.partners{flex-direction:column}}@media (prefers-reduced-motion: reduce){.corner{animation:none;opacity:.9}.camera-view.scanning .scan-line{animation:none;top:50%}.result-panel,.result-panel.hidden,.ring-fill,.prob-bar .fill,.btn-progress{transition:none}}
