:root{--bg:#e1d9bc;--paper:#f0f0db;--paper-hover:#eae7cf;--ink:#000;--ink-soft:#333;--ink-faint:#575757;--ink-typed:#000;--line:#ccc5af;--line-strong:#acbac4;--hover-neutral:#eae7cf;--hover-accent:#30364f1a;--brand-deep:#30364f;--accent:#3f5f78;--accent-fill:#30364f;--accent-soft:#30364f1f;--on-accent:#f0f0db;--good:#76c457;--good-ink:#4d9a33;--good-soft:#76c4572e;--good-dim:#76c45761;--heat-1:#76c45742;--heat-2:#76c45780;--heat-3:#76c457bd;--heat-4:#76c457;--warn:#c0392b;--warn-soft:#c0392b1f;--overdue-fill:#c0392b1a;--overdue-line:#c0392b2e;--warn-dim:#c4563a;--warn-dim-line:#c4563a73;--warn-dim-fill:#c4563a1a;--attention:#c2542f;--attention-soft:#c2542f24;--attention-line:#c2542f80;--attention-wash:#c2542f0d;--course-1:#3f6ea8;--course-1-soft:#3f6ea824;--course-2:#4d9a33;--course-2-soft:#4d9a3324;--course-3:#a8533f;--course-3-soft:#a8533f24;--course-4:#7a4fa3;--course-4-soft:#7a4fa324;--course-5:#1f7f84;--course-5-soft:#1f7f8424;--course-6:#93702a;--course-6-soft:#93702a24;--scrim:#30364f73;--shadow-float:0 6px 20px #30364f2e;--shadow-card:0 1px 2px #30364f0f;--frozen-wash:#30364f0d;--dash:#30364f6b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#131317;--paper:#1b1b21;--paper-hover:#23232a;--ink:#f1f0f5;--ink-soft:#b8b6c4;--ink-faint:#86848f;--ink-typed:#f1f0f5;--line:#28282f;--line-strong:#3d3c48;--hover-neutral:#23232a;--hover-accent:#b5a9ee24;--brand-deep:#8f83dd;--accent:#b5a9ee;--accent-fill:#6b5fc8;--accent-soft:#b5a9ee29;--on-accent:#fff;--good:#76c457;--good-ink:#a5cf83;--good-soft:#253520;--good-dim:#4a7d3b;--heat-1:#243520;--heat-2:#36512c;--heat-3:#4e8a3c;--heat-4:#76c457;--warn:#f27474;--warn-soft:#f2747429;--overdue-fill:#5c242a80;--overdue-line:#f2747429;--warn-dim:#dd8068;--warn-dim-line:#dd806873;--warn-dim-fill:#dd80681f;--attention:#e8825e;--attention-soft:#e8825e33;--attention-line:#e8825e8c;--attention-wash:#e8825e0b;--course-1:#87b0e0;--course-1-soft:#87b0e02e;--course-2:#a5cf83;--course-2-soft:#a5cf832e;--course-3:#e0a08c;--course-3-soft:#e0a08c2e;--course-4:#bda6e4;--course-4-soft:#bda6e42e;--course-5:#7cc6ca;--course-5-soft:#7cc6ca2e;--course-6:#d4b96e;--course-6-soft:#d4b96e2e;--scrim:#050508b8;--shadow-float:0 8px 24px #0000008c;--shadow-card:0 1px 2px #00000059;--frozen-wash:#ffffff06;--dash:#b5a9ee6b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--sans:"Encode Sans Expanded", system-ui, -apple-system, sans-serif;--display:var(--sans);--mono:"IBM Plex Mono", ui-monospace, Consolas, monospace;--w-mono:400;--w-title:600;--w-row:400;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-chip:6px;--r:10px;--r-card:12px;--r-focus:3px;--travel:transform .18s cubic-bezier(.2, .8, .2, 1);--fs-micro:9px;--fs-mini:10px;--fs-label:11px;--fs-chrome:12px;--fs-body:13px;--fs-row:14px;--fs-section:14px;--fs-title:15px;--fs-figure:19px;--grip-size:16px;--check-size:18px;--icon-size:13px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);min-height:100%;color:var(--ink-soft);font:16px/1.5 var(--sans);font-weight:var(--w-row);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}button,input,select,textarea{font:inherit;color:inherit;outline:none}input[type=text],input[type=email],input[type=password],select,textarea{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink);caret-color:var(--ink-typed);padding:6px 10px;transition:border-color .15s}input[type=text]:focus,select:focus{border-color:var(--accent-fill)}button{cursor:pointer;transition:all .15s}#app{flex-direction:column;min-height:100dvh;display:flex}.shell{--side-w:268px;grid-template-columns:var(--side-w) minmax(0, 1fr);flex:1;min-height:0;display:grid}.shell.rail{--side-w:64px}aside.side{width:var(--side-w);height:100vh;height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin-top:env(safe-area-inset-top);border-right:1px solid var(--line);background:var(--bg);z-index:60;flex-direction:column;grid-column:1;transition:width .2s cubic-bezier(.2,.8,.2,1);display:flex;position:sticky;top:0;overflow:hidden auto}.side::-webkit-scrollbar{width:7px}.side::-webkit-scrollbar-track{background:0 0}.side::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px}.side-top{align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);min-height:56px;display:flex}.side.collapsed .side-top{padding:var(--sp-3) 0;gap:var(--sp-2);flex-direction:column}.side-identity{flex:1;min-width:0}input[type=text].side-name{border-radius:var(--r-chip);width:100%;font-family:var(--display);font-size:var(--fs-title);color:var(--ink);text-overflow:ellipsis;background:0 0;border:1px solid #0000;margin-left:-6px;padding:2px 6px;font-weight:700}input[type=text].side-name::placeholder{color:var(--ink-faint);font-weight:600}input[type=text].side-name:hover{background:var(--hover-neutral)}input[type=text].side-name:focus{background:var(--paper);border-color:var(--accent-fill)}.side-sub{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-top:1px;padding-left:1px}.side-initials{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);font-family:var(--mono);font-weight:600;font-size:var(--fs-label);border-radius:999px;place-items:center;display:grid}.side-collapse{border-radius:var(--r-chip);width:28px;height:28px;color:var(--ink-faint);background:0 0;border:1px solid #0000;flex-shrink:0;place-items:center;display:grid}.side-collapse svg{width:17px;height:17px}.side-collapse:hover{color:var(--accent);background:var(--hover-neutral);border-color:var(--line)}.side-nav{padding:var(--sp-3) var(--sp-2);gap:var(--sp-4);flex-direction:column;flex:1;display:flex}.side.collapsed .side-nav{padding:var(--sp-3) var(--sp-2);gap:var(--sp-3)}.side-group-title{font-size:var(--fs-label);color:var(--ink);letter-spacing:.01em;padding:0 var(--sp-2) var(--sp-2);font-weight:700}.side.collapsed .side-group-title{height:1px;margin:0 var(--sp-2) var(--sp-2);background:var(--line);color:#0000;padding:0;overflow:hidden}.side.collapsed .side-group:first-child .side-group-title{display:none}.nav-row{align-items:center;gap:var(--sp-3);width:100%;padding:7px var(--sp-2);border-radius:var(--r);color:var(--ink-soft);font-size:var(--fs-row);font-weight:var(--w-row);text-align:left;background:0 0;border:1px solid #0000;text-decoration:none;display:flex}.nav-row+.nav-row{margin-top:1px}.nav-row:hover{background:var(--hover-neutral);color:var(--ink)}.nav-row.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-icon{border-radius:var(--r-chip);width:26px;height:26px;color:var(--ink-faint);flex-shrink:0;place-items:center;display:grid}.nav-icon svg{width:17px;height:17px}.nav-row:hover .nav-icon{color:var(--ink-soft)}.nav-row.active .nav-icon{color:var(--accent)}.nav-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.side.collapsed .nav-label{display:none}.side.collapsed .nav-row{justify-content:center;padding:7px 0}.cog-spin svg{transition:transform .35s cubic-bezier(.2,.8,.2,1)}.nav-row:hover .cog-spin svg{transform:rotate(60deg)}.side-foot{padding:var(--sp-2) var(--sp-2) calc(var(--sp-4) + env(safe-area-inset-bottom));border-top:1px solid var(--line)}.side-blurb{padding:var(--sp-3) var(--sp-2) 0;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);color:var(--ink-faint);line-height:1.6}.side-open{top:calc(var(--sp-3) + env(safe-area-inset-top));left:calc(var(--sp-3) + env(safe-area-inset-left));z-index:70;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r);width:38px;height:38px;color:var(--ink-soft);box-shadow:var(--shadow-card);place-items:center;display:none;position:fixed}.side-open svg{width:19px;height:19px}.side-scrim{z-index:55;background:var(--scrim);overscroll-behavior:contain;touch-action:none;display:none;position:fixed;inset:0}.main-content{flex-direction:column;grid-column:2;min-width:0;min-height:0;padding:24px;display:flex;container:board/inline-size}.toolbar{margin-bottom:var(--sp-3);justify-content:space-between;align-items:center;display:flex}.toolbar-left{align-items:center;gap:12px;margin-left:-12px;display:flex}.week-date-box{border:1px solid var(--line);align-items:baseline;gap:var(--sp-5);background:0 0;border-radius:8px;padding:4px 14px;display:flex}.proj-hover-action{opacity:0;transition:opacity .15s}.project-card:hover .proj-hover-action{opacity:1}.icon-btn{color:var(--ink-faint);background:0 0;border:none;place-items:center;width:32px;height:32px;transition:color .15s;display:grid}.icon-btn:hover{color:var(--ink);background:0 0}.proj-action{width:22px;height:22px;color:var(--ink-faint);background:0 0;border:1px solid #0000;border-radius:999px;place-items:center;padding:0;transition:color .18s,background .25s,border-color .18s;display:grid}.proj-action.set{color:var(--accent)}.proj-action:hover{color:var(--accent);border-color:var(--line);background:radial-gradient(circle at 50% 45%, var(--accent-soft), transparent 72%), var(--hover-neutral)}.proj-action.danger:hover{color:var(--warn);border-color:var(--warn-dim-line);background:radial-gradient(circle at 50% 45%, var(--warn-soft), transparent 72%), var(--hover-neutral)}.week-title{color:var(--accent);font-weight:600;font-size:var(--fs-title);white-space:nowrap}.week-dates{color:var(--ink-soft);font-size:var(--fs-body);font-family:var(--mono);font-weight:var(--w-mono);letter-spacing:.04em;white-space:nowrap}.today-link{color:var(--ink-faint);font-size:var(--fs-body);cursor:pointer;border-radius:var(--r-chip);background:0 0;border:none;align-items:center;margin-left:4px;padding:5px 10px;transition:color .15s,background .15s;display:inline-flex}.today-link:hover{color:var(--ink);background:var(--paper)}.toolbar-right{gap:12px;display:flex}.toolbar-right button{background:var(--paper);border:1px solid var(--line-strong);color:var(--ink-soft);border-radius:var(--r-chip);font-size:var(--fs-body);padding:6px 12px;font-weight:500;transition:all .15s}.toolbar-right button:hover{background:var(--hover-neutral);color:var(--ink)}.progress-section{margin-bottom:32px}.progress-row{align-items:center;gap:var(--sp-3);display:flex}.progress-track{background:var(--line-strong);border-radius:999px;flex:1;height:6px;overflow:hidden}.progress-pct{font-family:var(--mono);font-weight:var(--w-mono);color:var(--ink-faint);white-space:nowrap;flex-shrink:0;font-size:.75rem}.progress-fill{background:var(--good);border-radius:999px;height:100%;transition:width .4s cubic-bezier(.2,.8,.2,1)}.progress-stats{margin-top:var(--sp-3);font-size:var(--fs-body);color:var(--ink-soft);justify-content:space-between;display:flex}.open-week{color:var(--ink);text-underline-offset:3px;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.open-week:hover{text-decoration-thickness:2px}.progress-section.ended .progress-fill{background:var(--ink-faint)}.week-head{flex-shrink:0}.week-body{flex-direction:column;flex:1;min-height:0;display:flex}.week-head.frozen,.week-body.frozen,.week-head.moving{border-radius:var(--r-card);padding:var(--sp-4);background:var(--frozen-wash);border:1px solid #0000;position:relative}.week-head.frozen .dash-rect,.week-body.frozen .dash-rect{stroke:var(--line-strong)}.week-head.frozen,.week-head.moving{margin-bottom:var(--sp-4)}.week-head.frozen .progress-section,.week-head.moving .progress-section{margin-bottom:0}.week-head.moving{border-color:var(--attention-line);background:var(--attention-wash)}.toolbar-right button:disabled{opacity:.45;cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23fff' stroke-width='5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/g%3E%3Cg fill='none' stroke='%23e0453a' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/g%3E%3C/svg%3E") 12 12,not-allowed}.toolbar-right button:disabled:hover{background:var(--paper);color:var(--ink-soft)}.week-title.moving,.progress-stats .move-hint{color:var(--attention)}.progress-stats .move-hint b{font-weight:600}.toolbar-right button.move-confirm{background:var(--attention-soft);border-color:var(--attention-line);color:var(--attention);font-weight:600}.toolbar-right button.move-confirm:hover{background:var(--attention);border-color:var(--attention);color:#fff}.toolbar-right button.move-confirm:disabled,.toolbar-right button.move-confirm:disabled:hover{background:var(--attention-soft);border-color:var(--attention-line);color:var(--attention)}.planning-board{flex:1;align-items:stretch;gap:32px;min-height:0;display:flex}.eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:.65rem;font-weight:600}.sidebar{gap:var(--sp-3);flex-direction:column;flex-shrink:0;width:400px;display:flex;container:projects/inline-size}.sidebar-header{justify-content:space-between;align-items:center;margin-bottom:-4px;padding:0 4px;display:flex}.sidebar-header .eyebrow,.grid-header .eyebrow{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome)}.header-links{font-size:var(--fs-row)}.header-links a{color:var(--accent);text-decoration:none}.header-links a:hover{text-decoration:underline}.header-links .sep{color:var(--ink-faint);margin:0 4px}.project-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-4) var(--sp-4) 10px;gap:var(--sp-2);flex-direction:column;transition:transform .18s cubic-bezier(.2,.8,.2,1),opacity .15s,border-color .15s;display:flex}.project-card.dragging{opacity:.4;border-style:dashed;border-color:var(--accent-fill)}.project-card-head{align-items:center;gap:12px;display:flex}.proj-progress-track{background:var(--line-strong);border-radius:999px;flex-shrink:0;width:40px;height:4px;overflow:hidden}.proj-progress-fill{background:var(--good);border-radius:999px;height:100%;transition:width .4s cubic-bezier(.2,.8,.2,1)}.proj-title{color:var(--ink);margin:0;font-size:1rem}.proj-title-wrap{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.proj-deadline{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}input[type=text].proj-title-input{color:var(--ink-typed);font-size:var(--fs-title);line-height:normal;font-weight:var(--w-title);text-overflow:ellipsis;background:0 0;border:none;border-radius:0;outline:none;width:100%;margin:0;padding:0}.proj-title-input::placeholder{color:var(--ink-faint);font-weight:500}input[type=text].task-name-input{color:var(--ink-typed);font-size:var(--fs-row);line-height:normal;font-weight:var(--w-row);background:0 0;border:none;border-radius:0;outline:none;flex:1;min-width:0;padding:0}.task-name-input::placeholder{color:var(--ink-faint)}input[type=text].task-name-input.done{color:var(--ink-faint);text-decoration:line-through}.task-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.assign-date{cursor:pointer;color:var(--attention);font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;background:0 0;border:none;align-items:center;gap:5px;padding:0;display:flex;position:relative}.task-item:hover .assign-date,.task-actions:focus-within .assign-date{font-weight:600}.assign-date,.task-del{opacity:0;transition:opacity .15s,color .15s,transform .18s cubic-bezier(.2,.8,.2,1),margin-left .18s cubic-bezier(.2,.8,.2,1)}.task-item:hover .assign-date,.task-item:hover .task-del,.task-actions:focus-within .assign-date,.task-actions:focus-within .task-del{opacity:1}.assign-date{transform-origin:100%}.assign-date:hover{margin-left:var(--grow,0px);transform:scale(1.14)}.task-item:not(.has-day) .assign-date{opacity:1}.task-item:not(.has-day) .assign-date .arrow,.task-item:not(.has-day) .assign-date .cal-box{opacity:0;transition:opacity .15s}.task-item:not(.has-day):hover .assign-date .arrow,.task-item:not(.has-day):hover .assign-date .cal-box,.task-item:not(.has-day) .assign-date:focus-within .arrow,.task-item:not(.has-day) .assign-date:focus-within .cal-box{opacity:1}.assign-date .cal-box{border:1px solid var(--attention);border-radius:var(--r-chip);place-items:center;width:22px;height:22px;display:grid}.assign-date .hidden-date{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.task-del{color:var(--ink-faint);background:0 0;border:none;place-items:center;padding:2px;display:grid}.task-del:hover{color:var(--ink);background:0 0}.proj-meta{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-size:.65rem}.add-task-btn{align-items:center;gap:var(--sp-2);width:100%;color:var(--ink-faint);text-align:left;font-size:var(--fs-body);padding:5px var(--sp-2) 5px 22px;border-radius:var(--r);background:0 0;border:none;line-height:1.5;transition:background-color .12s,color .12s;display:flex}.add-task-plus{width:var(--check-size);height:var(--check-size);flex-shrink:0;padding:1.5px}.add-task-btn:hover{color:var(--ink-soft);background:var(--hover-neutral)}.dash-box{border:1px solid #0000;position:relative}.dash-svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.dash-rect{x:.5px;y:.5px;fill:none;stroke-width:1px;stroke-dasharray:6 6;width:calc(100% - 1px);height:calc(100% - 1px);stroke:var(--dash);transition:stroke .15s}.add-project-dashed{color:var(--ink-faint);padding:var(--sp-3);border-radius:var(--r);font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);letter-spacing:.6px;text-transform:uppercase;background:0 0;transition:color .15s}.add-project-dashed:hover{color:var(--ink-soft)}.add-project-dashed:hover .dash-rect{stroke:var(--ink-faint)}.week-grid-container{flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}.grid-header{justify-content:space-between;align-items:center;margin-bottom:-8px;padding:0 4px;display:flex}.day-tabs{gap:var(--sp-2);flex-shrink:0;grid-template-columns:repeat(7,1fr);display:grid}.day-tab{align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-2) var(--sp-2);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);color:var(--ink-soft);flex-direction:column;transition:background .15s,border-color .15s,color .15s;display:flex}.day-tab:hover{border-color:var(--line-strong);color:var(--ink)}.day-tab.selected{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.day-tab-label{font-family:var(--mono);font-size:var(--fs-row);font-weight:var(--w-mono);align-items:center;gap:3px;line-height:1;display:flex}.day-tab-flag{flex-shrink:0}.day-tab-track{background:var(--line-strong);border-radius:999px;width:60%;height:3px;overflow:hidden}.day-tab.selected .day-tab-track{background:#00000040}.day-tab-fill{background:var(--good);border-radius:999px;height:100%;transition:width .4s cubic-bezier(.2,.8,.2,1);display:block}.day-panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);flex:none;overflow:hidden}.day-panel-head{padding:var(--sp-4) var(--sp-4) var(--sp-3)}.day-panel-name{font-family:var(--mono);font-size:var(--fs-label);font-weight:var(--w-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.day-panel-count{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-body);color:var(--ink-soft);margin-top:2px}.day-panel-due{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-body);color:var(--accent);overflow-wrap:anywhere;margin-top:2px}.day-panel-empty{padding:0 var(--sp-4) var(--sp-4);color:var(--ink-faint);font-size:var(--fs-body)}.day-panel-list{padding-bottom:var(--sp-2)}.day-panel-list .day-card{transition:background-color .12s, var(--travel);background:0 0;border:none;border-radius:0}.day-panel-list .day-card+.day-card{border-top:1px solid var(--line)}.day-panel-list .day-card.overdue{background:0 0}.day-panel-list .day-card.missed{border-style:none}.day-panel-list .day-card.missed+.day-card{border-top-style:solid}.day-panel-list .day-card:hover{background:var(--hover-neutral)}.day-panel-list .day-card-line{padding:var(--sp-3) var(--sp-4)}.day-panel-list .day-card-line+.day-card-line{margin:0 var(--sp-4)}.header-links .focus-day{color:var(--ink);font-weight:600}.week-empty{align-items:center;gap:var(--sp-1);padding:var(--sp-6) var(--sp-4);border-radius:var(--r-card);text-align:center;flex-direction:column;display:flex}.week-empty b{color:var(--ink);font-size:var(--fs-row);font-weight:600}.week-empty span{color:var(--ink-faint);font-size:var(--fs-body)}.day-grid{gap:var(--sp-2);flex-shrink:0;grid-template-columns:repeat(4,minmax(0,1fr));align-content:start;display:grid}.day-block{min-height:180px;padding:var(--sp-3);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);cursor:pointer;flex-direction:column;gap:6px;transition:border-color .15s;display:flex}.day-block:hover{border-color:var(--line-strong)}.day-block.today{border-color:var(--accent-fill)}.day-block-head{justify-content:space-between;align-items:center;gap:var(--sp-2);min-height:18px;display:flex}.day-block-name{font-family:var(--mono);font-size:var(--fs-label);font-weight:var(--w-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.day-block.today .day-block-name{color:var(--accent)}.day-block-count{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);background:var(--good-soft);color:var(--good-ink);border-radius:999px;padding:2px 8px}.day-block-count.full{background:var(--good);color:var(--paper)}.day-block-due{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--accent);overflow-wrap:anywhere}.day-block-list{flex-direction:column;gap:6px;display:flex}.day-block-pops{flex-direction:column;gap:2px;list-style:none;display:flex}.day-block-pops+.day-block-list{border-top:1px solid var(--line);padding-top:6px}.day-pop{min-width:0;font-size:var(--fs-body);color:var(--ink-typed);align-items:flex-start;gap:8px;padding:3px 2px;line-height:1.35;display:flex}.day-pop .task-check{margin-top:0}.day-pop-text{overflow-wrap:anywhere;flex:1;min-width:0;padding-top:1px}.day-pop.done .day-pop-text{color:var(--ink-faint);text-decoration:line-through}.day-pop-daily{color:var(--ink-faint);flex-shrink:0;padding-top:3px;display:grid}.day-pop-daily svg{width:12px;height:12px}.day-grid .day-card-line{gap:10px;padding:12px}.day-grid .day-card-line+.day-card-line{margin:0 12px}.day-grid .day-card-line .task-check,.day-grid .day-card-line .missed-mark{margin-top:0}.day-grid .day-card-project{line-height:1.3}.day-grid .day-card-task{font-size:var(--fs-body);margin-top:3px;line-height:1.35}.day-grid .day-card-foot{flex-wrap:wrap;row-gap:4px;min-width:0;margin-top:6px}.day-grid .day-card.missed .day-card-foot{margin-top:5px}.day-grid .day-card-overdue{border:1px solid var(--warn-dim-line);border-radius:var(--r-chip);background:var(--warn-dim-fill);height:18px;color:var(--warn-dim);align-items:center;padding:0 8px;display:inline-flex}.day-grid .day-card-move{border:1px solid var(--warn-dim-line);border-radius:var(--r-chip);width:18px;height:18px;color:var(--warn-dim)}.day-grid .day-card-move svg{width:12px;height:12px}.day-grid .day-card-move:hover{background:var(--warn-dim-fill)}.day-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);cursor:default;transition:var(--travel);flex-direction:column;display:flex}.day-card.overdue{background:var(--overdue-fill);border-color:var(--overdue-line)}.day-card-line{align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);display:flex}.day-card-line .task-check{margin-top:1px}.day-card-line+.day-card-line{margin:0 var(--sp-3);border-top:1px solid var(--line);padding-left:0;padding-right:0}.day-card-body{flex:1;min-width:0}.day-card-head{justify-content:space-between;align-items:center;gap:var(--sp-2);min-height:13px;display:flex}.day-card-project{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.day-card-task{font-size:var(--fs-row);color:var(--ink-typed);overflow-wrap:anywhere;margin-top:1px}.day-card-sub{font-size:var(--fs-body);color:var(--ink-soft);overflow-wrap:anywhere;margin-top:1px}.day-card-line.done .day-card-sub,.day-card.done .day-card-task{color:var(--ink-faint);text-decoration:line-through}.day-card.missed{border-style:dashed;border-color:var(--line-strong);position:relative}.day-grid .day-card.missed{border-color:#0000}.day-grid .day-card.missed .dash-rect{stroke:var(--line-strong)}.day-card.missed .day-card-task{color:var(--ink-soft)}.day-card.missed .missed-mark{margin-top:1px}.day-card.missed .day-card-foot{padding-right:28px}.day-card-missed{border:1px solid var(--line-strong);border-radius:var(--r-chip);padding:1px 6px}.day-card-clear{right:var(--sp-2);bottom:var(--sp-2);width:22px;height:22px;color:var(--ink-faint);opacity:0;background:0 0;border:none;border-radius:999px;place-items:center;padding:0;transition:opacity .15s,color .15s,background-color .15s;display:grid;position:absolute}.day-card.missed:hover .day-card-clear,.day-card-clear:focus-visible{opacity:1}.day-card-clear:hover{color:var(--warn);background:var(--warn-soft)}.day-card-foot{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-top:2px;display:flex}.day-card-overdue,.day-card-missed{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.08em;text-transform:uppercase}.day-card-overdue{color:var(--warn)}.day-card-missed{color:var(--ink-faint)}.day-card-move{border-radius:var(--r-chip);width:24px;height:24px;color:var(--warn);background:0 0;border:none;flex-shrink:0;place-items:center;padding:0;transition:background .15s;display:grid}.day-card-move:hover{background:var(--warn-soft)}.day-card-move.labelled{width:auto;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);letter-spacing:.06em;text-transform:uppercase;grid-auto-flow:column;gap:4px;padding:2px 8px}.proj-tasks{flex-direction:column;gap:2px;display:flex}.task-grip{width:14px;height:var(--check-size);color:var(--ink-faint);cursor:grab;opacity:0;flex-shrink:0;place-items:center;transition:opacity .15s;display:grid}.task-grip:active{cursor:grabbing}.task-item:hover .task-grip,.task-item.dragging .task-grip{opacity:1}.task-item{align-items:center;gap:var(--sp-2);padding:5px var(--sp-2) 5px 0;border-radius:var(--r);transition:background-color .12s, var(--travel), opacity .15s ease;display:flex}.task-item:hover{background:var(--hover-neutral)}.task-item.dragging{opacity:.4;background:var(--hover-accent);outline:1px dashed var(--accent-fill);outline-offset:-1px}.task-check{appearance:none;width:var(--check-size);height:var(--check-size);border:1.5px solid var(--line-strong);border-radius:var(--r-chip);cursor:pointer;background:0 0;flex-shrink:0;place-items:center;transition:all .15s;display:grid}.missed-mark{width:var(--check-size);height:var(--check-size);border:1px dashed var(--line-strong);border-radius:var(--r-chip);opacity:.8;flex-shrink:0}.task-check:hover{border-color:var(--ink-faint)}.task-check:checked{background:var(--good);border-color:var(--good)}.task-check:checked:after{content:"";background:var(--paper);width:12px;height:12px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") 50%/contain no-repeat}.modal-overlay{background:var(--scrim);z-index:1200;padding:calc(var(--sp-4) + env(safe-area-inset-top)) calc(var(--sp-4) + env(safe-area-inset-right)) calc(var(--sp-4) + env(safe-area-inset-bottom)) calc(var(--sp-4) + env(safe-area-inset-left));overscroll-behavior:contain;place-items:center;display:grid;position:fixed;inset:0}.modal-card{background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-card);width:100%;max-width:380px;padding:var(--sp-5);box-shadow:var(--shadow-float)}.modal-card.wide{max-width:540px}.modal-eyebrow{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:var(--sp-1)}.modal-title{color:var(--ink);font-size:var(--fs-title);font-weight:var(--w-title);margin:0 0 var(--sp-4);overflow-wrap:anywhere}.deadline-row{align-items:stretch;gap:var(--sp-2);display:flex}.deadline-input{min-width:0;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-row);letter-spacing:.04em;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-chip);color:var(--ink);padding:var(--sp-2) var(--sp-3);flex:1}.deadline-input:focus{border-color:var(--accent-fill)}.deadline-input.invalid{border-color:var(--warn)}.deadline-cal{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-chip);width:40px;color:var(--ink-soft);flex-shrink:0;place-items:center;transition:all .15s;display:grid;position:relative}.deadline-cal:hover{border-color:var(--accent-fill);color:var(--accent)}.deadline-native{opacity:0;cursor:pointer;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:0 0;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.deadline-hint{font-size:var(--fs-label);color:var(--ink-faint);margin-top:var(--sp-2);min-height:14px}.modal-actions{align-items:center;gap:var(--sp-2);margin-top:var(--sp-5);display:flex}.modal-title-dates{font-family:var(--mono);font-size:var(--fs-body);font-weight:var(--w-mono);color:var(--ink-soft);letter-spacing:.04em;margin-left:var(--sp-3)}.modal-divider{background:var(--line);height:1px;margin:var(--sp-4) 0}.modal-card.scroll{max-height:calc(100vh - var(--sp-6));max-height:calc(100dvh - var(--sp-6) - env(safe-area-inset-top) - env(safe-area-inset-bottom));overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;overflow-y:auto}.modal-card.scroll::-webkit-scrollbar{width:8px}.modal-card.scroll::-webkit-scrollbar-track{background:0 0}.modal-card.scroll::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px}.field-label{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:var(--sp-2)}.sched-deadline-row{gap:var(--sp-2);margin-bottom:var(--sp-4);display:flex}.sched-date,.sched-time{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink);font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-row);padding:var(--sp-2) var(--sp-3);min-width:0}.sched-date{flex:2}.sched-time{flex:1}.sched-date:focus,.sched-time:focus{border-color:var(--accent-fill)}:root[data-theme=dark] .sched-date::-webkit-calendar-picker-indicator{filter:invert();opacity:.7}:root[data-theme=dark] .sched-time::-webkit-calendar-picker-indicator{filter:invert();opacity:.7}.day-toggle-row{gap:var(--sp-2);margin-bottom:var(--sp-4);display:flex}.day-toggle{border:1px solid var(--line-strong);border-radius:var(--r);background:var(--bg);min-width:0;height:42px;color:var(--ink-soft);font-family:var(--mono);font-size:var(--fs-row);font-weight:var(--w-mono);flex:1;transition:all .14s}.day-toggle.wide-label{font-size:var(--fs-body)}.day-toggle:hover:not(:disabled){border-color:var(--accent-fill);color:var(--ink)}.day-toggle.selected{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.day-toggle.from:disabled{background:0 0;border-color:#0000}.day-toggle:disabled{opacity:.4;border-color:var(--line);color:var(--ink-faint);cursor:not-allowed}.sched-day{padding:var(--sp-3) 0}.sched-day+.sched-day{border-top:1px solid var(--line)}.sched-day-name{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--sp-2)}.sched-sub-list{gap:var(--sp-2);margin-bottom:var(--sp-2);flex-direction:column;display:flex}.sched-sub-row{align-items:center;gap:var(--sp-2);border-radius:var(--r-chip);transition:transform .18s cubic-bezier(.2,.8,.2,1),opacity .15s;display:flex}.sched-sub-grip{width:14px;height:var(--check-size);color:var(--ink-faint);cursor:grab;opacity:0;flex-shrink:0;place-items:center;transition:opacity .15s;display:grid}.sched-sub-grip:active{cursor:grabbing}.sched-sub-row:hover .sched-sub-grip,.sched-sub-row.dragging .sched-sub-grip{opacity:1}.sched-sub-row.dragging{opacity:.4;background:var(--hover-accent);outline:1px dashed var(--accent-fill);outline-offset:-1px}.sched-day.drop-target .sched-day-name{color:var(--attention)}.day-toggle.drop-target{border-color:var(--accent-fill);color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft)}input[type=text].sched-sub-input{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-chip);min-width:0;color:var(--ink-typed);font-size:var(--fs-body);padding:var(--sp-2) var(--sp-3);flex:1}input[type=text].sched-sub-input:focus{border-color:var(--accent-fill)}.sched-sub-input::placeholder{color:var(--ink-faint)}.sched-sub-del{color:var(--ink-faint);opacity:0;background:0 0;border:none;flex-shrink:0;place-items:center;padding:2px;transition:opacity .15s,color .15s;display:grid}.sched-sub-row:hover .sched-sub-del{opacity:1}.sched-sub-del:hover{color:var(--warn);background:0 0}.sched-add{padding:0 0 0 var(--sp-3);color:var(--accent);font-size:var(--fs-body);background:0 0;border:none;font-weight:500}.sched-add:hover{text-decoration:underline}.schedule-note{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r);background:var(--bg);color:var(--ink-typed);font:inherit;font-size:var(--fs-row);resize:vertical;display:block}.schedule-note:focus{border-color:var(--accent-fill)}.schedule-note::placeholder{color:var(--ink-faint)}.missed-check{align-items:center;gap:var(--sp-2);font-size:var(--fs-row);color:var(--ink);cursor:pointer;display:flex}.missed-check .task-check:checked{background:var(--accent-fill);border-color:var(--accent-fill)}.subtask-badge{background:var(--good-soft);height:18px;color:var(--good-ink);font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.02em;border-radius:999px;flex-shrink:0;place-items:center;padding:0 7px;display:inline-grid}.subtask-badge.full{background:var(--good);color:var(--paper)}.transfer-list-head{margin-bottom:var(--sp-2);justify-content:space-between;align-items:center;display:flex}.select-all-btn{color:var(--accent);font-weight:700;font-size:var(--fs-body);background:0 0;border:none;padding:0}.select-all-btn:hover{text-decoration:underline}.transfer-list{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;max-height:240px;margin:0;padding:0;list-style:none;overflow-y:auto}.transfer-list::-webkit-scrollbar{width:8px}.transfer-list::-webkit-scrollbar-track{background:0 0}.transfer-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px}.transfer-row{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2);border-radius:var(--r);cursor:pointer;transition:background-color .12s;display:flex}.transfer-row:hover{background:var(--hover-neutral)}.transfer-name{min-width:0;color:var(--ink-typed);font-size:var(--fs-row);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.transfer-count{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-label);color:var(--ink-faint);flex-shrink:0}.transfer-summary{font-size:var(--fs-body);margin-top:var(--sp-3);font-weight:700}.transfer-summary.ok{color:var(--good-ink)}.transfer-summary.bad{color:var(--warn)}.transfer-summary.muted{color:var(--ink-faint);font-weight:var(--w-row)}.transfer-empty{color:var(--ink-faint);font-size:var(--fs-body)}.transfer-code{width:100%;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-label);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink);padding:var(--sp-3);resize:vertical;white-space:pre;tab-size:2;line-height:1.5;overflow:auto}.transfer-code:focus{border-color:var(--accent-fill)}.transfer-code.invalid{border-color:var(--warn)}.transfer-fallback{margin-top:var(--sp-3)}.transfer-hint{font-size:var(--fs-label);color:var(--ink-faint);margin-bottom:var(--sp-1)}.link-btn{color:var(--accent);font:inherit;font-size:inherit;background:0 0;border:none;padding:0}.link-btn:hover,.link-btn.always-on{text-decoration:underline}.link-btn:disabled{color:var(--ink-faint);cursor:default;text-decoration:none}.link-btn:disabled:hover{text-decoration:none}.theme-options{gap:var(--sp-2);grid-template-columns:repeat(3,1fr);display:grid}.theme-option{align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-2);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink-soft);font-size:var(--fs-label);flex-direction:column;font-weight:500;transition:all .18s;display:flex}.theme-option:hover{border-color:var(--accent-fill);color:var(--ink)}.theme-option.selected{border-color:var(--accent-fill);background:var(--accent-soft);color:var(--accent)}.theme-option svg{width:18px;height:18px}.settings-note{font-size:var(--fs-label);color:var(--ink-faint);margin-top:var(--sp-3)}.btn-primary{background:var(--accent-fill);border:1px solid var(--accent-fill);color:var(--on-accent);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-chip);font-weight:500;transition:filter .15s}.btn-primary:hover{filter:brightness(1.08)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{border:1px solid var(--line-strong);color:var(--ink-soft);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-chip);background:0 0;transition:all .15s}.btn-ghost:hover{background:var(--hover-neutral);color:var(--ink)}.btn-strong{background:var(--ink);border:1px solid var(--ink);color:var(--paper);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-chip);font-weight:500;transition:filter .15s}.btn-strong:hover{filter:brightness(1.15)}.btn-danger{background:var(--warn);border:1px solid var(--warn);color:#fff;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-chip);font-weight:500;transition:filter .15s}.btn-danger:hover{filter:brightness(1.08)}.modal-copy{font-size:var(--fs-row);color:var(--ink-soft);margin:0;line-height:1.55}.toast-container{bottom:calc(24px + env(safe-area-inset-bottom));right:calc(24px + env(safe-area-inset-right));z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed}.toast{background:var(--paper-hover);border:1px solid var(--line-strong);color:var(--ink);border-radius:var(--r);box-shadow:var(--shadow-card);padding:12px 16px;font-size:.85rem}.toast.error{border-color:var(--warn);color:var(--warn)}.weeks-page{width:100%;max-width:max(320px, min(1100px, calc(100% - 2 * var(--weeks-inset,0px))));margin:0 auto}.weeks-head{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;display:flex}.weeks-head .eyebrow{font-family:var(--mono);font-weight:var(--w-mono)}.clear-all-btn{align-items:center;gap:var(--sp-2);background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:var(--sp-2) var(--sp-4);color:var(--warn);font-family:var(--mono);font-size:var(--fs-chrome);font-weight:var(--w-mono);letter-spacing:.08em;transition:all .15s;display:inline-flex}.clear-all-btn:hover{border-color:var(--warn);background:var(--warn-soft)}.weeks-empty{align-items:center;gap:var(--sp-1);padding:var(--sp-6) var(--sp-4);border-radius:var(--r-card);text-align:center;flex-direction:column;display:flex}.weeks-empty b{color:var(--ink);font-size:var(--fs-row);font-weight:600}.weeks-empty span{color:var(--ink-faint);font-size:var(--fs-body)}.weeks-list{gap:var(--sp-3);flex-direction:column;display:flex;container:weeks/inline-size}.wk-year{align-items:center;gap:var(--sp-4);margin:var(--sp-2) 0 var(--sp-1);font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--ink-faint);display:flex}.wk-year i{background:var(--line);flex:1;height:1px}.wk-row{align-items:center;gap:var(--sp-5);padding:var(--sp-4) var(--sp-5);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);grid-template-columns:190px 1fr 96px auto;display:grid;position:relative;overflow:hidden}.wk-row.current:before{content:"";background:var(--accent-fill);width:4px;position:absolute;top:0;bottom:0;left:0}.wk-row.future,.wk-row.group{border-color:#0000}.wk-row.future .dash-rect,.wk-row.group .dash-rect{stroke:var(--line-strong)}.wk-row.group{background:0 0}.wk-main{text-align:left;cursor:pointer;background:0 0;border:none;min-width:0;padding:0}.wk-title{font-size:var(--fs-title);font-weight:var(--w-title);color:var(--ink);white-space:nowrap}.wk-sub{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--ink-faint);margin-top:2px}.wk-row.current .wk-sub,.wk-main:hover .wk-title{color:var(--accent)}.wk-bars{gap:var(--sp-2);grid-template-columns:repeat(7,1fr);align-items:end;display:grid}.wk-day{align-items:center;gap:var(--sp-1);flex-direction:column;display:flex}.wk-bar-slot{justify-content:center;align-items:flex-end;width:100%;max-width:44px;height:48px;display:flex}.wk-bar{background:var(--good-dim);border-radius:3px 3px 0 0;width:100%;position:relative;overflow:hidden}.wk-bar.future{border:1px dashed var(--line-strong);background:0 0;border-bottom:none}.wk-bar-done{background:var(--good);position:absolute;bottom:0;left:0;right:0}.wk-bar.empty{border:1px dashed var(--line);background:0 0;border-bottom:none;width:100%;height:10px}.wk-bar.empty.past{background:var(--good-dim);border:none;border-radius:999px;height:2px}.wk-day-letter{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.06em;color:var(--ink-faint)}.wk-day-letter.today{color:var(--accent)}.wk-stat{text-align:right}.wk-stat-big{font-family:var(--mono);font-weight:var(--w-mono);color:var(--ink-faint);font-size:24px;line-height:1.1}.wk-stat-big b{color:var(--ink);font-weight:400}.wk-stat-big.good b{color:var(--good-ink)}.wk-stat-big.warn b{color:var(--warn)}.wk-stat-label{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--ink-faint);margin-top:2px}.wk-actions{align-items:center;gap:var(--sp-1);display:flex}.wk-icon{border-radius:var(--r-chip);width:32px;height:32px;color:var(--ink-faint);background:0 0;border:none;place-items:center;transition:all .15s;display:grid}.wk-icon:hover{color:var(--ink);background:var(--hover-neutral)}.wk-icon.chevron svg{transition:transform .2s cubic-bezier(.2,.8,.2,1)}.wk-row.group.open .wk-icon.chevron svg{transform:rotate(180deg)}.wk-spark{padding-bottom:18px;position:relative}.wk-spark-bars{border-bottom:1px dashed var(--line-strong);align-items:flex-end;gap:1px;height:24px;display:flex}.wk-spark-bar{border:1px dashed var(--line-strong);border-bottom:none;border-radius:2px 2px 0 0;flex:1;min-width:0}.wk-spark-bar.done{border-style:solid;border-color:var(--good);background:var(--good)}.wk-spark-bar.empty{border:none}.wk-spark-axis{height:16px;position:absolute;bottom:0;left:0;right:0}.wk-spark-axis span{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);position:absolute;top:3px}.pane-switch{display:none}.task-check:disabled{cursor:default}.task-check:disabled:hover{border-color:var(--line-strong)}.task-check:disabled:checked{border-color:var(--good)}.planning-board.ended button:disabled,.planning-board.ended input:disabled,.planning-board.ended input[readonly]{pointer-events:none}.planning-board.ended .project-card{cursor:default}.planning-board.ended .proj-hover-action,.planning-board.ended .task-grip,.planning-board.ended .task-del,.planning-board.ended .task-item.has-day .assign-date,.planning-board.ended .day-card-clear{visibility:hidden}.planning-board.ended .task-item:not(.has-day):hover .assign-date{font-weight:var(--w-mono)}.planning-board.ended .task-item:not(.has-day):hover .assign-date .arrow,.planning-board.ended .task-item:not(.has-day):hover .assign-date .cal-box{opacity:0}.planning-board.ended .task-item:hover,.planning-board.ended .day-panel-list .day-card:hover{background:0 0}@media (width<=900px){.main-content{padding:var(--sp-4);min-width:0}}@container board (width<=899px){.day-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-header{gap:var(--sp-1);flex-wrap:wrap}}@container board (width>=680px) and (width<=899px){.planning-board{gap:var(--sp-5)}.sidebar{width:clamp(300px,38%,400px)}}@container board (width<=679px){.pane-switch{gap:var(--sp-2);margin-bottom:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.pane-tab{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-2);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink-soft);font-size:var(--fs-row);font-weight:500;transition:all .15s;display:flex}.pane-tab.selected{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.pane-tab-count{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);background:var(--hover-neutral);color:var(--ink-faint);border-radius:999px;padding:2px 7px}.pane-tab.selected .pane-tab-count{color:var(--on-accent);background:#00000038}.planning-board{gap:var(--sp-5);flex-direction:column}.planning-board.pane-projects .week-grid-container,.planning-board.pane-week .sidebar{display:none}.sidebar{width:100%}}@media (hover:none){@container projects (width<=359px){.task-item{flex-wrap:wrap;row-gap:2px}input[type=text].task-name-input{flex:1 1 calc(100% - 14px - var(--check-size) - 2 * var(--sp-2))}.task-item .subtask-badge{margin-left:calc(14px + var(--check-size) + 2 * var(--sp-2))}.task-item .task-actions{margin-left:auto}}}@media (width<=600px){.main-content{padding:var(--sp-3)}.toolbar{gap:var(--sp-2);flex-wrap:wrap}.toolbar-left{flex:1}.toolbar-right{width:100%}.toolbar-right button{font-size:var(--fs-chrome);flex:1;padding:5px 10px}.week-date-box{gap:var(--sp-2);padding:4px 10px}.week-title{font-size:var(--fs-body)}.today-link{margin-left:0;padding:5px 6px}.progress-section{margin-bottom:var(--sp-5)}.progress-stats{gap:var(--sp-2)}.day-tabs{gap:4px}.day-tab{padding:var(--sp-2) 2px}.day-tab-track{width:80%}.day-panel-head{padding:var(--sp-3) var(--sp-3) var(--sp-2)}.day-panel-list .day-card-line{padding:var(--sp-3)}.day-panel-list .day-card-line+.day-card-line{margin:0 var(--sp-3)}.day-grid{grid-template-columns:1fr}.day-block{min-height:0}.week-head.frozen,.week-body.frozen,.week-head.moving,.project-card{padding:var(--sp-3)}.modal-overlay{padding:var(--sp-2)}.modal-card{padding:var(--sp-4)}.modal-card.scroll{max-height:calc(100vh - var(--sp-4));max-height:calc(100dvh - var(--sp-4))}.day-toggle-row{gap:4px}.day-toggle{font-size:var(--fs-body)}.day-toggle.wide-label{font-size:var(--fs-mini)}.sched-day{padding:var(--sp-2) 0}}@container weeks (width<=700px){.wk-row{gap:var(--sp-3) var(--sp-3);padding:var(--sp-3) var(--sp-4);grid-template-columns:1fr auto auto;grid-template-areas:"main stat actions""bars bars bars"}.wk-main{grid-area:main}.wk-bars{grid-area:bars}.wk-stat{grid-area:stat}.wk-actions{grid-area:actions}.wk-spark{grid-area:bars}.wk-stat-big{font-size:20px}.wk-bar-slot{height:36px}.wk-title{font-size:var(--fs-section);white-space:normal}}@media (width<=700px){.weeks-head{margin-bottom:var(--sp-3)}}@media (width<=400px){.toolbar-left{row-gap:var(--sp-2);flex-wrap:wrap}.today-link{flex:1 0 100%;padding-left:0}.week-date-box{padding:4px 8px}.week-dates{font-size:var(--fs-chrome);letter-spacing:.02em}}@media (width<=420px){.sched-deadline-row{flex-direction:column}.sched-date,.sched-time{flex:none;width:100%}}@media (hover:none){.assign-date,.task-del,.day-card-clear,.proj-hover-action,.sched-sub-del,.task-item:not(.has-day) .assign-date .arrow,.task-item:not(.has-day) .assign-date .cal-box{opacity:1}.assign-date:hover{margin-left:0;transform:none}.task-grip,.sched-sub-grip,.proj-grip{visibility:hidden;pointer-events:none}:root{--check-size:22px;--icon-size:16px}.task-check:checked:after{width:15px;height:15px}.icon-btn{width:40px;height:40px}.cog-btn{width:38px;height:38px}.task-del{padding:8px}.day-card-move{width:32px;height:32px}.day-tab{min-height:52px}.day-toggle{height:46px}.sched-add{padding:var(--sp-2) 0 var(--sp-2) var(--sp-3)}.side-open{width:44px;height:44px}.side-open svg{width:21px;height:21px}.side-collapse{width:40px;height:40px}.side-collapse svg{width:20px;height:20px}.nav-row{padding:10px var(--sp-2)}.row-del,.row-send,.popup-repeat,.day-card-clear,.sched-sub-del,.asg-disclose,.colour-dot,.assign-date .cal-box{position:relative}.row-del:after,.row-send:after,.popup-repeat:after,.day-card-clear:after,.sched-sub-del:after,.asg-disclose:after,.assign-date .cal-box:after{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.task-check{position:relative}.task-check:before{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.today-link{min-height:40px;padding:var(--sp-2) var(--sp-3);align-items:center;display:inline-flex}.term-select{min-height:44px}.pane-tab{min-height:48px}input[type=text].proj-title-input,input[type=text].task-name-input,input[type=text].sched-sub-input,.deadline-input,.sched-date,.sched-time,.schedule-note,.transfer-code{font-size:16px}}.page{flex-direction:column;flex:1;min-width:0;display:flex}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-5);display:flex}.page-head-left{min-width:0}.page-title{font-family:var(--display);color:var(--ink);margin-top:2px;font-size:26px;font-weight:700;line-height:1.2}.page-head-link{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink-faint);border-radius:var(--r-chip);flex-shrink:0;padding:5px 10px;text-decoration:none}.page-head-link:hover{color:var(--accent);background:var(--hover-neutral)}.month-nav{align-items:center;gap:var(--sp-1);margin-top:2px;margin-left:-8px;display:flex}.month-title{font-family:var(--display);color:var(--ink);min-width:190px;font-size:26px;font-weight:700;line-height:1.2}.month-title.year{min-width:110px;font-family:var(--mono);text-align:center;font-weight:600}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-4)}.panel-head{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.panel-head .eyebrow{flex:1}.panel-count,.panel-sub{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint)}.panel-count{background:var(--hover-neutral);border-radius:999px;padding:2px 8px}.panel-count.full{background:var(--good-soft);color:var(--good-ink)}.panel-hint{font-size:var(--fs-chrome);color:var(--ink-faint);margin-bottom:var(--sp-3);line-height:1.55}.panel-divider{background:var(--line);height:1px;margin:var(--sp-4) 0 var(--sp-3)}textarea.panel-note{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);width:100%;padding:var(--sp-3);font-size:var(--fs-body);color:var(--ink);resize:vertical;margin-top:var(--sp-2);line-height:1.6}textarea.panel-note:focus{border-color:var(--accent-fill)}textarea.panel-note::placeholder{color:var(--ink-faint)}.goal-list{list-style:none}.goal-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-1);border-radius:var(--r-chip);display:flex}.goal-row:hover{background:var(--hover-neutral)}.goal-row .task-check{flex-shrink:0}input[type=text].goal-text{min-width:0;font-size:var(--fs-row);color:var(--ink);background:0 0;border:1px solid #0000;flex:1;padding:3px 6px}input[type=text].goal-text::placeholder{color:var(--ink-faint)}input[type=text].goal-text:focus{background:0 0;border-color:#0000}.goal-row.done .goal-text{color:var(--ink-faint);text-decoration:line-through}.row-del{border-radius:var(--r-chip);width:26px;height:26px;color:var(--ink-faint);opacity:0;background:0 0;border:none;flex-shrink:0;place-items:center;display:grid}.row-del svg{width:14px;height:14px}.goal-row:hover .row-del,.bday-row:hover .row-del,.home-cd:hover .row-del,.ct-table tr:hover .row-del,.asg-main:hover .row-del,.asg-item:hover .row-del,.course-card:hover .row-del,.home-today-row:hover .row-del,.row-del:focus-visible{opacity:1}.row-del:hover{color:var(--warn);background:var(--warn-soft)}.add-row{align-items:center;gap:var(--sp-2);width:100%;margin-top:var(--sp-1);padding:var(--sp-2) var(--sp-1);border-radius:var(--r-chip);color:var(--ink-faint);font-size:var(--fs-body);text-align:left;background:0 0;border:none;display:flex}.add-row:hover{color:var(--accent);background:var(--hover-neutral)}.add-row-plus{place-items:center;width:18px;height:18px;display:grid}.add-row-plus svg{width:14px;height:14px}.popups{padding:var(--sp-1) var(--sp-3) var(--sp-3);border-top:1px solid var(--line)}.popups+.day-panel-list{border-top:1px solid var(--line)}@media (width<=600px){.popups{padding:var(--sp-1) var(--sp-2) var(--sp-2)}}.popups-label{padding:var(--sp-3) var(--sp-1) var(--sp-1);font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.popup-row{gap:var(--sp-2);transition:background-color .12s, var(--travel)}.popups input[type=text].goal-text{padding-left:0}.popup-repeat{border-radius:var(--r-chip);width:26px;height:26px;color:var(--ink-faint);opacity:0;background:0 0;border:none;flex-shrink:0;place-items:center;padding:0;display:grid}.popup-repeat svg{width:14px;height:14px}.goal-row:hover .popup-repeat,.home-today-row:hover .popup-repeat,.popup-repeat:focus-visible,.popup-repeat.on{opacity:1}.popup-repeat.on{background:var(--accent-soft);color:var(--accent)}.popup-repeat:hover:not(:disabled){color:var(--accent);background:var(--hover-neutral)}.popup-repeat.on:hover:not(:disabled){background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.popup-repeat:disabled{cursor:default}@media (hover:none){.popup-repeat{opacity:1}}.popup-add{align-items:center;gap:var(--sp-3);margin-top:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--r-chip);color:var(--ink-faint);display:flex}.popup-add:hover{background:var(--hover-neutral)}.popup-add:focus-within{color:var(--accent)}input[type=text].popup-add-input{min-width:0;font-size:var(--fs-body);color:var(--ink);background:0 0;border:1px solid #0000;flex:1;padding:5px 0}input[type=text].popup-add-input::placeholder{color:var(--ink-faint)}input[type=text].popup-add-input:focus{background:0 0;border-color:#0000}.month-body{gap:var(--sp-5);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.mcal{margin-top:var(--sp-1)}.mcal-dow,.mcal-week{grid-template-columns:14px repeat(7,minmax(0,1fr));gap:3px;display:grid}.mcal-dow{margin-bottom:var(--sp-2);grid-template-columns:repeat(7,minmax(0,1fr));padding-left:17px}.mcal-dow span{text-align:center;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);color:var(--ink-faint)}.mcal-week+.mcal-week{margin-top:3px}.mcal-week-grip{background:0 0;border:none;border-radius:3px;padding:0}.mcal-week-grip:after{content:"";background:var(--line);border-radius:999px;width:3px;height:100%;margin:0 auto;display:block}.mcal-week-grip:hover:after{background:var(--accent-fill)}.mcal-day{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--r-chip);background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:relative}.mcal-num{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-soft);line-height:1}.mcal-day.outside{background:0 0;border-color:#0000}.mcal-day.outside .mcal-num{color:var(--ink-faint);opacity:.55}.mcal-day.today{border-color:var(--accent-fill);background:var(--accent-soft)}.mcal-day.today .mcal-num{color:var(--accent);font-weight:600}.mcal-load{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);background:var(--good-soft);color:var(--good-ink);border-radius:999px;padding:1px 4px;line-height:1}.mcal-load.full{background:var(--good);color:var(--on-accent)}.month-weeks{margin-top:var(--sp-2);list-style:none}.mweek{align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-2);border-radius:var(--r-chip);text-align:left;background:0 0;border:1px solid #0000;display:flex}.mweek:hover{background:var(--hover-neutral);border-color:var(--line)}.mweek.current{border-color:var(--line-strong)}.mweek-title{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink);white-space:nowrap}.mweek.current .mweek-title{color:var(--good-ink)}.mweek-track{background:var(--line);border-radius:999px;flex:1;min-width:40px;height:5px;overflow:hidden}.mweek-fill{background:var(--good);border-radius:999px;height:100%;display:block}.mweek-stat{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);text-align:right;min-width:42px}.year-theme{margin-bottom:var(--sp-5)}input[type=text].year-theme-input{width:100%;margin-top:var(--sp-2);background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:var(--sp-3) var(--sp-4);font-family:var(--display);color:var(--ink);font-size:18px;font-weight:600}input[type=text].year-theme-input::placeholder{color:var(--ink-faint);font-weight:400}input[type=text].year-theme-input:focus{border-color:var(--accent-fill)}.year-grid{gap:var(--sp-3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.year-month{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-3);flex-direction:column;display:flex}.year-month.current{border-color:var(--accent-fill)}.year-month.past{opacity:.62}.year-month.past:hover{opacity:1}.year-month-head{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.year-month-name{font-size:var(--fs-section);color:var(--ink);flex:1;font-weight:600}.year-month.current .year-month-name{color:var(--accent)}.year-month-marks{gap:4px;display:flex}.year-chip{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);background:var(--good-soft);color:var(--good-ink);border-radius:999px;padding:1px 6px}.year-chip.plain{background:var(--hover-neutral);color:var(--ink-faint)}textarea.year-month-note{border-radius:var(--r-chip);width:100%;padding:var(--sp-2);font-size:var(--fs-chrome);color:var(--ink);resize:none;background:0 0;border:1px solid #0000;flex:1;margin-left:-8px;line-height:1.55}textarea.year-month-note::placeholder{color:var(--ink-faint)}textarea.year-month-note:hover{background:var(--bg)}textarea.year-month-note:focus{background:var(--bg);border-color:var(--accent-fill)}.year-month-open{margin-top:var(--sp-2);font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);color:var(--ink-faint);opacity:0;text-decoration:none}.year-month:hover .year-month-open,.year-month-open:focus-visible{opacity:1;color:var(--accent)}.list-tools{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.search-box{align-items:center;gap:var(--sp-2);max-width:340px;padding:0 var(--sp-3);background:var(--paper);border:1px solid var(--line);border-radius:var(--r);color:var(--ink-faint);flex:1;display:flex}.search-box:focus-within{border-color:var(--accent-fill)}.search-box svg{flex-shrink:0;width:15px;height:15px}.search-box input{min-width:0;padding:var(--sp-2) 0;font-size:var(--fs-body);color:var(--ink);background:0 0;border:none;flex:1}.list-stat{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);margin-left:auto}.list-stat b{color:var(--attention);font-weight:var(--w-mono)}.list-none{padding:var(--sp-5);text-align:center;font-size:var(--fs-body);color:var(--ink-faint)}.muted{color:var(--ink-faint)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn-primary.with-icon{align-items:center;gap:var(--sp-2);display:inline-flex}.btn-primary.with-icon svg{width:15px;height:15px}.empty-box{padding:var(--sp-6) var(--sp-4);border-radius:var(--r-card);color:var(--ink-faint);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;display:flex;position:relative}.empty-box b{font-size:var(--fs-title);color:var(--ink-soft);font-weight:600}.empty-box span{font-size:var(--fs-body)}.empty-box.static{cursor:default}.empty-box:hover b{color:var(--accent)}.empty-box:hover .dash-rect{stroke:var(--accent-fill)}.bday-list{flex-direction:column;gap:4px;list-style:none;display:flex}.bday-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--paper);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:46px minmax(0,1fr) auto auto 26px;display:grid}.bday-row:hover{border-color:var(--line-strong)}.bday-row.is-today{background:var(--attention-soft);border-color:var(--attention-line)}.bday-date{flex-direction:column;align-items:center;line-height:1.05;display:flex}.bday-day{font-family:var(--mono);font-weight:600;font-size:var(--fs-figure);color:var(--ink)}.bday-mon{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);text-transform:uppercase;color:var(--ink-faint)}.bday-row.is-today .bday-day,.bday-row.is-today .bday-mon{color:var(--attention)}.bday-main{flex-direction:column;min-width:0;display:flex}.bday-name{text-align:left;font-size:var(--fs-row);font-weight:var(--w-row);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;padding:0;overflow:hidden}.bday-name:hover{color:var(--accent);text-decoration:underline}.bday-note{font-size:var(--fs-chrome);color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bday-turning{font-size:var(--fs-chrome);color:var(--ink-faint);white-space:nowrap}.bday-turning b{font-family:var(--mono);color:var(--ink);font-weight:600}.bday-when{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink-soft);text-align:right;white-space:nowrap;min-width:90px}.bday-when.now{color:var(--attention);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.table-wrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);overflow-x:auto}.ct-table{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.ct-table th{text-align:left;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap}.ct-table th button{font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;background:0 0;border:none;align-items:center;gap:5px;padding:0;display:inline-flex}.ct-table th button:hover{color:var(--ink)}.ct-table th.sorted button{color:var(--accent)}.sort-mark{opacity:.55}.ct-table th.sorted .sort-mark{opacity:1}.ct-table td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);vertical-align:middle}.ct-table tbody tr:last-child td{border-bottom:none}.ct-table tbody tr:hover{background:var(--hover-neutral)}.ct-name button{font:inherit;font-weight:var(--w-row);color:var(--ink);text-align:left;background:0 0;border:none;padding:0}.ct-name button:hover{color:var(--accent);text-decoration:underline}.ct-note{font-size:var(--fs-chrome);color:var(--ink-faint);margin-top:1px;display:block}.ct-email a{color:var(--accent);text-decoration:none}.ct-email a:hover{text-decoration:underline}.ct-phone{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink-soft);white-space:nowrap}.ct-tag{background:var(--hover-neutral);border:1px solid var(--line);font-size:var(--fs-chrome);color:var(--ink-soft);border-radius:999px;padding:2px 9px;display:inline-block}.ct-end{text-align:right;width:44px}.field-input{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);width:100%;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-body);color:var(--ink);margin-bottom:var(--sp-3)}.field-input:focus{border-color:var(--accent-fill)}.field-input:disabled{opacity:.45;cursor:not-allowed}.field-input::placeholder{color:var(--ink-faint)}.field-row{gap:var(--sp-3);display:flex}.field-col{flex:1;min-width:0}.field-col.narrow{flex:0 0 86px}.field-check{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);font-size:var(--fs-chrome);color:var(--ink-soft);cursor:pointer;display:flex}.place-search{align-items:center;gap:var(--sp-2);padding:0 var(--sp-3);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink-faint);margin-top:var(--sp-3);display:flex}.place-search:focus-within{border-color:var(--accent-fill)}.place-search svg{flex-shrink:0;width:15px;height:15px}input[type=text].place-input{min-width:0;padding:var(--sp-2) 0;font-size:var(--fs-body);background:0 0;border:none;flex:1}.place-results{margin-top:var(--sp-2);max-height:220px;overflow-y:auto}.place-note{padding:var(--sp-3);font-size:var(--fs-chrome);color:var(--ink-faint)}.place-row{align-items:baseline;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-chip);text-align:left;background:0 0;border:none;display:flex}.place-row:hover{background:var(--hover-neutral)}.place-name{font-size:var(--fs-row);color:var(--ink)}.place-detail{font-size:var(--fs-chrome);color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.stat-cards{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;display:grid}.stat-card{padding:var(--sp-3) var(--sp-4);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);flex-direction:column;gap:2px;min-width:0;display:flex}.stat-fig{font-family:var(--mono);color:var(--ink);font-size:26px;font-weight:600;line-height:1.1}.stat-fig.good{color:var(--good-ink)}.stat-name{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);letter-spacing:.08em;color:var(--ink-faint);margin-top:3px}.stat-sub{font-size:var(--fs-chrome);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button.stat-sub.as-link{text-align:left;color:var(--accent);text-underline-offset:2px;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:underline}button.stat-sub.as-link:hover{color:var(--ink)}.chart{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-4);margin-bottom:var(--sp-4)}.chart-head{align-items:center;gap:var(--sp-2);display:flex}.chart-head .eyebrow{flex:1}.chart-note{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);white-space:nowrap}.chart-say{font-size:var(--fs-body);color:var(--ink-soft);margin-top:3px;line-height:1.55}.chart-foot{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--line);font-size:var(--fs-chrome);color:var(--ink-faint);line-height:1.55}.sbar-scroll{margin-top:var(--sp-4);padding-bottom:4px;overflow-x:auto}.sbar-row{grid-template-columns:repeat(14,minmax(0,1fr));gap:6px;min-width:544px;display:grid}.sbar{flex-direction:column;align-items:center;gap:3px;min-width:0;display:flex}.sbar-slot{align-items:flex-end;width:100%;height:108px;display:flex}.sbar-stack{background:var(--good-soft);border:none;border-radius:4px;align-items:flex-end;width:100%;padding:0;display:flex;position:relative;overflow:hidden}.sbar-stack:hover{box-shadow:inset 0 0 0 1px var(--good-dim)}.sbar-fill{background:var(--good);border-radius:4px 4px 0 0;width:100%;display:block}.sbar-ghost{border-radius:4px;width:100%;height:52%;position:relative}.sbar-pct{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-soft);min-height:13px}.sbar-when{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);color:var(--ink-faint);white-space:nowrap}.sbar.now .sbar-when{color:var(--accent)}.heat-scroll{margin-top:var(--sp-4);padding-bottom:4px;overflow-x:auto}.heat-inner{min-width:100%;display:inline-block}.heat-months{gap:3px;height:13px;margin-bottom:3px;margin-left:22px;display:flex}.heat-months>span{flex:0 0 11px;position:relative}.heat-months i{font-style:normal;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);white-space:nowrap;position:absolute;top:0;left:0}.heat-body{gap:3px;display:flex}.heat-days{flex-direction:column;flex:0 0 19px;gap:3px;display:flex}.heat-days span{height:11px;font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);color:var(--ink-faint);line-height:11px}.heat-grid{gap:3px;display:flex}.heat-col{flex-direction:column;gap:3px;display:flex}.heat-cell{background:var(--bg);border-radius:2px;flex:0 0 11px;width:11px;height:11px;display:block}.heat-cell.lv1{background:var(--heat-1)}.heat-cell.lv2{background:var(--heat-2)}.heat-cell.lv3{background:var(--heat-3)}.heat-cell.lv4{background:var(--heat-4)}.heat-cell.undone{box-shadow:inset 0 0 0 1px var(--warn-dim-line)}.heat-cell.today{box-shadow:inset 0 0 0 1px var(--accent-fill)}.heat-cell.future{box-shadow:none;background:0 0}.heat-key{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);letter-spacing:.06em;color:var(--ink-faint);align-items:center;gap:3px;display:flex}.heat-key .heat-cell:first-of-type{margin-left:4px}.heat-key .heat-cell:last-of-type{margin-right:4px}.wd-row{gap:var(--sp-2);margin-top:var(--sp-4);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.wd{flex-direction:column;align-items:center;gap:4px;min-width:0;display:flex}.wd-slot{justify-content:center;align-items:flex-end;width:100%;height:92px;display:flex}.wd-bar{background:var(--good);border-radius:4px;width:100%;max-width:72px;display:block}.wd-bar.zero{background:var(--line-strong)}.wd-ghost{border-radius:4px;width:100%;max-width:72px;height:48%;position:relative}.wd-day{font-family:var(--mono);font-weight:600;font-size:var(--fs-mini);color:var(--ink-soft)}.wd-pct{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-micro);color:var(--ink-faint)}.page.about{max-width:620px}.about-line{font-family:var(--display);color:var(--ink);margin:var(--sp-3) 0 var(--sp-5);font-size:34px;font-weight:700;line-height:1.22}.about-line span{color:var(--accent)}.about-rest p{font-size:var(--fs-row);color:var(--ink-soft);margin-bottom:var(--sp-3);line-height:1.7}.about-fine{font-size:var(--fs-body)!important;color:var(--ink-faint)!important}@media (width<=1180px){.year-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=1020px){.month-body{grid-template-columns:minmax(0,1fr)}}@media (width<=900px){.shell,.shell.rail{--side-w:280px;grid-template-columns:minmax(0,1fr)}aside.side,aside.side.collapsed{width:var(--side-w);max-width:86vw;box-shadow:var(--shadow-float);transition:transform .22s cubic-bezier(.2,.8,.2,1);position:fixed;top:0;left:0;transform:translate(-100%)}.side.drawer-open{transform:translate(0)}.side.collapsed .nav-label,.side.collapsed .side-identity,.side.collapsed .side-blurb{display:block}.side.collapsed .side-initials{display:none}.side.collapsed .side-top{padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);flex-direction:row}.side.collapsed .nav-row{padding:7px var(--sp-2);justify-content:flex-start}.side.collapsed .side-group-title{height:auto;color:var(--ink);padding:0 var(--sp-2) var(--sp-2);background:0 0;margin:0}.side.collapsed .side-group:first-child .side-group-title{display:block}.side-open{display:grid}.side.drawer-open~.side-open{display:none}.side-scrim{display:block}.main-content{grid-column:1;padding-top:64px}.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=600px){.page-head{align-items:stretch;gap:var(--sp-3);flex-direction:column}.page-head-link{align-self:flex-start;padding-left:0}.month-title{min-width:150px;font-size:21px}.page-title{font-size:22px}.about-line{font-size:26px}.list-tools{flex-wrap:wrap}.search-box{max-width:none}.year-grid{grid-template-columns:minmax(0,1fr)}.panel{padding:var(--sp-3)}.stat-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.chart{padding:var(--sp-3)}.bday-row{gap:var(--sp-1) var(--sp-3);grid-template-columns:42px minmax(0,1fr) 26px;grid-template-areas:"date main del""date when turning"}.bday-date{grid-area:date}.bday-main{grid-area:main}.bday-when{text-align:left;grid-area:when;min-width:0}.bday-turning{text-align:right;grid-area:turning}.row-del{opacity:1;grid-area:del}.ct-table th:nth-child(3),.ct-table th:nth-child(4),.ct-table td.ct-from,.ct-table td.ct-phone{display:none}.ct-table th,.ct-table td{padding:var(--sp-3)}.mcal-day{aspect-ratio:auto;min-height:36px}}@media (hover:none){.row-del,.year-month-open{opacity:1}}.wx-glyph{flex-shrink:0;width:20px;height:20px}.home-day{font-size:34px;line-height:1.1}.home-date{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-body);color:var(--ink-faint);letter-spacing:.02em;margin-top:4px}.home-week{align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);color:inherit;text-decoration:none;display:flex}.home-week:hover{border-color:var(--line-strong)}.home-week-label{font-size:var(--fs-chrome);color:var(--ink-faint);white-space:nowrap;flex-direction:column;display:flex}.home-week-label b{font-family:var(--mono);font-weight:600;font-size:var(--fs-body);color:var(--ink)}.home-week-track{background:var(--line);border-radius:999px;flex:1;min-width:60px;height:6px;overflow:hidden}.home-week-fill{background:var(--good);border-radius:999px;height:100%;display:block}.home-week-stat{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-body);color:var(--ink-soft);white-space:nowrap}.home-week-say{font-size:var(--fs-chrome);color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;max-width:260px;overflow:hidden}.home-grid{gap:var(--sp-4);grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start;display:grid}.home-col{gap:var(--sp-4);flex-direction:column;min-width:0;display:flex}.panel-link{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);white-space:nowrap;margin-left:auto;text-decoration:none}.panel-link:hover{color:var(--accent)}.panel-link.as-btn{background:0 0;border:none;padding:0}.home-empty{padding:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-body);color:var(--ink-faint);line-height:1.6}.home-empty a{color:var(--accent)}.home-today-list{list-style:none}.home-today-row{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-2) var(--sp-2);border-radius:var(--r-chip);display:flex}.home-today-row:hover{background:var(--hover-neutral)}.home-today-row+.home-today-row{margin-top:1px}.home-today-row .task-check{flex-shrink:0;margin-top:2px}.home-today-text{flex-direction:column;gap:1px;min-width:0;display:flex}.home-today-title{font-size:var(--fs-row);color:var(--ink);line-height:1.4}.home-today-from{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint)}.home-today-row.done .home-today-title{color:var(--ink-faint);text-decoration:line-through}.home-missed{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line);font-size:var(--fs-chrome);color:var(--ink-faint)}.home-today .panel-head{row-gap:var(--sp-1);flex-wrap:wrap}.home-today-text{flex:1}.home-today .popups-label{padding-left:var(--sp-2)}.home-today .panel-head+.popups-label{padding-top:var(--sp-1)}.home-today .projects-label{margin-top:var(--sp-2);border-top:1px solid var(--line)}.home-today-row .popup-repeat,.home-today-row .row-del,.home-today-row .row-send{width:24px;height:24px}.plan-toggle{border:1px solid var(--line-strong);font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);letter-spacing:.04em;color:var(--ink-soft);white-space:nowrap;background:0 0;border-radius:999px;padding:3px 10px}.plan-toggle:hover{color:var(--accent);border-color:var(--accent)}.plan-toggle.on{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.home-plan{gap:var(--sp-4);flex-wrap:wrap;grid-column:1/-1;align-items:flex-start;display:flex}.home-plan>.panel{flex:340px;min-width:0}.home-today-row.movable{cursor:grab}.home-today-row.dragging{opacity:.45}.row-send{border-radius:var(--r-chip);color:var(--ink-faint);opacity:0;background:0 0;border:none;flex-shrink:0;place-items:center;padding:0;display:grid}.row-send svg{width:14px;height:14px}.home-today-row:hover .row-send,.row-send:focus-visible{opacity:1}.row-send:hover:not(:disabled){color:var(--accent);background:var(--accent-soft)}.row-send:disabled{cursor:not-allowed}.home-today-row:hover .row-send:disabled{opacity:.4}@media (hover:none){.row-send{opacity:1}.row-send:disabled{opacity:.4}}.home-tomorrow-date{color:var(--ink-faint)}.home-plan>.panel{transition:border-color .15s,background-color .15s}.home-today.drop-ready{border-color:var(--accent-fill);border-style:dashed}.home-today.drop-over{background:var(--accent-soft)}.home-wx-setup{align-items:flex-start;gap:var(--sp-3);width:100%;padding:var(--sp-3) 0 var(--sp-1);text-align:left;color:var(--ink-faint);background:0 0;border:none;display:flex}.home-wx-setup span{font-size:var(--fs-chrome);flex-direction:column;gap:2px;line-height:1.55;display:flex}.home-wx-setup b{font-size:var(--fs-row);color:var(--ink-soft);font-weight:600}.home-wx-setup:hover b{color:var(--accent)}.home-wx-setup .wx-glyph{margin-top:2px}.home-wx-now{align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0 var(--sp-3);display:flex}.home-wx-icon{color:var(--accent);display:flex}.home-wx-icon .wx-glyph{width:34px;height:34px}.home-wx-temp{font-family:var(--display);color:var(--ink);font-size:30px;font-weight:700;line-height:1}.home-wx-words{flex-direction:column;min-width:0;display:flex}.home-wx-cond{font-size:var(--fs-body);color:var(--ink-soft)}.home-wx-feels{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint)}.home-wx-range{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-body);align-items:baseline;gap:6px;margin-left:auto;display:flex}.home-wx-range b{color:var(--ink);font-weight:600}.home-wx-range i{color:var(--ink-faint);font-style:normal}.home-wx-forecast{gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--line);grid-template-columns:1fr 1fr;list-style:none;display:grid}.home-wx-forecast li{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-chip);background:var(--bg);display:flex}.home-wx-forecast .wx-glyph{width:17px;height:17px;color:var(--ink-faint)}.home-wx-day{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);text-transform:uppercase}.home-wx-fc-temp{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink);margin-left:auto}.home-wx-fc-temp i{color:var(--ink-faint);margin-left:4px;font-style:normal}.home-cd-list{list-style:none}.home-cd{align-items:baseline;gap:var(--sp-3);padding:var(--sp-2);border-radius:var(--r-chip);display:flex}.home-cd+.home-cd{margin-top:1px}.home-cd-date{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);white-space:nowrap;min-width:46px}.home-cd-name{min-width:0;font-size:var(--fs-row);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.home-cd-days{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink-soft);white-space:nowrap}.home-cd .row-del{align-self:center;margin-right:-4px}.home-cd.today{background:var(--attention-soft);box-shadow:inset 0 0 0 1px var(--attention-line)}.home-cd.today .home-cd-name,.home-cd.today .home-cd-date,.home-cd.today .home-cd-days{color:var(--attention);font-weight:600}.home-cd.past .home-cd-name,.home-cd.past .home-cd-date,.home-cd.past .home-cd-days{color:var(--ink-faint)}.cd-add{gap:var(--sp-2);margin-top:var(--sp-2);flex-direction:column;display:flex}.cd-add .field-input{margin-bottom:0}.cd-add-row{justify-content:flex-end;align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.cd-add-row .field-input{flex:132px;min-width:132px}.cd-add-btns{gap:var(--sp-2);flex:none;display:flex}.home-bday-list{list-style:none}.home-bday{align-items:baseline;gap:var(--sp-3);padding:var(--sp-2);border-radius:var(--r-chip);display:flex}.home-bday+.home-bday{margin-top:1px}.home-bday-date{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-mini);color:var(--ink-faint);white-space:nowrap;min-width:46px}.home-bday-name{font-size:var(--fs-row);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.home-bday-turning{font-size:var(--fs-chrome);color:var(--ink-faint);white-space:nowrap}.home-bday-when{font-family:var(--mono);font-weight:var(--w-mono);font-size:var(--fs-chrome);color:var(--ink-soft);white-space:nowrap;margin-left:auto}.home-bday.today{background:var(--attention-soft);box-shadow:inset 0 0 0 1px var(--attention-line)}.home-bday.today .home-bday-name,.home-bday.today .home-bday-date,.home-bday.today .home-bday-when{color:var(--attention);font-weight:600}@media (width<=1020px){.home-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.home-week{gap:var(--sp-2) var(--sp-3);flex-wrap:wrap}.home-week-track{flex-basis:100%;order:3}.home-week-say{order:4;max-width:none}}@media (width<=600px){.home-day{font-size:26px}.home-wx-forecast{grid-template-columns:1fr}}.page-head-actions{align-items:center;gap:var(--sp-2);flex-wrap:wrap;justify-content:flex-end;display:flex}.btn-ghost.with-icon{align-items:center;gap:6px;display:inline-flex}.btn-ghost.with-icon svg{width:15px;height:15px}.term-row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-top:6px;display:flex}.term-select{font-family:var(--mono);font-size:var(--fs-chrome);font-weight:var(--w-mono);color:var(--ink);background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-chip);min-height:34px;padding:5px 8px}.term-select:focus-visible{border-color:var(--accent-fill)}.term-stat{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);color:var(--ink-faint);letter-spacing:.04em;text-transform:uppercase}.term-stat b{color:var(--attention);font-weight:var(--w-mono)}.course-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));list-style:none;display:grid}.course-card{padding:var(--sp-3) var(--sp-3) var(--sp-3) calc(var(--sp-3) + 5px);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;gap:6px;min-width:0;display:flex;position:relative;overflow:hidden}.course-card:hover{border-color:var(--line-strong)}.course-bar{background:var(--course-c);width:4px;position:absolute;top:0;bottom:0;left:0}.course-open{text-align:left;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;width:100%;min-width:0;padding:0;display:flex}.course-code{font-family:var(--mono);font-size:var(--fs-row);font-weight:var(--w-mono);color:var(--course-c);letter-spacing:.02em}.course-open:hover .course-code{text-decoration:underline}.course-name{font-size:var(--fs-body);font-weight:var(--w-row);color:var(--ink);line-height:1.3}.course-meta{gap:4px var(--sp-2);font-size:var(--fs-mini);color:var(--ink-faint);flex-wrap:wrap;display:flex}.course-foot{align-items:center;gap:var(--sp-2);border-top:1px solid var(--line);margin-top:2px;padding-top:6px;display:flex}.course-tally{font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);color:var(--ink-faint);letter-spacing:.05em;text-transform:uppercase;flex:1}.course-chip{font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);letter-spacing:.04em;border-radius:var(--r-chip);color:var(--course-c);background:var(--course-soft);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:15ch;padding:3px 7px;overflow:hidden}.c1{--course-c:var(--course-1);--course-soft:var(--course-1-soft)}.c2{--course-c:var(--course-2);--course-soft:var(--course-2-soft)}.c3{--course-c:var(--course-3);--course-soft:var(--course-3-soft)}.c4{--course-c:var(--course-4);--course-soft:var(--course-4-soft)}.c5{--course-c:var(--course-5);--course-soft:var(--course-5-soft)}.c6{--course-c:var(--course-6);--course-soft:var(--course-6-soft)}.colour-picker{gap:var(--sp-2);margin-bottom:var(--sp-3);display:flex}.colour-dot{background:var(--course-c);outline-offset:2px;opacity:.55;border:2px solid #0000;border-radius:999px;width:30px;height:30px;transition:all .15s}.colour-dot:hover{opacity:.85}.colour-dot.selected{opacity:1;border-color:var(--paper);box-shadow:0 0 0 2px var(--course-c)}.asg-list-outer{flex-direction:column;gap:4px;list-style:none;display:flex;container:asg/inline-size}.asg{border:1px solid var(--line);border-radius:var(--r);background:var(--bg);overflow:hidden}.asg:hover{border-color:var(--line-strong)}.asg.overdue{background:var(--overdue-fill);border-color:var(--overdue-line)}.asg.submitted{opacity:.6}.asg.submitted:hover{opacity:1}.asg-main{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) var(--sp-2) 6px;min-width:0;display:flex}.asg-disclose{border-radius:var(--r-chip);width:28px;height:28px;color:var(--ink-faint);background:0 0;border:none;flex-shrink:0;place-items:center;padding:0;display:grid}.asg-disclose:hover{background:var(--hover-neutral);color:var(--ink)}.asg-caret{border-bottom:1.6px solid;border-right:1.6px solid;width:6px;height:6px;transition:transform .15s;transform:rotate(-45deg)}.asg-caret.open{transform:rotate(45deg)}.asg-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.asg-title{text-align:left;font-size:var(--fs-row);font-weight:var(--w-row);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;padding:0;line-height:1.3;overflow:hidden}.asg-title:hover{color:var(--accent);text-decoration:underline}.asg.submitted .asg-title{color:var(--ink-faint);text-decoration:line-through}.asg-meta{font-size:var(--fs-mini);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.asg-due{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);color:var(--ink-soft);letter-spacing:.03em;text-transform:uppercase;flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.asg-time{font-size:var(--fs-micro);color:var(--ink-faint)}.asg-when{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);color:var(--ink-faint);text-align:right;flex-shrink:0;min-width:9ch}.asg-when.soon{color:var(--attention)}.asg-when.late{color:var(--warn)}.asg-when.done{color:var(--good-ink)}.asg-count{font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);background:var(--hover-neutral);color:var(--ink-faint);border-radius:999px;flex-shrink:0;padding:2px 7px}.asg-count.full{background:var(--good-soft);color:var(--good-ink)}.asg.submitted .asg-count{display:none}.asg-body{padding:var(--sp-3) var(--sp-3) var(--sp-3) 40px;border-top:1px solid var(--line);gap:var(--sp-2);flex-direction:column;display:flex}.asg-list{flex-direction:column;gap:2px;list-style:none;display:flex}.asg-item{align-items:center;gap:var(--sp-2);min-width:0;padding:3px 0;display:flex}.asg-item-text{font-size:var(--fs-body);color:var(--ink);overflow-wrap:anywhere;flex:1;min-width:0}.asg-item.done .asg-item-text{color:var(--ink-faint);text-decoration:line-through}.asg-add{gap:var(--sp-2);display:flex}.asg-add .field-input{flex:1;min-width:0;margin-bottom:0}.asg-submit{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--good-ink);border-radius:var(--r-chip);border:1px solid var(--good-dim);background:0 0;align-self:flex-start;padding:6px 10px}.asg-submit:hover{background:var(--good-soft)}.asg-submit.undo{color:var(--ink-faint);border-color:var(--line-strong)}.asg-submit.undo:hover{background:var(--hover-neutral);color:var(--ink)}.field-col.narrow.wide-code{flex:0 0 116px}.home-dl-list{flex-direction:column;gap:1px;list-style:none;display:flex;container:deadlines/inline-size}.home-dl{align-items:center;gap:var(--sp-2);padding:7px var(--sp-2);margin:0 calc(var(--sp-2) * -1);border-radius:var(--r-chip);min-width:0;text-decoration:none;display:flex}.home-dl:hover{background:var(--hover-neutral)}.home-dl:hover .home-dl-title{color:var(--accent);text-decoration:underline}.home-dl.late .home-dl-title{color:var(--warn)}.home-dl-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.home-dl-title{font-size:var(--fs-body);font-weight:var(--w-row);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-dl-from{font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);color:var(--ink-faint);letter-spacing:.03em;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-dl-ctx{font-family:var(--sans);text-transform:none;letter-spacing:0;font-style:normal}.home-dl-ctx:before{content:" · "}.home-dl-when{font-family:var(--mono);font-size:var(--fs-mini);font-weight:var(--w-mono);color:var(--ink-soft);text-align:right;flex-shrink:0;min-width:8ch}.home-dl-when.soon{color:var(--attention)}.home-dl-when.late{color:var(--warn)}.home-dl-count{font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);background:var(--hover-neutral);color:var(--ink-faint);border-radius:999px;flex-shrink:0;padding:2px 6px}.home-dl:hover .home-dl-count{background:var(--paper)}.home-dl-count.full{background:var(--good-soft);color:var(--good-ink)}.home-dl-more{margin-top:var(--sp-2);font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);color:var(--ink-faint);letter-spacing:.04em;text-transform:uppercase}.course-chip.plan{color:var(--ink-faint);background:var(--hover-neutral);border:1px solid var(--line)}.panel-say{font-family:var(--mono);font-size:var(--fs-micro);font-weight:var(--w-mono);color:var(--attention);letter-spacing:.04em;text-transform:uppercase}a,button,input,select,textarea,[role=button],[role=tab],label{-webkit-tap-highlight-color:transparent}a,button,[role=button],[role=tab],.task-check,.day-toggle,.nav-row{touch-action:manipulation}.task-grip,.sched-sub-grip,.mcal-week-grip,.asg-caret{-webkit-user-select:none;user-select:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.side,.side.collapsed{transition:none!important}.assign-date:hover{transform:none}}@container asg (width<=519px){.asg-main{column-gap:var(--sp-2);grid-template-columns:28px auto minmax(0,1fr) auto auto;grid-template-areas:"disc text text text del"".chip due when count";align-items:center;row-gap:6px;display:grid}.asg-disclose{grid-area:disc}.asg-main>.course-chip{grid-area:chip}.asg-text{grid-area:text}.asg-due{white-space:nowrap;grid-area:due;justify-self:start;align-items:flex-start}.asg-when{grid-area:when;min-width:0}.asg-count{grid-area:count}.asg-main>.row-del{grid-area:del}.asg-body{padding-left:var(--sp-3)}}@container asg (width<=399px){.asg-main{grid-template-columns:28px auto minmax(0,1fr) auto;grid-template-areas:"disc text text del"".chip due when"}.asg-count{display:none}}@container deadlines (width<=339px){.home-dl-count{display:none}}@media (width<=600px){.page-head-actions{justify-content:stretch;width:100%}.page-head-actions>*{flex:1;justify-content:center}}
