*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d1117;--surface:#161b22;--surface2:#21262d;--border:#30363d;--green:#3fb950;--yellow:#e3b341;--orange:#ff6b00;--blue:#58a6ff;--red:#ff7b72;--text:#e6edf3;--muted:#8b949e;--radius:8px}body.theme-light{--bg:#f6f8fa;--surface:#fff;--surface2:#f0f2f5;--border:#d0d7de;--text:#1f2328;--muted:#656d76;--blue:#0969da;--green:#1a7f37;--yellow:#9a6700;--red:#cf222e;--orange:#bc4c00}body.theme-light .md-prose pre{background:#f6f8fa}body.theme-light .md-prose pre code{color:#24292f}body.theme-light .md-prose code{color:#c7254e;background:#eef0f3}body.theme-comfortable{--bg:#1a1612;--surface:#231e18;--surface2:#2d271f;--border:#3d3529;--text:#e8dcc8;--muted:#9c8f7a;--blue:#79b8e8;--green:#56c26b;--yellow:#e3b341;--red:#ff7b72;--orange:#f0883e}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;border:none;outline:none;font-family:inherit}.app-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:100;align-items:center;gap:24px;height:52px;padding:0 24px;display:flex;position:sticky;top:0}.app-header h1{color:var(--orange);white-space:nowrap;font-size:16px;font-weight:700}.nav-tabs{flex:1;gap:4px;display:flex}.nav-tab{color:var(--muted);background:0 0;border-radius:6px;align-items:center;padding:6px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.nav-tab:hover{background:var(--surface2);color:var(--text);text-decoration:none}.nav-tab.active{background:var(--surface2);color:var(--text)}.main{max-width:1100px;margin:0 auto;padding:24px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px;font-size:13px;font-weight:600}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-align:center;padding:20px}.stat-card .val{margin-bottom:4px;font-size:32px;font-weight:700}.stat-card .lbl{color:var(--muted);font-size:12px;font-weight:500}.stat-card.green .val{color:var(--green)}.stat-card.yellow .val{color:var(--yellow)}.stat-card.blue .val{color:var(--blue)}.stat-card.orange .val{color:var(--orange)}.progress-ring-wrap{flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.ring-label{color:var(--muted);font-size:13px}.badge{border-radius:12px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;line-height:1.6;display:inline-flex}.badge.easy{color:var(--green);background:#3fb9502e}.badge.medium{color:var(--yellow);background:#e3b3412e}.badge.hard{color:var(--red);background:#ff7b722e}.badge.review{color:var(--blue);background:#58a6ff2e}.filter-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.filter-bar select{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 10px;font-family:inherit;font-size:13px}.filter-bar input[type=text]{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:6px;flex:1;min-width:140px;padding:6px 12px;font-family:inherit;font-size:13px}.filter-bar input[type=text]::placeholder{color:var(--muted)}.chip{background:var(--surface2);border:1px solid var(--border);color:var(--muted);border-radius:20px;padding:5px 12px;font-size:12px;font-weight:600;transition:all .15s}.chip:hover{border-color:var(--blue);color:var(--text)}.chip.active{border-color:var(--blue);color:var(--blue);background:#58a6ff1f}.chip.active.easy{border-color:var(--green);color:var(--green);background:#3fb9501f}.chip.active.medium{border-color:var(--yellow);color:var(--yellow);background:#e3b3411f}.chip.active.hard{border-color:var(--red);color:var(--red);background:#ff7b721f}.problem-list{flex-direction:column;gap:2px;display:flex}.problem-row{background:var(--surface);border:1px solid var(--border);border-radius:6px;transition:border-color .15s;overflow:hidden}.problem-row:hover{border-color:var(--blue)}.problem-row.solved{border-left:3px solid var(--green)}.problem-row.review-due{border-left:3px solid var(--yellow)}.problem-row-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:10px 14px;display:flex}.prob-num{color:var(--muted);flex-shrink:0;width:32px;font-family:monospace;font-size:12px}.prob-title{flex:1;font-size:14px;font-weight:500}.prob-meta{flex-shrink:0;align-items:center;gap:8px;display:flex}.check-icon{font-size:16px}.problem-detail{border-top:1px solid var(--border);background:var(--surface2);padding:14px 16px;display:none}.problem-detail.open{display:block}.detail-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.btn{border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:6px 14px;font-size:13px;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.btn.primary{background:var(--green);color:#0d1117}.btn.primary:hover{filter:brightness(1.1)}.btn.secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.btn.secondary:hover{border-color:var(--blue);color:var(--blue)}.btn.danger{border-color:var(--border);color:var(--red);background:0 0}.btn.danger:hover{border-color:var(--red)}.btn.review-btn{border-color:var(--yellow);color:var(--yellow);background:#e3b34133}.btn.review-btn:hover{background:#e3b34159}.notes-area{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);resize:vertical;border-radius:6px;min-height:64px;padding:8px 10px;font-family:inherit;font-size:13px}.notes-area:focus{border-color:var(--blue);outline:none}.timer-row{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.timer-display{color:var(--text);background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:6px;min-width:70px;padding:3px 10px;font-family:monospace;font-size:14px}.lc-link{color:var(--blue);font-size:13px}.lc-row-link{color:var(--muted);border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:13px;text-decoration:none;transition:color .15s,background .15s}.lc-row-link:hover{color:var(--blue);background:#58a6ff1f;text-decoration:none}.patterns-row{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;display:flex}.pattern-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;align-self:center;margin-right:4px;font-size:11px;font-weight:700}.pattern-chip{color:var(--blue);cursor:pointer;background:#58a6ff1a;border:1px solid #58a6ff40;border-radius:20px;align-items:center;gap:5px;padding:3px 10px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.pattern-chip:hover{border-color:var(--blue);background:#58a6ff38}.pattern-chip.resource-chip{color:var(--green);background:#80c8801a;border-color:#80c8804d}.pattern-chip.resource-chip:hover{border-color:var(--green);background:#80c88038}.dash-grid{grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px;display:grid}@media (width<=720px){.dash-grid{grid-template-columns:1fr}}.review-item{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 0;display:flex}.review-item:last-child{border-bottom:none}.review-item .title{flex:1;font-size:14px}.start-item{border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:10px;padding:8px 0;display:flex}.start-item:last-child{border-bottom:none}.start-item:hover .title{color:var(--blue)}.start-item .title{flex:1;font-size:14px;transition:color .15s}.week-banner{border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(135deg,#ff6b0026,#58a6ff1a);flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:24px;padding:18px 24px;display:flex}.week-banner .wnum{color:var(--orange);font-size:28px;font-weight:800}.week-banner .winfo{flex:1}.week-banner .wdates{color:var(--muted);margin-bottom:2px;font-size:13px}.week-banner .wgoal{font-size:15px;font-weight:600}.week-banner .wact{color:var(--muted);margin-top:2px;font-size:13px}.cat-bar-wrap{flex-direction:column;gap:8px;display:flex}.cat-bar-row{align-items:center;gap:8px;font-size:12px;display:flex}.cat-bar-label{white-space:nowrap;text-overflow:ellipsis;width:140px;color:var(--muted);text-align:right;flex-shrink:0;overflow:hidden}.cat-bar-bg{background:var(--surface2);border-radius:4px;flex:1;height:10px;overflow:hidden}.cat-bar-fill{background:var(--blue);border-radius:4px;height:100%;transition:width .4s}.cat-bar-count{text-align:right;width:36px;color:var(--muted)}.plan-header{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:24px;display:flex}.plan-header label{color:var(--muted);font-size:14px}.plan-header input[type=date]{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 10px;font-family:inherit;font-size:13px}.weeks-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.week-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:16px;transition:all .15s;position:relative}.week-card:hover{border-color:var(--blue);transform:translateY(-1px)}.week-card.current{border-color:var(--orange);box-shadow:0 0 0 1px #ff6b004d}.week-card.past{opacity:.65}.week-card .wk-num{color:var(--muted);text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:700}.week-card .wk-goal{margin-bottom:8px;font-size:14px;font-weight:600;line-height:1.4}.week-card .wk-dates{color:var(--muted);margin-bottom:10px;font-size:12px}.week-card .wk-prog{background:var(--surface2);border-radius:4px;height:5px;margin-top:8px;overflow:hidden}.week-card .wk-prog-fill{background:var(--green);border-radius:4px;height:100%;transition:width .4s}.week-card .wk-prog-label{color:var(--muted);margin-top:4px;font-size:11px}.wk-badge-current{background:var(--orange);color:#000;border-radius:10px;padding:2px 7px;font-size:10px;font-weight:700;position:absolute;top:10px;right:10px}.week-card.selected{border-color:var(--blue);box-shadow:0 0 0 1px #58a6ff4d}#week-detail{border:1px solid var(--border);border-radius:var(--radius);margin-top:24px;display:none;overflow:hidden}#week-detail.open{display:block}.wkd-header{border-bottom:1px solid var(--border);background:linear-gradient(135deg,#58a6ff1a,#3fb9500d);flex-wrap:wrap;align-items:flex-start;gap:20px;padding:18px 24px;display:flex}.wkd-header-left{flex:1;min-width:200px}.wkd-num{color:var(--blue);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;font-size:11px;font-weight:700}.wkd-goal{margin-bottom:4px;font-size:18px;font-weight:700}.wkd-dates{color:var(--muted);margin-bottom:4px;font-size:13px}.wkd-act{color:var(--muted);font-size:13px}.wkd-close{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;font-size:18px}.wkd-close:hover{color:var(--text);background:var(--surface2)}.wkd-body{grid-template-columns:1fr 1fr;gap:0;display:grid}@media (width<=780px){.wkd-body{grid-template-columns:1fr}}.wkd-col{padding:20px 24px}.wkd-col+.wkd-col{border-left:1px solid var(--border)}.wkd-col-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:14px;font-size:12px;font-weight:700}.wkd-prob-row{border-bottom:1px solid #30363d80;align-items:center;gap:8px;padding:7px 0;font-size:13px;display:flex}.wkd-prob-row:last-child{border-bottom:none}.wkd-prob-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.wkd-prob-row.solved .wkd-prob-title{color:var(--muted);text-decoration:line-through}.wkd-res-card{background:var(--surface2);cursor:pointer;border-radius:6px;align-items:center;gap:8px;margin-bottom:6px;padding:8px 10px;font-size:13px;transition:background .15s;display:flex}.wkd-res-card:hover{background:var(--border)}.resources-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.res-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.res-group-title{color:var(--orange);border-bottom:1px solid var(--border);margin-bottom:10px;padding-bottom:8px;font-size:13px;font-weight:700}.res-link{color:var(--blue);border-bottom:1px solid #30363d80;align-items:center;gap:8px;padding:6px 0;font-size:13px;display:flex}.res-link:last-child{border-bottom:none}.res-link:hover{color:var(--text)}.empty{text-align:center;color:var(--muted);padding:32px;font-size:14px}.streak-fire{margin-bottom:4px;font-size:24px}.progress-ring-container{justify-content:center;align-items:center;padding:8px 0;display:flex}svg text{dominant-baseline:middle;text-anchor:middle}.prob-page{max-width:860px;margin:0 auto}.prob-page-back{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;margin-bottom:20px;padding:5px 10px;font-size:13px;transition:all .15s;display:inline-flex}.prob-page-back:hover{color:var(--blue);border-color:var(--border)}.prob-page-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:22px 24px}.prob-page-title{margin-bottom:8px;font-size:22px;font-weight:700;line-height:1.3}.prob-page-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.prob-page-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding-top:14px;display:flex}.prob-page-body{grid-template-columns:1fr 340px;align-items:start;gap:16px;display:grid}@media (width<=800px){.prob-page-body{grid-template-columns:1fr}}.prob-page-guide{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.prob-page-guide-header{border-bottom:1px solid var(--border);color:var(--muted);align-items:center;gap:8px;padding:12px 16px;font-size:13px;font-weight:600;display:flex}.prob-page-guide-body{max-height:70vh;padding:20px;overflow-y:auto}.prob-page-sidebar{flex-direction:column;gap:16px;display:flex}.prob-page-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.prob-page-card-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;font-size:11px;font-weight:700}.prob-nav-row{justify-content:space-between;gap:8px;margin-top:8px;display:flex}.prob-nav-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:center;text-overflow:ellipsis;white-space:nowrap;border-radius:6px;flex:1;padding:8px 10px;font-size:12px;transition:all .15s;overflow:hidden}.prob-nav-btn:hover{border-color:var(--blue);color:var(--blue)}.prob-nav-btn:disabled{opacity:.3;cursor:default}#md-overlay{z-index:1000;background:var(--bg);display:none;position:fixed;inset:0}#md-overlay.open{display:flex}#md-panel{background:var(--surface);border:none;border-radius:0;flex-direction:column;width:100%;height:100%;margin:0;display:flex;overflow:hidden}#md-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:12px 20px;display:flex}#md-panel-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;font-weight:600;overflow:hidden}#md-panel-path{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:260px;font-family:monospace;font-size:11px;overflow:hidden}.md-nav-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:5px;max-width:180px;padding:5px 12px;font-size:12px;font-weight:600;display:flex;overflow:hidden}.md-nav-btn:hover{border-color:var(--blue);color:var(--blue)}.md-nav-btn:disabled{opacity:.3;cursor:default;pointer-events:none}.md-nav-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#md-close{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;margin-left:4px;padding:4px 8px;font-size:20px;line-height:1}#md-close:hover{background:var(--surface2);color:var(--text)}#md-body{flex:1;padding:36px max(48px,50vw - 420px);overflow-y:auto}#md-error{text-align:center;color:var(--muted);padding:32px}#md-error code{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:6px;margin-top:8px;padding:8px 14px;font-family:monospace;font-size:13px;display:inline-block}.md-prose{color:var(--text);font-size:14.5px;line-height:1.75}.md-prose h1{border-bottom:1px solid var(--border);margin:0 0 20px;padding-bottom:10px;font-size:22px;font-weight:700}.md-prose h2{border-bottom:1px solid var(--border);margin:32px 0 12px;padding-bottom:6px;font-size:18px;font-weight:700}.md-prose h3{color:var(--blue);margin:24px 0 8px;font-size:15px;font-weight:700}.md-prose h4{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:18px 0 6px;font-size:13px;font-weight:700}.md-prose p{margin:0 0 14px}.md-prose strong{color:var(--text);font-weight:700}.md-prose em{color:var(--muted);font-style:italic}.md-prose code{background:var(--surface2);border:1px solid var(--border);color:#e6c07b;border-radius:4px;padding:1px 5px;font-family:SF Mono,Consolas,monospace;font-size:12.5px}.md-prose pre{border:1px solid var(--border);tab-size:4;background:#0a0d12;border-radius:8px;margin:16px 0;padding:16px;overflow-x:auto}.md-prose pre code{color:#abb2bf;background:0 0;border:none;padding:0;font-size:13px;line-height:1.6}.md-prose ul,.md-prose ol{margin:0 0 14px 20px}.md-prose li{margin-bottom:5px}.md-prose li>ul,.md-prose li>ol{margin-top:5px;margin-bottom:5px}.md-prose blockquote{border-left:3px solid var(--orange);color:var(--muted);background:#ff6b000f;margin:16px 0;padding:8px 16px}.md-prose blockquote p{margin:0}.md-prose hr{border:none;border-top:1px solid var(--border);margin:28px 0}.md-prose a{color:var(--blue)}.md-prose table{border-collapse:collapse;width:100%;margin:16px 0;font-size:13px}.md-prose th{background:var(--surface2);text-align:left;border:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 12px;font-size:12px;font-weight:600}.md-prose td{border:1px solid var(--border);vertical-align:top;padding:8px 12px}.md-prose tr:nth-child(2n) td{background:#ffffff05}.tab-content{display:block}a.nav-tab.active{background:var(--surface2);color:var(--text);text-decoration:none}
