@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+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: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+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: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+??,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: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+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: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+??,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{--font-display:"Bricolage Grotesque Variable", "Trebuchet MS", sans-serif;--font-body:"Figtree Variable", system-ui, sans-serif;--step--1:.875rem;--step-0:1rem;--step-1:1.25rem;--step-2:1.6rem;--step-3:clamp(1.9rem, 1.4rem + 2vw, 2.7rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--radius-s:8px;--radius-m:14px;--radius-l:22px;--border:2px;--blue:#2450ff;--yellow:#ffc82e;--green:#17b26a;--red:#ff5347;--pink:#ff7ab8}:root,:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef2fb;--surface:#fff;--surface-2:#e2e9f8;--ink:#101a3a;--ink-soft:#4b5678;--line:#101a3a;--accent:var(--blue);--on-accent:#fff;--highlight:var(--yellow);--on-highlight:#101a3a;--good:#0b8a4f;--bad:#d3352a;--shadow:4px 4px 0 var(--line);--shadow-s:2px 2px 0 var(--line);--focus:#2450ff;--dot-empty:#d3dcf2;--gray:#b4bbd0}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d1226;--surface:#171e3d;--surface-2:#222b52;--ink:#eef1ff;--ink-soft:#a5aed0;--line:#5c6aa8;--accent:#6f8bff;--on-accent:#0d1226;--highlight:var(--yellow);--on-highlight:#101a3a;--good:#3ddc97;--bad:#ff7f75;--shadow:4px 4px 0 #000;--shadow-s:2px 2px 0 #000;--focus:#ffc82e;--dot-empty:#2a3563;--gray:#8790b5}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);margin:0;line-height:1.5;transition:background-color .25s,color .25s}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0;line-height:1.1}h1{font-size:var(--step-3);font-weight:800}h2{font-size:var(--step-2);font-weight:700}h3{font-size:var(--step-1);font-weight:700}p{margin:0}a{color:var(--accent);font-weight:600}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--ink-soft)}.num{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.btn{justify-content:center;align-items:center;gap:var(--space-2);border:var(--border) solid var(--line);border-radius:var(--radius-m);background:var(--accent);min-height:44px;color:var(--on-accent);cursor:pointer;box-shadow:var(--shadow-s);padding:.6rem 1.1rem;font-weight:700;text-decoration:none;transition:transform .1s,box-shadow .1s;display:inline-flex}.btn:hover:not(:disabled){box-shadow:3px 3px 0 var(--line);transform:translate(-1px,-1px)}.btn:active:not(:disabled){box-shadow:0 0 0 var(--line);transform:translate(2px,2px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--ink)}.btn-highlight{background:var(--highlight);color:var(--on-highlight)}.btn-danger{background:var(--surface);color:var(--bad)}.btn-small{min-height:36px;font-size:var(--step--1);padding:.3rem .75rem}.btn-block{width:100%}.icon-btn{border:var(--border) solid var(--line);background:var(--surface);cursor:pointer;width:44px;height:44px;color:var(--ink);box-shadow:var(--shadow-s);border-radius:50%;place-items:center;padding:0;display:inline-grid}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.card{background:var(--surface);border:var(--border) solid var(--line);border-radius:var(--radius-l);box-shadow:var(--shadow);padding:var(--space-5)}.card-flat{box-shadow:none}.stack{gap:var(--space-4);flex-direction:column;display:flex}.stack-lg{gap:var(--space-6);flex-direction:column;display:flex}.row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.grid-2{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));display:grid}.grid-cards{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));display:grid}.field{gap:var(--space-1);flex-direction:column;display:flex}.field>label,.field>.label{font-weight:700;font-size:var(--step--1)}.field .hint{font-size:var(--step--1);color:var(--ink-soft)}.input{border:var(--border) solid var(--line);border-radius:var(--radius-m);background:var(--surface);width:100%;min-height:44px;padding:.55rem .8rem}textarea.input{resize:vertical;min-height:84px}.check{align-items:center;gap:var(--space-2);min-height:44px;display:flex}.check input{width:22px;height:22px;accent-color:var(--accent)}.form-error{padding:var(--space-3);border:var(--border) solid var(--bad);border-radius:var(--radius-m);color:var(--bad);font-weight:600}.form-info{padding:var(--space-3);border:var(--border) solid var(--good);border-radius:var(--radius-m);color:var(--good);font-weight:600}.segmented{gap:var(--space-2);grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.segmented label{justify-content:center;align-items:center;gap:var(--space-2);border:var(--border) solid var(--line);border-radius:var(--radius-m);background:var(--surface);cursor:pointer;min-height:48px;padding:.4rem .6rem;font-weight:700;display:flex;position:relative}.segmented input{opacity:0;cursor:pointer;position:absolute;inset:0}.segmented label:has(input:disabled){opacity:.45;cursor:not-allowed;background:var(--surface-2);border-style:dashed}.segmented input:disabled{cursor:not-allowed}.segmented label:has(input:checked){background:var(--highlight);color:var(--on-highlight);box-shadow:var(--shadow-s)}.segmented label:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.chip{align-items:center;gap:var(--space-1);border:var(--border) solid var(--line);background:var(--surface-2);font-size:var(--step--1);white-space:nowrap;border-radius:999px;padding:.1rem .6rem;font-weight:700;display:inline-flex}.chip-good{background:var(--green);color:#06301c}.chip-warn{background:var(--highlight);color:var(--on-highlight)}.progress{border:var(--border) solid var(--line);background:var(--surface-2);border-radius:999px;height:16px;overflow:hidden}.progress>span{background:repeating-linear-gradient(-45deg, var(--accent) 0 10px, color-mix(in srgb, var(--accent) 80%, white) 10px 20px);height:100%;transition:width .5s;display:block}.progress.done>span{background:var(--green)}.stat{flex-direction:column;gap:2px;display:flex}.stat .value{font-family:var(--font-display);font-size:var(--step-3);font-weight:800;line-height:1}.stat .label{color:var(--ink-soft);font-weight:600}.list{margin:0;padding:0;list-style:none}.list>li{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px dashed var(--line);display:flex}.list>li:first-child{border-top:0}.list-days>li{padding-inline:var(--space-3);border-radius:var(--radius-s)}.list-days>li.day-alt{background:color-mix(in srgb, var(--surface-2) 55%, var(--surface))}.list .grow{flex:1;min-width:0}.rank{border:var(--border) solid var(--line);background:var(--surface-2);width:36px;height:36px;font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;font-weight:800;display:inline-grid}.rank-1{background:var(--yellow);color:#101a3a}.rank-2{color:#101a3a;background:#cfd6e6}.rank-3{color:#101a3a;background:#f0a56b}.me{background:color-mix(in srgb, var(--highlight) 22%, transparent);border-radius:var(--radius-m)}.tabs{gap:var(--space-2);flex-wrap:wrap;display:flex}.tab{border:var(--border) solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;min-height:40px;padding:.3rem 1rem;font-weight:700}.tab[aria-pressed=true],.tab[aria-selected=true]{background:var(--ink);color:var(--bg)}.badge{align-items:center;gap:var(--space-2);text-align:center;padding:var(--space-5) var(--space-4);border:var(--border) solid var(--line);border-radius:var(--radius-l);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;display:flex}.medal{border:var(--border) solid var(--line);background:var(--highlight);width:84px;height:84px;box-shadow:var(--shadow-s);border-radius:50%;place-items:center;display:grid}.badge h3{font-size:var(--step-0)}.badge.locked{box-shadow:none;background:0 0;border-style:dashed}.badge.locked .medal{background:var(--surface-2);filter:grayscale();opacity:.55;box-shadow:none}.badge.locked h3,.badge.locked p{color:var(--ink-soft)}.badge-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.badge-mini{align-items:center;gap:var(--space-2);border:var(--border) solid var(--line);background:var(--surface);font-weight:700;font-size:var(--step--1);border-radius:999px;padding:.3rem .7rem .3rem .3rem;display:inline-flex}button.badge-mini{cursor:pointer}button.badge-mini:hover{background:var(--surface-2)}button.badge-mini:disabled{cursor:not-allowed;opacity:.7}.badge-mini.given{background:var(--highlight);color:var(--on-highlight);border-color:#0000}.badge-mini .badge-icon{border-radius:50%}.kudos-count{align-items:center;gap:3px;display:inline-flex}dialog.dialog{width:min(94vw,460px);max-height:92vh;padding:var(--space-5);border:var(--border) solid var(--line);border-radius:var(--radius-l);background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}dialog.dialog::backdrop{background:color-mix(in srgb, var(--bg) 60%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}dialog.dialog[open]{animation:.22s cubic-bezier(.2,1.4,.4,1) pop}@keyframes pop{0%{opacity:0;transform:scale(.92)}}.dialog-actions{justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.celebrate{text-align:center}.celebrate .medal{width:110px;height:110px;margin:0 auto var(--space-4);animation:.8s .15s both wobble}@keyframes wobble{0%{transform:scale(0)rotate(-30deg)}60%{transform:scale(1.15)rotate(8deg)}to{transform:scale(1)rotate(0)}}.punchcard{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.punchcard .dow{text-align:center;color:var(--ink-soft);font-size:.75rem;font-weight:700}.punch{aspect-ratio:1;border:var(--border) dashed var(--line);color:var(--ink-soft);cursor:default;background:0 0;border-radius:50%;place-items:center;font-size:.75rem;font-weight:700;display:grid;position:relative}.punch.off{opacity:.35;border-color:#0000}.punch.weekend{border-style:dotted}.punch.done{color:var(--on-highlight);border-style:solid}.punch.half{background:var(--yellow)}.punch.full{background:var(--green);color:#06301c}.punch.dayoff{background:var(--gray);color:var(--on-highlight);border-style:solid}.punch.today{box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--accent)}.legend{gap:var(--space-4);font-size:var(--step--1);color:var(--ink-soft);flex-wrap:wrap;display:flex}.legend i{border:var(--border) solid var(--line);vertical-align:-1px;border-radius:50%;width:12px;height:12px;margin-right:6px;display:inline-block}.recent-row,.recent .list>li.recent-row{align-items:center;gap:var(--space-3);grid-template-columns:7.5rem 1fr 1fr;display:grid}.recent .list>li.recent-row{padding-block:var(--space-2)}.recent-head{padding-bottom:var(--space-2);font-size:var(--step--1);color:var(--ink-soft);font-weight:700}.recent-day{white-space:nowrap;font-weight:700}.recent-slot{gap:var(--space-2) var(--space-3);flex-wrap:wrap;align-items:center;min-height:36px;display:flex}.recent-trip{white-space:nowrap}.recent-add{border:var(--border) dashed var(--line);border-radius:var(--radius-s);min-width:44px;min-height:36px;color:var(--ink-soft);cursor:pointer;background:0 0;font-weight:700}.recent-add:hover,.recent-add:focus-visible{color:var(--ink);border-style:solid}.empty{padding:var(--space-6) var(--space-4);text-align:center;border:var(--border) dashed var(--line);border-radius:var(--radius-l)}.empty .big{color:var(--ink-soft);place-items:center;display:grid}.ico-inline{vertical-align:-.2em}.ico-pair{align-items:center;gap:2px;display:inline-flex}.trip-icons{align-items:center;gap:var(--space-2);white-space:nowrap;display:inline-flex}.skeleton{border-radius:var(--radius-s);background:var(--surface-2);height:1em;animation:1.2s ease-in-out infinite alternate pulse}@keyframes pulse{to{opacity:.4}}.spinner-page{min-height:60vh;color:var(--ink);place-items:center;display:grid}.spinner-page svg{animation:1.2s ease-in-out infinite alternate ride;display:inline-block}@keyframes ride{0%{transform:translate(-24px)rotate(-6deg)}to{transform:translate(24px)rotate(6deg)}}.qr{border:var(--border) solid var(--line);border-radius:var(--radius-m);background:#fff;width:200px;height:200px;margin:0 auto;padding:8px;display:block}.code-box{padding:var(--space-3);border:var(--border) dashed var(--line);border-radius:var(--radius-m);word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.codes{gap:var(--space-2);padding:var(--space-4);border:var(--border) dashed var(--line);border-radius:var(--radius-m);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--step--1);grid-template-columns:repeat(2,1fr);display:grid}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:20;background:var(--bg);border-bottom:var(--border) solid var(--line);position:sticky;top:0}.topbar-inner{align-items:center;gap:var(--space-4);max-width:1080px;padding:var(--space-3) var(--space-4);margin:0 auto;display:flex}.brand{align-items:center;gap:var(--space-2);font-family:var(--font-display);font-size:var(--step-1);color:var(--ink);font-weight:800;text-decoration:none;display:inline-flex}.brand .logo{border:var(--border) solid var(--line);background:var(--highlight);width:38px;height:38px;color:var(--on-highlight);box-shadow:var(--shadow-s);border-radius:50%;place-items:center;transition:transform .4s;display:grid}.brand:hover .logo{transform:rotate(360deg)}.nav{gap:var(--space-1);margin-left:var(--space-4);display:flex}.nav a{align-items:center;gap:var(--space-2);border:var(--border) solid transparent;min-height:40px;color:var(--ink);border-radius:999px;padding:.3rem .9rem;font-weight:700;text-decoration:none;display:inline-flex}.nav a:hover{background:var(--surface-2)}.nav a[aria-current=page]{border-color:var(--line);background:var(--highlight);color:var(--on-highlight);box-shadow:var(--shadow-s)}.nav .ico{display:none}.topbar-tools{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.tool-ico{display:none}.main{width:100%;max-width:1080px;padding:var(--space-6) var(--space-4) var(--space-7);flex:1;margin:0 auto}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.page-head p{margin-top:var(--space-2)}.auth{min-height:100vh;padding:var(--space-5) var(--space-4);place-items:center;display:grid;position:relative}.auth-card{width:min(100%,440px)}.auth .theme-corner{top:var(--space-4);right:var(--space-4);position:absolute}.auth-brand{align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.auth-brand .logo{border:var(--border) solid var(--line);background:var(--highlight);width:56px;height:56px;color:var(--on-highlight);box-shadow:var(--shadow-s);border-radius:50%;place-items:center;display:grid}.legal-footer{text-align:center;margin-top:var(--space-3)}.legal{padding-top:var(--space-7);align-items:start}.legal-card{width:min(100%,720px)}.legal-back{align-items:center;gap:var(--space-1);margin-bottom:var(--space-4);display:inline-flex}.legal-body h2{margin-top:var(--space-6)}.legal-body h2:first-child{margin-top:0}.legal-body ul{padding-left:1.2rem}.legal-table{border-collapse:collapse;width:100%;margin:var(--space-3) 0}.legal-table th,.legal-table td{border:1px solid var(--line);padding:var(--space-2) var(--space-3);text-align:left;vertical-align:top}.legal-table th{background:var(--surface-2)}@media (width<=720px){.topbar-inner{padding:var(--space-2) var(--space-4);gap:var(--space-2)}.tool-label{display:none}.tool-ico{display:inline}.topbar-tools .btn-small{border-radius:50%;min-width:44px;min-height:44px;padding:0}.nav{z-index:30;padding:var(--space-2) var(--space-2) calc(var(--space-2) + env(safe-area-inset-bottom));background:var(--surface);border-top:var(--border) solid var(--line);justify-content:space-around;margin:0;position:fixed;inset:auto 0 0}.nav a{border-radius:var(--radius-m);flex-direction:column;gap:0;min-width:56px;padding:.2rem .4rem;font-size:.72rem}.nav .ico{display:block}.main{padding-bottom:6rem}}
