@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/newsreader-vietnamese-400-normal-DdKr49mV.woff2)format("woff2"),url(/assets/newsreader-vietnamese-400-normal-BekUZro8.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/newsreader-latin-ext-400-normal-svq1FPys.woff2)format("woff2"),url(/assets/newsreader-latin-ext-400-normal-DYA1XoQK.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/newsreader-latin-400-normal-BFBkh4jY.woff2)format("woff2"),url(/assets/newsreader-latin-400-normal-gRTjlS2D.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-vietnamese-500-normal-CL6a8tp2.woff2)format("woff2"),url(/assets/newsreader-vietnamese-500-normal-BEAbKU8A.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-latin-ext-500-normal-BNHmvKvI.woff2)format("woff2"),url(/assets/newsreader-latin-ext-500-normal-CZruMFou.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-latin-500-normal-B66TYsaK.woff2)format("woff2"),url(/assets/newsreader-latin-500-normal-DFwuUcdu.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-vietnamese-600-normal-CaH84vfx.woff2)format("woff2"),url(/assets/newsreader-vietnamese-600-normal-CVAR0otO.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-latin-ext-600-normal-BXv5iMHi.woff2)format("woff2"),url(/assets/newsreader-latin-ext-600-normal-BrbfzHZ5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-latin-600-normal-30OJ_TG_.woff2)format("woff2"),url(/assets/newsreader-latin-600-normal-DUnT2r2g.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:oklch(96% .008 85);--paper-wash:oklch(93.5% .012 85);--paper-deep:oklch(91% .014 85);--ink:oklch(28% .012 75);--ink-soft:oklch(45% .01 75);--ink-faint:oklch(58% .008 75);--rule:oklch(86% .012 85);--rule-strong:oklch(74% .015 85);--accent:oklch(44% .13 27);--accent-soft:oklch(92% .03 30);--focus:oklch(50% .15 27);--ev-rust:oklch(52% .12 40);--ev-moss:oklch(46% .09 140);--ev-indigo:oklch(45% .1 275);--ev-gold:oklch(56% .11 85);--ev-slate:oklch(48% .025 260);--font-display:"Fraunces Variable", "Iowan Old Style", Georgia, serif;--font-body:"Newsreader", Georgia, "Times New Roman", serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-masthead:clamp(1.75rem, 6vw, 2.5rem);--text-numeral:clamp(2.25rem, 7vw, 3.25rem);--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-s:2px;--radius-m:6px;--time-gutter:3.25rem;--hour-height:3rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.12s;--dur-base:.18s;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body{margin:0;overflow-x:clip}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--text-base);-webkit-font-smoothing:antialiased;min-height:100dvh;line-height:1.5}#root{flex-direction:column;min-height:100dvh;display:flex}h1,h2,h3{font-family:var(--font-display);margin:0;font-style:normal;font-weight:600;line-height:1.1}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:var(--accent-soft)}.numeral{font-family:var(--font-display);font-variant-numeric:lining-nums;font-weight:300}.tnum{font-variant-numeric:tabular-nums}.rule-double{border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);height:3px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{justify-content:center;align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-s);border:1px solid var(--rule-strong);background:var(--paper);color:var(--ink);font-size:var(--text-sm);transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);white-space:nowrap;line-height:1.4;display:inline-flex}.btn:hover{background:var(--paper-wash)}.btn:active{background:var(--paper-deep)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn-accent{border-color:var(--accent);background:var(--accent);color:var(--paper)}.btn-accent:hover{background:oklch(38% .12 27);border-color:oklch(38% .12 27)}.btn-accent:active{background:oklch(33% .11 27)}.btn-quiet{color:var(--ink-soft);border-color:#0000}.btn-quiet:hover{color:var(--ink);background:var(--paper-wash)}.btn-quiet:disabled{opacity:.4}.btn-danger{border-color:var(--accent);color:var(--accent);background:var(--paper)}.btn-danger:hover{background:var(--accent-soft)}.btn-icon{border-radius:var(--radius-s);width:40px;height:40px;color:var(--ink-soft);transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);justify-content:center;align-items:center;display:inline-flex}.btn-icon:hover{background:var(--paper-wash);color:var(--ink)}.btn-icon:active{background:var(--paper-deep)}.field{gap:var(--space-3xs);flex-direction:column;display:flex}.field>label{font-size:var(--text-sm);color:var(--ink-soft)}.input{background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--radius-s);padding:var(--space-2xs) var(--space-xs);font-size:var(--text-base);min-width:0}.input:hover{border-color:var(--ink-faint)}.input:focus{outline:2px solid var(--focus);outline-offset:1px}.input[aria-invalid=true]{border-color:var(--accent)}.input::placeholder{color:var(--ink-faint)}textarea.input{resize:vertical;min-height:5.5em}.field-error{color:var(--accent);font-size:var(--text-sm)}.login{padding:var(--space-lg);flex:1;place-items:center;display:grid}.login-card{gap:var(--space-lg);text-align:center;flex-direction:column;width:min(24rem,100%);display:flex}.login-masthead{gap:var(--space-sm);flex-direction:column;display:flex}.login-masthead h1{font-size:var(--text-masthead);letter-spacing:.01em;font-weight:300}.login-masthead .rule-double{width:6rem;margin-inline:auto}.login-sub{color:var(--ink-soft);font-size:var(--text-sm)}.login-form{gap:var(--space-sm);text-align:left;flex-direction:column;display:flex}.shell{width:100%;max-width:68rem;padding:var(--space-sm) var(--space-md) var(--space-xl);gap:var(--space-sm);flex-direction:column;flex:1;margin-inline:auto;display:flex}.masthead{justify-content:space-between;align-items:baseline;gap:var(--space-sm);padding-block:var(--space-2xs);display:flex}.masthead h1{font-size:var(--text-masthead);overflow-wrap:anywhere;min-width:0;font-weight:300}.masthead-side{font-size:var(--text-sm);color:var(--ink-soft);white-space:nowrap}.controls{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-block:var(--space-xs) var(--space-sm);display:flex}.controls-group{align-items:center;gap:var(--space-3xs);display:flex}.switcher{align-items:baseline;gap:var(--space-md);display:flex}.switcher button{font-size:var(--text-sm);color:var(--ink-soft);padding-block:var(--space-3xs);transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border-bottom:2px solid #0000}.switcher button:hover{color:var(--ink)}.switcher button[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.view{min-height:0;animation:view-in var(--dur-base) var(--ease-out);flex:1}@keyframes view-in{0%{opacity:0}to{opacity:1}}.view-error{color:var(--accent);font-size:var(--text-sm);margin:0 0 var(--space-sm)}.link-quiet{color:var(--ink-soft);text-underline-offset:2px;font:inherit;text-decoration:underline}.link-quiet:hover{color:var(--ink)}.btn-wide-label{display:none}@media (width>=30rem){.btn-wide-label{display:inline}}.chip{align-items:baseline;gap:var(--space-2xs);text-align:left;width:100%;min-width:0;padding:var(--space-3xs) var(--space-2xs) var(--space-3xs) var(--space-2xs);border-left:2px solid var(--chip-color,var(--ink-soft));background:var(--paper);border-radius:var(--radius-s);transition:background-color var(--dur-fast) var(--ease-out);display:flex}.chip:hover{background:var(--paper-wash)}.chip:active{background:var(--paper-deep)}.chip-time{color:var(--ink-soft);white-space:nowrap}.chip-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chip-repeat{color:var(--ink-faint);margin-left:var(--space-3xs)}.chip-compact{font-size:var(--text-xs);line-height:1.3}.month{transition:opacity var(--dur-fast) var(--ease-out);flex-direction:column;display:flex}.month.is-loading{opacity:.55}.month-weekdays{border-bottom:1px solid var(--rule-strong);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.month-weekday{font-size:var(--text-xs);color:var(--ink-soft);padding:var(--space-3xs) var(--space-2xs)}.month-grid{border-left:1px solid var(--rule);grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:1fr;display:grid}.month-cell{gap:var(--space-3xs);min-width:0;min-height:4.5rem;padding:var(--space-2xs);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-direction:column;display:flex}@media (width>=40rem){.month-cell{min-height:5.5rem}}.month-cell.weekend{background:var(--paper-wash)}.month-cell.out .month-numeral{color:var(--ink-faint)}.month-date{border-radius:var(--radius-s);padding:0 var(--space-3xs);margin-left:calc(-1 * var(--space-3xs));align-self:flex-start}.month-numeral{font-family:var(--font-display);font-weight:300;font-size:var(--text-lg);justify-content:center;align-items:center;line-height:1.4;display:inline-flex}.month-numeral.is-today{color:var(--accent);border:1.5px solid;border-radius:50%;width:1.75em;height:1.75em}.month-chips{gap:var(--space-3xs);flex-direction:column;display:flex;overflow:hidden}.month-more{font-size:var(--text-xs);color:var(--ink-soft);text-align:left;padding:0 var(--space-3xs);border-radius:var(--radius-s);align-self:flex-start}.month-more:hover{color:var(--ink);background:var(--paper-wash)}.month-dots{align-items:center;gap:var(--space-3xs);flex-wrap:wrap;display:flex}.month-dot{border-radius:50%;width:5px;height:5px}.month-dot-more{font-size:var(--text-xs);color:var(--ink-soft)}.agenda{border-left:2px solid var(--rule-strong);padding-left:var(--space-xs);flex-direction:column;display:flex}.agenda.is-today{border-left-color:var(--accent)}.agenda .chip{padding:var(--space-2xs) var(--space-3xs);border-left:none;border-bottom:1px solid var(--rule);font-size:var(--text-base);background:0 0;border-radius:0}.agenda .chip:last-child{border-bottom:none}.agenda-empty{gap:var(--space-xs);padding-block:var(--space-sm)}.agenda-empty-note{color:var(--ink-soft);font-size:var(--text-sm);margin:0}.day{gap:var(--space-xs);flex-direction:column;display:flex}.day-head{align-items:baseline;gap:var(--space-sm);padding-block:var(--space-2xs);display:flex}.day-numeral{font-size:var(--text-numeral);line-height:1}.day-head-side{flex-direction:column;line-height:1.3;display:flex}.day-month{color:var(--ink-soft);font-size:var(--text-sm)}.week-stacked{flex-direction:column;display:flex}.week-day{padding-block:var(--space-2xs);border-bottom:1px solid var(--rule-strong);flex-direction:column;display:flex}.week-day:last-child{border-bottom:none}.week-day-head{display:flex}.week-day-title{align-items:baseline;gap:var(--space-2xs);padding:var(--space-3xs) var(--space-2xs);margin-left:calc(-1 * var(--space-2xs));border-radius:var(--radius-s);display:inline-flex}.week-day-title:hover{background:var(--paper-wash)}.week-day .agenda{margin-top:var(--space-3xs)}.week-head-dow{font-size:var(--text-sm);color:var(--ink-soft)}.week-head-num{font-weight:500}.week-head-num.is-today{color:var(--accent)}.week-grid{flex-direction:column;display:flex}.week-heads{grid-template-columns:var(--time-gutter) repeat(7, minmax(0, 1fr));border-bottom:1px solid var(--rule-strong);display:grid}.week-head{align-items:baseline;gap:var(--space-2xs);padding:var(--space-3xs);justify-content:center;display:flex}.week-head.is-today .week-head-dow{color:var(--accent)}.tgrid-wrap{flex-direction:column;display:flex}.tgrid-allday{padding-left:var(--time-gutter);border-bottom:1px solid var(--rule-strong);order:0;min-height:0;display:flex}.tgrid-allday-cell{gap:var(--space-3xs);min-width:0;padding:var(--space-2xs);flex-direction:column;flex:1;display:flex}.tgrid-allday-cell:not(:last-child){border-right:1px solid var(--rule)}.tgrid-allday-cell .chip{background:var(--paper-wash)}.tgrid{order:1;height:clamp(26rem,60vh,46rem);display:flex;overflow-y:auto}.tgrid-hours{width:var(--time-gutter);flex:none}.tgrid-hour{height:var(--hour-height);text-align:right;padding-right:var(--space-2xs);font-size:var(--text-xs);color:var(--ink-faint);transform:translateY(-.6em)}.tgrid-cols{border-left:1px solid var(--rule);flex:1;min-width:0;display:flex}.tgrid-col{flex:1;min-width:0;position:relative}.tgrid-col:not(:last-child){border-right:1px solid var(--rule)}.tgrid-line{height:var(--hour-height);border-bottom:1px solid var(--rule)}.tgrid-block{text-align:left;padding:var(--space-3xs) var(--space-2xs);border-left:2px solid var(--chip-color,var(--ink-soft));border-radius:var(--radius-s);background:color-mix(in oklab, var(--chip-color,var(--ink-soft)) 12%, var(--paper));font-size:var(--text-xs);transition:background-color var(--dur-fast) var(--ease-out);flex-direction:column;line-height:1.3;display:flex;position:absolute;overflow:hidden}.tgrid-block:hover{background:color-mix(in oklab, var(--chip-color,var(--ink-soft)) 20%, var(--paper))}.tgrid-block.spills{-webkit-mask-image:linear-gradient(#000 78%,#0000);mask-image:linear-gradient(#000 78%,#0000)}.tgrid-block-time{color:var(--ink-soft)}.tgrid-block-title{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:500;display:-webkit-box;overflow:hidden}.tgrid-now{border-top:2px solid var(--accent);pointer-events:none;position:absolute;left:0;right:0}.tgrid-now:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:-4px;left:-3px}.sheet-overlay{z-index:10;animation:view-in var(--dur-fast) var(--ease-out);background:oklch(28% .012 75/.35);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--radius-m) var(--radius-m) 0 0;width:min(34rem,100%);max-height:92dvh;padding:var(--space-sm) var(--space-md) var(--space-md);animation:sheet-up var(--dur-base) var(--ease-out);border-bottom:none;overflow-y:auto}@keyframes sheet-up{0%{opacity:0;transform:translateY(10%)}}@media (width>=48rem){.sheet-overlay{padding:var(--space-lg);align-items:center}.sheet{border-radius:var(--radius-m);border-bottom:1px solid var(--rule-strong)}.sheet-rule{display:none}}.sheet-rule{background:var(--rule-strong);width:2.5rem;height:3px;margin:0 auto var(--space-sm)}.sheet-title{font-size:var(--text-xl);margin-bottom:var(--space-md);font-weight:300}.sheet-loading{color:var(--ink-soft);font-size:var(--text-sm)}.sheet-form{gap:var(--space-md);flex-direction:column;display:flex}.sheet-row{gap:var(--space-sm);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;display:grid}.sheet-toggle{align-items:center;gap:var(--space-2xs);font-size:var(--text-sm);color:var(--ink-soft);cursor:pointer;padding-block:var(--space-2xs);border-radius:var(--radius-s);justify-self:end;display:inline-flex}.sheet-row .sheet-toggle{justify-self:end}.sheet-toggle:hover{color:var(--ink)}.sheet-toggle input{width:1rem;height:1rem;accent-color:var(--accent)}.sheet-hint{font-size:var(--text-sm);color:var(--ink-soft);margin:0}.sheet-hint-inline{color:var(--ink-faint);font-weight:400}.sheet-until{padding-left:var(--space-md);border-left:1px solid var(--rule)}.sheet-colors{gap:var(--space-xs);border:none;align-items:center;margin:0;padding:0;display:flex}.sheet-colors legend{font-size:var(--text-sm);color:var(--ink-soft);margin-right:var(--space-2xs);float:left;padding:0}.sheet-color{background:var(--dot-color,var(--ink-faint));width:1.25rem;height:1.25rem;transition:box-shadow var(--dur-fast) var(--ease-out);border:none;border-radius:50%;padding:0}.sheet-color:hover{box-shadow:0 0 0 2px var(--paper), 0 0 0 3px var(--ink-faint)}.sheet-color.is-selected{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--dot-color,var(--ink-soft))}.sheet-actions{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-top:var(--space-2xs);display:flex}.sheet-confirm{align-items:center;gap:var(--space-xs);font-size:var(--text-sm);color:var(--accent);flex-wrap:wrap;display:flex}.sheet-actions-right{gap:var(--space-xs);margin-left:auto;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
