@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Serif:wght@400;600&display=swap";:root{--bg: #f4f6fb;--panel: #ffffff;--ink: #1b2333;--ink-soft: #4e5a72;--ink-faint: #5d6880;--line: #dfe4ee;--line-strong: #c3cbdb;--accent: #3d5afe;--accent-soft: #eef1ff;--accent-ink: #ffffff;--value: #6d3ce8;--value-soft: #f2ecff;--metric: #0a7361;--imperial: #a8482c;--bridge: #8a3ab0;--good: #16794f;--good-soft: #e6f6ee;--warn: #985f00;--warn-soft: #fdf3e0;--bad: #c02b3a;--bad-soft: #fdecee;color-scheme:light;--radius: 12px;--shadow: 0 1px 2px rgba(20, 30, 60, .06), 0 6px 20px rgba(20, 30, 60, .06);--font: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--serif: "IBM Plex Serif", ui-serif, Georgia, "Times New Roman", serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #12151d;--panel: #1b202b;--ink: #e8ecf5;--ink-soft: #a3adc2;--ink-faint: #8a94a9;--line: #2b3242;--line-strong: #3b4457;--accent: #8ea2ff;--accent-soft: #232a44;--accent-ink: #12151d;--value: #b69cff;--value-soft: #2a2440;--metric: #4fd1b5;--imperial: #eb9270;--bridge: #c68ae6;--good: #5fd3a0;--good-soft: #16302a;--warn: #e5b25a;--warn-soft: #33291a;--bad: #ff8a95;--bad-soft: #3a1f24;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .35);color-scheme:dark}}:root[data-theme=dark]{--bg: #12151d;--panel: #1b202b;--ink: #e8ecf5;--ink-soft: #a3adc2;--ink-faint: #8a94a9;--line: #2b3242;--line-strong: #3b4457;--accent: #8ea2ff;--accent-soft: #232a44;--accent-ink: #12151d;--value: #b69cff;--value-soft: #2a2440;--metric: #4fd1b5;--imperial: #eb9270;--bridge: #c68ae6;--good: #5fd3a0;--good-soft: #16302a;--warn: #e5b25a;--warn-soft: #33291a;--bad: #ff8a95;--bad-soft: #3a1f24;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .35);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}.app{max-width:1120px;margin:0 auto;padding:24px 20px 64px;display:flex;flex-direction:column;gap:18px}.app-head{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;justify-content:space-between}.app-head h1{font-family:var(--serif);font-size:1.4rem;font-weight:600;margin:0;letter-spacing:-.01em}.tagline{margin:4px 0 0;color:var(--ink-soft);font-size:.9rem}.head-actions{display:flex;gap:8px;flex-wrap:wrap}.btn{font:inherit;font-size:.86rem;font-weight:500;padding:8px 14px;border-radius:999px;border:1px solid var(--line-strong);background-color:var(--panel);color:var(--ink);cursor:pointer;transition:transform .05s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn:active{transform:translateY(1px)}.btn.primary{background-color:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08);color:var(--accent-ink)}.btn.tiny{padding:4px 10px;font-size:.76rem}.icon-btn{font:inherit;background:none;border:none;color:var(--ink-soft);font-size:1rem;cursor:pointer;padding:6px;border-radius:8px}.icon-btn:hover{background:var(--line);color:var(--ink)}.prompt-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.prompt{font-family:var(--serif);margin:0;font-size:1.15rem;line-height:1.5;text-wrap:balance}.prompt-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.chip{font-size:.78rem;color:var(--ink-soft);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:4px 11px}.chip strong{color:var(--ink);font-weight:600}.chip.subtle{border-style:dashed}.card{font:inherit;border:1px solid var(--line-strong);background:var(--panel);border-radius:10px;padding:9px 13px;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;color:var(--ink);box-shadow:0 1px 1px #141e3c0d;transition:transform .06s;white-space:nowrap}.card:hover{border-color:var(--accent)}.card:active{cursor:grabbing}.card.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.card.source-dim{opacity:.35}.card-face{display:inline-flex;align-items:baseline;gap:6px}.card-num{font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.card-unit{font-weight:500}.tone-factor .card-unit{color:var(--metric)}.tone-value .card-num,.tone-value .card-unit{color:var(--value)}.card-unit.cancelled{position:relative;opacity:.55}.card-unit.cancelled:after{content:"";position:absolute;left:-2px;right:-2px;top:50%;height:2px;background:var(--bad);transform:rotate(-12deg);border-radius:2px}.drag-ghost{position:fixed;z-index:1000;transform:translate(-50%,-50%) rotate(-2deg) scale(1.06);pointer-events:none;background:var(--panel);border:1px solid var(--accent);border-radius:10px;padding:9px 13px;box-shadow:0 10px 28px #141e3c40;white-space:nowrap}.table-scroll{overflow-x:auto;padding:4px 2px 10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.conv-table{display:flex;align-items:center;gap:4px;padding:18px 20px 20px;min-width:min-content}.column-group{display:flex;align-items:center;gap:4px}.times{font-size:1.15rem;color:var(--ink-faint);padding:0 6px;margin-top:18px;-webkit-user-select:none;user-select:none}.equals{font-size:1.15rem;color:var(--ink-faint);padding:0 2px;-webkit-user-select:none;user-select:none}.term{display:flex;flex-direction:column;gap:4px}.term-label{font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);height:16px;display:flex;align-items:center;gap:6px;padding-left:2px}.term-fraction{border-radius:10px;padding:6px 8px 8px;border:1px solid transparent;min-width:168px}.term-fraction.good{background:var(--good-soft);border-color:color-mix(in srgb,var(--good) 30%,transparent)}.term-fraction.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 35%,transparent)}.term-fraction.bad{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 40%,transparent)}.fraction-bar{height:2px;background:var(--ink);opacity:.7;border-radius:2px;margin:5px 0}.slot{min-height:46px;min-width:150px;border:1.5px dashed var(--line-strong);border-radius:9px;display:flex;align-items:center;justify-content:center;padding:3px}.slot.filled{border-style:solid;border-color:transparent;background-color:transparent}.slot.empty{background-color:color-mix(in srgb,var(--bg) 60%,transparent)}.slot.hover,.slot.awaiting{border-color:var(--accent);background-color:var(--accent-soft)}.slot-big{min-height:54px;min-width:168px}.slot-big .card{padding:12px 16px;font-size:1.05rem}.slot-hint{font-size:.75rem;color:var(--ink-soft);-webkit-user-select:none;user-select:none}.chip-btn{font:inherit;font-size:.7rem;line-height:1;border:none;background:none;color:var(--ink-faint);cursor:pointer;padding:2px 4px;border-radius:5px}.chip-btn:hover{background:var(--bad-soft);color:var(--bad)}.add-col{font:inherit;font-size:1.3rem;line-height:1;flex:none;width:30px;height:30px;margin:18px 4px 0;padding:0;display:flex;align-items:center;justify-content:center;color:var(--accent);background-color:var(--accent-soft);border:1.5px dashed color-mix(in srgb,var(--accent) 45%,transparent);border-radius:999px;cursor:pointer}.add-col:hover{background-color:color-mix(in srgb,var(--accent) 16%,transparent);border-style:solid}.answer-entry{display:flex;align-items:center;gap:8px}.check-btn{white-space:nowrap}.feedback{display:flex;flex-direction:column;gap:8px}.feedback:empty{display:none}.msg{border-radius:10px;padding:11px 14px;font-size:.88rem;line-height:1.5;border:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;gap:3px}.msg-title{font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em}.msg-error{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 35%,transparent)}.msg-error .msg-title{color:var(--bad)}.msg-incorrect{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 35%,transparent)}.msg-incorrect .msg-title{color:var(--warn)}.msg-invalid{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 35%,transparent)}.msg-invalid .msg-title{color:var(--warn)}.msg-correct{background:var(--good-soft);border-color:color-mix(in srgb,var(--good) 35%,transparent)}.msg-correct .msg-title{color:var(--good)}.msg-nudge{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.msg-info{color:var(--ink-soft)}.hint-list{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.answer-input{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line-strong);border-radius:9px;padding:4px 12px 4px 4px;background:var(--panel)}.answer-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.answer-input input{font:inherit;font-size:1rem;font-variant-numeric:tabular-nums;border:none;background:none;color:var(--ink);padding:9px 8px;width:112px;outline:none}.answer-unit{font-weight:600;color:var(--ink-soft)}.bank{display:flex;flex-direction:column;gap:16px}.bank-section{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px 18px;box-shadow:var(--shadow)}.bank-title{margin:0;font-size:.95rem}.bank-sub{margin:3px 0 12px;font-size:.8rem;color:var(--ink-soft)}.value-row{display:flex;flex-wrap:wrap;gap:8px}.factor-group+.factor-group{margin-top:14px}.group-label{font-family:var(--mono);margin:0 0 8px;font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;font-weight:700}.sys-metric{color:var(--metric)}.sys-imperial{color:var(--imperial)}.sys-bridge{color:var(--bridge)}.factor-list{display:flex;flex-wrap:wrap;gap:10px}.factor{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:12px;padding:7px 10px;background:var(--bg)}.factor-eq{color:var(--ink-faint);font-weight:600}.factor.system-metric .card-unit{color:var(--metric)}.factor.system-imperial .card-unit{color:var(--imperial)}.factor.system-bridge .card-unit{color:var(--bridge)}.empty-note{font-size:.85rem;color:var(--ink-soft)}.app-foot{font-size:.78rem;color:var(--ink-faint);text-align:center}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c101a73;display:flex;justify-content:flex-end;z-index:900}.drawer{width:min(520px,100%);background:var(--panel);display:flex;flex-direction:column;box-shadow:-12px 0 40px #00000040}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:1.05rem}.tabs{display:flex;gap:4px;padding:10px 16px 0;border-bottom:1px solid var(--line)}.tab{font:inherit;font-size:.8rem;border:none;background:none;color:var(--ink-soft);padding:8px 12px;border-radius:8px 8px 0 0;cursor:pointer;border-bottom:2px solid transparent}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.drawer-body{overflow-y:auto;padding:16px 20px 40px;display:flex;flex-direction:column;gap:20px}.lib-group h3{margin:0 0 6px;font-size:.9rem;display:flex;align-items:center;gap:8px}.lib-group h4{margin:10px 0 6px}.lib-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.count{font-weight:500;font-size:.75rem;color:var(--ink-faint)}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.lib-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}.check{display:flex;align-items:flex-start;gap:9px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:.85rem}.check:hover{background:var(--bg)}.check input{margin-top:2px;accent-color:var(--accent);width:16px;height:16px}.check-text{display:flex;flex-direction:column;gap:2px}.check-text .sub,.approx{color:var(--ink-faint);font-size:.76rem;font-style:normal}.approx{margin-left:5px}.problem-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.problem-btn{font:inherit;font-size:.84rem;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--ink);cursor:pointer}.problem-btn:hover{border-color:var(--accent)}.problem-btn.active{border-color:var(--accent);background:var(--accent-soft)}.steps-badge{font-family:var(--mono);font-size:.7rem;color:var(--ink-faint);white-space:nowrap}.hint-text{font-size:.8rem;color:var(--ink-soft);margin:0 0 8px}@media(max-width:640px){.app{padding:16px 12px 48px}.app-head h1{font-size:1.15rem}.slot{min-width:128px}.slot-big{min-width:140px}.term-fraction{min-width:144px}}.slot:focus-visible,.card:focus-visible,.add-col:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.term-fraction.redundant{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 40%,transparent);border-style:dashed}.msg-note{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.msg-note .msg-title{color:var(--accent)}.seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:2px;background:var(--bg);border:1px solid var(--line);border-radius:999px;margin-bottom:8px}.seg-btn{font:inherit;font-size:.76rem;font-weight:500;padding:5px 12px;border:none;border-radius:999px;background:none;color:var(--ink-soft);cursor:pointer}.seg-btn:hover{color:var(--ink)}.seg-btn.active{background:var(--accent);color:var(--accent-ink)}.seg-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mode-switch{display:flex;gap:4px;padding:3px;background:var(--panel);border:1px solid var(--line);border-radius:999px;align-self:flex-start;box-shadow:var(--shadow)}.mode-btn{font:inherit;font-size:.86rem;font-weight:500;padding:7px 18px;border:none;border-radius:999px;background:none;color:var(--ink-soft);cursor:pointer}.mode-btn:hover{color:var(--ink)}.mode-btn.active{background:var(--accent);color:var(--accent-ink);font-weight:600}.mode-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.equation{font-family:var(--serif);font-size:1.25rem;margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid var(--line);letter-spacing:.01em}.chain{display:flex;flex-direction:column;gap:16px;margin-bottom:18px}.limiting-step{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px 18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.limiting-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.limiting-label{font-size:.9rem;font-weight:550}.limiting-step .seg{margin-bottom:0}
