:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--portal-primary: #b61f3c;--portal-primary-dark: #8e1530;--portal-primary-soft: #fff0f3;--portal-ink: #251b1d;--portal-muted: #73666a;--portal-line: #eadfe1;--portal-surface: #ffffff;--portal-background: #faf6f5;--portal-success: #16744a;--portal-success-soft: #eaf8f1;--portal-danger: #b4233c;--portal-danger-soft: #fff0f1;--portal-shadow: 0 14px 40px rgb(76 33 42 / 8%);--platform-safe-area-top: 0px;--platform-safe-area-bottom: 0px;--platform-safe-area-left: 0px;--platform-safe-area-right: 0px}*{box-sizing:border-box}html{min-width:320px;background:var(--portal-background);overflow-x:hidden}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 12% 0%,rgb(255 225 231 / 70%),transparent 26rem),var(--portal-background);color:var(--portal-ink);line-height:1.5;overflow-x:hidden}button,input,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgb(182 31 60 / 28%);outline-offset:3px}a{color:var(--portal-primary-dark);font-weight:700;text-decoration-thickness:1px;text-underline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.15}h1{margin-bottom:.55rem;font-size:clamp(1.9rem,8vw,2.65rem);letter-spacing:-.045em}h2{margin-bottom:0;font-size:1.35rem;letter-spacing:-.025em}h3{margin-bottom:.35rem;font-size:1.05rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{min-height:100vh;padding-bottom:calc(5.5rem + max(env(safe-area-inset-bottom),var(--platform-safe-area-bottom)))}.topbar{position:sticky;z-index:20;top:0;border-bottom:1px solid rgb(234 223 225 / 78%);background:#faf6f5e0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.topbar__inner{display:flex;min-height:4.5rem;max-width:760px;align-items:center;justify-content:space-between;padding:calc(.75rem + max(env(safe-area-inset-top),var(--platform-safe-area-top))) max(1rem,var(--platform-safe-area-right)) .75rem max(1rem,var(--platform-safe-area-left));margin:0 auto}.topbar__actions{display:flex;flex:0 0 auto;gap:.5rem}.brand-lockup,.login-brand{display:flex;align-items:center;gap:.75rem}.brand-mark{position:relative;display:grid;width:2.55rem;height:2.55rem;flex:0 0 auto;place-items:center;overflow:hidden;border-radius:1rem 1rem 1rem .35rem;background:linear-gradient(145deg,#cf3151,#8f142f);box-shadow:0 8px 20px #b61f3c3d}.brand-mark:before,.brand-mark span{position:absolute;content:""}.brand-mark:before{width:1.55rem;height:1.05rem;border-bottom:2px solid white;border-radius:50%;transform:rotate(-10deg)}.brand-mark span{width:0;height:0;margin-top:-.45rem;border-right:.62rem solid transparent;border-bottom:1rem solid rgb(255 255 255 / 95%);border-left:.12rem solid transparent;transform:rotate(-8deg)}.brand-mark--large{width:3.35rem;height:3.35rem}.brand-copy{display:flex;min-width:0;flex-direction:column}.brand-copy small{color:var(--portal-muted);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.brand-copy strong{overflow:hidden;max-width:min(58vw,24rem);font-size:.98rem;text-overflow:ellipsis;white-space:nowrap}.icon-button{display:grid;width:2.8rem;height:2.8rem;flex:0 0 auto;place-items:center;border:1px solid var(--portal-line);border-radius:50%;background:var(--portal-surface);color:var(--portal-muted);cursor:pointer}.offline-banner{padding:.65rem 1rem;background:#5b3a20;color:#fff9f2;font-size:.86rem;text-align:center}.update-banner{display:flex;align-items:center;justify-content:center;gap:.8rem;padding:.65rem 1rem;background:var(--portal-primary-soft);color:var(--portal-primary-dark);font-size:.86rem;font-weight:700}.update-banner .button{min-height:2.25rem;padding:.35rem .75rem}.page-container{width:100%;max-width:760px;padding:1.25rem 1rem 2rem;margin:0 auto}.page-stack{display:grid;gap:1.35rem}.install-banner{display:grid;gap:.85rem;padding:1rem;margin-bottom:1.25rem;border:1px solid rgb(182 31 60 / 18%);border-radius:1.2rem;background:linear-gradient(145deg,#fff,var(--portal-primary-soft));box-shadow:var(--portal-shadow)}.install-banner strong{display:block;margin-bottom:.2rem}.install-banner p{margin-bottom:0;color:var(--portal-muted);font-size:.88rem}.install-banner__actions{display:flex;align-items:center;flex-wrap:wrap;gap:.7rem}.install-banner__actions .text-button{padding-right:.35rem;padding-left:.35rem}.welcome-panel,.page-heading{padding:.4rem 0 .15rem}.welcome-panel p,.page-heading p{max-width:35rem;margin-bottom:0;color:var(--portal-muted)}.eyebrow{display:inline-block;margin-bottom:.35rem;color:var(--portal-primary);font-size:.72rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.content-section,.schedule-groups,.schedule-day,.card-list{display:grid;gap:.85rem}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem}.section-heading .eyebrow{margin-bottom:.2rem}.section-heading--action a{flex:0 0 auto;padding-bottom:.1rem;font-size:.88rem}.single-child,.child-switcher{display:flex;min-width:0;align-items:center;gap:.85rem;padding:1rem;border:1px solid var(--portal-line);border-radius:1.2rem;background:#ffffffe0;box-shadow:var(--portal-shadow)}.single-child>span:last-child{display:flex;min-width:0;flex-direction:column}.single-child small,.child-switcher>span{color:var(--portal-muted);font-size:.78rem}.single-child strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.child-avatar{display:grid;width:2.8rem;height:2.8rem;flex:0 0 auto;place-items:center;border-radius:50%;background:var(--portal-primary-soft);color:var(--portal-primary);font-size:1.15rem;font-weight:800}.child-switcher{align-items:stretch;flex-direction:column;gap:.45rem}.child-switcher select{width:100%;min-height:3rem;padding:0 2.6rem 0 .85rem;border:1px solid var(--portal-line);border-radius:.8rem;background:var(--portal-surface);color:var(--portal-ink);font-weight:700}.subscription-card,.session-card,.booking-card,.notification-card,.settings-card,.state-card{min-width:0;padding:1rem;border:1px solid var(--portal-line);border-radius:1.2rem;background:var(--portal-surface);box-shadow:var(--portal-shadow)}.notification-card{display:grid;gap:.45rem}.notification-card h3,.notification-card p{margin-bottom:0}.notification-card p{color:var(--portal-muted);font-size:.92rem}.notification-card__meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;color:var(--portal-muted);font-size:.74rem}.notification-card__meta span{color:var(--portal-primary-dark);font-weight:800;text-transform:uppercase}.settings-card{display:grid;padding-top:.25rem;padding-bottom:.25rem}.preference-switch{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0;border-bottom:1px solid var(--portal-line)}.preference-switch:last-child{border-bottom:0}.preference-switch>span{display:grid;min-width:0}.preference-switch small{color:var(--portal-muted)}.preference-switch input{width:1.35rem;height:1.35rem;flex:0 0 auto;accent-color:var(--portal-primary)}.subscription-card{overflow:hidden;border-color:transparent;background:linear-gradient(var(--portal-surface),var(--portal-surface)) padding-box,linear-gradient(135deg,#b61f3c7a,#ebbac533) border-box}.subscription-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.subscription-card__head h3{margin-bottom:0}.subscription-card__badge,.status-pill{flex:0 0 auto;padding:.32rem .62rem;border-radius:999px;background:var(--portal-primary-soft);color:var(--portal-primary-dark);font-size:.72rem;font-weight:800}.balance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin:1rem 0 0}.balance-grid>div{min-width:0;padding:.7rem .35rem;border-radius:.8rem;background:#faf7f7;text-align:center}.balance-grid__accent{background:var(--portal-primary-soft)!important}.balance-grid dt{overflow:hidden;color:var(--portal-muted);font-size:clamp(.62rem,2.9vw,.75rem);text-overflow:ellipsis;white-space:nowrap}.balance-grid dd{margin:.15rem 0 0;font-size:1.45rem;font-weight:800}.unlimited-balance{display:flex;align-items:center;gap:.8rem;padding:.75rem 0}.unlimited-balance strong{color:var(--portal-primary);font-size:2.6rem;line-height:1}.unlimited-balance span{color:var(--portal-muted);font-size:.88rem}.subscription-card__period{padding-top:.8rem;margin:.75rem 0 0;border-top:1px solid var(--portal-line);color:var(--portal-muted);font-size:.82rem}.schedule-day h2{padding-top:.35rem;font-size:1.05rem;text-transform:capitalize}.session-card{display:grid;gap:.95rem}.session-card--booked{border-color:#16744a40;background:linear-gradient(145deg,#fff,#f5fbf8)}.session-card__main{display:grid;grid-template-columns:4.6rem minmax(0,1fr);gap:.85rem}.session-card__time{display:flex;align-items:center;align-self:start;gap:.3rem;color:var(--portal-primary-dark);font-size:.8rem}.session-card__time svg{flex:0 0 auto}.session-card__details p,.booking-card p{margin-bottom:.35rem;color:var(--portal-muted);font-size:.88rem}.meta-line{display:flex;min-width:0;align-items:flex-start;gap:.35rem}.meta-line svg{flex:0 0 auto;margin-top:.1rem}.session-card__footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-top:.85rem;border-top:1px solid var(--portal-line)}.spots{color:var(--portal-success);font-size:.78rem;font-weight:800}.spots--full{color:var(--portal-muted)}.booking-card{position:relative;padding-left:1.2rem}.booking-card:before{position:absolute;top:1rem;bottom:1rem;left:0;width:.25rem;border-radius:0 999px 999px 0;background:var(--portal-primary);content:""}.booking-card--cancelled:before,.booking-card--late_cancelled:before{background:#a3989b}.booking-card__topline{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.7rem}.booking-card__topline time{color:var(--portal-primary-dark);font-size:.88rem;font-weight:800}.booking-card--cancelled .status-pill,.booking-card--late_cancelled .status-pill{background:#f0edef;color:#655b5e}.text-button{min-height:2.75rem;padding:.45rem 0;border:0;background:transparent;font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.text-button--danger{color:var(--portal-danger)}.button{display:inline-flex;min-height:2.9rem;align-items:center;justify-content:center;padding:.65rem 1rem;border:1px solid transparent;border-radius:.85rem;font-weight:800;line-height:1.2;text-align:center;text-decoration:none;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.button:not(:disabled):active{transform:translateY(1px)}.button:disabled{cursor:not-allowed;opacity:.58}.button--primary{background:linear-gradient(145deg,#c62949,var(--portal-primary-dark));box-shadow:0 8px 18px #b61f3c33;color:#fff}.button--secondary{border-color:var(--portal-line);background:var(--portal-surface);color:var(--portal-ink)}.button--muted{background:#ede8e9;color:#62585b}.button--danger{background:var(--portal-danger);color:#fff}.button--wide{width:100%}.dashboard-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.75rem}.notice,.form-error{padding:.85rem 1rem;border:1px solid transparent;border-radius:.9rem;font-size:.9rem}.notice--success{border-color:#16744a2e;background:var(--portal-success-soft);color:#105d3b}.notice--error,.form-error{border-color:#b4233c26;background:var(--portal-danger-soft);color:var(--portal-danger)}.state-card{display:grid;justify-items:start;gap:.3rem;padding:1.2rem}.state-card h2,.state-card p{margin-bottom:0}.state-card p{color:var(--portal-muted);font-size:.9rem}.state-card .button{margin-top:.65rem}.state-card--error{border-color:#b4233c2e;background:var(--portal-danger-soft)}.state-card__icon{display:grid;width:2rem;height:2rem;place-items:center;border-radius:50%;background:var(--portal-danger);color:#fff;font-weight:900}.state-card__icon--calm{background:var(--portal-primary-soft);color:var(--portal-primary);font-size:1.5rem}.loading-state{display:grid;gap:.8rem}.skeleton-card{display:grid;gap:.7rem;padding:1.2rem;border:1px solid var(--portal-line);border-radius:1.2rem;background:var(--portal-surface)}.skeleton{height:.9rem;border-radius:999px;background:linear-gradient(90deg,#eee6e8 25%,#f8f4f5,#eee6e8 75%);background-size:200% 100%;animation:shimmer 1.25s infinite linear}.skeleton--title{width:45%;height:1.5rem}.skeleton--short{width:64%}.bottom-navigation{position:fixed;z-index:30;right:0;bottom:0;left:0;padding-bottom:max(env(safe-area-inset-bottom),var(--platform-safe-area-bottom));border-top:1px solid var(--portal-line);background:#fffffff0;box-shadow:0 -12px 30px #41252b14;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.bottom-navigation__inner{display:grid;max-width:540px;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 auto}.bottom-navigation__item{display:flex;min-width:0;min-height:4.65rem;align-items:center;justify-content:center;flex-direction:column;gap:.25rem;color:var(--portal-muted);font-size:.7rem;font-weight:700;text-decoration:none}.bottom-navigation__item.is-active{color:var(--portal-primary)}.bottom-navigation__item.is-active svg{filter:drop-shadow(0 3px 5px rgb(182 31 60 / 18%))}.dialog-backdrop{position:fixed;z-index:100;display:grid;padding:1rem;background:#23171b8c;top:0;right:0;bottom:0;left:0;place-items:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.confirm-dialog{width:100%;min-width:0;max-width:28rem;padding:1.35rem;border-radius:1.35rem;background:var(--portal-surface);box-shadow:0 24px 70px #1f11154d}.onboarding-backdrop{padding-top:max(1rem,env(safe-area-inset-top),var(--platform-safe-area-top));padding-bottom:max(1rem,env(safe-area-inset-bottom),var(--platform-safe-area-bottom))}.onboarding-dialog{width:100%;min-width:0;max-width:30rem;padding:clamp(1.25rem,6vw,2rem);border-radius:1.5rem;background:var(--portal-surface);box-shadow:0 24px 70px #1f11154d}.onboarding-dialog__progress{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;margin-bottom:1.4rem}.onboarding-dialog__progress span{height:.25rem;border-radius:999px;background:var(--portal-line)}.onboarding-dialog__progress span.is-complete{background:var(--portal-primary)}.onboarding-dialog__illustration{display:grid;width:4.25rem;height:4.25rem;margin-bottom:1.15rem;place-items:center;border-radius:1.55rem 1.55rem 1.55rem .5rem;background:linear-gradient(145deg,#cf3151,var(--portal-primary-dark));box-shadow:0 12px 24px #b61f3c38;color:#fff;font-size:1.55rem;font-weight:900}.onboarding-dialog h2{margin-bottom:.65rem;font-size:clamp(1.6rem,7vw,2.1rem)}.onboarding-dialog>p{min-height:4.5rem;margin-bottom:1.4rem;color:var(--portal-muted)}.onboarding-dialog__actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);align-items:center;gap:.7rem}.confirm-dialog__mark{display:grid;width:2.6rem;height:2.6rem;margin-bottom:.8rem;place-items:center;border-radius:50%;background:var(--portal-danger-soft);color:var(--portal-danger);font-size:1.2rem;font-weight:900}.confirm-dialog p{margin-bottom:1.25rem;color:var(--portal-muted)}.confirm-dialog__actions{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.login-page{display:grid;width:100%;min-width:0;min-height:100vh;padding:max(1rem,env(safe-area-inset-top),var(--platform-safe-area-top)) max(1rem,var(--platform-safe-area-right)) max(1rem,env(safe-area-inset-bottom),var(--platform-safe-area-bottom)) max(1rem,var(--platform-safe-area-left));place-items:center}.login-card{width:100%;min-width:0;max-width:28rem;padding:clamp(1.35rem,6vw,2.25rem);border:1px solid var(--portal-line);border-radius:1.5rem;background:#ffffffeb;box-shadow:0 24px 80px #4c212a24}.login-brand{margin-bottom:2.3rem;color:var(--portal-primary-dark);font-size:1.05rem;font-weight:900}.login-card__intro{margin-bottom:1.5rem;color:var(--portal-muted)}.login-form{display:grid;gap:1rem}.login-form label{display:grid;gap:.4rem;font-size:.85rem;font-weight:800}.login-form input{width:100%;min-height:3.1rem;padding:.65rem .85rem;border:1px solid #d9cdd0;border-radius:.85rem;background:#fff;color:var(--portal-ink)}.login-form input:disabled{background:#f4f0f1}.login-form__otp{text-align:center;font-size:1.35rem;font-weight:900;letter-spacing:.45rem}.login-help{margin-top:-.6rem;color:var(--portal-muted);font-size:.78rem}.login-code-actions,.login-registration{display:grid;gap:.8rem}.login-registration p{margin:0;color:var(--portal-muted)}.login-registration .button{margin-top:.5rem}.login-link-button{border:0;background:transparent;color:var(--portal-primary-dark);font:inherit;font-size:.87rem;font-weight:800;text-decoration:underline;text-underline-offset:.2rem;cursor:pointer}.login-link-button:disabled{color:var(--portal-muted);cursor:not-allowed}@keyframes shimmer{to{background-position:-200% 0}}@media(min-width:680px){.page-container{padding:2rem 1.5rem 3rem}.topbar__inner{padding-right:1.5rem;padding-left:1.5rem}.install-banner{grid-template-columns:minmax(0,1fr) auto;align-items:center}.page-stack{gap:1.75rem}.subscription-card,.session-card,.booking-card,.notification-card,.settings-card,.state-card{padding:1.25rem}.session-card__main{grid-template-columns:6rem minmax(0,1fr)}}@media(max-width:380px){.brand-copy small{display:none}.brand-copy strong{max-width:32vw}.dashboard-actions,.onboarding-dialog__actions{grid-template-columns:1fr}.onboarding-dialog__actions .text-button,.onboarding-dialog__actions .button--secondary{order:2}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root{--color-primary: #c41e3a;--color-background: #ffffff;--color-text: #1a1a1a;--color-muted: #6b7280;--color-danger: #dc2626;--color-success: #16a34a;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px}
