@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap');
:root{--ink:#283b39;--muted:#7b8983;--forest:#29594d;--line:#e5e4da;--paper:#fffdf6;--warm:#f5f1e7}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#e8ede7;font-family:'DM Sans',sans-serif}.ambient{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 15% 8%,#d9e7d7 0,transparent 42%),radial-gradient(ellipse at 92% 85%,#d5dfd5 0,transparent 48%)}.shell{position:relative;max-width:1440px;margin:auto;padding:30px 32px 22px}.topbar,.brand,.actions,.toolbar,.pagehead,.folio,.bottom{display:flex;align-items:center;justify-content:space-between}.topbar{margin-bottom:36px}.brand{gap:13px;justify-content:flex-start}.brandmark{display:grid;place-items:center;width:45px;height:45px;border-radius:13px;background:#29594d;color:#fff;font-size:24px}.brand strong{display:block;font-family:'Playfair Display',serif;font-size:22px}.brand small{color:var(--muted);font-size:12px;letter-spacing:.05em}.actions{gap:14px}.status{color:#577b65;font-size:12px}.refresh,.today,.arrow{border:1px solid #cfd8cd;background:#fffef9;color:var(--forest);border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer}.refresh:hover,.today:hover,.arrow:hover{background:#e7efe6}.toolbar{justify-content:center;gap:23px;margin-bottom:26px;flex-wrap:wrap}.dateblock{text-align:center;min-width:290px}.eyebrow,.kicker{font-size:10px;letter-spacing:.22em;font-weight:700;color:#799184}.dateblock h1{font-family:'Playfair Display',serif;font-size:34px;margin:4px 0}.dateblock p{margin:0;color:var(--muted);font-size:13px}.arrow{width:44px;height:44px;font-size:19px;padding:0}.toolbar input{background:#fffef9;border:1px solid #cfd8cd;color:var(--ink);border-radius:10px;padding:11px;font:inherit}.book{display:grid;grid-template-columns:1fr 1fr;min-height:590px;filter:drop-shadow(0 16px 25px #35534425)}.page{position:relative;display:flex;flex-direction:column;min-width:0;background:var(--paper);padding:36px 40px 22px}.left{border-radius:12px 0 0 12px;box-shadow:inset -13px 0 20px -20px #172f2d80;border-right:1px solid #dcded4}.right{border-radius:0 12px 12px 0;box-shadow:inset 13px 0 20px -20px #172f2d80;background:#fffcf3}.pagehead{align-items:end;padding-bottom:20px;border-bottom:1px solid var(--line);gap:10px}.pagehead h2{font:600 27px 'Playfair Display',serif;margin:8px 0 0}.count{color:#8b948a;font-size:12px;white-space:nowrap}.entries{flex:1;padding-top:18px}.entry{padding:17px 0;border-bottom:1px solid #e8e7dd}.entrytop{display:flex;align-items:center;gap:11px;margin-bottom:9px}.number{display:grid;place-items:center;min-width:29px;height:29px;background:#e5eee6;border-radius:9px;color:#3d6659;font-weight:700;font-size:12px}.subject{font-weight:700;font-size:14px}.teacher{font-size:11px;color:#95a096;margin-left:auto;text-align:right}.topic{font-family:'Playfair Display',serif;font-size:16px;margin:7px 0;color:#36483e}.meta-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#89988a;font-weight:700;margin-top:13px}.bodytext{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;color:#5e6a63;font-size:13px;margin:5px 0}.assignment{background:#f4f4e9;border-left:3px solid #b6a978;border-radius:0 9px 9px 0;padding:13px 15px;margin-bottom:12px}.assignment .subject{color:#455b4e}.assignment .bodytext{margin:8px 0}.due-meta{font-size:11px;color:#8c968a}.tag{display:inline-block;margin-top:8px;background:#e6eee6;border-radius:30px;padding:5px 9px;color:#476956;font-size:11px}.empty{padding:72px 15px;text-align:center;color:#84948a}.empty .symbol{font:50px 'Playfair Display',serif;color:#b4c5b8;margin-bottom:12px}.empty strong{display:block;color:#496054;font:22px 'Playfair Display',serif;margin-bottom:8px}.empty p{font-size:13px;line-height:1.6}.loading{padding:50px 0;text-align:center;color:#89998d}.folio{margin-top:32px;border-top:1px solid var(--line);padding-top:16px;color:#a2a79e;letter-spacing:.15em;font-size:10px}.folio span{font:16px 'Playfair Display',serif;color:#73857a}.bottom{color:#718479;font-size:11px;padding-top:20px;gap:10px}.error{color:#a04444;text-align:center;padding:32px 0}@media(max-width:850px){.shell{padding:16px}.topbar{margin-bottom:22px}.book{grid-template-columns:1fr}.page{border-radius:12px!important;padding:28px 24px;min-height:300px}.left{border-right:0;border-bottom:1px solid var(--line)}.right{margin-top:14px}.toolbar{gap:10px}.dateblock{order:-1;width:100%}.bottom{flex-wrap:wrap}.teacher{max-width:38%}}@media print{body{background:white}.ambient,.topbar,.toolbar,.bottom{display:none}.book{filter:none}.page{border:1px solid #ddd}}

[hidden]{display:none!important}
.viewnav{display:flex;justify-content:center;gap:10px;margin:8px 0 24px}
.viewnav button{cursor:pointer;border-radius:24px;border:1px solid #c9d8cf;background:#fff;padding:11px 18px;color:#426556}
.viewnav button.active{background:#29594d;color:#fff}
.calendar-section{max-width:1120px;margin:0 auto 28px}
.calendar-toolbar{display:flex;justify-content:center;align-items:center;text-align:center;gap:28px;margin-bottom:22px}
.calendar-toolbar h1{font:600 36px 'Playfair Display',serif;text-transform:capitalize;margin:5px 0}
.calendar-toolbar p{font-size:13px;color:#78867b;margin:0}
.calendar-toolbar button{border:1px solid #d7dfd7;background:#fff;border-radius:50%;width:44px;height:44px;cursor:pointer;font-size:20px}
.calendar-paper{background:#fffdf6;padding:16px;border:1px solid #e2e5dc;border-radius:14px;box-shadow:0 16px 30px #344f3920}
.weekday-row,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.weekday-row span{text-align:center;padding:9px 0;color:#6d8476;font-size:12px;font-weight:700}
.calendar-day{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-height:120px;min-width:0;padding:10px;background:#fafaf3;border:1px solid #e4e8df;border-radius:10px;color:#293b34;cursor:pointer;text-align:left;font:inherit}
.calendar-day:hover{background:#e9f3e9;border-color:#9abda6}
.calendar-day.is-today{border:2px solid #35735d;padding:9px}
.calendar-number{font-size:15px;font-weight:700}
.calendar-subjects{font-size:11px;color:#617a69;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.calendar-stats{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.calendar-stat{font-size:10px;font-weight:700;color:#387257}
.homework-stat{color:#a07730}
.calendar-blank{min-height:120px}
@media(max-width:700px){.calendar-paper{padding:6px}.weekday-row,.calendar-grid{gap:3px}.calendar-day,.calendar-blank{min-height:78px}.calendar-day{padding:5px}.calendar-day.is-today{padding:4px}.calendar-subjects{display:none}.calendar-stat{font-size:9px}.calendar-toolbar{gap:10px}.calendar-toolbar h1{font-size:25px}}
