:root{--ink:#f4f0e8;--muted:#9f9e9b;--canvas:#121311;--panel:#1a1c19;--panel2:#20221e;--line:#343732;--accent:#d8ff6c;--accent-ink:#182000;--coral:#f4a68d;--blue:#a0c9ff;--danger:#f28f80;--shadow:0 14px 35px #00000026}body[data-theme=light]{--ink:#20231e;--muted:#697067;--canvas:#f6f5ee;--panel:#fffefa;--panel2:#f0f0e8;--line:#d7d7ce;--accent:#3d6b10;--accent-ink:#fff;--coral:#9b3a22;--blue:#3a6aad;--danger:#b33d30;--shadow:0 14px 35px #34352515}body[data-theme=ink]{--ink:#efefef;--muted:#a1a1a8;--canvas:#09090b;--panel:#121217;--panel2:#1a1a20;--line:#2a2a31;--accent:#f5d86d;--accent-ink:#191400;--coral:#ee9b80;--blue:#aabaff;--danger:#f19089}body[data-theme=lavender]{--ink:#f5f0fa;--muted:#b7afc0;--canvas:#1d1725;--panel:#282033;--panel2:#32283f;--line:#453855;--accent:#ccb4ff;--accent-ink:#27153e;--coral:#ffa0b3;--blue:#a2d5ff;--danger:#ff9a9a}*{box-sizing:border-box}body{color:var(--ink);background:var(--canvas);margin:0;font-family:DM Sans,sans-serif;font-size:15px}button,input,select{font:inherit}button{color:inherit;cursor:pointer}.tutorial-step{animation:.3s fade}@keyframes fade{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.dot{background:var(--line);border-radius:50%;width:8px;height:8px;transition:all .2s;display:inline-block}.dot.active{background:var(--accent);border-radius:4px;width:24px}.app-shell{grid-template-columns:242px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:color-mix(in srgb, var(--canvas) 86%, black);flex-direction:column;height:100vh;padding:28px 16px 20px;display:flex;position:sticky;top:0}.brand{color:var(--ink);letter-spacing:-1px;align-items:center;gap:8px;padding:0 12px 34px;font-family:Playfair Display,serif;font-size:25px;text-decoration:none;display:flex}.brand-mark{background:var(--accent);color:var(--accent-ink);text-align:center;border-radius:8px;width:32px;font:600 23px/32px Playfair Display}.exam-switcher{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:18px;padding:17px 12px}.exam-switcher label,.eyebrow{letter-spacing:1.1px;color:var(--muted);font:500 10px/1 DM Mono,monospace;display:block}.exam-switcher select{width:100%;color:var(--ink);background:0 0;border:0;outline:0;padding:8px 0 5px;font-weight:600}.text-button{color:var(--accent);background:0 0;border:0;padding:5px 0;font-size:12px;font-weight:600}.nav-item{width:100%;color:var(--muted);text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:12px;margin:2px 0;padding:11px 12px;font-size:14px;text-decoration:none;display:flex}.nav-item span{text-align:center;width:16px;font-size:17px}.nav-item:hover,.nav-item.active{color:var(--ink);background:var(--panel2)}.nav-item.active{font-weight:600}.nav-item b{color:var(--accent-ink);background:var(--accent);border-radius:10px;margin-left:auto;padding:3px 6px;font:500 10px DM Mono}.sidebar-bottom{margin-top:auto}.button-nav{margin-bottom:12px}.sidebar-bottom p{color:var(--muted);padding:0 12px;font:italic 13px/1.45 Playfair Display}main{width:100%;max-width:1440px;margin:0 auto;padding:0 46px 60px}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:78px;display:flex}.top-actions{align-items:center;gap:10px;display:flex}.icon-button,.avatar{border:1px solid var(--line);background:var(--panel);border-radius:50%;width:34px;height:34px}.icon-button{font-size:23px;line-height:20px}.avatar{background:var(--accent);color:var(--accent-ink);border:0;font-size:12px;font-weight:700}.view{padding-top:53px;display:none}.active-view{display:block}.intro-row{justify-content:space-between;align-items:end;gap:20px;margin-bottom:30px;display:flex}.intro-row.compact{align-items:start}.intro-row h1{letter-spacing:-1.8px;margin:9px 0 8px;font:600 clamp(35px,4vw,52px)/1.08 Playfair Display,serif}.intro-row h1 em{color:var(--accent);font-weight:600}.muted{color:var(--muted);margin:0}.primary-button,.secondary-button{border:1px solid var(--accent);white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:6px;min-height:42px;padding:0 16px;font-size:13px;font-weight:700;display:inline-flex}.primary-button{background:var(--accent);color:var(--accent-ink)}.primary-button span,.secondary-button span{vertical-align:middle;line-height:1}.primary-button>span:last-child{margin-left:6px;font-size:18px}.secondary-button{color:var(--ink);border-color:var(--line);background:0 0}.stat-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;display:grid}.stat-card,.panel{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);border-radius:10px}.stat-card{min-height:120px;padding:17px}.stat-card .eyebrow{margin-bottom:16px}.stat-number{letter-spacing:-.5px;font:600 29px/1 Playfair Display}.stat-detail{color:var(--muted);margin-top:7px;font-size:11px}.stat-detail strong{color:var(--accent)}.dashboard-grid,.plan-layout{grid-template-columns:1.55fr 1fr;gap:14px;margin-bottom:14px;display:grid}.panel{padding:22px}.panel-heading{justify-content:space-between;align-items:start;gap:12px;margin-bottom:18px;display:flex}.panel h2{letter-spacing:-.4px;margin:7px 0 0;font:600 21px/1.15 Playfair Display}.task-list{border-top:1px solid var(--line)}.task{border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:15px 2px;display:grid}.task input{appearance:none;border:1px solid var(--muted);border-radius:50%;place-content:center;width:18px;height:18px;margin:0;display:grid}.task input:checked{border-color:var(--accent);background:var(--accent)}.task input:checked:after{content:"✓";color:var(--accent-ink);font-size:11px;font-weight:900}.task input:checked+div{opacity:.45;text-decoration:line-through}.task-title{font-size:14px;font-weight:600}.task-meta{color:var(--muted);margin-top:4px;font:11px DM Mono}.task .task-duration{color:var(--muted);white-space:nowrap;font:11px DM Mono}.heatmap{border-bottom:1px solid var(--line);align-items:end;gap:7px;height:123px;padding-top:13px;display:flex}.heat-day{flex-direction:column;flex:1;justify-content:end;align-items:center;gap:8px;height:100%;display:flex}.heat-bar{background:var(--panel2);border-radius:3px 3px 0 0;width:100%;max-width:25px;min-height:4px}.heat-bar.active{background:var(--accent)}.heat-day span{color:var(--muted);font:9px DM Mono}.callout{color:var(--muted);margin:18px 0 0;font-size:12px;line-height:1.45}.callout span{color:var(--accent)}.due-panel{margin-top:14px}.due-preview{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.due-item{background:var(--panel2);border-radius:7px;min-height:83px;padding:15px}.due-item span{color:var(--accent);margin-bottom:8px;font:10px DM Mono;display:block}.due-item b{font-size:13px;line-height:1.25;display:block}.mono{font-family:DM Mono,monospace;font-size:11px}.settings-panel form{gap:18px;margin-top:21px;display:grid}.settings-panel label{gap:7px;font-size:13px;font-weight:600;display:grid}.settings-panel input,.settings-panel select,.modal-field input,.modal-field textarea,.modal-field select{border:1px solid var(--line);background:var(--canvas);color:var(--ink);border-radius:5px;outline:0;width:100%;padding:10px}.settings-panel small{color:var(--muted);font-size:11px;font-weight:400;line-height:1.35}.topics-panel{min-width:0}.topic-list{border-top:1px solid var(--line)}.topic-row{border-bottom:1px solid var(--line);grid-template-columns:1fr 90px 34px;align-items:center;gap:10px;padding:13px 0;display:grid}.topic-row b{font-size:13px;display:block}.topic-row span{color:var(--muted);font-size:11px}.topic-row input[type=range]{width:100%;accent-color:var(--accent)}.icon-delete{color:var(--muted);background:0 0;border:0;font-size:19px}.calendar-panel{margin-top:0}.schedule-list{border-top:1px solid var(--line)}.schedule-day{border-bottom:1px solid var(--line);grid-template-columns:140px 1fr;gap:18px;padding:14px 0;display:grid}.schedule-date{color:var(--muted);text-transform:uppercase;font:500 11px/1.55 DM Mono}.session-list{flex-wrap:wrap;gap:7px;display:flex}.session{border:1px solid var(--line);background:var(--panel2);border-radius:5px;align-items:center;gap:8px;padding:7px 9px;font-size:12px;display:inline-flex}.session button{color:var(--muted);background:0 0;border:0;padding:0;font-size:14px;line-height:1}.session .tag{color:var(--accent);font:500 9px DM Mono}.flashcard-stage{text-align:center;max-width:660px;margin:10px auto 38px}.flashcard{text-align:left;border:1px solid var(--line);background:linear-gradient(135deg, var(--panel), var(--panel2));height:290px;box-shadow:var(--shadow);border-radius:12px;margin:11px 0 17px}.flashcard button{text-align:left;background:0 0;border:0;width:100%;height:100%;padding:32px;position:relative}.card-label{letter-spacing:1px;color:var(--accent);font:10px DM Mono}.flashcard h2{max-width:530px;margin:30px 0 0;font:600 29px/1.2 Playfair Display}.flashcard p{max-width:520px;color:var(--ink);margin:25px 0 0;font-size:16px;line-height:1.55}.flip-hint{color:var(--muted);font-size:18px;position:absolute;bottom:20px;right:24px}.review-actions{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.rating{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:10px 4px 8px;font-size:12px;font-weight:700}.rating small{color:var(--muted);margin-top:5px;font:9px DM Mono;display:block}.rating.again:hover{border-color:var(--danger);color:var(--danger)}.rating.hard:hover{border-color:var(--coral);color:var(--coral)}.rating.good:hover{border-color:var(--blue);color:var(--blue)}.rating.easy:hover{border-color:var(--accent);color:var(--accent)}.all-cards{margin-top:14px}.card-list,.mistake-list{border-top:1px solid var(--line)}.card-row,.mistake-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:15px;padding:14px 2px;display:flex}.card-row b,.mistake-row b{font-size:13px;display:block}.card-row p,.mistake-row p{color:var(--muted);margin:5px 0 0;font-size:12px}.pill{color:var(--accent);border:1px solid var(--line);white-space:nowrap;border-radius:10px;padding:4px 6px;font:10px DM Mono}.mistake-row{align-items:start}.mistake-row .mistake-info{max-width:75%}.mistake-row .pill{margin-bottom:8px;display:inline-block}.mistake-row .why{color:var(--coral)}.insights-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px;display:grid}.insight{min-height:165px;padding:23px}.insight h2{margin:20px 0 6px;font:600 32px/1 Playfair Display}.insight p{color:var(--muted);margin:0;font-size:12px;line-height:1.45}.method-grid{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:25px;padding-top:17px;display:grid}.method-grid b{font-size:13px}.method-grid p{color:var(--muted);margin:7px 0 0;font-size:12px;line-height:1.5}.empty-state{text-align:center;max-width:540px;margin:55px auto 70px}.empty-orb{background:var(--accent);width:62px;height:62px;color:var(--accent-ink);border-radius:50%;place-items:center;margin:auto;font-size:25px;display:grid}.empty-state h2{margin:18px 0 8px;font:600 27px Playfair Display}.empty-state p{color:var(--muted);margin:0 0 22px;font-size:13px;line-height:1.5}.hidden{display:none!important}dialog{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:10px;width:min(470px,100vw - 34px);padding:0;box-shadow:0 25px 80px #0009}dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0009}#modal-form{padding:28px;position:relative}.modal-close{color:var(--muted);background:0 0;border:0;font-size:24px;position:absolute;top:12px;right:14px}.modal-title{margin:0 0 5px;font:600 26px Playfair Display}.modal-copy{color:var(--muted);margin:0 0 23px;font-size:13px;line-height:1.4}.modal-fields{gap:15px;display:grid}.modal-field{gap:6px;font-size:12px;font-weight:600;display:grid}.modal-field textarea{resize:vertical;min-height:80px}.modal-actions{justify-content:flex-end;gap:9px;margin-top:23px;display:flex}#toast{opacity:0;background:var(--accent);color:var(--accent-ink);z-index:10;border-radius:6px;padding:10px 15px;font-size:12px;font-weight:700;transition:all .24s;position:fixed;bottom:24px;left:50%;transform:translate(-50%,100px)}#toast.show{opacity:1;transform:translate(-50%)}@media (width<=850px){.app-shell{grid-template-columns:1fr}.sidebar{z-index:4;border-top:1px solid var(--line);border-right:0;flex-direction:row;justify-content:center;width:100%;height:72px;padding:4px 0;position:fixed;top:auto;bottom:0}.brand,.exam-switcher,.sidebar-bottom{display:none}.sidebar nav{justify-content:space-evenly;width:100%;display:flex}.nav-item{flex-direction:column;justify-content:center;align-items:center;gap:4px;width:64px;padding:8px 4px;font-size:11px;line-height:1;display:flex;position:relative}.nav-item span{width:auto;font-size:22px;line-height:1}.nav-item b{margin:0;padding:2px 4px;font-size:9px;position:absolute;top:2px;right:6px}.topbar{height:64px}main{padding:0 18px 96px}.view{padding-top:33px}.dashboard-grid,.plan-layout{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(2,1fr)}.intro-row{flex-direction:column;align-items:start}.intro-row .primary-button{align-self:stretch}.due-preview,.insights-grid,.method-grid{grid-template-columns:1fr}.review-actions{grid-template-columns:repeat(2,1fr)}.schedule-day{grid-template-columns:115px 1fr;gap:10px}.flashcard{height:255px}.flashcard h2{font-size:25px}}.pomodoro-panel{margin-top:14px}.timer-layout{border-top:1px solid var(--line);grid-template-columns:220px 1fr;align-items:center;gap:30px;padding-top:20px;display:grid}.timer-clock{text-align:center}#timer-mode{letter-spacing:1.5px;background:var(--accent);color:var(--accent-ink);border-radius:20px;margin-top:12px;padding:5px 14px;font:700 11px DM Mono,monospace;display:inline-block}#timer-display{letter-spacing:-3px;font:600 48px/1 DM Mono,monospace}.timer-progress{background:var(--panel2);border-radius:4px;height:5px;margin-top:14px;overflow:hidden}.timer-progress span{background:var(--accent);width:0;height:100%;transition:width .3s linear;display:block}.timer-controls{gap:16px;display:grid}.timer-settings{gap:12px;display:flex}.timer-settings label{color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.timer-settings input{border:1px solid var(--line);width:58px;color:var(--ink);background:var(--canvas);border-radius:5px;padding:7px}.timer-buttons{gap:9px;display:flex}.timer-controls .muted{font-size:12px}.timer-link{align-items:center;gap:8px;display:flex}.timer-link label{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:600}.timer-link select{border:1px solid var(--line);background:var(--canvas);color:var(--ink);border-radius:5px;outline:0;flex:1;padding:7px 8px;font-size:12px}@media (width<=600px){.timer-layout{grid-template-columns:1fr;gap:22px}.timer-settings,.timer-buttons{justify-content:center}.timer-link{flex-direction:column;align-items:stretch}}.availability-block{gap:7px;font-size:13px;font-weight:600;display:grid}.availability-block small{color:var(--muted);font-size:11px;font-weight:400;line-height:1.35}.availability-editor{gap:7px;margin-top:5px;display:grid}.availability-row{grid-template-columns:20px 1fr 76px;align-items:center;gap:8px;font-size:12px;display:grid}.availability-row input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}.availability-row input[type=number]{border:1px solid var(--line);background:var(--canvas);color:var(--ink);border-radius:5px;width:100%;padding:6px 7px}.availability-row input:disabled{opacity:.4}.availability-bulk{background:var(--panel2);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;margin-top:5px;padding:9px;display:flex}.availability-bulk label{color:var(--muted);align-items:center;gap:5px;font-size:11px;display:flex}.availability-bulk input{border:1px solid var(--line);background:var(--canvas);width:48px;color:var(--ink);border-radius:4px;padding:5px}.availability-bulk .secondary-button{min-height:30px;padding:0 9px;font-size:11px}.settings-status{color:var(--accent);margin:0;font:10px DM Mono,monospace}.session-list{align-items:center}.add-session{border:1px dashed var(--line);color:var(--muted);background:0 0;border-radius:5px;padding:7px 9px;font-size:11px;font-weight:600}.add-session:hover{border-color:var(--accent);color:var(--accent)}.overdue-banner{border:1px solid color-mix(in srgb, var(--coral) 40%, transparent);background:color-mix(in srgb, var(--coral) 6%, var(--panel));border-radius:8px;margin-bottom:12px;padding:14px 16px}.overdue-label{margin-bottom:10px;color:var(--coral)!important;font-size:10px!important}.overdue-task{border-top:1px solid color-mix(in srgb, var(--coral) 18%, transparent);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.overdue-task:first-of-type{border-top:0}.overdue-task .task-title{font-size:13px;font-weight:600}.overdue-task .task-meta{color:var(--muted);margin-top:3px;font:11px DM Mono}.overdue-actions{flex-shrink:0;gap:6px;display:flex}.overdue-btn{border:1px solid var(--line);background:var(--panel2);color:var(--muted);border-radius:5px;padding:5px 10px;font-size:11px;font-weight:600;transition:all .15s}.overdue-btn.rescue:hover{border-color:var(--blue);color:var(--blue)}.overdue-btn.done:hover{border-color:var(--accent);color:var(--accent)}.overdue-btn.skip:hover{border-color:var(--danger);color:var(--danger)}.schedule-day-overdue{background:color-mix(in srgb, var(--coral) 5%, transparent);border-radius:6px;margin:-1px -12px;padding:14px 12px!important}.overdue-pill{color:var(--coral);border:1px solid color-mix(in srgb, var(--coral) 35%, transparent);border-radius:8px;margin-left:6px;padding:2px 5px;font:500 9px DM Mono}.session-overdue{border-color:color-mix(in srgb, var(--coral) 40%, transparent)!important}.session-overdue .tag{color:var(--coral)!important}.session-selected{border-color:var(--accent)!important;background:color-mix(in srgb, var(--accent) 8%, var(--panel2))!important}.session[draggable=true]{cursor:grab}.session.dragging{opacity:.35}.schedule-day.drag-over{outline:2px dashed var(--accent);outline-offset:4px;background:color-mix(in srgb, var(--accent) 6%, transparent);border-radius:6px;padding:14px}#confirm-dialog{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:10px;width:min(400px,100vw - 34px);padding:0;box-shadow:0 25px 80px #0009}#confirm-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0009}.confirm-body{padding:28px}#settings-dialog{width:min(460px,100vw - 34px)}.concept-btn{justify-content:center;align-items:center;display:inline-flex}.concept-list{border-top:1px solid var(--line);max-height:250px;margin-bottom:20px;overflow-y:auto}.concept-item{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;display:flex}.concept-item b{margin-bottom:4px;font-size:13px;font-weight:600;display:block}.concept-item .pill{display:inline-block}#ocr-dialog{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:10px;padding:0;box-shadow:0 25px 80px #0009}#ocr-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0009}.ocr-dropzone{border:2px dashed var(--line);text-align:center;cursor:pointer;background:var(--canvas);border-radius:8px;margin-bottom:10px;padding:30px 20px;transition:all .2s}.ocr-dropzone:hover,.ocr-dropzone.drag-over{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, var(--canvas))}.ocr-preview{object-fit:contain;border-radius:6px;width:100%;max-height:200px;margin-bottom:10px}.day-clear-btn{color:var(--muted);cursor:pointer;opacity:.55;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:3px;line-height:1;transition:opacity .15s,color .15s,background .15s;display:inline-flex}.day-clear-btn:hover{opacity:1;color:var(--danger,var(--coral));background:color-mix(in srgb, var(--coral) 15%, transparent)}
