:root{ --ground:#ECEFF3;--surface:#FFFFFF;--surface-2:#F3F6F9;--surface-3:#E9EEF3; --line:#DCE3EA;--line-soft:#E8EDF2;--text:#16202B;--muted:#5E6B7A;--faint:#93A0AE; --teal:#0FA98E;--teal-bright:#17C6A6;--teal-dim:rgba(15,169,142,.12);--teal-line:rgba(15,169,142,.34); --coral:#E5604A;--coral-bright:#FF7257;--coral-dim:rgba(229,96,74,.11);--coral-line:rgba(229,96,74,.34); --amber:#C6841A;--amber-bright:#E8A33A; --mono:ui-monospace,"SF Mono","JetBrains Mono","Cascadia Code",Menlo,Consolas,monospace; --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,sans-serif; } *{box-sizing:border-box} html,body{margin:0;height:100%} body{background:var(--surface);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.5} .app{display:flex;flex-direction:column;min-height:100vh} .flask{width:15px;height:15px;border:1.5px solid var(--teal);border-radius:0 0 6px 6px;border-top:none;position:relative;flex:none;display:inline-block} .flask::before{content:"";position:absolute;top:-5px;left:2px;right:2px;height:5px;border:1.5px solid var(--teal);border-bottom:none} .flask::after{content:"";position:absolute;bottom:1px;left:1px;right:1px;height:6px;background:linear-gradient(180deg,var(--teal-bright),var(--coral-bright));border-radius:0 0 4px 4px} .head{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,#fbfcfe,#f5f8fb)} .wordmark{font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:-.01em;display:flex;align-items:center;gap:8px} .head .spacer{flex:1} .vbadge{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--teal);background:var(--teal-dim);border:1px solid var(--teal-line);border-radius:5px;padding:2px 7px} .rail{display:flex;gap:5px;padding:10px 14px;border-bottom:1px solid var(--line-soft)} .rail span{flex:1;height:3px;border-radius:99px;background:var(--surface-3)} .rail span.done{background:var(--teal-line)} .rail span.now{background:var(--teal)} .banner{display:flex;gap:8px;align-items:center;margin:12px 14px 0;padding:8px 11px;background:var(--teal-dim);border:1px solid var(--teal-line);border-radius:8px;font-size:11.5px;color:#0c6e5c} .banner b{font-weight:600} .body{padding:14px;flex:1} .kicker{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:10px;color:var(--faint);font-weight:600;margin:0 0 9px} .h-lead{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:0 0 4px;font-family:var(--mono)} .sub{color:var(--muted);font-size:13px;margin:0 0 14px} .field{width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:11px 12px;font-family:var(--mono);font-size:12px;line-height:1.55;color:var(--text);resize:vertical} textarea.field{min-height:120px} .label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.13em;font-size:10px;color:var(--faint);font-weight:600;margin:16px 0 7px} .select{display:flex;align-items:center;justify-content:space-between;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:9px 12px} .select .sl{display:flex;align-items:center;gap:9px} .select .pv{width:18px;height:18px;border-radius:5px;background:var(--text);color:#fff;font-family:var(--mono);font-size:9px;display:flex;align-items:center;justify-content:center;font-weight:700} .select select{border:none;background:transparent;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text);cursor:pointer} .chips{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:7px} .chip{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:9px 6px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;font:inherit;color:var(--muted)} .chip .ic{font-size:15px} .chip .nm{font-family:var(--mono);font-size:10.5px;font-weight:600} .chip[aria-pressed="true"]{border-color:var(--teal-line);background:var(--teal-dim);color:var(--teal)} .chip:disabled{opacity:.62;cursor:not-allowed} .modes{display:grid;grid-template-columns:1fr 1fr;gap:7px} .modes .chip{flex-direction:column;gap:3px;padding:11px 8px} .modes .modesub{font-family:var(--mono);font-size:9px;letter-spacing:.04em;color:var(--faint);text-transform:uppercase} .modes .chip[aria-pressed="true"] .modesub{color:var(--teal)} .chip .badge{font-family:var(--mono);font-size:7.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:1px 5px;border-radius:99px;line-height:1.45;white-space:nowrap} .chip .badge.beta{color:var(--teal);background:var(--teal-dim);border:1px solid var(--teal-line)} .chip .badge.soon{color:var(--amber);background:rgba(198,132,26,.12);border:1px solid rgba(198,132,26,.34)} .btn{appearance:none;border:none;cursor:pointer;font-family:var(--mono);font-weight:600;font-size:12.5px;border-radius:8px;padding:11px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px} .btn.primary{background:var(--teal);color:#fff} .btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)} .btn.block{width:100%} .btn-row{display:flex;gap:9px;margin-top:16px} .facet{border-top:1px solid var(--line-soft);padding:11px 0} .facet:first-of-type{border-top:none} .facet .fr{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px} .facet .fn{font-family:var(--mono);font-size:12px;font-weight:600;display:flex;align-items:center;gap:8px} .facet .fsc{font-family:var(--mono);font-size:12px;font-weight:700} .facet .fbar{height:7px;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:99px;overflow:hidden} .facet .fbar i{display:block;height:100%;border-radius:99px} .facet .fnote{font-size:12px;color:var(--muted);margin:7px 0 0} .hi{color:var(--teal)}.mid{color:var(--amber)}.lo{color:var(--coral)} .bar-hi{background:var(--teal-bright)}.bar-mid{background:var(--amber-bright)}.bar-lo{background:var(--coral-bright)} .suggest{background:var(--teal-dim);border:1px solid var(--teal-line);border-radius:9px;padding:11px 12px;margin-top:14px} .suggest .st{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--teal);margin-bottom:6px} .suggest .sd{font-size:12.5px;color:#0c6e5c} .suggest code{background:rgba(15,169,142,.16);border-radius:4px;padding:1px 5px;font-family:var(--mono)} .suggest .sd + .sd{margin-top:6px} .keybox{margin-top:16px;padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)} .keyrow{display:flex;gap:8px} .keyinput{flex:1;min-height:0} .keystatus{font-family:var(--mono);font-size:10.5px;color:var(--teal);margin-top:7px} .msg{margin-top:14px;padding:9px 11px;border-radius:8px;font-size:12.5px;background:var(--teal-dim);border:1px solid var(--teal-line);color:#0c6e5c} .msg.error{background:var(--coral-dim);border-color:var(--coral-line);color:#8c3527} /* cases */ .case{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--line-soft);align-items:flex-start} .case:first-of-type{border-top:none} .cat{flex:none;width:8px;height:8px;border-radius:99px;margin-top:6px} .cat.typ{background:var(--teal)}.cat.edge{background:var(--amber-bright)}.cat.adv{background:var(--coral)} .case .cx{flex:1;min-width:0} .case .ct{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)} .case .cb{font-size:12.5px;color:var(--text);margin-top:2px;word-break:break-word} .case .rm{flex:none;border:none;background:transparent;color:var(--faint);cursor:pointer;font-size:12px;padding:2px 4px} .case .rm:hover{color:var(--coral)} .case .ct .ctag{margin-left:7px;color:var(--teal);background:var(--teal-dim);border:1px solid var(--teal-line);border-radius:4px;padding:0 5px;letter-spacing:0;text-transform:none;font-weight:600} .costbar{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding:9px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;font-size:12px;color:var(--muted)} /* tool tests (ADR 0001) */ .toolpanel{margin-top:14px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);padding:0 13px} .toolpanel summary{font-family:var(--mono);font-size:12px;font-weight:700;cursor:pointer;padding:11px 0;display:flex;align-items:center;gap:8px} .toolpanel[open]{padding-bottom:14px} .toolhint{font-size:11.5px;color:var(--muted);line-height:1.5;margin:0 0 4px} .toolarea{min-height:84px} .field.mono{font-family:var(--mono)} .toolstatus{font-family:var(--mono);font-size:11px;margin-top:6px;min-height:15px} .toolstatus.ok{color:var(--teal)} .toolstatus.err{color:var(--coral)} .costval{font-family:var(--mono);font-weight:600;color:var(--text)} /* run spinner */ .spinner{width:26px;height:26px;border:3px solid var(--surface-3);border-top-color:var(--teal);border-radius:99px;margin:24px auto 12px;animation:spin .8s linear infinite} @keyframes spin{to{transform:rotate(360deg)}} @media(prefers-reduced-motion:reduce){.spinner{animation:none}} /* results */ .varnote{display:flex;gap:7px;margin:10px 0 2px;padding:8px 11px;background:var(--surface-2);border:1px solid var(--line-soft);border-left:2px solid var(--amber);border-radius:7px;font-size:11.5px;line-height:1.5;color:var(--muted)} .mstrip{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:9px;overflow:hidden} .mstrip div{background:var(--surface);padding:9px 8px;text-align:center} .mstrip .mk{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)} .mstrip .mv{font-family:var(--mono);font-size:13px;font-weight:700;margin-top:3px;color:var(--text)} .scorehero{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:var(--surface-2)} .scorehero .big{font-family:var(--mono);font-size:32px;font-weight:700;line-height:1} .scorehero .big.hi{color:var(--teal)}.scorehero .big.mid{color:var(--amber)}.scorehero .big.lo{color:var(--coral)} .scorehero .sk{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)} .scorehero .sv{font-size:12.5px;color:var(--muted);margin-top:3px} .matrix{border:1px solid var(--line);border-radius:9px;overflow:hidden} .mhead,.mrow{display:grid;grid-template-columns:1fr 56px 48px} .mhead{background:var(--surface-2);border-bottom:1px solid var(--line)} .mhead div{padding:8px 10px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)} .mhead div+div{text-align:center} .mrow{border-top:1px solid var(--line-soft)}.mrow:first-child{border-top:none} .mrow .cse{padding:9px 10px;font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .mrow .cse .cid{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.04em;color:var(--faint);background:var(--surface-2);border:1px solid var(--line-soft);border-radius:4px;padding:1px 5px;margin-right:7px;text-transform:uppercase} .cell{display:flex;align-items:center;justify-content:center;border-left:1px solid var(--line-soft);font-family:var(--mono);font-size:12px;font-weight:600} .cell.ok{color:var(--teal)}.cell.lo{color:var(--coral)} .cell .spread{display:block;font-family:var(--mono);font-size:8.5px;font-weight:600;color:var(--faint);margin-top:1px} .pf.p{color:var(--teal)}.pf.f{color:var(--coral)} /* fixes */ .fix{border:1px solid var(--line);border-radius:9px;padding:12px 13px;margin-bottom:11px;background:var(--surface-2)} .fix .ft{display:flex;align-items:center;gap:9px} .fix .rk{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--coral)} .fix .fh{font-size:13.5px;font-weight:600} .fix .fp{font-size:12.5px;color:var(--muted);margin:7px 0 0} .fix .evid{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:9px} .fix .evid b{color:var(--coral)} /* versions */ .vtl{position:relative;padding-left:20px} .vtl::before{content:"";position:absolute;left:5px;top:6px;bottom:14px;width:2px;background:var(--line)} .ver{position:relative;padding:9px 0} .ver::before{content:"";position:absolute;left:-18px;top:13px;width:10px;height:10px;border-radius:99px;background:var(--surface);border:2px solid var(--teal)} .ver.base::before{border-color:var(--faint)} .ver .vh{display:flex;align-items:center;gap:9px;flex-wrap:wrap} .ver .vt{font-family:var(--mono);font-size:12.5px;font-weight:700} .ver .vsc{font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:auto} .ver .vd{font-family:var(--mono);font-size:11px;font-weight:700} .ver .vd.up{color:var(--teal)}.ver .vd.down{color:var(--coral)}.ver .vd.flat{color:var(--faint)} .ver .vnote{font-size:11.5px;color:var(--muted);margin-top:3px} .ver .vcur{font-family:var(--mono);font-size:9px;color:var(--teal);border:1px solid var(--teal-line);border-radius:4px;padding:1px 5px;background:var(--teal-dim)} /* litmus axis (version vs version) */ #axisWrap{margin-top:6px} .axis-key{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin:2px 2px 10px} .axis-key .a{color:var(--coral)}.axis-key .b{color:var(--teal)} .dim{margin:0 0 12px} .dim .dl{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);margin-bottom:5px;font-family:var(--mono)} .dim .dl .sa{color:var(--coral)}.dim .dl .sb{color:var(--teal)} .track{position:relative;height:10px;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:99px} .track .mid{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--faint);transform:translateX(-.5px);z-index:2} .track .ba{position:absolute;right:50%;top:0;bottom:0;background:linear-gradient(270deg,var(--coral-bright),#c64a36);border-radius:99px 0 0 99px} .track .bb{position:absolute;left:50%;top:0;bottom:0;background:linear-gradient(90deg,var(--teal-bright),#0c8f78);border-radius:0 99px 99px 0} /* settings modal */ .iconbtn{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:7px;width:28px;height:26px;cursor:pointer;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center} .iconbtn:hover{color:var(--text);border-color:var(--faint)} .modal{position:fixed;inset:0;background:rgba(16,32,43,.42);display:flex;align-items:flex-start;justify-content:center;padding:16px 12px;z-index:50;overflow-y:auto} .sheet{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 60px -20px rgba(16,32,43,.5);width:100%;max-width:400px} .sheethead{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line-soft)} .sheethead .wordmark{font-size:14px} .sheetbody{padding:16px} .sheetbody .label:first-child{margin-top:0} /* compact inputs inside the modal */ .sheetbody .field{padding:9px 11px;font-size:12px} .krow{display:flex;align-items:center;gap:10px;margin-bottom:9px} .krow .kname{font-family:var(--mono);font-size:12px;width:80px;flex:none;color:var(--text)} .krow .keyinput{flex:1;min-height:0} .krow .ksaved{font-family:var(--mono);font-size:10px;flex:none;width:42px;text-align:right;color:transparent} .krow .ksaved.on{color:var(--teal)} .krow .ksaved.on::before{content:"●";font-size:8px;margin-right:4px;vertical-align:1px} .tworow{display:grid;grid-template-columns:1fr 1fr;gap:12px} .numin{width:100%;font-family:var(--mono)} .hint2{font-size:11px;color:var(--faint);margin:8px 0 0;line-height:1.45} .sheetbody .btn-row{margin-top:18px} .dimchips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px} .dimchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface-2);border-radius:99px;padding:6px 11px;font-family:var(--mono);font-size:11px;color:var(--muted);cursor:pointer} .dimchip.on{border-color:var(--teal-line);background:var(--teal-dim);color:var(--teal)} .dimchip .dot{width:7px;height:7px;border-radius:99px;display:inline-block} .dimchip .dot.ok{background:var(--teal)} .dimchip .dot.warn{background:var(--amber-bright)} .addrow{display:flex;gap:8px;margin-bottom:14px} .addrow .field{flex:1;min-height:0} .coverage{margin-top:12px;border:1px solid var(--line);border-radius:9px;overflow:hidden} .covsum{font-family:var(--mono);font-size:11px;padding:8px 11px;background:var(--surface-2);border-bottom:1px solid var(--line-soft);color:var(--muted)} .covrow{display:flex;align-items:flex-start;gap:9px;justify-content:space-between;padding:8px 11px;border-top:1px solid var(--line-soft);font-size:12px} .covrow:first-of-type{border-top:none} .covi{color:var(--text);flex:1} .covd{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;flex:none;padding:2px 7px;border-radius:5px;border:1px solid var(--line)} .covd.ok{color:var(--teal);border-color:var(--teal-line);background:var(--teal-dim)} .covd.gap{color:var(--coral);border-color:var(--coral-line);background:var(--coral-dim)} .rhlabel{font-weight:600} textarea.rubric{min-height:240px;font-family:var(--mono);font-size:11px;line-height:1.5;white-space:pre} .rubrichealth{font-family:var(--mono);font-size:11px;margin:8px 0;padding:8px 11px;border-radius:8px;border:1px solid var(--line);background:var(--surface-2);color:var(--muted)} .rubrichealth.ok{border-color:var(--teal-line);background:var(--teal-dim);color:#0c6e5c} .rubrichealth.warn{border-color:var(--amber-line);background:var(--amber-dim);color:#7a5410} .hidden{display:none} .foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--line-soft);font-family:var(--mono);font-size:10.5px;color:var(--faint)} .foot .footlinks{display:flex;align-items:center;gap:6px} .foot a{color:var(--muted);text-decoration:none;font-weight:600} .foot a:hover{color:var(--teal);text-decoration:underline} .foot .dot{color:var(--faint)}