:root{--english:#e985cb;--english-soft:#f7d3ec;--maths:#6d9eeb;--maths-soft:#d6e4fa;--history:#f6b26b;--history-soft:#fce3c6;--ink:#1f1d22;--muted:#6b6672;--line:#2c2a30;--line-soft:#d9d5dd;--paper:#fff;--bg:#f4f2f5;--accent:#b5338a;--warn:#b35900;--heading:"Cambria", "Georgia", serif;--body:"Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--body);color:var(--ink);background:var(--bg);font-size:13px}button{font:inherit;color:inherit;cursor:pointer}textarea,input{font:inherit;color:inherit}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--paper);border-bottom:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 16px;display:flex}.brand{font-family:var(--heading);font-size:19px;font-weight:700}.weeks{gap:4px;display:flex}.week-tab{border:1px solid var(--line-soft);background:var(--paper);border-radius:6px;flex-direction:column;align-items:flex-start;padding:4px 12px;line-height:1.25;display:flex}.week-tab small{color:var(--muted);font-size:11px}.week-tab.active{border-color:var(--ink);background:var(--ink);color:#fff}.week-tab.active small{color:#ddd}.status{align-items:center;gap:12px;margin-left:auto;display:flex}.countdown{background:var(--bg);border-radius:6px;padding:4px 10px;font-weight:600}.countdown small,.essays small{color:var(--muted);font-weight:400}.countdown.subj-english{background:var(--english-soft)}.countdown.subj-maths{background:var(--maths-soft)}.countdown.subj-history{background:var(--history-soft)}.essays{font-weight:600}.essays.over{color:var(--warn)}.btn{border:1px solid var(--line-soft);background:var(--paper);border-radius:6px;padding:6px 12px}.btn:hover{border-color:var(--ink)}.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.danger{color:#b00020}.link{color:var(--accent);background:0 0;border:none;padding:0;text-decoration:underline}.layout{flex:1;gap:16px;min-height:0;padding:16px;display:flex;overflow:auto}.planner{flex:1;min-width:780px;min-height:560px;display:flex}.placing-banner{z-index:25;background:var(--ink);color:#fff;border-radius:8px;padding:10px 14px;position:fixed;bottom:16px;left:16px;box-shadow:0 6px 20px #00000040}.placing-banner .link{color:#fff;margin-left:8px}.week-grid{background:var(--paper);border:1.5px solid var(--line);flex:1;grid-template-rows:auto repeat(4,minmax(96px,1fr)) auto;grid-template-columns:64px repeat(5,minmax(108px,1fr)) minmax(160px,1.3fr);display:grid}.week-grid>*{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.day-head,.corner{text-align:center;font-family:var(--heading);padding:10px 6px;font-size:15px;font-weight:700}.day-head.today{background:#fff7d6}.holiday{color:#e000c8;font-size:14px}.weekend-head{justify-content:space-around;display:flex}.row-label{text-align:center;font-family:var(--heading);justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.notes-label{font-size:13px}.session{flex-direction:column;gap:4px;min-width:0;padding:4px;transition:background .1s;display:flex}.session.droppable{cursor:copy;background:#faf6fb}.session.droppable:hover,.session.drag-over{outline:2px dashed var(--accent);outline-offset:-3px;background:#f1e2ef}.session-time{align-items:center;gap:6px;min-height:20px;display:flex}.time-btn{color:var(--muted);background:0 0;border:none;border-radius:3px;padding:0 2px;font-size:11px}.time-btn:hover{background:var(--bg);color:var(--ink)}.time-btn.overridden{color:var(--accent);font-weight:600}.time-edit{align-items:center;gap:4px;font-size:11px;display:flex}.time-edit input{width:92px;padding:1px 2px;font-size:11px}.warn{color:var(--warn);font-size:10px}.item{cursor:grab;border-radius:4px;align-items:flex-start;gap:4px;padding:4px 4px 4px 2px;font-size:12px;line-height:1.3;display:flex;position:relative}.item.long{flex:1}.item-text{white-space:pre-line;-webkit-line-clamp:4;-webkit-box-orient:vertical;flex:1;min-width:0;display:-webkit-box;overflow:hidden}.item.long .item-text{-webkit-line-clamp:8}.item.done{opacity:.55}.item.done .item-text{text-decoration:line-through}.item.selected{outline:2px solid var(--ink)}.check input{cursor:pointer;width:15px;height:15px;accent-color:var(--ink);margin:1px 0 0}.item-actions{background:#ffffffeb;border-radius:4px;display:none;position:absolute;top:2px;right:2px}.item:hover .item-actions{display:flex}.item-actions button{background:0 0;border:none;padding:0 5px;font-size:14px;line-height:18px}.item-actions button:hover{color:var(--accent)}.empty-hint{color:var(--accent);flex:1;justify-content:center;align-items:center;font-size:12px;display:flex}.empty-hint.small{flex:0;font-size:11px}.subj-english{background:var(--english)}.subj-maths{background:var(--maths)}.subj-history{background:var(--history)}.exam-block{font-family:var(--heading);flex-direction:column;align-items:center;padding-top:18px;font-size:17px;display:flex;background:var(--paper)!important}.exam-block span{font-weight:700}.exam-block p{font-family:var(--body);color:var(--muted);font-size:12px}.exam-block.subj-english{color:#e000c8}.exam-block.subj-maths{color:#3c78d8}.exam-block.subj-history{color:#e69138}.notes-cell textarea,.weekend-cell textarea{resize:vertical;background:0 0;border:none;outline:none;width:100%;font-size:12px}.notes-cell textarea{min-height:70px;padding:6px}.notes-cell textarea:focus,.weekend-cell textarea:focus{background:#fffbea}.weekend-cell{flex-direction:column;padding:8px;display:flex}.weekend-cell .prompt{font-family:var(--heading);margin:0 0 8px;font-size:13px;line-height:1.4}.weekend-cell textarea{border:1px dashed var(--line-soft);border-radius:4px;flex:1;padding:6px}.summer{background:radial-gradient(circle at 50% 35%,#fff3a8 0%,#ffe066 25%,#fff 60%);flex-direction:column;justify-content:center;align-items:center;display:flex}.summer span{font-family:var(--heading);color:#f28c28;text-shadow:3px 3px #e64980,5px 5px #22b8cf;font-size:56px;font-weight:800}.summer p{color:var(--muted)}.library{background:var(--paper);border:1.5px solid var(--line);flex-direction:column;flex-shrink:0;width:340px;min-height:560px;display:flex;overflow:hidden}.lib-tabs{border-bottom:1px solid var(--line);display:flex}.lib-tab{font-family:var(--heading);border:none;border-bottom:4px solid #0000;flex:1;padding:10px 0;font-size:15px;font-weight:700;background:var(--paper)!important}.lib-kinds{background:var(--bg);border-radius:8px;margin:10px 12px 0;padding:3px;display:flex}.lib-kinds button{color:var(--muted);background:0 0;border:none;border-radius:6px;flex:1;padding:6px 4px;font-weight:600}.lib-kinds button.active{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px #00000026}.lib-kinds small{color:var(--muted);margin-left:2px;font-weight:400}.lib-tab.subj-english.active{border-bottom-color:var(--english)}.lib-tab.subj-maths.active{border-bottom-color:var(--maths)}.lib-tab.subj-history.active{border-bottom-color:var(--history)}.lib-scroll{flex:1;min-height:0;padding:0 12px 12px;overflow:auto}.lib-help{color:var(--muted);margin:8px 12px;font-size:12px}.lib-cards{grid-template-columns:1fr 1fr;gap:6px;display:grid}.lib-cards.long{grid-template-columns:1fr}.lib-card{cursor:grab;border:2px solid #0000;flex-direction:column;justify-content:space-between;min-height:62px;padding:6px 8px;font-size:12px;line-height:1.3;display:flex}.lib-card:hover{border-color:#00000059}.lib-card.selected{border-color:var(--ink);box-shadow:inset 0 0 0 2px #fff}.lib-card.blank{opacity:.6;cursor:pointer;font-style:italic}.lib-text{white-space:pre-line}.lib-meta{align-items:center;gap:4px;min-height:16px;margin-top:4px;display:flex}.tag{background:#fff9;border-radius:8px;padding:0 5px;font-size:10px}.lib-card .edit{visibility:hidden;background:#fff9;border:none;border-radius:4px;margin-left:auto;padding:0 5px}.lib-card:hover .edit{visibility:visible}.add-card{border:1.5px dashed var(--line-soft);min-height:40px;color:var(--muted);background:0 0}.add-card:hover{border-color:var(--ink);color:var(--ink)}.modal-backdrop{z-index:20;background:#14121866;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--paper);border-radius:10px;width:min(520px,92vw);max-height:88vh;padding:18px 22px;overflow:auto;box-shadow:0 10px 40px #00000040}.modal.wide{width:min(820px,94vw)}.modal-head{justify-content:space-between;align-items:center;display:flex}.modal h2{font-family:var(--heading);margin:0;font-size:20px}.modal h3{font-family:var(--heading);margin:18px 0 6px;font-size:16px}.close{background:0 0;border:none;font-size:22px}.editor{resize:vertical;border:none;border-radius:6px;width:100%;margin-top:12px;padding:10px;font-size:14px}.checkbox-row{align-items:center;gap:6px;margin-top:10px;display:flex}.muted{color:var(--muted)}.small{font-size:12px}.modal-actions{align-items:center;gap:8px;margin-top:12px;display:flex}.spacer{flex:1}.times{gap:6px;display:grid}.time-row{align-items:center;gap:10px;display:flex}.time-row>span:first-child{width:70px;font-weight:600}.themes{gap:4px;margin:0;padding:0;list-style:none;display:grid}.themes button{text-align:left;border:1px solid var(--line-soft);background:var(--english-soft);border-radius:6px;width:100%;padding:6px 10px}.themes button:hover{border-color:var(--ink)}.tips{grid-template-columns:1fr 1fr 2fr;gap:16px;display:grid}.tips dl{grid-template-columns:20px 1fr;row-gap:2px;margin:0;display:grid}.tips dt{font-weight:700}.tips dd{margin:0}.tips ul{margin:0;padding-left:18px}.toast{background:var(--ink);color:#fff;z-index:30;border-radius:8px;max-width:90vw;padding:10px 16px;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #00000040}.badge{background:var(--accent);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:6px;padding:0 5px;font-size:11px;line-height:18px;display:inline-block}.flag-mark{color:var(--ink);font-size:12px;line-height:15px}.chip{background:var(--bg);border:1.5px solid #0000;border-radius:14px;padding:3px 10px;font-size:12px}.chip.subj-english{background:var(--english-soft)}.chip.subj-maths{background:var(--maths-soft)}.chip.subj-history{background:var(--history-soft)}.chip.on{border-color:var(--ink);font-weight:600}.help-subjects{gap:6px;margin-top:12px;display:flex}.help-toolbar .help-subjects{margin-top:0}.help-task{white-space:pre-line;border-radius:6px;margin-top:12px;padding:8px 10px}.help-kinds{flex-direction:column;gap:4px;margin-top:12px;display:flex}.help-kinds label{align-items:center;gap:6px;display:flex}.help-note{border:1px solid var(--line-soft);resize:vertical;border-radius:6px;width:100%;margin-top:10px;padding:8px 10px}.btn:disabled{opacity:.45;cursor:default}.help-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0;display:flex}.help-tabs{min-width:240px;margin:0}.help-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.help-empty{text-align:center;padding:24px}.help-entry{border:1px solid var(--line-soft);border-left-width:6px;border-radius:6px;padding:8px 12px}.stripe-english{border-left-color:var(--english)}.stripe-maths{border-left-color:var(--maths)}.stripe-history{border-left-color:var(--history)}.help-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.help-meta .tag{background:var(--bg);font-size:11px}.help-meta .tag.kind-help{background:var(--ink);color:#fff}.help-entry-task{white-space:pre-line;color:var(--muted);margin-top:4px}.help-entry-note{white-space:pre-line;margin-top:4px;font-size:14px}.help-outcome{background:#f1f8ee;border-radius:4px;margin-top:6px;padding:6px 8px}.help-actions{gap:14px;margin-top:6px;display:flex}.help-close textarea{border:1px solid var(--line-soft);border-radius:6px;width:100%;margin-top:6px;padding:6px 8px}.m-app{background:var(--bg);flex-direction:column;height:100dvh;font-size:15px;display:flex}.m-head{padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:var(--paper);border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:8px;display:flex}.m-brand{font-family:var(--heading);font-size:18px;font-weight:700}.m-countdown{background:var(--bg);border-radius:14px;padding:4px 10px;font-size:13px;font-weight:600}.m-countdown.subj-english{background:var(--english-soft)}.m-countdown.subj-maths{background:var(--maths-soft)}.m-countdown.subj-history{background:var(--history-soft)}.m-main{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.m-page{max-width:720px;margin:0 auto;padding:12px 16px 24px}.m-page h2{font-family:var(--heading);margin:4px 0 12px;font-size:20px}.m-weeknav{justify-content:space-between;align-items:center;max-width:720px;margin:8px auto 0;padding:0 8px;font-weight:700;display:flex}.m-weeknav small{color:var(--muted);font-weight:400}.m-weeknav button{background:0 0;border:none;width:44px;height:44px;font-size:28px;line-height:1}.m-weeknav button:disabled{opacity:.25}.m-days{grid-template-columns:repeat(7,1fr);gap:4px;max-width:720px;margin:4px auto 0;padding:0 12px;display:grid}.m-day{border:1px solid var(--line-soft);background:var(--paper);color:var(--muted);border-radius:10px;flex-direction:column;align-items:center;padding:6px 0 4px;font-size:12px;display:flex}.m-day strong{color:var(--ink);font-size:17px}.m-day small{min-height:13px;font-size:10px}.m-day small.all-done{color:#2b8a3e;font-weight:700}.m-day.today{background:#fff7d6;border-color:#e0b400}.m-day.active{border-color:var(--ink);background:var(--ink);color:#ddd}.m-day.active strong{color:#fff}.m-day.summer{opacity:.5}.m-dot{border-radius:50%;width:9px;height:9px;margin:2px 0;display:inline-block}.m-card{background:var(--paper);border:1px solid var(--line-soft);border-radius:12px;margin-bottom:10px;padding:10px 12px}.m-session.target{border:2px dashed var(--accent);background:#fbf3f9}.m-session-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.m-session-name{font-family:var(--heading);font-weight:700}.m-time{background:var(--bg);border:none;border-radius:6px;padding:4px 8px;font-size:14px}.m-time.overridden{color:var(--accent);font-weight:600}.m-time-edit{align-items:center;gap:8px;display:flex}.m-item{border-radius:8px;align-items:flex-start;gap:8px;margin-bottom:6px;padding:8px 4px 8px 8px;line-height:1.35;display:flex}.m-item.done{opacity:.55}.m-item.done .m-item-text{text-decoration:line-through}.m-item.selected{outline:2px solid var(--ink)}.m-check input{width:22px;height:22px;accent-color:var(--ink);margin:0}.m-item-text{white-space:pre-line;flex:1;min-width:0}.m-item .flag-mark{font-size:15px}.m-more{background:#ffffff8c;border:none;border-radius:8px;flex-shrink:0;width:36px;height:32px;margin:-4px 0;font-size:20px;line-height:1}.m-add{border:1.5px dashed var(--line-soft);width:100%;min-height:44px;color:var(--accent);background:0 0;border-radius:8px;font-weight:600}.m-move-here{text-align:center;color:var(--accent);padding:10px;font-weight:600}.m-label{font-family:var(--heading);margin-bottom:6px;font-weight:700;display:block}.m-textarea{border:1px solid var(--line-soft);resize:vertical;border-radius:8px;width:100%;padding:8px 10px}.m-prompt{font-family:var(--heading);margin:0 0 10px;line-height:1.45}.m-exam{font-family:var(--heading);border:2px solid;border-radius:12px;flex-direction:column;align-items:center;margin-bottom:10px;padding:28px 12px;font-size:22px;display:flex;background:var(--paper)!important}.m-exam.subj-english{color:#e000c8}.m-exam.subj-maths{color:#3c78d8}.m-exam.subj-history{color:#e69138}.m-exam p{font-family:var(--body);color:var(--muted);margin:6px 0 0;font-size:14px}.m-summer{background:radial-gradient(circle at 50% 40%,#fff3a8 0%,#ffe066 30%,#fff 70%);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;min-height:50vh;margin:16px;display:flex}.m-summer span{font-family:var(--heading);color:#f28c28;text-shadow:3px 3px #e64980,5px 5px #22b8cf;font-size:48px;font-weight:800}.m-tabs{background:var(--paper);border-top:1px solid var(--line-soft);padding-bottom:env(safe-area-inset-bottom);display:flex}.m-tabs button{color:var(--muted);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 0 6px;font-size:12px;display:flex;position:relative}.m-tabs button.active{color:var(--ink);font-weight:700}.m-tab-icon{font-size:20px;line-height:1}.m-tabs .badge{margin:0;position:absolute;top:4px;left:calc(50% + 6px)}.m-banner{background:var(--ink);color:#fff;align-items:center;gap:10px;padding:10px 16px;font-size:14px;display:flex}.m-banner button{color:#fff;background:0 0;border:1px solid #fff;border-radius:6px;margin-left:auto;padding:6px 12px}.m-sheet-backdrop{z-index:15;background:#14121866;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.m-sheet{background:var(--paper);width:100%;max-width:720px;max-height:85dvh;padding:12px 16px calc(16px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;overflow-y:auto}.m-sheet-head{justify-content:space-between;align-items:center;display:flex}.m-sheet-head h3{font-family:var(--heading);margin:0;font-size:17px}.m-menu-task{color:var(--muted);white-space:pre-line;margin:8px 0 12px}.m-menu{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}.m-menu button{text-align:left;border:1px solid var(--line-soft);background:var(--paper);border-radius:10px;min-height:48px;padding:0 14px;font-size:15px}.m-menu button.danger{color:#b00020}.m-subjects{gap:6px;margin:10px 0;display:flex}.m-subjects .chip{flex:1;padding:8px 0;font-size:14px}.m-kinds{margin:0 0 10px}.m-kinds button{min-height:38px}.m-kinds button:disabled{opacity:.4}.m-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;display:grid}.m-card-btn{text-align:left;white-space:pre-line;border:none;border-radius:10px;flex-direction:column;align-items:flex-start;gap:4px;min-height:56px;padding:10px 12px;font-size:15px;line-height:1.35;display:flex}.m-card-btn.blank{opacity:.6;font-style:italic}.m-cards .add-card{border-radius:10px;min-height:52px}.m-exam-row{align-items:center;gap:8px;padding:4px 0;display:flex}.m-exam-row small{color:var(--muted);margin-left:auto}.m-exam-row.past{opacity:.5}.m-info p,.m-card p{margin:0;line-height:1.45}@media (width<=1099.98px){.modal-backdrop{align-items:flex-end}.modal,.modal.wide{width:100%;max-width:720px;max-height:90dvh;padding:16px 16px calc(16px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0}.tips{grid-template-columns:1fr 1fr}.tips .notes{grid-column:1/-1}.modal-actions{flex-wrap:wrap}.modal .btn,.m-page .btn{min-height:40px}.toast{bottom:calc(80px + env(safe-area-inset-bottom))}.help-toolbar{gap:8px}.help-tabs{flex:100%;min-width:0}.help-actions .link{padding:6px 0}input,textarea,select{font-size:16px}}
