:root{--bg: #f4f1ec;--card: #ffffff;--fill: #efebe4;--line: #ebe6de;--text: #1a1a1a;--muted: #8a8378;--accent: #ff5a36;--primary: #1a1a1a;--danger: #e5383b;--warn: #e8590c;--ok: #2f9e44;--radius: 20px;--tabbar: 62px;--shadow: 0 6px 18px rgba(60, 40, 20, .1);--primary-ink: #ffffff;--mix: #ffffff;--ink-mix: #000000;--tint-warm: #fff1ea;--tint-warm-ink: #9a3412;--tint-blue: #e7f5ff;--tint-blue-ink: #1864ab;--today-col: #fff4ef;--placeholder: #b3ab9f;--badge-work: #ffe8d6;--badge-work-ink: #c2410c;--ok-soft: #b2f2bb;--ok-soft-ink: #2b8a3e;--noclass: #c9e5e4;--noclass-ink: #155e5a;--closed: #e3d6cc;--closed-ink: #6b4f3a;color-scheme:light}:root[data-theme=dark]{--bg: #141210;--card: #1f1c19;--fill: #2c2824;--line: #312d29;--text: #f2ede6;--muted: #a0978b;--accent: #ff6a47;--primary: #f2ede6;--primary-ink: #141210;--danger: #ff5c5f;--warn: #ff8a3d;--ok: #51cf66;--shadow: 0 6px 18px rgba(0, 0, 0, .45);--mix: #1f1c19;--ink-mix: #ffffff;--tint-warm: #3a2620;--tint-warm-ink: #ffb59a;--tint-blue: #16293a;--tint-blue-ink: #8cc4f5;--today-col: #2a1f1a;--placeholder: #6f685f;--badge-work: #3a2a1c;--badge-work-ink: #ffb37a;--ok-soft: #1f3a25;--ok-soft-ink: #8ce99a;--noclass: #17332f;--noclass-ink: #9fd9d4;--closed: #3a2e25;--closed-ink: #dcc4ae;color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #141210;--card: #1f1c19;--fill: #2c2824;--line: #312d29;--text: #f2ede6;--muted: #a0978b;--accent: #ff6a47;--primary: #f2ede6;--primary-ink: #141210;--danger: #ff5c5f;--warn: #ff8a3d;--ok: #51cf66;--shadow: 0 6px 18px rgba(0, 0, 0, .45);--mix: #1f1c19;--ink-mix: #ffffff;--tint-warm: #3a2620;--tint-warm-ink: #ffb59a;--tint-blue: #16293a;--tint-blue-ink: #8cc4f5;--today-col: #2a1f1a;--placeholder: #6f685f;--badge-work: #3a2a1c;--badge-work-ink: #ffb37a;--ok-soft: #1f3a25;--ok-soft-ink: #8ce99a;--noclass: #17332f;--noclass-ink: #9fd9d4;--closed: #3a2e25;--closed-ink: #dcc4ae;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Arial Hebrew,Arial,sans-serif;font-size:16px;line-height:1.35;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}html,body,#root{height:100%;overflow:hidden;overscroll-behavior:none}body.no-scroll .content{overflow:hidden}button{-webkit-user-select:none;user-select:none}bdi{unicode-bidi:isolate;text-align:left}.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block;font-variant-numeric:tabular-nums}h1,h2,h3{margin:0}h1{font-size:34px;font-weight:800;letter-spacing:-.5px;line-height:1.1}h2{font-size:20px;font-weight:800}h3{font-size:17px;font-weight:700}.app{height:100%}.content{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding:calc(env(safe-area-inset-top) + 18px) max(18px,calc((100% - 760px)/2)) calc(var(--tabbar) + env(safe-area-inset-bottom) + 90px)}.app:has(input:focus,select:focus) .tabbar,.app:has(input:focus,select:focus) .timerbar{display:none}.page{display:flex;flex-direction:column;gap:18px}.page-head{margin-block:4px 0}.section{display:flex;flex-direction:column;gap:10px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:28px}.section-head h3{font-size:20px;font-weight:800}.section-note{margin:0;padding-inline:4px;font-size:13px;color:var(--muted)}.card{background:var(--card);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:12px}.card>.list{margin-block:-4px}.welcome ol{margin:0;padding-inline-start:20px;display:grid;gap:6px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row-between{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:14px}.grow{flex:1;min-width:0;display:flex;flex-direction:column}.spacer{flex:1}.center{align-self:center}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.grid2>*{min-width:0}.meta{color:var(--muted);font-size:15px;font-weight:600;margin:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.empty{color:var(--muted);margin:2px 0;font-size:15px}.warn{color:var(--warn);margin:0;font-size:14px;font-weight:600}.field-hint{color:var(--muted);font-size:13px;margin:0}.badge{font-size:12px;font-weight:700;padding:3px 9px;border-radius:99px;background:var(--fill)}.badge.work{background:var(--badge-work);color:var(--badge-work-ink)}.dot{display:inline-block;width:12px;height:12px;border-radius:50%;flex:none}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--fill);color:var(--text);border-radius:14px;padding:11px 16px;font:inherit;font-size:15px;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap;transition:transform .1s,opacity .15s}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.35;cursor:default}.btn.small{padding:6px 12px;font-size:14px;border-radius:99px}.btn.primary{background:var(--primary);color:var(--primary-ink)}.btn.big{width:100%;padding:17px;font-size:16px;border-radius:18px}.btn.ghost{background:transparent;color:var(--accent);padding-inline:8px}.btn.danger{background:var(--danger);color:#fff}.btn.danger.ghost{background:transparent;color:var(--danger)}.btn.watch{background:var(--fill);color:var(--text)}.back-today{align-self:flex-start;margin-top:-10px}.icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--card);color:var(--text);box-shadow:var(--shadow);width:40px;height:40px;border-radius:50%;font-size:26px;line-height:1;cursor:pointer;flex:none;display:inline-flex;align-items:center;justify-content:center;padding:0 0 3px}.icon-btn:active{transform:scale(.94)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:700;color:var(--muted)}input,select{font:inherit;font-size:16px;color:var(--text);background:var(--bg);border:0;border-radius:12px;padding:11px 12px;width:100%;min-width:0;min-height:46px}select{-moz-appearance:none;appearance:none;-webkit-appearance:none}input[type=date],input[type=time]{-webkit-appearance:none;-moz-appearance:none;appearance:none}input::placeholder{color:var(--placeholder)}input:focus,select:focus{outline:2px solid var(--text);outline-offset:0}input:disabled{opacity:.4}.check-row{display:flex;flex-direction:row-reverse;justify-content:space-between;gap:12px;align-items:center;font-size:16px}.check-row input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:none;cursor:pointer;width:51px;height:31px;min-height:0;padding:0;border-radius:99px;background:var(--fill);position:relative;transition:background .2s}.check-row input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0003;transition:transform .2s}.check-row input[type=checkbox]:checked{background:var(--accent)}.check-row input[type=checkbox]:checked:after{transform:translate(20px)}.check-row input[type=checkbox]:focus{outline:none}.segmented{display:flex;background:var(--fill);border-radius:14px;padding:3px;gap:3px;flex-wrap:wrap}.segmented button{flex:1;border:0;background:transparent;color:var(--muted);font:inherit;font-size:14px;font-weight:700;padding:8px;border-radius:11px;cursor:pointer;white-space:nowrap}.segmented button.on{background:var(--card);color:var(--text);box-shadow:0 2px 6px #00000014}.sem-progress{background:var(--card);border-radius:var(--radius);padding:12px 16px;display:flex;flex-direction:column;gap:8px;font-size:14px}.sem-progress.before{color:var(--muted);font-weight:600}.sem-top{display:flex;justify-content:space-between;align-items:baseline}.sem-top b{font-size:15px;font-weight:800}.sem-top span{color:var(--muted);font-weight:600}.sem-bar{height:8px;border-radius:99px;background:var(--fill);overflow:hidden}.sem-bar span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#ff8a5c,var(--accent))}.dayoff-icon{font-size:20px;flex:none}.field-hint.block{display:block;font-weight:400}.ok-note{margin:0;color:var(--ok);font-size:14px;font-weight:600}.dayoff-note{margin:0;background:var(--tint-blue);color:var(--tint-blue-ink);border-radius:14px;padding:10px 12px;font-size:14px;font-weight:600}.dayoff-banner{display:flex;align-items:center;gap:10px;background:var(--tint-blue);color:var(--tint-blue-ink);border-radius:var(--radius);padding:12px 16px;font-weight:700}.wk-head.off{color:var(--tint-blue-ink)}.wk-col.off{background:repeating-linear-gradient(135deg,var(--tint-blue),var(--tint-blue) 8px,var(--card) 8px,var(--card) 16px)}.moved-note{display:flex;align-items:center;gap:10px;justify-content:space-between;background:var(--tint-warm);color:var(--tint-warm-ink);border-radius:14px;padding:10px 12px;font-size:14px;font-weight:600}.wk-ev.pinned .ev-title:before{content:"📌";font-size:8px;margin-right:1px}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--tabbar) + env(safe-area-inset-bottom) + 24px);width:max-content;max-width:calc(100% - 40px);z-index:60;background:var(--primary);color:var(--primary-ink);padding:10px 16px;border-radius:14px;font-size:14px;font-weight:600;text-align:center;box-shadow:0 10px 30px #00000040;animation:pop .3s cubic-bezier(.2,1.4,.4,1)}.tl-item.moved .tl-sub:before,.wk-ev.moved .ev-title:before{content:"↔ "}.head-actions{display:flex;gap:10px;align-items:center}.btn-icon{width:20px;height:20px}.icon-btn .btn-icon{stroke-width:2.2}.search-input{font-size:17px;min-height:50px;border-radius:16px;padding-left:16px}.search-h{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:-6px}.list-item.is-done .li-title{text-decoration:line-through;opacity:.6}.filters{display:flex;flex-direction:column;gap:10px}.chips{display:flex;gap:8px;overflow-x:auto;margin-inline:-18px;padding:2px 18px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;border:0;background:var(--card);color:var(--text);font:inherit;font-size:14px;font-weight:700;padding:8px 14px;border-radius:99px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.chip.on{background:var(--primary);color:var(--primary-ink)}.chip-n{font-size:12px;font-weight:800;background:var(--fill);color:var(--muted);border-radius:99px;padding:1px 7px}.chip.on .chip-n{background:color-mix(in srgb,var(--primary-ink) 20%,transparent);color:var(--primary-ink)}.filter-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.pill-select{width:auto;max-width:62%;min-height:36px;padding:6px 30px 6px 14px;border-radius:99px;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238a8378' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 12px center;font-size:14px;font-weight:700;text-overflow:ellipsis}.pill-select.on{background-color:var(--tint-warm);color:var(--badge-work-ink)}.date-nav{display:flex;align-items:center;gap:8px}.date-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border-bottom:0}.list.cards{gap:10px}.list.cards .list-item{background:var(--card);border-radius:18px;padding:12px 14px;border:0;cursor:pointer}.clickable{cursor:pointer}.li-title{font-weight:700}.li-sub{color:var(--muted);font-size:13px;display:block}.col-end{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.chev{color:var(--muted);font-size:22px}.sq{width:22px;height:22px;border-radius:7px;border:2.5px solid var(--c);flex:none}.pill{font-size:12px;font-weight:700;color:#fff;background:var(--c, var(--muted));padding:4px 10px;border-radius:99px;white-space:nowrap}.pill.late{background:var(--danger)}.check{width:26px;height:26px;flex:none;border-radius:8px;border:2.5px solid var(--c, var(--muted));background:transparent;color:#fff;cursor:pointer;font-size:14px;font-weight:800;padding:0}.check.on{background:var(--c, var(--ok))}.archive summary{color:var(--accent);font-weight:700;cursor:pointer;padding:6px 4px;font-size:15px}.archive[open] summary{margin-bottom:8px}.page>.archive>.list{background:var(--card);border-radius:var(--radius);padding-inline:16px}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.tl-item{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius);cursor:pointer;background:color-mix(in srgb,var(--c) 78%,#000);color:#fff;box-shadow:var(--shadow)}.tl-item:active{transform:scale(.98)}.tl-time{display:flex;flex-direction:column;min-width:50px;flex:none}.tl-start{font-weight:800;font-size:15px}.tl-end{font-size:12px;font-weight:600;opacity:.75}.tl-text{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.tl-title{font-weight:800;font-size:17px}.tl-sub{font-size:13px;opacity:.9}.tl-flag{flex:none}.tl-item.recording{background:color-mix(in srgb,var(--c) 30%,var(--mix));color:color-mix(in srgb,var(--c) 30%,var(--ink-mix));box-shadow:none;border:2px dashed color-mix(in srgb,var(--c) 80%,#000)}.tl-item.recording .tl-sub{opacity:.85}.tl-item.commit{background:repeating-linear-gradient(135deg,#3a3631,#3a3631 10px,#332f2b 10px,#332f2b 20px)}.tl-item.block{background:color-mix(in srgb,var(--c) 16%,var(--mix));color:var(--text);border-left:6px solid var(--c);box-shadow:none}.tl-item.block .tl-sub{color:var(--muted);opacity:1}.tl-item.cancelled{opacity:.4;text-decoration:line-through;box-shadow:none}.tl-item.done .tl-title:after{content:" ✓"}.tl-item.conflict{outline:3px solid var(--warn);outline-offset:2px}.swipe-li{position:relative;list-style:none;overflow:hidden;border-radius:18px;transition:max-height .25s,opacity .25s}.swipe-li.leaving{opacity:0}.swipe-bg{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:flex-end;padding-right:20px;background:var(--ok-soft);color:var(--ok-soft-ink);font-weight:800;font-size:15px;transition:background .15s,color .15s}.swipe-bg.ready{background:var(--ok);color:#fff}.swipe-fg{position:relative;touch-action:pan-y;transition:transform .22s ease-out;background:var(--card)}.rec-list .swipe-li{border-radius:0}.rec-list .swipe-li:last-child .rec-row{border-bottom:0}.rec-list .swipe-fg{background:var(--card)}.rec-groups{display:flex;flex-direction:column;gap:12px}.rec-card{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.rec-head{display:flex;align-items:center;gap:12px;padding:12px 14px;background:color-mix(in srgb,var(--c) 78%,#000);color:#fff}.rec-icon{width:34px;height:34px;border-radius:50%;background:#ffffff38;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:13px;padding-left:2px}.rec-name{font-weight:800;font-size:16px}.rec-total{font-size:12px;font-weight:600;opacity:.85}.rec-watch{background:#fff;color:color-mix(in srgb,var(--c) 70%,#000);font-weight:800;font-size:14px;padding:7px 14px;border-radius:99px;text-decoration:none;flex:none}.rec-list{list-style:none;margin:0;padding:4px 14px}.rec-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.rec-row:last-child{border-bottom:0}.rec-date{display:flex;flex-direction:column;align-items:center;min-width:46px;flex:none;background:color-mix(in srgb,var(--c) 14%,var(--mix));border-radius:10px;padding:4px 6px;font-size:11px;font-weight:700;color:var(--muted);line-height:1.2}.rec-date .ltr{font-size:14px;font-weight:800;color:var(--text)}.rec-type{font-weight:700;font-size:15px}.rec-len{font-size:12px;color:var(--muted);font-weight:600}.rec-done{width:34px;height:34px;border-radius:50%;border:2px solid color-mix(in srgb,var(--c) 80%,var(--ink-mix));background:transparent;color:color-mix(in srgb,var(--c) 80%,var(--ink-mix));font-weight:900;font-size:15px;cursor:pointer;flex:none;padding:0}.rec-done:active{background:var(--c);color:#fff}.sug-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.sug{padding:12px 0;display:flex;flex-direction:column;gap:8px;border-bottom:1px solid var(--line)}.sug:first-child{padding-top:0}.sug:last-child{border-bottom:0;padding-bottom:0}.sug-head{display:flex;align-items:center;gap:8px}.sug-title{font-weight:700}.sug-sub{font-size:13px;color:var(--muted)}.sug-row{display:flex;align-items:center;gap:6px}.sug-row input[type=time]{flex:1 1 0;max-width:128px;padding:6px 8px;min-height:38px}.sug-row .spacer{flex:0 1 8px}.sug-row .btn.ghost{padding-inline:6px}.course-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.course-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius);background:var(--card);cursor:pointer}.course-card:before{content:"";width:8px;align-self:stretch;min-height:38px;border-radius:99px;background:var(--c);flex:none}.course-card h3{font-weight:800}.cc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.cc-code{color:var(--muted);font-size:13px;font-weight:600;align-self:flex-start}.cc-next{font-size:13px;color:var(--muted);font-weight:600}.hw-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.hw-row{background:var(--bg);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:8px;border-left:5px solid var(--c, var(--accent))}.hw-row input{background:var(--card);min-height:42px}.hw-top{display:flex;gap:8px;align-items:center}.hw-top input{font-weight:700}.hw-top .hw-type{flex:none;width:auto;padding-inline:10px;font-size:14px;font-weight:700;background:color-mix(in srgb,var(--c) 78%,#000);color:#fff;min-height:42px}.hw-row.midterm,.hw-row.exam{background:color-mix(in srgb,var(--c) 14%,var(--bg))}span.hw-type{display:inline-flex;align-items:center;border-radius:12px}.repeat-btn{align-self:flex-start;padding-inline:0}.repeat-panel{border:2px dashed color-mix(in srgb,var(--c) 60%,transparent);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:12px;animation:pop .3s cubic-bezier(.2,1.4,.4,1);background:color-mix(in srgb,var(--c) 6%,var(--mix))}.hw-row.is-new{animation:pop .35s cubic-bezier(.2,1.4,.4,1)}@keyframes pop{0%{transform:scale(.85);opacity:0}}.hw-when{display:grid;grid-template-columns:auto minmax(0,1.4fr) minmax(0,1fr);gap:8px;align-items:center}.icon-btn.small{width:34px;height:34px;font-size:13px;font-weight:800;color:var(--muted);box-shadow:none;padding:0}.colors{display:flex;gap:10px;flex-wrap:wrap}.swatch{width:34px;height:34px;border-radius:12px;border:0;cursor:pointer;transition:transform .15s}.swatch.on{box-shadow:0 0 0 3px var(--card),0 0 0 5px var(--text)}.danger-zone{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:10px}.danger-zone p{margin:0;font-size:14px;color:var(--muted)}.week{display:grid;grid-template-columns:34px repeat(var(--days),minmax(0,1fr));background:var(--card);border-radius:var(--radius);overflow:hidden;margin-inline:-8px}.wk-corner{border-bottom:1px solid var(--line)}.wk-head{text-align:center;padding:8px 0 6px;font-size:12px;font-weight:800;border-bottom:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:2px}.wk-head.today{color:var(--accent)}.wk-date{font-size:10px;color:var(--muted);font-weight:600}.wk-head.today .wk-date{background:var(--accent);color:#fff;border-radius:99px;padding:0 5px}.wk-hours{position:relative}.wk-hour{position:absolute;inset-inline:0;font-size:9px;color:var(--muted);text-align:center;transform:translateY(-6px)}.wk-col{position:relative;border-left:1px solid var(--line)}.wk-col.today{background:var(--today-col)}.wk-line{position:absolute;inset-inline:0;border-top:1px solid var(--line)}.wk-now{position:absolute;inset-inline:0;border-top:2px solid var(--accent);z-index:3}.wk-ev{position:absolute;inset-inline:1px;border:0;border-radius:6px;padding:2px 3px;background:color-mix(in srgb,var(--c) 78%,#000);color:#fff;font:inherit;font-size:10px;line-height:1.15;overflow:hidden;text-align:left;cursor:pointer;display:flex;flex-direction:column;z-index:1}.wk-ev .ev-title{font-weight:800;overflow-wrap:anywhere;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.wk-ev .ev-sub{opacity:.85;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wk-ev.recording{background:color-mix(in srgb,var(--c) 38%,var(--mix));color:color-mix(in srgb,var(--c) 35%,var(--ink-mix));border:1.5px dashed color-mix(in srgb,var(--c) 80%,#000)}.wk-ev.commit{background:repeating-linear-gradient(135deg,#3a3631,#3a3631 5px,#332f2b 5px,#332f2b 10px)}.wk-ev.block{background:color-mix(in srgb,var(--c) 18%,var(--mix));color:var(--text);border-left:3px solid var(--c)}.wk-ev.done{opacity:.55}.wk-ev.cancelled{opacity:.3;text-decoration:line-through}.wk-ev.conflict{outline:2px solid var(--warn);z-index:2}.wk-ev{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.wk-ev.drag-src{opacity:.25}.wk-ev.ghost{z-index:5;pointer-events:none;opacity:.95;box-shadow:0 10px 24px #0000004d;outline:2px solid #fff;transform:scale(1.04)}.ghost-time{font-size:9px;font-weight:800;opacity:.95}.wk-col.drop{background:var(--tint-warm)}.week.is-dragging{touch-action:none}.center-text{text-align:center}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;font-weight:600;color:var(--muted);margin:0;justify-content:center}.lg:before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}.lg.recording:before{background:#cfe3b8;border:1px dashed #5c7f2e}.lg.block:before{background:var(--tint-warm);border-left:3px solid var(--accent)}.lg.commit:before{background:#3a3631}.lg.conflict:before{display:none}@media (min-width: 700px){.wk-ev{font-size:12px}.week{grid-template-columns:48px repeat(var(--days),minmax(0,1fr));margin-inline:0}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e140a59;z-index:50;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s ease-out}@keyframes fade{0%{opacity:0}}.sheet{background:var(--card);width:100%;max-width:640px;max-height:92dvh;border-radius:26px 26px 0 0;display:flex;flex-direction:column;position:relative;padding-bottom:env(safe-area-inset-bottom);animation:up .28s cubic-bezier(.2,.9,.3,1)}.sheet:before{content:"";position:absolute;top:7px;left:50%;width:40px;height:5px;margin-left:-20px;border-radius:99px;background:var(--line)}@keyframes up{0%{transform:translateY(100%)}}.sheet-head{display:flex;align-items:center;gap:10px;padding:22px 18px 8px}.sheet-head h2{flex:1;min-width:0}.sheet-head .icon-btn{width:32px;height:32px;font-size:14px;font-weight:800;color:var(--muted);background:var(--fill);box-shadow:none;padding:0}.sheet-body{overflow-y:auto;padding:4px 18px 18px;display:flex;flex-direction:column;gap:14px;-webkit-overflow-scrolling:touch}.sheet-foot{display:flex;gap:8px;padding:12px 18px;border-top:1px solid var(--line);align-items:center}.timerbar{position:fixed;inset-inline:14px;bottom:calc(var(--tabbar) + env(safe-area-inset-bottom) + 24px);max-width:740px;margin:0 auto;z-index:40;background:var(--primary);color:var(--primary-ink);border-radius:18px;padding:8px 10px;display:flex;align-items:center;gap:10px;box-shadow:0 10px 30px #00000040}.timerbar .btn{background:color-mix(in srgb,var(--primary-ink) 15%,transparent);color:var(--primary-ink)}.timerbar .btn.primary{background:var(--accent)}.timer-clock{font-weight:800;font-size:17px}.pulse{width:10px;height:10px;border-radius:50%;background:var(--accent);animation:pulse 1.2s infinite;flex:none;margin-left:4px}@keyframes pulse{50%{opacity:.3}}.tabbar{position:fixed;z-index:30;left:14px;right:14px;bottom:calc(env(safe-area-inset-bottom) + 10px);max-width:560px;margin:0 auto;display:flex;height:var(--tabbar);background:var(--card);border-radius:24px;box-shadow:0 8px 24px #3c281424}.tabbar button{flex:1;border:0;background:transparent;color:var(--text);font:inherit;font-size:11px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer}.tabbar button.on{color:var(--accent);font-weight:800}.tab-icon{width:24px;height:24px}.tabbar button.on .tab-icon{stroke-width:2.4}.wk-tag{display:flex;align-items:center;gap:1px;max-width:100%;overflow:hidden;font-size:8.5px;font-weight:700;line-height:1.2;padding:1px 3px;border-radius:6px;background:var(--tint-warm);color:var(--tint-warm-ink);white-space:nowrap}.wk-tag bdi{overflow:hidden;text-overflow:ellipsis;text-align:center}.wk-tag.chanukah,.wk-tag.holiday{background:color-mix(in srgb,#f59f00 22%,var(--mix));color:color-mix(in srgb,#e67700 75%,var(--ink-mix))}.wk-tag.exams,.wk-tag.noexam{background:var(--tint-blue);color:var(--tint-blue-ink)}.wk-tag.memorial{background:var(--fill);color:var(--muted)}.wk-tag.break,.wk-tag.semester,.wk-tag.swap{background:color-mix(in srgb,#2f9e44 20%,var(--mix));color:color-mix(in srgb,#2b8a3e 80%,var(--ink-mix))}.cal-notes{list-style:none;margin:-6px 0 0;padding:10px 14px;background:var(--card);border-radius:var(--radius);display:flex;flex-direction:column;gap:8px}.cal-note,.cal-banner{display:flex;align-items:center;gap:10px;font-size:14px}.cal-emoji{font-size:18px;flex:none;width:24px;text-align:center}.cal-day{flex:none;min-width:64px;font-size:13px;font-weight:700;color:var(--muted)}.cal-he{font-weight:800;text-align:left}.cal-en{font-size:13px;color:var(--muted);font-weight:600}.cal-banner{background:color-mix(in srgb,#f59f00 16%,var(--mix));border-radius:var(--radius);padding:12px 16px}.cal-banner.exams,.cal-banner.noexam{background:var(--tint-blue)}.cal-banner.memorial{background:var(--fill)}.cal-banner.break,.cal-banner.semester,.cal-banner.swap{background:color-mix(in srgb,#2f9e44 16%,var(--mix))}.cal-banner .cal-he{font-size:16px}.wk-head.noclass,.wk-tag.noclass,.cal-note.noclass .cal-day,.cal-banner.noclass{background:var(--noclass);color:var(--noclass-ink)}.wk-head.closed,.wk-tag.closed,.cal-note.closed .cal-day,.cal-banner.closed{background:var(--closed);color:var(--closed-ink)}.wk-col.noclass{background:color-mix(in srgb,var(--noclass) 45%,var(--card))}.wk-col.closed{background:color-mix(in srgb,var(--closed) 45%,var(--card))}.wk-head.noclass .wk-date,.wk-head.closed .wk-date{color:inherit}.cal-note.noclass .cal-day,.cal-note.closed .cal-day{border-radius:8px;padding:2px 6px;text-align:center}.cal-banner.noclass .cal-en,.cal-banner.closed .cal-en{color:inherit;opacity:.85}.wk-tag:empty{display:none}.cal-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;font-weight:600;color:var(--muted);margin:-4px 0 0}.cal-legend span:before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}.cal-legend .noclass:before{background:var(--noclass)}.cal-legend .closed:before{background:var(--closed)}.side-brand{display:none}.today-main,.today-side{display:flex;flex-direction:column;gap:18px;min-width:0}@media (min-width: 740px){.tabbar{top:calc(env(safe-area-inset-top) + 16px);bottom:calc(env(safe-area-inset-bottom) + 16px);left:calc(env(safe-area-inset-left) + 16px);right:auto;width:200px;max-width:none;height:auto;margin:0;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:4px;padding:14px 10px;border-radius:26px}.tabbar button{flex:none;flex-direction:row;justify-content:flex-start;gap:12px;height:48px;padding:0 14px;font-size:16px;border-radius:14px}.tabbar button.on{background:color-mix(in srgb,var(--accent) 12%,transparent)}.tab-icon{width:22px;height:22px}.side-brand{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:800;padding:4px 12px 16px}.side-brand img{border-radius:9px}.content{padding:calc(env(safe-area-inset-top) + 26px) 32px calc(env(safe-area-inset-bottom) + 40px) calc(env(safe-area-inset-left) + 248px)}.page{max-width:1100px}.app:has(input:focus,select:focus) .tabbar{display:flex}.timerbar{left:248px;right:32px;bottom:calc(env(safe-area-inset-bottom) + 20px);max-width:none;margin:0}.toast{bottom:calc(env(safe-area-inset-bottom) + 30px);left:calc(50% + 116px)}.week{grid-template-columns:52px repeat(var(--days),minmax(0,1fr));margin-inline:0}.wk-head{font-size:14px;padding:10px 0 8px}.wk-date{font-size:12px}.wk-hour{font-size:11px}.wk-ev{font-size:12.5px;padding:4px 6px;border-radius:8px;inset-inline:3px}.wk-ev .ev-title{-webkit-line-clamp:4}.wk-tag{font-size:11px;padding:2px 6px}.ghost-time{font-size:11px}.sheet-backdrop{align-items:center;padding:24px}.sheet{max-width:600px;max-height:86dvh;border-radius:26px;animation:popin .22s cubic-bezier(.2,.9,.3,1);padding-bottom:0}.sheet:before{display:none}.sheet-head{padding-top:18px}.chips{margin-inline:0;padding-inline:0}}@keyframes popin{0%{transform:scale(.94);opacity:0}}@media (min-width: 1000px){.today-page{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:28px;align-items:start}.today-side{position:sticky;top:0}}.sync-code{display:flex;flex-direction:column;gap:8px;background:var(--bg);border-radius:16px;padding:12px}.code-text{font-size:17px;font-weight:800;letter-spacing:.06em;word-break:break-all}.tl-item.commit.cat-meal,.wk-ev.commit.cat-meal{background:repeating-linear-gradient(135deg,#e8590c,#e8590c 10px,#dd5508 10px,#dd5508 20px);color:#fff}.tl-item.commit.cat-side,.wk-ev.commit.cat-side{background:repeating-linear-gradient(135deg,#0c8599,#0c8599 10px,#0b7a8c 10px,#0b7a8c 20px);color:#fff}.wk-ev.commit.cat-meal,.wk-ev.commit.cat-side{border-inline-start-color:transparent}.icon-btn.plus{font-size:28px;font-weight:400;color:var(--accent)}.link-meta{border:0;background:none;padding:0;font:inherit;color:var(--muted);font-size:15px;font-weight:600;cursor:pointer;text-align:left}.mp-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.mp-head h2{flex:1;text-align:center}.mp-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px 0}.mp-dow{text-align:center;font-size:12px;font-weight:700;color:var(--muted);padding-bottom:4px}.mp-week{grid-column:1 / -1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-radius:14px;padding:2px}.mp-week.on{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:inset 0 0 0 2px var(--accent)}.mp-day{border:0;background:transparent;color:var(--text);font:inherit;cursor:pointer;border-radius:10px;margin:1px;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:6px;gap:3px}.mp-day:active{transform:scale(.94)}.mp-num{font-size:16px;font-weight:700;width:28px;height:28px;line-height:28px;border-radius:50%}.mp-day.other{opacity:.35}.mp-day.today .mp-num{background:var(--accent);color:#fff}.mp-day.exam .mp-num{box-shadow:0 0 0 2px var(--danger)}.mp-day.noclass{background:var(--noclass);color:var(--noclass-ink)}.mp-day.closed{background:var(--closed);color:var(--closed-ink)}.mp-day.off{background:var(--tint-blue);color:var(--tint-blue-ink)}.mp-dots{display:flex;gap:3px;height:6px}.mp-dots i{width:6px;height:6px;border-radius:50%;display:block}.mp-lg:before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}.mp-lg.dot:before{border-radius:50%;background:var(--muted);width:7px;height:7px}.mp-lg.ring:before{border-radius:50%;box-shadow:inset 0 0 0 2px var(--danger)}.mp-lg.noclass:before{background:var(--noclass)}.mp-lg.closed:before{background:var(--closed)}@media (min-width: 740px){.mp-day{min-height:64px}}.tl-watch{flex:none;align-self:center;border:0;text-decoration:none;cursor:pointer;font:inherit;font-size:13px;font-weight:800;padding:7px 12px;border-radius:99px;background:color-mix(in srgb,var(--c) 80%,#000);color:#fff}.tl-item.block .tl-watch{background:color-mix(in srgb,var(--c) 80%,#000)}.tl-watch.add{background:transparent;color:inherit;box-shadow:inset 0 0 0 1.5px currentColor}.rec-link-box{display:flex;flex-direction:column;gap:8px;align-items:flex-start;background:var(--bg);border-radius:14px;padding:12px}.rec-link-box .field{width:100%}.swatch.custom{position:relative;overflow:hidden;display:inline-block;background:conic-gradient(#e53935,#fdd835,#43a047,#1e88e5,#8e24aa,#e53935)}.swatch.custom input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;height:100%;min-height:0;padding:0;border:0;cursor:pointer}.chips.wrap{flex-wrap:wrap;overflow:visible;margin-inline:0;padding:0}.chip.alt{background:var(--fill)}.chip.alt.on{background:var(--primary);color:var(--primary-ink)}.diff-row{gap:10px}.diff-row .segmented{flex:none;width:168px}.diff-row .segmented button{padding:6px 4px;font-size:13px}.learned{display:flex;flex-direction:column;gap:6px;background:var(--bg);border-radius:14px;padding:12px;font-size:14px}.learned span{color:var(--muted);font-weight:600}.section.collapsible{gap:10px}.section.collapsible:not(.open){gap:0}.section-toggle{flex:1;display:flex;align-items:center;gap:8px;border:0;background:var(--card);color:var(--text);font:inherit;cursor:pointer;padding:14px 16px;border-radius:var(--radius);text-align:left}.section.collapsible.open .section-toggle{background:transparent;padding:0 4px}.section-toggle h3{flex:1}.section.collapsible:not(.open) .section-toggle h3{font-size:17px}.chevron{font-size:24px;color:var(--muted);transition:transform .2s;line-height:1}.section.collapsible.open .chevron{transform:rotate(90deg)}.section-toggle:active{opacity:.7}.remove-box{display:flex;flex-direction:column;gap:6px;align-items:stretch;border-top:1px solid var(--line);padding-top:12px}.remove-box .btn{text-align:left}.link-meta{align-self:flex-start;background:var(--fill);padding:4px 12px;border-radius:99px;color:var(--text)}.link-meta:active{opacity:.7}
