@font-face{font-family:Silkscreen;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/silkscreen-400.woff2)format("woff2")}@font-face{font-family:Silkscreen;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/silkscreen-700.woff2)format("woff2")}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/chakra-petch-600.woff2)format("woff2")}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/chakra-petch-700.woff2)format("woff2")}:root{--bg:#0a0e13;--bg-2:#0f151d;--panel:#121a24;--panel-2:#172130;--line:#22303f;--line-2:#2e4053;--text:#e8eef6;--muted:#8d9bac;--dim:#5d6b7c;--exp-1:#ffe24a;--exp-2:#9fe623;--accent:#ffd43b;--accent-ink:#1a1400;--danger:#ff6161;--ok:#7ee787;--warn:#ffb347;--info:#6ec6ff;--font-ui:"PingFang TC", "Microsoft JhengHei", "Noto Sans TC", system-ui, -apple-system, sans-serif;--font-pixel:"Silkscreen", "PingFang TC", "Microsoft JhengHei", monospace;--font-num:"Chakra Petch", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--radius:6px;--notch:polygon(4px 0, calc(100% - 4px) 0, 100% 4px, 100% calc(100% - 4px), calc(100% - 4px) 100%, 4px 100%, 0 calc(100% - 4px), 0 4px);--notch8:polygon(8px 0, calc(100% - 8px) 0, 100% 8px, 100% calc(100% - 8px), calc(100% - 8px) 100%, 8px 100%, 0 calc(100% - 8px), 0 8px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html{background:var(--bg)}body{min-height:100vh;font-family:var(--font-ui);color:var(--text);background:radial-gradient(ellipse 70% 40% at 50% -8%, #9fe62329, transparent 70%), radial-gradient(ellipse 40% 30% at 100% 100%, #ffe24a0f, transparent 70%), var(--bg);margin:0;font-size:.9375rem;line-height:1.55;position:relative;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background-image:radial-gradient(#8d9bac21 1px,#0000 1.2px);background-size:22px 22px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000000e6,#00000059);mask-image:linear-gradient(#000000e6,#00000059)}body:after{content:"";pointer-events:none;opacity:.06;z-index:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");height:320px;position:absolute;top:0;left:0;right:0;-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}header,main,footer{z-index:1;position:relative}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:.01em;font-weight:700}h1,h2{margin:0;font-weight:700}h2{letter-spacing:.08em;color:var(--muted);text-transform:uppercase;align-items:center;gap:10px;margin:28px 0 10px;font-size:.9375rem;display:flex}h2:after{content:"";background:linear-gradient(to right, var(--line-2), transparent);flex:1;height:1px}a{color:var(--info)}.small,.hint{color:var(--muted);font-size:.8125rem}.warn{color:var(--warn)}.ok{color:var(--ok)}header.top{z-index:5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:linear-gradient(#0a0e13f5,#0a0e13d1);padding:14px 24px 12px;position:sticky;top:0}header.top:after{content:"";background:linear-gradient(to right, var(--exp-1), var(--exp-2) 40%, transparent 75%);opacity:.8;height:2px;position:absolute;bottom:-1px;left:0;right:0}.title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.brand{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.wordmark{font-family:var(--font-pixel);letter-spacing:.06em;color:var(--exp-1);text-shadow:0 0 18px #ffe24a59;font-size:1.125rem;font-weight:700}.wordmark i{color:var(--exp-2);font-style:normal}.brand .sub{color:var(--muted);font-size:.875rem}nav{gap:6px;display:flex}nav .nav{font:inherit;cursor:pointer;color:var(--muted);clip-path:none;background:0 0;border:1px solid #0000;padding:7px 14px 9px;font-size:.875rem;transition:color .15s,box-shadow .15s;box-shadow:inset 0 -2px #0000}nav .nav:hover{color:var(--text)}nav .nav.active{color:var(--exp-1);box-shadow:inset 0 -2px 0 var(--exp-1);font-weight:700}nav .nav:focus-visible{outline:2px solid var(--exp-2);outline-offset:0}.status-row{flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px;font-size:.8125rem;display:flex}.badge{letter-spacing:.04em;background:var(--panel-2);border:1px solid var(--line-2);clip-path:var(--notch);align-items:center;gap:8px;padding:4px 12px 4px 10px;font-weight:700;display:inline-flex}.badge:before{content:"";background:var(--dim);width:8px;height:8px;box-shadow:0 0 0 2px #00000059}.badge[data-status=測量中]{color:var(--ok)}.badge[data-status=測量中]:before{background:var(--ok);box-shadow:0 0 10px var(--ok);animation:3s ease-in-out infinite breathe}.badge[data-status=讀不到]{color:var(--warn)}.badge[data-status=讀不到]:before{background:var(--warn);animation:1s ease-in-out 5 blink}.badge[data-status=已暫停]{color:var(--warn)}.badge[data-status=已暫停]:before{background:var(--warn)}.badge[data-status=已結束]{color:var(--info)}.badge[data-status=已結束]:before{background:var(--info)}.ocr{color:var(--muted)}.ocr.ready{color:var(--muted);align-items:center;gap:6px;font-size:.75rem;display:inline-flex}.ocr.ready:before{content:"";background:var(--ok);width:6px;height:6px}main{max-width:1080px;margin:0 auto;padding:22px 24px 48px}.panel{isolation:isolate;margin-bottom:18px;padding:22px 24px;animation:.5s cubic-bezier(.2,.8,.2,1) both rise;position:relative}.panel:before,.panel:after{content:"";z-index:-1;clip-path:var(--notch8);pointer-events:none;position:absolute}.panel:before{background:var(--line);inset:0}.panel:after{background:linear-gradient(#ffffff1a 0 1px,#172130 1px,#121a24 100%);inset:1px}button{--nb:var(--line-2);--nf:var(--panel-2);isolation:isolate;font:inherit;cursor:pointer;color:var(--text);background:0 0;border:0;padding:10px 18px;font-size:.9375rem;transition:transform 80ms,filter .15s;position:relative}button:before,button:after{content:"";z-index:-1;clip-path:var(--notch);pointer-events:none;position:absolute}button:before{background:var(--nb);inset:0}button:after{background:var(--nf);inset:1px}button:hover:not(:disabled){filter:brightness(1.18)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{--nb:var(--accent);--nf:var(--accent);color:var(--accent-ink);font-weight:700}button.danger{--nb:var(--danger);--nf:var(--danger);color:#2a0000;font-weight:700}button.outline-danger{--nb:var(--danger);--nf:var(--panel);color:var(--danger)}button[data-confirm="1"]{--nb:var(--danger);--nf:var(--danger);color:#2a0000;font-weight:700}.actions .push-right{margin-left:auto}button.secondary{--nf:var(--panel)}nav .nav:before,nav .nav:after{display:none}button.big{letter-spacing:.06em;padding:16px 40px;font-size:1.1875rem}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}input[type=text],input[type=number],textarea{font:inherit;color:var(--text);background:var(--bg-2);border:1px solid #5d6b7c;padding:8px 10px}::placeholder{color:var(--muted);opacity:1}textarea{width:100%;margin-top:10px;font-family:ui-monospace,Menlo,monospace;font-size:.8125rem}input:focus-visible,textarea:focus-visible,button:focus-visible,.skip:focus-visible,.nav:focus-visible{outline:2px solid var(--exp-2);outline-offset:2px}[tabindex="-1"]:focus{outline:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}html{scroll-padding-top:130px}.notched{isolation:isolate;background:0 0;border:0;position:relative}.notched:before,.notched:after{content:"";z-index:-1;clip-path:var(--notch);pointer-events:none;position:absolute}.notched:before{background:var(--nb,var(--line));inset:0}.notched:after{background:var(--nf,var(--panel));inset:1px}.message{--nb:#7a5a22;--nf:#221c12;color:var(--warn);padding:10px 14px}.banner{--nb:#2f6b3c;--nf:#12231a;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:12px 16px;display:flex}.idle-hero{grid-template-columns:1.3fr 1fr;align-items:center;gap:28px;display:grid}.idle-hero .lead{color:var(--muted);margin:0 0 18px;font-size:1rem}.idle-hero .lead b{color:var(--text)}.idle-art{gap:10px;display:grid}.bar-demo{gap:4px;display:grid}.bar-demo .bar{height:14px}.bar-demo .bar .fill{animation:6s ease-in-out infinite demo}.bar-demo .lbl{font-family:var(--font-pixel);color:var(--muted);letter-spacing:.08em;font-size:.75rem}.start-wrap{display:inline-block;position:relative}.start-wrap:before{content:"";border:1px solid var(--accent);opacity:.35;clip-path:var(--notch);pointer-events:none;animation:2.2s ease-in-out infinite halo;position:absolute;inset:-6px}@media (max-width:720px){.idle-hero{grid-template-columns:1fr}}.locating{align-items:center;gap:14px;font-size:1.125rem;font-weight:600;display:flex}.scanner{background:var(--bg-2);border:1px solid var(--line-2);width:120px;height:12px;position:relative;overflow:hidden}.scanner:after{content:"";background:linear-gradient(to right, transparent, var(--exp-2), transparent);width:34px;animation:1.1s linear infinite scan;position:absolute;top:0;bottom:0}.hero{grid-template-columns:1fr auto;align-items:end;gap:18px 28px;display:grid}.hero-main{min-width:0}.hero-main .label{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:8px;font-size:.8125rem;display:flex}.hero-main .value{font-family:var(--font-num);letter-spacing:-.01em;background:linear-gradient(180deg, #fff6c2 0%, var(--exp-1) 45%, var(--exp-2) 100%);color:#0000;font-variant-numeric:tabular-nums;-webkit-background-clip:text;background-clip:text;margin-top:4px;font-size:clamp(2.75rem,9.5vw,6rem);font-weight:700;line-height:1}.hero-main .value.tick{animation:.35s ease-out pop}.hero-main .sub{color:var(--muted);align-items:baseline;gap:10px;margin-top:10px;font-size:.8125rem;display:flex}.hero-main .sub .num{color:var(--text);font-size:1.875rem;font-weight:600}.hero-side{justify-items:end;gap:8px;display:grid}.thumb{image-rendering:pixelated;border:1px solid var(--line-2);opacity:.9;background:#000;max-width:300px;height:auto}.thumb-label{font-family:var(--font-pixel);color:var(--muted);letter-spacing:.1em;font-size:.75rem}.expbar{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-top:18px;display:grid}.expbar .tag{font-family:var(--font-pixel);color:var(--text);letter-spacing:.06em;font-size:.875rem;font-weight:700}.bar{border:1px solid var(--line-2);background:#0c1117;height:18px;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0d,inset 0 0 0 1px #0006}.bar .fill{background:linear-gradient(180deg, #fff59a 0%, var(--exp-1) 35%, var(--exp-2) 100%);width:0%;transition:width .6s cubic-bezier(.2,.8,.2,1);position:absolute;top:0;bottom:0;left:0;box-shadow:0 0 12px #9fe62373}.bar .ticks{pointer-events:none;background-image:repeating-linear-gradient(90deg,#0000 0 calc(10% - 1px),#00000073 calc(10% - 1px) 10%);position:absolute;inset:0}.expbar .reading{font-family:var(--font-num);color:var(--text);white-space:nowrap;font-size:1rem;font-weight:600}.expbar .reading .pct{color:var(--exp-2)}.stats{grid-template-columns:repeat(6,1fr);gap:10px;margin-top:18px;display:grid}.stat{--nb:var(--line);--nf:#0d1218;animation:.5s cubic-bezier(.2,.8,.2,1) both rise;animation-delay:calc(var(--i,0) * 60ms);grid-column:span 2;padding:10px 12px}.stat.primary{grid-column:span 3}.stat .label{color:var(--muted);letter-spacing:.04em;justify-content:space-between;gap:8px;font-size:.75rem;display:flex}.stat .label small{color:var(--dim);font-size:.6875rem;font-weight:400}.stat .value{font-family:var(--font-num);font-variant-numeric:tabular-nums;color:var(--text);margin-top:4px;font-size:1.375rem;font-weight:700}.stat.primary .value{font-size:1.875rem}.stat .value .unit{font-family:var(--font-ui);color:var(--muted);margin-left:6px;font-size:.8125rem;font-weight:400}.stat .value.dim{color:var(--muted)}.warming{margin:10px 0 0}.ended-stats{grid-template-columns:repeat(3,1fr)}.ended-stats .stat,.ended-stats .stat.primary{grid-column:span 1}@media (max-width:900px){.stats,.ended-stats{grid-template-columns:repeat(2,1fr)}.stat,.stat.primary{grid-column:span 1}}.approx{color:var(--warn);font-family:var(--font-ui);font-weight:700}.pause-reason{color:var(--warn);border-left:3px solid var(--warn);background:#ffb34712;margin:14px 0 0;padding:8px 12px}@media (max-width:760px){header.top{position:static}.brand .sub{display:none}.hero{grid-template-columns:1fr}.hero-side{justify-items:start}.thumb{max-width:100%}}.char{grid-template-columns:auto auto;justify-content:end;align-items:center;gap:10px;display:grid}.char .level{font-family:var(--font-num);color:var(--exp-1);letter-spacing:.02em;font-size:1.25rem;font-weight:700}.char .level.unknown{color:var(--muted);font-weight:400}.char-thumb{max-width:220px}.skip{color:var(--info);margin:6px 0;font-size:.8125rem;display:inline-block}.summary{--nb:var(--line);--nf:var(--bg-2);grid-template-columns:auto 1fr;gap:6px 16px;margin:16px 0 0;padding:12px 16px;font-size:.8438rem;display:grid}.copied{margin-left:8px}.summary dt{color:var(--muted)}.summary dd{font-family:var(--font-num);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.panel>h2:first-child{margin-top:0}.debug{color:var(--muted);margin:0 0 8px;font-size:.8125rem}.debug summary{cursor:pointer}.debug .raw-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;display:flex}.raw{background:var(--bg-2);border:1px solid var(--line);min-width:200px;min-height:1.4em;padding:2px 8px;font-family:ui-monospace,Menlo,monospace;display:inline-block}.reject{color:var(--warn)}.history{gap:8px;margin:0;padding:0;list-style:none;display:grid}.history li{--nb:var(--line);--nf:#121a24;grid-template-columns:auto 1fr auto;align-items:center;gap:8px 12px;padding:12px 14px;display:grid}.history .who{justify-items:start;gap:4px;min-width:90px;display:grid}.history .who img{image-rendering:pixelated;border:1px solid var(--line);max-width:150px;height:auto}.history .who .level{font-family:var(--font-num);color:var(--exp-1);font-size:.875rem;font-weight:700}.history .who .level.unknown{color:var(--muted)}.history .fields{color:var(--muted);grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px 14px;font-size:.75rem;display:grid}.history .fields span{flex-direction:column;gap:1px;display:flex}.history .fields b{color:var(--text);font-family:var(--font-num);font-size:.9375rem;font-weight:600}.history .fields b.plain{font-family:var(--font-ui);font-size:.8125rem;font-weight:600}.history .fields b.dim{color:var(--muted);font-weight:400}.history .saved{color:var(--ok);font-size:.75rem}.history .fields span:nth-child(3) b{color:var(--exp-1)}.history .note-row{color:var(--muted);grid-column:1/-1;align-items:center;gap:8px;font-size:.8125rem;display:flex}.history .note-row input{flex:1;max-width:360px}.table-wrap{border:1px solid var(--line);max-width:560px;max-height:60vh;margin-top:12px;overflow:auto}.import-block{margin-top:8px}.exp-table{border-collapse:collapse;width:100%}.exp-table th,.exp-table td{border-bottom:1px solid var(--line);text-align:left;padding:5px 12px}.exp-table thead th{background:var(--panel);letter-spacing:.06em;color:var(--muted);font-size:.75rem;position:sticky;top:0}.exp-table th[scope=row]{font-family:var(--font-num);color:var(--muted);font-size:.8125rem;font-weight:600}.exp-table input{width:170px;font-family:var(--font-ui);font-variant-numeric:tabular-nums}.exp-table tr:target{outline:2px solid var(--exp-2)}.exp-table tr.overridden th[scope=row]{color:var(--exp-1)}.exp-table tr.overridden th[scope=row]:after{content:" *"}footer{text-align:center;color:var(--dim);border-top:1px solid var(--line);padding:16px;font-size:.7812rem}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}@keyframes breathe{0%,to{opacity:1}50%{opacity:.55}}@keyframes pop{0%{transform:scale(1)}30%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes scan{0%{left:-34px}to{left:100%}}@keyframes halo{0%,to{opacity:.35;inset:-6px}50%{opacity:.12;inset:-10px}}@keyframes demo{0%{width:12%}45%{width:78%}55%{width:78%}60%{width:2%}to{width:12%}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}html.reduce-motion *,html.reduce-motion :before,html.reduce-motion :after{transition:none!important;animation:none!important}@media (max-height:600px){header.top{position:static}}@media (forced-colors:active){.bar .fill,.badge:before,.ocr.ready:before,.scanner:after{forced-color-adjust:none;background:highlight}.hero-main .value{color:canvastext;-webkit-text-fill-color:CanvasText;background:0 0}.thumb{border-color:canvastext}}
