:root {
  --purple-900: #3b3065;
  --purple-700: #6652c7;
  --purple-500: #8977e8;
  --blue: #3478c9;
  --teal: #18a999;
  --mint: #dff7ef;
  --coral: #f86f68;
  --peach: #fff0df;
  --sun: #ffc857;
  --sun-soft: #fff5c9;
  --sky: #dff2ff;
  --ink: #34334a;
  --muted: #6d6a82;
  --line: #e7e2f0;
  --paper: #fff;
  --wash: #fffaf3;
  --danger: #b73535;
  --success: #168267;
  --radius: 22px;
  --shadow: 0 12px 32px rgba(75, 59, 122, .10);
  --soft-shadow: 0 6px 18px rgba(75, 59, 122, .08);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  font: 15px/1.55 "Avenir Next", "Trebuchet MS", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background:
    radial-gradient(circle at 5% 8%, rgba(255,200,87,.18) 0 54px, transparent 55px),
    radial-gradient(circle at 96% 28%, rgba(24,169,153,.10) 0 82px, transparent 83px),
    var(--wash);
}
a { color: #5361bd; text-underline-offset: 3px; }
h1, h2, h3 { color: var(--purple-900); line-height: 1.15; letter-spacing: -.35px; }
h1 { font-weight: 850; }
.public-header, .admin-header { position: sticky; top: 0; z-index: 1000; color: #fff; background: linear-gradient(115deg, var(--purple-900), var(--purple-700) 62%, #6c74d9); }
.public-header::after, .admin-header::after { content: ""; position: absolute; inset: auto 0 -1px; height: 7px; background: linear-gradient(90deg, var(--sun) 0 20%, var(--coral) 20% 40%, var(--teal) 40% 60%, #5fb5ee 60% 80%, var(--purple-500) 80%); }
.public-header .inner, .admin-header .inner { max-width: 1220px; margin: auto; padding: 18px 24px 22px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.brand { display: inline-flex; align-items: center; gap: 11px; color: #fff; text-decoration: none; font-size: 22px; font-weight: 850; letter-spacing: .1px; }
.brand-copy-link { min-width: 0; color: inherit; text-decoration: none; }.brand-copy-link:hover { color: inherit; }.brand-copy-link:focus-visible,.digi-character-link:focus-visible { outline: 3px solid var(--sun); outline-offset: 4px; border-radius: 14px; }
.public-header .brand-copy-link,.public-header .brand-copy { display: none !important; }
.brand-mark { display: grid; place-items: center; width: 44px; height: 44px; color: var(--purple-900); background: var(--sun); border: 3px solid rgba(255,255,255,.85); border-radius: 16px 16px 16px 5px; font-weight: 900; box-shadow: 4px 5px 0 rgba(37,29,72,.25); transform: rotate(-2deg); }
.brand-logo { width: 58px; height: 44px; object-fit: contain; padding: 3px; background: #fff; border-radius: 12px; box-shadow: 3px 4px 0 rgba(37,29,72,.20); }
.digi-character-link { display: block; flex: 0 0 auto; border-radius: 17px; text-decoration: none; }.digi-character-link:hover .digi-character { transform: translateY(-2px) rotate(-1deg); box-shadow: 4px 7px 0 rgba(37,29,72,.24); }
.digi-character { position: relative; width: 52px; height: 52px; display: block; flex: 0 0 auto; overflow: hidden; background: #050505; border: 3px solid rgba(255,255,255,.88); border-radius: 17px; box-shadow: 3px 4px 0 rgba(37,29,72,.24); transition: transform .18s ease,box-shadow .18s ease; }
.digi-character-image,.digi-character-animation { position: absolute; inset: 0; width: 100%; height: 100%; display: block; object-fit: cover; transition: opacity .7s ease; }.digi-character-image { opacity: 1; }.digi-character-animation { opacity: 0; }.digi-character.is-animating .digi-character-image { opacity: 0; }.digi-character.is-animating .digi-character-animation { opacity: 1; }
.brand-copy { display: flex; min-width: 0; flex-direction: column; line-height: 1.04; }.brand-copy strong { font-size: 21px; }.brand-copy small { max-width: 190px; margin-top: 4px; overflow: hidden; font-size: 10px; font-weight: 700; opacity: .82; text-overflow: ellipsis; white-space: nowrap; }
.login-brand { margin-bottom: 22px; color: var(--purple-900); }.login-brand:hover { color: var(--purple-700); }
.nav { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.nav a, .nav-button { color: #f5f2ff; text-decoration: none; padding: 8px 10px; border-radius: 12px; font-weight: 700; font-size: 14px; }
.nav a:hover, .nav a.active, .nav-button:hover { background: rgba(255,255,255,.15); color: #fff; }
.nav a.active { box-shadow: inset 0 -2px 0 var(--sun); }
.nav .public-view-link { color: var(--purple-900); background: var(--sun); box-shadow: 0 3px 0 #dba634; }.nav .public-view-link:hover { color: var(--purple-900); background: #ffd46f; }
.nav-button { appearance: none; border: 0; background: transparent; cursor: pointer; font: inherit; }
.company-selector { margin-left: auto; min-width: 180px; max-width: 260px; flex-shrink: 0; }
.company-selector label { color: #fff; font-size: 12px; margin: 0 0 4px; }
.company-selector-controls { display: flex; align-items: center; gap: 4px; }
.company-selector select { min-width: 0; padding: 7px 9px; }
.company-selector .nav-button { font-size: 13px; }
.active-company { margin-left: auto; font-size: 13px; white-space: nowrap; }
@media(max-width:900px) { .company-selector { align-self: flex-end; max-width: 100%; } }
.page { max-width: 1220px; margin: auto; padding: 34px 24px 70px; }
.hero { min-height: 480px; padding: 60px 0 44px; display: grid; grid-template-columns: 1.15fr .85fr; gap: 44px; align-items: center; }
.hero h1 { max-width: 720px; margin: 8px 0 19px; font-size: clamp(42px, 6.4vw, 70px); line-height: .98; letter-spacing: -2.6px; }
.hero p { max-width: 650px; color: var(--muted); font-size: 19px; }
.hero-card { position: relative; min-height: 330px; display: grid; place-items: center; overflow: hidden; background: linear-gradient(145deg, var(--sky), #ecfbf5 55%, var(--sun-soft)); border: 6px solid #fff; border-radius: 46% 54% 44% 56% / 54% 42% 58% 46%; box-shadow: 0 20px 50px rgba(83,71,142,.16); }
.hero-card::before { content: ""; position: absolute; width: 140px; height: 140px; left: -35px; bottom: -35px; background: var(--sun); border-radius: 50%; opacity: .85; }
.hero-card::after { content: ""; position: absolute; width: 74px; height: 74px; right: 24px; top: 22px; background: var(--coral); border-radius: 42% 58% 61% 39%; opacity: .22; }
.kid-scene { position: relative; z-index: 1; text-align: center; }
.kid-scene-main { display: block; font-size: 104px; filter: drop-shadow(0 10px 6px rgba(70,64,116,.12)); transform: rotate(-3deg); }
.kid-scene-stars { display: flex; justify-content: center; gap: 25px; margin-top: -6px; font-size: 30px; }
.page-title { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-bottom: 22px; flex-wrap: wrap; }
.page-title h1 { margin: 0; font-size: 31px; }
.page-title p { margin: 6px 0 0; }
.grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 20px; }
.span-12 { grid-column: span 12; }.span-8 { grid-column: span 8; }.span-7 { grid-column: span 7; }.span-6 { grid-column: span 6; }.span-5 { grid-column: span 5; }.span-4 { grid-column: span 4; }.span-3 { grid-column: span 3; }
.card { background: rgba(255,255,255,.96); border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; box-shadow: var(--shadow); }
.card h2, .card h3 { margin-top: 0; }
.class-card { position: relative; display: flex; flex-direction: column; overflow: hidden; border: 0; border-top: 7px solid var(--teal); transition: transform .2s ease, box-shadow .2s ease; }
.class-card:nth-child(3n+2) { border-color: var(--coral); }.class-card:nth-child(3n+3) { border-color: var(--sun); }
.class-card::after { content: "✦"; position: absolute; right: 17px; top: 11px; color: var(--sun); font-size: 25px; opacity: .72; }
.class-card:hover { transform: translateY(-5px) rotate(.25deg); box-shadow: 0 18px 35px rgba(75,59,122,.15); }
.class-card .actions { margin-top: auto; padding-top: 8px; }
.class-logo-wrap { aspect-ratio: 2 / 1; margin: -22px -22px 18px; overflow: hidden; background: #f2effb; border-bottom: 1px solid var(--line); }
.class-logo-wrap img { width: 100%; height: 100%; display: block; object-fit: cover; }
.eyebrow { display: inline-block; color: var(--teal); text-transform: uppercase; letter-spacing: 1.25px; font-size: 12px; font-weight: 900; }
.metric { font-size: 32px; color: var(--purple-900); font-weight: 900; }
.dashboard-stats { align-items: stretch; }.dashboard-stat-card { min-height: 142px; display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: 14px; color: inherit; text-decoration: none; border-top: 5px solid var(--teal); transition: transform .18s ease,box-shadow .18s ease,border-color .18s ease; }.dashboard-stat-card:nth-child(4n+2) { border-top-color: var(--sun); }.dashboard-stat-card:nth-child(4n+3) { border-top-color: var(--coral); }.dashboard-stat-card:nth-child(4n+4) { border-top-color: var(--purple-500); }.dashboard-stat-card:hover { color: inherit; transform: translateY(-3px); box-shadow: 0 17px 34px rgba(75,59,122,.15); }.dashboard-stat-card.needs-attention { border-top-color: var(--danger); background: linear-gradient(145deg,#fff,#fff4f2); }.dashboard-stat-card .muted,.dashboard-stat-card .metric,.dashboard-stat-card small { display: block; }.dashboard-stat-card .metric { margin: 2px 0; line-height: 1.08; }.dashboard-stat-card small { color: var(--muted); line-height: 1.3; }.dashboard-stat-icon { width: 48px; height: 48px; display: grid; place-items: center; background: #f4f0ff; border-radius: 15px; font-size: 25px; }
.muted { color: var(--muted); }
.btn { appearance: none; border: 0; border-radius: 14px; background: linear-gradient(135deg, var(--purple-700), #7569db); color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 7px; font-weight: 800; padding: 11px 17px; text-decoration: none; box-shadow: 0 5px 0 #493a94; transition: transform .15s ease, box-shadow .15s ease; }
.btn:hover { color: #fff; transform: translateY(-2px); box-shadow: 0 7px 0 #493a94; }
.btn:active { transform: translateY(2px); box-shadow: 0 2px 0 #493a94; }
.btn-secondary { color: var(--purple-900); background: #eeeafd; box-shadow: 0 4px 0 #d4cdef; }.btn-secondary:hover { color: var(--purple-900); box-shadow: 0 6px 0 #d4cdef; }
.btn-sun { color: var(--purple-900); background: var(--sun); box-shadow: 0 5px 0 #e0a82f; }.btn-sun:hover { color: var(--purple-900); box-shadow: 0 7px 0 #e0a82f; }
.btn-danger { background: var(--danger); box-shadow: 0 5px 0 #872626; }.btn-small { padding: 7px 11px; border-radius: 10px; font-size: 13px; box-shadow: none; }.btn-small:hover { box-shadow: none; }
.button-row { display: flex; gap: 10px; flex-wrap: wrap; }
form.inline { display: inline; }
.payment-plan-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.payment-plan-actions form { margin: 0; }
.form-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; }
.field { grid-column: span 6; }.field.full { grid-column: span 12; }.field.third { grid-column: span 4; }.field.quarter { grid-column: span 3; }
label { display: block; margin-bottom: 6px; color: var(--purple-900); font-weight: 800; }
input, select, textarea { width: 100%; padding: 11px 12px; border: 2px solid #dcd5ea; border-radius: 13px; background: #fff; color: var(--ink); font: inherit; transition: border-color .15s, box-shadow .15s; }
textarea { min-height: 120px; resize: vertical; }
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--purple-500); box-shadow: 0 0 0 4px rgba(137,119,232,.15); }
.checkbox { display: flex; gap: 8px; align-items: center; }.checkbox input { width: auto; accent-color: var(--purple-700); }.checkbox label { margin: 0; }
.help { color: var(--muted); font-size: 13px; margin-top: 5px; }
.friendly-form { border-top: 8px solid var(--sun); }
.form-section-heading { display: flex; align-items: center; gap: 13px; margin-bottom: 19px; }
.form-section-heading > span { width: 48px; height: 48px; display: grid; place-items: center; flex: 0 0 auto; background: var(--sun-soft); border-radius: 16px; font-size: 25px; }
.form-section-heading h2, .form-section-heading p { margin: 0; }.form-section-heading p { color: var(--muted); font-size: 13px; }
.form-actions { padding-top: 8px; }
.current-logo { margin-bottom: 16px; padding: 12px; background: #f8f5ff; border: 1px solid var(--line); border-radius: 16px; }
.current-logo > span { display: block; margin-bottom: 8px; color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; }
.current-logo img { width: 100%; max-height: 180px; display: block; object-fit: contain; background: #fff; border-radius: 12px; }
.class-current-logo { max-width: 430px; }.class-current-logo img { aspect-ratio: 2 / 1; object-fit: cover; }
.logo-cropper { padding: 14px; background: #fcfbff; border: 2px dashed #cec4e5; border-radius: 17px; }
.logo-cropper > input[type="file"] { padding: 9px; background: #fff; }
.crop-editor { margin-top: 14px; padding: 13px; background: #fff; border: 1px solid var(--line); border-radius: 15px; }
.crop-editor-heading { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 9px; }
.crop-editor-heading strong { color: var(--purple-900); }.crop-editor-heading span { color: var(--muted); font-size: 12px; text-align: right; }
.crop-stage { position: relative; aspect-ratio: 2 / 1; display: grid; place-items: center; overflow: hidden; color: var(--muted); background: repeating-conic-gradient(#f1eef6 0 25%,#fff 0 50%) 50% / 22px 22px; border: 2px solid #ded7eb; border-radius: 13px; }
.crop-stage::before, .crop-stage::after { content: ""; position: absolute; z-index: 2; pointer-events: none; opacity: 0; transition: opacity .2s; }
.crop-stage::before { inset: 0; background: linear-gradient(90deg,transparent 33.1%,rgba(255,255,255,.72) 33.3% 33.7%,transparent 33.9% 66.1%,rgba(255,255,255,.72) 66.3% 66.7%,transparent 66.9%),linear-gradient(transparent 49.6%,rgba(255,255,255,.72) 49.8% 50.2%,transparent 50.4%); }
.crop-stage::after { inset: 9px; border: 2px solid rgba(255,255,255,.9); border-radius: 7px; box-shadow: 0 0 0 999px rgba(28,21,48,.08); }
.crop-stage canvas { width: 100%; height: 100%; display: none; object-fit: contain; cursor: grab; touch-action: none; }.crop-stage canvas:active { cursor: grabbing; }.crop-stage canvas:focus { outline: 4px solid rgba(137,119,232,.28); outline-offset: -4px; }
.logo-cropper.is-ready .crop-stage canvas { display: block; }.logo-cropper.is-ready .crop-stage p { display: none; }.logo-cropper.is-ready .crop-stage::before,.logo-cropper.is-ready .crop-stage::after { opacity: 1; }
.crop-controls { margin-top: 11px; display: flex; align-items: center; gap: 8px; opacity: .55; }.logo-cropper.is-ready .crop-controls { opacity: 1; }
.crop-zoom { margin: 0; display: flex; align-items: center; gap: 8px; flex: 1; }.crop-zoom span { font-size: 13px; }.crop-zoom input { padding: 0; accent-color: var(--purple-700); }
.crop-icon-button { width: 35px; height: 35px; padding: 0; flex: 0 0 auto; color: var(--purple-900); background: #eeeafd; border: 0; border-radius: 10px; cursor: pointer; font-size: 23px; font-weight: 800; line-height: 1; }.crop-icon-button:hover:not(:disabled) { background: #ded7f7; }.crop-icon-button:disabled,.crop-controls .btn:disabled { cursor: not-allowed; opacity: .45; }
.crop-apply { width: 100%; margin-top: 11px; display: none; }.logo-cropper.is-ready .crop-apply { display: inline-flex; }.logo-cropper.is-confirmed { border-color: var(--success); background: #f1fbf8; }.logo-cropper.is-confirmed .crop-apply { background: var(--success); box-shadow: 0 5px 0 #0f5f4b; }
.class-logo-field .logo-cropper { max-width: 820px; }
.headshot-cropper { max-width: 500px; }.headshot-cropper:not(.is-ready) .crop-editor { display: none; }.headshot-crop-stage { aspect-ratio: 1; }.student-current-headshot { max-width: 260px; }.student-current-headshot img { aspect-ratio: 1; object-fit: cover; }.student-headshot-field .settings-subheading p { max-width: 850px; }
.settings-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(360px,1fr); gap: 20px; }
.settings-main { grid-column: 1; }.settings-logo { grid-column: 2; grid-row: 1; align-self: start; border-top: 8px solid var(--sun); }.settings-registration,.settings-save { grid-column: 1 / -1; }
.settings-brand-color { margin-bottom: 17px; }
.setting-with-preview { grid-column: span 6; display: grid; grid-template-columns: minmax(0,1fr) 190px; gap: 14px; align-items: start; margin-bottom: 17px; }.setting-with-preview.full,.setting-with-preview-wide { grid-column: 1 / -1; }.setting-with-preview > .field { min-width: 0; margin: 0; }.settings-logo .setting-with-preview { grid-template-columns: minmax(0,1fr) 165px; }.setting-with-preview-wide { grid-template-columns: minmax(0,1fr) 210px; }
.setting-location-preview { min-width: 0; margin: 0; padding: 9px; background: #f8f6fc; border: 1px solid #ded7eb; border-radius: 15px; box-shadow: 0 7px 16px rgba(61,45,109,.08); }.setting-location-preview figcaption { margin-bottom: 7px; color: var(--purple-900); font-size: 11px; font-weight: 800; line-height: 1.2; }.setting-location-preview figcaption span { display: block; color: var(--teal); font-size: 8px; letter-spacing: .55px; text-transform: uppercase; }
.setting-mini-site { position: relative; height: 142px; overflow: hidden; color: #5d5770; background: white; border: 1px solid #e6e0ef; border-radius: 9px; font-size: 7px; }.setting-mini-header { height: 25px; padding: 4px 6px; display: flex; align-items: center; gap: 5px; color: #fff; background: #493781; }.setting-mini-header b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.setting-mini-logo { width: 20px; height: 16px; flex: 0 0 auto; display: grid; place-items: center; overflow: hidden; color: #493781; background: white; border-radius: 4px; font-size: 5px; }.setting-mini-logo img { width: 100%; height: 100%; object-fit: contain; }
.setting-mini-intro { margin: 7px; padding: 7px; background: #fff9dc; border-radius: 6px; }.setting-mini-intro b { max-height: 18px; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }.setting-mini-intro i { height: 3px; margin-top: 3px; display: block; background: #e7dfc1; border-radius: 9px; }.setting-mini-intro i:last-child { width: 70%; }.setting-mini-categories { margin: 0 7px; text-align: center; }.setting-mini-categories b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.setting-mini-categories span { height: 13px; margin-top: 4px; display: block; background: linear-gradient(90deg,#ffe27c,#ffad88); border-radius: 4px; }.setting-mini-bottom { margin: 6px 7px 4px; padding: 4px; overflow: hidden; background: #fff8ce; border-radius: 4px; text-align: center; text-overflow: ellipsis; white-space: nowrap; }.setting-mini-footer { height: 15px; padding: 3px 6px; overflow: hidden; color: white; background: #493781; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.setting-mini-registration { display: none; gap: 5px; padding: 9px; }.setting-mini-registration > b { color: #493781; font-size: 10px; }.setting-mini-registration > span { padding: 7px; overflow: hidden; background: #f7f4fc; border: 1px solid #ddd6ea; border-radius: 5px; text-overflow: ellipsis; white-space: nowrap; }.setting-mini-registration em { font-style: normal; }.setting-location-preview[data-preview-location^="registration-"] .setting-mini-intro,.setting-location-preview[data-preview-location^="registration-"] .setting-mini-categories,.setting-location-preview[data-preview-location^="registration-"] .setting-mini-bottom { display: none; }.setting-location-preview[data-preview-location^="registration-"] .setting-mini-registration { display: grid; }.setting-location-preview[data-preview-location^="registration-"] .setting-mini-footer { position: absolute; right: 0; bottom: 0; left: 0; }
.setting-location-preview[data-preview-location="organization-header"] .setting-mini-header,.setting-location-preview[data-preview-location="home-intro"] .setting-mini-intro,.setting-location-preview[data-preview-location="home-category-heading"] .setting-mini-categories,.setting-location-preview[data-preview-location="home-bottom"] .setting-mini-bottom,.setting-location-preview[data-preview-location="contact-footer"] .setting-mini-footer,.setting-location-preview[data-preview-location="footer-message"] .setting-mini-footer,.setting-mini-registration .has-preview-focus { outline: 2px solid #ffb321; outline-offset: 1px; box-shadow: 0 0 0 4px rgba(255,179,33,.18); }.setting-mini-color { position: absolute; inset: 0; pointer-events: none; border: 4px solid var(--preview-color); border-radius: 8px; box-shadow: inset 0 0 0 2px white; }.settings-section-location { max-width: 220px; margin: 0 0 15px auto; }
.settings-subheading { margin: 25px 0 13px; padding-top: 18px; border-top: 3px dashed #dfd8eb; }.settings-subheading h3,.settings-subheading p { margin: 0; }.settings-subheading p { margin-top: 4px; color: var(--muted); font-size: 13px; }
.digi-settings-preview { margin-bottom: 18px; padding: 13px; display: flex; align-items: center; gap: 13px; background: #f8f5ff; border: 1px solid var(--line); border-radius: 16px; }.digi-settings-preview .digi-character { width: 72px; height: 72px; }.digi-settings-preview p { margin: 0; }.digi-settings-preview span { color: var(--muted); font-size: 12px; }
.organization-masthead { margin: 4px auto 28px; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }.organization-masthead img { width: min(230px,70vw); height: 120px; object-fit: contain; }.organization-masthead h1 { margin: 0; font-size: clamp(30px,4vw,48px); }
.footer-organization { margin: 0 auto 10px; display: flex; justify-content: center; align-items: center; gap: 10px; }.footer-organization img { width: 92px; height: 46px; object-fit: contain; }.footer-organization strong { color: var(--purple-900); }
.settings-large-text { min-height: 155px; }
.site-menu-callout { margin-top: 20px; padding: 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #f8f5ff; border: 1px solid var(--line); border-radius: 15px; }.site-menu-callout strong,.site-menu-callout span { display: block; }.site-menu-callout span { margin-top: 3px; color: var(--muted); font-size: 12px; }
.registration-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 15px; }.registration-section-heading label { margin: 0; }.registration-section-builder { display: grid; gap: 15px; }.registration-section-row { padding: 17px; background: #fbfaff; border: 1px solid var(--line); border-radius: 17px; }.registration-section-row-head { margin-bottom: 13px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }.registration-section-row-head strong { color: var(--purple-900); }.registration-section-override { padding: 17px; background: #fffdf7; border: 2px dashed #d9c982; border-radius: 18px; }.registration-section-override > .checkbox { margin-top: 0; }.uses-registration-defaults .registration-section-builder { opacity: .55; }.uses-registration-defaults .registration-section-heading { opacity: .7; }
.site-menu-admin [hidden] { display: none; }.site-menu-admin td:nth-child(3) { max-width: 240px; overflow: hidden; text-overflow: ellipsis; }.portal-active { align-self: end; min-height: 47px; }.portal-tree-name { padding-left: calc(var(--tree-depth) * 22px); display: flex; align-items: flex-start; gap: 9px; }.portal-tree-name strong,.portal-tree-name small { display: block; }.portal-tree-name small { max-width: 260px; overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.portal-intro { max-width: 1040px; margin: 18px auto 38px; padding: 38px clamp(22px,5vw,58px); text-align: center; background: linear-gradient(145deg,#fff9d8,#fff 62%,#eef9ff); border: 1px solid #f1e5ac; border-radius: 32px; box-shadow: var(--shadow); }.portal-intro h2 { margin: 8px 0 18px; font-size: clamp(34px,5vw,56px); }.portal-copy { color: var(--ink); font-size: clamp(17px,2vw,21px); line-height: 1.62; }
.portal-directory { margin: 34px auto 48px; }.portal-section-heading { max-width: 800px; margin: 0 auto 22px; text-align: center; }.portal-section-heading h2 { margin: 5px 0 8px; font-size: clamp(28px,4vw,42px); }.portal-section-heading p { color: var(--muted); }
.portal-card-grid { max-width: 900px; margin: auto; display: grid; gap: 15px; }.portal-card { min-height: 120px; padding: 20px 24px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 17px; color: var(--purple-900); background: linear-gradient(115deg,#ffe27c,#ffad88); border: 2px solid rgba(102,82,199,.25); border-radius: 21px; box-shadow: 0 10px 24px rgba(75,59,122,.11); text-decoration: none; transition: transform .18s ease,box-shadow .18s ease; }.portal-card:nth-child(3n+2) { background: linear-gradient(115deg,#ccefff,#dcf9ea); }.portal-card:nth-child(3n+3) { background: linear-gradient(115deg,#eee6ff,#ffdff0); }.portal-card:hover { color: var(--purple-900); transform: translateY(-3px); box-shadow: 0 15px 28px rgba(75,59,122,.16); }.portal-card-icon { width: 50px; height: 50px; display: grid; place-items: center; background: rgba(255,255,255,.68); border-radius: 16px; font-size: 25px; }.portal-card strong,.portal-card small { display: block; }.portal-card strong { font-size: clamp(22px,3vw,31px); }.portal-card small { margin-top: 5px; color: #55516a; font-size: 14px; }.portal-card > b { font-size: 34px; }.portal-card-external_link > b { transform: rotate(-45deg); }
.portal-card-drama-mask svg { width: 35px; height: 38px; overflow: visible; filter: drop-shadow(0 2px 1px rgba(62,50,111,.18)); transition: transform .18s ease; }.portal-card:hover .portal-card-drama-mask svg { transform: rotate(4deg) scale(1.08); }.portal-card-drama-mask .mask-shell { fill: #ffd45e; stroke: #3e326f; stroke-width: 1.5; stroke-linejoin: round; }.portal-card-drama-mask .mask-eye { fill: #3e326f; }.portal-card-drama-mask .mask-mouth { fill: none; stroke: #3e326f; stroke-width: 1.7; stroke-linecap: round; }.portal-card-drama-mask.mask-variant-1 svg { transform: rotate(-7deg); }.portal-card-drama-mask.mask-variant-2 .mask-shell { fill: #9fe3e0; }.portal-card-drama-mask.mask-variant-2 svg { transform: rotate(6deg); }.portal-card-drama-mask.mask-variant-3 .mask-shell { fill: #ffaaa0; }.portal-card-drama-mask.mask-variant-3 .mask-mouth { stroke-width: 2.2; }.portal-card-drama-mask.mask-variant-4 .mask-shell { fill: #cbbcff; }.portal-card-drama-mask.mask-variant-4 svg { transform: rotate(-3deg); }
.portal-breadcrumbs { margin: 2px 0 26px; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; color: var(--muted); }.portal-breadcrumbs a { font-weight: 750; }.public-bottom-copy { max-width: 1040px; margin: 48px auto 0; padding: 26px 30px; color: var(--purple-900); background: var(--sun-soft); border: 1px solid #ebd879; border-radius: 22px; text-align: center; font-size: 18px; line-height: 1.6; box-shadow: var(--soft-shadow); }
.color-field { display: grid; grid-template-columns: 58px 1fr; gap: 9px; }.color-field input[type="color"] { height: 47px; padding: 3px; cursor: pointer; }
.class-table-title { display: flex; align-items: center; gap: 10px; }.class-table-title img { width: 70px; height: 40px; object-fit: cover; border-radius: 9px; }.class-table-title strong,.class-table-title small { display: block; }.class-table-title small { color: var(--muted); }
.enroll-title-content { display: flex; align-items: center; gap: 16px; }.enroll-class-logo { width: 130px; aspect-ratio: 2 / 1; object-fit: cover; border: 4px solid #fff; border-radius: 17px; box-shadow: var(--soft-shadow); }
.registration-information { margin: 8px 0 34px; }.registration-information-heading { max-width: 820px; margin: 0 auto 20px; text-align: center; }.registration-information-heading h2 { margin: 5px 0 7px; font-size: clamp(29px,4vw,42px); }.registration-information-heading p { margin: 0; color: var(--muted); }.registration-information-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }.registration-information-card { border-top: 7px solid var(--teal); }.registration-information-card:nth-child(2n) { border-top-color: var(--sun); }.registration-information-card h3 { margin-bottom: 10px; }.registration-information-card div { white-space: normal; }.registration-subheading { margin-top: 36px; padding-top: 27px; border-top: 3px dashed #dfd8eb; }
.included-product-picker { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 13px; }.included-product-pick { padding: 13px; display: grid; grid-template-columns: minmax(0,1fr) 105px; gap: 12px; align-items: center; background: #fbfaff; border: 2px solid #e4deef; border-radius: 17px; }.included-product-pick:has(input[type="checkbox"]:checked) { border-color: var(--teal); background: #f0fbf8; }.included-product-pick.is-inactive { opacity: .62; }.included-product-select { margin: 0; display: grid; grid-template-columns: auto 52px 1fr; gap: 9px; align-items: center; cursor: pointer; }.included-product-select input { width: 19px; height: 19px; }.included-product-select img,.included-product-icon { width: 52px; height: 52px; display: grid; place-items: center; object-fit: cover; background: #eee9fa; border-radius: 12px; font-size: 24px; }.included-product-select strong,.included-product-select small { display: block; }.included-product-select small { margin-top: 2px; color: var(--muted); font-size: 11px; }.included-product-quantity { margin: 0; color: var(--muted); font-size: 10px; }.included-product-quantity input { margin-top: 4px; padding: 8px; }.included-products-empty { padding: 24px; }
.included-registration-items { margin-top: 35px; }.included-registration-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }.included-registration-item { padding: 20px; background: linear-gradient(145deg,#fffdf6,#fff); border: 2px solid #eadb98; border-radius: 24px; box-shadow: 0 8px 22px rgba(110,88,38,.07); }.included-registration-product { display: flex; gap: 14px; align-items: center; }.included-registration-product > img,.included-registration-product > span { width: 66px; height: 66px; flex: 0 0 auto; display: grid; place-items: center; object-fit: cover; background: #f1ecfb; border-radius: 17px; font-size: 31px; }.included-registration-product strong,.included-registration-product small { display: block; }.included-registration-product strong { color: var(--purple-900); font-size: 21px; }.included-registration-product small { margin-top: 4px; color: var(--muted); }.included-registration-product small b { color: var(--success); }.included-shop-option { margin: 20px 0 0; padding: 17px; background: #fff; border: 2px solid #e8e1f2; }.included-shop-option legend { padding: 0 9px; font-size: 17px; }.included-option-help { margin: -3px 0 12px; color: var(--muted); font-size: 13px; }.included-shop-option .shop-choice-list { grid-template-columns: repeat(auto-fit,minmax(145px,1fr)); gap: 10px; }.included-shop-option .shop-choice-list label { min-height: 54px; margin: 0; padding: 11px 13px; gap: 10px; background: #faf8ff; border: 2px solid #e2dced; border-radius: 14px; cursor: pointer; line-height: 1.25; transition: background .15s,border-color .15s,box-shadow .15s,transform .15s; }.included-shop-option .shop-choice-list label:hover { background: #f5f1ff; border-color: #bfb2ea; transform: translateY(-1px); }.included-shop-option .shop-choice-list label:has(input:checked) { color: var(--purple-900); background: #eee9ff; border-color: var(--purple-700); box-shadow: 0 0 0 3px rgba(102,82,199,.12); }.included-shop-option .shop-choice-list label:has(input:focus-visible) { outline: 3px solid rgba(137,119,232,.28); outline-offset: 2px; }.included-shop-option .shop-choice-list span { min-width: 0; overflow-wrap: anywhere; }.included-no-options { margin-bottom: 0; }
.included-enrollment-list { margin-top: 17px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 13px; }.included-enrollment-list article { padding: 15px; background: #f8f6ff; border: 1px solid var(--line); border-radius: 15px; }.included-enrollment-list strong,.included-enrollment-list small { display: block; }.included-enrollment-list small { margin-top: 3px; color: var(--muted); }.included-enrollment-list ul { margin: 10px 0 0; padding-left: 19px; }
.enrollment-confirmation { max-width: 640px; }.confirmation-included-items { margin: 19px 0; padding: 15px; background: #fff9dc; border: 1px solid #eadb98; border-radius: 16px; }.confirmation-included-items > strong { color: var(--purple-900); }.confirmation-included-items > div { margin-top: 10px; padding-top: 10px; border-top: 1px solid #e8dab1; }.confirmation-included-items b,.confirmation-included-items small { display: block; }.confirmation-included-items small { margin-top: 3px; color: var(--muted); }
.table-wrap { overflow: auto; border-radius: 18px; border: 1px solid var(--line); background: #fff; box-shadow: var(--soft-shadow); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 12px 14px; text-align: left; border-bottom: 1px solid #eeeaf4; vertical-align: middle; white-space: nowrap; }
tbody tr:hover { background: #fcfaff; }
th { color: var(--purple-900); background: #f1edfb; font-size: 11px; text-transform: uppercase; letter-spacing: .65px; }
td.wrap { white-space: normal; }.text-right { text-align: right; }
.badge { display: inline-block; padding: 5px 9px; border-radius: 99px; background: #ece9f8; color: var(--purple-900); font-size: 12px; font-weight: 850; text-transform: capitalize; }
.badge.active, .badge.succeeded, .badge.paid, .badge.present, .badge.sent { color: #07634d; background: var(--mint); }
.badge.pending, .badge.partial, .badge.late { color: #815600; background: var(--sun-soft); }
.badge.failed, .badge.cancelled, .badge.absent, .badge.overdue { color: #9a2b2b; background: #ffe1de; }
.alert { border-radius: 15px; margin: 0 0 18px; padding: 13px 16px; border: 1px solid; border-left-width: 6px; background: #fff; box-shadow: var(--soft-shadow); }
.alert.success { border-color: var(--success); }.alert.error { border-color: var(--danger); }.alert.info { border-color: var(--purple-500); background: #f8f6ff; }
.filters { display: flex; gap: 11px; align-items: end; flex-wrap: wrap; margin-bottom: 18px; }
.filters > div { min-width: 150px; flex: 1; }.filters .actions { flex: 0; display: flex; gap: 8px; }
.search-card { padding: 16px; box-shadow: var(--soft-shadow); }
.login-shell { max-width: 450px; margin: 70px auto; }.login-shell .card { border-top: 8px solid var(--sun); }
.empty { text-align: center; padding: 42px; color: var(--muted); white-space: normal; }
.empty-icon { margin-bottom: 5px; font-size: 35px; }
.footer { color: var(--muted); text-align: center; padding: 28px; font-size: 13px; }
.progress { height: 10px; border-radius: 99px; background: #e8e3f2; overflow: hidden; }.progress span { display: block; height: 100%; background: linear-gradient(90deg,var(--teal),#50c8a8); border-radius: inherit; }
.section-title { margin-top: 32px; padding-bottom: 9px; border-bottom: 3px dashed #dfd8eb; }
.skip-link { position: absolute; left: -9999px; }.skip-link:focus { position: fixed; left: 10px; top: 10px; z-index: 1100; background: white; padding: 8px; }

/* People */
.people-heading { align-items: end; }
.people-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 18px; }
.people-tab { display: flex; align-items: center; gap: 13px; padding: 16px 18px; color: var(--purple-900); background: #fff; border: 2px solid var(--line); border-radius: 18px; text-decoration: none; box-shadow: var(--soft-shadow); }
.people-tab:hover, .people-tab.active { border-color: var(--purple-500); background: #f8f5ff; transform: translateY(-1px); }
.people-tab.active { box-shadow: inset 0 -4px 0 var(--sun), var(--soft-shadow); }
.people-tab-icon { width: 44px; height: 44px; display: grid; place-items: center; background: var(--sky); border-radius: 15px; font-size: 23px; }
.people-tab:nth-child(2) .people-tab-icon { background: var(--peach); }
.people-tab strong, .people-tab small { display: block; }.people-tab small { color: var(--muted); }
.person-name { display: flex; align-items: center; gap: 10px; color: var(--purple-900); text-decoration: none; }
.person-name small { display: block; color: var(--muted); font-size: 12px; font-weight: 500; }
.avatar { width: 40px; height: 40px; display: grid; place-items: center; flex: 0 0 auto; overflow: hidden; border-radius: 14px; color: var(--purple-900); background: var(--sun-soft); font-weight: 900; letter-spacing: .3px; }.avatar img { width: 100%; height: 100%; display: block; object-fit: cover; }
.avatar-student { background: var(--sky); }.avatar-parent { background: var(--peach); }
.avatar-large { width: 66px; height: 66px; border-radius: 22px; font-size: 21px; box-shadow: 4px 5px 0 rgba(70,55,126,.11); }
.person-title { display: flex; align-items: center; gap: 15px; }
.person-title h1 { margin-top: 3px; }
.enrollment-headshot { width: 110px; height: 110px; object-fit: cover; border: 4px solid #fff; border-radius: 22px; box-shadow: var(--soft-shadow); }
.card-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.card-heading h2 { margin: 2px 0 0; }
.family-grid { display: grid; gap: 10px; }
.family-card { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 13px; color: var(--purple-900); background: #fbfaff; border: 1px solid var(--line); border-radius: 16px; text-decoration: none; }
.family-card:hover { background: #f4f0ff; border-color: var(--purple-500); }
.family-card strong, .family-card small { display: block; }.family-card small { color: var(--muted); }
.profile-card { border-top: 7px solid var(--teal); }.profile-card:nth-child(2) { border-top-color: var(--coral); }.profile-highlight { background: linear-gradient(145deg,#fff9dd,#fff); border-top-color: var(--sun); }
.person-link { display: flex; flex-direction: column; gap: 3px; text-decoration: none; }.person-link span { color: var(--muted); font-size: 13px; }

/* Shop */
.shop-admin-section { margin: 28px 0; }.page-title.compact { margin-bottom: 12px; }.shop-admin-grid { margin-top: 30px; }
.shop-product-form { padding: clamp(20px,4vw,38px); }.shop-options-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; }.shop-options-heading h3,.shop-options-heading p { margin: 0; }.shop-option-row { margin: 16px 0; padding: 18px; border: 2px solid #e8e1f2; border-radius: 20px; background: #fbfaff; }.shop-option-row-head { margin-bottom: 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.shop-choice-section { padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: 16px; }.shop-choice-heading { margin-bottom: 12px; display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }.shop-choice-heading label,.shop-choice-heading span { display: block; }.shop-choice-builder { display: grid; gap: 10px; }.shop-choice-row { padding: 12px; display: grid; grid-template-columns: minmax(150px,2fr) minmax(110px,1fr) minmax(110px,1fr) auto; gap: 10px; align-items: end; background: #faf8ff; border: 1px solid #e8e1f2; border-radius: 14px; }.shop-choice-row .field { grid-column: auto; }.shop-choice-remove { width: 38px; height: 38px; border: 0; border-radius: 12px; color: #8b2942; background: #ffe7ed; cursor: pointer; font-size: 24px; font-weight: 900; }.shop-choice-remove:hover { background: #ffd4df; }
.shop-live-preview { margin: 22px 0 30px; padding: 20px; background: linear-gradient(145deg,#fff9df,#f5efff); border: 2px dashed #cfc3e4; border-radius: 24px; }.shop-live-preview-heading { margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; gap: 14px; }.shop-live-preview-heading h3 { margin: 4px 0 0; }.shop-preview-card { max-width: 760px; margin: auto; overflow: hidden; display: grid; grid-template-columns: minmax(180px,280px) 1fr; background: #fff; border: 1px solid var(--line); border-radius: 24px; box-shadow: var(--shadow); }.shop-preview-image { min-height: 260px; display: grid; place-items: center; overflow: hidden; background: linear-gradient(145deg,#fff0bc,#ede8ff); }.shop-preview-image img { width: 100%; height: 100%; object-fit: contain; }.shop-preview-image span { font-size: 74px; }.shop-preview-copy { padding: 22px; }.shop-preview-copy h2 { margin: 5px 0; }.shop-preview-copy .shop-price { margin: 7px 0 10px; font-size: 28px; }.shop-preview-copy > p { color: var(--muted); white-space: pre-wrap; }.shop-preview-options { margin: 15px 0; display: grid; gap: 10px; }.shop-preview-option { padding: 10px; background: #faf8ff; border-radius: 12px; }.shop-preview-option > strong { display: block; margin-bottom: 6px; }.shop-preview-choices { display: flex; flex-wrap: wrap; gap: 6px; }.shop-preview-choices > span,.shop-preview-answer { display: inline-block; padding: 6px 9px; color: var(--muted); background: #fff; border: 1px solid var(--line); border-radius: 9px; font-size: 12px; }
.shop-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 22px; }.shop-card { overflow: hidden; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: 26px; box-shadow: var(--shadow); }.shop-card-image { min-height: 220px; display: grid; place-items: center; overflow: hidden; background: linear-gradient(145deg,#fff3c9,#f4edff); text-decoration: none; }.shop-card-image img { width: 100%; height: 240px; object-fit: cover; }.shop-card-image span { font-size: 80px; }.shop-card-copy { flex: 1; padding: 22px; display: flex; flex-direction: column; }.shop-card-copy h2 { margin: 5px 0 9px; }.shop-card-copy h2 a { color: inherit; text-decoration: none; }.shop-card-copy p { flex: 1; color: var(--muted); }.shop-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.shop-filters { margin-bottom: 26px; }.shop-filter-button { align-self: end; }.shop-product-detail { display: grid; grid-template-columns: minmax(280px,1fr) minmax(360px,1fr); gap: 28px; align-items: start; }.shop-product-visual { min-height: 420px; display: grid; place-items: center; overflow: hidden; background: linear-gradient(145deg,#fff1bd,#f1ebff); border-radius: 30px; box-shadow: var(--shadow); }.shop-product-visual img { width: 100%; height: 100%; max-height: 620px; object-fit: contain; }.shop-product-visual span { font-size: 120px; }.shop-price-label { display: block; margin-top: 12px; color: var(--muted); font-size: 12px; font-weight: 900; letter-spacing: .7px; text-transform: uppercase; }.shop-price { margin: 2px 0 18px; color: var(--purple-900); font-size: clamp(28px,4vw,42px); font-weight: 900; }.shop-option { margin: 18px 0; padding: 16px; border: 1px solid var(--line); border-radius: 18px; }.shop-option legend { padding: 0 8px; font-weight: 900; }.shop-choice-list { display: grid; gap: 10px; }.shop-choice-list label { display: flex; gap: 8px; align-items: center; }.shop-choice-list input[type="radio"],.shop-choice-list input[type="checkbox"] { width: 20px; height: 20px; padding: 0; flex: 0 0 auto; accent-color: var(--purple-700); }.shop-buy-row { margin-top: 20px; display: flex; align-items: end; gap: 14px; }.shop-buy-row label { max-width: 130px; }.shop-buy-row input { margin-top: 6px; }.cart-selection { display: block; margin-top: 4px; color: var(--muted); }.cart-quantity { width: 86px; }.cart-update { padding: 16px; text-align: right; }.cart-checkout { position: sticky; top: 18px; }
.direct-checkout-contact { margin-top: 22px; padding: 18px; background: linear-gradient(145deg,#fff9df,#f8f5ff); border: 1px solid var(--line); border-radius: 18px; }.direct-checkout-contact h2 { margin: 0 0 4px; }.direct-checkout-contact .form-grid { margin-top: 14px; }

/* Invoices and private lessons */
.invoice-line-builder { margin: 18px 0; padding: 15px; background: #faf8ff; border: 1px solid var(--line); border-radius: 17px; }
.invoice-line-builder > strong { display: block; margin-bottom: 11px; color: var(--purple-900); }
.invoice-line { margin-top: 9px; display: grid; grid-template-columns: minmax(150px,1fr) 90px 130px; gap: 9px; }
.invoice-link-fields { margin-bottom: 18px; padding: 16px; background: #faf8ff; border: 1px solid var(--line); border-radius: 17px; }.invoice-link-fields > strong { color: var(--purple-900); }.invoice-linked-records { margin: 0 0 22px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }.invoice-linked-records span { padding: 12px; background: #faf8ff; border: 1px solid var(--line); border-radius: 13px; }.invoice-linked-records b { display: block; color: var(--muted); font-size: 11px; letter-spacing: .5px; text-transform: uppercase; }
.invoice-actions { display: flex; gap: 7px; align-items: center; flex-wrap: wrap; }.invoice-actions form { margin: 0; }
.invoice-person-search { margin: 16px 0; min-width: 0; }
.invoice-person-search-control { position: relative; }
.invoice-person-search-control > input { padding-right: 44px; }
.invoice-person-search-control > input::-webkit-search-cancel-button { display: none; }
.invoice-person-clear { position: absolute; top: 50%; right: 9px; transform: translateY(-50%); width: 30px; height: 30px; padding: 0; border: 0; border-radius: 9px; background: #eeeafd; color: var(--purple-900); font-size: 23px; cursor: pointer; }
.invoice-person-results { position: absolute; top: calc(100% + 5px); left: 0; right: 0; z-index: 30; max-height: 320px; overflow-y: auto; margin: 0; padding: 6px; list-style: none; background: #fff; border: 1px solid var(--line); border-radius: 13px; box-shadow: var(--shadow); }
.invoice-person-results [role="option"] { padding: 10px; border-radius: 9px; cursor: pointer; overflow-wrap: anywhere; }
.invoice-person-results [role="option"]:hover,.invoice-person-results [aria-selected="true"] { background: #eee8ff; }
.invoice-person-results strong,.invoice-person-results small { display: block; }
.invoice-person-results strong { color: var(--purple-900); }
.invoice-person-results small { margin-top: 3px; color: var(--muted); font-size: 12px; }
.invoice-person-status { margin: 6px 0 0; }
.invoice-person-add { margin-top: 9px; }
.invoice-person-clear[hidden],.invoice-person-results[hidden],.invoice-person-add[hidden] { display: none; }
.invoice-public { max-width: 900px; margin: 22px auto; padding: clamp(22px,4vw,42px); border-top: 8px solid var(--sun); }
.invoice-public-heading { margin-bottom: 24px; display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; }.invoice-public-heading h1 { margin: 5px 0; }
.invoice-public-total { margin: 22px 0; padding: 18px; display: flex; justify-content: space-between; align-items: end; gap: 18px; background: var(--sun-soft); border-radius: 17px; }
.invoice-public-total div { text-align: right; }.invoice-public-total small,.invoice-public-total strong { display: block; }.invoice-public-total strong { color: var(--purple-900); font-size: 30px; }
.lesson-admin-grid { margin-bottom: 34px; }.lesson-invoice-form { min-width: 145px; }.invoice-amount-label { margin-bottom: 8px; font-size: 11px; }.invoice-amount-label input { margin-top: 4px; padding: 8px; }
.lesson-public-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; }.lesson-public-card { display: flex; flex-direction: column; border-top: 7px solid var(--teal); }.lesson-public-card:nth-child(3n+2) { border-top-color: var(--sun); }.lesson-public-card:nth-child(3n+3) { border-top-color: var(--coral); }.lesson-public-card > p { color: var(--muted); }.lesson-public-card .btn,.lesson-public-card .badge { margin-top: auto; }
.lesson-public-facts { margin: 14px 0 21px; display: grid; gap: 7px; }.lesson-public-facts span { padding: 8px 10px; background: #f8f6ff; border-radius: 11px; }
.lesson-request-success { max-width: 700px; margin: 35px auto; text-align: center; }.lesson-request-success > span { font-size: 62px; }.lesson-option-summary { border-top: 8px solid var(--sun); }.lesson-option-summary .metric small { font-size: 13px; }
.lesson-interest-section { max-width: 980px; margin: 38px auto 0; padding: clamp(22px,4vw,38px); border-top: 8px solid var(--coral); scroll-margin-top: 130px; }
.lesson-interest-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; }.lesson-interest-heading h2 { margin: 5px 0 8px; }.lesson-interest-heading p { max-width: 760px; margin: 0 0 20px; color: var(--muted); }.lesson-interest-icon { display: grid; place-items: center; width: 74px; height: 74px; flex: 0 0 74px; background: linear-gradient(145deg,var(--sun-soft),#f2eaff); border-radius: 23px; font-size: 39px; }
.lesson-interest-actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }.lesson-interest-actions .help { margin: 0; }
.lesson-interest-admin-heading { margin: 34px 0 16px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }.lesson-interest-admin-heading h2 { margin: 4px 0; }.lesson-interest-admin-heading p { margin: 0; }
.lesson-interest-admin-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin-bottom: 38px; }.lesson-interest-admin-card { border-top: 6px solid var(--teal); }.lesson-interest-admin-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }.lesson-interest-admin-title h3 { margin: 3px 0 14px; font-size: 25px; }
.lesson-interest-details { margin: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px; }.lesson-interest-details div { min-width: 0; padding: 11px; background: #faf8ff; border-radius: 12px; overflow-wrap: anywhere; }.lesson-interest-details dt { margin-bottom: 3px; color: var(--muted); font-size: 11px; font-weight: 900; letter-spacing: .5px; text-transform: uppercase; }.lesson-interest-details dd { margin: 0; }
.lesson-interest-message { margin-top: 13px; padding: 13px; background: var(--sun-soft); border-radius: 13px; }.lesson-interest-message p { margin: 5px 0 0; }.lesson-interest-admin-form { margin-top: 15px; padding-top: 15px; border-top: 1px solid var(--line); }.lesson-interest-admin-form textarea { min-height: 92px; }
.badge.audition, .badge.requested { color: #5c3ca7; background: #eee7ff; }.badge.accepted, .badge.approved, .badge.confirmed { color: #07634d; background: var(--mint); }.badge.waitlisted { color: #315f82; background: var(--sky); }.badge.withdrawn, .badge.completed { color: #55516a; background: #eceaf0; }
.badge.sent, .badge.opened { color: #315f82; background: var(--sky); }.badge.redeemed { color: #07634d; background: var(--mint); }.badge.expired { color: #7b5360; background: #f5e7ec; }
.scholarship-admin-grid { align-items: start; }.scholarship-award { margin: 0 0 24px; padding: 20px; display: grid; grid-template-columns: auto 1fr; gap: 16px; color: var(--purple-900); background: linear-gradient(135deg,#fff2b9,#f1eaff); border: 2px solid #e0cc7c; border-radius: 24px; box-shadow: var(--soft-shadow); }.scholarship-award > span { font-size: 44px; }.scholarship-award strong { font-size: 22px; }.scholarship-award p { margin: 5px 0 13px; color: var(--text); }.scholarship-costs { display: flex; flex-wrap: wrap; gap: 9px; }.scholarship-costs span { padding: 8px 11px; background: rgba(255,255,255,.78); border-radius: 11px; }.scholarship-costs b { margin-left: 4px; }
.report-summary { margin-bottom: 30px; }.report-card-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; }.report-card { min-height: 125px; padding: 18px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 13px; color: var(--purple-900); background: #fff; border: 2px solid var(--line); border-radius: 19px; box-shadow: var(--soft-shadow); text-decoration: none; }.report-card:hover,.report-card.active { border-color: var(--purple-500); background: #faf8ff; transform: translateY(-1px); }.report-card > span { font-size: 30px; }.report-card strong,.report-card small { display: block; }.report-card small { margin-top: 5px; color: var(--muted); font-weight: 500; line-height: 1.35; }.report-card > b { font-size: 25px; }.report-view { min-width: 0; }.report-filters { margin-bottom: 18px; }.report-table table { min-width: 900px; }.report-table th { white-space: nowrap; }.report-table td { vertical-align: top; }

.reports-page { max-width: none; }
.reports-workspace { display: grid; grid-template-columns: 245px minmax(0, 1fr); gap: 26px; align-items: start; }
.reports-sidebar { padding: 18px 12px; border-top: 5px solid var(--sun); }
.reports-sidebar > .eyebrow, .reports-sidebar > h2 { margin-left: 10px; }
.reports-sidebar > h2 { margin-bottom: 18px; font-size: 24px; }
.reports-nav { position: relative; display: flex; flex-direction: column; gap: 5px; }
.reports-nav a { display: flex; align-items: center; gap: 10px; padding: 11px 12px; border: 1px solid transparent; border-radius: 13px; color: var(--purple-900); font-size: 14px; font-weight: 700; line-height: 1.35; text-decoration: none; }
.reports-nav a > span:first-child { flex: 0 0 24px; font-size: 20px; text-align: center; }
.reports-nav a:hover { background: #faf8ff; border-color: var(--line); }
.reports-nav a.active { background: #eeeafd; border-color: var(--purple-500); box-shadow: inset 4px 0 0 var(--purple-700); }
.reports-nav a:focus-visible, .report-table:focus-visible { outline: 3px solid var(--purple-500); outline-offset: 3px; }
.report-filters .actions { flex: 0 0 auto; min-width: 0; }
.report-filters .actions .btn { white-space: nowrap; }
@media (max-width: 1050px) {
  .reports-workspace { grid-template-columns: minmax(0, 1fr); gap: 22px; }
  .reports-sidebar { min-width: 0; padding: 12px; }
  .reports-sidebar > .eyebrow, .reports-sidebar > h2 { display: none; }
  .reports-nav { flex-direction: row; overflow-x: auto; padding: 3px 3px 9px; }
  .reports-nav a { flex: 0 0 auto; white-space: nowrap; }
  .reports-nav a.active { box-shadow: inset 0 -3px 0 var(--sun); }
}

@media (max-width: 940px) {
  .admin-header .inner { align-items: flex-start; flex-direction: column; }
  .admin-header .nav { gap: 2px; }
  .admin-header .nav a, .admin-header .nav-button { padding: 7px 8px; font-size: 13px; }
}
@media (max-width: 840px) {
  .hero { min-height: auto; grid-template-columns: 1fr; padding-top: 42px; }.hero-card { min-height: 230px; }.kid-scene-main { font-size: 80px; }
  .span-8, .span-7, .span-6, .span-5, .span-4, .span-3 { grid-column: span 12; }
  .field, .field.third, .field.quarter { grid-column: span 12; }
  .people-tabs { grid-template-columns: 1fr; }
  .settings-grid { grid-template-columns: 1fr; }.settings-main,.settings-logo,.settings-registration,.settings-save { grid-column: 1; grid-row: auto; }
  .setting-with-preview { grid-column: 1 / -1; }.registration-information-grid,.included-registration-grid,.included-product-picker,.included-enrollment-list { grid-template-columns: 1fr; }
  .shop-grid,.lesson-public-grid,.lesson-interest-admin-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }.shop-product-detail { grid-template-columns: 1fr; }.cart-checkout { position: static; }
  .report-card-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .shop-choice-row { grid-template-columns: 1fr 1fr; }.shop-choice-remove { align-self: end; }
}
@media (max-width: 560px) {
  .public-header .inner { align-items: flex-start; flex-direction: column; }
  .site-menu-callout { align-items: flex-start; flex-direction: column; }
  .page { padding-inline: 16px; }.hero h1 { font-size: 43px; }.hero-card { min-height: 190px; }
  .button-row { width: 100%; }.button-row .btn { flex: 1; }
  .people-table td, .people-table th { padding-inline: 10px; }
  .portal-card { min-height: 100px; padding: 16px; grid-template-columns: auto 1fr; }.portal-card > b { display: none; }.portal-card-icon { width: 43px; height: 43px; }.portal-intro { padding: 28px 19px; }.public-bottom-copy { padding: 21px 18px; }
  .setting-with-preview,.settings-logo .setting-with-preview,.setting-with-preview-wide { grid-template-columns: 1fr; }.setting-location-preview { max-width: 230px; }.settings-section-location { margin-left: 0; }.included-product-pick { grid-template-columns: 1fr; }.included-product-quantity { max-width: 130px; }
  .shop-grid,.lesson-public-grid,.lesson-interest-admin-grid,.report-card-grid { grid-template-columns: 1fr; }.shop-options-heading,.shop-card-foot,.shop-buy-row,.shop-choice-heading,.invoice-public-heading,.lesson-interest-heading,.lesson-interest-admin-heading { align-items: stretch; flex-direction: column; }.shop-buy-row label { max-width: none; }.shop-choice-row,.shop-preview-card,.invoice-line,.invoice-linked-records,.scholarship-award,.lesson-interest-details { grid-template-columns: 1fr; }.shop-preview-image { min-height: 190px; }.invoice-public-total { align-items: flex-start; flex-direction: column; }.invoice-public-total div { text-align: left; }.lesson-interest-icon { width: 58px; height: 58px; flex-basis: 58px; font-size: 31px; }
}
@media print { .reports-sidebar { display: none !important; }.reports-workspace { display: block; }.admin-header, .public-header, .btn, .filters, .footer, .people-tabs, .report-catalog, .report-summary, .report-page-title { display: none !important; }.page { max-width: none; padding: 0; }.card, .table-wrap { box-shadow: none; }.report-view { margin: 0; padding: 0; border: 0; }.report-table { overflow: visible; }.report-table table { min-width: 0; font-size: 10px; }.report-table th,.report-table td { padding: 7px; white-space: normal; overflow-wrap: anywhere; } }
@media (prefers-reduced-motion: reduce) { .digi-character-image,.digi-character-animation { transition: none; } }

.card-payment { margin: 22px 0; padding: 18px; background: #fff; border: 1px solid var(--line); border-radius: 18px; }
.card-payment h2 { margin: 0 0 6px; }
.card-payment-intro { margin: 0 0 17px; color: #665e78; }
.card-payment-fields { display: grid; grid-template-columns: minmax(260px,2fr) minmax(145px,.85fr) minmax(115px,.7fr); gap: 14px; }
.card-payment-field { min-width: 0; }
.card-payment-field-label { display: block; margin: 0 0 7px; color: var(--purple-900); font-size: 14px; font-weight: 800; }
.stripe-card-field { min-height: 52px; padding: 15px 13px; background: #fff; border: 2px solid #d8d0e8; border-radius: 12px; transition: border-color .15s ease, box-shadow .15s ease, background .15s ease; }
.stripe-card-field:hover { border-color: #aaa0c2; background: #fefeff; }
.stripe-card-field.StripeElement--focus { border-color: var(--purple-700); box-shadow: 0 0 0 3px #6652c71a; }
.stripe-card-field.StripeElement--invalid { border-color: #b3261e; box-shadow: 0 0 0 3px #b3261e12; }
.card-payment-error { color: #b3261e; font-weight: 700; margin: 14px 0 0; }
.card-payment[hidden], .card-payment-error[hidden] { display: none; }
@media (max-width: 700px) {
  .card-payment-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .card-payment-number { grid-column: 1 / -1; }
}
@media (max-width: 400px) {
  .card-payment-fields { grid-template-columns: 1fr; }
  .card-payment-number { grid-column: auto; }
}
.shop-order-total { margin: 18px 0 0; font-size: 20px; color: var(--purple-900); }
.shop-payment-result { margin-top: 20px; }
.shop-payment-result[hidden] { display: none; }

/* Shared checkout status, below Stripe's bank-verification dialog. */
body.payment-is-processing { overflow: hidden; }
.payment-processing { position: fixed; inset: 0; z-index: 1100; display: grid; place-items: center; padding: 20px; overflow: auto; background: #241c42b8; backdrop-filter: blur(4px); outline: none; }
.payment-processing[hidden] { display: none; }
.payment-processing-panel { width: min(100%, 460px); padding: clamp(24px, 5vw, 38px); border-radius: 24px; background: #fff; box-shadow: 0 24px 80px #160e3a55; text-align: center; }
.payment-processing-panel h2 { margin: 10px 0 12px; color: var(--purple-900); font-size: clamp(23px, 5vw, 29px); }
.payment-processing-panel p { margin: 0 0 22px; }
.payment-processing-bar { height: 12px; overflow: hidden; border-radius: 99px; background: #eae5f8; }
.payment-processing-bar span { display: block; width: 40%; height: 100%; border-radius: inherit; background: var(--purple-700); animation: payment-processing-slide 1.6s ease-in-out infinite; }
.payment-processing[data-stage="3"] .payment-processing-bar span { width: 100%; background: #16866a; animation: none; }
.payment-processing-steps { display: flex; justify-content: space-between; gap: 12px; padding: 0; margin: 12px 0 24px; list-style: none; color: #716980; font-size: 13px; }
.payment-processing-steps .is-current { color: var(--purple-700); font-weight: 800; }
.payment-processing-steps .is-complete { color: #176147; font-weight: 700; }
.payment-processing-panel .payment-processing-help { margin: 0; color: #625970; font-size: 14px; line-height: 1.6; }
@keyframes payment-processing-slide { 0% { transform: translateX(-100%); } 100% { transform: translateX(350%); } }
@media (prefers-reduced-motion: reduce) { .payment-processing-bar span { animation: none; width: 100%; opacity: .65; } }

/* Developer configuration */
.developer-menu { position: relative; z-index: 1; }
.developer-menu summary { color: #f5f2ff; padding: 8px 10px; border-radius: 12px; font-size: 14px; font-weight: 700; cursor: pointer; }
.developer-menu summary:hover,.developer-menu summary.active { background: rgba(255,255,255,.15); }
.developer-menu-items { position: absolute; top: calc(100% + 8px); right: 0; min-width: 190px; padding: 7px; background: var(--purple-900); border: 1px solid #ffffff33; border-radius: 14px; box-shadow: 0 12px 28px #23143c40; }
.developer-menu-items a { display: block; white-space: nowrap; }
.developer-menu-items a[aria-current] { background: #ffffff22; }
.developer-panel { margin: 22px 0; scroll-margin-top: 180px; }
.developer-panel code { overflow-wrap: anywhere; }
.developer-mode { display: flex; gap: 22px; flex-wrap: wrap; border: 1px solid var(--line); border-radius: 14px; padding: 16px; }
.developer-mode label { display: flex; align-items: center; gap: 8px; margin: 0; }
.developer-mode input { width: auto; }
.developer-import { margin-top: 24px; }
.developer-import summary { cursor: pointer; font-weight: 700; }
.developer-split-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px; }
.developer-split-form { min-width: 0; }
.developer-progress { margin: 20px 0; padding: 18px; background: #f5f1ff; border-radius: 14px; display: grid; gap: 9px; }
.developer-progress progress { width: 100%; accent-color: var(--purple-700); height: 14px; }
.developer-progress span { font-size: 13px; }
.report-fee-sync { margin-bottom: 20px; }
.report-fee-sync progress { width: 100%; height: 14px; accent-color: var(--purple-700); }
.report-day-navigation { margin: 0 0 18px; }
.report-day-navigation .btn { padding: 12px 14px; font-size: 13px; white-space: nowrap; }
.report-date-label { font-weight: 700; }
@media print { .report-fee-sync { display: none !important; } }
@media print { .report-day-navigation { display: none !important; } }
@media(max-width:900px) { .developer-split-grid { grid-template-columns: 1fr; } }
@media(max-width:600px) { .developer-menu-items { right: auto; left: 0; } }

/* Make stored secrets distinct from unconfigured keys without exposing values. */
.developer-secret-field { padding: 16px; border: 1px solid #a8d5c1; border-radius: 14px; background: #f3fbf7; }
.developer-secret-status { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; color: #176147; font-size: 13px; }
.developer-secret-field input[type="password"] { border-color: #8cbfa9; background: #fff; }
.developer-secret-field input[type="password"]::placeholder { color: #526a5f; opacity: 1; }
.developer-secret-field .help { display: block; margin-top: 8px; }
.developer-secret-field .checkbox { margin: 12px 0 0; }
.developer-secret-field.needs-secret { background: #fffbf1; border-color: #e2c78e; }
.needs-secret .developer-secret-status { color: #7c561d; }
.needs-secret input[type="password"] { border-color: #d2b370; }
.needs-secret input[type="password"]::placeholder { color: #7c6a4d; }

.invoice-line label { min-width: 0; font-size: 12px; }
.invoice-shop-line { margin: 14px 0; padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.invoice-shop-line label { display: block; margin-bottom: 12px; }
.invoice-shop-line input[type="checkbox"] { width: auto; margin-left: 10px; }
.invoice-shop-line [data-invoice-shop-quantity] { max-width: 120px; }
