.attendance-screen{max-width:960px;margin:0 auto;padding-bottom:calc(.5rem + env(safe-area-inset-bottom, 0px))}.attendance-screen__header{margin-bottom:1.5rem;text-align:center}.attendance-screen__title{margin:0 0 .375rem;font-size:1.75rem;font-weight:700;color:var(--heading-color);line-height:1.2}.attendance-screen__subtitle{margin:0;font-size:.9375rem;color:var(--bs-muted);line-height:1.5}.attendance-screen__loading,.attendance-screen__error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:1rem;color:var(--bs-muted)}.attendance-period-sticky{margin-bottom:1.5rem}.attendance-period-picker{display:flex;flex-direction:column;gap:0;padding:1rem 1.125rem;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-xl);box-shadow:var(--shadow-md)}.attendance-period-picker__row{display:flex;align-items:center;gap:.75rem}.attendance-period-picker__nav{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);background:var(--bs-surface);color:var(--bs-primary);cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.attendance-period-picker__nav svg{width:1.25rem;height:1.25rem}.attendance-period-picker__nav:hover{background:var(--surface-brand-subtle);border-color:rgba(var(--bs-primary-rgb), 0.35)}.attendance-period-picker__nav:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.attendance-period-picker__current{flex:1 1;min-width:0;text-align:center}.attendance-period-picker__label{display:block;font-size:1.125rem;font-weight:600;color:var(--heading-color);text-transform:capitalize;line-height:1.3}.attendance-period-picker__months{display:flex;gap:.375rem;margin-top:.75rem;padding:.25rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.attendance-period-picker__months::-webkit-scrollbar{display:none}.attendance-period-picker__pill{flex-shrink:0;min-width:44px;min-height:36px;padding:.375rem .625rem;border:1px solid rgba(0,0,0,0);border-radius:999px;background:var(--bs-gray-100);color:var(--bs-body-color);font-size:.8125rem;font-weight:500;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.attendance-period-picker__pill:hover{background:var(--surface-brand-subtle)}.attendance-period-picker__pill--active{background:var(--bs-primary);border-color:var(--bs-primary);color:#fff}.attendance-period-picker__pill:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}@media(max-width: 768px){.attendance-period-sticky{position:sticky;top:0;z-index:1020;margin-bottom:1rem;padding-top:env(safe-area-inset-top, 0px)}.attendance-period-picker{padding:.875rem 1rem;border-radius:var(--radius-xl);box-shadow:var(--shadow-md)}.attendance-period-picker__label{font-size:1rem}.attendance-period-picker__months{margin-top:.625rem}.attendance-screen__title{font-size:1.5rem}}.attendance-payment-banner{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;padding:1rem 1.125rem;background:linear-gradient(135deg, var(--surface-brand-subtle) 0%, var(--bs-surface) 100%);border:1px solid rgba(var(--bs-primary-rgb), 0.2);border-left:4px solid var(--bs-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.attendance-payment-banner__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-md);background:rgba(var(--bs-primary-rgb), 0.12);color:var(--bs-primary)}.attendance-payment-banner__icon svg{width:1.375rem;height:1.375rem}.attendance-payment-banner__content{flex:1 1;min-width:0}.attendance-payment-banner__title{margin:0 0 .375rem;font-size:1rem;font-weight:600;color:var(--heading-color)}.attendance-payment-banner__deadline{margin:0 0 .5rem;font-size:.9375rem;color:var(--bs-body-color);line-height:1.45}.attendance-payment-banner__deadline strong{color:var(--text-brand)}.attendance-payment-banner__note{display:flex;align-items:flex-start;gap:.375rem;margin:0;font-size:.875rem;color:var(--bs-muted);line-height:1.45}.attendance-payment-banner__note-icon{flex-shrink:0;margin-top:.125rem;color:var(--bs-primary)}.attendance-status-badge{display:inline-flex;align-items:center;justify-content:center}.attendance-status-badge--icon{width:1.5rem;height:1.5rem;border-radius:50%;font-size:.875rem}.attendance-status-badge--chip{gap:.375rem;padding:.25rem .625rem;border-radius:999px;font-size:.8125rem;font-weight:500;line-height:1.2}.attendance-status-badge--present{color:var(--badge-success-bg);background:rgba(var(--success-rgb), 0.2)}.attendance-status-badge--present.attendance-status-badge--chip{background:var(--badge-success-bg);color:var(--badge-success-fg)}.attendance-status-badge--sick{color:var(--badge-warning-bg);background:rgba(var(--warning-rgb), 0.2)}.attendance-status-badge--sick.attendance-status-badge--chip{background:var(--badge-warning-bg);color:var(--badge-warning-fg)}.attendance-status-badge--absent{color:var(--badge-danger-bg);background:rgba(var(--danger-rgb), 0.2)}.attendance-status-badge--absent.attendance-status-badge--chip{background:var(--badge-danger-bg);color:var(--badge-danger-fg)}.attendance-status-badge--makeup{color:var(--badge-info-bg);background:rgba(var(--info-rgb), 0.2)}.attendance-status-badge--makeup.attendance-status-badge--chip{background:var(--badge-info-bg);color:var(--badge-info-fg)}.attendance-status-badge__label{white-space:nowrap}.attendance-group-card{margin-bottom:1.5rem}.attendance-group-card.ui-card{overflow:visible;border:1px solid var(--bs-gray-200);box-shadow:var(--shadow-sm)}.attendance-group-header{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--bs-gray-200)}.attendance-group-header__sticky{min-width:0}.attendance-group-header__title{margin-bottom:.25rem;font-size:1.125rem;font-weight:600;color:var(--heading-color);line-height:1.3}.attendance-group-header__students{display:none;margin:0 0 .25rem;font-size:.8125rem;color:var(--bs-muted);line-height:1.3}.attendance-group-header__students-icon{margin-right:.25rem;font-size:.75rem}.attendance-group-header__trainer{display:none;align-items:flex-start;gap:.375rem;margin:0;font-size:.8125rem;color:var(--bs-body-color);line-height:1.3}.attendance-group-header__details{display:none}.attendance-group-header__meta{display:flex;flex-direction:column;gap:.5rem}.attendance-group-header__meta--desktop{display:flex}.attendance-group-header__row{display:flex;align-items:flex-start;gap:.5rem;font-size:.875rem;color:var(--bs-body-color)}.attendance-group-header__icon{flex-shrink:0;margin-top:.125rem;color:var(--bs-muted);font-size:.875rem}@media(min-width: 769px){.attendance-group-header__title{margin-bottom:.75rem}}@media(max-width: 768px){.attendance-group-header{position:sticky;top:0px;top:var(--attendance-period-sticky-height, 0px);z-index:1010;margin-left:-16px;margin-right:-16px;padding:.625rem 16px;margin-bottom:.75rem;background:color-mix(in srgb, var(--bs-surface) 96%, transparent);border-bottom:1px solid var(--bs-gray-200);box-shadow:var(--shadow-sm)}@supports((-webkit-backdrop-filter: blur(8px)) or (backdrop-filter: blur(8px))){.attendance-group-header{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}}.attendance-group-header__students{display:block}.attendance-group-header__trainer{display:flex}.attendance-group-header__details{display:block;margin-top:.5rem}.attendance-group-header__details-toggle{display:inline-flex;align-items:center;gap:.375rem;font-size:.8125rem;font-weight:500;color:var(--bs-primary);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.attendance-group-header__details-toggle::-webkit-details-marker{display:none}.attendance-group-header__details-chevron{font-size:.625rem;transition:transform .2s ease}.attendance-group-header__details[open] .attendance-group-header__details-chevron{transform:rotate(180deg)}.attendance-group-header__meta--desktop{display:none}.attendance-group-header__title{font-size:1rem;margin-bottom:.125rem}}.attendance-scroll-hint{display:none;font-size:.8125rem;color:var(--bs-muted);margin-bottom:.5rem}.attendance-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-md);border:1px solid var(--bs-gray-200)}.attendance-table-desktop{display:block}.attendance-table{width:100%;margin-bottom:0;min-width:100%;border-collapse:collapse;font-size:.875rem}.attendance-table__period-header{text-align:left;vertical-align:middle;padding:.75rem 1rem;border-bottom:1px solid var(--bs-gray-200);background:var(--surface-brand-subtle);color:var(--heading-color);font-weight:600;font-size:.9375rem;text-transform:capitalize}.attendance-table__period-header--spacer{display:none}.attendance-table__col-header{text-align:center;vertical-align:middle;padding:.625rem .5rem;border-bottom:1px solid var(--bs-gray-200);background:var(--bs-gray-100);color:var(--bs-body-color);font-weight:600;font-size:.8125rem;white-space:nowrap}.attendance-table__time{font-size:.6875rem;color:var(--bs-muted);font-weight:400}.attendance-table tbody tr{transition:background-color .15s ease}.attendance-table tbody tr:hover{background:rgba(var(--bs-primary-rgb), 0.03)}.attendance-table__cell{text-align:center;vertical-align:middle;padding:.5rem;border-bottom:1px solid var(--bs-gray-200);color:var(--bs-body-color);background:rgba(0,0,0,0)}.attendance-table__cell--name{text-align:left;font-weight:500;white-space:nowrap}.attendance-table__cell--payment{min-width:140px}.attendance-table__cell--has-notes{cursor:pointer;background:rgba(var(--bs-primary-rgb), 0.05);position:relative}.attendance-table__cell--has-notes:hover{background:rgba(var(--bs-primary-rgb), 0.1)}.attendance-table__cell--has-notes:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-2px}.attendance-table__cell-content{display:flex;flex-direction:column;align-items:center;gap:.125rem;position:relative;min-height:1.5rem}.attendance-table__makeup-date{font-size:.6875rem;color:var(--bs-muted);line-height:1.2}.attendance-table__note-icon{position:absolute;top:-4px;right:-4px;font-size:.625rem;color:#0ea5e9;color:var(--bs-info, #0ea5e9)}.attendance-table__footer{text-align:center;vertical-align:middle;padding:.5rem;border-bottom:1px solid var(--bs-gray-200);color:var(--bs-body-color);font-weight:600;background:var(--bs-gray-100);font-size:.8125rem}@media(min-width: 769px){.attendance-scroll-hint{display:block}}.attendance-payment-cell{display:flex;flex-direction:column;align-items:center;gap:.375rem;text-align:center}.attendance-payment-cell__badge{font-size:.75rem;font-weight:600;padding:.35rem .625rem;line-height:1.2;border-radius:999px;box-shadow:0 1px 2px rgba(var(--success-rgb), 0.25)}.attendance-payment-cell__badge.bg-success,.attendance-payment-cell__badge.text-bg-success{background-color:var(--badge-success-bg) !important;color:var(--badge-success-fg) !important}.attendance-payment-cell__amount{font-weight:600;font-size:.875rem;color:var(--bs-body-color)}.attendance-payment-cell__remaining,.attendance-payment-cell__debt{font-size:.8125rem;line-height:1.35;font-weight:500}.attendance-payment-cell__remaining{color:var(--text-danger-strong)}.attendance-payment-cell__debt{color:var(--text-warning-strong)}.attendance-payment-cell__cta{font-size:.8125rem;min-height:44px;padding:.5rem .875rem;border-radius:var(--radius-md);background:var(--gradient-primary) !important;border:none !important}.attendance-payment-cell__cta-inner{display:inline-flex;align-items:center;gap:.25rem;white-space:nowrap;line-height:1}.attendance-payment-cell__cta:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.attendance-payment-cell__details{font-size:.8125rem;min-height:44px;padding:.375rem .5rem;display:inline-flex;align-items:center;text-decoration:none}.attendance-payment-cell__details:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.attendance-payment-cell--compact{align-items:flex-end}.attendance-payment-cell--footer{width:100%;align-items:stretch;text-align:left;gap:.5rem}.attendance-payment-cell__top{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;width:100%}.attendance-payment-cell--footer .attendance-payment-cell__badge{flex-shrink:0;font-size:.6875rem;padding:.3125rem .5rem}.attendance-payment-cell--footer .attendance-payment-cell__amount{font-family:"Barlow Condensed","Barlow",sans-serif;font-size:1.25rem;font-weight:700;line-height:1.1;color:var(--heading-color);white-space:nowrap}.attendance-payment-cell--footer .attendance-payment-cell__remaining,.attendance-payment-cell--footer .attendance-payment-cell__debt{font-size:.75rem}.attendance-payment-cell--footer .attendance-payment-cell__cta{width:100%;margin-top:.125rem;min-height:40px;border-radius:var(--radius-md);font-weight:600}.attendance-payment-cell--footer .attendance-payment-cell__details{align-self:center;min-height:auto;padding:.25rem .5rem}.attendance-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-lg)}.attendance-legend__item{display:inline-flex;align-items:center}.attendance-makeup{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--bs-gray-200)}.attendance-makeup__title{font-weight:600;margin-bottom:.5rem;color:var(--bs-body-color)}.attendance-makeup__list{padding-left:1.25rem;color:var(--bs-body-color)}.attendance-mobile-cards{display:none}.attendance-mobile-card{border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);padding:1rem;box-shadow:var(--shadow-sm);background:var(--bs-surface)}.attendance-mobile-card__header{margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--bs-gray-200)}.attendance-mobile-card__days{display:grid;grid-template-columns:repeat(auto-fill, minmax(72px, 1fr));grid-gap:.5rem;gap:.5rem;margin-bottom:1rem}.attendance-mobile-card__footer{display:grid;grid-template-columns:minmax(0, 0.95fr) minmax(0, 1.05fr);grid-gap:.625rem;gap:.625rem;margin-top:.25rem;padding:.75rem;background:color-mix(in srgb, var(--surface-brand-subtle) 40%, var(--bs-gray-100));border:1px solid var(--bs-gray-200);border-radius:var(--radius-lg)}.attendance-mobile-card__stat{display:flex;flex-direction:column;gap:.375rem;min-width:0;padding:.625rem .75rem;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.attendance-mobile-card__stat-label{font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-meta);line-height:1.2}.attendance-mobile-card__stat-value{font-family:"Barlow Condensed","Barlow",sans-serif;font-size:1.375rem;font-weight:700;line-height:1;letter-spacing:.02em;color:var(--heading-color)}.attendance-mobile-card__progress{height:5px;margin-top:.125rem;border-radius:999px;background:var(--bs-gray-200);overflow:hidden}.attendance-mobile-card__progress-fill{display:block;height:100%;border-radius:inherit;background:var(--gradient-primary);transition:width 240ms ease;transition:width var(--motion-base, 240ms) ease}.attendance-mobile-card__payment{display:flex;min-width:0;padding:.625rem .75rem;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.attendance-mobile-day{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem .25rem;border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);background:var(--bs-gray-100);min-height:72px;cursor:default;transition:background-color .2s ease,border-color .2s ease}.attendance-mobile-day--active{background:rgba(var(--bs-primary-rgb), 0.08);border-color:rgba(var(--bs-primary-rgb), 0.25)}.attendance-mobile-day--has-notes{border-color:#0ea5e9;border-color:var(--bs-info, #0ea5e9);background:rgba(var(--bs-primary-rgb), 0.1);cursor:pointer}.attendance-mobile-day--has-notes:hover{background:rgba(var(--bs-primary-rgb), 0.16)}.attendance-mobile-day--has-notes:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.attendance-mobile-day__label{font-size:.6875rem;font-weight:600;color:var(--bs-body-color);text-transform:uppercase}.attendance-mobile-day__time{font-size:.6875rem;color:var(--bs-body-color);opacity:.72}.attendance-mobile-day__status{font-size:.875rem;min-height:1rem;display:flex;align-items:center;justify-content:center}.attendance-mobile-day__note-badge{display:inline-flex;align-items:center;gap:.125rem;font-size:.5625rem;color:#0ea5e9;color:var(--bs-info, #0ea5e9);font-weight:600;text-transform:uppercase;letter-spacing:.02em}@media(max-width: 768px){.attendance-table-desktop{display:none}.attendance-mobile-cards{display:flex;flex-direction:column;gap:1rem}.attendance-mobile-card__footer{grid-template-columns:1fr}.attendance-mobile-card__payment{width:100%}}@media(prefers-reduced-motion: reduce){.attendance-period-picker__nav,.attendance-period-picker__pill,.attendance-group-header__details-chevron,.attendance-table tbody tr,.attendance-mobile-day,.attendance-mobile-card__progress-fill{transition:none}}
.attendance-notes__card{border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);background:var(--bs-surface);box-shadow:var(--shadow-sm)}.attendance-notes__title{margin-bottom:0;color:var(--bs-body-color)}.attendance-notes__meta-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;color:var(--bs-body-color)}.attendance-notes__icon{color:var(--bs-muted);flex-shrink:0}.attendance-notes__note-block{background:var(--bs-gray-100);border:1px solid var(--bs-gray-200);border-radius:var(--radius-sm);padding:1rem;color:var(--bs-body-color)}.attendance-notes__note-block p{white-space:pre-wrap;margin-bottom:0}.attendance-notes__empty{text-align:center;color:var(--bs-muted);padding:2rem 0}
.profile-page{max-width:480px;margin-inline:auto}@keyframes profile-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.spinner{animation:profile-spin 1s linear infinite}.profile-form{display:flex;flex-direction:column;gap:1.25rem}.profile-form__avatar{display:flex;justify-content:center;padding:.5rem 0}.profile-form__card{display:flex;flex-direction:column;gap:1rem;padding:1rem;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.profile-form__group{display:flex;flex-direction:column;gap:.375rem}.profile-form__label{margin:0;font-size:.8125rem;font-weight:500;color:var(--bs-muted)}.profile-form__input,.profile-form__select{width:100%;padding:.75rem .875rem;font-size:.9375rem;color:var(--bs-body-color);background:var(--bs-gray-100);border:1px solid var(--bs-gray-200);border-radius:var(--radius-sm);transition:border-color .2s ease,box-shadow .2s ease}.profile-form__input::placeholder,.profile-form__select::placeholder{color:var(--bs-muted);opacity:.7}.profile-form__input:focus,.profile-form__select:focus{outline:none;border-color:var(--bs-primary);box-shadow:0 0 0 3px rgba(var(--bs-primary-rgb), 0.15)}.profile-form__select{cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 viewBox=%270 0 12 12%27%3E%3Cpath fill=%27%23475569%27 d=%27M6 8L1 3h10z%27/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .875rem center;padding-right:2.25rem}.profile-form__submit{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:48px;padding:.875rem 1rem;font-size:.9375rem;font-weight:600;color:#fff;background:var(--gradient-primary);border:none;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;touch-action:manipulation;transition:box-shadow .2s ease,opacity .2s ease}.profile-form__submit:hover:not(:disabled){box-shadow:var(--shadow-md)}.profile-form__submit:disabled{opacity:.65;cursor:not-allowed}.profile-form__submit:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.profile-setting-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:52px;padding:.75rem 1rem}.profile-setting-row__left{display:flex;align-items:center;gap:.875rem;min-width:0}.profile-setting-row__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:10px;background:var(--surface-brand-subtle);color:var(--text-brand);font-size:.9375rem}.profile-setting-row__label{margin:0;font-size:.9375rem;font-weight:500;color:var(--bs-body-color);cursor:pointer}.profile-setting-row__switch{flex-shrink:0;margin:0}.profile-setting-row__switch .form-check-input{width:2.75rem;height:1.5rem;cursor:pointer}.profile-setting-row__switch .form-check-input:checked{background-color:var(--bs-primary);border-color:var(--bs-primary)}.profile-setting-row__switch .form-check-input:focus{box-shadow:0 0 0 3px rgba(var(--bs-primary-rgb), 0.2)}.profile-setting-action{display:block;width:100%;padding:.625rem 1rem;font-size:.8125rem;font-weight:500;color:var(--bs-muted);text-align:center;text-decoration:none;background:rgba(0,0,0,0);border:none;border-top:1px solid var(--bs-gray-200);cursor:pointer;touch-action:manipulation;transition:color .2s ease,background-color .2s ease}.profile-setting-action:hover{color:var(--text-brand);background:rgba(var(--bs-primary-rgb), 0.04)}.profile-setting-action:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-2px}.profile-menu-item--button{width:100%;border:none;background:rgba(0,0,0,0);text-align:left;font:inherit}.profile-menu-item--danger{color:var(--text-danger-strong)}.profile-menu-item--danger .profile-menu-item__icon{background:rgba(220,38,38,.08);color:var(--text-danger-strong)}.profile-menu-item--danger .profile-menu-item__chevron{color:var(--text-danger-strong);opacity:.5}.profile-menu-item--danger:hover{background:rgba(220,38,38,.04)}.profile-toggle-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.875rem 1rem}.profile-toggle-row:not(:last-child){border-bottom:1px solid var(--bs-gray-200)}.profile-toggle-row__left{display:flex;align-items:flex-start;gap:.875rem;flex:1 1;min-width:0}.profile-toggle-row__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;margin-top:.125rem;border-radius:10px;background:var(--surface-brand-subtle);color:var(--text-brand);font-size:.9375rem}.profile-toggle-row__info{flex:1 1;min-width:0}.profile-toggle-row__title{margin:0;font-size:.9375rem;font-weight:500;color:var(--bs-body-color);line-height:1.3}.profile-toggle-row__description{margin:.25rem 0 0;font-size:.8125rem;color:var(--bs-muted);line-height:1.4}.profile-toggle-row__controls{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;flex-shrink:0;padding-top:.125rem}.profile-toggle-row__switch{margin:0}.profile-toggle-row__switch .form-check-input{width:2.75rem;height:1.5rem;cursor:pointer}.profile-toggle-row__switch .form-check-input:checked{background-color:var(--bs-primary);border-color:var(--bs-primary)}.profile-toggle-row__switch .form-check-input:focus{box-shadow:0 0 0 3px rgba(var(--bs-primary-rgb), 0.2)}.profile-toggle-row__action{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--text-danger-strong);background:rgba(220,38,38,.06);border:1px solid rgba(220,38,38,.18);border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation;transition:background-color .2s ease,border-color .2s ease}.profile-toggle-row__action:hover:not(:disabled){background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.28)}.profile-toggle-row__action:disabled{opacity:.6;cursor:not-allowed}.profile-form__password{position:relative}.profile-form__password .profile-form__input{padding-right:2.75rem}.profile-form__toggle-password{position:absolute;right:.375rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;color:var(--bs-muted);background:rgba(0,0,0,0);border:none;border-radius:var(--radius-sm);cursor:pointer}.profile-form__toggle-password:hover{color:var(--bs-body-color)}.profile-form__toggle-password:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.profile-form__alert{padding:.75rem 1rem;font-size:.875rem;line-height:1.45;border-radius:var(--radius-sm)}.profile-form__alert--info{color:var(--text-info-strong);background:rgba(3,105,161,.08);border:1px solid rgba(3,105,161,.15)}.profile-form__alert--error{color:var(--text-danger-strong);background:rgba(220,38,38,.06);border:1px solid rgba(220,38,38,.15)}.profile-form__link-wrap{text-align:right}.profile-form__link{font-size:.875rem;font-weight:500;color:var(--text-brand);text-decoration:none}.profile-form__link:hover{text-decoration:underline}@media(prefers-reduced-motion: reduce){.profile-form__input,.profile-form__select,.profile-form__submit,.profile-setting-action,.profile-toggle-row__action{transition:none}}.support-page{display:flex;flex-direction:column;gap:1.25rem}.support-tabs{display:flex;gap:.25rem;padding:.25rem;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.support-tabs__tab{flex:1 1;min-height:40px;padding:.5rem .75rem;font-size:.875rem;font-weight:500;color:var(--bs-muted);background:rgba(0,0,0,0);border:none;border-radius:var(--radius-md);cursor:pointer;touch-action:manipulation;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}.support-tabs__tab--active{color:var(--text-brand);background:var(--surface-brand-subtle);box-shadow:var(--shadow-sm)}.support-tabs__tab:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.support-card{background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.support-item{display:block;width:100%}.support-item__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-height:56px;margin:0;padding:.75rem 1rem;border:none;background:rgba(0,0,0,0);color:inherit;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;-webkit-appearance:none;appearance:none;transition:background-color .2s ease}.support-item__header:hover{background:rgba(var(--bs-primary-rgb), 0.04)}.support-item__header:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-2px}.support-item:not(:last-child) .support-item__header{border-bottom:1px solid var(--bs-gray-200)}.support-item__left{display:flex;align-items:center;gap:.875rem;min-width:0}.support-item__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:10px;background:var(--surface-brand-subtle);color:var(--text-brand);font-size:.9375rem}.support-item__icon--facebook{background:rgba(24,119,242,.1);color:#1877f2}.support-item__icon--instagram{background:rgba(228,64,95,.1);color:#e4405f}.support-item__title{font-size:.9375rem;font-weight:500;color:var(--bs-body-color)}.support-item__subtitle{margin-top:.125rem;font-size:.8125rem;color:var(--bs-muted);line-height:1.35}.support-item__chevron{flex-shrink:0;font-size:.75rem;color:var(--bs-muted);opacity:.55;transition:transform .2s ease,opacity .2s ease}.support-item__chevron--expanded{transform:rotate(180deg);opacity:.85}.support-item__body{padding:0 1rem 1rem;border-top:1px solid var(--bs-gray-200);background:rgba(var(--bs-primary-rgb), 0.02)}.support-staff{padding:.75rem 0;cursor:pointer}.support-staff:not(:last-child){border-bottom:1px solid var(--bs-gray-200)}.support-staff__header{display:flex;align-items:flex-start;gap:.75rem}.support-staff__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;margin-top:.125rem;border-radius:8px;background:var(--surface-brand-subtle);color:var(--text-brand);font-size:.875rem}.support-staff__title{font-size:.9375rem;font-weight:500;color:var(--bs-body-color);margin-bottom:.25rem}.support-staff__description{font-size:.8125rem;color:var(--bs-muted);line-height:1.4}.support-staff__form{margin-top:.75rem;display:flex;flex-direction:column;gap:.75rem}.support-staff__textarea{width:100%;min-height:88px;padding:.75rem;font-size:.875rem;color:var(--bs-body-color);background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-sm);resize:vertical;transition:border-color .2s ease,box-shadow .2s ease}.support-staff__textarea:focus{outline:none;border-color:var(--bs-primary);box-shadow:0 0 0 3px rgba(var(--bs-primary-rgb), 0.15)}.support-link{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 0;font-size:.875rem;font-weight:500;color:var(--text-brand);text-decoration:none}.support-link:hover{text-decoration:underline}.support-submit{align-self:flex-start;min-height:40px;padding:.5rem 1.25rem;font-size:.875rem;font-weight:500;color:#fff;background:var(--bs-primary);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .2s ease}.support-submit:hover:not(:disabled){background:var(--bs-primary-600)}.support-submit:disabled{background:var(--bs-gray-300);cursor:not-allowed}.support-message{font-size:.8125rem;margin-top:.25rem}.support-message--error{color:var(--text-danger-strong)}.support-message--success{color:var(--text-success-strong)}.support-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2.5rem 1rem;text-align:center;color:var(--bs-muted);font-size:.9375rem}.support-state--error{color:var(--text-danger-strong)}.support-branch{display:block;width:100%;margin:0;padding:0;border:none;background:rgba(0,0,0,0);color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-appearance:none;appearance:none}.support-branch:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-2px}.support-branch:not(:last-child) .support-item__header{border-bottom:1px solid var(--bs-gray-200)}.support-branch .support-item__header{cursor:inherit}@media(prefers-reduced-motion: reduce){.support-tabs__tab,.support-item__header,.support-item__chevron,.support-submit{transition:none}}
.assessments-screen{padding:0;max-width:800px;margin:0 auto}.assessments-screen .description{margin-bottom:24px;padding:16px;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.assessments-screen .description p{margin:0;color:var(--bs-muted);font-size:14px;line-height:1.5}.assessments-screen .loading-container,.assessments-screen .error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.assessments-screen .loading-container p,.assessments-screen .error-container p{margin-top:16px;color:var(--bs-muted);font-size:16px}.assessments-screen .error-container .retry-button{margin-top:16px;min-height:44px;padding:12px 24px;background-color:var(--bs-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s}.assessments-screen .error-container .retry-button:hover{background-color:var(--bs-primary-600)}.assessments-screen .children-list{display:flex;flex-direction:column;gap:16px}.assessments-screen .child-card{display:flex;align-items:center;padding:20px;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;transition:box-shadow .2s,border-color .2s}.assessments-screen .child-card:hover{border-color:var(--bs-primary);box-shadow:var(--shadow-md)}.assessments-screen .child-card .child-avatar{margin-right:16px;flex-shrink:0;color:var(--bs-primary);display:flex;align-items:center;justify-content:center;width:48px;height:48px;background-color:rgba(var(--bs-primary-rgb), 0.1);border-radius:50%}.assessments-screen .child-card .child-avatar svg{width:24px;height:24px}.assessments-screen .child-card .child-info{flex:1 1;min-width:0}.assessments-screen .child-card .child-info .child-name{font-size:18px;font-weight:600;color:var(--bs-body-color);margin:0 0 8px 0}.assessments-screen .child-card .child-info .child-details{display:flex;gap:16px;margin-bottom:12px}.assessments-screen .child-card .child-info .child-details .child-age,.assessments-screen .child-card .child-info .child-details .child-gender{font-size:14px;color:var(--bs-muted);background-color:var(--bs-gray-100);padding:4px 8px;border-radius:6px}.assessments-screen .child-card .child-info .child-groups .groups-label{font-size:12px;color:var(--bs-muted);font-weight:500;margin-right:8px}.assessments-screen .child-card .child-info .child-groups .groups-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.assessments-screen .child-card .child-info .child-groups .groups-list .group-tag{font-size:12px;color:var(--text-brand);background-color:var(--surface-brand-subtle);padding:2px 8px;border-radius:12px;font-weight:500}.assessments-screen .child-card .child-arrow{color:var(--bs-muted);flex-shrink:0;margin-left:16px;transition:color .2s}.assessments-screen .child-card:hover .child-arrow{color:var(--bs-primary)}@media(max-width: 768px){.assessments-screen .child-card{padding:16px}.assessments-screen .child-card .child-avatar{margin-right:12px;width:40px;height:40px}.assessments-screen .child-card .child-avatar svg{width:20px;height:20px}.assessments-screen .child-card .child-info .child-name{font-size:16px}.assessments-screen .child-card .child-info .child-details{flex-direction:column;gap:8px;margin-bottom:8px}.assessments-screen .child-card .child-arrow{margin-left:12px}}
.child-assessments-screen{padding:0;max-width:800px;margin:0 auto}.child-assessments-screen .child-info{background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);padding:20px;margin-bottom:24px;box-shadow:var(--shadow-sm)}.child-assessments-screen .child-info h2{font-size:20px;font-weight:600;color:var(--bs-body-color);margin:0 0 8px 0}.child-assessments-screen .child-info .child-age{color:var(--bs-muted);margin:0;font-size:14px}.child-assessments-screen .loading-container,.child-assessments-screen .error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.child-assessments-screen .loading-container p,.child-assessments-screen .error-container p{margin-top:16px;color:var(--bs-muted);font-size:16px}.child-assessments-screen .error-container .retry-button{margin-top:16px;padding:12px 24px;background-color:var(--bs-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer}.child-assessments-screen .error-container .retry-button:hover{background-color:var(--bs-primary-600)}.child-assessments-screen .no-results{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.child-assessments-screen .no-results .no-results-icon{font-size:48px;margin-bottom:16px;color:var(--bs-primary)}.child-assessments-screen .no-results h3{font-size:18px;font-weight:600;color:var(--bs-body-color);margin:0 0 8px 0}.child-assessments-screen .no-results p{color:var(--bs-muted);margin:0;font-size:14px}.child-assessments-screen .assessments-list .assessment-date-group{margin-bottom:32px}.child-assessments-screen .assessments-list .assessment-date-group .date-header{font-size:18px;font-weight:600;color:var(--bs-body-color);margin:0 0 16px 0;padding-bottom:8px;border-bottom:2px solid var(--bs-gray-200)}.child-assessments-screen .assessments-list .assessment-date-group .results-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-gap:16px;gap:16px}.child-assessments-screen .assessment-dates{display:flex;flex-direction:column;gap:12px}.child-assessments-screen .assessment-date-chip{display:flex;align-items:center;gap:16px;width:100%;padding:16px 20px;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;text-align:left;transition:box-shadow .2s,border-color .2s,transform .15s}.child-assessments-screen .assessment-date-chip:hover{border-color:var(--bs-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.child-assessments-screen .assessment-date-chip__icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;background-color:rgba(var(--bs-primary-rgb), 0.1);color:var(--bs-primary);border-radius:50%;font-size:18px}.child-assessments-screen .assessment-date-chip__content{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:4px}.child-assessments-screen .assessment-date-chip__name{font-size:15px;font-weight:600;color:var(--bs-body-color)}.child-assessments-screen .assessment-date-chip__date{font-size:14px;font-weight:500;color:var(--bs-primary)}.child-assessments-screen .assessment-date-chip__count{font-size:13px;color:var(--bs-muted)}.child-assessments-screen .assessment-date-chip__average{flex-shrink:0;padding:6px 12px;border-radius:20px;color:#fff;font-size:13px;font-weight:600;white-space:nowrap}.child-assessments-screen .assessment-date-chip__arrow{flex-shrink:0;color:var(--bs-gray-300);font-size:18px;transition:color .2s}.child-assessments-screen .assessment-date-chip:hover .child-assessments-screen .assessment-date-chip__arrow{color:var(--bs-primary)}.child-assessments-screen .assessment-card{padding:20px;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:box-shadow .2s,border-color .2s}.child-assessments-screen .assessment-card:hover{border-color:var(--bs-primary);box-shadow:var(--shadow-md)}.child-assessments-screen .assessment-card .assessment-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.child-assessments-screen .assessment-card .assessment-header h4{font-size:16px;font-weight:600;color:var(--bs-body-color);margin:0;flex:1 1;margin-right:12px}.child-assessments-screen .assessment-card .assessment-header .grade-badge{padding:4px 12px;border-radius:20px;color:#fff;font-size:12px;font-weight:500;white-space:nowrap}.child-assessments-screen .assessment-card .assessment-description{margin:0 0 12px 0;color:var(--bs-muted);font-size:14px;line-height:1.4}.child-assessments-screen .assessment-card .assessment-result .result-value{font-size:24px;font-weight:700;color:var(--bs-primary)}@media(max-width: 768px){.child-assessments-screen .child-info{padding:16px;margin-bottom:20px}.child-assessments-screen .child-info h2{font-size:18px}.child-assessments-screen .assessments-list .assessment-date-group{margin-bottom:24px}.child-assessments-screen .assessments-list .assessment-date-group .date-header{font-size:16px;margin-bottom:12px}.child-assessments-screen .assessments-list .assessment-date-group .results-grid{grid-template-columns:1fr;gap:12px}.child-assessments-screen .assessment-date-chip{padding:14px 16px;gap:12px}.child-assessments-screen .assessment-date-chip__icon{width:40px;height:40px;font-size:16px}.child-assessments-screen .assessment-date-chip__name{font-size:14px}.child-assessments-screen .assessment-date-chip__date{font-size:13px}.child-assessments-screen .assessment-date-chip__average{padding:5px 10px;font-size:12px}.child-assessments-screen .assessment-card{padding:16px}.child-assessments-screen .assessment-card .assessment-header{flex-direction:column;align-items:flex-start;gap:8px}.child-assessments-screen .assessment-card .assessment-header h4{margin-right:0}.child-assessments-screen .assessment-card .assessment-result .result-value{font-size:20px}}
.assessment-result-card{padding:20px;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:box-shadow .2s,border-color .2s}.assessment-result-card:hover{border-color:var(--bs-primary);box-shadow:var(--shadow-md)}.assessment-result-card__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.assessment-result-card__header h4{font-size:16px;font-weight:600;color:var(--bs-body-color);margin:0;flex:1 1;margin-right:12px}.assessment-result-card__grade{padding:4px 12px;border-radius:20px;color:#fff;font-size:12px;font-weight:500;white-space:nowrap}.assessment-result-card__description{margin:0 0 12px 0;color:var(--bs-muted);font-size:14px;line-height:1.4}.assessment-result-card__value span{font-size:24px;font-weight:700;color:var(--bs-primary)}@media(max-width: 768px){.assessment-result-card{padding:16px}.assessment-result-card__header{flex-direction:column;align-items:flex-start;gap:8px}.assessment-result-card__header h4{margin-right:0}.assessment-result-card__value span{font-size:20px}}
.child-assessment-date-screen{padding:0;max-width:800px;margin:0 auto}.child-assessment-date-screen .assessment-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);padding:20px;margin-bottom:24px;box-shadow:var(--shadow-sm)}.child-assessment-date-screen .assessment-summary__content{flex:1 1;min-width:0}.child-assessment-date-screen .assessment-summary__name{font-size:20px;font-weight:600;color:var(--bs-body-color);margin:0 0 8px 0}.child-assessment-date-screen .assessment-summary__date{color:var(--bs-primary);margin:0 0 4px 0;font-size:15px;font-weight:500}.child-assessment-date-screen .assessment-summary__count{color:var(--bs-muted);margin:0;font-size:13px}.child-assessment-date-screen .assessment-summary__average{flex-shrink:0;padding:8px 14px;border-radius:20px;color:#fff;font-size:14px;font-weight:600;white-space:nowrap}.child-assessment-date-screen .loading-container,.child-assessment-date-screen .error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.child-assessment-date-screen .loading-container p,.child-assessment-date-screen .error-container p{margin-top:16px;color:var(--bs-muted);font-size:16px}.child-assessment-date-screen .error-container .retry-button{margin-top:16px;padding:12px 24px;background-color:var(--bs-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer}.child-assessment-date-screen .error-container .retry-button:hover{background-color:var(--bs-primary-600)}.child-assessment-date-screen .no-results{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;background:var(--bs-surface);border:1px solid var(--bs-gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.child-assessment-date-screen .no-results .no-results-icon{font-size:48px;margin-bottom:16px;color:var(--bs-primary)}.child-assessment-date-screen .no-results h3{font-size:18px;font-weight:600;color:var(--bs-body-color);margin:0 0 8px 0}.child-assessment-date-screen .no-results p{color:var(--bs-muted);margin:0;font-size:14px}.child-assessment-date-screen .results-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-gap:16px;gap:16px}@media(max-width: 768px){.child-assessment-date-screen .assessment-summary{padding:16px;margin-bottom:20px;gap:12px}.child-assessment-date-screen .assessment-summary__name{font-size:18px}.child-assessment-date-screen .assessment-summary__date{font-size:14px}.child-assessment-date-screen .assessment-summary__average{padding:6px 12px;font-size:13px}.child-assessment-date-screen .results-grid{grid-template-columns:1fr;gap:12px}}
/* Brand display font (logo / special titles) */
@font-face {
  font-family: 'Fractal';
  src: url(/static/media/fractal.b669dd0c0790c9d1137d.ttf) format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* Body font is owned by main.scss (Barlow). Do not reset to system UI here. */
body {
  margin: 0;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
}

