:root{--ink:#1d232b;--muted:#5d6875;--line:#d9dee4;--bg:#f6f7f9;--card:#fff;--accent:#2a6fdb;--warn:#b25b00;--bad:#b3261e;--good:#1f7a3a;color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:var(--accent)}h1{margin:0 0 1rem;font-size:1.5rem}h2{margin:1.5rem 0 .5rem;font-size:1.15rem}.topbar{color:#fff;background:#1f3b5c;align-items:center;gap:1.5rem;padding:.6rem 1.2rem;display:flex}.topbar a{color:#fff;text-decoration:none}.topbar nav{flex:1;gap:1rem;display:flex}.brand{font-weight:700}.who{align-items:center;gap:.8rem;font-size:.9rem;display:flex}.footer{color:var(--muted);padding:1rem 1.2rem;font-size:.8rem}.page{max-width:1100px;margin:0 auto;padding:1.2rem}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;margin-bottom:1rem;padding:1rem 1.2rem}.row{flex-wrap:wrap;align-items:flex-end;gap:1rem;display:flex}.muted{color:var(--muted)}.warn{color:var(--warn)}.bad{color:var(--bad)}.good{color:var(--good)}.small{font-size:.85rem}label{flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}input,select,textarea{font:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;padding:.4rem .5rem}textarea{min-height:5rem;font-family:ui-monospace,monospace;font-size:.8rem}button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:6px;padding:.45rem .9rem}button.secondary{color:var(--accent);background:#fff}button.link{color:inherit;background:0 0;border:none;padding:0;text-decoration:underline}button:disabled{opacity:.5;cursor:default}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.4rem .5rem}th{color:var(--muted);font-weight:600}.badge{border:1px solid var(--line);border-radius:999px;padding:.05rem .5rem;font-size:.75rem;display:inline-block}.badge.measured{border-color:var(--good);color:var(--good)}.badge.nominal{border-color:var(--warn);color:var(--warn)}.badge.unverified{border-color:var(--bad);color:var(--bad)}.error{color:var(--bad);margin:.5rem 0}.stage{z-index:10;cursor:none;position:fixed;inset:0}.stage-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.stage-error{color:var(--bad);background:#fff;padding:.5rem;position:absolute;top:1rem;left:1rem}.stage-overlay{cursor:default;color:#333;flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex;position:absolute;inset:0}.stage-overlay .panel{border:1px solid var(--line);background:#fffffff2;border-radius:8px;max-width:640px;padding:1.2rem 1.5rem}.pad{grid-template-rows:repeat(3,3rem);grid-template-columns:repeat(3,4rem);gap:.4rem;display:grid}.pad button{padding:0;font-size:1.3rem}.pad .up{grid-area:1/2}.pad .left{grid-area:2/1}.pad .none{grid-area:2/2;font-size:.75rem}.pad .right{grid-area:2/3}.pad .down{grid-area:3/2}.home-test{max-width:760px;font-size:1.25rem;line-height:1.5}.home-test h1{font-size:2rem}.home-test .steps li{margin-bottom:.5rem}.home-test .fix-check{margin:.8rem 0 1.2rem}.home-test .ask-card{border:3px solid var(--accent)}.home-test .fix-check h3{margin:0 0 .3rem;font-size:1.4rem}.home-test .fix-check summary{cursor:pointer;padding:.4rem 0}.home-test .fix-steps{padding-left:1.8rem}.home-test .fix-steps li{margin-bottom:.6rem}.home-test .address{word-break:break-all;background:#eef3fb;border-radius:4px;padding:0 .3rem;font-family:ui-monospace,monospace}button.big{border-radius:10px;padding:.8rem 1.6rem;font-size:1.4rem}.ok-card{border-color:var(--good)}.bad-card{border-color:var(--bad)}.tabs{gap:.5rem;margin-bottom:1rem;display:flex}.tabs button{color:var(--accent);background:#fff}.tabs button.active{background:var(--accent);color:#fff}.kv{grid-template-columns:max-content 1fr;gap:.15rem 1rem;font-size:.85rem;display:grid}.kv dt{color:var(--muted)}.kv dd{word-break:break-all;margin:0;font-family:ui-monospace,monospace}.scroll{overflow-x:auto}table.dense{font-family:ui-monospace,monospace;font-size:.75rem}table.dense td,table.dense th{white-space:nowrap;padding:.15rem .35rem}.badge.model{border-color:var(--accent);color:var(--accent)}a.button{background:var(--accent);color:#fff;border-radius:6px;padding:.5rem 1rem;text-decoration:none;display:inline-block}a.button.big{border-radius:10px;padding:.8rem 1.6rem;font-size:1.4rem}.white-screen{z-index:1000;cursor:none;background:#fff;position:fixed;inset:0}.white-screen-text{text-align:center;color:#555;font-size:1.4rem;position:absolute;top:1rem;left:0;right:0}.alert-card{border:2px solid var(--bad);background:#fff6f5}.alert-card h2{color:var(--bad)}label.confirm{flex-direction:row;align-items:flex-start;gap:.6rem;margin:1rem 0;font-size:1.25rem;display:flex}label.confirm input{width:1.6rem;height:1.6rem;margin-top:.2rem}.badge.demo{color:#8a4fd0;border-color:#8a4fd0}.demo-card{border-style:dashed;border-color:#8a4fd0}pre.cmd{border:1px solid var(--line);white-space:pre-wrap;word-break:break-all;-webkit-user-select:all;user-select:all;background:#eef1f5;border-radius:6px;padding:.5rem .7rem;font-size:.85rem}.result-card{border-left:6px solid var(--accent)}.result-card h2{font-size:1.4rem}button.danger:not(.link){background:var(--bad);border-color:var(--bad);color:#fff}button.link.danger{color:var(--bad)}.delete-confirm{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}.swatch{border:1px solid var(--line);vertical-align:middle;border-radius:3px;width:1.1em;height:1.1em;display:inline-block}.cone-settings{border-top:1px dashed var(--line);margin-top:.4rem;padding-top:.4rem}.pick-col{width:1.8rem;padding-right:0}input.pick{cursor:pointer;width:1.05rem;height:1.05rem;margin:.1rem 0 0}tr.picked td{background:#fff4f3}.bulk{margin:.6rem 0}.bulk-bar{border:1px solid var(--line);background:#f3f5f8;border-radius:6px;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.45rem .6rem;display:flex}.bulk-bar>button.danger{margin-left:auto}.bulk-actions{flex-wrap:wrap;gap:.2rem .8rem;font-size:.85rem;display:inline-flex}.bulk-actions button.link{color:var(--accent)}.delete-panel{border:2px solid var(--bad);margin-top:.6rem}.delete-panel h3{color:var(--bad);margin:0 0 .4rem;font-size:1.05rem}.delete-panel ul.totals{margin:.2rem 0 .6rem}.delete-panel label.inline,label.inline{flex-direction:row;align-items:flex-start;gap:.45rem}.delete-panel details.refused{margin:.4rem 0}.tree-tools{gap:.8rem;margin-bottom:.3rem}table.tree td{vertical-align:middle}table.tree tr.tree-day td{background:#fafbfc;font-weight:600}table.tree tr.tree-day td.tree-what,table.tree tr.tree-day td.tree-result{font-size:.85rem;font-weight:400}table.tree tr.tree-session td{font-weight:400}table.tree tr.tree-test td{color:var(--muted);border-bottom-style:dotted;font-size:.85rem;font-weight:400}table.tree tr.tree-test td:nth-last-child(2){color:var(--ink)}.tree-label{white-space:nowrap}.tree-label.lvl2{padding-left:1.6rem}.tree-label.lvl3{padding-left:3.4rem}button.twisty{color:var(--muted);background:0 0;border:none;margin-right:.3rem;padding:0 .15rem;font-size:.85rem;line-height:1;transition:transform .12s;display:inline-block}button.twisty[aria-expanded=true]{transform:rotate(90deg)}button.twisty:disabled{visibility:hidden}.card.picked-card{border-color:var(--bad);background:snow}.filters{flex-wrap:wrap;align-items:flex-end;gap:.6rem 1rem;display:flex}.filters label{font-size:.85rem}.white-screen-ring{pointer-events:none;border:3px solid #9aa5b1;border-radius:50%;width:15vh;height:15vh;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lux-guide{border:2px solid var(--line);background:var(--card);border-radius:12px;margin-bottom:1rem;padding:1rem 1.2rem}.lux-guide h2{margin-top:0;font-size:1.5rem}.lux-guide .lux-say{margin:.6rem 0;font-size:1.35rem;line-height:1.5}.lux-guide ol.lux-list{padding-left:1.6rem;font-size:1.3rem;line-height:1.55}.lux-guide ol.lux-list li{margin-bottom:.35rem}.lux-scene{width:100%;max-width:640px;height:auto;margin:.4rem auto;display:block}.lux-progress{flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.4rem;display:flex}.lux-progress span{background:var(--line);border-radius:999px;width:2.1rem;height:.55rem}.lux-progress span.done{background:var(--good)}.lux-progress span.now{background:var(--accent)}.lux-progress .lux-count{width:auto;height:auto;color:var(--muted);background:0 0;margin-left:.4rem;font-size:.95rem}.lux-controls{flex-wrap:wrap;align-items:center;gap:.8rem;margin-top:.8rem;display:flex}.lux-entry{flex-wrap:wrap;align-items:flex-end;gap:.8rem;margin-top:.8rem;display:flex}.lux-entry input{font-variant-numeric:tabular-nums;width:9rem;padding:.3rem .6rem;font-size:2rem}.lux-readings{color:var(--muted);font-size:1.1rem}.lux-msg{border-radius:8px;margin:.6rem 0;padding:.7rem .9rem;font-size:1.3rem}.lux-msg.ok{color:var(--good);background:#e6f4ea}.lux-msg.warn{color:var(--warn);background:#fdf0e1}.lux-voice{flex-direction:row;align-items:center;gap:.4rem;font-size:1rem;display:flex}.lux-checks label{flex-direction:row;align-items:center;gap:.6rem;margin:.4rem 0;font-size:1.25rem}.lux-checks input[type=checkbox]{width:1.4rem;height:1.4rem}@keyframes lux-tap{0%{transform:translate(18px,46px)}40%{transform:translate(0)}48%{transform:translateY(4px)}56%,70%{transform:translate(0)}to{transform:translate(18px,46px)}}@keyframes lux-lcd-on{0%,44%{opacity:0}50%,to{opacity:1}}@keyframes lux-head-turn{0%,15%{transform:rotate(90deg)}60%,to{transform:rotate(0)}}@keyframes lux-press{0%,8%{transform:translate(90px)}38%,82%{transform:translate(0)}to{transform:translate(90px)}}@keyframes lux-slide-in{0%,8%{opacity:.2;transform:translate(80px,70px)}38%,82%{opacity:1;transform:translate(0)}to{opacity:.2;transform:translate(80px,70px)}}@keyframes lux-hand{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes lux-type{0%,15%{width:0}70%,to{width:120px}}@keyframes lux-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.25)}}@keyframes lux-fade{0%,to{opacity:.25}50%{opacity:1}}@keyframes lux-glow{0%,to{fill:#e9eef4}50%{fill:#fff}}.lux-tap{animation:2.6s ease-in-out infinite lux-tap}.lux-lcd-on{animation:2.6s step-end infinite lux-lcd-on}.lux-head-turn{animation:3.2s ease-in-out infinite lux-head-turn}.lux-press{animation:4.2s ease-in-out infinite lux-press}.lux-slide-in{animation:4.2s ease-in-out infinite lux-slide-in}.lux-clock-hand{animation:3s linear infinite lux-hand}.lux-type{animation:3s steps(4,end) infinite lux-type}.lux-pulse{transform-box:fill-box;animation:1.6s ease-in-out infinite lux-pulse}.lux-fade{animation:2s ease-in-out infinite lux-fade}.lux-glow{animation:3s ease-in-out infinite lux-glow}@media (prefers-reduced-motion:reduce){.lux-scene *{animation:none!important}}
