:root{--bg:#f4eee2;--group:#fffaf0;--elevated:#fffdf7;--label:#33291c;--label-2:rgba(74,58,40,0.64);--label-3:rgba(74,58,40,0.34);--separator:rgba(120,96,64,0.2);--fill:rgba(150,124,84,0.13);--fill-strong:rgba(150,124,84,0.24);--tint:#9c6b12;--tint-ink:#fffaf0;--red:#c0442e;--orange:#d98324;--green:#6b8f4e;--purple:#8a6ea8;--wa-bg:#efeae2;--wa-in:#ffffff;--radius:16px;--tap:44px;--paper-grain:rgb(120 96 64/9%);--wa-veil:rgb(239 234 226/62%);--wa-frame:rgb(150 118 74/38%);--veil:rgb(244 238 226/62%);--lift:rgb(255 253 247/55%);--sway-period:7s}@media (prefers-color-scheme:dark){:root{--bg:#17130d;--group:#221c14;--elevated:#2b2318;--label:#f4ead8;--label-2:rgba(244,234,216,0.62);--label-3:rgba(244,234,216,0.32);--separator:rgba(226,200,150,0.18);--fill:rgba(226,200,150,0.12);--fill-strong:rgba(226,200,150,0.22);--tint:#e0aa46;--tint-ink:#241c10;--red:#e2705a;--orange:#e8a04a;--green:#8fb46b;--purple:#b294c9;--wa-bg:#0b141a;--wa-in:#202c33;--paper-grain:rgb(255 235 200/5%);--wa-veil:rgb(11 20 26/55%);--wa-frame:rgb(226 200 150/22%);--veil:rgb(23 19 13/88%);--lift:rgb(60 48 30/45%)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background-color:var(--bg);background-image:radial-gradient(var(--paper-grain) 1px,transparent 1px),linear-gradient(var(--veil),var(--veil)),radial-gradient(120% 58% at 50% -6%,var(--lift) 0,transparent 70%),url(/theme/field.webp);background-size:4px 4px,auto,auto,cover;background-position:0 0,50%,top,bottom;background-repeat:repeat,no-repeat,no-repeat,no-repeat;background-attachment:fixed,fixed,fixed,fixed;color:var(--label);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:17px;line-height:1.4;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--tint);outline-offset:2px}.app{max-width:640px;margin:0 auto;padding:max(env(safe-area-inset-top),12px) max(env(safe-area-inset-right),16px) calc(env(safe-area-inset-bottom) + 40px) max(env(safe-area-inset-left),16px)}.appbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:12px 4px 6px}.appbar h1{margin:0;font-size:30px;font-weight:800;letter-spacing:-.02em}.appbar .status{margin:2px 0 0;font-size:13px;color:var(--label-2)}.appbar-actions{gap:8px}.appbar-actions,.icon-btn{display:flex;align-items:center}.icon-btn{flex:none;min-width:var(--tap);padding:4px 6px 3px;height:auto;min-height:var(--tap);border-radius:14px;border:none;background:var(--fill);color:var(--tint);font-size:19px;flex-direction:column;justify-content:center;gap:1px;text-decoration:none;transition:background .15s,transform .1s}.icon-label{font-size:9px;font-weight:600;line-height:1;letter-spacing:.01em;color:var(--label-2);white-space:nowrap}.icon-btn .mark{width:24px;height:24px;vertical-align:0}.icon-btn:active{background:var(--fill-strong);transform:scale(.94)}.section{margin-top:22px}.section-title{margin:0 0 8px;-webkit-margin-start:16px;margin-inline-start:16px;font-size:13px;font-weight:600;color:var(--label-2);display:flex;align-items:center;gap:6px}.section-title .count{color:var(--label-3);font-weight:500}.section-title.danger{color:var(--red)}.list{background:var(--group);border-radius:var(--radius);overflow:hidden}.row{display:flex;align-items:center;gap:12px;padding:11px 16px;min-height:var(--tap);position:relative}.row+.row:before{content:"";position:absolute;top:0;inset-inline-start:52px;inset-inline-end:0;border-top:.5px solid var(--separator)}.row-main{flex:1 1;min-width:0}.row-title{font-size:17px;letter-spacing:-.01em;word-break:break-word}.row-meta{margin-top:3px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;color:var(--label-2)}.check{flex:none;width:var(--tap);height:var(--tap);margin:-8px 0;-webkit-margin-start:-6px;margin-inline-start:-6px;border:none;background:none;display:grid;place-items:center}.check .ring{width:26px;height:26px;border-radius:999px;border:2px solid var(--label-3);display:grid;place-items:center;color:#fff;font-size:14px;transition:background .15s,border-color .15s,transform .1s}.check:active .ring{transform:scale(.88)}.check.done .ring{background:var(--green);border-color:var(--green)}.row.done .row-title{color:var(--label-3);text-decoration:line-through}.chip{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;line-height:1;padding:4px 8px;border-radius:999px;background:var(--fill);color:var(--label-2);white-space:nowrap}.chip.due-overdue{background:color-mix(in srgb,var(--red) 16%,transparent);color:var(--red);font-weight:600}.chip.due-soon{background:color-mix(in srgb,var(--orange) 18%,transparent);color:var(--orange);font-weight:600}.chip .src{color:var(--label-3)}.composer{background:var(--group);border-radius:var(--radius);padding:8px;display:flex;flex-direction:column;gap:8px}.composer-input{display:flex;align-items:center;gap:8px;background:var(--fill);border-radius:12px;padding:0 12px}.composer-input input{flex:1 1;border:none;background:none;outline:none;padding:12px 0;font-size:17px}.composer-input input::placeholder{color:var(--label-3)}.add-btn{flex:none;border:none;background:var(--tint);color:var(--tint-ink);border-radius:9px;height:34px;padding:0 16px;font-weight:600;font-size:15px;transition:opacity .15s,transform .1s}.add-btn:disabled{opacity:.4}.add-btn:active:not(:disabled){transform:scale(.96)}.pills{display:flex;flex-wrap:wrap;gap:6px;padding:0 2px}.pill{border:none;background:var(--fill);color:var(--label);border-radius:999px;padding:7px 12px;font-size:14px;display:inline-flex;align-items:center;gap:5px;transition:background .15s,color .15s,transform .1s}.pill[aria-pressed=true]{background:var(--tint);color:var(--tint-ink)}.pill:active{transform:scale(.95)}.composer .when-exact{border:none;background:var(--fill);border-radius:10px;padding:9px 12px;font-size:15px;width:100%}.switch{flex:none;width:51px;height:31px;border-radius:999px;border:none;background:var(--fill-strong);padding:2px;display:flex;transition:background .2s}.switch .knob{width:27px;height:27px;border-radius:999px;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.2);transition:transform .2s}.switch.on{background:var(--green)}.switch{--knob-travel:20px}[dir=rtl] .switch{--knob-travel:-20px}.switch.on .knob{transform:translateX(var(--knob-travel))}details.group{margin-top:22px}details.group>summary{list-style:none;cursor:pointer;font-size:13px;font-weight:600;color:var(--label-2);padding:0 16px 8px;display:flex;align-items:center;gap:6px}details.group>summary::-webkit-details-marker{display:none}details.group>summary:after{content:"›";color:var(--label-3);font-size:18px;transition:transform .2s}details.group[open]>summary:after{transform:rotate(90deg)}.empty{text-align:center;color:var(--label-2);padding:28px 16px;font-size:15px}.text-btn{display:block;margin:28px auto 0;border:none;background:none;color:var(--tint);font-size:15px;padding:8px 16px}.text-btn.danger{color:var(--red)}form.inline{display:flex;align-items:center}.login{min-height:100dvh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:340px;text-align:center;padding:28px 24px 24px;border-radius:20px;background:color-mix(in srgb,var(--group) 92%,transparent);border:1px solid var(--separator);box-shadow:0 1px 2px rgb(90 70 40/6%),0 12px 32px rgb(90 70 40/10%)}.login .crest{width:108px;height:108px;margin:0 auto 10px;background:url(/theme/crest-cut.webp) 50%/contain no-repeat;transform-origin:50% 92%;animation:sway var(--sway-period) ease-in-out infinite}@keyframes sway{0%,to{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}@media (prefers-reduced-motion:reduce){.login .crest{animation:none}}.login h1{font-size:24px;font-weight:800;margin:0 0 4px}.login p{color:var(--label-2);font-size:14px;margin:0 0 20px}.login input{width:100%;border:1px solid var(--separator);background:var(--elevated);border-radius:12px;padding:14px 16px;font-size:17px;margin-bottom:12px;text-align:center}.login button{width:100%;border:none;background:var(--tint);color:var(--tint-ink);border-radius:12px;padding:14px;font-size:17px;font-weight:600}.login .error{color:var(--red);font-size:14px;margin-bottom:12px}@keyframes sk{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}.sk{background:var(--fill);border-radius:10px;animation:sk 1.2s ease-in-out infinite}.row-link{flex:1 1;min-width:0;display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.row-link:active{opacity:.6}.chev{flex:none;color:var(--label-3);font-size:22px;line-height:1}.x-btn{flex:none;width:34px;height:34px;border:none;background:var(--fill);color:var(--label-2);border-radius:999px;font-size:13px;display:grid;place-items:center;transition:background .15s,transform .1s}.x-btn:active{background:var(--fill-strong);transform:scale(.9)}.detail .back{display:inline-block;color:var(--tint);font-size:17px;text-decoration:none;padding:8px 4px}.detail-head h1{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:6px 0 10px}.detail-note{background:var(--group);border-radius:12px;padding:10px 14px;font-size:15px;margin:12px 0 0}.provenance{color:var(--label-2);font-size:13px;margin:10px 0 0}.wa-chat{background-color:var(--wa-bg);background-image:linear-gradient(var(--wa-veil),var(--wa-veil)),url(/theme/doodles-tile.webp);background-size:auto,320px 320px;background-repeat:no-repeat,repeat;border-radius:16px;padding:14px 10px;display:flex;flex-direction:column;border:1.5px solid var(--wa-frame);box-shadow:0 1px 2px rgb(90 70 40/8%),0 8px 24px rgb(90 70 40/8%);overflow:hidden}.wa-day{display:flex;justify-content:center;margin:6px 0 12px}.wa-day span{background:var(--wa-in);color:var(--label-2);font-size:12px;font-weight:600;padding:5px 12px;border-radius:8px;box-shadow:0 1px .5px rgb(0 0 0/13%)}.wa-line{display:flex;align-items:flex-end;gap:6px;margin-bottom:2px}.wa-line.run-start{margin-top:8px}.wa-avatar{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:13px;font-weight:700;background-clip:padding-box}.wa-avatar:empty{background:none!important}.wa-msg{max-width:88%;background:var(--wa-in);border-radius:8px;padding:6px 9px 5px;box-shadow:0 1px .5px rgb(0 0 0/18%);position:relative}.wa-line.run-start .wa-msg{border-start-start-radius:2px}.wa-line.run-start .wa-msg:before{content:"";position:absolute;top:0;inset-inline-start:-7px;border-top:8px solid var(--wa-in);-webkit-border-start:8px solid transparent;border-inline-start:8px solid transparent}.wa-msg.hl{box-shadow:0 0 0 2px var(--tint),0 1px .5px rgb(0 0 0/18%)}.wa-tag{font-size:11px;font-weight:700;color:var(--tint);margin-bottom:3px}.wa-tag.done{color:var(--green)}.wa-sender{font-size:13px;font-weight:600;margin-bottom:1px}.wa-sub{font-size:11.5px;color:var(--label-2);margin:-1px 0 2px}.wa-body{font-size:14.5px;line-height:1.35;white-space:pre-wrap;word-break:break-word}.wa-time{float:inline-end;font-size:10.5px;color:var(--label-3);margin:2px 0 0;-webkit-margin-start:10px;margin-inline-start:10px;line-height:1;white-space:nowrap}.tabs{display:flex;gap:6px;padding:6px 4px 2px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:0 0 auto;padding:7px 14px;border-radius:999px;border:1.5px solid transparent;background:var(--fill);color:var(--label-2);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap;transition:background .15s ease,color .15s ease}.tab:hover{background:var(--fill-strong)}.tab.on{background:var(--elevated);border-color:var(--tint);color:var(--tint)}.chip.student{border:1.5px solid var(--label-3);background:transparent;font-weight:600}.appbar h1 .scope{font-weight:600;color:var(--label-2)}.mark{display:inline-block;width:1.4em;height:1.4em;vertical-align:-.32em;background:50%/contain no-repeat;flex:none}.mark-homework{background-image:url(/theme/marks-1.webp)}.mark-reminder{background-image:url(/theme/marks-2.webp)}.mark-task{background-image:url(/theme/marks-3.webp)}.mark-event{background-image:url(/theme/marks-4.webp)}.mark-payment{background-image:url(/theme/marks-5.webp)}.mark-harvest{background-image:url(/theme/tools-1.webp)}.mark-refresh{background-image:url(/theme/refresh.webp)}.mark-refresh.spinning{animation:mark-spin .9s linear infinite}@keyframes mark-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.mark-refresh.spinning{animation:none;opacity:.5}}.mark-vane{background-image:url(/theme/tools-2.webp)}@media (prefers-color-scheme:dark){.mark{filter:brightness(1.45) saturate(.9)}}.app,.login{position:relative;z-index:1}.empty .big{display:block;width:92px;height:92px;margin:0 auto 10px;background:url(/theme/sway-16.webp) 50%/contain no-repeat;transform-origin:50% 92%;animation:sway var(--sway-period) ease-in-out infinite;opacity:.85}@media (prefers-reduced-motion:reduce){.empty .big{animation:none}}.student-head{display:flex;align-items:baseline;gap:8px;margin:22px 4px 2px;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-border-start:3px solid var(--separator);border-inline-start:3px solid var(--separator);font-size:19px;font-weight:800;letter-spacing:-.01em}.student-head:first-of-type{margin-top:8px}.student-head .student-name{color:var(--label)}.composer-opts{display:flex;flex-direction:column;gap:8px;margin-top:10px;animation:opts-in .16s ease-out}@keyframes opts-in{0%{opacity:0;transform:translateY(-4px)}}.opt-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.marks{display:flex;gap:2px}.mark-btn{width:36px;height:36px;border:none;background:none;border-radius:10px;display:grid;place-items:center;opacity:.42;transition:opacity .12s,background .12s}.mark-btn .mark{width:22px;height:22px;vertical-align:0}.mark-btn[aria-pressed=true]{opacity:1;background:var(--fill)}.when-seg{display:flex;-webkit-margin-start:auto;margin-inline-start:auto;background:var(--fill);border-radius:10px;padding:2px}.when-seg button{border:none;background:none;color:var(--label-2);font-size:13px;font-weight:600;padding:6px 10px;border-radius:8px;white-space:nowrap}.when-seg button[aria-pressed=true]{background:var(--elevated);color:var(--label);box-shadow:0 1px 2px rgb(90 70 40/12%)}@media (max-width:420px){.when-seg{-webkit-margin-start:0;margin-inline-start:0;width:100%}.when-seg button{flex:1 1;text-align:center}}.usage-bar{height:4px;border-radius:999px;background:var(--fill);margin-top:6px;overflow:hidden}.usage-bar span{display:block;height:100%;background:var(--tint);border-radius:inherit}.composer-who{display:flex;align-items:center;gap:8px;padding-inline:4px;font-size:14px;color:var(--label-2)}.who-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--sep);background:var(--fill);border-radius:10px;padding:6px 28px 6px 10px;font:inherit;font-weight:700;color:var(--label);background-image:linear-gradient(45deg,transparent 50%,var(--label-3) 50%),linear-gradient(135deg,var(--label-3) 50%,transparent 50%);background-size:5px 5px,5px 5px;background-repeat:no-repeat;background-position:calc(100% - 14px) 52%,calc(100% - 9px) 52%}[dir=rtl] .who-select{padding:6px 10px 6px 28px;background-position:14px 52%,9px 52%}.who-select:focus-visible{outline:2px solid var(--tint);outline-offset:1px}.who-verb{white-space:nowrap}.channel-search{padding:0 8px 10px}.channel-search input{width:100%;border:1px solid var(--sep);background:var(--fill);border-radius:12px;padding:10px 12px;font-size:16px;outline:none}.channel-search input:focus-visible{border-color:var(--tint)}.section-title.sub{margin-top:14px;font-size:12px;text-transform:none;opacity:.85}.push-line{line-height:1.5;color:var(--label-3);text-align:center}.push-line,.push-toggle{margin:20px 16px 0;font-size:13px}.push-toggle{padding:10px 14px;background:var(--group);border:1px solid var(--separator);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;gap:8px 12px;color:var(--label-2)}.push-toggle,.push-who{display:flex;align-items:center}.push-who{gap:8px}.push-toggle select{font:inherit;color:var(--label);background:var(--elevated);border:1px solid var(--separator);border-radius:8px;padding:5px 8px}.push-actions{display:flex;align-items:center;gap:4px}.text-btn.inline-btn{display:inline-block;margin:0;font-size:13px;font-weight:600;padding:6px 8px;min-height:32px}.text-btn.inline-btn.muted{color:var(--label-3);font-weight:400}.text-btn.inline-btn:disabled{opacity:.45}.push-note{flex-basis:100%;color:var(--red)}.row.focused{-webkit-border-start:3px solid var(--tint);border-inline-start:3px solid var(--tint);border-radius:10px;animation:focus-flash 2.4s ease-out 1}@keyframes focus-flash{0%,30%{background:var(--fill-strong)}to{background:transparent}}@media (prefers-reduced-motion:reduce){.row.focused{animation:none;background:var(--fill)}}.admin-line{margin:24px 16px 0;text-align:center;font-size:12px}.admin-line a{color:var(--label-3);text-decoration:none}.freshness{margin:14px 16px 0;font-size:11px;color:var(--label-3);display:flex;align-items:center;justify-content:center;gap:2px}.refresh-btn{border:0;background:none;padding:4px 8px;min-height:32px;display:inline-flex;align-items:center;cursor:pointer;line-height:1}.refresh-btn .mark{width:15px;height:15px;vertical-align:0}.refresh-btn:disabled{cursor:default}.refresh-btn:active .mark{transform:scale(.9)}.detail-actions{position:-webkit-sticky;position:sticky;bottom:0;display:flex;gap:8px;align-items:center;margin:28px -16px calc(env(safe-area-inset-bottom) * -1 - 40px);padding:12px 16px calc(env(safe-area-inset-bottom) + 12px);background:var(--bg);border-top:1px solid var(--separator)}.detail-actions form{display:flex}.act{font:inherit;font-size:15px;font-weight:600;color:var(--tint);background:var(--fill);border:0;border-radius:12px;min-height:var(--tap);padding:0 18px;cursor:pointer;transition:background .15s,transform .1s}.act:active{transform:scale(.97)}.detail-actions form:first-child{flex:1 1}.act.primary{width:100%;color:var(--tint-ink);background:var(--tint)}.chip.who{font-weight:700;background:none;border:1px solid}.edit-task{margin-top:14px}.edit-task>summary{padding:6px 0;color:var(--tint)}.edit-form{gap:12px;padding:12px 0 4px}.edit-form,.edit-form label{display:flex;flex-direction:column}.edit-form label{gap:5px;font-size:12px;color:var(--label-2)}.edit-form input:not([type]),.edit-form input[type=datetime-local],.edit-form input[type=text],.edit-form select{font:inherit;font-size:16px;color:var(--label);background:var(--elevated);border:1px solid var(--separator);border-radius:10px;padding:10px 12px;min-height:var(--tap);width:100%}.edit-form label.edit-check{flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;font-size:14px;color:var(--label);min-height:var(--tap)}.edit-check input{flex:none;width:20px;height:20px;min-height:0;accent-color:var(--tint)}.edit-form .act.primary{align-self:flex-start;width:auto;padding:0 24px}