@font-face{font-family:IIT Plex Sans;src:url(./ibm-plex-sans-latin-400-CDDApCn2.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IIT Plex Sans;src:url(./ibm-plex-sans-latin-500-6ng42L7E.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IIT Plex Sans;src:url(./ibm-plex-sans-latin-600-CuJfVYMP.woff2) format("woff2");font-weight:600 700;font-style:normal;font-display:swap}@font-face{font-family:IIT Plex Mono;src:url(./ibm-plex-mono-latin-400-DMJ8VG8y.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IIT Plex Mono;src:url(./ibm-plex-mono-latin-600-BgSNZQsw.woff2) format("woff2");font-weight:500 700;font-style:normal;font-display:swap}@font-face{font-family:IIT Engrave;src:url(./iit-engrave-B0wF9iae.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}:root{--bg: #04070a;--bg-2: #0a1116;--panel: rgba(12, 19, 24, .78);--panel-line: rgba(150, 220, 210, .09);--line-strong: rgba(150, 220, 210, .18);--text: #d6e3e1;--muted: #7d9592;--faint: #4b5f5d;--accent: #6fe3d1;--accent-2: #3fb8a7;--accent-glow: rgba(111, 227, 209, .35);--warn: #e8b877;--bad: #ff8a7a;--radius: 14px;--font: "IIT Plex Sans", "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--mono: "IIT Plex Mono", "Cascadia Mono", "JetBrains Mono", "SF Mono", Consolas, monospace;--engrave: "IIT Engrave", "IIT Plex Sans", "PingFang SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(120% 90% at 50% 38%,#0b1419 0%,#060a0d 55%,var(--bg) 100%);color:var(--text);font:13px/1.5 var(--font);-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;color:inherit}.app{display:grid;grid-template-columns:292px minmax(0,1fr) 312px;height:100%}.center{position:relative;display:flex;flex-direction:column;min-width:0;padding:18px 10px 14px}.panel{overflow-y:auto;padding:18px 16px 24px;border-color:var(--panel-line);scrollbar-width:thin;scrollbar-color:#1d2b2f transparent}.panel.left{border-right:1px solid var(--panel-line);background:linear-gradient(90deg,#080d11e6,#080d118c)}.panel.right{border-left:1px solid var(--panel-line);background:linear-gradient(270deg,#080d11e6,#080d118c)}.brand{display:flex;gap:12px;align-items:center;margin:2px 2px 16px}.brand h1{font-size:16px;font-weight:600;letter-spacing:.06em;margin:0}.brand p{margin:0;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.brand-mark{width:30px;height:30px;border-radius:50%;flex:none;background:radial-gradient(circle at 50% 50%,#7ff5e2 0 12%,#2f8f84 30%,#0f2b2a 58%,#0a1316,#364247 66%,#0b1114 72%);box-shadow:0 0 18px #6fe3d140}.section{margin-bottom:12px;padding:12px 13px 8px;border:1px solid var(--panel-line);border-radius:var(--radius);background:var(--panel)}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.section-head h2{margin:0;font:400 13px/1.2 var(--engrave);letter-spacing:.16em;color:var(--muted)}.section-head h2:before{content:"";display:inline-block;width:7px;height:1px;margin:0 7px 0 0;vertical-align:.3em;background:var(--accent);opacity:.55}.panel-note{color:var(--faint);font-size:12px;display:flex;align-items:center;gap:6px;margin:4px 4px 0}.targets{display:grid;gap:4px}.targets+.targets{margin-top:10px}.target-list{display:grid;gap:4px}.targets-head{font-size:10.5px;letter-spacing:.08em;color:var(--faint);margin:0 4px 1px}.target-name .short{display:none}.target{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:6px 11px;text-align:left;cursor:pointer;background:#ffffff04;border:1px solid transparent;border-radius:10px;transition:background .15s,border-color .15s}.target:hover{background:#6fe3d10d}.target.on{border-color:#6fe3d173;background:linear-gradient(90deg,#6fe3d11f,#6fe3d108)}.target-name{font-size:13.5px;font-weight:500}.target-sub{font-size:11px;color:var(--muted);font-family:var(--mono)}.target.on .target-sub{color:var(--accent-2)}.segmented{display:flex;padding:3px;gap:3px;border-radius:10px;background:#00000059;border:1px solid var(--panel-line);margin-bottom:12px}.segmented button{flex:1;padding:6px 8px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:color .15s,background .15s}.segmented button:hover{color:var(--text)}.segmented button.on{background:linear-gradient(180deg,#6fe3d138,#6fe3d11a);color:var(--accent);box-shadow:inset 0 0 0 1px #6fe3d159}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.chip{padding:5px 11px;border-radius:999px;border:1px solid var(--line-strong);background:transparent;color:var(--muted);cursor:pointer;transition:all .15s}.chip:hover{color:var(--text);border-color:#6fe3d159}.chip.on{color:#031613;background:var(--accent);border-color:var(--accent);box-shadow:0 0 14px var(--accent-glow)}.slider{margin:2px 0 10px}.slider-top{display:flex;align-items:center;gap:6px;margin-bottom:5px}.slider-top label{color:var(--text)}.slider-top output{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--accent);font-variant-numeric:tabular-nums}.slider-aside{font-size:11px;color:var(--muted);margin-top:3px}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:18px;background:transparent;cursor:pointer;margin:0}input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:3px;background:linear-gradient(90deg,var(--accent-2) 0 var(--fill),#1e2c30 var(--fill) 100%)}input[type=range]::-moz-range-track{height:3px;border-radius:3px;background:linear-gradient(90deg,var(--accent-2) 0 var(--fill),#1e2c30 var(--fill) 100%)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-5.5px;border-radius:50%;background:#e9fbf8;border:3px solid var(--accent-2);box-shadow:0 0 0 4px #6fe3d114;transition:box-shadow .15s}input[type=range]::-moz-range-thumb{width:9px;height:9px;border-radius:50%;background:#e9fbf8;border:3px solid var(--accent-2)}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 6px #6fe3d129}input[type=range]:focus{outline:none}.range-track{touch-action:pan-y}.slider.touch input[type=range]{pointer-events:none}.slider.touch.dragging input[type=range]::-webkit-slider-thumb{box-shadow:0 0 0 8px #6fe3d138}.toggle-row{display:flex;align-items:center;gap:9px;margin:2px 0 12px}.toggle{position:relative;width:34px;height:20px;flex:none;border-radius:999px;border:1px solid var(--line-strong);background:#0f181b;cursor:pointer;padding:0;transition:background .2s}.toggle .knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--muted);transition:transform .2s,background .2s}.toggle.on{background:#6fe3d138;border-color:#6fe3d180}.toggle.on .knob{transform:translate(14px);background:var(--accent);box-shadow:0 0 10px var(--accent-glow)}.toggle-label{cursor:pointer;-webkit-user-select:none;user-select:none}.toggle:disabled{opacity:.45;cursor:not-allowed}.toggle:disabled+.toggle-label{cursor:default;color:var(--muted)}.help{position:relative;display:inline-flex;flex:none}.help-btn{width:18px;height:18px;border-radius:50%;border:1px solid var(--line-strong);background:transparent;color:var(--muted);font-size:10.5px;line-height:16px;padding:0;cursor:pointer}.help-btn:hover,.help-btn[aria-expanded=true]{color:var(--accent);border-color:var(--accent-2)}@keyframes pop{0%{opacity:0;transform:translateY(-4px)}}@keyframes rise{0%{transform:translateY(24px);opacity:.4}}.floating{position:fixed;z-index:90;max-height:calc(100vh - 16px);overflow-y:auto;padding:12px 14px;border-radius:12px;font-size:12.5px;line-height:1.65;color:var(--text);background:#091014fa;border:1px solid var(--line-strong);box-shadow:0 16px 40px #0009;animation:pop .14s ease-out;scrollbar-width:thin;scrollbar-color:#1d2b2f transparent}.floating.help-pop{width:min(340px,calc(100vw - 16px))}.floating.menu-pop{width:330px;padding:14px 16px 10px}.floating.qe-sheet{width:470px}.floating .notes,.floating .explain{display:block}.floating .note-line{display:block;margin-top:7px;color:var(--muted)}.floating .note-line b,.floating .notes>b{color:var(--text);font-weight:600}.explain-detail{display:block;margin-top:9px;padding-top:8px;border-top:1px solid var(--panel-line);color:var(--muted);font-size:11.5px;line-height:1.6}.sheet-backdrop{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-end;background:#00000073}.sheet-backdrop.clear{background:transparent}.floating.sheet{position:relative;width:100%;max-height:72vh;padding:0;border-radius:16px 16px 0 0;border-bottom:0;animation:rise .18s ease-out;display:flex;flex-direction:column;overflow:hidden}.sheet-backdrop.clear .floating.sheet{max-height:56vh;box-shadow:0 -12px 36px #000000b3}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 6px 16px;color:var(--muted);font-size:12px;letter-spacing:.12em;border-bottom:1px solid var(--panel-line)}.sheet-close{width:32px;height:32px;border-radius:50%;border:1px solid var(--line-strong);background:transparent;color:var(--text);font-size:18px;line-height:1;cursor:pointer}.sheet-body{overflow-y:auto;padding:12px 16px calc(14px + env(safe-area-inset-bottom))}.advanced{margin:2px -4px;border-top:1px dashed var(--panel-line)}.advanced-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:8px 4px 6px;border:0;background:transparent;color:var(--muted);font-size:12px;letter-spacing:.08em;cursor:pointer}.advanced-toggle:hover{color:var(--accent)}.advanced-toggle svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4;transition:transform .18s;margin-left:auto}.advanced.open .advanced-toggle svg{transform:rotate(180deg)}.advanced.open .advanced-toggle{color:var(--accent)}.advanced-body{padding:6px 4px 2px;animation:pop .14s ease-out}.choice{display:flex;align-items:center;gap:8px;margin:0 0 12px}.choice-label{color:var(--text);white-space:nowrap}.choice .segmented{flex:1;margin:0}.choice .segmented button{padding:5px 6px;font-size:12px}.choice.stack{flex-wrap:wrap;row-gap:6px}.choice.stack .choice-label{flex:1}.choice.stack .segmented{order:3;flex:1 0 100%;flex-wrap:wrap}.choice.stack .segmented button{flex:1 0 auto;white-space:nowrap}.warn-text{color:var(--warn)}.qe-plot{width:100%;max-width:420px;display:block;margin:0 auto}.qe-plot .plot-bg{fill:#0000004d}.qe-plot .grid{stroke:#ffffff0d;stroke-width:.5}.qe-plot .band{fill:#e8b87724}.qe-plot .curve{fill:none;stroke:var(--accent);stroke-width:1.6;filter:drop-shadow(0 0 3px var(--accent-glow))}.qe-plot .curve.dim{stroke:#96beb938;stroke-width:1;filter:none}.qe-plot .axis{fill:var(--faint);font-size:7.5px;font-family:var(--mono)}.qe-plot.editable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:6px}.qe-plot.editable:hover .plot-bg,.qe-plot.dragging .plot-bg{fill:#0000006b;stroke:var(--line-strong);stroke-width:.5}.qe-plot .curve.dim.base{stroke:#d2e6e273;stroke-dasharray:2 2}.qe-plot .axis.hint{fill:var(--muted);opacity:.7}.qe-plot .axis.unit{opacity:.8}.qe-plot .tick{stroke:#ffffff38;stroke-width:.6}.qe-plot.tappable{cursor:pointer;touch-action:pan-y}.qe-plot.large{max-width:none}.qe-tools{display:flex;align-items:center;gap:8px;margin-top:6px}.qe-actions{display:flex;gap:8px;margin-left:auto}.qe-tools .fit,.qe-sheet-foot .fit{white-space:nowrap;align-self:auto;margin:0;padding:4px 10px}.fit:disabled{opacity:.35;cursor:default;background:transparent}.fit.strong{border-color:#6fe3d173;background:#6fe3d114}.qe-editor-tools{display:flex;gap:8px}.qe-editor-tools .segmented{flex:1;margin-bottom:8px}.qe-editor-tools .segmented button{padding:6px 4px}.qe-sens{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px;margin:0 0 2px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.qe-sens b{font:600 17px/1.2 var(--mono);color:var(--accent)}.qe-sens em{font-style:normal;font-family:var(--mono);font-size:11.5px}.qe-sens em.up{color:var(--accent)}.qe-sens em.down{color:var(--warn)}.qe-readout{margin:0 0 6px;min-height:1.6em;color:var(--muted);font:12px/1.6 var(--mono);font-variant-numeric:tabular-nums}.qe-sheet-foot{display:flex;align-items:center;gap:8px;margin-top:8px}.qe-sheet-foot .qe-actions{margin-left:0;margin-right:auto}.chip.edited{color:var(--accent);border-color:var(--accent-2);border-style:dashed}.plot-unit{display:flex;justify-content:flex-end;margin:-2px 0 4px}.plot-unit .segmented{margin:0;padding:2px;gap:2px}.plot-unit .segmented button{flex:none;padding:1px 9px;font-size:11px}.sheet-line{margin:5px 0 0;font:11.5px/1.4 var(--mono);color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}.field-note{margin:0 0 12px;color:var(--muted);font-size:12px}.field-note.warn{color:#e8b877}.pointing{display:flex;align-items:center;gap:8px;margin:-4px 0 12px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.pointing>span:first-child{flex:1}.qe-plot .marker{stroke:#e8b87759;stroke-width:.6;stroke-dasharray:2 2}.qe-plot .curve.system{stroke:#e9f3f1;stroke-width:1.2;filter:none}.qe-plot .curve.dim.optics{stroke:#96beb999;stroke-dasharray:3 2}.mtf-plot{margin-top:2px}.sheet{width:100%;border-collapse:collapse;font-size:11.5px;font-variant-numeric:tabular-nums}.sheet th{font-weight:500;color:var(--faint);text-align:right;padding:0 4px 5px;font-size:11px}.sheet th:first-child{text-align:left}.sheet td{padding:3px 4px;border-top:1px solid var(--panel-line);text-align:right;font-family:var(--mono);color:var(--accent);white-space:nowrap}.sheet td:first-child{font-family:var(--font);color:var(--text);text-align:left;white-space:normal}.sheet .a{color:#6fe3d1}.sheet th.a,.sheet th.b{color:inherit}.sheet .b{color:#e8b877}.sheet td.b.diff{font-weight:600}.sheet .l3{color:var(--faint)}.sheet .unit{display:block;color:var(--faint);font-size:10px;line-height:1.3}.sheet td{vertical-align:top}.snr-card{margin:0 0 14px;padding:10px 11px 9px;border-radius:12px;background:#0000004d;border:1px solid var(--panel-line)}.snr-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.snr-title{color:var(--text)}.snr-sub{margin-left:auto;color:var(--faint);font-size:11px;font-variant-numeric:tabular-nums}.snr-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}.snr-tile{display:flex;flex-direction:column;align-items:flex-start;padding:6px 9px 7px;border-radius:9px;background:#6fe3d10d;border:1px solid var(--panel-line)}.snr-tile b{font:600 22px/1.15 var(--mono);color:var(--accent);font-variant-numeric:tabular-nums;text-shadow:0 0 10px var(--accent-glow)}.snr-tile span{font-size:11.5px;color:var(--muted)}.snr-tile em{font-style:normal;font-size:11px;color:var(--faint)}.snr-bar{display:flex;height:5px;margin:10px 0 5px;border-radius:3px;overflow:hidden;background:#1e2c30}.snr-bar i,.snr-legend i{display:block}.snr-bar .sky,.snr-legend .sky{background:#5b8fd6}.snr-bar .dark,.snr-legend .dark{background:#c9788a}.snr-legend{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.snr-legend span{display:inline-flex;align-items:center;gap:5px}.snr-legend i{width:8px;height:8px;border-radius:2px}.panel.edit-b{--accent: #e8b877;--accent-2: #c9955a;--accent-glow: rgba(232, 184, 119, .32)}.edit-side{position:sticky;top:-18px;z-index:5;margin:-18px -16px 12px;padding:12px 16px 2px;background:linear-gradient(180deg,#060a0df7 70%,#060a0d00)}.panel.left .edit-side{margin-top:-4px;top:-18px}.edit-side .segmented{margin-bottom:8px}.edit-side .segmented button:first-child.on{color:#6fe3d1;background:#6fe3d129;box-shadow:inset 0 0 0 1px #6fe3d173}.edit-side .segmented button:last-child.on{color:#e8b877;background:#e8b87729;box-shadow:inset 0 0 0 1px #e8b87780}.stage{flex:1;min-height:0;display:grid;place-items:center}.eyepiece{position:relative}.bezel{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle closest-side,transparent 0 calc(var(--view, 86%) - .2%),#020304 calc(var(--view, 86%) + .2%),#0c1114 calc(var(--view, 86%) + 1%),transparent calc(var(--view, 86%) + 2%)),conic-gradient(from 210deg,#1a2226,#2b3439,#11181b,#2e373b,#151c1f,#283136,#1a2226);box-shadow:0 0 0 1px #ffffff0a,0 30px 80px #0009,inset 0 2px 3px #ffffff0f,inset 0 -3px 8px #0009}.bezel:after{content:"";position:absolute;inset:7%;border-radius:50%;box-shadow:0 0 40px 6px #000000e6 inset;pointer-events:none}.view{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;cursor:grab;touch-action:none;background:#000}.view.dragging{cursor:grabbing}.ring{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.ring .tick{stroke:#aacdc82e;stroke-width:.18}.ring .tick.major{stroke:#aae1d773;stroke-width:.3}.ring .ring-edge{fill:none;stroke:#6fe3d114;stroke-width:.25}.ring-text{fill:#c8e1dc99;font-size:2.15px;letter-spacing:.18px;font-family:var(--engrave);text-anchor:middle;paint-order:stroke;stroke:#00000073;stroke-width:.12px}.ring-text.top{fill:#dcf0ecd1;font-size:2.6px;letter-spacing:.45px}.view-b{pointer-events:none}.split{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}.split-line{position:absolute;top:0;bottom:0;width:18px;margin-left:-9px;cursor:ew-resize;pointer-events:auto;touch-action:none}.split-line:before{content:"";position:absolute;left:8px;top:3%;bottom:3%;width:2px;border-radius:2px;background:linear-gradient(180deg,transparent,rgba(232,184,119,.8) 12%,rgba(232,184,119,.8) 88%,transparent);box-shadow:0 0 6px #000c}.split-knob{position:absolute;left:50%;top:74%;width:22px;height:22px;transform:translate(-50%,-50%);border-radius:50%;background:#0a0e10c7;border:1.5px solid rgba(232,184,119,.85);box-shadow:0 0 10px #000000b3;opacity:.8;transition:opacity .15s,transform .15s}.split-knob:before,.split-knob:after{content:"";position:absolute;top:50%;border:4px solid transparent;margin-top:-4px}.split-knob:before{left:1px;border-right-color:#e8b877}.split-knob:after{right:1px;border-left-color:#e8b877}.split-line:hover .split-knob,.split-line:active .split-knob{opacity:1;transform:translate(-50%,-50%) scale(1.1)}.split-tag{position:absolute;top:13%;transform:translate(-50%);padding:1px 9px;border-radius:999px;font:600 12px/1.5 var(--mono);background:#03080a9e}.split-tag.a{color:#6fe3d1;border:1px solid rgba(111,227,209,.45)}.split-tag.b{color:#e8b877;border:1px solid rgba(232,184,119,.5)}.split-diff{position:absolute;left:50%;bottom:9%;transform:translate(-50%);max-width:74%;display:flex;flex-wrap:wrap;justify-content:center;gap:4px 6px}.split-diff>span{padding:2px 8px;border-radius:8px;font-size:11px;white-space:nowrap;background:#03080ab3;border:1px solid var(--panel-line);color:var(--muted)}.split-diff em{font-style:normal;margin-right:6px}.split-diff b{font-weight:500;font-family:var(--mono)}.split-diff b.a{color:#6fe3d1}.split-diff b.b{color:#e8b877;margin-left:6px}.split-diff b.b:before{content:"→ ";color:var(--faint)}.split-diff .same,.split-diff .more{color:var(--faint)}.zoom-badge{position:absolute;left:50%;top:9%;transform:translate(-50%);padding:3px 10px;border-radius:999px;font-family:var(--mono);font-size:11px;color:var(--accent);background:#030a0cb8;border:1px solid rgba(111,227,209,.3);pointer-events:none}.toolbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 16px;align-self:center;max-width:100%;margin-top:8px;padding:8px 16px 8px 10px;border-radius:26px;white-space:nowrap;background:#0a1115d1;border:1px solid var(--panel-line);box-shadow:0 10px 30px #0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.toolbar .toggle-row,.toolbar .slider{margin:0}.tool-slider{width:132px}.tool-group{display:flex;align-items:center;gap:6px}.tool-group .segmented{margin:0}.tool-group .segmented button{padding:3px 7px;font-size:11.5px}.tool-label{color:var(--muted);font-size:12px;white-space:nowrap}.fit{padding:3px 8px;border-radius:7px;border:1px solid var(--line-strong);background:transparent;color:var(--accent);font-size:11.5px;cursor:pointer;align-self:flex-end;margin-bottom:1px}.fit:hover{background:#6fe3d11a}.tool-slider .slider-top{margin-bottom:0;font-size:12px}.round{width:38px;height:38px;border-radius:50%;border:1px solid var(--line-strong);background:#6fe3d10f;cursor:pointer;display:grid;place-items:center;flex:none}.round svg{width:16px;height:16px;fill:var(--text)}.round.on{background:#6fe3d129;border-color:#6fe3d173}.round.on svg{fill:var(--accent)}.tool-btn,.tool-reset,.tool-share{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;border:1px solid var(--line-strong);background:transparent;color:var(--text);cursor:pointer;font-size:12px}.tool-btn svg,.tool-reset svg{width:14px;height:14px;fill:var(--muted)}.tool-btn:hover,.tool-btn.on,.tool-share:hover,.tool-share.on{border-color:#6fe3d173;color:var(--accent)}.tool-btn:hover svg,.tool-btn.on svg{fill:var(--accent)}.tool-reset:hover{border-color:#e8b8778c;color:var(--warn)}.tool-reset:hover svg{fill:var(--warn)}.integration .segmented button{min-width:34px}.display-panel{white-space:normal}.display-panel .slider{margin:4px 0 12px}.pop-row{display:flex;align-items:flex-end;gap:10px}.pop-row .grow{flex:1;min-width:0}.pop-row .fit{margin-bottom:14px;padding:4px 10px}.pop-actions{display:flex;gap:8px;margin-top:4px}.pop-actions .fit{flex:1;padding:7px 8px;align-self:auto;margin:0}.pop-note{margin:8px 0 0;color:var(--faint);font-size:11.5px;line-height:1.55}.compute-badge{position:absolute;right:12%;top:13%;padding:2px 9px;border-radius:999px;font-size:11px;color:var(--warn);background:#030a0cb8;border:1px solid rgba(232,184,119,.35);pointer-events:none;animation:pop .2s ease-out}.hud{position:absolute;z-index:3;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px;max-width:30%;padding:5px 9px 6px;border-radius:10px;background:#03080a9e;border:1px solid var(--panel-line);pointer-events:auto;font-size:11px;line-height:1.35;color:var(--muted);font-variant-numeric:tabular-nums}.hud b{font:600 16px/1.1 var(--mono);color:var(--accent);text-shadow:0 0 8px var(--accent-glow)}.hud-k{color:var(--muted)}.hud-u{color:var(--faint);font-size:10px}.hud-line{flex-basis:100%;color:var(--text);opacity:.8}.hud-tl{left:0;top:0}.hud-tr{right:0;top:0;justify-content:flex-end;text-align:right}.observer-switch{position:absolute;right:0;bottom:0;z-index:3;display:flex;gap:2px;padding:3px;border-radius:999px;background:#03080a9e;border:1px solid var(--panel-line)}.observer-switch button{border:0;background:none;color:var(--muted);font:inherit;font-size:12px;line-height:1.2;padding:4px 10px;border-radius:999px;cursor:pointer}.observer-switch button:hover{color:var(--text)}.observer-switch button.on{background:#6fe3d129;color:var(--accent)}.cost-hud{left:0;bottom:0;flex-direction:column;flex-wrap:nowrap;align-items:flex-start;text-align:left;font:inherit;font-size:11px;cursor:pointer;transition:border-color .3s,box-shadow .3s}.cost-hud:hover,.cost-hud.open{border-color:#e8b87773}.cost-hud.open{z-index:5}.cost-hud .cost-total{color:#f2c98a;text-shadow:0 0 8px rgba(232,184,119,.45);white-space:nowrap;transition:color .35s,text-shadow .35s;animation:cost-pop .45s ease-out}.cost-hud .cost-b{font-size:12px;color:#e8b877;opacity:.85;animation:none}.cost-hud.up .cost-total:not(.cost-b){color:#ff9b7a;text-shadow:0 0 12px rgba(255,120,90,.7)}.cost-hud.down .cost-total:not(.cost-b){color:#8af0c8;text-shadow:0 0 12px rgba(111,227,190,.6)}.cost-hud.shake{animation:cost-shake .5s ease-in-out}.cost-tier{white-space:nowrap;animation:cost-pop .4s ease-out}.cost-tier.t5,.cost-tier.t6{color:#ffb38a;opacity:1}.cost-tier.t7{color:#ff7f6e;opacity:1;font-weight:600}.cost-delta{position:absolute;left:calc(100% + 6px);bottom:6px;padding:1px 7px;border-radius:999px;font:600 11px/1.4 var(--mono);white-space:nowrap;pointer-events:none;background:#03080acc;animation:cost-float .3s ease-out;transition:opacity .4s,transform .4s}.cost-delta.fading{opacity:0;transform:translateY(-12px)}.cost-hud .hud-line{flex-basis:auto}.cost-delta.up{color:#ff9b7a;border:1px solid rgba(255,140,110,.5)}.cost-delta.down{color:#8af0c8;border:1px solid rgba(111,227,190,.5)}.cost-detail{position:absolute;left:0;bottom:calc(100% + 6px);display:grid;gap:3px;width:max-content;min-width:190px;max-width:260px;padding:8px 10px;border-radius:10px;background:#060b0ef0;border:1px solid var(--line-strong);box-shadow:0 10px 30px #00000080;cursor:default;animation:pop .2s ease-out}.cost-row{display:flex;gap:10px;align-items:baseline}.cost-row em{flex:1;font-style:normal;color:var(--muted)}.cost-row i{font:500 11.5px var(--mono);font-style:normal;color:var(--text);white-space:nowrap}.cost-row i.b{color:#e8b877}.cost-note{margin-top:4px;color:var(--faint);font-size:10.5px;line-height:1.45;white-space:normal}@keyframes cost-pop{0%{transform:scale(1.18)}to{transform:none}}@keyframes cost-float{0%{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:none}}@keyframes cost-shake{0%,to{transform:none}20%{transform:translate(-4px) rotate(-1.5deg)}40%{transform:translate(4px) rotate(1.5deg)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}@media(prefers-reduced-motion:reduce){.cost-hud,.cost-hud .cost-total,.cost-tier,.cost-delta{animation:none}}.drag-hint{position:absolute;left:0;bottom:74px;z-index:3;display:flex;align-items:center;gap:8px;max-width:46%;padding:7px 11px;border-radius:12px;background:#6fe3d129;border:1px solid rgba(111,227,209,.55);color:var(--accent);font-size:12.5px;line-height:1.35;pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity .6s,transform .6s}.drag-hint.show{opacity:1;transform:none;animation:nudge 2.6s ease-in-out infinite}.drag-hint svg{width:22px;height:22px;flex:none;fill:var(--accent)}.drag-hint em{display:block;font-style:normal;font-size:11px;color:var(--muted)}@keyframes nudge{0%,70%,to{transform:none}80%{transform:translate(5px)}90%{transform:translate(-3px)}}.readout{display:flex;align-items:baseline;gap:4px;font-family:var(--mono);white-space:nowrap}.readout .big{font-size:18px;color:var(--accent);min-width:2ch;text-align:right}.readout .unit{color:var(--muted);font-size:11px}.readout .sub{color:var(--faint);font-size:11px;margin-left:8px}.toast{position:fixed;z-index:60;left:50%;bottom:24px;transform:translate(-50%);display:flex;gap:14px;align-items:center;max-width:min(640px,90vw);padding:10px 12px 10px 16px;border-radius:12px;background:#281410f2;border:1px solid rgba(255,138,122,.4);color:#ffd9d2}.toast.fatal{top:50%;bottom:auto;transform:translate(-50%,-50%)}.toast button{border:1px solid rgba(255,138,122,.5);background:transparent;border-radius:8px;padding:4px 10px;cursor:pointer;white-space:nowrap}.verify{position:fixed;z-index:40;right:330px;bottom:16px;width:min(760px,60vw);max-height:70vh;overflow:auto;padding:14px 16px;border-radius:var(--radius);background:#060b0ef5;border:1px solid var(--line-strong);font-size:12px}.verify h2{margin:0 0 6px;font-size:13px}.verify table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11px;margin:8px 0}.verify th,.verify td{padding:3px 6px;border-bottom:1px solid var(--panel-line);text-align:right}.verify th:first-child,.verify td:first-child{text-align:left;font-family:var(--font)}.verify .ok{color:var(--accent)}.verify .bad{color:var(--bad)}.verify .muted{color:var(--muted)}@media(max-width:1100px){body{overflow:auto}.app{grid-template-columns:1fr;height:auto}.center{order:-1;height:auto;padding:10px 6px}.stage{flex:none;height:min(calc(100vw - 12px),72vh)}.panel{border:0;overflow:visible}.panel.left,.panel.right{background:none}.toolbar{flex-wrap:wrap;justify-content:center;border-radius:18px;gap:10px 14px}.verify{right:8px;left:8px;width:auto}.edit-side{position:static;margin:0 0 12px;padding:0;background:none}.panel.left .edit-side{margin-top:0}}@media(max-width:760px){body{font-size:13.5px}.hud{padding:3px 6px 4px;font-size:10px;max-width:34%}.hud b{font-size:13px}.cost-hud .cost-b{font-size:11px}.cost-detail{min-width:160px;font-size:10.5px}.observer-switch{flex-direction:column;gap:1px;padding:2px;border-radius:10px}.observer-switch button{font-size:10px;padding:2px 7px;border-radius:8px}.drag-hint{left:50%;bottom:14%;translate:-50% 0;width:max-content;max-width:80%;font-size:11px;padding:5px 9px;gap:6px;background:#030e0ec7}.drag-hint svg{width:18px;height:18px}.drag-hint em{font-size:10px}.toolbar{margin-left:6px;margin-right:6px}.toolbar{margin-top:4px;padding:5px 8px;gap:6px 10px;border-radius:14px;background:#0a1115e6;box-shadow:none}.toolbar .round{width:34px;height:34px}.tool-slider{width:108px}.tool-slider .help{display:none}.tool-slider .slider-top label{color:var(--muted);font-size:12px}.integration .tool-label{display:none}.integration .segmented button{min-width:0;padding:4px 7px}.readout .big{font-size:15px}.app.tab-tube .panel.right .datasheet-section{display:none}.app.tab-sheet .panel.right>.section:not(.datasheet-section){display:none}.section{padding:11px 11px 6px;margin-bottom:10px}.target-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.target{align-items:center;padding:7px 4px;text-align:center;border:1px solid var(--panel-line)}.target-name{font-size:13px}.target-name .full,.target-sub{display:none}.target-name .short{display:inline}.targets-head{margin-bottom:3px}input[type=range]{height:28px}input[type=range]::-webkit-slider-thumb{width:20px;height:20px;margin-top:-8.5px}.toggle{width:40px;height:24px}.toggle .knob{width:18px;height:18px}.toggle.on .knob{transform:translate(16px)}.help-btn{width:22px;height:22px;line-height:20px;font-size:12px}.segmented button{padding:7px 6px}.chip{padding:6px 12px}.floating.qe-sheet .qe-plot.large{width:100%}}.icon{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon-btn{display:inline-grid;place-items:center;width:34px;height:34px;flex:none;padding:0;border-radius:50%;border:1px solid var(--line-strong);background:#ffffff05;color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.icon-btn:hover,.icon-btn.on{color:var(--accent);border-color:#6fe3d180;background:#6fe3d114}.icon-btn:focus-visible,.settings-row:focus-visible,.param-fab:focus-visible,.quick-dock button:focus-visible,.bench-entry:focus-visible,.whatif-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.brand,.app-bar{display:flex;align-items:center;gap:11px}.brand-name{flex:1;min-width:0}.brand-name h1,.brand-name strong{display:block;margin:0;font:400 18px/1.2 var(--engrave);letter-spacing:.05em;white-space:nowrap}.brand-name p{margin:0;font:400 10.5px/1.3 var(--engrave);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.brand-actions{display:flex;gap:6px}.panel.left>.brand{position:sticky;top:-18px;z-index:7;margin:-18px -16px 10px;padding:16px 14px 12px 18px;background:linear-gradient(180deg,#070c0ffa 78%,#070c0f00)}.panel.left>.edit-side{top:46px}.panel.left [data-tour]{scroll-margin-top:72px}.panel.right [data-tour],.panel.bench [data-tour]{scroll-margin-top:12px}.app-bar{display:none}.debug-chip{flex:none;padding:1px 7px;border-radius:999px;font-size:10.5px;color:var(--warn);border:1px solid rgba(232,184,119,.5);background:#e8b87714}.debug-tag{flex:none;margin-left:2px;padding:0 6px;border-radius:6px;font-size:10px;line-height:16px;white-space:nowrap;color:var(--warn);border:1px dashed rgba(232,184,119,.6)}.advanced-sub{margin:14px 0 8px;padding-top:10px;border-top:1px dashed var(--panel-line);font-size:11px;font-weight:600;letter-spacing:.16em;color:var(--muted)}.noise-card{margin:4px 0 14px;padding:10px 11px 2px;border-radius:12px;background:#00000047;border:1px solid var(--panel-line)}.noise-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.noise-title{color:var(--text)}.noise-sub{margin-left:auto;font-size:11px;color:var(--faint)}.noise-meters{display:grid;gap:7px;margin:2px 0 12px}.noise-meter{display:grid;grid-template-columns:30px 1fr 64px;align-items:center;gap:8px;font-size:11.5px;color:var(--muted)}.noise-meter b{font:600 12px var(--mono);color:var(--accent);text-align:right;font-variant-numeric:tabular-nums}.noise-meter .track{position:relative;height:6px;border-radius:3px;background:linear-gradient(90deg,#6fe3d11f,#e8b87747)}.noise-meter .track i{position:absolute;top:50%;width:11px;height:11px;border-radius:50%;transform:translate(-50%,-50%);transition:left .25s ease-out}.noise-meter .track .base{border:1.5px solid var(--muted);background:#0b1418}.noise-meter .track .now{background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.noise-card .slider{margin-bottom:8px}.bench-entry{display:block;width:100%;margin:4px 0 10px;padding:9px 10px 8px;border-radius:12px;text-align:left;color:var(--text);cursor:pointer;border:1px solid rgba(111,227,209,.32);background:linear-gradient(160deg,#6fe3d114,#00000040);transition:border-color .15s,background .15s}.bench-entry:hover{border-color:#6fe3d199;background:linear-gradient(160deg,#6fe3d121,#0003)}.bench-entry.on{border-color:var(--accent)}.bench-entry.plain{display:flex;align-items:center;gap:10px}.bench-entry.plain>span{flex:1;display:flex;flex-direction:column}.bench-entry.plain small,.glance-foot{color:var(--muted);font-size:11px;line-height:1.45}.bench-entry .icon{color:var(--accent)}.glance-head{display:flex;align-items:center;gap:8px}.glance-head>b{color:var(--accent);font-weight:600;white-space:nowrap}.glance-vals{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0 8px;margin-left:auto;font:600 11.5px/1.5 var(--mono);font-variant-numeric:tabular-nums}.glance-go{width:16px;height:16px}.glance-foot{display:block;margin-top:2px}@keyframes fade{0%{opacity:0}}@keyframes drawer-left{0%{transform:translate(-24px);opacity:0}}@keyframes drawer-right{0%{transform:translate(24px);opacity:0}}@keyframes drawer-up{0%{transform:translateY(40px);opacity:.3}}.settings-layer{position:fixed;inset:0;z-index:80;background:#0104068c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade .18s ease-out}.settings-panel{position:absolute;top:0;bottom:0;left:0;display:flex;flex-direction:column;width:min(392px,92vw);outline:none;background:linear-gradient(180deg,#0c171b,#070d10);border-right:1px solid var(--line-strong);box-shadow:24px 0 60px #0009;animation:drawer-left .22s ease-out}.settings-head{position:relative;display:flex;align-items:center;justify-content:space-between;padding:16px 16px 12px 20px;border-bottom:1px solid var(--panel-line)}.settings-head h2{margin:0;font:400 18px/1.2 var(--engrave);letter-spacing:.1em}.settings-head .sheet-grip{display:none}.settings-body{flex:1;overflow-y:auto;padding:16px 16px calc(24px + env(safe-area-inset-bottom));scrollbar-width:thin;scrollbar-color:#1d2b2f transparent}.about-card{display:grid;grid-template-columns:auto 1fr;gap:12px 12px;align-items:center;padding:14px;border-radius:14px;border:1px solid var(--panel-line);background:radial-gradient(120% 140% at 0% 0%,#6fe3d11f,#0003 60%)}.about-card .brand-mark{width:42px;height:42px}.about-name strong{display:block;font-size:15px;letter-spacing:.06em}.about-name span{color:var(--muted);font-size:12px}.about-version,.about-author{grid-column:1 / -1;margin:0}.about-version{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.about-version>div{padding:6px 8px;border-radius:9px;background:#00000047}.about-version dt,.about-author dt{font-size:10.5px;color:var(--faint);letter-spacing:.08em}.about-version dd{margin:1px 0 0;font:600 12px var(--mono);color:var(--text);overflow-wrap:anywhere}.about-author{display:grid;gap:6px;padding-top:10px;border-top:1px solid var(--panel-line)}.about-author>div{display:flex;align-items:baseline;gap:10px}.about-author dt{width:56px;flex:none}.about-author dd{margin:0;color:var(--text);overflow-wrap:anywhere}.about-author dd.todo{color:var(--faint);font-style:italic;font-size:12px}.about-author a{color:var(--accent);text-decoration:none}.settings-group{margin:20px 4px 8px;font-size:11px;font-weight:600;letter-spacing:.22em;color:var(--muted)}.settings-row{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 6px;padding:11px 12px;border-radius:12px;text-align:left;color:var(--text);cursor:pointer;border:1px solid var(--panel-line);background:#ffffff05;transition:border-color .15s,background .15s}button.settings-row:hover{border-color:#6fe3d166;background:#6fe3d10d}.settings-row>.icon{width:20px;height:20px;color:var(--accent)}.settings-row>span{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.settings-row b{font-weight:500}.settings-row small{color:var(--muted);font-size:11.5px;line-height:1.5}.settings-row .row-go{width:16px;height:16px;color:var(--faint)}.switch-row{cursor:default}.tool-share .icon{width:15px;height:15px}.floating.share-pop{width:320px}.share-panel{white-space:normal}.share-row{font-size:13px}.share-row:disabled{cursor:progress;opacity:.65}.share-manual{width:100%;margin:0 0 6px;padding:8px 10px;border-radius:10px;border:1px solid var(--line-strong);background:#0000004d;color:var(--text);font:12px/1.4 ui-monospace,monospace}.switch-row.on{border-color:#e8b87766}.switch-row.on>.icon{color:var(--warn)}.switch-row .toggle.on{background:#e8b87738;border-color:#e8b8778c}.switch-row .toggle.on .knob{background:var(--warn);box-shadow:0 0 10px #e8b87766}.diagnostics{margin:0 0 6px;padding:10px 12px;border-radius:12px;border:1px dashed rgba(232,184,119,.35);background:#00000040}.diagnostics dl{display:grid;gap:4px;margin:0 0 8px}.diagnostics dl>div{display:grid;grid-template-columns:92px 1fr;gap:8px;font-size:11.5px}.diagnostics dt{color:var(--faint)}.diagnostics dd{margin:0;font-family:var(--mono);color:var(--text);overflow-wrap:anywhere}.settings-link{display:inline-flex;align-items:center;gap:4px;color:var(--warn);font-size:12px;text-decoration:none}.settings-link .icon{width:14px;height:14px}.credits{margin:0;padding:0;list-style:none;display:grid;gap:6px}.credits li{padding:8px 10px;border-radius:10px;background:#ffffff05;color:var(--muted);font-size:12px;line-height:1.55}.credits b{display:block;color:var(--text);font-weight:500;font-size:12px}.settings-note{margin:8px 4px 0;color:var(--faint);font-size:11.5px;line-height:1.6}@keyframes tour-in{0%{opacity:0;transform:translateY(6px) scale(.98)}}@keyframes tour-nudge{25%{transform:translate(-6px)}50%{transform:translate(5px)}75%{transform:translate(-3px)}}@keyframes tour-pulse{0%{opacity:.9;inset:-2px}to{opacity:0;inset:-12px}}.tour-layer{position:fixed;inset:0;z-index:10000;pointer-events:none}.tour-blocker{position:absolute;inset:0;pointer-events:auto}.tour-hole{position:fixed;border-radius:12px;pointer-events:none;box-shadow:0 0 0 9999px #020609bd,0 0 0 2px var(--accent),0 0 26px 4px #6fe3d159;transition:left .34s cubic-bezier(.3,.7,.2,1),top .34s cubic-bezier(.3,.7,.2,1),width .34s cubic-bezier(.3,.7,.2,1),height .34s cubic-bezier(.3,.7,.2,1)}.tour-hole:after{content:"";position:absolute;border-radius:14px;border:2px solid var(--accent);animation:tour-pulse 1.8s ease-out infinite}.tour-hole.none{box-shadow:0 0 0 9999px #020609bd}.tour-hole.none:after{display:none}.tour-card{position:fixed;z-index:1;width:min(340px,calc(100vw - 24px));padding:14px 16px;border-radius:16px;pointer-events:auto;outline:none;color:#eaf6f3;background:linear-gradient(180deg,#11221f,#0a1517);border:1px solid rgba(111,227,209,.6);box-shadow:0 18px 50px #000000b3;transition:left .34s cubic-bezier(.3,.7,.2,1),top .34s cubic-bezier(.3,.7,.2,1);animation:tour-in .26s ease-out}.tour-card.nudge{animation:tour-nudge .4s ease-in-out}.tour-card:before{content:"";position:absolute;width:14px;height:14px;background:#10201e;border:1px solid rgba(111,227,209,.6)}.tour-card.side-right:before{left:-8px;top:var(--arrow);transform:translateY(-50%) rotate(45deg);border-right:0;border-top:0}.tour-card.side-left:before{right:-8px;top:var(--arrow);transform:translateY(-50%) rotate(45deg);border-left:0;border-bottom:0}.tour-card.side-bottom:before{top:-8px;left:var(--arrow);transform:translate(-50%) rotate(45deg);border-right:0;border-bottom:0}.tour-card.side-top:before{bottom:-8px;left:var(--arrow);transform:translate(-50%) rotate(45deg);border-left:0;border-top:0;background:#0b1618}.tour-card.side-center:before{display:none}.tour-top{display:flex;align-items:center;gap:10px}.tour-count{font:600 11px var(--mono);color:var(--accent)}.tour-dots{display:flex;gap:5px}.tour-dots i{width:6px;height:6px;border-radius:50%;background:#ffffff2e;transition:width .2s,background .2s}.tour-dots i.past{background:#6fe3d180}.tour-dots i.on{width:16px;border-radius:3px;background:var(--accent)}.tour-skip{margin-left:auto;padding:2px 4px;border:0;background:none;color:var(--muted);font-size:12px;cursor:pointer}.tour-skip:hover{color:var(--text)}.tour-card h2{margin:10px 0 6px;font-size:17px;font-weight:600;letter-spacing:.02em}.tour-card p{margin:0;color:#c3d6d2;font-size:13px;line-height:1.65}.tour-done{display:flex;align-items:center;gap:6px;margin-top:8px!important;color:var(--accent)!important;animation:fade .2s}.tour-missing{margin-top:8px!important;color:var(--warn)!important;font-size:12px!important}.tour-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.tour-actions button{min-height:36px;padding:6px 14px;border-radius:10px;border:1px solid #3f5957;background:#12252a;color:#eaf6f3;cursor:pointer}.tour-actions .tour-next{color:#04120f;background:var(--accent);border-color:var(--accent);font-weight:700;box-shadow:0 0 16px var(--accent-glow)}@media(max-width:1100px){.tool-share{display:none}.app-bar{display:flex;width:100%;padding:4px 4px 8px 8px}.app-bar .brand-mark{width:26px;height:26px}.panel.left>.brand{display:none}.panel.left [data-tour]{scroll-margin-top:12px}.settings-panel{left:auto;right:0;border-right:0;border-left:1px solid var(--line-strong);box-shadow:-24px 0 60px #0009;animation-name:drawer-right}}@keyframes sheet-in{0%{transform:translateY(36px);opacity:0}}@media(max-width:760px){body{overflow:hidden}.app{display:flex;flex-direction:column;height:100vh;height:100dvh}.center{flex:none;padding:max(4px,env(safe-area-inset-top)) 0 0}.app-bar{padding:2px 8px 6px 12px}.app-bar .brand-name p{display:none}.app-bar .brand-name strong{font-size:14.5px}.stage{height:min(100vw,calc(100dvh - 276px))}.app.sheet-half .stage,.app.sheet-full .stage{height:min(100vw,max(44dvh,calc(100dvh - 440px)))}.quick-dock{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;padding:0 12px}.quick-dock button{display:flex;align-items:center;gap:10px;min-width:0;padding:9px 12px 9px 11px;border-radius:14px;text-align:left;cursor:pointer;color:var(--text);border:1px solid var(--panel-line);background:#0c1418d9}.quick-dock button:active{border-color:#6fe3d180}.quick-dock .icon{color:var(--accent)}.quick-dock span{display:flex;flex-direction:column;min-width:0}.quick-dock small{font-size:10.5px;color:var(--muted)}.quick-dock b{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet-chrome{position:fixed;z-index:40;left:0;right:0;bottom:0;top:var(--sheet-top, 50vh);display:flex;align-items:center;gap:8px;align-content:flex-start;flex-wrap:wrap;padding:14px 10px 0;border-radius:18px 18px 0 0;border-top:1px solid var(--line-strong);touch-action:none;background:linear-gradient(180deg,#0c171b 0,#081014 52px);box-shadow:0 -16px 40px #000000a6;animation:sheet-in .24s ease-out}.app.sheet-full .sheet-chrome{top:max(6px,env(safe-area-inset-top))}.sheet-grip-btn{position:absolute;left:50%;top:0;transform:translate(-50%);width:72px;height:16px;padding:0;border:0;background:none;cursor:grab}.sheet-grip{display:block;width:38px;height:4px;margin:6px auto 0;border-radius:2px;background:#c8e1dc4d}.sheet-chrome .mobile-tabs{flex:1;min-width:0;display:flex;gap:3px;padding:3px;border-radius:12px;background:#0006;border:1px solid var(--panel-line);overflow-x:auto;scrollbar-width:none}.sheet-chrome .mobile-tabs button{flex:1 0 auto;padding:6px 10px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:13px;cursor:pointer;white-space:nowrap}.sheet-chrome .mobile-tabs button.on{color:var(--accent);background:linear-gradient(180deg,#6fe3d138,#6fe3d114);box-shadow:inset 0 0 0 1px #6fe3d161}.sheet-chrome.edit-b .mobile-tabs button.on{color:#e8b877;background:#e8b87724;box-shadow:inset 0 0 0 1px #e8b87773}.sheet-size{width:32px;height:32px}.app>.panel{display:none;position:fixed;z-index:41;left:0;right:0;bottom:0;top:calc(var(--sheet-top, 50vh) + 58px);overflow-y:auto;overscroll-behavior:contain;padding:2px 10px calc(96px + env(safe-area-inset-bottom));border:0;background:none;animation:sheet-in .24s ease-out}.app.sheet-full>.panel{top:calc(max(6px,env(safe-area-inset-top)) + 58px)}.app.sheet-half.tab-observe:not(.bench-open)>.panel.left,.app.sheet-full.tab-observe:not(.bench-open)>.panel.left,.app.sheet-half.tab-tube:not(.bench-open)>.panel.right,.app.sheet-full.tab-tube:not(.bench-open)>.panel.right,.app.sheet-half.tab-sheet:not(.bench-open)>.panel.right,.app.sheet-full.tab-sheet:not(.bench-open)>.panel.right,.app.sheet-half.bench-open>.panel.bench,.app.sheet-full.bench-open>.panel.bench{display:block}.app>.panel>.edit-side{position:sticky;top:-2px;margin:0 -10px 10px;padding:6px 10px 2px;background:linear-gradient(180deg,#081014 80%,#08101400)}.app>.panel [data-tour]{scroll-margin-top:8px}.param-fab{position:fixed;z-index:45;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;height:50px;padding:0 18px 0 15px;border-radius:25px;border:1px solid var(--accent);color:#04120f;font-weight:700;font-size:14px;cursor:pointer;background:linear-gradient(180deg,#8cf0de,#5fd3c1);box-shadow:0 10px 28px #0000008c,0 0 22px #6fe3d159;transition:background .2s,color .2s,box-shadow .2s}.param-fab .icon{width:20px;height:20px;stroke-width:2}.param-fab:not(.open){width:112px;justify-content:center}.sheet-fab{position:fixed;z-index:45;right:136px;bottom:calc(18px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:6px;height:42px;padding:0 14px 0 12px;border-radius:21px;border:1px solid rgba(111,227,209,.55);color:var(--accent);font-size:13px;font-weight:600;cursor:pointer;background:#091215eb;box-shadow:0 8px 24px #000000b3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.sheet-fab .icon{width:18px;height:18px}.sheet-fab:active{transform:scale(.97)}.sheet-fab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}body[data-tour-step] .sheet-fab{visibility:hidden}.param-fab.open{height:42px;padding:0 14px 0 12px;font-size:13px;color:var(--accent);background:#091215eb;box-shadow:0 8px 24px #000000bf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.param-fab.open .icon{width:18px;height:18px}.param-fab:active{transform:scale(.97)}body[data-tour-step] .param-fab{visibility:hidden}body[data-tour-step=preview] .param-fab{visibility:visible;z-index:10001;pointer-events:none;box-shadow:0 0 0 3px #6fe3d199,0 0 30px #6fe3d180}.settings-panel{top:auto;left:0;right:0;width:auto;max-height:88dvh;border:0;border-top:1px solid var(--line-strong);border-radius:18px 18px 0 0;box-shadow:0 -20px 50px #000000b3;animation-name:drawer-up}.settings-head{padding-top:18px}.settings-head .sheet-grip{display:block;position:absolute;left:50%;top:2px;transform:translate(-50%)}.tour-card{width:calc(100vw - 24px)}}.app.bench-open{grid-template-columns:292px minmax(0,1fr) minmax(420px,38vw)}.app.bench-open .panel.right{display:none}.panel.bench{border-left:1px solid var(--panel-line);background:linear-gradient(270deg,#080d11f5,#080d11bd)}.bench-head{position:sticky;top:-18px;z-index:6;display:flex;align-items:center;gap:10px;margin:-18px -16px 10px;padding:14px 16px 10px;background:linear-gradient(180deg,#060a0dfa 82%,#060a0d00)}.bench-title{flex:1;min-width:0}.bench-title h2{display:flex;align-items:center;gap:8px;margin:0;font:400 18px/1.2 var(--engrave);letter-spacing:.08em}.bench-title p{margin:1px 0 0;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bench-back,.bench-close{display:inline-grid;place-items:center;width:34px;height:34px;flex:none;padding:0;border-radius:50%;border:1px solid var(--line-strong);background:transparent;color:var(--text);cursor:pointer}.bench-back:hover,.bench-close:hover{color:var(--accent);border-color:#6fe3d180}.bench-back{display:none}.panel.bench .edit-side{position:static;margin:0 0 10px;padding:0;background:none}.bench-knobs{margin-bottom:12px;padding:12px 12px 4px;border-radius:var(--radius);border:1px solid var(--panel-line);background:var(--panel)}.bench-knobs .segmented{margin-bottom:8px}.knob-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.knob-pair.wide-first>.knob:first-child{grid-column:1 / -1}.knob-label{display:flex;align-items:center;gap:5px;margin:0 2px 4px;color:var(--muted);font-size:11.5px}.knob-chips>span:first-child{display:inline-flex;align-items:center;gap:4px}.knob-chips{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:0 0 10px;color:var(--muted);font-size:12px}.knob-chips .chip{padding:3px 9px;font-size:12px}.bench-card{margin-bottom:12px;padding:12px 13px 10px;border-radius:var(--radius);border:1px solid var(--panel-line);background:var(--panel)}.bench-card.hero{border-color:#6fe3d142;background:linear-gradient(170deg,#102125eb,#080e12e6)}.card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.card-head h3{margin:0;font-size:13.5px;font-weight:600;letter-spacing:.06em;white-space:nowrap}.card-sub{flex:1;min-width:0;color:var(--muted);font-size:11.5px}.card-foot,.bench-foot{margin:8px 2px 0;color:var(--faint);font-size:11px;line-height:1.6}.bench-foot{margin:4px 4px 0}.bench-note{display:flex;align-items:center;gap:10px;margin:0 0 8px;padding:7px 10px;border-radius:10px;font-size:12px}.bench-note.warn{color:var(--warn);border:1px solid rgba(232,184,119,.4);background:#e8b87712}.bench-note button{margin-left:auto;padding:3px 10px;border-radius:8px;border:1px solid currentColor;background:transparent;color:inherit;cursor:pointer}.bench-card.empty{padding:26px 18px 22px;text-align:center}.bench-card.empty .icon{width:38px;height:38px;color:var(--accent)}.bench-card.empty p{margin:10px 0 14px;color:var(--muted);line-height:1.75}.empty-actions{display:flex;justify-content:center;gap:8px}.empty-actions button{min-width:64px;padding:7px 14px;border-radius:999px;border:1px solid rgba(111,227,209,.5);background:#6fe3d114;color:var(--accent);cursor:pointer}.shift-spectrum{display:grid;gap:6px}.shift-chart{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none}.shift-chart .grid{stroke:#ffffff12;stroke-width:1}.shift-chart .axis{fill:var(--faint);font-size:11px;font-family:var(--mono)}.shift-chart .sky{fill:#96aac321;stroke:#aabed74d;stroke-width:.6}.shift-chart .line-label{font-size:10.5px;font-weight:600}.shift-chart .panel-title{fill:var(--muted);font-size:12px}.shift-chart .panel-value{font:700 12px var(--mono)}.shift-spectrum.compact{margin-top:6px;gap:4px}.shift-spectrum.compact.dual{grid-template-columns:1fr 1fr}.shift-spectrum.compact .line-label{font-size:9.5px}.shift-spectrum.compact .panel-title{font-size:10px}.shift-legend{display:flex;flex-wrap:wrap;gap:3px 12px;margin:2px 0;color:var(--muted);font-size:11px}.shift-legend span{display:inline-flex;align-items:center;gap:5px}.shift-legend i{display:inline-block;width:14px;height:3px;border-radius:2px}.shift-legend i.dash{background:repeating-linear-gradient(90deg,#8aa29e 0 4px,transparent 4px 7px)}.shift-legend i.dash.ghost{background:repeating-linear-gradient(90deg,#b9a7ff 0 5px,transparent 5px 8px)}.shift-legend i.bar{width:3px;height:11px;background:#ff6f6f}.shift-legend i.sky{height:9px;background:#96aac359}.shift-legend.small{font-size:10.5px}.shift-overview{display:grid;grid-template-columns:136px minmax(0,1fr);gap:16px;align-items:center;margin:12px 0 10px}.field-disc{margin:0}.field-disc svg{display:block;width:100%;max-width:136px;margin:0 auto;touch-action:none;cursor:crosshair}.field-disc figcaption{margin-top:6px;color:var(--muted);font-size:11px;text-align:center;font-variant-numeric:tabular-nums}.field-disc figcaption i{display:block;height:6px;margin:6px 6px 2px;border-radius:3px}.field-disc figcaption small{display:flex;justify-content:space-between;padding:0 6px;color:var(--faint);font-size:10px}.shift-numbers{display:grid;gap:6px;min-width:0}.num-head,.num-row{display:grid;grid-template-columns:minmax(0,1fr) 62px 62px;align-items:center;gap:6px}.num-head span{font-size:11px;text-align:right}.num-row>span:first-child{display:inline-flex;align-items:center;gap:5px;min-width:0;color:var(--muted);font-size:12px}.num-row b{font:600 19px/1.15 var(--mono);text-align:right;font-variant-numeric:tabular-nums}.num-row.small b{font-size:13px;color:var(--text)}.num-row.snr{padding-top:6px;border-top:1px solid var(--panel-line)}.num-row.snr b.wide{grid-column:2 / 4;display:flex;align-items:baseline;justify-content:flex-end;gap:7px;color:var(--accent)}.num-row.snr small{font:400 10.5px var(--font);color:var(--faint);white-space:nowrap}.whatif{display:grid;gap:6px}.whatif-head,.whatif-row{display:grid;grid-template-columns:minmax(0,1fr) 86px 86px 14px;align-items:center;gap:8px}.whatif-head{padding:0 10px;font-size:11px}.whatif-row{width:100%;padding:9px 10px;border-radius:11px;border:1px solid var(--panel-line);background:#ffffff05;color:var(--text);text-align:left;cursor:pointer;transition:border-color .15s,background .15s}button.whatif-row:hover,button.whatif-row:focus-visible{border-color:#b9a7ff8c;background:#b9a7ff12}.whatif-row.current{cursor:default;border-color:#6fe3d159;background:#6fe3d10f}.whatif-title{display:flex;flex-direction:column;min-width:0}.whatif-title b{font-weight:500;font-size:13px}.whatif-title small{color:var(--muted);font-size:11px;line-height:1.4}.whatif-row.current .whatif-title b{color:var(--accent)}.whatif-cell{display:flex;flex-direction:column;gap:4px;min-width:0}.whatif-val{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 4px}.whatif-val b{font:600 13.5px var(--mono);font-variant-numeric:tabular-nums}.whatif-val small{font:600 10.5px var(--mono)}.whatif-val small.up{color:#86e8a8}.whatif-val small.down{color:var(--bad)}.whatif-val .meter{flex-basis:100%;height:3px;margin-top:2px;border-radius:2px;background:#1e2c30;overflow:hidden}.whatif-val .meter i{display:block;height:100%;border-radius:2px}.whatif-cell.centre .meter i{background:#6fe3d1}.whatif-cell.edge .meter i{background:#f0a868}.whatif-val .band{font-style:normal;font-size:10px;padding:0 4px;border-radius:4px}.whatif-val .band.Halpha{color:#ff9a9a;background:#ff6f6f1f}.whatif-val .band.OIII{color:#9cc8ff;background:#6aa8ff1f}.whatif-go{width:14px;height:14px;color:var(--faint)}.rays-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px}.rays-controls .segmented{margin:0 0 8px}.rays-player{display:flex;align-items:center;gap:10px;margin:2px 0 6px}.rays-play{display:inline-flex;align-items:center;gap:6px;padding:6px 14px 6px 11px;border-radius:999px;border:1px solid var(--accent);background:#6fe3d11f;color:var(--accent);font-weight:600;cursor:pointer}.rays-play .icon{width:14px;height:14px;fill:currentColor}.rays-progress{flex:1;height:4px;border-radius:2px;background:#1e2c30;overflow:hidden}.rays-progress i{display:block;height:100%;background:var(--accent)}.rays-phase{min-height:3.2em;margin:0 0 4px;color:var(--text);font-size:12.5px;line-height:1.6}.rays-chart{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none}.rays-chart .grid{stroke:#ffffff12;stroke-width:1}.rays-chart .axis{fill:var(--faint);font-size:11px;font-family:var(--mono)}.rays-chart .ray-title{fill:var(--text);font-size:13px}.rays-chart .ray-sub{fill:var(--muted);font-size:11.5px;font-family:var(--mono)}.rays-chart .ray-lens{fill:#c8e1dc1a;stroke:#c8e1dc8c;stroke-width:1.2}.rays-chart .ray-sensor{fill:#c8e1dc73}.rays-chart .ray-filter{font-size:12px;font-weight:600}@media(max-width:1100px){.app.bench-open{grid-template-columns:minmax(0,1fr)}.app.bench-open .panel.left,.app.bench-open .panel.right{display:none}.panel.bench{border:0;background:none}.bench-head{position:static;margin:0 0 10px;padding:0;background:none}}@media(max-width:760px){.bench-close,.bench-title h2{display:none}.app>.panel.bench .bench-head{position:static;margin:0 2px 8px;padding:0;background:none}.bench-title p{font-size:12px}.shift-overview{grid-template-columns:112px minmax(0,1fr);gap:12px}.num-head,.num-row{grid-template-columns:minmax(0,1fr) 52px 52px;gap:4px}.num-row b{font-size:16px}.whatif-head,.whatif-row{grid-template-columns:minmax(0,1fr) 66px 66px 12px;gap:6px}.whatif-head{padding:0 8px}.whatif-row{padding:8px}.whatif-val b{font-size:12.5px}.rays-controls{grid-template-columns:1fr;gap:0}.shift-chart .axis{font-size:11.5px}}.loading.boot{position:fixed;inset:0;z-index:50;cursor:pointer;background:#030507}.loading.boot.revealing{background:transparent;cursor:default}.loading.boot canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.boot-text{position:absolute;left:0;right:0;bottom:7.5%;text-align:center;pointer-events:none;transition:opacity .35s}.boot-title{margin:0;font-size:15px;letter-spacing:.4em;padding-left:.4em;color:var(--text);transition:color .4s,text-shadow .4s}.boot-label{margin:4px 0 0;font-size:12px;color:var(--muted);font-family:var(--mono);min-height:1.5em}.loading.boot.lit .boot-title{color:var(--accent);text-shadow:0 0 18px rgba(111,227,209,.55)}.boot-skip{position:absolute;left:0;right:0;bottom:calc(2% + 20px + env(safe-area-inset-bottom));margin:0;text-align:center;font-size:11px;color:var(--faint);opacity:0;animation:boot-skip-in .6s 1.4s forwards;pointer-events:none;transition:opacity .3s}@keyframes boot-skip-in{to{opacity:1}}.boot-notice{position:absolute;left:12px;right:12px;bottom:calc(2% + env(safe-area-inset-bottom));margin:0;text-align:center;font-size:10.5px;color:var(--faint);pointer-events:none;transition:opacity .3s}.loading.boot.lit .boot-skip,.loading.boot.revealing .boot-text,.loading.boot.revealing .boot-skip,.loading.boot.revealing .boot-notice,.loading.boot.failed .boot-skip{opacity:0;animation:none}.loading.boot.failed canvas{opacity:.35}.eyepiece canvas.view{transition:filter .3s ease-out}.eyepiece.switching canvas.view{filter:brightness(.32) saturate(.55) blur(1.5px)}.eyepiece.revealing canvas.view{animation:tube-on .8s cubic-bezier(.3,.6,.2,1) both}@keyframes tube-on{0%{filter:brightness(.32) saturate(.55) blur(1.5px)}38%{filter:brightness(1.22) saturate(.85) blur(.4px)}to{filter:brightness(1) saturate(1) blur(0)}}@media(prefers-reduced-motion:reduce){.eyepiece.switching canvas.view{filter:brightness(.35) saturate(.6)}.eyepiece.revealing canvas.view{animation:none}}.tube-switch{position:absolute;left:50%;top:50%;z-index:4;transform:translate(-50%,-50%);border-radius:50%;overflow:hidden;pointer-events:none;container-type:size}.tube-switch canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.tube-switch-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:19% 8% 17%;text-align:center;animation:tube-switch-in .3s .12s ease-out both;transition:opacity .25s}.tube-switch.leaving .tube-switch-text{opacity:0}@keyframes tube-switch-in{0%{opacity:0;transform:translateY(3px)}}.tube-switch-text b{font-weight:500;font-size:clamp(13px,4.2cqmin,17px);letter-spacing:.3em;padding-left:.3em;color:var(--text);text-shadow:0 0 14px rgba(0,0,0,.9)}.tube-switch-text span{font-size:11.5px;line-height:1.6;color:var(--muted);text-shadow:0 0 10px #000}.tube-switch-text em{display:block;font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--faint)}.fallback-page{position:fixed;inset:0;z-index:80;overflow-y:auto;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:radial-gradient(120% 80% at 50% 0%,#0b1a1d 0%,var(--bg) 60%);color:var(--text);font-family:var(--font)}.fallback-card{width:min(520px,100%);padding:26px 22px 22px;border-radius:18px;border:1px solid var(--panel-line);background:var(--panel);line-height:1.65}.fallback-card .brand-mark{display:block;margin-bottom:14px}.fallback-card h1{margin:0 0 8px;font-size:20px;font-weight:600}.fallback-card h2{margin:18px 0 6px;font-size:14px;font-weight:600;color:var(--accent)}.fallback-card p,.fallback-card li{margin:0;font-size:14px;color:var(--muted)}.fallback-card ul{margin:0;padding-left:1.2em;display:grid;gap:4px}.fallback-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 4px}.fallback-card button{font:inherit;font-size:14px;color:var(--text);background:#ffffff0a;border:1px solid var(--line-strong);border-radius:10px;padding:9px 16px;cursor:pointer}.fallback-card button.primary{color:#021512;background:var(--accent);border-color:var(--accent);font-weight:600}.fallback-card details{margin-top:16px}.fallback-card summary{cursor:pointer;font-size:13px;color:var(--muted)}.fallback-card pre{margin:8px 0;padding:10px;border-radius:8px;background:#00000059;color:var(--bad);font:12px/1.5 var(--mono);white-space:pre-wrap;word-break:break-word}.fallback-card details button{margin-top:8px;font-size:13px;padding:6px 12px}.fallback-note{margin-top:12px!important;font-size:12px!important;color:var(--faint)!important;word-break:break-word}html[lang=en] .brand-name h1,html[lang=en] .brand-name strong{white-space:normal;letter-spacing:.01em;line-height:1.2}.changelog{margin:10px 0 4px;padding:10px 12px;border-radius:12px;background:#ffffff05}.changelog summary{cursor:pointer;color:var(--accent);font-size:13px}.changelog h4{margin:12px 0 4px;font-size:13px;font-weight:600;color:var(--text)}.changelog h4 small{margin-left:8px;font-weight:400;color:var(--faint);font-family:var(--mono)}.changelog ul{margin:0;padding-left:1.2em}.changelog li{color:var(--muted);font-size:12.5px;line-height:1.6}.toast.update-toast{background:#0a1c1ef5;border-color:var(--line-strong);color:var(--text);flex-wrap:wrap}.toast.update-toast button{border-color:var(--line-strong);color:var(--accent)}.settings-row.error-log-row,.settings-row.data-cache-row,.settings-row.lang-row{cursor:default}.settings-row.lang-row{flex-wrap:wrap}.settings-row.lang-row>.segmented{flex:1 0 calc(100% - 32px);margin-left:32px}.settings-row>.error-log-actions{display:flex;flex-direction:row;gap:6px;flex:none}.error-log-actions button{font:inherit;font-size:12px;color:var(--text);background:transparent;border:1px solid var(--line-strong);border-radius:8px;padding:4px 9px;cursor:pointer}.ach-badge{flex:none;--ach: #6fe3d1;--ach-fill: #12302e;--ach-dim: rgba(111, 227, 209, .45)}.ach-badge.gear{--ach: #e8b877;--ach-fill: #33291b;--ach-dim: rgba(232, 184, 119, .45)}.ach-badge.observe{--ach: #8fb8ff;--ach-fill: #1a2638;--ach-dim: rgba(143, 184, 255, .45)}.ach-badge.off{--ach: #5d6a6e;--ach-fill: #0b1215;--ach-dim: rgba(93, 106, 110, .4)}.ach-badge .ach-hex{fill:var(--ach-fill);stroke:var(--ach);stroke-width:1.6}.ach-badge .ach-hex-inner{fill:none;stroke:var(--ach-dim);stroke-width:.8}.ach-badge .ach-glyph{fill:none;stroke:var(--ach);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.ach-badge.on{filter:drop-shadow(0 0 6px var(--ach-dim))}.ach-toast{position:fixed;z-index:70;left:50%;top:calc(14px + env(safe-area-inset-top,0px));transform:translate(-50%);display:flex;align-items:center;gap:12px;width:min(380px,calc(100vw - 32px));padding:12px 16px 12px 12px;border-radius:12px;background:linear-gradient(135deg,#0e181cf7,#080e11f7);border:1px solid rgba(111,227,209,.35);box-shadow:0 14px 40px #0000008c,0 0 0 1px #ffffff08 inset;pointer-events:none;animation:ach-in-down .45s cubic-bezier(.2,.9,.3,1.2)}.ach-toast.gear{border-color:#e8b87773}.ach-toast.observe{border-color:#8fb8ff73}.ach-toast.leaving{animation:ach-out-up .4s ease-in forwards}.ach-toast-text{display:grid;gap:2px;min-width:0}.ach-toast-text small{color:var(--muted);font-size:11px;letter-spacing:.06em}.ach-toast-text b{color:var(--text);font-size:15px;font-weight:600}.ach-toast-text span{color:var(--muted);font-size:12px;line-height:1.4}.ach-toast .ach-badge{animation:ach-badge .7s ease-out .15s both}@keyframes ach-in-down{0%{opacity:0;transform:translate(-50%,-24px) scale(.96)}}@keyframes ach-out-up{to{opacity:0;transform:translate(-50%,-24px)}}@keyframes ach-badge{0%{transform:scale(.4) rotate(-30deg);opacity:0}70%{transform:scale(1.12) rotate(4deg);opacity:1}to{transform:none}}@media(max-width:760px){.ach-toast{top:calc(8px + env(safe-area-inset-top,0px));padding:9px 12px 9px 9px;gap:10px}.ach-toast-text b{font-size:14px}.ach-toast-text span{font-size:11.5px}}@media(prefers-reduced-motion:reduce){.ach-toast,.ach-toast.leaving,.ach-toast .ach-badge{animation:none}}.achievements{margin:4px 0 8px;border:1px solid var(--panel-line);border-radius:12px;background:#0a111599}.achievements>summary{display:flex;align-items:center;gap:12px;padding:11px 14px;cursor:pointer;font-weight:600;list-style:none}.achievements>summary::-webkit-details-marker{display:none}.ach-bar{flex:1;height:5px;border-radius:3px;background:#ffffff12;overflow:hidden}.ach-bar>i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#6fe3d1,#e8b877)}.achievements ul{list-style:none;margin:0;padding:0 10px 4px;display:grid;gap:6px}.achievements li{display:flex;align-items:center;gap:12px;padding:8px;border-radius:10px;background:#ffffff06}.achievements li.off{opacity:.6;padding:5px 8px}.achievements li.off b{font-weight:500;color:var(--muted)}.achievements li>span{display:grid;gap:2px;min-width:0}.achievements li b{display:flex;align-items:baseline;gap:8px;font-size:13.5px;font-weight:600;color:var(--text)}.achievements li b em{font-style:normal;font-weight:400;font-size:10.5px;color:var(--faint)}.achievements li small{color:var(--muted);font-size:11.5px;line-height:1.45}.achievements li small.ach-date{color:var(--faint);font-family:var(--mono);font-size:10.5px}.ach-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 0;padding:8px 14px 12px;color:var(--faint);font-size:11px}.ach-foot button{border:1px solid var(--line-strong);background:transparent;color:var(--muted);border-radius:8px;padding:4px 10px;font-size:11.5px;cursor:pointer}.ach-foot button:hover{color:var(--warn);border-color:#e8b8778c}
