:root{
  --bg:#0c1d23;--text:#f3f7f8;--muted:#b7c6ca;--line:rgba(255,255,255,.12);
  --glass:rgba(11,28,35,.58);--glass-strong:rgba(9,24,30,.72);--glass-soft:rgba(19,45,54,.42);
  --cyan:#27c9db;--teal:#2cb9b4;--coral:#ee8882;--pink:#e87ab0;--purple:#9b88e8;
  --green:#50c886;--gold:#e6b54a;--red:#ff777d;--shadow:0 18px 55px rgba(0,0,0,.25);
}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{margin:0;min-height:100vh;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.35}button,input,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}.bg{position:fixed;inset:0;z-index:-3;background-image:linear-gradient(180deg,rgba(4,14,18,.28),rgba(4,14,18,.44)),url('/static/theme-bg.jpg');background-size:cover;background-position:center;background-attachment:fixed}.bg:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 38% 54%,rgba(24,202,219,.10),transparent 32%),linear-gradient(120deg,rgba(5,20,25,.08),rgba(5,20,25,.30));pointer-events:none}main{width:min(1500px,calc(100% - 24px));margin:16px auto 44px;position:relative}.glass{background:linear-gradient(145deg,rgba(14,36,44,.58),rgba(10,27,33,.48));border:1px solid rgba(255,255,255,.13);box-shadow:var(--shadow);backdrop-filter:blur(20px) saturate(115%);-webkit-backdrop-filter:blur(20px) saturate(115%)}
.topbar{position:sticky;top:8px;z-index:30;width:min(1500px,calc(100% - 24px));margin:8px auto 0;border-radius:20px;min-height:62px;display:flex;align-items:center;justify-content:space-between;padding:8px 12px;gap:12px}.brand{display:flex;align-items:center;gap:9px;font-weight:850;letter-spacing:-.02em;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:linear-gradient(135deg,rgba(39,201,219,.85),rgba(232,122,176,.72));color:#07181d;font-weight:950}.topbar nav{display:flex;align-items:center;gap:4px}.topbar nav a{padding:10px 13px;border-radius:12px;color:var(--muted);font-weight:750}.topbar nav a:hover,.topbar nav a.active{background:rgba(255,255,255,.09);color:var(--text)}
.flash-wrap{position:fixed;right:18px;top:82px;z-index:60;display:grid;gap:8px}.flash{padding:12px 15px;border-radius:14px;max-width:420px}.page-head{border-radius:24px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.11em;font-weight:850;color:#a9d9de}.page-head h1,.section-head h2,.notes-card h2,.settings-card h2{margin:2px 0 0;letter-spacing:-.035em}.page-head h1{font-size:clamp(1.65rem,2.4vw,2.4rem)}.subtle{margin:7px 0 0;color:var(--muted);font-size:.92rem}.date-nav{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.date-nav a,.date-nav input{height:48px;border:1px solid var(--line);background:rgba(255,255,255,.055);border-radius:14px}.nav-square{width:48px;display:grid;place-items:center;font-size:1.55rem}.today-btn{display:grid;place-items:center;padding:0 17px;font-weight:850}.day-picker{width:178px;min-width:178px;flex:0 0 178px;padding:0 42px 0 14px;appearance:auto;box-sizing:border-box;color-scheme:dark}.day-picker::-webkit-calendar-picker-indicator{opacity:.8;cursor:pointer;margin:0}
.quote-card{border-radius:20px;padding:13px 18px;margin-bottom:12px;display:flex;gap:13px;align-items:center;background:linear-gradient(110deg,rgba(35,178,191,.15),rgba(208,113,165,.12),rgba(11,28,35,.48))}.quote-mark{font-size:3.1rem;line-height:.7;color:var(--cyan);opacity:.8}.quote-card blockquote{margin:0;font-size:.98rem;font-weight:700}.quote-card cite{display:block;margin-top:3px;color:var(--muted);font-size:.8rem;font-style:normal}
.banner-stack{display:grid;gap:7px;margin:0 0 12px}.event-banner{border:1px solid var(--line);border-radius:14px;padding:11px 14px;text-align:left;display:flex;justify-content:space-between;align-items:center;font-weight:800;box-shadow:0 10px 28px rgba(0,0,0,.16)}.event-banner b{opacity:.7;font-size:1.1rem}.cat-closure{background:rgba(185,132,25,.38)!important;border-left:4px solid var(--gold)!important}.cat-evening{background:rgba(157,37,59,.44)!important;border-left:4px solid var(--coral)!important}.cat-staff{background:rgba(33,133,88,.42)!important;border-left:4px solid var(--green)!important}.cat-deadline{background:rgba(116,54,19,.46)!important;border-left:4px solid #e48442!important}.cat-exam{background:rgba(0,77,27,.46)!important;border-left:4px solid #64c67a!important}.cat-activity{background:rgba(77,62,140,.46)!important;border-left:4px solid var(--purple)!important}.cat-assessment{background:rgba(32,129,105,.42)!important;border-left:4px solid var(--teal)!important}.cat-school{background:rgba(27,104,74,.38)!important;border-left:4px solid var(--green)!important}
.day-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,.7fr);gap:12px}.timeline,.notes-card,.mini-card,.week-day,.class-card,.history,.month-grid,.settings-card{border-radius:22px}.timeline{padding:15px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.section-head h2{font-size:1.28rem}.soft,.primary,.danger-soft,.upload-button,.modal-actions button{border:1px solid var(--line);border-radius:12px;min-height:42px;padding:9px 13px;font-weight:800;background:rgba(255,255,255,.055);cursor:pointer}.primary{background:linear-gradient(135deg,rgba(39,201,219,.95),rgba(44,185,180,.88));color:#062027;border-color:transparent}.danger-soft{background:rgba(255,119,125,.10);color:#ffd0d2;border-color:rgba(255,119,125,.24)}.special-callout{padding:12px 14px;border-radius:14px;background:rgba(230,181,74,.16);border:1px solid rgba(230,181,74,.25);margin-bottom:8px;color:#f7df9c;font-weight:750}.slot{width:100%;border:1px solid var(--line);border-radius:15px;background:rgba(7,24,29,.35);display:grid;grid-template-columns:86px minmax(0,1fr) 38px;gap:10px;align-items:center;text-align:left;padding:11px 10px;margin:7px 0;min-height:72px;cursor:pointer;transition:transform .12s ease,background .12s ease,border-color .12s ease}.slot:hover{transform:translateY(-1px);background:rgba(18,48,57,.48);border-color:rgba(255,255,255,.2)}.slot.current{box-shadow:0 0 0 2px rgba(39,201,219,.45),0 10px 28px rgba(0,0,0,.18)}.slot.done{opacity:.82}.slot-time{display:grid;gap:1px;color:var(--text)}.slot-time strong{font-size:.94rem}.slot-time span{font-size:.73rem;color:var(--muted)}.slot-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.period{font-size:.69rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850}.lesson-no{font-size:.66rem;background:rgba(39,201,219,.14);color:#a8eef5;border:1px solid rgba(39,201,219,.22);border-radius:999px;padding:3px 7px;font-weight:850}.live{font-size:.64rem;background:var(--cyan);color:#062027;border-radius:999px;padding:3px 7px;font-weight:950}.slot-main h3{font-size:1.08rem;margin:3px 0}.slot-main p{font-size:.84rem;margin:1px 0;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slot-action{font-size:1.35rem;color:var(--muted);text-align:center}.mini-reminder{font-size:.78rem;color:#ffdda8;margin-top:4px}.kind-lesson{border-left:4px solid var(--cyan)}.kind-ppa,.kind-lmt,.kind-free,.kind-work,.kind-tutor{border-left:4px solid rgba(255,255,255,.22)}.kind-staff{border-left:4px solid var(--green)}.kind-special{border-left:4px solid var(--gold)}.event-slot{background:rgba(12,31,37,.46)}.gap{display:flex;gap:8px;align-items:center;padding:5px 13px;color:var(--muted);font-size:.76rem}.gap strong{font-size:.75rem;color:#d7e0e2}.empty-day{display:grid;gap:5px;padding:28px 14px;text-align:center;color:var(--muted)}.empty-day strong{color:var(--text)}
.notes-col{display:flex;flex-direction:column;gap:12px}.notes-card{padding:15px}.notes-card textarea{width:100%;min-height:220px;resize:vertical;background:rgba(0,0,0,.14);border:1px solid var(--line);border-radius:14px;padding:13px;line-height:1.5;outline:none}.notes-card textarea:focus,input:focus,.modal textarea:focus{border-color:rgba(39,201,219,.55);box-shadow:0 0 0 3px rgba(39,201,219,.07)}#saveState{font-size:.72rem;color:var(--muted)}.note-tools{display:flex;justify-content:flex-end;margin-top:8px}.reminder-row{display:grid;grid-template-columns:36px minmax(0,1fr) 36px;gap:9px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}.reminder-row.done strong{text-decoration:line-through;opacity:.5}.tick,.trash,.icon-btn{border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:10px;width:34px;height:34px;cursor:pointer}.trash{color:#ffadb1}.empty{color:var(--muted);font-size:.87rem}.mini-card{padding:15px;display:grid;gap:9px}.mini-card a{font-weight:750}.file-count{display:grid;place-items:center;min-width:30px;height:30px;border-radius:999px;background:rgba(39,201,219,.12);font-size:.75rem;font-weight:850;color:#b4f3f7}
.attachment-box{margin-top:13px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(0,0,0,.08)}.attachment-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.attachment-list{display:grid;gap:6px}.attachment-row{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:7px;align-items:center;padding:7px 8px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07)}.attachment-row a{min-width:0;display:grid}.attachment-row strong{font-size:.83rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-row small{font-size:.69rem;color:var(--muted)}.upload-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;margin-top:9px;cursor:pointer}.upload-button input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.upload-status{display:block;color:var(--muted);font-size:.72rem;margin-top:6px}
.week-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.week-day{padding:10px;min-width:0;background:linear-gradient(160deg,rgba(14,36,44,.53),rgba(8,25,31,.42))}.today-week{box-shadow:0 0 0 2px rgba(39,201,219,.45),var(--shadow)}.week-day-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:3px 4px 9px}.week-day-head div{display:flex;gap:8px;align-items:baseline}.week-day-head strong{font-size:1.45rem}.week-day-head span{color:var(--muted)}.week-day-head b{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:rgba(39,201,219,.16);color:var(--cyan)}.week-events{padding:7px 0}.tiny-event{font-size:.69rem;font-weight:750;padding:5px 7px;border-radius:8px;margin:3px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.more-events{font-size:.68rem;color:var(--muted);padding:3px 7px}.week-slot{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto 9px;gap:5px;text-align:left;align-items:center;padding:8px 5px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer}.week-slot span{font-size:.67rem;color:var(--muted)}.week-slot strong{font-size:.79rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-slot em{font-style:normal;font-size:.62rem;color:#9fe7ef;background:rgba(39,201,219,.10);padding:2px 4px;border-radius:5px}.week-slot i{color:var(--coral);font-size:.5rem}.note-dot{display:block;margin-top:8px;font-size:.7rem;color:#ffdba4}
.month-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:10px;overflow:hidden;background:linear-gradient(150deg,rgba(12,33,40,.52),rgba(7,22,27,.42))}.dow{padding:8px 10px;font-size:.72rem;color:var(--muted);font-weight:850}.month-cell{min-height:130px;padding:8px;border-top:1px solid var(--line);border-right:1px solid var(--line);overflow:hidden;background:rgba(9,25,31,.20)}.month-cell:hover{background:rgba(255,255,255,.04)}.month-cell.muted{opacity:.38}.today-cell{outline:2px solid var(--cyan);outline-offset:-2px}.cell-top{display:flex;justify-content:space-between;margin-bottom:5px}.cell-top span{font-size:.67rem;color:var(--muted)}.cell-flags{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;font-size:.65rem;color:#ffdba4}
.class-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.class-card{padding:17px;background:linear-gradient(145deg,rgba(13,38,46,.55),rgba(8,26,32,.42));transition:transform .15s ease,border-color .15s ease}.class-card:hover{transform:translateY(-2px);border-color:rgba(39,201,219,.3)}.class-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.class-card span{font-size:.69rem;text-transform:uppercase;color:var(--muted);font-weight:850}.class-card-top b{font-size:.69rem;color:#a9edf3;background:rgba(39,201,219,.11);padding:4px 7px;border-radius:999px}.class-card h2{font-size:1.5rem;margin:7px 0 9px}.class-card p{color:var(--muted);margin:8px 0 0;font-size:.79rem}.class-progress{height:5px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}.class-progress div{height:100%;background:linear-gradient(90deg,var(--cyan),var(--pink));border-radius:999px}.history{overflow:hidden}.history-head,.history-row{display:grid;grid-template-columns:68px 138px 70px minmax(0,1fr);gap:10px;padding:12px 16px}.history-head{color:var(--muted);font-size:.7rem;text-transform:uppercase;font-weight:850}.history-row{border-top:1px solid var(--line);align-items:center}.history-row:hover{background:rgba(255,255,255,.04)}.history-row small{display:block;color:#ffd8ad;margin-top:3px}.history-number{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:rgba(39,201,219,.12);color:#baf2f6;font-weight:850}.future-row{opacity:.52}
.settings-grid{display:grid;grid-template-columns:1.35fr .85fr;gap:12px}.settings-card{padding:20px}.settings-card p,.settings-card small{color:var(--muted)}label{display:grid;gap:7px;font-size:.82rem;font-weight:750;margin:12px 0}input,textarea{background:rgba(0,0,0,.16);border:1px solid var(--line);border-radius:12px;padding:12px;outline:none}.settings-card form{margin-bottom:12px}code{padding:2px 6px;border-radius:6px;background:rgba(0,0,0,.2)}
.modal{width:min(680px,calc(100vw - 28px));max-height:90vh;overflow:auto;border-radius:22px;padding:18px;border:1px solid var(--line);color:var(--text);background:linear-gradient(145deg,rgba(12,35,42,.88),rgba(8,25,31,.82))}.modal::backdrop{background:rgba(3,10,14,.72);backdrop-filter:blur(7px)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.modal h2{font-size:1.45rem;margin:2px 0}.modal textarea,.modal input{width:100%}.modal-options{display:flex;gap:18px;flex-wrap:wrap}.check{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:8px}.check input{width:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.split-actions{justify-content:space-between;align-items:center}.split-actions>div{display:flex;gap:8px}.login-shell{display:grid;place-items:center;min-height:100vh;padding:18px}.login-card{width:min(440px,100%);padding:28px;border-radius:24px}.login-card h1{margin:5px 0 8px}.login-card p{color:var(--muted)}.error{padding:10px;border-radius:10px;background:rgba(255,116,124,.15);color:#ffd7da}.full{width:100%}
@media(max-width:1180px){.day-grid{grid-template-columns:minmax(0,1.5fr) minmax(315px,.72fr)}.class-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:960px){.day-grid{grid-template-columns:1fr}.notes-col{display:grid;grid-template-columns:1fr 1fr}.mini-card{grid-column:1/-1}.week-grid{overflow-x:auto;grid-template-columns:repeat(5,minmax(220px,1fr));padding-bottom:7px}.month-grid{overflow-x:auto;grid-template-columns:repeat(7,minmax(150px,1fr))}.class-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){body{font-size:15px}.topbar{align-items:center;gap:8px}.brand span:last-child{display:none}.topbar nav{overflow-x:auto;max-width:calc(100vw - 75px)}.topbar nav a{padding:9px 10px}.page-head{align-items:flex-start;gap:12px;flex-direction:column}.date-nav{width:100%;overflow-x:auto;padding-bottom:2px}.day-picker{margin-left:auto}.notes-col{display:flex}.class-grid{grid-template-columns:repeat(2,1fr)}.history-head,.history-row{grid-template-columns:52px 104px 52px minmax(0,1fr)}.settings-grid{grid-template-columns:1fr}}
@media(max-width:520px){main,.topbar{width:calc(100% - 14px)}.topbar nav{max-width:100%;width:100%;justify-content:space-between}.brand{display:none}.topbar nav a{font-size:.78rem;padding:8px}.page-head{padding:14px}.date-nav{gap:6px}.nav-square{min-width:44px;width:44px}.today-btn{padding:0 12px}.day-picker{min-width:160px;width:160px;flex-basis:160px}.slot{grid-template-columns:66px minmax(0,1fr) 28px;padding:9px 7px}.slot-main h3{font-size:1rem}.class-grid{grid-template-columns:1fr}.history-head{display:none}.history-row{grid-template-columns:42px 88px 42px minmax(0,1fr);padding:10px 8px}.notes-card textarea{min-height:180px}.quote-card{align-items:flex-start}.split-actions{align-items:stretch;flex-direction:column-reverse}.split-actions>div{display:grid;grid-template-columns:1fr 1fr}.danger-soft{width:100%}}

/* v3 enhancements */
.topbar{display:grid;grid-template-columns:auto 1fr minmax(250px,360px)}
.topbar nav{justify-self:center}.top-search{display:flex;align-items:center;gap:7px;min-width:0}.top-search span{color:var(--muted);font-size:1.2rem}.top-search input{width:100%;height:42px;padding:9px 12px;background:rgba(255,255,255,.05)}
.day-page-head{align-items:center}.day-heading{min-width:250px}.day-date-nav{margin-left:auto;flex:0 0 auto;justify-content:flex-end}.day-date-nav .day-picker{width:184px;min-width:184px;max-width:184px;flex:0 0 184px;padding-right:44px}.day-picker::-webkit-calendar-picker-indicator{position:absolute;right:14px}.day-picker{position:relative}
.reminder-dashboard{border-radius:22px;padding:15px;margin-bottom:12px}.dashboard-total{font-size:.75rem;color:var(--muted);font-weight:800}.dashboard-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.dashboard-col{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(5,20,25,.18)}.dashboard-col.overdue{border-color:rgba(255,119,125,.27)}.dashboard-col.today{border-color:rgba(39,201,219,.27)}.dashboard-col-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.dashboard-col-head span{display:grid;place-items:center;min-width:25px;height:25px;border-radius:999px;background:rgba(255,255,255,.07);font-size:.72rem}.dashboard-item{display:grid;grid-template-columns:minmax(0,1fr) 30px;gap:7px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}.dashboard-item a{display:grid;min-width:0}.dashboard-item strong{font-size:.79rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-item small{font-size:.66rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-tick{width:28px;height:28px}.compact-empty{margin:5px 0}
.timeline-actions{display:flex;align-items:center;gap:8px}.completion-pill{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:12px;padding:7px 10px;background:rgba(255,255,255,.04)}.completion-pill strong{font-size:.88rem;color:#b8f2f5}.completion-pill span{font-size:.68rem;color:var(--muted)}.completion-pill.complete{background:rgba(80,200,134,.10);border-color:rgba(80,200,134,.22)}
.morning-tasks{margin:10px 0 12px;padding:11px;border:1px solid rgba(39,201,219,.18);border-radius:15px;background:rgba(9,34,41,.34)}.morning-task-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.morning-task-head>div:first-child{display:flex;align-items:center;gap:10px}.task-time{font-weight:900;color:#baf2f6}.task-add-form{display:grid;grid-template-columns:minmax(140px,1fr) auto 40px;gap:7px;align-items:center;min-width:min(480px,55%)}.task-add-form input{height:38px;padding:8px 10px}.roll-check{margin:0;display:flex;grid-template-columns:auto auto;gap:5px;align-items:center;font-size:.69rem;color:var(--muted);white-space:nowrap}.roll-check input{width:auto}.task-list{margin-top:8px}.task-row{display:grid;grid-template-columns:32px minmax(0,1fr) 32px;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}.task-row strong{font-size:.78rem}.task-row small{display:block;color:var(--muted);font-size:.64rem}.task-row.done strong{text-decoration:line-through;opacity:.5}
.kind-duty{border-left:4px solid var(--pink)}.slot-detail{color:#b9e7e8!important;font-weight:700}.previous-link{display:block;margin-top:6px;padding:5px 7px;border-radius:8px;background:rgba(255,255,255,.035);font-size:.72rem;color:#cbe4e7}.previous-link span{color:var(--muted)}.previous-link small{color:#95b8bd}.homework-due-strip{margin-top:7px;padding:7px 8px;border-radius:9px;background:rgba(232,122,176,.10);border:1px solid rgba(232,122,176,.18);display:flex;align-items:center;gap:7px;flex-wrap:wrap}.homework-due-strip strong{font-size:.72rem;color:#ffd0e8}.homework-due-strip span{font-size:.72rem}.homework-due-strip button{border:1px solid rgba(255,255,255,.14);border-radius:8px;background:rgba(255,255,255,.05);padding:5px 7px;font-size:.67rem;font-weight:800;cursor:pointer}.status-chip{font-size:.62rem;border-radius:999px;padding:3px 7px;font-weight:850}.status-completed{color:#b9f5d2;background:rgba(80,200,134,.12)}.status-partial{color:#ffe4a6;background:rgba(230,181,74,.12)}.status-disrupted{color:#ffc0c4;background:rgba(255,119,125,.12)}
.reminder-head-actions{display:flex;gap:6px;align-items:center}.reminder-head-actions .danger-soft{min-height:34px;padding:6px 8px;font-size:.67rem}
.attachment-row{grid-template-columns:minmax(0,1fr) 34px 34px}.star{border:1px solid var(--line);background:rgba(255,255,255,.04);color:#7f979b;border-radius:10px;width:32px;height:32px;cursor:pointer}.star.active{color:#ffd267;background:rgba(230,181,74,.12)}.file-actions{display:grid;grid-template-columns:auto minmax(130px,1fr) auto;gap:7px;align-items:end}.file-actions .upload-button{margin-top:9px}.favourite-select{height:42px;margin-top:9px;background:rgba(0,0,0,.16);border:1px solid var(--line);border-radius:12px;padding:0 9px;min-width:0}.full-width{width:100%;margin-top:9px}
.quick-log-box{padding:10px;border-radius:13px;border:1px solid var(--line);background:rgba(0,0,0,.08);margin:10px 0}.quick-log-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:7px}.quick-log{border:1px solid var(--line);background:rgba(255,255,255,.04);border-radius:10px;padding:9px;font-size:.74rem;font-weight:800;cursor:pointer}.quick-log.active[data-status="completed"]{background:rgba(80,200,134,.15);border-color:rgba(80,200,134,.35)}.quick-log.active[data-status="partial"]{background:rgba(230,181,74,.15);border-color:rgba(230,181,74,.35)}.quick-log.active[data-status="disrupted"]{background:rgba(255,119,125,.15);border-color:rgba(255,119,125,.35)}.context-box{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:12px 0}.context-column{border:1px solid var(--line);border-radius:12px;padding:10px;background:rgba(255,255,255,.025)}.context-link{display:grid;gap:3px;margin-top:5px}.context-link strong{font-size:.78rem}.context-link p{margin:0;font-size:.75rem;color:var(--muted)}.context-link small{font-size:.67rem;color:#ffdca7}.homework-modal-box{padding:10px;border:1px solid rgba(232,122,176,.18);border-radius:12px;background:rgba(232,122,176,.05);margin:10px 0}.modal-homework-row{display:grid;grid-template-columns:32px minmax(0,1fr);gap:8px;align-items:center;padding:7px 0;border-top:1px solid var(--line)}.modal-homework-row small{display:block;color:var(--muted)}.modal-homework-row.done{opacity:.5}.hidden{display:none!important}.homework-class-chip{display:inline-flex;padding:5px 9px;border-radius:999px;background:rgba(39,201,219,.12);color:#baf2f6;font-size:.76rem;font-weight:850;margin-top:8px}
.homework-section{border-radius:22px;padding:16px;margin-bottom:12px}.homework-count{font-size:.72rem;color:#ffd0e8;background:rgba(232,122,176,.10);padding:5px 8px;border-radius:999px}.homework-list{display:grid;gap:7px}.homework-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:9px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}.homework-row.done{opacity:.5}.homework-row.done .homework-main strong{text-decoration:line-through}.homework-main p{margin:3px 0;color:var(--muted);font-size:.77rem}.homework-main small{font-size:.67rem;color:#ffd9aa}.homework-actions{display:flex;gap:6px}.homework-actions .soft{min-height:34px;padding:6px 9px;font-size:.7rem}.status-text{font-weight:750}.class-metrics{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.class-metrics span{padding:4px 7px;border-radius:8px;background:rgba(255,255,255,.04);text-transform:none}.class-metrics strong{color:var(--text)}
.search-panel{border-radius:22px;padding:16px}.search-page-form{display:grid;grid-template-columns:1fr auto;gap:8px}.search-page-form input{height:46px}.search-results{display:grid;gap:7px;margin-top:14px}.search-result{display:grid;grid-template-columns:110px minmax(0,1fr) 24px;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}.search-result:hover{background:rgba(255,255,255,.05)}.search-type{font-size:.68rem;text-transform:uppercase;color:#a9d9de;font-weight:850}.search-result div{display:grid}.search-result strong{font-size:.83rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result small{font-size:.68rem;color:var(--muted)}

@media(max-width:1180px){.topbar{grid-template-columns:auto 1fr}.top-search{grid-column:1/-1}.dashboard-columns{grid-template-columns:1fr 1fr 1fr}.task-add-form{min-width:50%}}
@media(max-width:960px){.dashboard-columns{grid-template-columns:1fr}.morning-task-head{align-items:stretch;flex-direction:column}.task-add-form{min-width:0;width:100%}.day-date-nav{width:auto;justify-content:flex-end}.day-date-nav .day-picker{width:184px;min-width:184px;max-width:184px;flex:0 0 184px}.top-search{display:none}}
@media(max-width:760px){.quick-log-buttons{grid-template-columns:1fr}.context-box{grid-template-columns:1fr}.file-actions{grid-template-columns:1fr}.favourite-select{margin-top:0}.day-file-actions .upload-button{width:100%}.homework-row{grid-template-columns:32px minmax(0,1fr)}.homework-actions{grid-column:2}.dashboard-columns{grid-template-columns:1fr}.timeline-actions{align-items:flex-end;flex-direction:column}.completion-pill span{display:none}.day-date-nav{overflow:visible}.day-date-nav .day-picker{min-width:0}.topbar{display:flex;flex-wrap:wrap}.topbar nav{order:2;width:100%}}
@media(max-width:520px){.task-add-form{grid-template-columns:1fr 40px}.roll-check{grid-column:1/-1;grid-row:2}.search-result{grid-template-columns:1fr 20px}.search-type{grid-column:1/-1}.day-page-head{align-items:stretch}.day-date-nav{display:grid;grid-template-columns:44px auto 44px 1fr}.day-date-nav .day-picker{width:100%;min-width:0;max-width:none}.attachment-row{grid-template-columns:minmax(0,1fr) 32px 32px}}


/* v3.1 tablet-density pass */
.quote-card-side{margin:0;padding:13px 15px;align-items:flex-start;min-height:0}.quote-card-side .quote-mark{font-size:2.45rem}.quote-card-side blockquote{font-size:.88rem;line-height:1.35;margin-top:3px}.quote-card-side cite{font-size:.72rem}

@media (min-width:900px) and (max-height:1100px){
  body{font-size:14px}
  main{width:min(1540px,calc(100% - 16px));margin:8px auto 14px}
  .topbar{width:min(1540px,calc(100% - 16px));min-height:52px;margin-top:5px;padding:5px 9px;border-radius:17px}
  .brand-mark{width:30px;height:30px;border-radius:10px}.topbar nav a{padding:7px 10px}.top-search input{height:36px}.top-search{font-size:.88rem}
  .page-head{padding:10px 13px;border-radius:18px;gap:10px;margin-bottom:8px;min-height:58px}
  .page-head h1{font-size:1.55rem}.subtle{margin-top:3px;font-size:.8rem}.eyebrow{font-size:.64rem}
  .date-nav{gap:6px}.date-nav a,.date-nav input{height:40px;border-radius:12px}.nav-square{width:40px;font-size:1.35rem}.today-btn{padding:0 14px}
  .day-heading{min-width:220px}.day-date-nav .day-picker{width:176px;min-width:176px;max-width:176px;flex-basis:176px;padding-left:12px;padding-right:40px}
  .day-picker::-webkit-calendar-picker-indicator{right:11px}
  .reminder-dashboard{padding:10px;margin-bottom:8px;border-radius:17px}.reminder-dashboard .section-head{margin-bottom:6px}.dashboard-col{padding:7px}.dashboard-item{padding:5px 0}.dashboard-item strong{font-size:.73rem}.dashboard-item small{font-size:.61rem}
  .banner-stack{gap:5px;margin-bottom:8px}.event-banner{padding:8px 11px;border-radius:11px}
  .day-grid{gap:8px;grid-template-columns:minmax(0,1.72fr) minmax(300px,.68fr)}.timeline,.notes-card,.mini-card,.week-day,.class-card,.history,.month-grid,.settings-card{border-radius:17px}.timeline{padding:10px}.notes-col{gap:8px}.notes-card{padding:10px}.section-head{margin-bottom:6px}.section-head h2{font-size:1.12rem}
  .soft,.primary,.danger-soft,.upload-button,.modal-actions button{min-height:35px;padding:6px 10px;border-radius:10px}
  .morning-tasks{margin:6px 0 8px;padding:8px;border-radius:12px}.task-add-form input{height:34px}.task-list{margin-top:5px}.task-row{padding:4px 0}.tick,.trash,.icon-btn{width:30px;height:30px;border-radius:9px}
  .slot{grid-template-columns:72px minmax(0,1fr) 30px;gap:8px;padding:7px 8px;margin:4px 0;min-height:56px;border-radius:12px}.slot-time strong{font-size:.84rem}.slot-time span{font-size:.65rem}.slot-main h3{font-size:.96rem;margin:1px 0}.slot-main p{font-size:.74rem}.period{font-size:.61rem}.lesson-no,.live,.status-chip{font-size:.58rem;padding:2px 6px}.slot-action{font-size:1.12rem}.mini-reminder{font-size:.7rem;margin-top:2px}.previous-link{margin-top:4px;padding:4px 6px;font-size:.65rem}.homework-due-strip{margin-top:4px;padding:5px 6px}.gap{padding:3px 11px;font-size:.68rem}
  .notes-card textarea{min-height:145px;padding:9px}.note-tools{margin-top:5px}.attachment-box{margin-top:8px;padding:8px}.attachment-row{padding:5px 6px}.upload-button{margin-top:5px}.favourite-select{height:35px;margin-top:5px}.reminder-row{padding:6px 0;grid-template-columns:32px minmax(0,1fr) 32px}.quote-card-side{padding:10px 12px}.quote-card-side blockquote{font-size:.79rem}.quote-card-side .quote-mark{font-size:2.15rem}
  .week-grid{gap:6px}.week-day{padding:7px}.week-day-head{padding-bottom:6px}.week-day-head strong{font-size:1.2rem}.tiny-event{font-size:.61rem;padding:3px 5px;margin:2px 0}.week-slot{padding:5px 4px}.week-slot strong{font-size:.71rem}
  .month-grid{padding:6px;height:calc(100svh - 145px);min-height:620px;grid-template-rows:26px repeat(6,minmax(0,1fr));overflow:hidden}.dow{padding:4px 7px;font-size:.64rem}.month-cell{min-height:0;padding:5px}.cell-top{margin-bottom:2px}.cell-top strong{font-size:.8rem}.cell-top span{font-size:.58rem}.month-cell .tiny-event{font-size:.58rem;padding:3px 4px;margin:2px 0}.month-cell .more-events{font-size:.58rem;padding:1px 4px}.cell-flags{margin-top:2px;font-size:.56rem;gap:5px}
}

@media (max-width:960px){
  .day-date-nav{width:100%;justify-content:flex-start}
  .day-date-nav .day-picker{width:176px;min-width:176px;max-width:176px;flex:0 0 176px;margin-left:0}
}
@media (max-width:520px){
  .day-date-nav .day-picker{width:100%;min-width:0;max-width:none;flex:1 1 auto}
}

/* v3.2 whole two-week timetable */
.timetable-page-head{align-items:center}.timetable-legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:.76rem;font-weight:750}.timetable-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.lesson-dot{background:var(--cyan)}.ppa-dot{background:rgba(255,255,255,.45)}.free-dot{border:1px solid rgba(255,255,255,.3)}
.whole-timetable{border-radius:22px;padding:10px;overflow:hidden}.tt-grid{display:grid;grid-template-columns:minmax(120px,.72fr) repeat(5,minmax(125px,1fr));gap:6px}.tt-head{margin-bottom:6px}.tt-corner,.tt-period-head{padding:8px 9px;border-radius:11px;background:rgba(255,255,255,.055);border:1px solid var(--line)}.tt-period-head{display:flex;justify-content:space-between;align-items:baseline;gap:5px}.tt-period-head small{font-size:.61rem;color:var(--muted);font-weight:650}.tt-row{margin-bottom:6px}.tt-row.week-b-start{padding-top:10px;border-top:2px solid rgba(39,201,219,.24);margin-top:4px}.tt-day{min-height:53px;padding:7px 9px;border-radius:11px;background:rgba(255,255,255,.045);border:1px solid var(--line);display:grid;grid-template-columns:25px 1fr;align-items:center;gap:2px 6px}.tt-day b{grid-row:1/3;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:rgba(39,201,219,.14);color:#aef1f6}.tt-day span{font-weight:850}.tt-day small{font-size:.58rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-cell{min-height:53px;border-radius:11px;border:1px solid var(--line);padding:7px 8px;display:grid;place-items:center;text-align:center}.tt-cell strong,.tt-cell span{font-size:.78rem}.tt-lesson{background:linear-gradient(145deg,rgba(39,201,219,.13),rgba(44,185,180,.07));border-left:3px solid var(--cyan)}.tt-lesson:hover{background:linear-gradient(145deg,rgba(39,201,219,.22),rgba(44,185,180,.12));border-color:rgba(39,201,219,.34)}.tt-nonteach{background:rgba(255,255,255,.05);color:#d4dfe1}.tt-free{background:rgba(0,0,0,.09);color:#81979b}
@media (min-width:900px) and (max-height:1100px){.timetable-page-head{min-height:54px}.whole-timetable{padding:7px;border-radius:17px}.tt-grid{grid-template-columns:minmax(108px,.68fr) repeat(5,minmax(112px,1fr));gap:4px}.tt-head{margin-bottom:4px}.tt-corner,.tt-period-head{padding:5px 7px;border-radius:8px}.tt-row{margin-bottom:4px}.tt-row.week-b-start{padding-top:6px;margin-top:2px}.tt-day,.tt-cell{min-height:45px;border-radius:8px;padding:5px 6px}.tt-day{grid-template-columns:22px 1fr}.tt-day b{width:22px;height:22px;font-size:.7rem}.tt-day span{font-size:.74rem}.tt-day small{font-size:.52rem}.tt-cell strong,.tt-cell span{font-size:.7rem}.tt-period-head strong{font-size:.72rem}.tt-period-head small{font-size:.54rem}}
@media(max-width:760px){.whole-timetable{overflow-x:auto}.tt-grid{min-width:850px}.timetable-legend{display:none}}
