@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;src:url('assets/fonts/be-vietnam-pro/400-latin.woff2') format('woff2');font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;src:url('assets/fonts/be-vietnam-pro/400-vietnamese.woff2') format('woff2');font-display:swap;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:Be Vietnam Pro;font-style:normal;font-weight:600;src:url('assets/fonts/be-vietnam-pro/600-latin.woff2') format('woff2');font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;src:url('assets/fonts/be-vietnam-pro/600-vietnamese.woff2') format('woff2');font-display:swap;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:Be Vietnam Pro;font-style:normal;font-weight:700;src:url('assets/fonts/be-vietnam-pro/700-latin.woff2') format('woff2');font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;src:url('assets/fonts/be-vietnam-pro/700-vietnamese.woff2') format('woff2');font-display:swap;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}

/* Shared UI tokens only. Canvas artwork keeps its own typography and paint. */
:root{
 --tg-button-font-size:var(--tg-text-base);
 --tg-font:"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",sans-serif;
 --tg-text-xs:12px;--tg-text-sm:13px;--tg-text-base:14px;--tg-text-md:16px;--tg-text-lg:18px;--tg-text-heading:20px;--tg-text-xl:24px;--tg-text-title:32px;
 --tg-ink:#14213d;--tg-muted:#58667d;--tg-soft:#67758a;--tg-primary:#2563eb;--tg-primary-hover:#1d4ed8;--tg-primary-soft:#eff5ff;
 --tg-surface:#fff;--tg-canvas:#f5f7fb;--tg-line:#dce3ef;--tg-danger:#ba3545;--tg-success:#12755a;
 --tg-icon-sm:18px;--tg-icon-md:20px;--tg-icon-stroke:1.7;--tg-radius-control:9px;--tg-control-height:48px;
 --studio-font-ui:var(--tg-font);--font-family:var(--tg-font);--ink:var(--tg-ink);--ink-muted:var(--tg-muted);--ink-soft:var(--tg-soft);
 --primary:var(--tg-primary);--primary-hover:var(--tg-primary-hover);--primary-soft:var(--tg-primary-soft);--canvas:var(--tg-canvas);--surface:var(--tg-surface);--line:var(--tg-line);
 --icon-stroke:var(--tg-icon-stroke);--icon-sm:var(--tg-icon-sm);--icon-md:var(--tg-icon-md);
 --text-xs:var(--tg-text-xs);--text-sm:var(--tg-text-sm);--text-base:var(--tg-text-base);--text-md:var(--tg-text-md);--text-lg:var(--tg-text-lg);--text-xl:var(--tg-text-xl);--text-2xl:26px;--text-3xl:var(--tg-text-title);
 --text-caption:var(--tg-text-xs);--text-control:var(--tg-text-base);--text-label:var(--tg-text-base);--text-error:var(--tg-text-base);
}

:root{--brand-blue-600:var(--tg-primary);--brand-blue-700:var(--tg-primary-hover);--brand-blue-50:var(--tg-primary-soft);--brand-ink:var(--tg-ink);--brand-muted:var(--tg-muted);--brand-soft:var(--tg-soft);--brand-canvas:var(--tg-canvas);--brand-line:var(--tg-line);--danger:var(--tg-danger);--success:var(--tg-success);}

/* Canonical spacing, shape, semantic state and layout tokens for every UI page. */
:root{
 --tg-space-0:0px;--tg-space-1:4px;--tg-space-2:8px;--tg-space-3:12px;--tg-space-4:16px;--tg-space-5:20px;--tg-space-6:24px;--tg-space-7:28px;--tg-space-8:32px;--tg-space-9:36px;--tg-space-10:40px;--tg-space-11:44px;--tg-space-12:48px;
 --tg-radius-xs:6px;--tg-radius-card:14px;--tg-radius-dialog:20px;--tg-radius-pill:999px;
 --tg-text-page:28px;--tg-target:44px;--tg-sidebar:260px;--tg-content-max:none;
 --tg-line-strong:#c6d2e2;--tg-warning:#906016;--tg-warning-soft:#fff8e9;--tg-warning-line:#f2dfb7;--tg-info:#267c9b;--tg-info-soft:#edf7fc;--tg-info-line:#d6e9f3;
 --tg-success-soft:#eaf7f0;--tg-danger-soft:#fff0f1;--tg-violet:#7a5ddd;--tg-violet-soft:#f2effc;--tg-chart-third:#89b6ee;--tg-overlay:#14213d66;--tg-focus:#9bbcf8;
 --tg-shadow-sm:0 2px 7px #14213d03;--tg-shadow-popover:0 12px 36px #14213d14;--tg-motion:160ms;
 --space-1:var(--tg-space-1);--space-2:var(--tg-space-2);--space-3:var(--tg-space-3);--space-4:var(--tg-space-4);--space-5:var(--tg-space-5);--space-6:var(--tg-space-6);--space-7:var(--tg-space-7);--space-8:var(--tg-space-8);--space-10:var(--tg-space-10);--space-12:var(--tg-space-12);
 --radius-control:var(--tg-radius-control);--radius-card:var(--tg-radius-card);--radius-dialog:var(--tg-radius-dialog);--radius-sm:var(--tg-radius-control);--radius-md:var(--tg-radius-card);--radius-lg:var(--tg-radius-dialog);--radius-pill:var(--tg-radius-pill);--target-size:var(--tg-target);
}

:root{--tg-sidebar-compact:70px;--tg-sidebar-toggle:36px;--tg-sidebar-toggle-top:50px;--tg-sidebar-toggle-shadow:0 3px 8px #14213d08;--tg-nav-active:#dbeafe;}

:root{--tg-focus-width:1px;--tg-focus-offset:2px;}

:root{--tg-calendar-cell:32px;--tg-calendar-cell-touch:40px;--tg-calendar-control:32px;}

:root{--tg-calendar-width:304px;}

/* Shared auth illustration effects; artwork pixels remain unchanged. */
:root{--tg-auth-art-shadow:drop-shadow(0 12px 9px color-mix(in srgb,var(--tg-ink) 16%,transparent));--tg-auth-art-shadow-compact:drop-shadow(0 5px 4px color-mix(in srgb,var(--tg-ink) 16%,transparent));}

:root{--tg-placeholder:color-mix(in srgb,var(--tg-muted) 52%,var(--tg-surface));}

/* Shared auth panel footprint for login/register, independent of the active form. */
:root{--tg-auth-panel-min-height:600px}
@media(min-width:761px) and (max-width:1000px){:root{--tg-auth-panel-min-height:624px}}
@media(max-width:760px){:root{--tg-auth-panel-min-height:560px}}
@media(max-width:760px) and (max-height:740px){:root{--tg-auth-panel-min-height:520px}}
