:root{--bg:#f6f7f9;--card:#fff;--fg:#14171f;--muted:#667085;--line:#e3e6ec;--accent:#2563eb;--danger:#dc2626;--ok:#059669;--radius:12px}@media (prefers-color-scheme:dark){:root{--bg:#0e1116;--card:#171b23;--fg:#e8eaf0;--muted:#8a93a6;--line:#272d38;--accent:#4f8cff}}*{box-sizing:border-box}body,html{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}h1{font-size:1.7rem;margin:.4rem 0 .6rem}h2{font-size:1.2rem;margin:1.4rem 0 .5rem}h3{margin:.3rem 0}small{font-weight:400}.small{font-size:.82rem}.muted{color:var(--muted)}.grow{flex:1 1}.err{color:var(--danger)}.ok{color:var(--ok)}.notice{background:color-mix(in srgb,var(--accent) 12%,transparent);padding:.6rem .9rem;border-radius:8px}main{min-height:calc(100dvh - 52px)}.page{max-width:980px;margin:0 auto;padding:18px 16px 80px}.page.narrow{max-width:720px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}.stack{display:grid;grid-gap:12px;gap:12px}.stack>a{display:block}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:20;height:52px;display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--card);border-bottom:1px solid var(--line)}.brand{font-weight:700}.nav nav{display:flex;gap:4px}.nav nav a{padding:6px 10px;border-radius:8px;color:var(--muted)}.nav nav a.on{color:var(--fg);background:var(--bg)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.pick:hover,a.card:hover{border-color:var(--accent)}.grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin:10px 0}.entry{gap:6px}.entry,.pick{display:flex;flex-direction:column}.pick{text-align:left;gap:4px;cursor:pointer;color:inherit;font:inherit}.pick.on{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}.empty{text-align:center;padding:40px;margin-top:20px}.bar{height:6px;background:var(--line);border-radius:9px;overflow:hidden}.bar i{display:block;height:100%;background:var(--accent)}.tags{display:flex;gap:6px;flex-wrap:wrap;font-size:.78rem;color:var(--muted)}.pill{font-size:.72rem;padding:2px 8px;border-radius:99px;background:var(--bg);border:1px solid var(--line)}.pill.learning{color:var(--accent)}.pill.mastered{color:var(--ok)}input,select,textarea{width:100%;font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:4px 0}select{width:auto}.filters input{flex:1 1;min-width:200px;margin:0}.filters select{margin:0}input:disabled,select:disabled,textarea:disabled{opacity:.75}input[type=color]{width:40px;padding:2px;height:36px;flex:none}.title-input{font-size:1.5rem;font-weight:700}textarea{resize:vertical}.btn{font:inherit;cursor:pointer;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--fg);display:inline-block}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn.sm{padding:4px 10px;font-size:.85rem}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ghost{background:transparent}.btn.danger{color:var(--danger)}.linkish{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;padding:0}.login{max-width:360px;margin:18vh auto 0;display:grid;grid-gap:8px;gap:8px}.login h1{margin:0}.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:8px;gap:8px;margin:12px 0}.flow-phase{border:1px solid color-mix(in srgb,var(--c) 40%,var(--line));background:color-mix(in srgb,var(--c) 7%,var(--card));border-radius:10px;padding:8px 10px}.flow-head{font-weight:700;color:var(--c);display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.flow-head small{color:var(--muted)}.num{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--c,var(--accent));color:#fff;font-size:.72rem;flex:none}.chips,.flow-stages{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}.chip{font:inherit;font-size:.78rem;padding:2px 9px;border-radius:99px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:default}.chips .chip,button.chip{cursor:pointer}.chips .chip{padding:5px 12px;font-size:.85rem}.chip.filled{background:var(--c);border-color:var(--c);color:#fff}.chip.active{outline:2px solid var(--c,var(--accent));outline-offset:1px;color:var(--fg)}.chips .chip.active{background:var(--accent);color:#fff;outline:0}.phase-block{margin-top:26px}.phase-block h2{color:var(--c);display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.phase-block h2 small{color:var(--muted)}.dot{width:10px;height:10px;background:var(--c);border-radius:50%;display:inline-block}.stage{border-left:3px solid var(--c);padding:4px 0 4px 16px;margin:14px 0}.stage.empty{opacity:.55}.stage h3 small{display:block;color:var(--muted);font-size:.8rem}.summary{font-size:1.05rem;font-weight:600;margin:6px 0}.stage-edit{margin-top:14px;border-top:3px solid var(--c);padding-top:12px}.prompt{background:color-mix(in srgb,var(--c) 8%,var(--card));border:1px solid color-mix(in srgb,var(--c) 30%,var(--line));border-radius:var(--radius);padding:12px 16px;margin-bottom:12px}.prompt h2,.q{margin:4px 0}.q{font-size:1.05rem}.ex,.phase-tag{color:var(--c)}.phase-tag{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700}.save.saved{color:var(--ok)}.save.error{color:var(--danger)}.editor-box{border:1px solid var(--line);border-radius:var(--radius);margin:6px 0 14px}.editor-box,.toolbar{background:var(--card)}.toolbar{display:flex;flex-wrap:wrap;gap:3px;padding:6px;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:52px;z-index:5;border-radius:var(--radius) var(--radius) 0 0}.tb{font:inherit;font-size:.85rem;min-width:30px;padding:3px 8px;border:1px solid transparent;background:none;color:var(--fg);border-radius:6px;cursor:pointer}.tb:hover{background:var(--bg)}.tb.on{background:var(--accent);color:#fff}.tb:disabled{opacity:.5}.sep{width:1px;background:var(--line);margin:2px 4px}.tb-err{color:var(--danger);font-size:.8rem;align-self:center}.editor-surface{min-height:220px;padding:12px 16px;outline:none}.prose img,.prose video{max-width:100%;border-radius:8px}.prose video{display:block;margin:10px 0;width:100%;max-height:480px;background:#000}.prose table{border-collapse:collapse;width:100%;margin:10px 0;table-layout:fixed}.prose td,.prose th{border:1px solid var(--line);padding:6px 10px;vertical-align:top;text-align:left;min-width:60px}.prose th{background:var(--bg)}.prose blockquote{border-left:3px solid var(--line);margin:8px 0;padding-left:12px;color:var(--muted)}.prose pre{background:var(--bg);padding:10px;border-radius:8px;overflow:auto}.prose a{color:var(--accent);text-decoration:underline}.prose p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--muted);float:left;height:0;pointer-events:none}.prose .selectedCell{background:color-mix(in srgb,var(--accent) 18%,transparent)}.gallery{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 0;margin:10px 0}.gallery img{height:220px;width:auto;max-width:none;scroll-snap-align:start;flex:none}.file-embed{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:10px 0;background:var(--bg)}.file-embed iframe{width:100%;height:520px;border:0;border-radius:6px;background:#fff;display:block;margin-bottom:6px}.ProseMirror-selectednode{outline:2px solid var(--accent)}.edit-row{display:flex;gap:8px;align-items:center}.edit-row input,.edit-row select{margin:0;flex:1 1}.edit-row .num{background:var(--muted)}.card.edit-row{margin:6px 0;padding:8px 10px}.stage-row{margin:8px 0;display:grid;grid-gap:4px;gap:4px}.ctl{display:flex;gap:2px;flex:none}.ctl button{border:1px solid var(--line);background:var(--card);color:var(--fg);border-radius:6px;cursor:pointer;width:28px;height:28px}.ctl button:disabled{opacity:.3}.reels{overflow-y:auto;scroll-snap-type:y mandatory;background:#05070a}.reel,.reels{height:calc(100dvh - 52px)}.reel{scroll-snap-align:start;scroll-snap-stop:always;display:grid;place-items:center;padding:12px;background:radial-gradient(120% 80% at 50% 0,color-mix(in srgb,var(--c) 45%,#05070a),#05070a 70%)}.reel-card{width:min(100%,440px);height:100%;max-height:800px;display:flex;flex-direction:column;gap:10px;color:#f3f5f9;padding:14px 18px 16px}.reel .hint,.reel .q,.reel .small{color:#c4cad6}.reel .phase-tag{color:#fff;background:var(--c);padding:2px 10px;border-radius:99px;align-self:flex-start}.reel .btn{background:hsla(0,0%,100%,.12);color:#fff;border-color:hsla(0,0%,100%,.2)}.segs{display:flex;gap:4px}.segs i{flex:1 1;height:3px;border-radius:3px;background:hsla(0,0%,100%,.25)}.segs i.on{background:#fff}.reel-top{opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reel-media{width:100%;max-height:38%;object-fit:cover;border-radius:14px;background:#000;flex:none}.reel-body{flex:1 1;display:flex;flex-direction:column;justify-content:center;gap:8px;overflow:auto}.reel-body h2{font-size:1.9rem;line-height:1.15;margin:4px 0}.reel-text{font-size:1.25rem;line-height:1.45;margin:6px 0}.reel-foot{display:flex;gap:8px;align-items:center}.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--card);width:min(100%,720px);max-height:85dvh;overflow:auto;border-radius:18px 18px 0 0;padding:14px 18px 28px}.chip.skipped{text-decoration:line-through;opacity:.4;background:transparent;border-style:dashed;color:var(--muted)}.stage-pick{display:grid;grid-gap:6px;gap:6px;margin:8px 0 14px}.pick-phase{border-left:4px solid var(--c);padding:4px 0 4px 12px}.pick-phase>strong{color:var(--c)}.check{display:flex;gap:8px;align-items:flex-start;padding:3px 0;cursor:pointer}.check input{width:auto;margin:4px 0 0;flex:none}.check small{display:block;color:var(--muted)}.skip-note{border:1px dashed var(--line);border-radius:var(--radius);padding:18px;text-align:center;color:var(--muted);margin:8px 0 14px}.switch{display:inline-flex;gap:6px;align-items:center;cursor:pointer;font-size:.85rem}.switch input{width:auto;margin:0}.not-used{margin-top:28px;color:var(--muted);font-size:.85rem}.domain-head{display:flex;width:100%;background:none;border:0;color:inherit;font:inherit;cursor:pointer;padding:0;text-align:left}.topics{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:2px 14px;gap:2px 14px;margin-top:10px}.topic{display:flex;gap:8px;align-items:center;padding:5px 8px;border-radius:8px}.topic:hover{background:var(--bg)}.pill.backlog{opacity:.55}.pill.draft{color:var(--muted)}.diagram{overflow-x:auto;margin:14px 0;padding:8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}.diagram svg{display:block;width:100%;min-width:760px;height:auto;color:var(--fg);font-family:inherit}.prose h4{margin:14px 0 4px;font-size:.95rem}.prose ol,.prose ul{padding-left:1.3rem}.prose .note{color:var(--muted);font-size:.85rem}.cat{font-weight:600;color:var(--accent)}.label-bar{align-items:center;margin:8px 0 14px}.chip.label{cursor:pointer}.chip.label small{opacity:.6}.chip.label.active{background:var(--accent);border-color:var(--accent);color:#fff;outline:0}.label-tag{background:var(--bg);border:1px solid var(--line);border-radius:99px;padding:0 8px}.meta-edit{align-items:flex-end}.meta-edit label{display:flex;flex-direction:column;min-width:200px}.meta-edit input{margin:2px 0}.mode-switch{display:inline-flex;border:1px solid var(--line);border-radius:99px;padding:2px;background:var(--bg)}.mode-switch button{font:inherit;font-size:.85rem;border:0;background:transparent;color:var(--muted);padding:4px 12px;border-radius:99px;cursor:pointer}.mode-switch button.on{background:var(--accent);color:#fff}.nav{overflow-x:auto}.ws-select{width:auto;font-size:.85rem;padding:4px 8px}.wbs{width:100%;border-collapse:collapse;font-size:.88rem}.wbs th{text-align:left;font-weight:600;color:var(--muted);padding:4px 6px;white-space:nowrap}.wbs td,.wbs th{border-bottom:1px solid var(--line)}.wbs td{padding:3px 6px;vertical-align:middle}.wbs input,.wbs select{padding:3px 5px;font-size:.85rem}.wbs tr.parent td{background:var(--bg);font-weight:600}.tbl-wrap{overflow-x:auto}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:12px 0}.tabs button{font:inherit;background:none;border:0;padding:6px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent}.tabs button.on{color:var(--fg);border-bottom-color:var(--accent)}.flag{font-size:.72rem;padding:1px 7px;border-radius:99px;color:#fff;white-space:nowrap}