.pomo-time{font-family:var(--font-display);font-size:48px;font-weight:500;letter-spacing:-.02em;line-height:1}.pomo-phase{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.pomo-controls{display:flex;gap:12px;margin-bottom:28px;align-items:center}.pomo-btn-main{background:var(--text);color:var(--bg);border:none;width:56px;height:56px;border-radius:50%;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .1s;box-shadow:var(--shadow-md)}.pomo-btn-main:hover{opacity:.8}.pomo-btn-sec{background:transparent;color:var(--muted);border:1px solid var(--border2);width:40px;height:40px;border-radius:50%;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s;align-self:center}.pomo-btn-sec:hover{color:var(--text);border-color:var(--text)}.pomo-segments{display:flex;gap:6px;margin-bottom:28px}.pomo-seg{width:10px;height:10px;border-radius:50%;background:var(--border);transition:background .3s}.pomo-seg.done{background:var(--text)}.pomo-seg.current{background:var(--muted)}.pomo-presets{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-bottom:28px}.pomo-preset-btn{font-family:var(--font-mono);font-size:10px;padding:6px 14px;border-radius:20px;border:1px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all .1s;letter-spacing:.05em}.pomo-preset-btn.active{background:var(--text);color:var(--bg);border-color:var(--text)}.pomo-preset-input{font-family:var(--font-mono);font-size:10px;padding:6px 10px;border-radius:20px;border:1px dashed var(--border2);background:transparent;color:var(--text);width:58px;text-align:center;letter-spacing:.05em;transition:border-color var(--t-fast,.12s)}.pomo-preset-input:focus{outline:none;border-style:solid;border-color:var(--text)}.pomo-preset-input:disabled{opacity:.35;cursor:not-allowed}.pomo-preset-input::-webkit-outer-spin-button,.pomo-preset-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pomo-preset-input{-moz-appearance:textfield;appearance:textfield}.pomo-task-row{width:100%;max-width:380px;display:flex;flex-direction:column;gap:8px}.pomo-task-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.pomo-session-log{width:100%;max-width:380px;margin-top:24px}.pomo-log-entry{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px;color:var(--muted)}.pomo-log-badge{font-family:var(--font-mono);font-size:9px;padding:2px 8px;border-radius:20px;background:var(--surface2);border:1px solid var(--border);white-space:nowrap}.pomo-ring-wrap{position:relative;width:220px;height:220px;margin:0 auto 28px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.pomo-ring-svg{position:absolute;top:0;left:0;width:100%;height:100%}.pomo-ring-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;pointer-events:none;width:100%}@media(max-width:480px){.pomo-ring-wrap{width:200px;height:200px}}.pomo-btn-main{position:relative}.pomo-btn-main.paused:after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px dashed var(--text);opacity:.28;animation:pomo-spin-ring 10s linear infinite}@keyframes pomo-spin-ring{to{transform:rotate(360deg)}}.pomo-ring-done{animation:ring-pulse .8s ease}@keyframes ring-pulse{0%{transform:scale(1)}45%{transform:scale(1.05)}to{transform:scale(1)}}.pomo-time-flash{animation:time-flash .7s ease}@keyframes time-flash{0%{opacity:1}35%{opacity:.2}to{opacity:1}}.lockin-enter{margin-top:18px;background:#1a1814;color:#faf8f4;border:1px solid #1a1814;padding:10px 22px;font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border-radius:99px;transition:transform .1s,opacity .1s}.lockin-enter:hover{opacity:.85;transform:scale(1.02)}.lockin-enter:active{transform:scale(.98)}.lockin-wrap{position:fixed;inset:0;z-index:50;background:radial-gradient(ellipse at center,#1f1c17,#0e0c09 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:40px 20px;color:#faf8f4;animation:lockin-fade .3s ease}@keyframes lockin-fade{0%{opacity:0}to{opacity:1}}.lockin-top{position:absolute;top:32px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px}.lockin-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.35em;color:#faf8f473}.lockin-task{font-family:var(--font-display);font-size:18px;color:#faf8f4d9;max-width:80vw;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lockin-ring{width:260px;height:260px;margin:0}.lockin-ring .pomo-time{font-size:56px;letter-spacing:-.02em}.lockin-task-input{background:transparent;border:none;border-bottom:1px solid rgba(250,248,244,.15);color:#faf8f4;padding:10px 4px;font-family:var(--font-display);font-size:17px;text-align:center;width:min(360px,80vw);outline:none;transition:border-color .15s}.lockin-task-input:focus{border-bottom-color:#faf8f473}.lockin-task-input::placeholder{color:#faf8f44d}.lockin-controls{display:flex;justify-content:center}.lockin-btn-main{background:#faf8f4;color:#1a1814;border:none;width:72px;height:72px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .1s,opacity .1s;box-shadow:0 4px 24px #00000080}.lockin-btn-main:hover{opacity:.9;transform:scale(1.04)}.lockin-btn-main:active{transform:scale(.96)}.lockin-presets{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.lockin-preset{background:transparent;color:#faf8f480;border:1px solid rgba(250,248,244,.2);padding:6px 14px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;border-radius:99px;cursor:pointer;transition:all .1s}.lockin-preset.active{background:#faf8f41f;color:#faf8f4;border-color:#faf8f466}.lockin-preset:disabled{opacity:.3;cursor:not-allowed}.lockin-preset-input{width:62px;text-align:center;color:#faf8f4;border-style:dashed}.lockin-preset-input:focus{outline:none;border-style:solid;border-color:#faf8f499}.lockin-preset-input::-webkit-outer-spin-button,.lockin-preset-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.lockin-preset-input{-moz-appearance:textfield;appearance:textfield}.lockin-exit{position:absolute;bottom:32px;left:50%;transform:translate(-50%);background:transparent;border:1px solid rgba(250,248,244,.18);color:#faf8f48c;padding:9px 22px;font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;border-radius:99px;transition:all .15s}.lockin-exit:hover{color:#faf8f4;border-color:#faf8f473}body.locked-in .sidebar,body.locked-in .mobile-tabbar,body.locked-in .topbar{display:none!important}body.locked-in .main{padding:0}body.locked-in .content{padding:0;max-width:none}.timer-mode-switch{display:inline-flex;border:1px solid var(--border2);border-radius:var(--r-pill,99px);overflow:hidden;margin-bottom:20px}.timer-mode-btn{background:transparent;border:none;padding:7px 18px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);cursor:pointer;transition:background var(--t-fast,.12s),color var(--t-fast,.12s)}.timer-mode-btn.active{background:var(--text);color:var(--bg)}.timer-mode-btn:not(.active):hover{color:var(--text)}.pomo-log-past{margin-top:22px;background:transparent;border:1px dashed var(--border2);border-radius:var(--r-pill,99px);padding:7px 16px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--muted);cursor:pointer;transition:color var(--t-fast,.12s),border-color var(--t-fast,.12s)}.pomo-log-past:hover{color:var(--text);border-color:var(--text);border-style:solid}.timer-pill{display:inline-flex;align-items:center;gap:7px;max-width:38vw;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-pill,99px);padding:5px 11px 5px 9px;cursor:pointer;color:var(--text);font-family:var(--font-mono);transition:border-color var(--t-fast,.12s),background var(--t-fast,.12s);-webkit-tap-highlight-color:transparent}.timer-pill:hover{border-color:var(--border2);background:var(--surface)}.timer-pill:active{background:var(--surface2)}.timer-pill-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--phase-focus);animation:timer-pill-pulse 2s var(--ease-paper,ease) infinite}.timer-pill-focus .timer-pill-dot{background:var(--phase-focus)}.timer-pill-short .timer-pill-dot{background:var(--phase-short)}.timer-pill-long .timer-pill-dot{background:var(--phase-long)}@keyframes timer-pill-pulse{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.timer-pill-dot{animation:none}}.timer-pill-time{font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:.02em}.timer-pill-label{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:768px){.timer-pill{max-width:none;padding:4px 9px 4px 8px;gap:6px}.timer-pill-label{display:none}}input[type=text],input[type=password],input[type=date],input[type=time],input[type=number],select,textarea{background:var(--surface);border:1px solid var(--border2);color:var(--text);padding:9px 12px;font-family:var(--font-sans);font-size:13px;border-radius:4px;outline:none;transition:border-color .15s;width:100%}input[type=text]:focus,input[type=password]:focus,input[type=date]:focus,input[type=time]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:#aaa}textarea{resize:vertical;min-height:80px;line-height:1.6}select{cursor:pointer;padding-inline-end:30px}input[type=date],input[type=time]{padding-inline-end:8px}input[type=text],input[type=password],input[type=date],input[type=time],input[type=number],select{min-height:40px}.input-group{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.input-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.input-row{display:flex;gap:8px;align-items:flex-start}.btn{background:#3d2e1e;color:#faf8f4;border:none;padding:9px 18px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:4px;transition:opacity .1s;white-space:nowrap;font-weight:500}.btn:hover{opacity:.8}.btn-sm{padding:6px 12px;font-size:10px}.btn:disabled,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn:disabled:hover,.btn[disabled]:hover{opacity:.4}.btn-outline{background:transparent;color:var(--muted);border:1px solid var(--border2);padding:7px 14px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:4px;transition:all .1s}.btn-outline:hover{color:var(--text);border-color:var(--text)}.btn-danger-text{background:none;border:none;color:var(--muted2);cursor:pointer;font-size:16px;padding:2px 6px;transition:color .1s}.btn-danger-text:hover{color:#c0392b}.btn-red{background:#c0392b;color:#fff;border:none;padding:8px 16px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:4px;transition:opacity .1s}.btn-red:hover{opacity:.85}.confirm-delete{margin-top:12px;padding:14px;border:1px solid #e8c6c0;background:#fdf6f5;border-radius:5px}.confirm-delete-q{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;line-height:1.5;color:#c0392b;text-transform:uppercase;text-align:center;margin-bottom:12px}.confirm-delete-actions{display:flex;gap:8px}.confirm-delete-actions>.btn-red,.confirm-delete-actions>.btn-outline{flex:1;padding:9px 12px;font-size:10px;text-align:center;white-space:normal;box-sizing:border-box}.confirm-delete-actions>.btn-red{border:1px solid transparent}.section-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;display:flex;align-items:center;gap:10px}.section-label:after{content:"";flex:1;height:1px;background:var(--border);order:1}.section-label .btn,.section-label .btn-outline{order:2;flex:0 0 auto}.asgn-item{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:5px;margin-bottom:8px;box-shadow:var(--shadow)}.asgn-item.done{opacity:.45}.asgn-check{width:17px;height:17px;border:1.5px solid var(--border2);border-radius:3px;flex-shrink:0;margin-top:2px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.asgn-check:hover{border-color:var(--text)}.asgn-check.checked{background:var(--text);border-color:var(--text)}.asgn-check.checked:after{content:"";display:block;width:4px;height:7px;border:2px solid var(--bg);border-top:none;border-left:none;transform:rotate(45deg) translate(-1px,-1px)}.asgn-body{flex:1;min-width:0}.asgn-title{font-size:14px;font-weight:500;margin-bottom:4px}.asgn-title.done{text-decoration:line-through;color:var(--muted)}.asgn-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.asgn-course{font-family:var(--font-mono);font-size:10px;font-weight:500;padding:2px 7px;border-radius:20px}.asgn-type{font-family:var(--font-mono);font-size:10px;color:var(--muted)}.asgn-due{font-family:var(--font-mono);font-size:10px;font-weight:500}.asgn-notes{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.5}.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-family:var(--font-mono);font-size:10px;font-weight:500}.tag-exam{background:#6d3fa01f;color:#6d3fa0}.action-item{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;background:var(--surface);border:1px solid var(--border);border-radius:5px;margin-bottom:6px;box-shadow:var(--shadow)}.action-item.done{opacity:.4}.action-item.suggested{border-style:dashed;background:#1a5c9e0a}.action-text{flex:1;font-size:13px;line-height:1.5}.action-text.done{text-decoration:line-through;color:var(--muted)}.bucket-section{margin-bottom:24px}.bucket-header{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;display:flex;align-items:center;gap:10px}.bucket-header:after{content:"";flex:1;height:1px;background:var(--border)}.bucket-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.modal-overlay{position:fixed;inset:0;background:#1a181452;z-index:100;display:flex;align-items:center;justify-content:center;animation:fadeOverlay .2s var(--ease-paper);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.modal{background:#faf8f4d1;backdrop-filter:blur(16px) saturate(1.05);-webkit-backdrop-filter:blur(16px) saturate(1.05);border:1px solid var(--border);border-top:1px solid rgba(250,248,244,.95);border-radius:8px;padding:28px;width:500px;max-width:94vw;max-height:90vh;overflow-y:auto;box-shadow:0 12px 36px #1a18142e,0 1px #ffffffb3 inset;animation:slideModal .28s var(--ease-settle)}@keyframes fadeOverlay{0%{opacity:0}to{opacity:1}}@keyframes slideModal{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes page-turn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-turn{animation:page-turn .16s var(--ease-page-turn)}.timer-subtabs{display:flex;gap:0;border:1px solid var(--border2);border-radius:6px;overflow:hidden;max-width:340px;margin:16px auto 18px}.timer-subtab{flex:1;background:transparent;border:none;padding:8px 10px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--muted);transition:all .1s;border-inline-end:1px solid var(--border2)}.timer-subtab:last-child{border-inline-end:none}.timer-subtab.active{background:var(--text);color:var(--bg)}.modal-title{font-family:var(--font-display);font-size:18px;margin-bottom:20px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.modal-error{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);padding:10px 12px;border-radius:4px;font-size:12px;margin:2px 0 14px}.modal input[aria-invalid]{border-color:var(--danger)}.urgent-banner{background:#c0392b14;border:1px solid rgba(192,57,43,.25);border-radius:5px;padding:12px 16px;margin-bottom:20px;display:flex;align-items:center;gap:10px;font-size:13px}.urgent-banner strong{color:#c0392b;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em}.empty{color:var(--muted2);font-family:var(--font-mono);font-size:11px;padding:20px 0}.divider{height:1px;background:var(--border);margin:24px 0}[dir=rtl] .rtl-mirror{display:inline-block;transform:scaleX(-1)}[dir=rtl] .course-card-chevron{transform:scaleX(-1)}[dir=rtl] .course-card-chevron.open{transform:scaleX(-1) rotate(-90deg)}.flash{position:fixed;bottom:24px;inset-inline-end:24px;background:var(--text);color:var(--bg);padding:10px 18px;font-family:var(--font-mono);font-size:11px;border-radius:4px;animation:fadeup .2s ease;z-index:200}@keyframes fadeup{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.flash{bottom:calc(72px + env(safe-area-inset-bottom));inset-inline-end:14px}.modal-grid{grid-template-columns:1fr}.input-row{flex-direction:column;align-items:stretch}.btn,.btn-outline{text-align:center}}.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin-bottom:28px}.course-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:var(--shadow);border-inline-start:3px solid transparent;overflow:hidden}.course-card-compact{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;transition:background .1s;-webkit-user-select:none;user-select:none}.course-card-compact:hover{background:var(--surface2)}.course-card-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.course-card-name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-card-pills{display:flex;gap:5px;flex-shrink:0}.course-card-pill{font-family:var(--font-mono);font-size:9px;padding:2px 7px;border-radius:20px;background:var(--surface2);color:var(--muted);border:1px solid var(--border)}.course-card-pill.urgent{background:#c0392b1a;color:#c0392b;border-color:#c0392b33}.course-card-chevron{font-size:10px;color:var(--muted2);transition:transform .2s;flex-shrink:0;margin-inline-start:6px}.course-card-chevron.open{transform:rotate(90deg)}.course-card-detail{border-top:1px solid var(--border);padding:12px 16px 14px;background:var(--surface2)}.course-card-next{font-size:12px;color:var(--muted);line-height:1.7}.course-card-actions{display:flex;gap:8px;margin-top:10px}.exam-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;margin-bottom:12px;box-shadow:var(--shadow);border-inline-start:4px solid transparent;overflow:hidden}.exam-card.done{opacity:.5}.exam-card-header{display:flex;align-items:flex-start;gap:12px;padding:16px 18px;cursor:pointer;-webkit-user-select:none;user-select:none}.exam-card-header:hover{background:#00000005}.exam-card-header-info{flex:1;min-width:0}.exam-card-title{font-size:15px;font-weight:600;margin-bottom:6px}.exam-card-title.done{text-decoration:line-through;color:var(--muted)}.exam-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.exam-card-body{padding:0 18px 18px;border-top:1px solid var(--border)}.exam-card-notes{font-size:12px;color:var(--muted);line-height:1.5;padding-top:12px;margin-bottom:10px}.exam-header-progress{display:flex;align-items:center;gap:8px;margin-top:7px}.exam-header-progress-track{flex:1;height:4px;background:var(--border);border-radius:99px;overflow:hidden;max-width:120px}.exam-header-progress-fill{height:100%;border-radius:99px;transition:width .3s}.exam-header-progress-txt{font-family:var(--font-mono);font-size:10px;color:var(--muted2);white-space:nowrap}.study-plan-bar{background:var(--surface2);border-radius:4px;padding:10px 12px;margin:12px 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.study-plan-label{font-family:var(--font-mono);font-size:10px;color:var(--muted);letter-spacing:.05em}.study-plan-date{font-family:var(--font-mono);font-size:11px;font-weight:500}.difficulty-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-family:var(--font-mono);font-size:10px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .1s}.topics-section{padding-top:8px}.topics-section-header{display:flex;align-items:center;gap:10px;margin-bottom:14px}.topics-section-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;white-space:nowrap}.topics-big-progress-wrap{flex:1;height:6px;background:var(--border);border-radius:99px;overflow:hidden}.topics-big-progress-bar{height:100%;border-radius:99px;transition:width .35s}.topics-big-progress-txt{font-family:var(--font-mono);font-size:11px;color:var(--muted);white-space:nowrap}.topic-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:5px;margin-bottom:4px;cursor:pointer;transition:background .1s}.topic-item:hover{background:var(--surface2)}.topic-check{width:20px;height:20px;border:2px solid var(--border2);border-radius:4px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .15s}.topic-check:hover{border-color:var(--text)}.topic-check.checked{background:var(--text);border-color:var(--text)}.topic-check.checked:after{content:"";display:block;width:5px;height:8px;border:2px solid var(--bg);border-top:none;border-left:none;transform:rotate(45deg) translate(-1px,-1px)}.topic-title{font-size:14px;flex:1;line-height:1.4}.topic-title.done{text-decoration:line-through;color:var(--muted2)}.topic-del{opacity:0;background:none;border:none;color:var(--muted2);cursor:pointer;font-size:16px;padding:0 4px;transition:opacity .1s,color .1s}.topic-item:hover .topic-del{opacity:1}.topic-del:hover{color:#c0392b}.topics-empty{font-family:var(--font-mono);font-size:11px;color:var(--muted2);padding:14px 12px;text-align:center;border:1px dashed var(--border);border-radius:5px;margin-bottom:12px}.topic-add-row{display:flex;gap:6px;margin-top:6px}.topic-add-row input{font-size:13px;padding:9px 12px}.topic-add-btn{background:var(--text);color:var(--bg);border:none;padding:9px 16px;font-family:var(--font-mono);font-size:10px;border-radius:4px;cursor:pointer;white-space:nowrap;transition:opacity .1s}.topic-add-btn:hover{opacity:.8}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:24px}.cal-header{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-align:center;padding:4px 0;letter-spacing:.05em}.cal-day{min-height:64px;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:4px 6px}.cal-day.today{border-color:var(--text)}.cal-day.other-month{opacity:.35}.cal-day-num{font-family:var(--font-mono);font-size:10px;color:var(--muted);margin-bottom:3px}.cal-day.today .cal-day-num{color:var(--text);font-weight:600}.cal-event{font-size:9px;padding:2px 5px;border-radius:3px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-mono);font-weight:500}.cal-exam{background:#6d3fa026;color:#6d3fa0}.cal-study{background:#1a5c9e1f;color:#1a5c9e}.cal-agenda{display:none}.cal-agenda-item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.cal-agenda-date{font-family:var(--font-mono);font-size:11px;color:var(--muted);width:54px;flex-shrink:0;padding-top:2px}.cal-agenda-pills{display:flex;flex-direction:column;gap:5px;flex:1}.cal-agenda-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:4px;font-size:12px}@media(max-width:600px){.calendar-grid,.cal-header-row{display:none!important}.cal-agenda{display:block}}.nextup-unlock{display:flex;gap:16px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:24px;margin-bottom:24px;box-shadow:var(--shadow)}.nextup-unlock-icon{font-size:28px;color:var(--border2);flex-shrink:0;margin-top:2px}.nextup-unlock-body{flex:1}.nextup-unlock-title{font-family:var(--font-display);font-size:17px;font-weight:500;color:var(--text);margin-bottom:8px;line-height:1.35}.nextup-unlock-sub{font-size:13px;color:var(--muted);line-height:1.6;margin-bottom:16px}.nextup-unlock-progress{display:flex;align-items:center;gap:8px;margin-bottom:16px}.nextup-unlock-pip{width:32px;height:6px;border-radius:3px;background:var(--border2);transition:background .25s}.nextup-unlock-pip.filled{background:#2e7d52}.nextup-unlock-progress-label{font-family:var(--font-mono);font-size:11px;color:var(--muted);margin-inline-start:4px}.suggest-banner{background:#1a5c9e0f;border:1px dashed rgba(26,92,158,.3);border-radius:5px;padding:10px 14px;margin-bottom:8px;display:flex;align-items:center;gap:10px;font-size:13px;flex-wrap:wrap}.suggest-banner-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;color:#1a5c9e;margin-inline-end:4px}.quick-add-box{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px;margin-bottom:24px;box-shadow:var(--shadow)}.cdv-head{display:flex;align-items:flex-start;gap:14px;background:var(--surface);border:1px solid var(--border);border-inline-start:3px solid var(--border2);border-radius:6px;padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow)}.cdv-head-main{flex:1;min-width:0}.cdv-name{font-family:var(--font-display);font-size:22px;font-weight:500;line-height:1.2}.cdv-sub{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--muted2);text-transform:uppercase}.cdv-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-bottom:22px}.cdv-stat{background:var(--surface);padding:12px 14px}.cdv-stat-value{font-family:var(--font-display);font-size:21px;line-height:1.1}.cdv-stat-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);margin-top:4px}.cdv-aside{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:14px 16px;box-shadow:var(--shadow);min-width:0}.cdv-aside-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);margin-bottom:10px}.cdv-aside-empty{font-size:12px;color:var(--muted2);font-style:italic}.cdv-session{padding:8px 0;border-top:1px solid var(--border)}.cdv-session:first-of-type{border-top:0}.cdv-session-when{font-size:12px}.cdv-session-len{font-family:var(--font-mono);font-size:10px;color:var(--muted2);margin-top:2px}@media(min-width:1201px){.cdv-split{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.cdv-aside{position:sticky;top:18px}}@media(min-width:1600px){.cdv-split{grid-template-columns:minmax(0,1fr) 340px}}@media(max-width:768px){.home-grid{grid-template-columns:1fr}.quick-add-box .input-row{flex-direction:row}.quick-add-box .input-row select{max-width:110px}.study-plan-bar{flex-direction:column;align-items:flex-start;gap:6px}.topic-item{padding:12px 10px}.cdv-head{padding:14px}.cdv-name{font-size:19px}}.ref-card{position:fixed;bottom:24px;inset-inline-end:24px;z-index:210;width:300px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--border2);border-radius:6px;box-shadow:var(--shadow-md);padding:16px 18px 14px;animation:fadeup .24s var(--ease-settle)}.ref-eyebrow{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2)}.ref-title{font-family:var(--font-display);font-size:16px;line-height:1.3;margin:6px 0 12px}.ref-options{display:flex;flex-direction:column;gap:6px}.ref-option{text-align:start;font-family:var(--font-sans);font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:8px 11px;cursor:pointer;transition:background .1s,border-color .1s}.ref-option:hover{background:var(--surface2);border-color:var(--border2)}.ref-dismiss{display:block;margin:11px 0 0 auto;background:none;border:none;cursor:pointer;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--muted);padding:2px 0}.ref-dismiss:hover{color:var(--text)}.ref-thanks{font-family:var(--font-display);font-size:15px;padding:6px 0}@media(max-width:768px){.ref-card{bottom:calc(72px + env(safe-area-inset-bottom));inset-inline-end:14px;inset-inline-start:14px;width:auto}}.ob-wrap{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:32px 20px;background:var(--bg);overflow:hidden}.ob-wrap:before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(var(--bg),var(--bg) 31px,var(--border) 31px,var(--border) 32px);opacity:.35;pointer-events:none}.ob-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:40px 34px 32px;width:100%;max-width:440px;box-shadow:0 1px 0 var(--border2),0 18px 40px -18px #281e0f47;background-image:linear-gradient(var(--danger) 0 0),repeating-linear-gradient(transparent,transparent 31px,color-mix(in srgb,var(--border) 70%,transparent) 31px,color-mix(in srgb,var(--border) 70%,transparent) 32px);background-size:1.5px 100%,100% 100%;background-position:22px 0,0 6px;background-repeat:no-repeat,repeat;animation:obSettle .5s var(--ease-settle) both}.ob-card:before{content:"";position:absolute;top:-11px;left:50%;transform:translate(-50%) rotate(-1.4deg);width:104px;height:22px;background:color-mix(in srgb,var(--warning) 18%,#fff);border:1px solid color-mix(in srgb,var(--warning) 28%,transparent);box-shadow:0 1px 2px #0000000d}@keyframes obSettle{0%{opacity:0;transform:translateY(10px) rotate(-.4deg)}to{opacity:1;transform:none}}.ob-pad{padding-inline-start:18px}.ob-wordmark{font-family:var(--font-display);font-size:30px;font-weight:600;text-align:center;letter-spacing:-.01em;margin-bottom:4px}.ob-tagline{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-align:center;letter-spacing:.16em;text-transform:uppercase;margin-bottom:26px}.ob-steps{display:flex;align-items:center;gap:7px;justify-content:center;margin-bottom:26px}.ob-step-dot{width:24px;height:3px;border-radius:0;background:var(--border2);transition:background .3s var(--ease-paper),transform .3s var(--ease-paper);transform-origin:left}.ob-step-dot.active{background:var(--text);transform:scaleX(1.18)}.ob-step-dot.done{background:var(--muted)}.ob-step-body{animation:obPage .4s var(--ease-page-turn) both}@keyframes obPage{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}.ob-step-title{font-family:var(--font-display);font-size:23px;font-weight:600;line-height:1.18;margin-bottom:10px}.ob-step-desc{font-size:13.5px;color:var(--muted);margin-bottom:22px;line-height:1.62}.ob-skip{font-family:var(--font-mono);font-size:10px;color:var(--muted2);cursor:pointer;text-align:center;margin-top:16px;letter-spacing:.08em;text-transform:uppercase}.ob-skip:hover{color:var(--text);text-decoration:underline;text-underline-offset:3px}.ob-langs{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:4px;max-height:184px;overflow-y:auto;overscroll-behavior:contain}.ob-lang{font-family:var(--font-display);font-size:15px;color:var(--text);background:var(--bg);border:1px solid var(--border2);border-radius:3px;padding:12px;cursor:pointer;text-align:start;transition:border-color .15s,background .15s,transform .12s var(--ease-settle);-webkit-tap-highlight-color:transparent}.ob-lang:hover{transform:translateY(-1px)}.ob-lang.on{border-color:var(--text);background:var(--surface2);box-shadow:inset 2px 0 0 var(--danger)}.ob-notif-box{position:relative;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:20px;margin-bottom:20px;text-align:center}.ob-notif-icon{font-size:30px;margin-bottom:8px}.ob-notif-title{font-family:var(--font-display);font-size:18px;font-weight:600;margin-bottom:8px}.ob-notif-desc{font-size:13px;color:var(--muted);line-height:1.6}@media(max-width:480px){.ob-card{padding:34px 20px 26px;background-position:15px 0,0 6px}.ob-pad{padding-inline-start:10px}.ob-card:before{width:92px}}@media print{*,*:before,*:after{-webkit-print-color-adjust:exact;print-color-adjust:exact}html,body,#root{height:auto;background:#fff;overflow:visible}body:before{display:none!important}.sidebar,.mobile-tabbar,.mobile-courses-bar,.topbar,.timer-subtabs,.cal-modes,.cal-nav,.cal-agenda-close,.urgent-banner,.flash,.modal-overlay,.btn,.btn-sm,.btn-outline,.btn-danger-text,.an-legend,.rail-toggle{display:none!important}.app,.main{display:block!important;height:auto!important;overflow:visible!important}.content,.content.content-wide{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}.cal-sheet,.an-card,.cal-agenda-pane,.cdv-aside,.cdv-head{box-shadow:none!important;position:static!important;max-height:none!important;overflow:visible!important;border-color:#999!important}.cal-split,.cdv-split,.an{display:block!important}.cal-agenda-pane,.cdv-aside{margin-top:12px}.an-card{margin-bottom:14px}.cal-week,.cal-row,.an-card,.cdv-head,.exam-card,.asgn-item{break-inside:avoid;page-break-inside:avoid}.cal-dow{break-after:avoid;page-break-after:avoid}.cal{--cal-cell-min: 96px}.cal-cell:hover{background:transparent!important}.cal-chip{border:1px solid #bbb!important}.cal-weekwrap{overflow:visible!important}.cal-weekwrap .cal-weekhead,.cal-weekwrap .cal-allday,.cal-weekwrap .cal-hours{min-width:0!important}a[href]:after{content:none!important}@page{margin:12mm}}.app[data-tier=desktop] .topbar-inner,.app[data-tier=desktop] .content{max-width:none}.app[data-tier=desktop] .sv2-wrap{max-width:none;padding-inline:0;columns:2;column-gap:18px}.app[data-tier=desktop] .sv2-section{break-inside:avoid;margin-top:0;margin-bottom:18px;display:inline-block;width:100%}.app[data-tier=desktop] .gv-wrap{max-width:none}.app[data-tier=desktop] .gv-wrap>.gv-hero{grid-column:1 / -1}.app[data-tier=desktop] .st-wrap{max-width:none;padding-inline:0}.app[data-tier=desktop] .st-wrap{columns:2;column-gap:18px}.app[data-tier=desktop] .st-card{break-inside:avoid;display:inline-block;width:100%;margin-top:0;margin-bottom:18px}.app[data-tier=desktop] .sv-wrap{max-width:none;padding-inline:0;columns:2;column-gap:18px}.app[data-tier=desktop] .sv-wrap>:not(.sv-day){column-span:all;break-inside:avoid}.app[data-tier=desktop] .sv-day{break-inside:avoid;display:inline-block;width:100%;margin-bottom:14px}.app[data-tier=desktop] .sd-page-actions,.app[data-tier=desktop] .sd-page-plan{max-width:none}.app[data-tier=desktop] .sd-list-tile{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:8px;align-items:start}.app[data-tier=desktop] .sd-bucket-tile{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;align-items:start}.app[data-tier=desktop] .sd-bucket-tile>.quick-add-box,.app[data-tier=desktop] .sd-bucket-tile>.nextup-unlock,.app[data-tier=desktop] .sd-bucket-tile>.suggest-banner,.app[data-tier=desktop] .sd-bucket-tile>.divider,.app[data-tier=desktop] .sd-bucket-tile>.empty{grid-column:1 / -1}.app[data-tier=desktop] .sd-list-tile>.section-label,.app[data-tier=desktop] .sd-list-tile>.divider,.app[data-tier=desktop] .sd-list-tile>.empty,.app[data-tier=desktop] .sd-list-tile>details{grid-column:1 / -1}@media(min-width:1600px){.app[data-tier=desktop] .sv2-wrap{columns:3}.app[data-tier=desktop] .sd-list-tile{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}}.app[data-tier=desktop] .tt-panes,.app[data-tier=tablet] .tt-panes{grid-template-columns:380px minmax(0,1fr);gap:26px;align-items:start}.app[data-tier=tablet] .tt-panes{grid-template-columns:300px minmax(0,1fr)}.app[data-tier=desktop] .tt{--tt-hour-h: 68px}.app[data-tier=desktop] .tt-grid-head,.app[data-tier=desktop] .tt-grid-body{grid-template-columns:54px repeat(7,minmax(0,1fr))}.app[data-tier=desktop] .pomo-ring-wrap{width:340px;height:340px;margin-bottom:34px}.app[data-tier=desktop] .pomo-time{font-size:68px}.app[data-tier=desktop] .pomo-phase{font-size:13px;letter-spacing:.14em}.app[data-tier=desktop] .pomo-session-log,.app[data-tier=desktop] .pomo-task-row{max-width:560px}.cal{--cal-rule: var(--border);--cal-daynum-h: 26px;--cal-lane-h: 18px;--cal-cell-min: 108px;--cal-hour-h: 44px;--cal-gutter-w: 52px;display:flex;flex-direction:column;gap:14px}.cal-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cal-title{font-family:var(--font-display);font-size:24px;font-weight:500;letter-spacing:-.01em;min-width:0}.cal-title-year{color:var(--muted2);font-weight:400}.cal-bar-spacer{flex:1}.cal-nav{display:inline-flex;align-items:center;border:1px solid var(--border2);border-radius:4px;overflow:hidden}.cal-nav button{background:var(--surface);border:0;color:var(--muted);font-family:var(--font-mono);font-size:12px;padding:6px 11px;cursor:pointer;transition:background .1s,color .1s;line-height:1.4}.cal-nav button+button{border-inline-start:1px solid var(--border)}.cal-nav button:hover{background:var(--surface2);color:var(--text)}.cal-modes{display:inline-flex;border:1px solid var(--border2);border-radius:4px;overflow:hidden}.cal-modes button{background:var(--surface);border:0;color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:7px 13px;cursor:pointer;transition:background .1s,color .1s}.cal-modes button+button{border-inline-start:1px solid var(--border)}.cal-modes button:hover{background:var(--surface2);color:var(--text)}.cal-modes button.active{background:var(--text);color:var(--bg)}.cal-sheet{border:1px solid var(--cal-rule);background:var(--surface);box-shadow:var(--shadow)}.cal-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--cal-rule);background:var(--surface2)}.cal-dow div{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);text-align:center;padding:7px 2px}.cal-dow div+div{border-inline-start:1px solid var(--cal-rule)}.cal-week{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-week+.cal-week{border-top:1px solid var(--cal-rule)}.cal-cell{min-height:var(--cal-cell-min);padding:0 5px 5px;display:flex;flex-direction:column;min-width:0;background:transparent;cursor:pointer;transition:background .1s}.cal-cell+.cal-cell{border-inline-start:1px solid var(--cal-rule)}.cal-cell:hover{background:var(--surface2)}.cal-cell.weekend{background:#00000003}.cal-cell.weekend:hover{background:var(--surface2)}.cal-cell.outside .cal-daynum{color:var(--border2)}.cal-cell.outside .cal-chip{opacity:.45}.cal-cell.selected{background:var(--surface2);box-shadow:inset 0 0 0 2px var(--text)}.cal-daynum{font-family:var(--font-display);font-size:14px;color:var(--muted);height:var(--cal-daynum-h);display:flex;align-items:center;justify-content:flex-end;flex-shrink:0}.cal-cell.today .cal-daynum{color:var(--bg)}.cal-cell.today .cal-daynum span{background:var(--text);width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.cal-bandspace{height:calc(var(--cal-lanes, 0) * var(--cal-lane-h));flex-shrink:0}.cal-bands{position:absolute;top:var(--cal-daynum-h);inset-inline:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:var(--cal-lane-h);pointer-events:none;padding:0 5px}.cal-band{pointer-events:auto;margin:1px 0;height:15px;display:flex;align-items:center;gap:5px;padding:0 7px;font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px;cursor:pointer;background-image:repeating-linear-gradient(-45deg,var(--band-tint) 0 5px,transparent 5px 10px);background-color:var(--band-wash);border:1px solid var(--band-edge);color:var(--band-ink)}.cal-band.cont-start{border-start-start-radius:0;border-end-start-radius:0;border-inline-start-style:dashed}.cal-band.cont-end{border-start-end-radius:0;border-end-end-radius:0;border-inline-end-style:dashed}.cal-items{display:flex;flex-direction:column;gap:2px;min-width:0}.cal-chip{display:flex;align-items:center;gap:5px;padding:2px 6px;border-radius:3px;font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border:1px solid transparent;text-align:start;background:none;font-family:inherit;color:var(--text);width:100%}.cal-chip-label{overflow:hidden;text-overflow:ellipsis}.cal-chip:hover{filter:brightness(.96)}.cal-chip.is-exam{background:var(--chip-color, var(--text));color:#fff;font-weight:500;border-color:#0000001f}.cal-chip.is-assignment{background:var(--surface2);border-color:var(--border);border-inline-start:2px solid var(--chip-color, var(--border2));padding-inline-start:5px}.cal-chip.is-session{color:var(--muted);font-family:var(--font-mono);font-size:10px;padding-inline-start:0}.cal-pip{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--chip-color, var(--border2))}.cal-chip.done .cal-chip-label{text-decoration:line-through;opacity:.55}.cal-chip.is-exam.done{background:var(--muted2)}.cal-more{font-family:var(--font-mono);font-size:9px;color:var(--muted2);padding:1px 6px;cursor:pointer;background:none;border:0;text-align:start}.cal-more:hover{color:var(--text)}.cal-weekhead{display:grid;grid-template-columns:var(--cal-gutter-w) repeat(7,minmax(0,1fr));border-bottom:1px solid var(--cal-rule);background:var(--surface2)}.cal-weekhead>div+div{border-inline-start:1px solid var(--cal-rule)}.cal-weekhead-day{padding:6px 8px;text-align:center}.cal-weekhead-dow{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2)}.cal-weekhead-num{font-family:var(--font-display);font-size:17px;color:var(--muted)}.cal-weekhead-day.today .cal-weekhead-num{color:var(--text);font-weight:600}.cal-weekhead-day.today .cal-weekhead-dow{color:var(--text)}.cal-allday{display:grid;grid-template-columns:var(--cal-gutter-w) repeat(7,minmax(0,1fr));border-bottom:1px solid var(--cal-rule);background:var(--surface)}.cal-allday>div+div{border-inline-start:1px solid var(--cal-rule)}.cal-allday-gutter{font-family:var(--font-mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);padding:6px 6px 0;text-align:end}.cal-allday-col{padding:4px;display:flex;flex-direction:column;gap:2px;min-height:30px;min-width:0}.cal-hours{display:grid;grid-template-columns:var(--cal-gutter-w) repeat(7,minmax(0,1fr));position:relative;align-items:start;padding-top:7px}.cal-hours>div+div{border-inline-start:1px solid var(--cal-rule)}.cal-gutter,.cal-daycol{height:calc(var(--cal-hour-count, 16) * var(--cal-hour-h))}.cal-gutter{position:relative}.cal-gutter-hour{height:var(--cal-hour-h);font-family:var(--font-mono);font-size:9px;color:var(--muted2);text-align:end;padding-inline-end:6px;transform:translateY(-5px)}.cal-daycol{position:relative;min-width:0}.cal-daycol.weekend{background:#00000003}.cal-hourline{height:var(--cal-hour-h);border-top:1px solid var(--cal-rule);position:relative}.cal-hourline:first-child{border-top:0}.cal-hourline:after{content:"";position:absolute;inset-inline:0;top:50%;border-top:1px dotted var(--border);opacity:.55}.cal-now{position:absolute;inset-inline:0;height:0;border-top:1px solid var(--danger);z-index:3;pointer-events:none}.cal-now:before{content:"";position:absolute;inset-inline-start:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--danger)}.cal-block{position:absolute;border-radius:4px;padding:3px 6px;overflow:hidden;font-size:11px;line-height:1.3;cursor:grab;background:var(--block-wash, var(--surface2));border:1px solid var(--block-edge, var(--border2));border-inline-start:3px solid var(--block-color, var(--border2));z-index:2;touch-action:none;-webkit-user-select:none;user-select:none}.cal-block:hover{box-shadow:var(--shadow-md)}.cal-block.dragging{cursor:grabbing;opacity:.85;box-shadow:var(--shadow-md);z-index:5}.cal-block-time{font-family:var(--font-mono);font-size:9px;color:var(--muted);letter-spacing:.03em}.cal-block-title{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-block.compact{padding:1px 6px;display:flex;align-items:center;gap:6px}.cal-block.compact .cal-block-title{font-size:10px}.cal-lesson{position:absolute;inset-inline:0;z-index:1;pointer-events:none;overflow:hidden;padding:2px 7px;background:var(--lesson-wash, rgba(26, 24, 20, .035));border-top:1px solid var(--lesson-color, var(--border2));border-bottom:1px dotted var(--lesson-color, var(--border2));display:flex;align-items:baseline;gap:6px}.cal-lesson-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-lesson-room{font-family:var(--font-mono);font-size:9px;color:var(--muted2);flex-shrink:0}.cal-block.is-planned{background:transparent;border-style:dashed;border-inline-start-style:solid}.cal-block.is-planned .cal-block-title{font-weight:500}.cal-block.is-planned.st-kept{opacity:.5;border-style:solid}.cal-block.is-planned.st-dismissed{opacity:.4}.cal-block.is-planned.st-dismissed .cal-block-title{text-decoration:line-through}.cal-block.is-planned.st-missed{border-color:var(--danger)}.cal-block.is-planned.st-missed .cal-block-time{color:var(--danger)}.cal-block.is-planned.creating{pointer-events:none;opacity:.75;z-index:6}.cal-row.is-planned .cal-row-mark{opacity:.55}.cal-row.is-lesson .cal-row-mark{opacity:.35}.cal-row.is-planned.st-missed .cal-row-meta{color:var(--danger)}.cal-block.is-commitment{cursor:pointer;background:var(--block-wash, var(--surface2));border-style:solid}.cal-block.is-commitment .cal-block-title{font-weight:600}.cal-block.is-commitment.weekly .cal-block-time:after{content:" ↻";font-size:10px;opacity:.7}.cal-chip.is-commitment{border-inline-start-width:3px;font-weight:500}.cal-row.is-commitment .cal-row-mark{opacity:.9}.cm-repeat{display:flex;gap:6px}.cm-repeat button{flex:1;padding:9px 0;font-family:var(--font-display);font-size:14px;cursor:pointer;border-radius:8px;border:1px solid var(--border2);background:transparent;color:var(--muted);transition:all .12s var(--ease-page-turn, ease)}.cm-repeat button.on{border-color:var(--text);background:var(--text);color:var(--bg)}.cm-swatches{display:flex;flex-wrap:wrap;gap:7px}.cm-swatch{width:24px;height:24px;border-radius:50%;cursor:pointer;border:1px solid var(--border2);background:var(--sw, transparent);padding:0}.cm-swatch.on{box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--text)}.cm-swatch.none{background:linear-gradient(45deg,transparent 45%,var(--border2) 45%,var(--border2) 55%,transparent 55%)}.plan-row{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px}.plan-actions{display:flex;gap:8px;align-items:center;margin-top:6px;flex-wrap:wrap}.plan-delete{margin-inline-start:auto;display:inline-flex;align-items:center;gap:5px}.plan-status{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:6px 9px;border-radius:6px;margin-bottom:12px;background:var(--surface2);color:var(--muted);border:1px solid var(--border)}.plan-status.st-missed{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent)}@media(max-width:520px){.plan-row{grid-template-columns:1fr}}.cal-agenda-pane{background:var(--surface);border:1px solid var(--cal-rule);box-shadow:var(--shadow);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.cal-agenda-head{display:flex;align-items:baseline;gap:10px}.cal-agenda-title{font-family:var(--font-display);font-size:19px}.cal-agenda-rel{font-family:var(--font-mono);font-size:10px;color:var(--muted2);letter-spacing:.06em;text-transform:uppercase}.cal-agenda-close{margin-inline-start:auto;background:none;border:0;color:var(--muted2);cursor:pointer;font-size:16px;line-height:1;padding:2px 4px}.cal-agenda-close:hover{color:var(--text)}.cal-agenda-group{display:flex;flex-direction:column;gap:6px}.cal-agenda-empty{font-size:12px;color:var(--muted2);font-style:italic}.cal-row{display:flex;align-items:flex-start;gap:9px;padding:8px 0;border-top:1px solid var(--border);min-width:0}.cal-row:first-child{border-top:0}.cal-row-mark{width:3px;align-self:stretch;border-radius:2px;background:var(--row-color, var(--border2));flex-shrink:0}.cal-row-body{flex:1;min-width:0}.cal-row-title{font-size:13px;line-height:1.35}.cal-row-title.done{text-decoration:line-through;color:var(--muted2)}.cal-row-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:3px;font-family:var(--font-mono);font-size:10px;color:var(--muted2)}@media(min-width:1201px){.cal{--cal-cell-min: 128px}}@media(min-width:1440px){.cal-split{display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,26%,400px);gap:18px;align-items:start}.cal-agenda-pane{position:sticky;top:18px;max-height:calc(100vh - 140px);overflow-y:auto}}@media(min-width:1600px){.cal{--cal-cell-min: 148px;--cal-hour-h: 52px}}@media(max-width:768px){.cal{--cal-cell-min: 58px;--cal-daynum-h: 20px;--cal-lane-h: 6px}.cal-title{font-size:19px}.cal-cell{padding:0 2px 3px}.cal-daynum{font-size:12px;justify-content:center}.cal-cell.today .cal-daynum span{width:18px;height:18px;font-size:10px}.cal-items{flex-direction:row;flex-wrap:wrap;gap:2px;justify-content:center}.cal-chip{width:6px;height:6px;padding:0;border-radius:50%;background:var(--chip-color, var(--muted2));border:0}.cal-chip.is-assignment{background:transparent;border:1.5px solid var(--chip-color, var(--muted2))}.cal-chip.is-session{background:var(--border2)}.cal-chip-label,.cal-pip,.cal-more{display:none}.cal-band{font-size:0;height:4px;padding:0}.cal-bands{padding:0 2px}.cal-ribbon-sum{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:9px 11px;margin-bottom:4px;background:var(--paper2, var(--card));border-radius:8px;border-inline-start:2.5px solid var(--accent2, var(--border2))}.cal-ribbon-sum-l{font-family:var(--font-mono);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted2)}.cal-ribbon-sum-v{font-family:var(--font-display);font-size:14px;color:var(--text)}.cal-ribbon-axis{position:relative;height:12px;margin-inline-start:var(--rb-gutter, 38px)}.cal-ribbon-tick{position:absolute;top:0;transform:translate(-50%);font-family:var(--font-mono);font-size:8px;color:var(--muted2)}[dir=rtl] .cal-ribbon-tick{transform:translate(50%)}.cal-ribbon-row{display:flex;align-items:stretch;min-height:calc(22px * var(--rb-lanes, 1) + 10px);border-top:1px solid var(--rule, var(--border2))}.cal-ribbon-row:last-child{border-bottom:1px solid var(--rule, var(--border2))}.cal-ribbon-row.sel{background:var(--paper2, var(--card))}.cal-ribbon-day{width:var(--rb-gutter, 38px);flex:0 0 var(--rb-gutter, 38px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;padding:0;background:none;border:0;cursor:pointer}.cal-ribbon-dow{font-family:var(--font-mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted2)}.cal-ribbon-num{font-family:var(--font-display);font-size:14px;color:var(--muted);line-height:1.1}.cal-ribbon-row.today .cal-ribbon-num{color:var(--text);font-weight:600}.cal-ribbon-pins{display:flex;gap:2px}.cal-ribbon-pin{width:5px;height:5px;border-radius:50%;background:var(--muted2)}.cal-ribbon-pin.k-exam{background:var(--danger, #c2757a)}.cal-ribbon-pin.k-assignment{background:transparent;border:1px solid var(--muted2)}.cal-ribbon-track{position:relative;flex:1 1 auto;min-width:0}.cal-ribbon-now{position:absolute;top:0;bottom:0;width:1.5px;background:var(--danger, #c2757a)}.cal-ribbon-b{position:absolute;top:calc(5px + var(--rb-lane, 0) * 22px);height:18px;border-radius:3px;border:0;padding:0 4px;font-family:var(--font-mono);font-size:9px;line-height:18px;overflow:hidden;white-space:nowrap;text-align:start;cursor:pointer;background:var(--rb-color, var(--border2));color:#fff}.cal-ribbon-b.k-lesson{background:var(--rule2, #e7e0d1);color:var(--muted)}.cal-ribbon-b.k-planned{background:var(--rb-wash, transparent);color:var(--rb-color, var(--muted));border:1px dashed var(--rb-color, var(--border2));line-height:16px}.cal-ribbon-b.k-planned.s-dismissed{opacity:.45}.cal-ribbon-b.k-planned.s-missed{border-style:dotted}.cal-add-blocker{display:flex;align-items:center;gap:7px;width:100%;padding:9px 10px;text-align:start;cursor:pointer;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:none;border:1px dashed var(--rule, var(--border2));border-radius:6px}.cal-add-blocker-plus{font-family:var(--font-display);font-size:14px;line-height:1;color:var(--accent2, var(--muted))}.cal-agenda-note{padding:5px 2px 0;font-size:11px;font-style:italic;color:var(--muted2)}.cal-gap{display:flex;align-items:center;gap:8px;width:100%;padding:9px 2px;background:none;border:0;border-bottom:1px dashed var(--rule, var(--border2));cursor:pointer;text-align:start}.cal-gap-time{font-family:var(--font-mono);font-size:10px;color:var(--accent2, var(--muted));flex:0 0 auto}.cal-gap-len{font-size:12px;color:var(--muted);font-style:italic}.cal-gap.is-static{cursor:default}.cal-gap-add{margin-inline-start:auto;width:20px;height:20px;border-radius:50%;border:1px solid var(--accent2, var(--border2));color:var(--accent2, var(--muted));font-size:13px;line-height:18px;text-align:center;flex:0 0 auto}}.an{display:flex;flex-direction:column;gap:18px}.an-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:var(--shadow);padding:16px 18px 14px;min-width:0}.an-head{margin-bottom:12px}.an-title{font-family:var(--font-display);font-size:17px;font-weight:500}.an-sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--muted2);margin-top:3px}.an-legend{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.an-key{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--border);border-radius:20px;background:var(--surface2);font-family:inherit;font-size:12px;color:var(--text);cursor:pointer;transition:opacity .12s,border-color .12s}.an-key:hover{border-color:var(--border2)}.an-key.off{opacity:.4}.an-key.off .an-key-pip{background:var(--border2)!important}.an-key-pip{width:8px;height:8px;border-radius:50%;flex-shrink:0}.an-key-n{font-family:var(--font-mono);font-size:9px;color:var(--muted2)}.an-plot{width:100%;min-height:200px}.an-grid{stroke:var(--border);stroke-width:1;stroke-dasharray:2 3}.an-axis{font-family:var(--font-mono);font-size:9px;fill:var(--muted2)}.an-empty{font-size:12px;color:var(--muted2);font-style:italic;padding:24px 0}.an-heat-wrap{overflow-x:auto;padding-bottom:4px}.an-heat{display:grid;gap:3px;min-width:max-content}.an-heat-col{display:grid;grid-template-rows:repeat(7,1fr);gap:3px}.an-heat-cell{width:11px;height:11px;border-radius:2px;background:var(--surface2);border:1px solid var(--border)}.an-heat-cell.empty{background:transparent;border-color:transparent}.an-heat-cell.lv0{background:var(--surface2)}.an-heat-cell.lv1{background:#1a181429;border-color:transparent}.an-heat-cell.lv2{background:#1a181457;border-color:transparent}.an-heat-cell.lv3{background:#1a181494;border-color:transparent}.an-heat-cell.lv4{background:#1a1814d9;border-color:transparent}.an-scale{display:flex;align-items:center;gap:4px;margin-top:10px;font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}.an-scale-max{margin-inline-start:auto;text-transform:none;letter-spacing:.04em}.an-corr{display:flex;align-items:center;gap:9px;padding:9px 0;border-top:1px solid var(--border);flex-wrap:wrap}.an-corr:first-of-type{border-top:0}.an-corr-name{font-size:13px;flex:1;min-width:0}.an-corr-verdict{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:3px;border:1px solid var(--border2);color:var(--muted)}.an-corr-verdict.v-strongPositive{color:#2e7d52;border-color:#2e7d5266;background:#2e7d5212}.an-corr-verdict.v-weakPositive{color:#2e7d52;border-color:#2e7d5240}.an-corr-verdict.v-strongNegative{color:var(--danger);border-color:#c0392b66;background:#c0392b0f}.an-corr-verdict.v-weakNegative{color:var(--danger);border-color:#c0392b40}.an-corr-n{font-family:var(--font-mono);font-size:10px;color:var(--muted2)}.an-caveat{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);font-size:11px;line-height:1.5;color:var(--muted2)}@media(min-width:1201px){.an{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,380px);gap:18px;align-items:start}.an>:nth-child(2){grid-column:1 / -1;order:2}.an>:nth-child(1){order:1}.an>:nth-child(3){order:1}}@media(max-width:768px){.an-card{padding:14px}.an-heat-cell{width:9px;height:9px}}.tt{--tt-hour-h: 40px;padding:16px 0 80px}.tt-panes{display:grid;grid-template-columns:1fr;gap:20px}.tt-roots,.tt-children{list-style:none;margin:0;padding:0}.tt-node{margin:0}.tt-term{display:flex;align-items:center;gap:4px;padding-inline-start:calc(var(--tt-depth, 0) * 16px);border-top:1px solid var(--cal-rule, var(--border))}.tt-node:first-child>.tt-term{border-top:0}.tt-term-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px;background:none;border:0;text-align:start;cursor:pointer;padding:9px 6px;color:inherit;font:inherit}.tt-term.selected{background:var(--surface2)}.tt-term.selected .tt-term-name{font-weight:600}.tt-term-level{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);flex-shrink:0;min-width:52px}.tt-term-name{flex:1 1 auto;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-term-dates{font-family:var(--font-mono);font-size:10px;color:var(--muted);margin-inline-start:12px;flex:0 0 auto;white-space:nowrap}.tt-term-dates.inherited{opacity:.5;font-style:italic}.tt-term-actions{display:flex;gap:2px;flex-shrink:0;padding-inline-end:4px}.tt-term-actions button{background:none;border:0;cursor:pointer;color:var(--muted2);padding:5px;line-height:0;border-radius:4px}.tt-term-actions button:hover{color:var(--text);background:var(--surface2)}.tt-term-actions button.danger:hover{color:var(--danger)}.tt-empty{padding:28px 18px;text-align:center;color:var(--muted);border:1px dashed var(--border2);border-radius:10px;background:var(--surface)}.tt-empty-title{font-weight:600;color:var(--text);margin:8px 0 5px}.tt-empty-body{font-size:13px;line-height:1.5}.tt-main-head{display:flex;align-items:flex-end;gap:12px;margin-bottom:14px}.tt-main-title{font-family:var(--font-display);font-size:21px;line-height:1.15}.tt-main-sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:4px}.tt-main-head .btn{margin-inline-start:auto;flex-shrink:0}.tt-warn{font-size:12px;line-height:1.5;color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-inline-start:3px solid var(--danger);border-radius:6px;padding:9px 12px;margin-bottom:14px}.tt-hint{font-size:12px;line-height:1.5;color:var(--muted);margin:-4px 0 12px}.tt-error{font-size:12px;color:var(--danger);margin-bottom:10px}.tt-form-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tt-form-row:has(.input-group:nth-child(2):last-child){grid-template-columns:repeat(2,1fr)}.tt-grid{border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden}.tt-grid-head,.tt-grid-body{display:grid;grid-template-columns:44px repeat(7,minmax(0,1fr))}.tt-grid-head{border-bottom:1px solid var(--border)}.tt-grid-body{padding-top:7px}.tt-grid-dow{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:center;padding:8px 2px;border-inline-start:1px solid var(--cal-rule, var(--border))}.tt-grid-gutter,.tt-grid-col{height:calc(var(--tt-hour-count, 8) * var(--tt-hour-h))}.tt-grid-gutter{position:relative}.tt-grid-hour{height:var(--tt-hour-h);font-family:var(--font-mono);font-size:9px;color:var(--muted2);text-align:end;padding-inline-end:6px;transform:translateY(-5px)}.tt-grid-col{position:relative;min-width:0;border-inline-start:1px solid var(--cal-rule, var(--border));cursor:copy}.tt-grid-line{height:var(--tt-hour-h);border-top:1px solid var(--cal-rule, var(--border))}.tt-grid-line:first-child{border-top:0}.tt-lesson{position:absolute;inset-inline:2px;overflow:hidden;text-align:start;cursor:pointer;padding:3px 6px;border-radius:4px;font:inherit;font-size:11px;line-height:1.25;background:var(--tt-wash, var(--surface2));border:1px solid var(--border2);border-inline-start:3px solid var(--tt-color, var(--border2));display:flex;flex-direction:column;gap:1px}.tt-lesson:hover{box-shadow:var(--shadow-md)}.tt-lesson-title{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-lesson-meta{font-family:var(--font-mono);font-size:9px;color:var(--muted);display:flex;gap:5px;min-width:0}.tt-lesson-room{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:700px){.tt-grid-head,.tt-grid-body{grid-template-columns:20px repeat(7,minmax(0,1fr))}.tt-grid-hour{font-size:8px;padding-inline-end:2px}.tt-grid-dow{font-size:9px;padding:6px 0;letter-spacing:.04em}.tt{--tt-hour-h: 58px}.tt-lesson{padding:2px 3px;font-size:9px;gap:0;border-inline-start-width:2px;inset-inline:1px}.tt-lesson-title{white-space:normal;text-overflow:clip;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.tt-lesson-meta{font-size:8px;gap:0}.tt-lesson-time{display:none}.tt-term-level{min-width:0}.tt-term-dates{display:none}}.asgn-item.has-panel{flex-wrap:wrap}.at-panel{flex-basis:100%;margin-top:10px}.asgn-item.drop-over{box-shadow:inset 0 0 0 2px var(--text);background:var(--surface2)}.at-panel{border-top:1px dashed var(--border2);padding-top:9px}.at-head{display:flex;align-items:center;gap:8px;margin-bottom:7px}.at-head-label{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.at-head .btn-outline{margin-inline-start:auto}.at-input{display:none}.at-note,.at-empty{font-size:12px;line-height:1.5;color:var(--muted2);padding:4px 0}.at-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--cal-rule, var(--border));font-size:12px}.at-row:first-of-type{border-top:0}.at-row-icon{color:var(--muted2);flex-shrink:0}.at-row-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.at-row-size{font-family:var(--font-mono);font-size:10px;color:var(--muted2);flex-shrink:0}.at-row-btn{background:none;border:0;cursor:pointer;color:var(--muted2);padding:4px;line-height:0;border-radius:4px;flex-shrink:0}.at-row-btn:hover{color:var(--text);background:var(--surface2)}.at-row-btn.danger:hover{color:var(--danger)}.at-row-btn:disabled{opacity:.5;cursor:default}.at-busy .at-row-name{color:var(--muted)}.at-spin{animation:at-spin .9s linear infinite}@keyframes at-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.at-spin{animation:none}}.asgn-clip{background:none;border:0;cursor:pointer;color:var(--muted2);padding:3px 5px;border-radius:4px;display:inline-flex;align-items:center;gap:3px;line-height:0;flex-shrink:0}.asgn-clip:hover{color:var(--text);background:var(--surface2)}.asgn-clip.has{color:var(--text)}.asgn-clip-n{font-family:var(--font-mono);font-size:10px;line-height:1}
