:root{color-scheme:dark;--bg:#101715;--panel:#1a2420;--border:#34423b;--muted:#a4b5ac;--green:#63dfaa;--ink:#ecf5ef;--amber:#efd08d}*{box-sizing:border-box}body{margin:0;background:#0c110f;color:var(--ink);font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.6}.app{max-width:800px;margin:auto;background:var(--bg);min-height:100dvh;padding:24px 28px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:40px;height:44px;border:1px solid var(--green);border-radius:10px;color:var(--green);font-size:23px;font-weight:700}h1,h2,p{margin:0}h1{font-size:19px;letter-spacing:1px}.brand p{font-size:11px;color:var(--muted)}button,.button{font:inherit;cursor:pointer;border:1px solid transparent;border-radius:8px;padding:10px 16px;white-space:nowrap;text-align:center;transition:background .15s}button:disabled{opacity:.4;cursor:not-allowed}.quiet{background:#25332c;color:var(--ink);border-color:var(--border)}.quiet:hover:not(:disabled){background:#35473c}.primary,.small-primary{background:var(--green);color:#10271c;font-weight:650}.small-primary{padding:7px 16px}.text-button{background:none;color:var(--green);padding:6px 0}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--green);outline-offset:3px}.bank-line{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:12px}.bank-line>span{display:flex;align-items:center;gap:8px}i{width:6px;height:6px;background:#72837a;border-radius:50%;display:inline-block}i.ready{background:var(--green)}.scanner{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#141e19}.camera-stage{height:330px;position:relative;overflow:hidden;background:#080e0b}.camera-stage video,.camera-stage img{width:100%;height:100%;object-fit:contain;display:block}.camera-stage img[hidden]{display:none}.camera-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:radial-gradient(ellipse at center,#25382c 0%,#0d1510 72%)}.camera-empty[hidden]{display:none}.scan-symbol{font-size:46px;color:var(--green);line-height:1;margin-bottom:12px}.camera-empty h2{font-size:21px;font-weight:500}.camera-empty p{font-size:12px;color:var(--muted);margin:8px 0 17px}.camera-empty small{font-size:11px;color:#93a49a;margin-top:12px}.camera-state{position:absolute;top:12px;left:14px;padding:3px 8px;font-size:11px;background:#101915d9;border-radius:4px;color:#c3d2c8}.crop{position:absolute;left:6%;top:18%;width:88%;height:67%;border:2px solid var(--green);box-shadow:0 0 0 1000px #0006;touch-action:none;cursor:move;min-width:60px;min-height:60px}.crop-label{position:absolute;top:-25px;right:0;color:var(--green);font-size:11px}.resize{position:absolute;right:-8px;bottom:-8px;width:24px;height:24px;border-right:4px solid #effff5;border-bottom:4px solid #effff5;cursor:nwse-resize}.scan-toolbar{display:flex;gap:10px;padding:14px 16px 8px}.scan-toolbar>*{flex:1}.scan-controls{display:flex;align-items:center;gap:12px;padding:0 16px 12px;color:var(--muted);font-size:11px}.scan-controls .text-button{font-size:11px;color:var(--muted)}.scan-controls>span{margin-left:auto}input[type=checkbox]{accent-color:var(--green);vertical-align:middle;margin-right:5px}.question-entry{margin:18px 0}summary{cursor:pointer;list-style:none;font-size:13px}summary:before{content:'＋';margin-right:8px;color:var(--green)}details[open] summary:before{content:'−'}summary span{float:right;color:var(--muted);font-size:11px}textarea{display:block;width:100%;resize:vertical;min-height:88px;max-height:280px;background:#17211c;color:var(--ink);border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:10px;font:inherit;font-size:13px;line-height:1.7}textarea::placeholder{color:#91a196}.entry-actions{display:flex;justify-content:space-between;align-items:center;margin-top:9px}.answer-panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:19px 20px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel-heading h2{font-size:16px;font-weight:500}.panel-heading>span{color:var(--muted);font-size:11px}.empty-result{padding:14px 0 24px}.empty-result>span{font-size:24px;color:#dae7de}.empty-result p{font-size:12px;color:var(--muted);margin-top:8px}.answer-main{color:var(--green);font-size:28px;line-height:1.5;font-weight:650;margin:8px 0 12px;overflow-wrap:anywhere}.answer-main.candidate{color:var(--amber);font-size:19px}.result-stem{font-size:14px;line-height:1.8;margin:12px 0;color:#e1ece5}.badge{font-size:11px;color:var(--green)}.badge.warn{color:var(--amber)}.options{list-style:none;padding:0;margin:10px 0}.options li{display:flex;gap:10px;padding:5px 0;font-size:13px;color:var(--muted)}.options li.correct{color:var(--green)}.options b{font-weight:500;min-width:15px}.note{background:#3a3322;color:var(--amber);padding:10px 12px;border-radius:6px;font-size:12px;margin:10px 0;white-space:pre-wrap}.explanation{color:var(--muted);font-size:12px;margin-top:12px}.explanation p{padding-top:8px;white-space:pre-wrap}.provenance{color:#9aaca0;font-size:11px;margin-top:14px}.candidate-list{margin-top:15px}.candidate-list summary{color:var(--muted)}.candidate-item{border-top:1px solid var(--border);padding-top:12px;margin-top:12px}.candidate-item p{font-size:12px}.candidate-item span{color:var(--amber);font-size:12px}.answer-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:18px;border-top:1px solid var(--border);padding-top:15px}.answer-actions button{font-size:12px}.answer-actions label{font-size:11px;color:var(--muted)}#webResult:not(:empty){border-top:1px solid var(--border);margin-top:16px;padding-top:16px}#webResult h3{font-size:15px;margin:0 0 8px}#webResult p{font-size:13px;white-space:pre-wrap}a{color:var(--green);overflow-wrap:anywhere}.source{margin-top:12px;font-size:12px}.source p{font-size:11px!important;color:var(--muted)}footer{display:flex;justify-content:space-between;color:#91a499;font-size:10px;padding:20px 0 0}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--border);border-radius:14px;width:min(90vw,460px);padding:24px}dialog::backdrop{background:#000b}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.dialog-head h2{font-size:19px}dialog p{font-size:13px;color:var(--muted);margin:12px 0}dialog label{display:block;margin-top:20px;font-size:12px}dialog input[type=password]{display:block;width:100%;padding:12px;border:1px solid var(--border);background:var(--bg);color:var(--ink);border-radius:6px;margin:8px 0 12px}dialog hr{border:0;border-top:1px solid var(--border);margin-top:24px}dialog .small{font-size:11px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:90vw;width:max-content;padding:12px 20px;background:#e4f3e8;color:#183322;box-shadow:0 8px 30px #0008;border-radius:8px;z-index:10}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}@media(max-width:540px){.app{padding:18px 16px;padding-bottom:max(18px,env(safe-area-inset-bottom))}header{margin-bottom:16px}.camera-stage{height:300px}.scan-toolbar{padding:12px 10px 7px;gap:7px}.scan-toolbar button,.scan-toolbar .button{font-size:12px;padding:10px 8px}.scan-controls{padding:0 10px 10px;gap:8px}.answer-panel{padding:16px}.answer-main{font-size:24px}.answer-actions{align-items:flex-start;flex-direction:column}summary span{font-size:10px}.brand p{font-size:10px}.bank-line{font-size:11px}header>.quiet{padding:8px 10px;font-size:12px}footer{font-size:9px}.scan-controls>span{max-width:125px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}

/* Portrait camera preview leaves room for the full question and its options. */
.camera-stage{height:480px}
@media(max-width:540px){.camera-stage{height:auto;aspect-ratio:3/4;min-height:360px;max-height:70svh}.scan-controls>span{max-width:none;flex:1;white-space:normal;overflow:visible;text-overflow:clip}}

