:root{--n-0: #ffffff;--n-25: #fbfbfa;--n-50: #f5f5f4;--n-100: #ebebe9;--n-200: #dcdcd8;--n-300: #c2c2bd;--n-400: #9a9a93;--n-500: #77776f;--n-600: #5a5a53;--n-700: #43433e;--n-800: #2b2b28;--n-900: #1a1a18;--n-950: #0f0f0e;--p-50: #e8f5ee;--p-100: #c7e7d6;--p-300: #6cbf94;--p-500: #1f8f5f;--p-600: #17784f;--p-700: #11603f;--p-800: #0d4a31;--ok-50: #e7f6ec;--ok-500: #1c8a45;--ok-700: #11602f;--warn-50: #fdf4e3;--warn-500: #b3771a;--warn-700: #82550f;--dang-50: #fdecec;--dang-500: #c1352f;--dang-700: #8d2521;--info-50: #e9f1fd;--info-500: #2a63c4;--info-700: #1d4489;--ok-text: var(--ok-700);--warn-text: var(--warn-700);--dang-text: var(--dang-700);--info-text: var(--info-700);--bg: var(--n-50);--bg-raised: var(--n-0);--bg-sunken: var(--n-100);--text: var(--n-900);--text-soft: var(--n-600);--text-faint: var(--n-500);--border: var(--n-200);--border-str: var(--n-300);--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.25rem;--s-6: 1.5rem;--s-8: 2rem;--s-10: 2.5rem;--s-12: 3rem;--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--t-xs: .75rem;--t-sm: .8125rem;--t-md: .9375rem;--t-lg: 1.0625rem;--t-xl: 1.375rem;--t-2xl: 1.75rem;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-full: 999px;--shadow-1: 0 1px 2px rgb(15 15 14 / .08);--shadow-2: 0 1px 3px rgb(15 15 14 / .1), 0 4px 12px rgb(15 15 14 / .06);--shadow-3: 0 2px 6px rgb(15 15 14 / .12), 0 12px 32px rgb(15 15 14 / .1);--tap: 44px;--tap-lg: 48px;--ease: cubic-bezier(.2, 0, .2, 1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: var(--n-950);--bg-raised: #171715;--bg-sunken: #0a0a09;--text: var(--n-50);--text-soft: var(--n-300);--text-faint: var(--n-400);--border: #2e2e2a;--border-str: #3f3f3a;--p-50: #0d2a1d;--p-100: #12402c;--ok-50: #0f2a1a;--warn-50: #2e2311;--dang-50: #2e1614;--info-50: #131f33;--ok-text: #74d193;--warn-text: #e6b45c;--dang-text: #f19189;--info-text: #8fb5f0;--p-600: #4cb383;--p-500: #5cc08f;--shadow-1: 0 1px 2px rgb(0 0 0 / .5);--shadow-2: 0 1px 3px rgb(0 0 0 / .6), 0 4px 12px rgb(0 0 0 / .4);--shadow-3: 0 2px 6px rgb(0 0 0 / .7), 0 12px 32px rgb(0 0 0 / .5)}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;overscroll-behavior-y:contain}body{font-family:var(--font);font-size:var(--t-md);line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.015em;line-height:1.2}h1{font-size:var(--t-2xl)}h2{font-size:var(--t-xl)}h3{font-size:var(--t-lg)}p{margin:0}a{color:var(--p-600);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--p-500);outline-offset:2px;border-radius:var(--r-sm)}::selection{background:var(--p-100);color:var(--p-800)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:flex;flex-direction:column;min-height:100dvh}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);padding-top:max(var(--s-3),env(safe-area-inset-top));background:var(--bg-raised);border-bottom:1px solid var(--border)}.app-brand{display:flex;align-items:center;gap:var(--s-2);min-height:var(--tap);font-weight:680;letter-spacing:-.02em;color:var(--text)}.app-brand:hover{text-decoration:none}.mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--p-600);color:#fff;font-size:var(--t-sm);font-weight:700}.grow{flex:1}.app-main{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:var(--s-5) var(--s-4) var(--s-12)}.app-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;gap:var(--s-1);padding:var(--s-2);padding-bottom:max(var(--s-2),env(safe-area-inset-bottom));background:var(--bg-raised);border-top:1px solid var(--border)}@media(max-width:899px){.app-main{padding-bottom:calc(var(--tap) + var(--s-8))}}.app-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--tap);padding:var(--s-2);border-radius:var(--r-md);color:var(--text-soft);font-size:var(--t-xs);font-weight:550;transition:background .12s var(--ease),color .12s var(--ease)}.app-nav a:hover{background:var(--bg-sunken);text-decoration:none}.app-nav a.active{color:var(--p-600);background:var(--p-50)}.app-nav .ico{font-size:1.125rem;line-height:1}@media(min-width:900px){.app-nav{position:static;padding:0;border-top:0;background:transparent}.app-nav a{flex:0 0 auto;flex-direction:row;gap:var(--s-2);padding:var(--s-2) var(--s-3);font-size:var(--t-sm)}.app-header{gap:var(--s-5)}}@media(max-width:559px){.sync .sync-text{display:none}.sync{padding:0 var(--s-2)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border:1px solid transparent;border-radius:var(--r-md);background:var(--bg-raised);color:var(--text);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .12s var(--ease),border-color .12s var(--ease),transform .06s var(--ease)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--p-600);border-color:var(--p-700);color:#fff}.btn-primary:hover:not(:disabled){background:var(--p-700)}.btn-secondary{background:var(--bg-raised);border-color:var(--border-str)}.btn-secondary:hover:not(:disabled){background:var(--bg-sunken)}.btn-ghost{background:transparent;color:var(--text-soft)}.btn-ghost:hover:not(:disabled){background:var(--bg-sunken);color:var(--text)}.btn-lg{min-height:var(--tap-lg);padding:0 var(--s-6);font-size:var(--t-lg)}.btn-block{width:100%}.stack>.btn:not(.btn-block),.stack-sm>.btn:not(.btn-block){align-self:flex-start}.field{display:flex;flex-direction:column;gap:var(--s-2)}.field label{font-size:var(--t-sm);font-weight:600;color:var(--text-soft)}.input{min-height:var(--tap-lg);padding:var(--s-3);border:1px solid var(--border-str);border-radius:var(--r-md);background:var(--bg-raised);color:var(--text);font:inherit;font-size:1rem;transition:border-color .12s var(--ease),box-shadow .12s var(--ease)}.input::placeholder{color:var(--text-faint)}.input:focus{outline:none;border-color:var(--p-500);box-shadow:0 0 0 3px var(--p-50)}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.card-pad{padding:var(--s-5)}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-3)}.section-title h2{font-size:var(--t-lg)}.muted{color:var(--text-soft)}.faint{color:var(--text-faint)}.text-sm{font-size:var(--t-sm)}.text-xs{font-size:var(--t-xs)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--s-3)}.stat{display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-4);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.stat-label{font-size:var(--t-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.stat-value{font-size:var(--t-2xl);font-weight:680;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}.stat-sub{font-size:var(--t-xs);color:var(--text-soft)}.stat.is-alert .stat-value{color:var(--dang-text)}.badge{display:inline-flex;align-items:center;gap:var(--s-1);padding:2px var(--s-2);border:1px solid transparent;border-radius:var(--r-full);font-size:var(--t-xs);font-weight:650;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-available{background:var(--n-50);color:var(--n-700);border-color:var(--n-200)}.badge-held{background:var(--warn-50);color:var(--warn-text);border-color:var(--warn-500)}.badge-unpaid{background:var(--dang-50);color:var(--dang-text);border-color:var(--dang-500)}.badge-partial{background:var(--warn-50);color:var(--warn-text);border-color:var(--warn-text)}.badge-paid{background:var(--ok-50);color:var(--ok-text);border-color:var(--ok-500)}.badge-checkedin{background:var(--info-50);color:var(--info-text);border-color:var(--info-500)}.badge-completed{background:var(--n-100);color:var(--n-600);border-color:var(--n-300)}.badge-cancelled{background:transparent;color:var(--text-faint);border-color:var(--border-str)}.badge-blocked{background:var(--n-200);color:var(--n-700);border-color:var(--n-400)}.badge-pending{background:repeating-linear-gradient(-45deg,var(--warn-50),var(--warn-50) 5px,transparent 5px,transparent 10px);color:var(--warn-text);border-color:var(--warn-500);border-style:dashed}.sync{display:inline-flex;align-items:center;gap:var(--s-2);min-height:32px;padding:0 var(--s-3);border:1px solid var(--border);border-radius:var(--r-full);background:var(--bg-raised);font-size:var(--t-xs);font-weight:600;color:var(--text-soft)}.sync .dot{width:8px;height:8px;border-radius:50%;background:var(--ok-500)}.sync.is-offline .dot{background:var(--warn-500)}.sync.is-issue .dot{background:var(--dang-500)}.auth-shell{display:grid;place-items:center;min-height:100dvh;padding:var(--s-5);background:radial-gradient(1200px 600px at 50% -10%,var(--p-50),transparent 60%),var(--bg)}.auth-card{width:100%;max-width:24rem;padding:var(--s-8) var(--s-6);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-3)}.auth-brand{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);margin-bottom:var(--s-6);text-align:center}.auth-brand .mark{width:44px;height:44px;border-radius:12px;font-size:var(--t-md)}.auth-form{display:flex;flex-direction:column;gap:var(--s-4)}.alert{display:flex;gap:var(--s-2);padding:var(--s-3);border:1px solid var(--dang-500);border-radius:var(--r-md);background:var(--dang-50);color:var(--dang-text);font-size:var(--t-sm);font-weight:550}.row{display:flex;align-items:center;gap:var(--s-3)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.stack{display:flex;flex-direction:column;gap:var(--s-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--s-2)}.wrap{flex-wrap:wrap}.empty{display:grid;place-items:center;gap:var(--s-2);padding:var(--s-10) var(--s-5);text-align:center;color:var(--text-soft);border:1px dashed var(--border-str);border-radius:var(--r-lg)}.boot{display:grid;place-items:center;min-height:100dvh;color:var(--text-soft);font-size:var(--t-sm)}#blazor-error-ui{display:none;position:fixed;left:0;right:0;bottom:0;z-index:1000;padding:var(--s-4);background:var(--n-900);color:var(--n-50);box-shadow:var(--shadow-3)}#blazor-error-ui .dismiss{cursor:pointer;float:right}.loading-progress,.loading-progress-text{display:none}.admin{display:grid;grid-template-columns:15rem 1fr;min-height:100dvh}.admin-side{display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-4);background:var(--bg-raised);border-right:1px solid var(--border)}.admin-side .app-brand{margin-bottom:var(--s-5)}.admin-side a{display:block;padding:var(--s-2) var(--s-3);border-radius:var(--r-md);color:var(--text-soft);font-weight:550;text-decoration:none}.admin-side a:hover{background:var(--bg-sunken);color:var(--text);text-decoration:none}.admin-side a.active{background:var(--p-50);color:var(--p-600)}.admin-main{padding:var(--s-6);max-width:72rem}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--t-sm)}.table th,.table td{padding:var(--s-3);text-align:left;border-bottom:1px solid var(--border)}.table th{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.table tbody tr:hover{background:var(--bg-sunken)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.card:has(>.table){overflow-x:auto}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:var(--s-4)}.badge-neutral{background:var(--bg-sunken);color:var(--text-soft);border-color:var(--border-str)}.chips{display:flex;flex-wrap:wrap;gap:var(--s-2)}.chip{min-height:var(--tap);padding:0 var(--s-4);border:1px solid var(--border-str);border-radius:var(--r-full);background:var(--bg-raised);color:var(--text-soft);font:inherit;font-size:var(--t-sm);font-weight:550;cursor:pointer}.chip:hover{background:var(--bg-sunken)}.chip-on{background:var(--p-600);border-color:var(--p-700);color:#fff}.chip-on:hover{background:var(--p-700)}.check{display:flex;align-items:flex-start;gap:var(--s-3);cursor:pointer}.check input{width:1.15rem;height:1.15rem;margin-top:2px;accent-color:var(--p-600);flex:none}.check>span{font-size:var(--t-sm)}@media(max-width:899px){.admin{grid-template-columns:1fr}.admin-side{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border)}.admin-side .app-brand{margin:0 var(--s-4) 0 0}.admin-side a{white-space:nowrap}.admin-main{padding:var(--s-4)}}
