:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#061015;--bg-secondary:#112127;--panel:#09181de6;--panel-soft:#0e1f25b8;--border:#a6e0d624;--text:#edf8f6;--muted:#a5beb8;--accent:#c7ff71;--accent-strong:#e9ffaf;--danger:#ff9689;--shadow:0 30px 80px #00000059}*{box-sizing:border-box}html,body{background:radial-gradient(circle at top left,#c7ff7129,transparent 32%),radial-gradient(circle at 80% 0%,#6ddbff1f,transparent 26%),linear-gradient(180deg,var(--bg-secondary),var(--bg));min-height:100%;color:var(--text);margin:0;font-family:Palatino Linotype,Book Antiqua,Palatino,serif}body{min-height:100vh}a{color:inherit}.shell{width:min(1240px,100% - 2rem);margin:0 auto;padding:1.8rem 0 4rem}.hero{margin-bottom:1rem}.hero-panel,.stat-panel,.upload-card,.result-card{border:1px solid var(--border);box-shadow:var(--shadow);background:linear-gradient(150deg,#13272ff0,#071115f5)}.hero-panel{padding:1.4rem 1.6rem}.hero-panel h1,.upload-card h2,.result-card h2{margin:0}.hero-panel h1{max-width:9ch;font-size:clamp(2.8rem,8vw,5rem);line-height:.9}.lede{color:var(--muted);margin:.65rem 0 0;font-size:1rem;line-height:1.4}.stat-panel{padding:1.5rem}.stat-panel strong{color:var(--accent-strong);margin-top:.3rem;font-size:1.5rem;display:block}.section-label{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;margin:0 0 .7rem;font-size:.78rem}.supporting-copy{color:var(--muted);margin:0;line-height:1.7}.workspace{grid-template-columns:minmax(320px,400px) minmax(0,1fr);gap:1rem;display:grid}.upload-card,.result-card{padding:1.5rem}.upload-card h2,.result-card h2{font-size:1.7rem}.upload-form{margin-top:1rem}.dropzone{background:var(--panel-soft);cursor:pointer;border:1px dashed #c7ff7173;gap:.55rem;padding:1.6rem;transition:border-color .14s,background .14s,transform .14s;display:grid}.dropzone.is-dragging{border-color:var(--accent-strong);background:#182e35e6;transform:translateY(-2px)}.dropzone input{display:none}.dropzone-title{font-size:1.35rem}.dropzone-meta,.dropzone-filename,.dropzone-action{color:var(--muted)}.dropzone-filename{font-size:1rem}.dropzone-action{text-transform:uppercase;letter-spacing:.1em;font-size:.72rem}.form-actions{gap:.75rem;margin-top:1rem;display:flex}.submit-button,.ghost-button{font:inherit;cursor:pointer;border:1px solid #0000;padding:.9rem 1.15rem}.submit-button{background:var(--accent);color:#17250e}.submit-button:disabled{cursor:wait;opacity:.72}.ghost-button{border-color:var(--border);color:var(--text);background:0 0}.preview-frame{border:1px solid var(--border);background:#050e12cc;margin-top:1rem;overflow:hidden}.preview-image{aspect-ratio:4/5;object-fit:cover;width:100%;height:auto;display:block}.callout{margin:1rem 0 0;padding:.85rem 1rem}.callout.error{color:#ffd1cb;background:#7b211b59;border:1px solid #ff968940}.results-stack{gap:1rem;display:grid}.spotlight{position:relative;overflow:hidden}.spotlight:after{content:"";pointer-events:none;background:radial-gradient(circle,#c7ff712e,#0000 72%);width:220px;height:220px;position:absolute;inset:auto -10% -10% auto}.confidence{color:var(--accent-strong);margin:.55rem 0 0;font-size:1.2rem}.description{width:min(70ch,100%);color:var(--muted);margin:.85rem 0 0;line-height:1.55}.character-link{color:inherit;text-underline-offset:.16em;-webkit-text-decoration:underline #c7ff718c;text-decoration:underline #c7ff718c;transition:color .14s,text-decoration-color .14s}.character-link:hover,.character-link:focus-visible{color:var(--accent-strong);text-decoration-color:currentColor}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.85rem;margin-top:1rem;display:grid}.detail-grid dt{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:.8rem}.detail-grid dd{margin:.25rem 0 0}.candidate-list,.tag-list{margin:0;padding:0;list-style:none}.candidate-list li,.tag-list li{border-bottom:1px solid #a6e0d61a;grid-template-columns:1fr auto auto;align-items:baseline;gap:.75rem;padding:.75rem 0;display:grid}.candidate-list li:last-child,.tag-list li:last-child{border-bottom:0}.candidate-list span:nth-child(2),.tag-list span{color:var(--muted)}.tag-groups{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.tag-group{background:#0d1b20b8;padding:1rem}.tag-group h3{text-transform:capitalize;margin:0 0 .75rem}@media (max-width:980px){.workspace{grid-template-columns:1fr}}@media (max-width:640px){.shell{width:min(100% - 1rem,100%);padding-top:1rem}.hero-panel,.stat-panel,.upload-card,.result-card{padding:1.15rem}.candidate-list li,.tag-list li{grid-template-columns:1fr auto}}
