:root{--qd-accent:#2c3fd6;--qd-accent-weak:#eef0fd;--qd-ink:#171b21;--qd-muted:#6b7684;--qd-line:#e2e6ec;--qd-surface:#ffffff;--qd-well:#f4f6f9;--qd-ok:#1e8e5f;--qd-danger:#c0392b;--bg:#f6f7f9;--ink:#171b21;--body:#3b4550;--muted:#6b7684;--line:#e4e8ee;--card:#ffffff;--accent:#2c3fd6;--teal:#0f857b;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,sans-serif;--mono:"SF Mono",ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--body);font-family:var(--sans);font-size:15.5px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3{color:var(--ink);margin:0}a{color:var(--accent)}.page{max-width:1080px;margin:0 auto;padding:32px 24px 120px}.masthead{display:flex;flex-direction:column;gap:10px;padding:20px 0 26px;border-bottom:1px solid var(--line)}.masthead h1{font-size:1.9rem;letter-spacing:-.02em}.masthead p{margin:0;max-width:62ch;color:var(--muted)}.eyebrow{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.mode-toggle{display:inline-flex;gap:4px;padding:4px;background:#eceff3;border-radius:999px;border:1px solid var(--line)}.mode-toggle button{font:inherit;font-weight:600;font-size:.85rem;cursor:pointer;border:0;background:transparent;color:var(--muted);padding:6px 14px;border-radius:999px}.mode-toggle button[data-on=true]{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}.mode-toggle button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:10px;font-size:13.5px;background:#fff8ec;border:1px solid #f0dcae;color:#6d5210}.banner.info{background:var(--qd-accent-weak);border-color:#c9cef6;color:#26317f}.banner code{font-family:var(--mono);font-size:.85em}.section{padding-top:44px}.section>.shead{display:flex;align-items:baseline;gap:12px;margin-bottom:6px}.section .snum{font-family:var(--mono);font-size:.78rem;font-weight:700;color:#fff;background:var(--accent);border-radius:6px;padding:3px 8px;line-height:1}.section .snum.m3{background:var(--teal)}.section .snum.m4{background:#7a4dd0}.section h2{font-size:1.35rem;letter-spacing:-.01em}.section .sublede{color:var(--muted);margin:4px 0 20px;max-width:68ch}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}.grid2{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:18px;gap:18px;align-items:start}@media (max-width:820px){.grid2{grid-template-columns:1fr}}.field-label{font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:6px;display:block}input.box,textarea.box{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;resize:vertical}input.box:focus,textarea.box:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1 1}.btn{font:inherit;font-weight:600;cursor:pointer;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 16px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.chatlog{display:flex;flex-direction:column;gap:8px;margin-top:14px}.msg{align-self:flex-end;background:var(--accent);color:#fff;padding:8px 12px;border-radius:14px 14px 4px 14px;max-width:80%;font-size:14px}.editor-shell{border:1px solid var(--line);border-radius:10px;overflow:hidden}.editor-shell .ProseMirror{min-height:120px;padding:12px 14px;outline:none;font-size:15px}.editor-shell .cm-editor{min-height:120px;font-family:var(--mono);font-size:13.5px}.editor-shell .cm-editor.cm-focused{outline:none}.board{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}@media (max-width:720px){.board{grid-template-columns:repeat(2,1fr)}}.col{background:var(--qd-well);border:1px solid var(--line);border-radius:12px;padding:10px;min-height:120px;display:flex;flex-direction:column;gap:8px}.col h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:2px 4px;font-family:var(--mono)}.ticket{background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-size:13.5px;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.04);transition:transform .12s,box-shadow .12s}.ticket.flash{animation:flash .9s ease}@keyframes flash{0%{background:#fff7d6}to{background:#fff}}.pipe{gap:6px;flex-wrap:wrap;margin-top:4px}.pipe,.step{display:flex}.step{align-items:center;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid var(--line);font-size:13px;background:#fff;color:var(--muted)}.step[data-state=done]{border-color:var(--qd-ok);color:var(--qd-ok)}.step[data-state=current]{border-color:var(--teal);background:#e2f2f0;color:#0b5f58;font-weight:700}.step .num{font-family:var(--mono);font-size:11px;opacity:.8}.cheats{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.cheat{font-family:var(--mono);font-size:12px;color:var(--muted);background:var(--qd-well);border:1px solid var(--line);border-radius:6px;padding:3px 8px}@keyframes qd-spin{to{transform:rotate(1turn)}}.qd-spin{display:inline-block;border:2px solid var(--accent);border-top:2px solid transparent;border-radius:50%;animation:qd-spin .7s linear infinite}@media (prefers-reduced-motion:reduce){.qd-spin,.ticket.flash{animation:none}}.section .snum.m5{background:#b4436b}.iv-rec{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--qd-danger);margin-right:2px;vertical-align:middle;animation:iv-pulse 1s ease-in-out infinite}@keyframes iv-pulse{0%,to{opacity:1}50%{opacity:.3}}.iv-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 16px;margin-bottom:16px}.iv-timer{font-family:var(--mono);font-size:12.5px;color:var(--muted)}.iv-sep{flex-basis:100%;height:0}input.box.iv-topic{width:auto;flex:1 1 160px;min-width:140px;max-width:260px}.iv-multi{position:relative}.iv-multi>summary{list-style:none;cursor:pointer}.iv-multi>summary::-webkit-details-marker{display:none}.iv-multi-pop{position:absolute;z-index:20;top:calc(100% + 6px);left:0;min-width:250px;display:flex;flex-direction:column;gap:2px;padding:8px;box-shadow:0 8px 26px rgba(0,0,0,.14)}.iv-check{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13.5px}.iv-check:hover{background:var(--qd-well)}.iv-check>span:first-of-type{flex:1 1}.iv-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;align-items:start}@media (max-width:820px){.iv-grid{grid-template-columns:1fr}}.iv-panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px}.iv-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px}.iv-panel-head strong{font-size:14px;color:var(--ink)}.iv-live{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted)}.iv-scroll{flex:1 1;min-height:264px;max-height:380px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:12px;border-radius:10px;background:var(--qd-well);border:1px solid var(--line)}.iv-hint{color:var(--muted);font-size:13.5px;margin:auto;text-align:center}.iv-err{font-size:13px;color:var(--qd-danger)}.iv-sec{display:flex;flex-direction:column;gap:6px}.iv-sec-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.iv-turn{display:flex;gap:10px;align-items:baseline}.iv-turn-t{flex:none;width:40px;font-family:var(--mono);font-size:11px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.iv-bubble{background:#fff;border:1px solid var(--line);border-radius:12px 12px 12px 4px;padding:7px 11px;font-size:14px;line-height:1.45;color:var(--ink)}.iv-bubble.interim{background:transparent;border-style:dashed;font-style:italic;color:var(--muted)}.qcard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 12px;display:flex;flex-direction:column;gap:7px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.qcard.active{border-color:var(--accent);background:var(--qd-accent-weak)}.qcard.done{opacity:.6}.qcard.done .qcard-text{text-decoration:line-through}.qcard-tags{display:flex;gap:6px;flex-wrap:wrap}.qcard-text{font-size:14.5px;line-height:1.4;color:var(--ink)}.qcard-why{font-size:12px;color:var(--muted)}.qcard-actions{display:flex;align-items:center;gap:8px;margin-top:2px}.qcard-x{margin-left:auto;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:14px;border-radius:6px;padding:2px 6px}.qcard-x:hover{background:#fdecec;color:var(--qd-danger)}.qtag{font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;padding:2px 7px;border-radius:999px;background:var(--qd-well);border:1px solid var(--line);color:var(--muted);white-space:nowrap}.qtag.accent{background:var(--qd-accent-weak);border-color:#c9cef6;color:#2c3fd6}.qtag.top{background:#fff4d6;border-color:#f0d999;color:#8a6d0f}.btn.sm{padding:5px 12px;font-size:13px}.iv-empty{color:var(--muted);font-size:13.5px;text-align:center;margin:auto;padding:18px}.iv-done-wrap{display:flex;flex-direction:column;gap:6px;margin-top:4px}.iv-done-toggle{align-self:flex-start;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:12.5px;font-weight:600;padding:2px 0}.iv-skills{margin-top:18px}.iv-skills-head{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.iv-skills-head strong{font-size:14px;color:var(--ink)}.iv-skills-grid{display:grid;grid-template-columns:220px 1fr;grid-gap:16px;gap:16px;align-items:start}@media (max-width:720px){.iv-skills-grid{grid-template-columns:1fr}}.iv-skill-list{display:flex;flex-direction:column;gap:6px}.iv-skill-item{display:flex;align-items:center;gap:8px;text-align:left;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;font:inherit}.iv-skill-item.on{border-color:var(--accent);background:var(--qd-accent-weak)}.iv-skill-name{font-size:13.5px;font-weight:600;color:var(--ink);flex:1 1}.iv-skill-add{padding:9px 11px;border:1px dashed var(--line);border-radius:10px;background:transparent;color:var(--muted);cursor:pointer;font:inherit;font-weight:600}.iv-skill-edit{display:flex;flex-direction:column;gap:12px}.iv-skill-row{display:flex;gap:12px;flex-wrap:wrap}@media (prefers-reduced-motion:reduce){.iv-rec{animation:none}}