@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-700-normal-C2EtzaOi.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-700-normal-By_5yT39.woff)format("woff")}@font-face{font-family:Literata;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-vietnamese-wght-normal-LcSrhZ7T.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:Literata;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-normal-DLxlUchJ.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:Literata;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-vietnamese-wght-italic-LyOFdRXZ.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:Literata;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-italic-Bm_GJfSc.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:Noto Serif;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-vietnamese-wght-normal-G-hP2cUo.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:Noto Serif;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-latin-wght-normal-DKWgU5qY.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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f4ee;--surface:#fff;--surface-2:#efe9df;--surface-pressed:#e6dfd3;--text:#1d1b18;--text-muted:#5b554c;--border:#d9d1c4;--border-strong:#8f8679;--primary:#8c3b1e;--primary-hover:#7a3219;--on-primary:#fff;--primary-soft:#f4e4da;--on-primary-soft:#6e2d16;--danger:#b3261e;--danger-soft:#fbe5e3;--success:#276b3a;--success-soft:#e1f1e5;--focus:#1f5fbf;--scrim:#14120f7a;--shadow-1:0 1px 2px #281e1414, 0 1px 3px #281e140f;--shadow-2:0 8px 24px #281e1424, 0 2px 6px #281e1414;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--radius-s:8px;--radius-m:12px;--radius-l:16px;--radius-pill:999px;--font-ui:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-xs:13px;--fs-s:14px;--fs-m:16px;--fs-l:18px;--fs-xl:22px;--fs-2xl:28px;--touch:48px;--topbar-h:56px;--content-max:960px;--z-bar:10;--z-scrim:40;--z-sheet:50;--z-toast:100;--dur-fast:.15s;--dur-mid:.22s;--dur-slow:.3s;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#16161a;--surface:#1f1f24;--surface-2:#2a2a31;--surface-pressed:#34343c;--text:#ece7df;--text-muted:#b0a99e;--border:#3a3a42;--border-strong:#72727d;--primary:#eba27f;--primary-hover:#f2b597;--on-primary:#1d1410;--primary-soft:#3b2a22;--on-primary-soft:#f3c6b0;--danger:#f2a39c;--danger-soft:#3d2220;--success:#8fd19e;--success-soft:#1f3324;--focus:#8ab4ff;--scrim:#0009;--shadow-1:0 1px 2px #0006;--shadow-2:0 8px 24px #00000080}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#16161a;--surface:#1f1f24;--surface-2:#2a2a31;--surface-pressed:#34343c;--text:#ece7df;--text-muted:#b0a99e;--border:#3a3a42;--border-strong:#72727d;--primary:#eba27f;--primary-hover:#f2b597;--on-primary:#1d1410;--primary-soft:#3b2a22;--on-primary-soft:#f3c6b0;--danger:#f2a39c;--danger-soft:#3d2220;--success:#8fd19e;--success-soft:#1f3324;--focus:#8ab4ff;--scrim:#0009;--shadow-1:0 1px 2px #0006;--shadow-2:0 8px 24px #00000080}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-mid:0s;--dur-slow:0s}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-ui);font-size:var(--fs-m);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.5}h1,h2,h3{text-wrap:balance;margin:0;line-height:1.25}p{margin:0}a{color:var(--primary)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{left:var(--sp-2);z-index:var(--z-toast);background:var(--surface);color:var(--text);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-s);box-shadow:var(--shadow-2);position:absolute;top:-100px}.skip-link:focus{top:calc(var(--safe-top) + var(--sp-2))}.page{min-height:100dvh;padding-bottom:calc(var(--sp-7) + var(--safe-bottom))}.container{width:100%;max-width:var(--content-max);min-width:0;padding-left:max(var(--sp-4), var(--safe-left));padding-right:max(var(--sp-4), var(--safe-right));margin:0 auto}@media (min-width:768px){.container{padding-left:max(var(--sp-5), var(--safe-left));padding-right:max(var(--sp-5), var(--safe-right))}}@media (min-width:1024px){.container{padding-left:max(var(--sp-6), var(--safe-left));padding-right:max(var(--sp-6), var(--safe-right))}}.container--wide{max-width:1200px}.container--mid{max-width:1040px}.container--narrow{max-width:720px}.topbar{z-index:var(--z-bar);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);padding-top:var(--safe-top);transition:border-color var(--dur-mid) var(--ease-out);border-bottom:1px solid #0000;position:sticky;top:0}.topbar[data-scrolled=true]{border-bottom-color:var(--border)}.topbar__row{align-items:center;gap:var(--sp-1);min-height:var(--topbar-h);display:flex}.topbar__title{min-width:0;font-size:var(--fs-l);white-space:nowrap;text-overflow:ellipsis;padding:0 var(--sp-2);flex:1;font-weight:600;overflow:hidden}.topbar__row>.topbar__title:first-child{padding-left:0}.topbar[data-title-on-scroll=true] .topbar__title{opacity:0;transition:opacity var(--dur-mid) var(--ease-out), transform var(--dur-mid) var(--ease-out);transform:translateY(4px)}.topbar[data-title-on-scroll=true][data-scrolled=true] .topbar__title{opacity:1;transform:none}.section{margin-top:var(--sp-5)}.section__title{font-size:var(--fs-l);margin-bottom:var(--sp-3);font-weight:600}.muted{color:var(--text-muted)}.small{font-size:var(--fs-s)}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.btn{--btn-bg:var(--surface-2);--btn-fg:var(--text);--btn-border:transparent;justify-content:center;align-items:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-5);border-radius:var(--radius-m);border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--btn-fg);font-weight:600;font-size:var(--fs-m);white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), opacity var(--dur-fast);text-decoration:none;display:inline-flex;position:relative}@media (hover:hover){.btn:hover{background:var(--surface-pressed)}}.btn:active{transform:scale(.98)}.btn[disabled],.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}.btn--primary{--btn-bg:var(--primary);--btn-fg:var(--on-primary)}@media (hover:hover){.btn--primary:hover{background:var(--primary-hover)}}.btn--secondary{--btn-bg:transparent;--btn-border:var(--border-strong)}@media (hover:hover){.btn--secondary:hover{background:var(--surface-2)}}.btn--ghost{--btn-bg:transparent;padding:0 var(--sp-3)}@media (hover:hover){.btn--ghost:hover{background:var(--surface-2)}}.btn--danger{--btn-bg:transparent;--btn-fg:var(--danger);--btn-border:var(--danger)}@media (hover:hover){.btn--danger:hover{background:var(--danger-soft)}}.btn--block{width:100%}.btn--small{min-height:40px;padding:0 var(--sp-4);font-size:var(--fs-s)}.btn[data-loading=true] .btn__label{opacity:0}.btn__spinner{place-items:center;display:grid;position:absolute;inset:0}.icon-btn{width:var(--touch);height:var(--touch);border-radius:var(--radius-pill);color:inherit;transition:background-color var(--dur-fast) var(--ease-out);background:0 0;border:0;flex:none;place-items:center;display:inline-grid}@media (hover:hover){.icon-btn:hover{background:var(--surface-2)}}.icon-btn:active{background:var(--surface-pressed)}.icon-btn[disabled]{opacity:.4;cursor:not-allowed}.icon-btn[aria-pressed=true]{color:var(--primary)}.link-btn{padding:var(--sp-2) 0;min-height:44px;color:var(--primary);text-underline-offset:3px;background:0 0;border:0;font-weight:600;text-decoration:underline}.field{gap:var(--sp-1);flex-direction:column;display:flex}.field__label{font-weight:600;font-size:var(--fs-s)}.field__control{display:flex;position:relative}.input{width:100%;min-height:var(--touch);padding:0 var(--sp-4);border-radius:var(--radius-m);border:1px solid var(--border-strong);background:var(--surface);font-size:var(--fs-m);transition:border-color var(--dur-fast), box-shadow var(--dur-fast)}.input:focus{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 30%, transparent);outline:none}.input[aria-invalid=true]{border-color:var(--danger)}.input--with-action{padding-right:calc(var(--touch) + var(--sp-1))}.field__action{height:100%;position:absolute;top:0;right:0}.field__help{font-size:var(--fs-s);color:var(--text-muted)}.field__error{font-size:var(--fs-s);color:var(--danger);gap:var(--sp-1);align-items:flex-start;display:flex}.alert{gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-m);font-size:var(--fs-s);align-items:flex-start;display:flex}.alert svg{flex:none;margin-top:2px}.alert--error{background:var(--danger-soft);color:var(--danger)}.alert--success{background:var(--success-soft);color:var(--success)}.alert--info{background:var(--primary-soft);color:var(--on-primary-soft)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-l);padding:var(--sp-4);min-width:0}@media (min-width:768px){.card{padding:var(--sp-5)}}.progress{border-radius:var(--radius-pill);background:var(--surface-2);height:6px;overflow:hidden}.progress>span{background:var(--primary);border-radius:inherit;transform-origin:0;height:100%;transition:width var(--dur-mid) var(--ease-out);display:block}.badge{padding:2px var(--sp-2);border-radius:var(--radius-pill);font-size:var(--fs-xs);background:var(--surface-2);color:var(--text-muted);align-items:center;gap:4px;font-weight:600;display:inline-flex}.badge--primary{background:var(--primary-soft);color:var(--on-primary-soft)}.badge--danger{background:var(--danger-soft);color:var(--danger)}.tabs{gap:var(--sp-1);border-bottom:1px solid var(--border);display:flex}.tab{min-height:var(--touch);padding:0 var(--sp-4);color:var(--text-muted);transition:color var(--dur-fast), border-color var(--dur-fast);background:0 0;border:0;border-bottom:3px solid #0000;margin-bottom:-1px;font-weight:600}.tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--primary)}.spinner{border:2.5px solid;border-right-color:#0000;border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin}.spinner--l{border-width:3px;width:32px;height:32px}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.6s}}.skeleton{background:linear-gradient(90deg, var(--surface-2) 0%, var(--surface-pressed) 50%, var(--surface-2) 100%);border-radius:var(--radius-s);background-size:200% 100%;animation:1.3s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.center-state{text-align:center;justify-content:center;align-items:center;gap:var(--sp-3);padding:var(--sp-7) var(--sp-4);color:var(--text-muted);flex-direction:column;display:flex}.center-state h2{color:var(--text);font-size:var(--fs-l)}.loading-bar{top:var(--safe-top);height:3px;z-index:var(--z-toast);pointer-events:none;position:fixed;left:0;right:0;overflow:hidden}.loading-bar:after{content:"";background:var(--primary);width:40%;animation:loading-bar 1s var(--ease-out) infinite;position:absolute;inset:0}@keyframes loading-bar{0%{transform:translate(-100%)}to{transform:translate(250%)}}.scrim{z-index:var(--z-scrim);background:var(--scrim);animation:fade-in var(--dur-mid) var(--ease-out);position:fixed;inset:0}.scrim--light{background:#0000001f}.scrim[data-closing=true]{animation:fade-out calc(var(--dur-mid) * .7) var(--ease-in) forwards}.sheet{z-index:var(--z-sheet);background:var(--surface);max-height:min(88dvh,720px);color:var(--text);border-radius:var(--radius-l) var(--radius-l) 0 0;box-shadow:var(--shadow-2);padding-bottom:var(--safe-bottom);animation:sheet-in var(--dur-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.sheet[data-closing=true]{animation:sheet-out calc(var(--dur-slow) * .65) var(--ease-in) forwards}@media (min-width:768px){.sheet{border-radius:var(--radius-l);width:min(560px,100vw - 48px);max-height:min(80dvh,720px);animation:dialog-in var(--dur-mid) var(--ease-out);top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.sheet[data-closing=true]{animation:dialog-out calc(var(--dur-mid) * .7) var(--ease-in) forwards}}.sheet__header{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-4);border-bottom:1px solid var(--border);flex:none;display:flex}.sheet__title{font-size:var(--fs-l);flex:1;font-weight:600}.sheet__body{overscroll-behavior:contain;padding:var(--sp-4);flex:1;overflow-y:auto}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes sheet-out{to{transform:translateY(100%)}}@keyframes dialog-in{0%{opacity:0;transform:translate(-50%,-48%)scale(.97)}}@keyframes dialog-out{to{opacity:0;transform:translate(-50%,-48%)scale(.97)}}.toasts{z-index:var(--z-toast);left:0;right:0;bottom:calc(var(--sp-5) + var(--safe-bottom));align-items:center;gap:var(--sp-2);pointer-events:none;padding:0 var(--sp-4);flex-direction:column;display:flex;position:fixed}.toast{pointer-events:auto;align-items:center;gap:var(--sp-3);width:100%;max-width:480px;min-height:var(--touch);padding:var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-4);border-radius:var(--radius-m);background:var(--text);color:var(--bg);box-shadow:var(--shadow-2);animation:toast-in var(--dur-mid) var(--ease-out);font-size:var(--fs-s);display:flex}.toast__msg{flex:1}.toast .btn--ghost{color:inherit;min-height:40px}@media (hover:hover){.toast .btn--ghost:hover{background:color-mix(in srgb, var(--bg) 15%, transparent)}}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.offline-banner{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--surface-2);color:var(--text);font-size:var(--fs-s);border-radius:var(--radius-m);margin-top:var(--sp-3);display:flex}.select-trigger{align-items:center;gap:var(--sp-2);width:100%;min-height:var(--touch);padding:0 var(--sp-3) 0 var(--sp-4);border-radius:var(--radius-m);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-variant-numeric:tabular-nums;text-align:left;transition:border-color var(--dur-fast), box-shadow var(--dur-fast), background-color var(--dur-fast);font-weight:600;display:flex}@media (hover:hover){.select-trigger:hover{background:var(--surface-2)}}.select-trigger[aria-expanded=true]{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 25%, transparent)}.select-trigger[disabled]{opacity:.45;cursor:not-allowed}.select-trigger__value{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.select-trigger__chevron{color:var(--text-muted);transition:transform var(--dur-mid) var(--ease-out);flex:none}.select-trigger[aria-expanded=true] .select-trigger__chevron{transform:rotate(180deg)}.select-list{padding:var(--sp-1);outline:none;margin:0;list-style:none}.select-option{align-items:center;gap:var(--sp-3);min-height:48px;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-s);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-fast);display:flex}.select-list--sheet{padding:0}.select-list--sheet .select-option{min-height:56px;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-m)}.select-list--sheet .select-option+.select-option{margin-top:2px}.select-option[data-active=true]{background:var(--surface-2)}.select-list--sheet .select-option:active{background:var(--surface-pressed)}.select-list--sheet .select-option:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.select-option[aria-selected=true]{background:var(--primary-soft);color:var(--on-primary-soft)}.select-option[aria-selected=true][data-active=true]{background:color-mix(in srgb, var(--primary-soft) 80%, var(--primary) 20%)}.select-option__check{width:20px;color:var(--primary);flex:none;place-items:center;display:grid}.select-option[aria-selected=true] .select-option__check{color:inherit}.select-option__text{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.select-option__label{font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.select-option__hint{font-size:var(--fs-s);color:var(--text-muted)}.select-option[aria-selected=true] .select-option__hint{color:inherit;opacity:.85}.select-option__badge{padding:2px var(--sp-2);border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);font-size:var(--fs-xs);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.select-popover{z-index:200;overscroll-behavior:contain;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-m);box-shadow:var(--shadow-2);transform-origin:top;animation:popover-in var(--dur-mid) var(--ease-out);position:fixed;overflow-y:auto}.select-popover[data-up=true]{transform-origin:bottom}@keyframes popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}@media (hover:hover){.select-list--popover .select-option:hover{background:var(--surface-2)}.select-list--popover .select-option[aria-selected=true]:hover{background:color-mix(in srgb, var(--primary-soft) 80%, var(--primary) 20%)}}.select-list--popover:focus-visible{outline:none}.select-list--popover:focus-visible .select-option[data-active=true]{outline:2px solid var(--focus);outline-offset:-2px}.sheet--select{max-height:min(72dvh,640px)}.sheet--select .sheet__body{padding:var(--sp-2) var(--sp-3) calc(var(--sp-3) + var(--safe-bottom))}.auth{justify-content:center;align-items:center;gap:var(--sp-5);min-height:100dvh;padding:calc(var(--sp-6) + var(--safe-top)) var(--sp-4) calc(var(--sp-6) + var(--safe-bottom));flex-direction:column;display:flex}.auth__brand{align-items:center;gap:var(--sp-3);font-weight:700;font-size:var(--fs-xl);display:flex}.auth__logo{border-radius:var(--radius-m);background:var(--primary);width:44px;height:44px;color:var(--on-primary);place-items:center;display:grid}.auth__card{width:100%;max-width:420px;padding:var(--sp-5)}.auth__title{font-size:var(--fs-2xl);outline:none}.auth__subtitle{margin-top:var(--sp-2);margin-bottom:var(--sp-5)}.auth__title+.stack{margin-top:var(--sp-5)}.auth__footer{color:var(--text-muted);text-align:center}.auth__footer a,.auth__link{font-weight:600}.auth__link{align-self:center;align-items:center;min-height:44px;display:inline-flex}.auth__done{background:var(--success-soft);width:64px;height:64px;color:var(--success);border-radius:50%;place-items:center;margin:0 auto;display:grid}.page-title{font-size:var(--fs-2xl);margin-top:var(--sp-4);outline:none;font-weight:700}.resume{column-gap:var(--sp-4);row-gap:var(--sp-3);color:inherit;padding:var(--sp-4);border-radius:var(--radius-l);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-1);transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast);grid-template-columns:auto minmax(0,1fr);grid-template-areas:"cover body""cover cta";align-items:start;text-decoration:none;display:grid}@media (hover:hover){.resume:hover{box-shadow:var(--shadow-2)}}.resume:active{transform:scale(.99)}.resume>:first-child{grid-area:cover}.resume__body{gap:var(--sp-2);flex-direction:column;grid-area:body;min-width:0;display:flex}.resume__book{font-size:var(--fs-s);color:var(--text-muted);font-weight:600}.resume__chapter{font-size:var(--fs-l);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:700;display:-webkit-box;overflow:hidden}.resume__meta{font-size:var(--fs-s);color:var(--text-muted);font-variant-numeric:tabular-nums}.resume__cta{grid-area:cta;justify-self:start}.book-grid{gap:var(--sp-3);grid-template-columns:minmax(0,1fr);display:grid}@media (min-width:640px){.book-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}}@media (min-width:1100px){.book-grid{gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}}@media (min-width:768px){.resume{align-items:center;column-gap:var(--sp-5);padding:var(--sp-4) var(--sp-5);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"cover body cta"}.resume__cta{align-self:center}}.book-card{gap:var(--sp-4);padding:var(--sp-3);border-radius:var(--radius-l);color:inherit;background:var(--surface);border:1px solid var(--border);transition:background-color var(--dur-fast), transform var(--dur-fast) var(--ease-out);text-decoration:none;display:flex}@media (hover:hover){.book-card:hover{background:var(--surface-2)}}.book-card:active{transform:scale(.99)}.book-card__body{gap:var(--sp-1);min-width:0;padding-top:var(--sp-1);flex-direction:column;flex:1;display:flex}.book-card__title{font-weight:700;font-size:var(--fs-l);line-height:1.3}.book-card__author{color:var(--text-muted);font-size:var(--fs-s)}.book-card__status{gap:var(--sp-2);font-size:var(--fs-s);color:var(--text-muted);font-variant-numeric:tabular-nums;flex-direction:column;margin-top:auto;display:flex}.book-layout{gap:var(--sp-5);margin-top:var(--sp-4);grid-template-columns:minmax(0,1fr);display:grid}@media (min-width:1024px){.book-layout{gap:var(--sp-7);grid-template-columns:340px minmax(0,1fr);align-items:start}.book-main .tabs{margin-top:0}}.book-aside,.book-main{min-width:0}.book-head{gap:var(--sp-4);display:flex}.book-head__info{gap:var(--sp-2);flex-direction:column;flex:1;min-width:0;display:flex}.book-head__title{font-size:var(--fs-xl);outline:none;font-weight:700}@media (min-width:768px){.book-head__title{font-size:var(--fs-2xl)}}.book-desc{margin-top:var(--sp-4);color:var(--text);white-space:pre-line}.book-desc[data-clamped=true]{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.book-actions{gap:var(--sp-3);margin-top:var(--sp-4);flex-direction:column;display:flex}@media (min-width:560px){.book-actions{flex-flow:wrap}}.offline-box{gap:var(--sp-3);margin-top:var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-l);background:var(--surface-2);flex-direction:column;display:flex}.offline-box .progress{background:var(--border)}.offline-box__row{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.toc{min-width:0}.toc-toolbar{top:calc(var(--topbar-h) + var(--safe-top));z-index:5;gap:var(--sp-2);padding:var(--sp-3) 0;background:var(--bg);box-shadow:0 1px 0 var(--border);flex-wrap:wrap;display:flex;position:sticky}.toc--sheet .toc-toolbar{background:var(--surface);padding:var(--sp-3) var(--sp-4);margin:0 calc(var(--sp-4) * -1);top:0}.toc-search{flex:260px;min-width:0;position:relative}.toc-search>svg{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.toc-search .input{padding-left:44px;padding-right:48px}.toc-search .input::-webkit-search-cancel-button{display:none}.toc-search__clear{position:absolute;top:0;right:0}.toc-search-toggle{display:none}@media (max-width:639px){.toc-search-toggle{border:1px solid var(--border-strong);border-radius:var(--radius-m);flex:none;display:inline-grid}.toc:not(.toc--search-open) .toc-search,.toc.toc--search-open .toc-pager{display:none}.toc-search{flex-basis:100%}}.toc-pager{align-items:center;gap:var(--sp-1);flex:220px;min-width:0;display:flex}@media (min-width:640px){.toc-pager{flex:0 360px}}.toc-pager .icon-btn{border:1px solid var(--border-strong);border-radius:var(--radius-m)}.toc-pager__select{flex:1;min-width:0;position:relative}.toc-meta{justify-content:space-between;align-items:center;gap:var(--sp-2);min-height:44px;padding:var(--sp-2) 0;font-size:var(--fs-s);color:var(--text-muted);font-variant-numeric:tabular-nums;scroll-margin-top:calc(var(--topbar-h) + var(--safe-top) + 140px);flex-wrap:wrap;display:flex}.toc-meta__jump{min-height:40px;padding:0 var(--sp-3);border-radius:var(--radius-pill);background:var(--primary-soft);color:var(--on-primary-soft);font-weight:600;font-size:var(--fs-s);border:0;align-items:center;gap:6px;display:inline-flex}.toc-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.toc-list li{content-visibility:auto;contain-intrinsic-size:auto 56px}@media (min-width:1280px){.toc--page .toc-list{column-gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}.toc-row{align-items:center;gap:var(--sp-3);min-height:56px;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-m);color:inherit;transition:background-color var(--dur-fast);text-decoration:none;display:flex}@media (hover:hover){.toc-row:hover{background:var(--surface-2)}}.toc-row:active{background:var(--surface-pressed)}.toc-row__num{min-width:3.2em;color:var(--text-muted);font-size:var(--fs-s);font-variant-numeric:tabular-nums;flex:none;font-weight:600}.toc-row__title{flex:1;min-width:0;line-height:1.4}.toc-row__badge{padding:2px var(--sp-2);border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);font-size:var(--fs-xs);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.toc-row[aria-current=true]{background:var(--primary-soft);color:var(--on-primary-soft);font-weight:600}.toc-row[aria-current=true] .toc-row__num{color:inherit}.toc-footer{justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-4);display:flex}.toc-footer .btn{min-width:0;padding:0 var(--sp-3);font-variant-numeric:tabular-nums;flex:1 1 0}.toc-footer .btn .btn__label,.toc-footer .btn{white-space:nowrap}.bm-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bm{gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--radius-m);background:var(--surface);border:1px solid var(--border);align-items:flex-start;display:flex}.bm a{min-width:0;color:inherit;gap:var(--sp-1);flex-direction:column;flex:1;min-height:44px;text-decoration:none;display:flex}.bm__chapter{font-weight:600;font-size:var(--fs-s)}.bm__excerpt{color:var(--text-muted);font-size:var(--fs-s);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.settings-group{gap:var(--sp-4);flex-direction:column;display:flex}.segmented{gap:var(--sp-1);padding:var(--sp-1);border-radius:var(--radius-m);background:var(--surface-2);grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.segmented button{border-radius:var(--radius-s);min-height:44px;color:var(--text-muted);transition:background-color var(--dur-fast), color var(--dur-fast);padding:0 var(--sp-2);background:0 0;border:0;font-weight:600}.segmented button[aria-checked=true],.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.account-grid{gap:var(--sp-4);margin-top:var(--sp-5);grid-template-columns:minmax(0,1fr);display:grid}@media (min-width:768px){.account-grid{gap:var(--sp-5);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}.account-grid>.card{margin:0}.account-footer{gap:var(--sp-3);margin-top:var(--sp-6);padding-top:var(--sp-5);border-top:1px solid var(--border);flex-direction:column;display:flex}@media (min-width:768px){.account-footer{flex-direction:row;justify-content:space-between;align-items:center}.account-footer .btn{width:auto}}.stat-row{gap:var(--sp-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stat{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-m);background:var(--surface);border:1px solid var(--border)}.stat__value{font-size:var(--fs-xl);font-variant-numeric:tabular-nums;font-weight:700}.stat__label{font-size:var(--fs-s);color:var(--text-muted)}.user-list{gap:var(--sp-3);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}@media (min-width:1024px){.user-list{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(400px,1fr));align-items:start}}.user-card{gap:var(--sp-3);flex-direction:column;display:flex}.user-card__head{justify-content:space-between;gap:var(--sp-3);align-items:flex-start;display:flex}.user-card__email{overflow-wrap:anywhere;font-weight:600}.user-card__meta{font-size:var(--fs-s);color:var(--text-muted)}.link-box{gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--radius-m);background:var(--surface-2);flex-direction:column;display:flex}.link-box code{font-size:var(--fs-s);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.sheet--toc .sheet__body{padding-top:0}@media (min-width:768px){.sheet.sheet--toc{width:min(640px,100vw - 48px);height:min(80dvh,760px)}}.book-desc-wrap{margin-top:var(--sp-4)}.book-desc-wrap .book-desc{margin-top:0}.book-aside .book-actions{flex-direction:column}html[data-reader=light] body,.reader[data-theme=light]{--r-bg:#fbfaf7;--r-text:#22201c;--r-muted:#625c52;--r-bar:#fbfaf7;--r-border:#e4ded3;--r-accent:#8c3b1e}html[data-reader=sepia] body,.reader[data-theme=sepia]{--r-bg:#f3e9d6;--r-text:#3a2f22;--r-muted:#6a5a45;--r-bar:#f3e9d6;--r-border:#dccdb2;--r-accent:#7d3a1c}html[data-reader=dark] body,.reader[data-theme=dark]{--r-bg:#1a1a1e;--r-text:#d9d3c8;--r-muted:#a39d92;--r-bar:#1a1a1e;--r-border:#34343b;--r-accent:#eba27f}html[data-reader=black] body,.reader[data-theme=black]{--r-bg:#000;--r-text:#bfb9ae;--r-muted:#8f897f;--r-bar:#0b0b0b;--r-border:#26262a;--r-accent:#e39a77}html[data-reader] body{background:var(--r-bg)}.reader{--r-margin:22px;--r-max:calc(38 * var(--r-size,19px));background:var(--r-bg);color:var(--r-text);min-height:100dvh}.reader[data-margin=narrow]{--r-margin:14px}.reader[data-margin=wide]{--r-margin:36px}@media (min-width:768px){.reader{--r-margin:40px}.reader[data-margin=narrow]{--r-margin:24px;--r-max:calc(44 * var(--r-size,19px))}.reader[data-margin=wide]{--r-margin:64px;--r-max:calc(32 * var(--r-size,19px))}}.reader__text{font-family:var(--r-font);font-size:var(--r-size);line-height:var(--r-lh);text-align:var(--r-align);-webkit-hyphens:manual;hyphens:manual;overflow-wrap:break-word;font-optical-sizing:auto}.reader__text p{margin:0 0 .9em}.reader__chapter-title{font-family:var(--r-font);text-align:left;outline:none;margin:0 0 1.4em;font-size:1.35em;font-weight:700;line-height:1.3}.reader-scroll{max-width:calc(var(--r-max) + 2 * var(--r-margin));padding:calc(var(--topbar-h) + var(--safe-top) + 20px) max(var(--r-margin), var(--safe-right)) calc(96px + var(--safe-bottom)) max(var(--r-margin), var(--safe-left));margin:0 auto}.reader-paged{touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none;position:fixed;inset:0;overflow:hidden}.reader-paged__frame{width:min(100%, calc(var(--r-max) + 2 * var(--r-margin)));left:0;right:0;top:calc(var(--safe-top) + 28px);bottom:calc(var(--safe-bottom) + 36px);margin:0 auto;position:absolute;overflow:hidden}.reader-paged__content{height:100%;padding:0 var(--r-margin);column-fill:auto;will-change:transform}.reader-paged__content[data-animate=true]{transition:transform .26s var(--ease-out)}@media (prefers-reduced-motion:reduce){.reader-paged__content[data-animate=true]{transition:none}}.reader-paged__content p,.reader-paged__content .reader__chapter-title{break-inside:auto}.reader-paged__footer{left:0;right:0;bottom:calc(var(--safe-bottom) + 8px);text-align:center;font-size:var(--fs-xs);color:var(--r-muted);font-variant-numeric:tabular-nums;pointer-events:none;position:absolute}.reader-paged__header{width:min(calc(100% - 2 * var(--r-margin)), var(--r-max));left:0;right:0;top:calc(var(--safe-top) + 6px);font-size:var(--fs-xs);color:var(--r-muted);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;margin:0 auto;position:absolute;overflow:hidden}.chapter-end{align-items:stretch;gap:var(--sp-3);padding-top:var(--sp-5);border-top:1px solid var(--r-border);font-family:var(--font-ui);font-size:var(--fs-m);text-align:center;break-inside:avoid;flex-direction:column;margin:2.5em 0 1em;line-height:1.5;display:flex}.chapter-end__label{color:var(--r-muted);font-size:var(--fs-s)}.reader .btn--primary{--btn-bg:var(--r-accent);--btn-fg:var(--r-bg)}@media (hover:hover){.reader .btn--primary:hover{background:color-mix(in srgb, var(--r-accent) 88%, var(--r-text))}}.reader .btn--secondary{--btn-border:var(--r-border);--btn-fg:var(--r-text)}@media (hover:hover){.reader .btn--secondary:hover{background:color-mix(in srgb, var(--r-text) 8%, transparent)}}.next-btn{min-height:64px;padding:var(--sp-2) var(--sp-4);white-space:normal;flex-direction:column}.next-btn .btn__label{flex-direction:column;gap:2px!important}.next-btn small{opacity:.85;font-weight:500;font-size:var(--fs-s)}.rbar{z-index:var(--z-bar);background:var(--r-bar);color:var(--r-text);transition:transform var(--dur-mid) var(--ease-out), opacity var(--dur-mid) var(--ease-out);position:fixed;left:0;right:0}.rbar--top{padding-top:var(--safe-top);border-bottom:1px solid var(--r-border);top:0}.rbar--bottom{padding-bottom:var(--safe-bottom);border-top:1px solid var(--r-border);bottom:0}.rbar[data-hidden=true]{opacity:0;pointer-events:none;transition-timing-function:var(--ease-in);transition-duration:calc(var(--dur-mid) * .7)}.rbar--top[data-hidden=true]{transform:translateY(-100%)}.rbar--bottom[data-hidden=true]{transform:translateY(100%)}.rbar__row{align-items:center;gap:var(--sp-1);min-height:var(--topbar-h);max-width:var(--content-max);padding:0 max(var(--sp-1), var(--safe-left)) 0 max(var(--sp-1), var(--safe-right));margin:0 auto;display:flex}.rbar__title{min-width:0;padding:0 var(--sp-1);flex-direction:column;flex:1;line-height:1.25;display:flex}.rbar__title strong{font-size:var(--fs-m);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.rbar__title span{font-size:var(--fs-xs);color:var(--r-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.rbar__progress{min-width:0;font-size:var(--fs-s);color:var(--r-muted);font-variant-numeric:tabular-nums;flex-direction:column;flex:1;align-items:center;gap:6px;display:flex}.rbar__progress .progress{background:var(--r-border);width:100%;max-width:220px;height:4px}.rbar__progress .progress>span{background:var(--r-accent)}@media (hover:hover){.reader .icon-btn:hover{background:color-mix(in srgb, var(--r-text) 8%, transparent)}}.reader .icon-btn:active{background:color-mix(in srgb, var(--r-text) 14%, transparent)}.reader .icon-btn[disabled]{opacity:.35}.reader :focus-visible{outline-color:var(--r-accent)}.reader-loading{max-width:calc(var(--r-max) + 2 * var(--r-margin));padding:calc(var(--topbar-h) + var(--safe-top) + 20px) var(--r-margin) 0;flex-direction:column;gap:14px;margin:0 auto;display:flex}.reader-loading .skeleton{background:color-mix(in srgb, var(--r-text) 10%, transparent);opacity:.8;height:1em;animation:none}.reader-state{justify-content:center;align-items:center;gap:var(--sp-3);min-height:100dvh;padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--r-muted);flex-direction:column;display:flex}.reader-state h1{color:var(--r-text);font-size:var(--fs-l)}.rs{gap:var(--sp-5);flex-direction:column;display:flex}.rs__group{gap:var(--sp-2);flex-direction:column;display:flex}.rs__label{font-weight:600;font-size:var(--fs-s);justify-content:space-between;display:flex}.rs__size{align-items:center;gap:var(--sp-3);display:flex}.rs__size input[type=range]{accent-color:var(--primary);height:var(--touch);flex:1}.swatches{gap:var(--sp-2);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.swatch{align-items:center;gap:var(--sp-1);padding:var(--sp-1) 0;font-size:var(--fs-xs);color:var(--text-muted);background:0 0;border:0;flex-direction:column;min-height:72px;display:flex}.swatch__dot{border:1px solid var(--border-strong);width:40px;height:40px;transition:box-shadow var(--dur-fast);border-radius:50%;place-items:center;font-family:Literata,serif;font-weight:600;display:grid}.swatch[aria-checked=true]{color:var(--text);font-weight:600}.swatch[aria-checked=true] .swatch__dot{box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--primary)}.font-list{gap:var(--sp-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.font-opt{min-height:var(--touch);border-radius:var(--radius-m);border:1px solid var(--border);background:var(--surface);font-size:var(--fs-m);padding:0 var(--sp-3);transition:border-color var(--dur-fast), background-color var(--dur-fast)}.font-opt[aria-checked=true]{border-color:var(--primary);background:var(--primary-soft);color:var(--on-primary-soft);font-weight:600}.switch-row{justify-content:space-between;align-items:center;gap:var(--sp-3);min-height:var(--touch);text-align:left;background:0 0;border:0;width:100%;padding:0;display:flex}.switch-row__text{flex-direction:column;display:flex}.switch-row__text small{color:var(--text-muted);font-size:var(--fs-s)}.switch{background:var(--border-strong);width:52px;height:32px;transition:background-color var(--dur-fast);border-radius:16px;flex:none;position:relative}.switch:after{content:"";width:24px;height:24px;box-shadow:var(--shadow-1);transition:transform var(--dur-fast) var(--ease-out);background:#fff;border-radius:50%;position:absolute;top:4px;left:4px}.switch-row[aria-checked=true] .switch{background:var(--primary)}.switch-row[aria-checked=true] .switch:after{transform:translate(20px)}
