.button{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-control);font-size:var(--font-size-secondary);font-weight:var(--font-weight-medium);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);border:1px solid #0000;text-decoration:none;display:inline-flex}.button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.button:disabled{opacity:.55;cursor:not-allowed}.button--medium{min-height:44px;padding:var(--space-2) var(--space-5)}.button--small{min-height:36px;padding:var(--space-1) var(--space-3)}.button--primary{background-color:var(--color-primary);color:var(--color-text-inverted)}.button--primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.button--primary:active:not(:disabled){background-color:var(--color-primary-pressed)}.button--secondary{background-color:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.button--secondary:hover:not(:disabled){background-color:var(--color-background);border-color:var(--color-border-hover)}.button--secondary:active:not(:disabled){background-color:var(--color-border)}.button--ghost{color:var(--color-text);background-color:#0000}.button--ghost:hover:not(:disabled){background-color:var(--color-background)}.button--ghost:active:not(:disabled){background-color:var(--color-border)}.button--danger{background-color:var(--color-danger);color:var(--color-text-inverted)}.button--danger:hover:not(:disabled){background-color:var(--color-danger-hover)}.button--danger:active:not(:disabled){background-color:var(--color-danger-pressed)}.button__spinner{border-radius:var(--radius-pill);width:1em;height:1em;animation:button-spinner-rotate var(--motion-duration-spin) linear infinite;border:2px solid;border-right-color:#0000;flex:none}@keyframes button-spinner-rotate{to{transform:rotate(360deg)}}.spinner{align-items:center;gap:var(--space-sm);color:var(--color-text-muted);font-size:var(--font-size-sm);display:flex}.spinner__circle{border:2px solid var(--color-border);border-top-color:var(--color-primary);width:16px;height:16px;animation:spinner-rotate var(--motion-duration-spin) linear infinite;border-radius:50%}@keyframes spinner-rotate{to{transform:rotate(360deg)}}:root{--color-primary:#312b24;--color-primary-hover:#241f19;--color-primary-pressed:#1a1612;--color-primary-soft:#f1eee9;--color-success:#217a4e;--color-success-soft:#e8f4ed;--color-warning:#96650a;--color-warning-soft:#fbf2df;--color-danger:#b3271e;--color-danger-hover:#9a2119;--color-danger-pressed:#821b12;--color-danger-soft:#fceceb;--color-info:#2364c8;--color-info-soft:#eaf1fc;--color-clinical:#6b47c4;--color-clinical-soft:#f1ecfa;--color-layer-0:#faf9f7;--color-layer-1:#fff;--color-layer-2:#fff;--color-layer-3:#fff;--color-background:var(--color-layer-0);--color-surface:var(--color-layer-1);--color-border:#e8e4de;--color-border-strong:#cfc8bd;--color-border-hover:#b5ab9c;--color-text:#27221c;--color-text-muted:#6e675e;--color-text-inverted:#faf9f7;--color-scrim:#201a1466;--color-control-knob:#fff;--font-family-base:"Inter", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif;--font-size-display:2.5rem;--font-size-page-title:1.875rem;--font-size-section-title:1.5rem;--font-size-card-title:1.125rem;--font-size-body:1rem;--font-size-secondary:.875rem;--font-size-caption:.75rem;--font-size-xs:var(--font-size-caption);--font-size-sm:var(--font-size-secondary);--font-size-md:var(--font-size-body);--font-size-lg:var(--font-size-section-title);--font-size-xl:var(--font-size-page-title);--font-size-2xl:var(--font-size-display);--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-base:1.5;--line-height-tight:1.25;--letter-spacing-tight:-.01em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-xs:var(--space-1);--space-sm:var(--space-2);--space-md:var(--space-4);--space-lg:var(--space-6);--space-xl:var(--space-8);--space-2xl:var(--space-12);--radius-control:10px;--radius-control-sm:6px;--radius-card:16px;--radius-dialog:20px;--radius-pill:999px;--radius-sm:var(--radius-control);--radius-md:var(--radius-card);--shadow-1:0 1px 2px #30281e12;--shadow-2:0 6px 16px #30281e1a;--shadow-3:0 16px 40px #30281e24;--shadow-bar:0 -6px 16px #30281e0f;--shadow-card:var(--shadow-1);--shadow-raised:var(--shadow-2);--motion-duration-fast:.12s;--motion-duration-base:.18s;--motion-duration-complex:.25s;--motion-duration-spin:.8s;--motion-duration-ambient:2.4s;--motion-ease-standard:cubic-bezier(.4, 0, .2, 1);--motion-ease-enter:cubic-bezier(0, 0, .2, 1);--motion-ease-exit:cubic-bezier(.4, 0, 1, 1);--transition-fast:var(--motion-duration-fast) var(--motion-ease-standard);--transition-base:var(--motion-duration-base) var(--motion-ease-standard);--sidebar-width:240px;--topbar-height:56px;--bottom-nav-height:72px;--content-max-width:1280px;--content-width-document:880px;--content-width-medium:960px;--content-width-wide:1120px}:root[data-theme=dark]{--color-primary:#ece7df;--color-primary-hover:#f6f2ec;--color-primary-pressed:#fff;--color-primary-soft:#2e2922;--color-success:#6cc793;--color-success-soft:#1b3126;--color-warning:#e2ab4b;--color-warning-soft:#362a15;--color-danger:#ef8a80;--color-danger-hover:#f59d94;--color-danger-pressed:#f9aea6;--color-danger-soft:#3a211d;--color-info:#85b4f2;--color-info-soft:#1b2a3f;--color-clinical:#b6a0ee;--color-clinical-soft:#2a2340;--color-layer-0:#17140f;--color-layer-1:#201c17;--color-layer-2:#282320;--color-layer-3:#2f2a24;--color-border:#332e27;--color-border-strong:#4b453c;--color-border-hover:#665f54;--color-text:#ece7df;--color-text-muted:#a49c90;--color-text-inverted:#17140f;--color-scrim:#0a080699;--color-control-knob:#8d8578;--shadow-1:0 1px 2px #0006;--shadow-2:0 6px 16px #00000073;--shadow-3:0 16px 40px #0000008c;--shadow-bar:0 -6px 16px #0006}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/InterVariable.woff2)format("woff2")}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-family-base);font-size:var(--font-size-md);line-height:var(--line-height-base);font-variant-numeric:tabular-nums;color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{line-height:var(--line-height-tight)}h1,h2{letter-spacing:var(--letter-spacing-tight)}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a{color:var(--color-primary);text-underline-offset:2px;text-decoration:underline}@keyframes overlay-fade-in{0%{opacity:0}}@keyframes dialog-enter{0%{opacity:0;transform:scale(.96)}}@keyframes sheet-enter{0%{transform:translateY(100%)}}@keyframes drawer-enter{0%{transform:translate(100%)}}@keyframes overlay-fade-out{to{opacity:0}}@keyframes dialog-exit{to{opacity:0;transform:scale(.96)}}@keyframes sheet-exit{to{transform:translateY(100%)}}@keyframes drawer-exit{to{transform:translate(100%)}}@keyframes route-enter{0%{opacity:0;transform:translateY(10px)}}@keyframes surface-fade-in{0%{opacity:0}}@keyframes nav-selection-enter{0%{opacity:0;transform:scale(.92)}}@keyframes banner-drop-in{0%{opacity:0;transform:translate(-50%, calc(-1 * var(--space-2)))}}.centered-fill{place-items:center;height:100%;display:grid}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal{--portal-brand:var(--color-primary);background:var(--color-layer-0);min-height:100%}.portal-topbar{background:var(--color-layer-1);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex}.portal-topbar__identity{color:var(--color-text);align-items:center;gap:10px;text-decoration:none;display:flex}.portal-topbar__logo{object-fit:contain;border-radius:var(--radius-sm);width:32px;height:32px}.portal-topbar__name{font-weight:600}.portal-topbar__actions{align-items:center;gap:8px;display:flex}.portal-topbar__link{color:var(--color-text-muted);font-size:var(--font-size-sm);text-decoration:none}.portal-topbar__link:hover{color:var(--color-text)}.portal-topbar__greeting{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0;padding:8px 20px 0}.portal-page{flex-direction:column;gap:20px;max-width:900px;margin:0 auto;padding:20px;display:flex}.portal-page--narrow{max-width:480px}.portal-cover{object-fit:cover;border-radius:var(--radius-card);width:100%;max-height:240px}.portal-intro{flex-direction:column;gap:8px;display:flex}.portal-intro__title{font-size:var(--font-size-xl);margin:0}.portal-intro__tagline{color:var(--portal-brand);margin:0;font-weight:600}.portal-intro__description{color:var(--color-text-muted);white-space:pre-line;margin:0}.portal-contact{flex-wrap:wrap;gap:16px;margin:8px 0 0;display:flex}.portal-contact__item dt{font-size:var(--font-size-sm);color:var(--color-text-muted)}.portal-contact__item dd{margin:0}.portal-social{flex-wrap:wrap;gap:12px;display:flex}.portal-social a{color:var(--portal-brand)}.portal-section-title{font-size:var(--font-size-lg);margin:0}.portal-treatments,.portal-appointments{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.portal-treatment{gap:16px;display:flex}.portal-treatment__image{object-fit:cover;border-radius:var(--radius-sm);width:96px;height:96px}.portal-treatment__body{flex-direction:column;flex:1;gap:6px;display:flex}.portal-treatment__name{font-size:var(--font-size-md);margin:0}.portal-treatment__description{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.portal-treatment__meta{align-items:baseline;gap:10px;margin:0;display:flex}.portal-treatment__price{font-weight:600}.portal-treatment__original-price,.portal-treatment__duration{color:var(--color-text-muted);font-size:var(--font-size-sm)}.portal-form{flex-direction:column;gap:14px;display:flex}.portal-form__title{font-size:var(--font-size-lg);margin:0}.portal-form__actions{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.portal-form__hint,.portal-form__summary{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.portal-form__summary{color:var(--color-text);font-weight:600}.portal-slots{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.portal-appointment{flex-direction:column;gap:6px;display:flex}.portal-appointment__treatment{font-size:var(--font-size-md);margin:0}.portal-appointment__when{color:var(--color-text);margin:0}.portal-appointment__meta{color:var(--color-text-muted);font-size:var(--font-size-sm);gap:12px;margin:0;display:flex}.portal-card{background:var(--portal-brand);color:#fff;border-radius:var(--radius-card);aspect-ratio:1.586;flex-direction:column;justify-content:space-between;gap:12px;padding:20px;display:flex}.portal-card__header{align-items:center;gap:10px;display:flex}.portal-card__logo{object-fit:contain;border-radius:var(--radius-sm);background:#fff;width:32px;height:32px;padding:2px}.portal-card__organization{font-weight:600}.portal-card__holder{font-size:var(--font-size-lg);margin:0}.portal-card__visits{align-items:baseline;gap:8px;margin:0;display:flex}.portal-card__visits-value{font-size:40px;font-weight:700;line-height:1}.portal-card__last-visit{opacity:.85;font-size:var(--font-size-sm);margin:0}.portal-card__serial{letter-spacing:.08em;opacity:.85;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--font-size-sm);margin:0}.portal-card__actions{flex-direction:column;gap:10px;display:flex}.portal-empty{text-align:center;max-width:480px;margin:0 auto;padding:48px 20px}.portal-empty__title{font-size:var(--font-size-lg);margin:0 0 8px}.portal-empty__body{color:var(--color-text-muted);margin:0}
