:root{--brand:#8e2453;--brand-hover:#6e1a40;--brand-soft:#f6e6ee;--brand-ink:#fff;--bg:#f7f3f1;--surface:#fff;--surface-2:#fbf8f7;--surface-sunken:#ede6e3;--overlay:#1f1a1c73;--text:#1f1a1c;--text-muted:#6b5f64;--text-faint:#9a8e92;--border:#e9e1de;--border-soft:#f2eae7;--border-dashed:#d9ccc8;--ok:#1f6b44;--ok-soft:#e6f4ec;--warn:#7a5000;--warn-soft:#fbf1dc;--info:#2f4c8c;--info-soft:#e8eefa;--danger:#b42318;--danger-soft:#fdecea;--wa-bubble:#e7f7e0;--font-display:"Fraunces", Georgia, serif;--font-body:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-base:14px;--fs-lg:15px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:28px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--r-sm:10px;--r-md:14px;--r-lg:18px;--r-xl:24px;--r-full:999px;--shadow-sm:0 1px 3px #1f1a1c14;--shadow-fab:0 8px 24px #8e245352;--shadow-sheet:0 -8px 40px #1f1a1c2e;--ease:cubic-bezier(.2, .8, .2, 1);--dur:.22s;--nav-h:72px;--safe-b:env(safe-area-inset-bottom,0px);--maxw:480px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--brand:#e0709e;--brand-hover:#ec8db3;--brand-soft:#3a1c2a;--brand-ink:#1a1416;--bg:#141012;--surface:#1e191b;--surface-2:#231d20;--surface-sunken:#2a2326;--overlay:#0009;--text:#f4eef0;--text-muted:#b7aaaf;--text-faint:#85797e;--border:#342c2f;--border-soft:#2b2427;--border-dashed:#4a3f43;--ok:#6fd3a0;--ok-soft:#173327;--warn:#f0c46a;--warn-soft:#3a2e15;--info:#9db7f2;--info-soft:#1c2640;--danger:#ff8a80;--danger-soft:#3d1a18;--wa-bubble:#1f3a1c;--shadow-fab:0 8px 24px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--brand:#e0709e;--brand-hover:#ec8db3;--brand-soft:#3a1c2a;--brand-ink:#1a1416;--bg:#141012;--surface:#1e191b;--surface-2:#231d20;--surface-sunken:#2a2326;--overlay:#0009;--text:#f4eef0;--text-muted:#b7aaaf;--text-faint:#85797e;--border:#342c2f;--border-soft:#2b2427;--border-dashed:#4a3f43;--ok:#6fd3a0;--ok-soft:#173327;--warn:#f0c46a;--warn-soft:#3a2e15;--info:#9db7f2;--info-soft:#1c2640;--danger:#ff8a80;--danger-soft:#3d1a18;--wa-bubble:#1f3a1c;--shadow-fab:0 8px 24px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;line-height:1.4}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tnum{font-variant-numeric:tabular-nums}.muted{color:var(--text-muted)}.app{max-width:var(--maxw);scrollbar-gutter:stable;min-height:100dvh;margin:0 auto;position:relative}.screen{padding:var(--s-6) var(--s-5) calc(var(--nav-h) + var(--safe-b) + 96px);gap:var(--s-4);animation:fade-up var(--dur) var(--ease);flex-direction:column;display:flex}.screen--modal{padding-bottom:calc(160px + var(--safe-b))}.header{justify-content:space-between;align-items:center;gap:var(--s-3);display:flex}.header__text{flex-direction:column;gap:2px;min-width:0;display:flex}.eyebrow{font-size:var(--fs-md);color:var(--text-muted);font-weight:500}.h1{font-family:var(--font-display);font-weight:600;font-size:var(--fs-3xl);letter-spacing:-.02em;margin:0;line-height:1.15}.h1--sm{font-size:var(--fs-2xl)}.h2{font-size:var(--fs-lg);margin:0;font-weight:700}.section-label{font-size:var(--fs-sm);color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;font-weight:700}.row-between{justify-content:space-between;align-items:baseline;gap:var(--s-2);display:flex}.stack{gap:var(--s-2);flex-direction:column;display:flex}.stack-lg{gap:var(--s-5);flex-direction:column;display:flex}.btn{justify-content:center;align-items:center;gap:var(--s-2);height:48px;padding:0 var(--s-4);border-radius:var(--r-md);font-size:var(--fs-base);white-space:nowrap;transition:background var(--dur) var(--ease), transform .12s var(--ease), opacity var(--dur);border:1px solid #0000;font-weight:700;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45}.btn--primary{background:var(--brand);color:var(--brand-ink)}.btn--primary:hover:not(:disabled){background:var(--brand-hover)}.btn--secondary{background:var(--surface);border-color:var(--border);color:var(--text);font-weight:600}.btn--soft{background:var(--brand-soft);color:var(--brand)}.btn--ghost{color:var(--brand);padding:0 var(--s-2);background:0 0;height:40px}.btn--danger{color:var(--danger);background:0 0;font-weight:600}.btn--danger-solid{background:var(--danger);color:#fff}.btn--block{width:100%}.btn--lg{height:52px;font-size:var(--fs-lg)}.btn--sm{height:44px;padding:0 var(--s-3);font-size:var(--fs-base);border-radius:12px}.btn__spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.icon-btn{background:var(--surface);border:1px solid var(--border);width:44px;height:44px;color:var(--text);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.icon-btn--bare{background:0 0;border-color:#0000;border-radius:22px}.fab{z-index:20;right:max(var(--s-5), calc((100vw - var(--maxw)) / 2 + var(--s-5)));bottom:calc(var(--nav-h) + var(--safe-b) + var(--s-5));background:var(--brand);width:56px;height:56px;color:var(--brand-ink);box-shadow:var(--shadow-fab);transition:transform .16s var(--ease);border:none;border-radius:18px;justify-content:center;align-items:center;display:flex;position:fixed}.fab:active{transform:scale(.94)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-4)}.card--flush{padding:0;overflow:hidden}.card--sunken{background:var(--surface-2);border-color:var(--border-soft)}.list-row{align-items:center;gap:var(--s-3);width:100%;min-height:64px;padding:var(--s-3) var(--s-4);border:none;border-top:1px solid var(--border-soft);text-align:left;color:var(--text);background:0 0;text-decoration:none;display:flex}.list-row:first-child{border-top:none}.list-row:active{background:var(--surface-2)}.list-row__main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.list-row__title{font-size:var(--fs-lg);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.list-row__sub{font-size:var(--fs-sm);color:var(--text-muted)}.list-letter{padding:var(--s-2) var(--s-4) var(--s-1);font-size:var(--fs-sm);color:var(--text-muted);background:var(--surface-2);border-top:1px solid var(--border-soft);font-weight:700}.list-letter:first-child{border-top:none}.kv{justify-content:space-between;gap:var(--s-3);padding:var(--s-3) 0;border-top:1px solid var(--border-soft);display:flex}.kv:first-child{border-top:none}.kv dt{font-size:var(--fs-md);color:var(--text-muted)}.kv dd{font-size:var(--fs-base);text-align:right;margin:0;font-weight:600}.pill{font-size:var(--fs-xs);border-radius:var(--r-full);flex-shrink:0;align-items:center;gap:5px;padding:3px 9px;font-weight:700;display:inline-flex}.pill--ok{background:var(--ok-soft);color:var(--ok)}.pill--warn{background:var(--warn-soft);color:var(--warn)}.pill--info{background:var(--info-soft);color:var(--info)}.pill--danger{background:var(--danger-soft);color:var(--danger)}.pill__dot{background:currentColor;border-radius:3px;width:6px;height:6px}.avatar{width:40px;height:40px;font-size:var(--fs-base);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.avatar--lg{width:48px;height:48px;font-size:16px}.avatar--sm{width:28px;height:28px;font-size:var(--fs-sm)}.avatar--0{background:var(--brand-soft);color:var(--brand)}.avatar--1{background:var(--info-soft);color:var(--info)}.avatar--2{background:var(--warn-soft);color:var(--warn)}.avatar--3{background:var(--ok-soft);color:var(--ok)}.week{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.day{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);height:64px;color:var(--text);transition:background var(--dur) var(--ease), color var(--dur);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.day__wd{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;font-weight:600}.day__n{font-size:17px;font-weight:700}.day__dot{background:0 0;border-radius:2px;width:4px;height:4px}.day--has .day__dot{background:var(--brand)}.day--today:not(.day--on){border-color:var(--brand)}.day--off{border-style:dashed;border-color:var(--border-dashed);background:0 0}.day--off .day__n,.day--off .day__wd{color:var(--text-faint)}.day--on{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.day--on .day__wd{color:inherit;opacity:.85}.day--on .day__dot{background:var(--brand-ink)}.week-nav{justify-content:space-between;align-items:center;display:flex}.stats{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px var(--s-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stat{padding-left:var(--s-3);border-left:1px solid var(--border-soft);flex-direction:column;gap:2px;display:flex}.stat:first-child{border-left:none;padding-left:0}.stat__label{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-weight:600}.stat__value{font-size:var(--fs-xl);font-variant-numeric:tabular-nums;font-weight:700}.timeline{flex-direction:column;gap:10px;display:flex}.tl-row{gap:var(--s-3);display:flex}.tl-time{width:44px;font-size:var(--fs-md);color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0;padding-top:14px;font-weight:600}.tl-time--now{color:var(--brand)}.appt{min-width:0;padding:var(--s-3) 14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);text-align:left;color:var(--text);transition:transform .12s var(--ease), opacity var(--dur);flex-direction:column;flex:1;gap:6px;display:flex;position:relative}.appt:active{transform:scale(.99)}.appt--past{opacity:.6}.appt--now{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.appt__top{justify-content:space-between;align-items:center;gap:var(--s-2);display:flex}.appt__name{font-size:var(--fs-lg);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.appt__sub{font-size:var(--fs-md);color:var(--text-muted)}.gap-slot{border-radius:var(--r-md);border:1.5px dashed var(--border-dashed);height:48px;color:var(--text-muted);font-size:var(--fs-md);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;font-weight:600;display:flex}.gap-slot:hover{border-color:var(--brand);color:var(--brand)}.nav{z-index:30;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(14px);border-top:1px solid var(--border-soft);position:fixed;bottom:0;left:0;right:0}.nav__inner{max-width:var(--maxw);height:var(--nav-h);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 auto;display:grid}.nav__item{color:var(--text-muted);font-size:var(--fs-xs);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-weight:600;display:flex}.nav__pill{border-radius:var(--r-full);width:56px;height:30px;transition:background var(--dur) var(--ease);justify-content:center;align-items:center;display:flex}.nav__item[aria-current=page]{color:var(--brand);font-weight:700}.nav__item[aria-current=page] .nav__pill{background:var(--brand-soft)}.field{gap:var(--s-2);flex-direction:column;display:flex}.field__hint{font-size:var(--fs-sm);color:var(--text-muted)}.field__error{font-size:var(--fs-sm);color:var(--danger);font-weight:600}.input-wrap{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);height:48px;transition:border-color var(--dur), box-shadow var(--dur);align-items:center;gap:10px;padding:0 14px;display:flex}.input-wrap:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.input-wrap--error{border-color:var(--danger)}.input-wrap__affix{font-size:var(--fs-md);color:var(--text-muted);flex-shrink:0}.input{background:0 0;border:none;outline:none;flex:1;min-width:0;height:100%;font-size:16px}.input::placeholder{color:var(--text-faint)}.grid-2{gap:var(--s-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.option{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);align-items:center;gap:var(--s-3);text-align:left;width:100%;min-height:56px;color:var(--text);transition:border-color var(--dur), box-shadow var(--dur);padding:10px 14px;display:flex}.option[aria-checked=true]{border-color:var(--brand);box-shadow:inset 0 0 0 .5px var(--brand)}.option__radio{border:2px solid var(--border-dashed);width:20px;height:20px;transition:border var(--dur) var(--ease);border-radius:50%;flex-shrink:0}.option[aria-checked=true] .option__radio{border:6px solid var(--brand)}.option__main{flex-direction:column;flex:1;min-width:0;display:flex}.option__title{font-size:var(--fs-base);font-weight:600}.option[aria-checked=true] .option__title{font-weight:700}.option__sub{font-size:var(--fs-sm);color:var(--text-muted)}.option__end{font-size:var(--fs-base);font-variant-numeric:tabular-nums;font-weight:600}.chips{gap:var(--s-2);scrollbar-width:none;margin:0 calc(var(--s-5) * -1);padding:2px var(--s-5);scroll-snap-type:x mandatory;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip-day{border:1px solid var(--border);background:var(--surface);scroll-snap-align:start;border-radius:12px;flex-direction:column;flex:0 0 56px;justify-content:center;align-items:center;height:60px;display:flex}.chip-day__wd{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.chip-day__n{font-size:16px;font-weight:700}.chip-day[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.chip-day[aria-pressed=true] .chip-day__wd{color:inherit}.chip-day:disabled{opacity:.4}.slots{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.slot{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);height:44px;font-size:var(--fs-base);font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.slot[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);font-weight:700}.slot:disabled{background:var(--surface-sunken);color:var(--text-faint);opacity:1;border-color:#0000;text-decoration:line-through}.slots-group{font-size:var(--fs-sm);color:var(--text-muted);margin-top:var(--s-1);font-weight:600}.seg{border-radius:var(--r-md);background:var(--surface-sunken);grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;display:grid}.seg__btn{border-radius:var(--r-sm);height:38px;color:var(--text-muted);background:0 0;border:none;font-weight:600}.seg__btn[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);font-weight:700}.switch{background:var(--border-dashed);width:48px;height:28px;transition:background var(--dur) var(--ease);border:none;border-radius:14px;flex-shrink:0;padding:3px;display:flex}.switch__knob{width:22px;height:22px;box-shadow:var(--shadow-sm);transition:transform var(--dur) var(--ease);background:#fff;border-radius:11px}.switch[aria-checked=true]{background:var(--brand)}.switch[aria-checked=true] .switch__knob{transform:translate(20px)}.progress{border-radius:var(--r-full);background:var(--surface-sunken);height:8px;overflow:hidden}.progress__bar{border-radius:inherit;background:var(--brand);height:100%;transition:width .5s var(--ease)}.action-bar{z-index:30;background:var(--surface);border-top:1px solid var(--border-soft);padding:14px var(--s-5) calc(var(--s-5) + var(--safe-b));position:fixed;bottom:0;left:0;right:0}.action-bar__inner{max-width:calc(var(--maxw) - 40px);gap:var(--s-3);flex-direction:column;margin:0 auto;display:flex}.backdrop{z-index:50;background:var(--overlay);animation:fade .2s var(--ease);position:fixed;inset:0}.sheet{z-index:51;max-width:var(--maxw);background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;max-height:92dvh;box-shadow:var(--shadow-sheet);padding:10px var(--s-5) calc(var(--s-6) + var(--safe-b));animation:sheet-in .32s var(--ease);touch-action:pan-y;flex-direction:column;gap:18px;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.sheet__handle{background:var(--border-dashed);border-radius:3px;flex-shrink:0;align-self:center;width:40px;height:5px}.sheet__title{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.toasts{z-index:60;pointer-events:none;left:0;right:0;bottom:calc(var(--nav-h) + var(--safe-b) + var(--s-3));align-items:center;gap:var(--s-2);padding:0 var(--s-4);flex-direction:column;display:flex;position:fixed}.toast{pointer-events:auto;width:100%;max-width:calc(var(--maxw) - 32px);align-items:center;gap:var(--s-3);border-radius:var(--r-md);color:#fff;font-size:var(--fs-base);animation:toast-in .26s var(--ease);background:#1f1a1c;padding:12px 12px 12px 16px;font-weight:600;display:flex;box-shadow:0 10px 30px #00000040}:root[data-theme=dark] .toast{color:#1f1a1c;background:#f4eef0}.toast__msg{flex:1}.toast__action{color:#f2a6c6;background:0 0;border:none;height:36px;padding:0 8px;font-weight:700}.toast--error{background:var(--danger)}.empty{border:1.5px dashed var(--border-dashed);border-radius:var(--r-lg);padding:28px var(--s-5);text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.empty__icon{background:var(--brand-soft);width:52px;height:52px;color:var(--brand);border-radius:16px;justify-content:center;align-items:center;display:flex}.empty__title{font-size:var(--fs-lg);font-weight:700}.empty__text{font-size:var(--fs-md);color:var(--text-muted);max-width:270px;line-height:1.45}.skel{border-radius:var(--r-md);background:linear-gradient(90deg, var(--surface-sunken) 0%, var(--surface-2) 50%, var(--surface-sunken) 100%);background-size:200% 100%;animation:1.2s linear infinite shimmer}.banner{gap:var(--s-3);padding:14px var(--s-4);border-radius:var(--r-md);font-size:var(--fs-md);align-items:flex-start;display:flex}.banner--warn{background:var(--warn-soft);color:var(--warn)}.banner--danger{background:var(--danger-soft);color:var(--danger)}.banner b{font-size:var(--fs-base);display:block}.step{align-items:center;gap:var(--s-3);border-top:1px solid var(--border-soft);text-align:left;width:100%;color:var(--text);background:0 0;border-bottom:0;border-left:0;border-right:0;padding:10px 0;display:flex}.step:first-child{border-top:none}.step__n{border:2px solid var(--border-dashed);width:32px;height:32px;color:var(--text-muted);font-size:var(--fs-md);border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.step--current .step__n{border-color:var(--brand);color:var(--brand)}.step--done .step__n{background:var(--ok-soft);color:var(--ok);border:none}.step--done .step__title{color:var(--text-muted);text-decoration:line-through}.step__title{font-size:var(--fs-base);font-weight:600}.step--current .step__title{font-weight:700}.bubble{background:var(--wa-bubble);max-width:300px;font-size:var(--fs-md);white-space:pre-line;border-radius:4px 14px 14px;align-self:flex-start;padding:10px 12px;line-height:1.45}.qr{border-radius:var(--r-md);background:#fff;align-self:center;width:220px;height:220px;padding:10px}.tl-ev{align-items:flex-start;gap:10px;display:flex}.tl-ev__icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.login{justify-content:center;gap:var(--s-6);min-height:100dvh;padding:var(--s-6) var(--s-5);flex-direction:column;max-width:420px;margin:0 auto;display:flex}.logo-mark{background:var(--brand);width:56px;height:56px;color:var(--brand-ink);font-family:var(--font-display);border-radius:18px;justify-content:center;align-items:center;font-size:28px;font-weight:600;display:flex}@keyframes fade{0%{opacity:0}}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.98)}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.08)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}@media (width>=768px){body{background:var(--surface-sunken)}.app{background:var(--bg);box-shadow:0 0 0 1px var(--border-soft)}}
