:root{--paper: #fbfbfa;--surface: #ffffff;--sunken: #f4f5f4;--ink: #1b1f24;--ink-2: #4a5158;--muted: #767d84;--faint: #9aa1a7;--rule: #e6e8e7;--rule-strong: #cdd1d2;--rule-heavy: #aab0b3;--accent: #2e5a78;--accent-soft: #e8eef2;--today: #b5433a;--today-soft: #fbeceb;--danger: #a33a30;--caution: #8a6526;--caution-soft: #f5eddd;--ev-blue: #3d6ea8;--ev-teal: #2e8378;--ev-plum: #7a4a86;--ev-amber: #a8702a;--ev-rose: #a8466a;--ev-moss: #5a7336;--font: "Archivo", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "PingFang TC", "Microsoft JhengHei", sans-serif;--text-xs: .6875rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.25rem;--text-xl: 1.75rem;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--r-sm: 3px;--r-md: 6px;--dur: .12s;--ease: cubic-bezier(.4, 0, .2, 1)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #15181c;--surface: #1b1f24;--sunken: #101316;--ink: #e8eaec;--ink-2: #b4bbc1;--muted: #8b9298;--faint: #656c73;--rule: #282d33;--rule-strong: #3a4149;--rule-heavy: #4e565e;--accent: #7fb0d4;--accent-soft: #1e2b35;--today: #e07a6f;--today-soft: #2e1e1d;--danger: #e07a6f;--caution: #cfa059;--caution-soft: #2b2416;--ev-blue: #6f9ed4;--ev-teal: #4fb0a2;--ev-plum: #b184bd;--ev-amber: #d09a4e;--ev-rose: #d4788f;--ev-moss: #8fa860}}[data-theme=dark]{--paper: #15181c;--surface: #1b1f24;--sunken: #101316;--ink: #e8eaec;--ink-2: #b4bbc1;--muted: #8b9298;--faint: #656c73;--rule: #282d33;--rule-strong: #3a4149;--rule-heavy: #4e565e;--accent: #7fb0d4;--accent-soft: #1e2b35;--today: #e07a6f;--today-soft: #2e1e1d;--danger: #e07a6f;--caution: #cfa059;--caution-soft: #2b2416;--ev-blue: #6f9ed4;--ev-teal: #4fb0a2;--ev-plum: #b184bd;--ev-amber: #d09a4e;--ev-rose: #d4788f;--ev-moss: #8fa860}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:var(--text-base);line-height:1.55;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}h1,h2,h3,p,figure{margin:0}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:var(--text-sm);font-weight:500;color:var(--ink-2);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.btn:hover{background:var(--sunken);color:var(--ink)}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent);color:#fff;filter:brightness(1.1)}.btn--danger{color:var(--danger)}.btn[disabled]{opacity:.45;cursor:not-allowed}.field{display:block;width:100%;padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--rule-strong);border-radius:var(--r-md);transition:border-color var(--dur) var(--ease)}.field:focus{outline:none;border-color:var(--accent)}.label{display:block;font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--sp-1)}.notice{padding:var(--sp-3) var(--sp-4);border-left:3px solid var(--danger);background:var(--sunken);color:var(--ink-2);font-size:var(--text-sm)}.notice--caution{border-left-color:var(--caution);background:var(--caution-soft);color:var(--ink-2)}.app{display:flex;flex-direction:column;height:100%;min-height:0}.topbar{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--rule-strong);background:var(--paper);flex-wrap:wrap}.topbar__title{font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em;min-width:6.5em}.topbar__nav{display:flex;align-items:center;gap:var(--sp-1)}.topbar__spacer{flex:1}.topbar__who{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--muted)}.step{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--r-md);color:var(--ink-2);transition:background var(--dur) var(--ease)}.step:hover{background:var(--sunken)}.month{flex:1;display:flex;flex-direction:column;min-height:0}.month__head,.month__body{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month__head{border-bottom:1px solid var(--rule-strong)}.month__dow{padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs);font-weight:500;color:var(--muted);text-align:left}.month__dow--sun{color:var(--today)}.month__body{flex:1;min-height:0;gap:1px;background:var(--rule);border-bottom:1px solid var(--rule);grid-auto-rows:minmax(96px,1fr)}.day{position:relative;display:flex;flex-direction:column;gap:2px;padding:var(--sp-1) var(--sp-1) var(--sp-2);background:var(--surface);text-align:left;min-width:0;transition:background var(--dur) var(--ease)}.day:hover{background:var(--sunken)}.day--outside{background:var(--paper)}.day--outside .day__num{color:var(--faint)}.day__num{align-self:flex-start;padding:2px var(--sp-1) 1px;font-size:var(--text-sm);font-weight:500;color:var(--ink-2);line-height:1.2}.day--today .day__num{color:var(--today);font-weight:600;border-bottom:2px solid var(--today)}.day__month{font-size:var(--text-xs);color:var(--faint);margin-left:2px}.day__more{font-size:var(--text-xs);color:var(--muted);padding-left:calc(3px + var(--sp-2))}.event{display:flex;align-items:baseline;gap:var(--sp-1);padding:1px var(--sp-1) 1px var(--sp-2);border-left:3px solid var(--ev-color, var(--ev-blue));border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:var(--text-xs);line-height:1.45;color:var(--ink);text-align:left;width:100%;min-width:0;transition:background var(--dur) var(--ease)}.event:hover{background:var(--sunken)}.event__time{color:var(--muted);flex-shrink:0;font-size:var(--text-xs)}.event__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.event--allday{border-left-width:0;padding-left:var(--sp-2);background:color-mix(in srgb,var(--ev-color, var(--ev-blue)) 16%,transparent);border-radius:var(--r-sm)}.event--cancelled .event__title{text-decoration:line-through;color:var(--muted)}.empty{position:absolute;inset:auto 0 var(--sp-6) 0;text-align:center;color:var(--muted);font-size:var(--text-sm);pointer-events:none}.sheet__scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--ink) 28%,transparent);display:grid;place-items:center;padding:var(--sp-4);z-index:10}.sheet{width:min(440px,100%);max-height:90vh;overflow:auto;background:var(--surface);border:1px solid var(--rule-strong);border-radius:var(--r-md);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-4)}.sheet__title{font-size:var(--text-md);font-weight:600}.sheet__row{display:flex;gap:var(--sp-3)}.sheet__row>*{flex:1;min-width:0}.sheet__actions{display:flex;align-items:center;gap:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--rule)}.swatches{display:flex;gap:var(--sp-2);flex-wrap:wrap}.swatch{width:22px;height:22px;border-radius:var(--r-sm);background:var(--ev-color);border:2px solid transparent;transition:border-color var(--dur) var(--ease)}.swatch[aria-pressed=true]{border-color:var(--ink)}.signin{min-height:100%;display:grid;grid-template-columns:minmax(0,1fr);align-content:center;justify-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-4)}.signin__card{width:min(360px,100%);display:flex;flex-direction:column;gap:var(--sp-4);text-align:center}.signin__mark{font-size:var(--text-xl);font-weight:600;letter-spacing:-.02em}.signin__sub{color:var(--muted);font-size:var(--text-sm);max-width:34ch;margin:0 auto}.signin__preview{width:min(560px,100%);border:1px solid var(--rule-strong);border-radius:var(--r-md);overflow:hidden;opacity:.75;pointer-events:none;-webkit-user-select:none;user-select:none}.signin__preview .month__body{grid-auto-rows:46px}.gsi{display:flex;justify-content:center;min-height:44px}.signin__jovana{display:block;width:min(260px,100%);margin:0 auto;min-height:44px;padding:0 var(--sp-4);border:1px solid var(--rule-strong);border-radius:var(--r-sm);background:var(--surface-raised, transparent);color:inherit;font:inherit;font-weight:600;cursor:pointer}.signin__jovana:hover{border-color:var(--accent, var(--rule-strong))}.signin__sub--quiet{font-size:var(--text-xs, var(--text-sm));opacity:.8}.signin__notice{color:var(--ink-2)}@media (max-width: 640px){.topbar{gap:var(--sp-2)}.topbar__who{display:none}.month__body{grid-auto-rows:minmax(74px,1fr)}.event__time{display:none}}.week{--gutter: 52px;flex:1;display:flex;flex-direction:column;min-height:0}.week__head,.week__allday,.week__body{display:grid}.week__head{border-bottom:1px solid var(--rule-strong)}.week__dow{display:flex;align-items:baseline;gap:var(--sp-1);padding:var(--sp-2) var(--sp-2);border-left:1px solid var(--rule)}.week__dow-name{font-size:var(--text-xs);color:var(--muted)}.week__dow-name--sun{color:var(--today)}.week__dow-num{font-size:var(--text-md);font-weight:500}.week__dow--today .week__dow-num{color:var(--today);font-weight:600;border-bottom:2px solid var(--today)}.week__allday{border-bottom:1px solid var(--rule-strong);min-height:30px}.week__allday-cell{border-left:1px solid var(--rule);padding:2px;display:flex;flex-direction:column;gap:2px;min-width:0}.week__gutter-label{font-size:var(--text-xs);color:var(--faint);padding:var(--sp-1) var(--sp-2);text-align:right}.week__scroll{flex:1;overflow-y:auto;min-height:0}.week__body,.week__gutter{position:relative}.week__hour{position:absolute;right:var(--sp-2);transform:translateY(-50%);font-size:var(--text-xs);color:var(--faint)}.week__col{position:relative;border-left:1px solid var(--rule);min-width:0;touch-action:none}.week__hourline{position:absolute;left:0;right:0;border-top:1px solid var(--rule);pointer-events:none}.week__now{position:absolute;left:0;right:0;border-top:2px solid var(--today);pointer-events:none;z-index:3}.week__now:before{content:"";position:absolute;left:-3px;top:-4px;width:6px;height:6px;border-radius:50%;background:var(--today)}.slot{position:absolute;overflow:hidden;padding:1px var(--sp-1) 1px 5px;border-left:3px solid var(--ev-color, var(--ev-blue));border-radius:var(--r-sm);background:color-mix(in srgb,var(--ev-color, var(--ev-blue)) 14%,var(--surface));font-size:var(--text-xs);line-height:1.35;cursor:grab;display:flex;flex-direction:column;box-shadow:0 0 0 1px var(--surface);z-index:1}.slot--dragging{cursor:grabbing;z-index:4;opacity:.92}.slot--ghost{background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-left-color:var(--accent);pointer-events:none}.slot--cancelled .slot__title{text-decoration:line-through;color:var(--muted)}.slot--drop{background:color-mix(in srgb,var(--accent) 10%,var(--surface));outline:1px dashed var(--accent);outline-offset:-1px}.slot--settled{background:var(--sunken);border-left-color:var(--rule-heavy)}.slot--settled .slot__title{text-decoration:line-through;color:var(--muted)}.slot--open-top{border-top-left-radius:0;border-top-right-radius:0}.slot--open-bottom{border-bottom-left-radius:0;border-bottom-right-radius:0}.slot__time{color:var(--muted);font-size:var(--text-xs)}.slot__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.slot__handle{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}.slot__handle:after{content:"";position:absolute;left:50%;bottom:2px;width:18px;height:2px;border-radius:1px;transform:translate(-50%);background:transparent;transition:background var(--dur) var(--ease)}.slot:hover .slot__handle:after{background:var(--ev-color, var(--ev-blue))}.views{display:flex;border:1px solid var(--rule-strong);border-radius:var(--r-md);overflow:hidden}.views__btn{padding:var(--sp-1) var(--sp-3);font-size:var(--text-sm);color:var(--muted);border-left:1px solid var(--rule-strong);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.views__btn:first-child{border-left:none}.views__btn:hover{background:var(--sunken)}.views__btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:500}.scope{display:flex;flex-direction:column;gap:var(--sp-2)}.scope__option{padding:var(--sp-3);border:1px solid var(--rule-strong);border-radius:var(--r-md);text-align:left;transition:border-color var(--dur) var(--ease)}.scope__option:hover{border-color:var(--accent)}.scope__label{display:block;font-weight:500}.scope__hint{display:block;font-size:var(--text-sm);color:var(--muted)}@media (max-width: 640px){.week{--gutter: 40px}.week__dow{flex-direction:column;gap:0;align-items:center}}.banner{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--rule-strong);background:var(--accent-soft);color:var(--ink-2);font-size:var(--text-sm)}.banner__close{margin-left:auto;color:var(--muted);font-size:var(--text-md);line-height:1;padding:0 var(--sp-1)}.banner__close:hover{color:var(--ink)}a.btn{text-decoration:none}.recur{display:flex;flex-direction:column;gap:var(--sp-3)}.recur__row{display:flex;align-items:center;gap:var(--sp-2)}.recur__row>.field{flex:1;min-width:0}.recur__lead{font-size:var(--text-sm);color:var(--muted);flex-shrink:0}.recur__num{flex:0 0 72px}.recur__days{display:flex;gap:var(--sp-1)}.recur__day{flex:1;padding:var(--sp-2) 0;border:1px solid var(--rule-strong);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--ink-2);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.recur__day:hover{border-color:var(--accent)}.recur__day[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}.recur__summary{padding:var(--sp-2) var(--sp-3);background:var(--sunken);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--ink-2)}.sheet__scrim--top{align-items:start;padding-top:12vh}.palette{width:min(520px,100%);background:var(--surface);border:1px solid var(--rule-strong);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column}.palette__input{width:100%;padding:var(--sp-4);border:none;background:transparent;font-size:var(--text-md)}.palette__input:focus{outline:none}.palette__list{list-style:none;margin:0;padding:0;max-height:50vh;overflow-y:auto;border-top:1px solid var(--rule)}.palette__hit{display:flex;flex-direction:column;gap:1px;width:100%;padding:var(--sp-2) var(--sp-4);text-align:left}.palette__hit[aria-selected=true]{background:var(--accent-soft)}.palette__title{font-weight:500}.palette__meta{font-size:var(--text-sm);color:var(--muted)}.palette__none{padding:var(--sp-4);color:var(--muted);font-size:var(--text-sm)}.palette__group{padding:var(--sp-2) var(--sp-4) 2px;color:var(--faint);font-size:var(--text-xs);letter-spacing:.04em}.palette__group+.palette__group,li+.palette__group{border-top:1px solid var(--rule);margin-top:var(--sp-1);padding-top:var(--sp-2)}.sync{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs);color:var(--muted);white-space:nowrap}.sync__dot{width:6px;height:6px;border-radius:50%;background:var(--faint)}.sync--syncing .sync__dot{background:var(--accent)}.sync--offline{color:var(--today)}.sync--offline .sync__dot{background:var(--today)}.planner{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 260px;min-height:0}.week-pane{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 240px;min-height:0}.rail{display:flex;flex-direction:column;border-left:1px solid var(--rule-strong);padding:var(--sp-3) var(--sp-2) var(--sp-4);overflow-y:auto}.rail__head{padding:0 var(--sp-2) var(--sp-2);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-2)}.rail__title{font-size:var(--text-xs);font-weight:500;color:var(--muted)}.rail__hint{margin-top:2px;font-size:var(--text-xs);color:var(--faint)}.rail__group{padding:var(--sp-3) var(--sp-2) var(--sp-1);font-size:var(--text-xs);font-weight:500;color:var(--faint)}.planner__columns{display:grid;grid-template-columns:repeat(var(--columns),minmax(168px,1fr));gap:1px;background:var(--rule);min-height:0;overflow-x:auto}.planner--today .planner__columns{grid-template-columns:minmax(0,560px);justify-content:center;background:none;padding:var(--sp-5) var(--sp-4);overflow-y:auto}.plan-col{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-3) var(--sp-2) var(--sp-4);background:var(--surface);min-width:0;overflow-y:auto;transition:background var(--dur) var(--ease)}.planner--today .plan-col{background:none}.plan-col--over{background:var(--accent-soft)}.plan-col__head{display:flex;align-items:baseline;gap:var(--sp-2);padding:0 var(--sp-2) var(--sp-2);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-2)}.plan-col__dow{font-size:var(--text-xs);color:var(--muted)}.plan-col__dow--sun{color:var(--today)}.plan-col__num{font-size:var(--text-md);font-weight:500}.plan-col__month{font-size:var(--text-xs);color:var(--faint)}.plan-col--today .plan-col__num{color:var(--today);font-weight:600;border-bottom:2px solid var(--today)}.plan-col__group{margin:var(--sp-2) var(--sp-2) 0;font-size:var(--text-xs);font-weight:500;color:var(--ink-2)}.plan-col__group--quiet{color:var(--faint);font-weight:400}.tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;min-height:var(--sp-4)}.tasks--settled{opacity:.65}.tasks__empty{padding:var(--sp-2);font-size:var(--text-sm);color:var(--faint)}.task{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);transition:background var(--dur) var(--ease)}.task:hover{background:var(--sunken)}.task[draggable=true]{cursor:grab}.task__check{width:16px;height:16px;margin-top:3px;border:1.5px solid var(--rule-heavy);border-radius:var(--r-sm);display:grid;place-items:center;font-size:10px;line-height:1;color:transparent;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.task__check:hover{border-color:var(--accent)}.task__check[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:#fff}.task__check--small{width:13px;height:13px;font-size:9px}.task__body{display:flex;flex-direction:column;gap:1px;text-align:left;min-width:0}.task__title{font-size:var(--text-sm);line-height:1.4;word-break:break-word}.task--done .task__title,.task--dropped .task__title{text-decoration:line-through;color:var(--muted)}.task__meta{display:flex;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--text-xs);color:var(--muted)}.task__pri{color:var(--ink-2)}.task__pri--3,.task__due--late{color:var(--today);font-weight:500}.task__due--soon{color:var(--accent)}.task__slip,.task__blocked{color:var(--faint)}.task__repeat{color:var(--faint);font-size:var(--text-xs);line-height:1}.sheet__hint{font-size:var(--text-xs);color:var(--muted)}.task__count{font-size:var(--text-xs);color:var(--muted);padding:2px var(--sp-1);border-radius:var(--r-sm)}.task__count:hover{background:var(--rule)}.task__children{grid-column:2 / -1;list-style:none;margin:var(--sp-1) 0 0;padding:0;display:flex;flex-direction:column;gap:2px}.task__children li{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs)}.quick-add{margin-top:auto;padding-top:var(--sp-2)}.quick-add__input{width:100%;padding:var(--sp-2);border:none;border-top:1px solid var(--rule);background:transparent;font-size:var(--text-sm)}.quick-add__input:focus{outline:none;border-top-color:var(--accent)}.quick-add__input::placeholder{color:var(--faint)}.planner__rail{display:flex;flex-direction:column;border-left:1px solid var(--rule-strong);padding:var(--sp-3) var(--sp-2) var(--sp-4);overflow-y:auto}.planner__rail-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:0 var(--sp-2) var(--sp-2);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-2)}.planner__rail-title{font-size:var(--text-xs);font-weight:500;color:var(--muted)}.ring{display:inline-flex;align-items:center;gap:var(--sp-1)}.ring--stacked{flex-direction:column;gap:2px}.ring__track,.ring__fill{fill:none}.ring__track{stroke:var(--rule-strong)}.ring__fill{stroke:var(--accent);transition:stroke-dashoffset var(--dur) var(--ease)}.ring__label{font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums}.ring--complete .ring__label,.task__streak{color:var(--ink-2)}.field-pair{display:flex;gap:var(--sp-1)}.field-pair>:first-child{flex:0 0 auto;width:auto}.field-pair>:last-child{flex:1;min-width:0}.plan-month{display:flex;flex-direction:column;min-width:0;min-height:0}.plan-month__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) 56px}.plan-month__head{border-bottom:1px solid var(--rule-strong)}.plan-month__tally-head{text-align:center}.plan-month__body{flex:1;min-height:0;gap:1px;background:var(--rule);border-bottom:1px solid var(--rule);grid-auto-rows:minmax(96px,1fr);overflow-y:auto}.plan-month__tally{display:grid;place-items:center;background:var(--paper)}.plan-day{cursor:pointer}.plan-day--over{background:var(--accent-soft)}.plan-day__task{display:block;padding:0 var(--sp-1);font-size:var(--text-xs);line-height:1.5;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-day__task[draggable=true]{cursor:grab}.plan-day__mark{display:inline-block;width:7px;height:7px;margin-right:var(--sp-1);border:1px solid var(--rule-heavy);border-radius:1px;vertical-align:1px}.plan-day__task--settled{color:var(--muted);text-decoration:line-through}.plan-day__task--settled .plan-day__mark{background:var(--accent);border-color:var(--accent)}.plan-day__task--slipped{color:var(--muted)}.plan-day__carried{padding:0 var(--sp-1);font-size:var(--text-xs);color:var(--ink-2)}.plan-month__goals{border-radius:var(--r-sm);min-height:var(--sp-6);transition:background var(--dur) var(--ease)}.plan-month__goals--over{background:var(--accent-soft)}.plan-month__summary{margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-2) 0;border-top:1px solid var(--rule);font-size:var(--text-xs);color:var(--muted)}@media (max-width: 860px){.planner,.week-pane{grid-template-columns:minmax(0,1fr)}.rail,.planner__rail{border-left:none;border-top:1px solid var(--rule-strong)}.planner__columns{grid-template-columns:repeat(var(--columns),minmax(200px,1fr))}}.tt__scroll{flex:1;min-height:0;overflow:auto}.tt__bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--rule)}.tt__term{flex:1;font-size:var(--text-sm);color:var(--muted)}.periods{list-style:none;margin:0 0 var(--sp-2);padding:0;display:flex;flex-direction:column;gap:var(--sp-2);max-height:46vh;overflow:auto}.periods__row{display:flex;align-items:center;gap:var(--sp-2)}.sheet--periods{width:min(540px,100%)}.periods__name{flex:1;min-width:6em}.periods__time{flex:0 0 auto;width:9.5em}.periods__dash{color:var(--muted)}.periods__remove{flex:0 0 auto}@media (max-width: 560px){.periods__row{flex-wrap:wrap}.periods__name{flex-basis:100%}}.tt{width:100%;border-collapse:collapse;table-layout:fixed}.tt__corner,.tt__dow{position:sticky;top:0;z-index:2;background:var(--surface);border-bottom:1px solid var(--rule-strong);padding:var(--sp-2) var(--sp-1);font-size:var(--text-xs);font-weight:500;color:var(--muted)}.tt__corner{width:74px;left:0;z-index:3;border-right:1px solid var(--rule-strong)}.tt__dow--sun{color:var(--today)}.tt__dow--today{color:var(--today);box-shadow:inset 0 -2px 0 var(--today)}.tt__period{position:sticky;left:0;z-index:1;width:74px;background:var(--surface);border-right:1px solid var(--rule-strong);border-bottom:1px solid var(--rule);padding:var(--sp-2) var(--sp-1);text-align:right;vertical-align:top;font-weight:400}.tt__period-name{display:block;font-size:var(--text-xs);color:var(--ink-2)}.tt__period-time{display:block;font-size:var(--text-xs);color:var(--faint);font-variant-numeric:tabular-nums}.tt__cell{min-width:96px;border-bottom:1px solid var(--rule);border-right:1px solid var(--rule);padding:0;vertical-align:top}.tt__cell--today{background:color-mix(in srgb,var(--today) 4%,transparent)}.tt__class,.tt__empty{display:block;width:100%;min-height:46px;text-align:left;background:none;border:none;font:inherit;cursor:pointer;padding:var(--sp-1) var(--sp-2)}.tt__class{border-left:3px solid var(--ev-color, var(--ev-blue));padding-left:5px}.tt__class-name{display:block;font-size:var(--text-sm);line-height:1.3;color:var(--ink);overflow-wrap:anywhere}.tt__class-room,.tt__class-teacher{display:block;font-size:var(--text-xs);color:var(--muted);overflow-wrap:anywhere}.tt__empty{color:transparent}.tt__empty:hover,.tt__empty:focus-visible{color:var(--faint);background:var(--sunken)}.tt__plus{font-size:var(--text-md)}.tt-new{margin:var(--sp-6) auto;max-width:420px;display:flex;flex-direction:column;gap:var(--sp-3);padding:0 var(--sp-4)}.tt-new__title{font-size:var(--text-lg)}.tt-new__sub{font-size:var(--text-sm);color:var(--muted);line-height:1.6}.sheet__where{margin-left:var(--sp-2);font-size:var(--text-xs);font-weight:400;color:var(--muted)}.sheet--wide{max-width:520px}.members{display:flex;flex-direction:column;border-top:1px solid var(--rule)}.member{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--rule)}.member__dot{width:10px;height:10px;flex:none;border-radius:50%;background:var(--ev-color)}.member__who{display:flex;flex-direction:column;min-width:0;flex:1}.member__name{font-size:var(--text-sm);color:var(--ink);overflow-wrap:anywhere}.member__you{margin-left:var(--sp-1);font-size:var(--text-xs);color:var(--muted)}.member__email{font-size:var(--text-xs);color:var(--faint);overflow-wrap:anywhere}.member__role{font-size:var(--text-xs);color:var(--muted)}.member__remove{background:none;border:none;font:inherit;font-size:var(--text-xs);color:var(--muted);cursor:pointer;padding:var(--sp-1)}.member__remove:hover:not(:disabled){color:var(--danger)}.member__mine{padding-top:var(--sp-3)}.field--inline{width:auto;min-width:88px;font-size:var(--text-xs);padding:2px var(--sp-1)}.invite{border-top:1px solid var(--rule-strong);padding-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.invite__title{font-size:var(--text-xs);font-weight:500;color:var(--muted)}.invite__row{display:flex;align-items:center;gap:var(--sp-2)}.invite__hint{font-size:var(--text-xs);color:var(--faint)}.invite__fresh{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2);background:var(--sunken);border-radius:var(--r-sm)}.invite__fresh-note{font-size:var(--text-xs);color:var(--ink-2)}.invite__list{display:flex;flex-direction:column}.invite__item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-1) 0;font-size:var(--text-xs);color:var(--muted);border-top:1px solid var(--rule)}.invite-screen{max-width:380px;margin:var(--sp-6) auto var(--sp-5);padding:0 var(--sp-4);display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center}.invite-screen__lead{font-size:var(--text-sm);color:var(--muted)}.invite-screen__name{font-size:var(--text-lg);color:var(--ink);overflow-wrap:anywhere}.invite-screen__role,.invite-screen__signin{font-size:var(--text-xs);color:var(--faint)}.thread{border-top:1px solid var(--rule-strong);padding-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.thread__title{font-size:var(--text-xs);font-weight:500;color:var(--muted)}.thread__list{display:flex;flex-direction:column;gap:var(--sp-2);max-height:180px;overflow-y:auto}.thread__item{display:flex;align-items:baseline;gap:var(--sp-2);font-size:var(--text-sm);line-height:1.5}.thread__who{flex:none;font-size:var(--text-xs);color:var(--muted)}.thread__body{flex:1;color:var(--ink);overflow-wrap:anywhere}.thread__withdraw{flex:none;background:none;border:none;font:inherit;font-size:var(--text-xs);color:var(--faint);cursor:pointer;padding:0 var(--sp-1)}.thread__withdraw:hover{color:var(--danger)}.thread__compose{display:flex;gap:var(--sp-2);align-items:center}.thread__compose .field{flex:1}.history{border-top:1px solid var(--rule-strong);padding-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.history__title{font-size:var(--text-xs);font-weight:500;color:var(--muted)}.history__list{display:flex;flex-direction:column;gap:var(--sp-1)}.history--feed .history__list{max-height:240px;overflow-y:auto}.history__item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:var(--sp-2);font-size:var(--text-sm);line-height:1.5}.history__who{font-size:var(--text-xs);color:var(--muted)}.history__what{color:var(--ink-2);overflow-wrap:anywhere}.history__when{font-size:var(--text-xs);color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}.history__open{background:none;border:none;padding:0;font:inherit;text-align:left;cursor:pointer}.history__open:hover{color:var(--accent)}.history__more{align-self:flex-start;background:none;border:none;padding:0;font:inherit;font-size:var(--text-xs);color:var(--accent);cursor:pointer}.history__more:disabled{color:var(--faint);cursor:default}.history__empty{font-size:var(--text-xs);color:var(--faint)}.field-note{margin-top:var(--sp-1);font-size:var(--text-xs);color:var(--muted)}.member__notify{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);font-size:var(--text-sm);color:var(--ink-2)}.review{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-4)}.review__head{display:flex;flex-direction:column;gap:var(--sp-1)}.review__title{font-size:var(--text-lg)}.review__sub{font-size:var(--text-sm);color:var(--muted);line-height:1.6}.review__flags{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-3);background:var(--today-soft);border-left:3px solid var(--today);border-radius:var(--r-sm)}.review__flag{font-size:var(--text-sm);color:var(--ink)}.review__flag--quiet{color:var(--muted);font-size:var(--text-xs)}.review__panes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-4);align-items:start}.review__image,.review__pdf{width:100%;border:1px solid var(--rule-strong);border-radius:var(--r-sm);background:var(--sunken)}.review__pdf{height:420px}.review__preview{border:1px solid var(--rule-strong);border-radius:var(--r-sm);overflow:hidden;max-height:420px;display:flex}.review__section{display:flex;flex-direction:column;gap:var(--sp-2)}.review__section-title{font-size:var(--text-xs);font-weight:500;color:var(--muted)}.review__periods,.review__cells{display:flex;flex-direction:column;gap:var(--sp-1)}.review__period,.review__cell{display:flex;align-items:center;gap:var(--sp-2)}.review__period--gap{padding:var(--sp-1);margin:calc(var(--sp-1) * -1);border-left:3px solid var(--today);background:var(--today-soft);border-radius:var(--r-sm)}.review__dash{color:var(--faint)}.review__cell--unsure{padding:var(--sp-1);margin:calc(var(--sp-1) * -1);border-left:3px solid var(--ev-amber);background:color-mix(in srgb,var(--ev-amber) 8%,transparent);border-radius:var(--r-sm)}.review__cell--dropped{opacity:.4}.review__cell .field:first-child{flex:1;min-width:120px}.tt-new__upload{width:100%}.tt-new__or{text-align:center;font-size:var(--text-xs);color:var(--faint)}@media (max-width: 860px){.review__panes{grid-template-columns:minmax(0,1fr)}.review__cell{flex-wrap:wrap}}.palette__run{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--rule);background:var(--sunken);text-align:left;font-size:var(--text-sm);color:var(--ink-2)}.palette__run:hover:not(:disabled){background:var(--accent-soft)}.palette__run span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette__run kbd{margin-left:auto;padding:1px var(--sp-1);border:1px solid var(--rule-strong);border-radius:var(--r-sm);color:var(--muted);font-size:var(--text-xs);font-family:inherit}.palette__failed{margin:0;padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--rule);color:var(--danger);font-size:var(--text-sm)}.plan{border-top:1px solid var(--rule);padding:var(--sp-3) var(--sp-4) var(--sp-4);max-height:60vh;overflow-y:auto}.plan__op{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) 0}.plan__op+.plan__op{border-top:1px solid var(--rule)}.plan__title{font-weight:500}.plan__when{color:var(--muted);font-size:var(--text-sm)}.plan__meta{color:var(--faint);font-size:var(--text-xs)}.plan__note{margin:var(--sp-2) 0 0;color:var(--ink-2);font-size:var(--text-sm)}.plan__clash{color:var(--caution);font-size:var(--text-xs)}.plan__answer ul{list-style:none;margin:var(--sp-2) 0 0;padding:0}.plan__answer li{display:flex;justify-content:space-between;gap:var(--sp-3);padding:2px 0}.plan__go{width:100%;margin-top:var(--sp-3)}.chip{display:flex;align-items:center;gap:var(--sp-3);margin:0;padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--rule-strong);background:var(--accent-soft);color:var(--ink-2);font-size:var(--text-sm)}.chip__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip__undo{color:var(--accent);font-weight:500;text-decoration:underline}.chip__close{margin-left:auto;color:var(--muted);font-size:var(--text-md);line-height:1;padding:0 var(--sp-1)}.chip__close:hover{color:var(--ink)}.palette__bar{display:flex;align-items:center}.palette__bar .palette__input{flex:1;min-width:0}.palette__mic{flex:none;padding:var(--sp-2) var(--sp-4);color:var(--muted);font-size:var(--text-md);line-height:1}.palette__mic:hover:not(:disabled){color:var(--ink)}.palette__mic--on{color:var(--today);animation:mic-pulse 1.2s var(--ease) infinite}@keyframes mic-pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.palette__mic--on{animation:none}}.setting{border:none;margin:0;padding:0}.setting__choice{display:grid;grid-template-columns:auto 1fr;gap:2px var(--sp-3);align-items:baseline;padding:var(--sp-3);margin-top:var(--sp-2);border:1px solid var(--rule);border-radius:var(--r-md);cursor:pointer}.setting__choice--on{border-color:var(--accent);background:var(--accent-soft)}.setting__choice input{grid-row:span 2}.setting__date{font-size:var(--text-md);font-weight:500}.setting__why{grid-column:2;color:var(--muted);font-size:var(--text-sm)}.setting__note{margin:var(--sp-3) 0 0;color:var(--muted);font-size:var(--text-sm)}.setting__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.feed{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--rule)}.feed__dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}.feed__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed__state{color:var(--muted);font-size:var(--text-sm);flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed__state--bad{color:var(--danger)}.feed--new{border-bottom:none}.feed__url{flex:1 1 auto;min-width:0}.btn--small{padding:var(--sp-1) var(--sp-2);font-size:var(--text-sm)}.sheet__scrim--over{z-index:20}.sheet--narrow{width:min(380px,100%)}.btn--quiet{align-self:flex-start;padding-left:0;color:var(--accent)}.btn--quiet:hover{background:none;color:var(--accent);text-decoration:underline}.freetime__list{display:flex;flex-direction:column;gap:var(--sp-4);max-height:46vh;overflow:auto;list-style:none;padding-left:0}.freetime__day{font-size:var(--text-sm);color:var(--muted);padding-bottom:var(--sp-1);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-2)}.freetime__slot{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-2);border-left:3px solid var(--accent);text-align:left;transition:background var(--dur) var(--ease)}.freetime__slot:hover{background:var(--sunken)}.freetime__slot--partial{border-left-color:var(--caution)}.freetime__time{font-size:var(--text-base);color:var(--ink)}.freetime__who{font-size:var(--text-sm);color:var(--muted);white-space:nowrap}.freetime__slot--partial .freetime__who{color:var(--caution)}.sheet__scrim--consent{z-index:30}.consent{width:min(480px,100%);gap:var(--sp-3)}.consent:focus{outline:none}.consent__lead{color:var(--ink-2);font-size:var(--text-sm)}.consent__list{margin:0;border-top:1px solid var(--rule-strong)}.consent__item{display:grid;grid-template-columns:7.5em minmax(0,1fr);gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--rule)}.consent__item dt{font-size:var(--text-sm);font-weight:600;color:var(--ink)}.consent__item dd{margin:0;font-size:var(--text-sm);color:var(--ink-2)}.consent__note{color:var(--muted);font-size:var(--text-sm)}.consent__note a,.setting__links a,.signin__legal a{color:var(--accent)}.consent__note a{margin-left:var(--sp-1)}.consent__actions{justify-content:flex-end}@media (max-width: 480px){.consent__item{grid-template-columns:minmax(0,1fr);gap:2px}}.deletion__group .label{margin-bottom:var(--sp-2)}.deletion__list{margin:0;padding-left:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-1);color:var(--ink);font-size:var(--text-sm)}.deletion__text{margin:0;color:var(--ink);font-size:var(--text-sm)}.deletion__link{color:var(--accent);text-decoration:underline}.deletion__warning{margin:0;color:var(--danger);font-size:var(--text-sm);font-weight:600}
