@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-body: "Figtree Variable", "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;--font-head: "Bricolage Grotesque Variable", "Bricolage Grotesque", "Figtree Variable", sans-serif;--bg: #f2f4f7;--surface: #ffffff;--sunken: #f6f8fa;--ink: #121c26;--muted: #5d6b7a;--line: rgba(18, 28, 38, .1);--hour-line: rgba(18, 28, 38, .2);--half-line: rgba(18, 28, 38, .07);--band: rgba(18, 28, 38, .032);--weekend: rgba(18, 28, 38, .02);--accent: #0e7490;--accent-ink: #ffffff;--accent-soft: rgba(14, 116, 144, .1);--warn: #b45309;--shadow: 0 1px 2px rgba(18, 28, 38, .06), 0 4px 14px rgba(18, 28, 38, .05);color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0d1218;--surface: #151b22;--sunken: #1a212a;--ink: #e8eef4;--muted: #93a2b1;--line: rgba(255, 255, 255, .1);--hour-line: rgba(255, 255, 255, .22);--half-line: rgba(255, 255, 255, .07);--band: rgba(255, 255, 255, .035);--weekend: rgba(255, 255, 255, .025);--accent: #4cc2e0;--accent-ink: #06222b;--accent-soft: rgba(76, 194, 224, .14);--warn: #f0b04a;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 14px rgba(0, 0, 0, .3)}}:root[data-theme=dark]{color-scheme:dark;--bg: #0d1218;--surface: #151b22;--sunken: #1a212a;--ink: #e8eef4;--muted: #93a2b1;--line: rgba(255, 255, 255, .1);--hour-line: rgba(255, 255, 255, .22);--half-line: rgba(255, 255, 255, .07);--band: rgba(255, 255, 255, .035);--weekend: rgba(255, 255, 255, .025);--accent: #4cc2e0;--accent-ink: #06222b;--accent-soft: rgba(76, 194, 224, .14);--warn: #f0b04a;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 14px rgba(0, 0, 0, .3)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);line-height:1.45;-webkit-font-smoothing:antialiased}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}.shell{display:flex;flex-direction:column;height:100dvh;min-height:620px}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;padding:.75rem}.workspace.has-panel{grid-template-columns:340px minmax(0,1fr)}.bar{display:flex;align-items:center;gap:.75rem;height:3.5rem;flex-shrink:0;padding:0 1rem;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:.65rem;margin-right:.5rem}.brand__mark{width:1.7rem;height:1.7rem;border-radius:.45rem;background:var(--accent);display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 .38rem}.brand__mark i{display:block;height:4px;border-radius:2px;background:var(--accent-ink);opacity:.92}.brand__mark i:nth-child(1){width:100%}.brand__mark i:nth-child(2){width:62%}.brand__mark i:nth-child(3){width:82%}.brand h1,.top h1{font-family:var(--font-head);font-weight:700;font-size:1.35rem;letter-spacing:-.01em;margin:0}.bar__spacer{flex:1}.bar__saving{font-size:.8rem;color:var(--muted)}.banner{margin:0;padding:.5rem 1rem;background:var(--surface);border-bottom:1px solid var(--line)}.pill{display:inline-flex;align-items:center;gap:.5rem;height:2.25rem;padding:0 .9rem;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:999px;font-weight:500;font-size:.88rem;cursor:pointer}.pill:hover{background:var(--accent-soft)}.pill--on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.pill__count{min-width:1.35rem;height:1.35rem;padding:0 .35rem;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.75rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center}.fab,.avatar{width:2.25rem;height:2.25rem;border-radius:50%;border:0;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.fab{background:var(--accent);color:var(--accent-ink)}.fab:hover{filter:brightness(1.08)}.avatar{background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:.95rem}.avatar:hover{box-shadow:0 0 0 2px var(--accent)}.usermenu{position:relative}.usermenu__pop{position:absolute;right:0;top:calc(100% + .5rem);z-index:40;min-width:12rem;display:flex;flex-direction:column;gap:.6rem;padding:.8rem;background:var(--surface);border:1px solid var(--line);border-radius:.6rem;box-shadow:var(--shadow)}.usermenu__mail{margin:0;font-size:.82rem;color:var(--ink);overflow-wrap:anywhere}.panel{background:var(--surface);border:1px solid var(--line);border-radius:.75rem;box-shadow:var(--shadow);padding:1.1rem;display:flex;flex-direction:column;gap:1.3rem;height:100%;min-height:0;overflow-y:auto}.panel__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:-.4rem}.panel__title{font-family:var(--font-head);font-size:1.05rem;font-weight:600;margin:0}.panel .panel__head .x{font-size:1.3rem}.panel h2{font-family:var(--font-body);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 .6rem;display:flex;justify-content:space-between;align-items:baseline}.count{font-weight:500;letter-spacing:0;text-transform:none;font-size:.78rem}.add{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.add input[type=text]{grid-column:1 / -1}.add input,.add select,.subj-add input[type=text]{background:var(--surface);border:1px solid var(--line);border-radius:.45rem;padding:.5rem .65rem;min-width:0}.add input:focus,.add select:focus,.subj-add input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.add button[type=submit]{grid-column:1 / -1}.btn{background:var(--accent);color:var(--accent-ink);border:1px solid transparent;border-radius:.45rem;padding:.5rem .85rem;font-weight:600;cursor:pointer}.btn:hover{filter:brightness(1.07)}.btn:disabled{opacity:.6;cursor:default}.btn--ghost{background:var(--surface);color:var(--ink);border-color:var(--line);font-weight:500}.btn--ghost:hover{background:var(--accent-soft);filter:none}.btn--danger{color:var(--warn)}.btn--small{padding:.25rem .6rem;font-size:.8rem}.tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.task{display:grid;grid-template-columns:auto 1fr;gap:.55rem;align-items:start;background:var(--sunken);border:1px solid var(--line);border-radius:.55rem;padding:.6rem .65rem;cursor:grab;touch-action:none}.task:hover{border-color:var(--hour-line)}.task:active{cursor:grabbing}.task__grip{color:var(--muted);font-size:.85rem;letter-spacing:-.15em;-webkit-user-select:none;user-select:none;padding-top:.1rem;opacity:.7}.task__title{font-weight:600;font-size:.92rem;overflow-wrap:anywhere;line-height:1.3}.task__meta{display:flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.78rem;margin-top:.15rem}.sdot{width:.6rem;height:.6rem;border-radius:50%;flex-shrink:0}.task__notes{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--muted);font-size:.78rem;margin-top:.25rem;overflow-wrap:anywhere}.task__actions{display:flex;gap:.3rem;align-items:center;margin-top:.5rem}.task__actions .spacer{flex:1}.badge{font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--warn);border:1px solid currentColor;border-radius:999px;padding:0 .4rem;margin-left:.4rem;vertical-align:.1em}.x{background:none;border:0;cursor:pointer;color:var(--muted);font-size:1rem;line-height:1;padding:.3rem .4rem;border-radius:.3rem}.x:hover{color:var(--ink);background:var(--accent-soft)}.x.armed{color:var(--warn);font-size:.75rem;font-weight:600}.empty{color:var(--muted);font-size:.88rem;margin:0}.note{color:var(--warn);font-size:.82rem;margin:0 0 .5rem}.top .note{margin:0}.subj-list{display:flex;flex-direction:column;gap:.1rem;margin-bottom:.5rem}.subj-row{display:grid;grid-template-columns:auto 1fr auto;gap:.55rem;align-items:center}.subj-row input[type=text]{background:transparent;border:1px solid transparent;border-radius:.4rem;padding:.35rem .5rem;min-width:0;font-weight:500}.subj-row input[type=text]:hover{border-color:var(--line)}.subj-row input[type=text]:focus{border-color:var(--accent);background:var(--surface);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}input[type=color]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.5rem;height:1.5rem;padding:0;border:2px solid var(--surface);border-radius:50%;background:none;cursor:pointer;box-shadow:0 0 0 1px var(--line)}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:0;border-radius:50%}input[type=color]::-moz-color-swatch{border:0;border-radius:50%}.subj-add{display:flex;gap:.5rem;align-items:center;padding-top:.5rem;border-top:1px solid var(--line)}.subj-add input[type=text]{flex:1}.hint{color:var(--muted);font-size:.8rem;margin:0 0 .5rem}.foot{margin-top:auto;display:flex;flex-direction:column;gap:.35rem;font-size:.78rem;color:var(--muted);padding-top:.8rem;border-top:1px solid var(--line)}.foot__row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.link{background:none;border:0;color:inherit;text-decoration:underline;cursor:pointer;padding:0;font-size:inherit}.cal-wrap{background:var(--surface);border:1px solid var(--line);border-radius:.75rem;box-shadow:var(--shadow);padding:.75rem .9rem .6rem;height:100%;min-height:0;min-width:0}.cal-wrap>.fc{height:100%}.fc{--fc-border-color: var(--line);--fc-page-bg-color: var(--surface);--fc-neutral-bg-color: var(--sunken);--fc-today-bg-color: var(--accent-soft);--fc-now-indicator-color: #d9453a;--fc-button-bg-color: var(--surface);--fc-button-border-color: var(--line);--fc-button-text-color: var(--ink);--fc-button-hover-bg-color: var(--accent-soft);--fc-button-hover-border-color: var(--line);--fc-button-active-bg-color: var(--accent);--fc-button-active-border-color: var(--accent);font-family:var(--font-body);color:var(--ink)}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:.8rem}.fc .fc-toolbar-title{font-family:var(--font-head);font-size:1.1rem;font-weight:600}.fc .fc-button{font-size:.84rem;padding:.4rem .75rem;text-transform:none;font-weight:500;box-shadow:none!important}.fc .fc-button-primary:not(:disabled).fc-button-active{color:var(--accent-ink)}.fc .fc-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.fc .fc-col-header-cell{border-bottom:1px solid var(--hour-line)}.fc .fc-col-header-cell-cushion{padding:.25rem 0 .3rem;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:.05rem}.dh__w{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.dh__d{font-size:.95rem;font-weight:600;width:1.75rem;height:1.75rem;line-height:1.75rem;text-align:center;border-radius:50%;color:var(--ink)}.fc .fc-day-today .dh__d{background:var(--accent);color:var(--accent-ink)}.fc .fc-day-today .dh__w{color:var(--accent)}.fc .fc-timegrid-slot{height:1rem;line-height:1;font-size:.75rem;border-top-color:var(--hour-line)}.fc .fc-timegrid-slot-minor{border-top-style:dotted;border-top-color:var(--half-line)}.fc .fc-timegrid-slots tbody tr:nth-child(4n+1)>td.fc-timegrid-slot-lane,.fc .fc-timegrid-slots tbody tr:nth-child(4n+2)>td.fc-timegrid-slot-lane{background-color:var(--band)}.fc .fc-timegrid-slot-label{border-color:transparent;vertical-align:top}.fc .fc-timegrid-slot-label-frame{position:relative;height:0}.fc .fc-timegrid-slot-label-cushion{position:absolute;right:0;top:3px;padding:0 .6rem 0 .2rem;white-space:nowrap;color:var(--muted);font-size:.76rem;line-height:1;font-weight:500;font-variant-numeric:tabular-nums}.fc .fc-timegrid-col.fc-day-sat:not(.fc-day-today),.fc .fc-timegrid-col.fc-day-sun:not(.fc-day-today){background:var(--weekend)}.fc .fc-scrollgrid{border-color:var(--line)}.fc .fc-timegrid-now-indicator-line{border-width:1.5px 0 0}.fc .fc-timegrid-event{border-radius:.4rem;border:0;cursor:pointer;box-shadow:0 1px 2px #121c2638}.fc .fc-timegrid-event-harness-inset .fc-timegrid-event{margin:0 2px 1px 1px}.fc .fc-event.is-planned,.fc .fc-event.is-done,.fc .fc-event.is-doing{background-color:var(--c);border-color:var(--c);color:var(--on)}.fc .fc-event.is-doing{background-image:repeating-linear-gradient(135deg,#ffffff42 0,#ffffff42 5px,#fff0 5px,#fff0 10px)}.fc .fc-event.is-done{box-shadow:inset 0 0 0 2px #fff6,0 1px 2px #121c2638}.fc .fc-event.fc-event-dragging,.fc .fc-event.fc-event-resizing{box-shadow:0 8px 22px #0000004d;z-index:8}.blk{padding:.2rem .45rem;font-size:.8rem;line-height:1.25;overflow:hidden;height:100%}.blk__t{font-weight:600;display:block;overflow-wrap:anywhere}.blk--short .blk__t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.blk__m{display:block;font-size:.72rem;opacity:.88;font-variant-numeric:tabular-nums;margin-top:.05rem}.fc .fc-event-resizer{z-index:4}.fc .fc-event-resizer:after{content:"";position:absolute;left:50%;top:50%;width:1.6rem;height:3px;margin:-1px 0 0 -.8rem;border-radius:2px;background:#ffffffbf}dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:.8rem;box-shadow:0 20px 50px #00000047;padding:1.2rem 1.3rem;width:min(92vw,420px);max-height:92vh;overflow-y:auto}dialog::backdrop{background:#0a101680}.dot{width:.8rem;height:.8rem;border-radius:50%;flex-shrink:0;display:inline-block}.dlg__head{display:flex;align-items:center;gap:.6rem}.dlg__head h3{margin:0;font-family:var(--font-head);font-size:1.15rem;overflow-wrap:anywhere}.dlg__meta{color:var(--muted);font-size:.86rem;margin:.4rem 0 1rem}.dlg__actions{display:flex;flex-direction:column;gap:.45rem}.dlg__row{display:flex;gap:.5rem}.dlg__row>*{flex:1}.dlg__details{border-top:1px solid var(--line);margin-top:1rem;padding-top:1rem}.field{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted);margin-bottom:.7rem;font-weight:500}.field input,.field select,.field textarea{background:var(--surface);border:1px solid var(--line);border-radius:.45rem;padding:.5rem .65rem;color:var(--ink);font-weight:400}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.field textarea{min-height:5.5rem;resize:vertical}#toast{position:fixed;left:50%;bottom:1.2rem;transform:translate(-50%,1rem);background:var(--ink);color:var(--bg);padding:.55rem .9rem;border-radius:.5rem;font-size:.88rem;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;max-width:90vw;z-index:50}#toast.show{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion: reduce){#toast{transition:none}}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.login__card{width:100%;max-width:340px;display:flex;flex-direction:column;gap:.9rem;background:var(--surface);border:1px solid var(--line);border-radius:.8rem;box-shadow:var(--shadow);padding:1.8rem}.login__card h1{font-family:var(--font-head);font-size:1.35rem;margin:0}.login__card .field{margin-bottom:0}.login__intro{margin:0;color:var(--muted);font-size:.9rem}.login__card .note{margin:0}@media (max-width: 820px){.bar{padding:0 .75rem;gap:.5rem}.brand h1{display:none}.workspace{padding:.5rem}.workspace.has-panel{grid-template-columns:minmax(0,1fr)}.panel{position:fixed;top:3.5rem;left:0;right:0;bottom:0;z-index:30;height:auto;border-radius:0;border-width:1px 0 0;box-shadow:none}.cal-wrap{padding:.5rem .5rem .4rem}.fc .fc-header-toolbar{flex-wrap:wrap;gap:.5rem}.fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(2){order:-1;flex-basis:100%}.fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(3){margin-left:auto}.fc .fc-toolbar-title{font-size:1rem}}
