:root{color-scheme:light;--heading:#172554;--ink:#20294a;--muted:#5c6780;--accent:#f05b9c;--accent-2:#3e9fe8;--soft:#fff0f7;--mint:#dff8ec;--yellow:#fff4d4;--line:#e6ebf5;--card:#fff;--bg:#f6f8fc;--button:#172554;--button-text:#fff;--focus:#172554;--radius:20px;--shadow:0 12px 32px #17255412}
body.theme-tutor{--heading:#172554;--ink:#20294a;--muted:#5c6780;--accent:#f05b9c;--accent-2:#3e9fe8;--soft:#fff0f7;--mint:#dff8ec;--yellow:#fff6dc;--line:#eadff0;--bg:#f7f5fb;--button:#172554;--focus:#172554;--radius:20px}
body.theme-neutral{--heading:#1D2B5B;--ink:#243044;--muted:#5E6A7D;--accent:#3E63B8;--accent-2:#1F8A8A;--soft:#EEF2FA;--mint:#E7F6F4;--yellow:#F4F1E8;--line:#E2E7F0;--bg:#F5F7FB;--button:#1D2B5B;--focus:#1D2B5B;--radius:14px;--shadow:0 8px 22px #1d2b5b0d}
body.theme-kids-blue{--heading:#1F5F99;--ink:#1a3358;--muted:#3E6288;--accent:#378AD6;--accent-2:#1AA7A1;--soft:#E7F6FF;--mint:#E5F8F4;--yellow:#FFF4D8;--line:#D5E9F8;--bg:#F3F8FF;--button:#1F6FB5;--focus:#0E4E86;--radius:26px}
body.theme-kids-pink{--heading:#8E3A68;--ink:#4A2740;--muted:#7A5570;--accent:#E875AA;--accent-2:#B79AD8;--soft:#FFF0F7;--mint:#F3E9FF;--yellow:#FFF1F6;--line:#F3D5E6;--bg:#FFF5FA;--button:#A33B72;--focus:#7A2454;--radius:26px}
*{box-sizing:border-box}
body{margin:0;font-family:Nunito,sans-serif;color:var(--ink);background:var(--bg);font-size:16px;line-height:1.55}
a{color:var(--heading)}
button,input,select,textarea{font:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.skip-link{position:absolute;left:12px;top:-48px;background:var(--button);color:var(--button-text);padding:10px 14px;border-radius:12px;z-index:50}
.skip-link:focus{top:12px}
.app-shell{min-height:100vh;display:flex;flex-direction:column}
.topbar{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.topbar-inner{display:flex;align-items:center;gap:16px;padding:12px 20px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--heading);border-radius:14px}
.brand span{display:flex;flex-direction:column;line-height:1.2}
.brand strong{font-family:Poppins,sans-serif;font-size:15px}
.brand small{color:var(--muted);font-size:12px}
.who{margin-left:auto;display:flex;align-items:center;gap:8px;text-align:right;line-height:1.2}
.who-text{display:flex;flex-direction:column}
.who-text span{display:block;font-weight:800}
.who small{color:var(--accent);font-weight:800;font-size:12px}
.who-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;object-position:center 18%;background:#fff;border:1px solid var(--line)}
.person{display:flex;align-items:center;gap:12px}
.menu-toggle{display:none;border:0;background:var(--soft);color:var(--heading);border-radius:12px;padding:10px 14px;font-weight:800;min-height:44px}
.appnav{display:flex;gap:6px;align-items:center;padding:0 16px 12px;flex-wrap:wrap}
.appnav a,.appnav button{border:0;background:transparent;color:var(--heading);text-decoration:none;font-weight:800;font-size:15px;border-radius:999px;padding:8px 12px;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;gap:6px}
.appnav a[aria-current="page"],.appnav a:hover{background:var(--soft);color:var(--heading)}
.appnav form{margin:0}
.nav-icon{width:1.2em;text-align:center}
.content{width:min(1100px,calc(100% - 32px));margin:24px auto 40px;flex:1}
.page-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}
.dash-hero{display:flex;justify-content:flex-start;gap:16px;align-items:center;margin-bottom:18px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}
body.theme-tutor .dash-hero{background:linear-gradient(120deg,#fff7fb,#f4f8ff 60%,#fff9ee)}
.dash-hero h1{margin:0}
.dash-hero p{margin:6px 0 0;color:var(--muted)}
.eyebrow{margin:0;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
h1,h2,h3{font-family:Poppins,sans-serif;color:var(--heading);line-height:1.25;margin:0 0 8px}
h1{font-size:clamp(28px,4vw,36px)}
h2{font-size:22px}
.card,.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.stat{position:relative;padding-top:16px}
.stat strong{display:block;font-family:Poppins,sans-serif;font-size:32px;color:var(--heading)}
.stat span{color:var(--muted);font-weight:800}
.stat-kicker{display:block;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px}
.stat-students{border-top:6px solid var(--accent)}
.stat-classes{border-top:6px solid var(--accent-2)}
.stat-review{border-top:6px solid #d9a441}
.grid-2{display:grid;grid-template-columns:1.15fr .85fr;gap:16px}
.stack{display:grid;gap:12px}
.list-card{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--line)}
.list-card:first-child{border-top:0;padding-top:0}
.list-card h2,.list-card h3{font-size:18px;margin:0 0 4px}
.meta{color:var(--muted);font-size:14px}
.button,.button-light,.button-pink{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:12px;padding:12px 16px;font-weight:800;text-decoration:none;border:0;cursor:pointer;min-height:44px}
.button{background:var(--button);color:#fff}
.button-light{background:#fff;color:var(--heading);border:1px solid var(--line)}
.button-pink{background:#2f89c9;color:#fff}
body.theme-neutral .button-pink{background:#1F8A8A}
body.theme-kids-blue .button-pink{background:#0E7C78}
body.theme-kids-pink .button-pink{background:#7A3E9D}
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
label,legend{display:block;font-weight:800;margin:14px 0 6px}
input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;color:var(--ink)}
textarea{min-height:120px;resize:vertical}
.hint,.prose{color:var(--muted)}
.prose{white-space:pre-wrap}
.alert{border-radius:14px;padding:12px 14px;margin-bottom:14px;white-space:pre-wrap}
.alert-ok{background:var(--mint);color:#146047}
.alert-error{background:#ffe8ee;color:#9d2048}
.alert ul{margin:0;padding-left:18px}
.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:800;background:#eef2f8;color:var(--heading);border:1px solid var(--line)}
.badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.badge-published,.badge-submitted,.badge-scheduled,.badge-active{background:var(--mint);color:#146047}
.badge-pending,.badge-draft{background:var(--yellow);color:#7a5600}
.badge-reviewed,.badge-completed{background:#e7f1ff;color:#1d4f86}
.badge-closed,.badge-inactive,.badge-cancelled,.badge-failed{background:#ffe8ee;color:#9d2048}
.badge-sent,.badge-activated{background:var(--mint);color:#146047}
.badge-expired{background:var(--yellow);color:#7a5600}
.summary ul{margin:0;padding-left:18px}
.avatar-picker{border:1px solid var(--line);border-radius:16px;padding:12px;margin-top:12px}
.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.avatar-group{grid-column:1 / -1;margin:8px 0 0;font-weight:800;color:var(--heading)}
.avatar-option{display:flex;flex-direction:column;align-items:center;gap:4px;border:1px solid var(--line);border-radius:16px;padding:8px;min-height:44px;cursor:pointer;background:#fff;text-align:center}
.avatar-option input{width:auto}
.avatar-option img{width:100%;height:132px;object-fit:cover;object-position:center 18%;border-radius:18px;background:#f4eef8}
body.theme-kids-blue .student-welcome,body.theme-kids-pink .student-welcome{background:linear-gradient(135deg,#fff 0%,var(--soft) 58%,var(--mint));padding:22px 22px 18px}
body.theme-kids-blue .student-welcome img,body.theme-kids-pink .student-welcome img{width:min(168px,42vw);height:188px;border-radius:28px;object-fit:cover;object-position:center 16%;background:#fff;box-shadow:0 12px 28px #17255414;margin-left:auto}
body.theme-neutral .dash-hero img,body.theme-tutor .dash-hero img{width:64px;height:64px;border-radius:18px;object-fit:cover;object-position:center 18%}
.avatar-option:has(input:checked){border-color:var(--heading);box-shadow:0 0 0 2px var(--soft)}
.checks,.theme-picker{border:1px solid var(--line);border-radius:16px;padding:10px 12px 12px;margin-top:8px}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:700;margin:8px 0}
.check input,.theme-option input{width:auto;margin-top:4px}
.check small{color:var(--muted);font-weight:700}
.empty{background:var(--soft);border-radius:16px;padding:16px;color:var(--ink)}
.empty strong{display:block;color:var(--heading);margin-bottom:4px}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.filters input{max-width:280px}
.app-footer{display:flex;justify-content:space-between;gap:12px;padding:16px 20px 24px;color:var(--muted);font-size:13px}
.guest{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,#fff4fa,#f4f8ff 55%,#fff9ea)}
.login-card{width:min(440px,100%);background:#fff;border-radius:28px;padding:28px;box-shadow:0 20px 50px #1725541a}
.login-card .brand{margin-bottom:18px}
.note{font-size:14px;color:var(--muted)}
.file-list{padding-left:18px}
.section-gap{margin-top:16px}
.counts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.count{background:var(--soft);border-radius:16px;padding:12px}
.count strong{display:block;font-family:Poppins,sans-serif;font-size:26px;color:var(--heading)}
.count span{font-size:13px;font-weight:800;color:var(--muted)}
.theme-picker{display:grid;gap:8px}
.theme-option{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:14px;font-weight:800}
.theme-option:has(input:checked){border-color:var(--heading);background:var(--soft)}
.swatch{width:28px;height:28px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);flex:0 0 28px}
.theme-option-neutral .swatch{background:linear-gradient(135deg,#1D2B5B,#3E63B8)}
.theme-option-kids-blue .swatch{background:linear-gradient(135deg,#76C7F2,#378AD6)}
.theme-option-kids-pink .swatch{background:linear-gradient(135deg,#F6B8D0,#E875AA)}
body.theme-kids-blue .button,body.theme-kids-pink .button,body.theme-kids-blue .button-light,body.theme-kids-pink .button-light,body.theme-kids-blue .button-pink,body.theme-kids-pink .button-pink{min-height:48px;border-radius:999px;font-size:16px}
body.theme-neutral .card,body.theme-neutral .panel,body.theme-neutral .dash-hero{box-shadow:none}
body.theme-kids-blue .panel,body.theme-kids-pink .panel{border-width:2px}
@media(max-width:800px){
  .stats,.grid-2,.counts{grid-template-columns:1fr}
  .menu-toggle{display:inline-flex;flex:0 0 auto}
  .brand{min-width:0}
  .brand small,.who{display:none}
  .appnav{display:none;flex-direction:column;align-items:stretch;padding:0 16px 16px}
  .appnav.open{display:flex}
  .appnav a,.appnav button{text-align:left;justify-content:flex-start}
  .page-head,.dash-hero{align-items:flex-start;flex-direction:column}
  .list-card{flex-direction:column}
  .content{width:min(100% - 24px,720px)}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto !important;transition:none !important;animation:none !important}
  .button:active{transform:none}
}
.avatar-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px}
.avatar-option{position:relative;gap:8px;padding:10px;border-radius:22px;background:#fff8f4;border:2px solid #f0e4ee}
.avatar-option input{position:absolute;width:1px;height:1px;margin:0;opacity:0}
.avatar-option img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;object-position:center 42%;border-radius:18px;background:#f7eef8}
.avatar-option span{font-size:13px;font-weight:800;line-height:1.3;color:var(--heading)}
.avatar-option:focus-within{outline:3px solid var(--focus);outline-offset:3px}
.avatar-option:has(input:checked){border-color:var(--heading);background:var(--soft);box-shadow:0 0 0 3px var(--accent)}
.avatar-option:has(input:checked)::after{content:"";position:absolute;top:16px;right:16px;width:22px;height:22px;border-radius:50%;background:var(--heading);box-shadow:inset 0 0 0 6px #fff, inset 0 0 0 11px var(--accent)}
.who-avatar,.person img{object-position:center 42%}
body.theme-kids-blue .student-welcome img,body.theme-kids-pink .student-welcome img,body.theme-neutral .dash-hero img,body.theme-tutor .dash-hero img{object-position:center 42%;aspect-ratio:1;height:auto}
@media(max-width:800px){
  .who{display:flex}
  .who-text{display:none}
  .avatar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.topbar .brand img{width:44px;height:44px;object-fit:contain;flex:0 0 44px;background:transparent}
.topbar .brand img.brand-mark{width:auto;height:42px;max-width:128px;object-fit:contain;flex:0 0 auto}
.login-card .brand-logo{display:block;width:min(240px,78%);max-height:210px;height:auto;object-fit:contain;margin:0 auto 12px}
.dash-hero img.brand-mark{width:72px;height:56px;aspect-ratio:auto;object-fit:contain;object-position:center;background:transparent}

.workspace{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr) minmax(150px,210px);gap:8px;align-items:start;width:min(1440px,100%);margin:0 auto;flex:1}
.workspace .content{width:auto;margin:24px 8px 40px}
.side-art{position:sticky;top:92px;padding:28px 8px 12px}
.side-art img{display:block;width:100%;height:auto;max-height:68vh;object-fit:contain;object-position:center;border-radius:28px;background:
  radial-gradient(ellipse at 50% 60%,rgba(255,255,255,.92),rgba(255,255,255,0) 70%),
  linear-gradient(160deg,#ffe7f3,#e7f3ff);
  box-shadow:0 16px 28px rgba(23,37,84,.12);padding:8px}
.student-welcome{justify-content:space-between}
.student-welcome .welcome-copy{min-width:0;flex:1}
body.theme-kids-blue .student-welcome img.welcome-portrait,
body.theme-kids-pink .student-welcome img.welcome-portrait,
body.theme-neutral .student-welcome img.welcome-portrait,
body.theme-tutor .student-welcome img.welcome-portrait{
  width:120px;height:120px;aspect-ratio:auto;object-fit:contain;object-position:center;
  border-radius:28px;background:#fff;margin-left:18px;flex:0 0 auto;box-shadow:0 10px 22px rgba(23,37,84,.1)
}
.guest:has(.login-stage){display:block;padding:0;overflow-x:hidden;background:linear-gradient(145deg,#ffe8f4 0%,#efe7ff 42%,#e7f4ff 100%)}
.login-stage{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,460px);align-items:stretch}
.login-art{position:relative;display:flex;align-items:center;justify-content:center;padding:48px 36px;overflow:hidden}
.login-art:before{content:"";position:absolute;inset:10% 12% 12% 8%;border-radius:46% 54% 42% 58%;background:radial-gradient(ellipse at 50% 55%,rgba(255,255,255,.78),rgba(255,255,255,0) 68%),linear-gradient(145deg,#ffd6ea,#d9ecff);filter:blur(2px);transform:rotate(-6deg)}
.login-art img{position:relative;z-index:1;width:min(100%,560px);height:auto;max-height:72vh;object-fit:contain;border-radius:32px;box-shadow:0 22px 40px rgba(23,37,84,.14)}
.login-float,.login-word{position:absolute;z-index:2;pointer-events:none;color:#e56aa0;font-weight:800}
.login-heart{top:12%;left:10%;font-size:28px;animation:bloom-float 7s ease-in-out infinite}
.login-star{top:18%;right:14%;color:#6aa7e6;font-size:26px;animation:bloom-float 8s ease-in-out 1s infinite}
.login-heart-b{bottom:16%;right:18%;left:auto;font-size:22px;animation-delay:1.6s}
.login-word{font-family:Poppins,sans-serif;letter-spacing:.14em;font-size:13px;color:#7d6b9a;animation:bloom-float 9s ease-in-out infinite}
.login-word-a{top:8%;left:28%}
.login-word-b{bottom:22%;left:12%;animation-delay:.8s}
.login-word-c{top:28%;right:8%;animation-delay:1.4s}
.login-word-d{bottom:10%;right:28%;color:#d4538a;animation-delay:2s}
.login-stage .login-card{width:auto;margin:28px 28px 28px 0;align-self:center;background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.85);box-shadow:0 18px 40px rgba(23,37,84,.12);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.login-logo{display:block;width:88px;height:88px;object-fit:contain;border-radius:50%;background:#fff;padding:6px;box-shadow:0 8px 18px rgba(23,37,84,.08);margin-bottom:12px}
.login-stage .login-card h1,.login-stage .login-card label,.login-stage .login-card .note{color:#24304f}
.login-stage .login-card input{background:#fff}
@keyframes bloom-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@media(prefers-reduced-motion:reduce){
  .login-float,.login-word{animation:none}
}
@media(max-width:1100px){
  .workspace{grid-template-columns:minmax(0,1fr)}
  .side-art{display:none}
}
@media(max-width:860px){
  .login-stage{display:block;min-height:100vh}
  .login-art{display:none}
  .login-stage .login-card{margin:20px auto;width:min(440px,calc(100% - 28px))}
  .student-welcome{align-items:center}
  body.theme-kids-blue .student-welcome img.welcome-portrait,
  body.theme-kids-pink .student-welcome img.welcome-portrait,
  body.theme-neutral .student-welcome img.welcome-portrait{width:84px;height:84px}
}

/* Paneles del aula */
body.theme-teens{--heading:#17356e;--ink:#1b2944;--muted:#3d5274;--accent:#2f7edb;--accent-2:#6d5efc;--soft:#eaf2ff;--mint:#e5f6fb;--yellow:#fff4d4;--line:#d5e3f6;--card:#fff;--bg:#f4f7fc;--button:#17356e;--button-text:#fff;--focus:#17356e;--radius:18px;--shadow:0 12px 32px #17356e14}
body.theme-adults{--heading:#12382f;--ink:#1c3330;--muted:#3e564f;--accent:#187a56;--accent-2:#1f6f8a;--soft:#e7f5ef;--mint:#e5f6ee;--yellow:#f6f1e4;--line:#d3e8df;--card:#fff;--bg:#f3f7f5;--button:#12382f;--button-text:#fff;--focus:#12382f;--radius:16px;--shadow:0 10px 28px #12382f12}
body{font-family:Nunito,"Segoe UI",sans-serif}
h1,h2,h3,.brand strong,.subhead,.child-name{font-family:Poppins,Nunito,"Segoe UI",sans-serif}
body.theme-tutor{background:radial-gradient(880px 380px at 100% -8%,#ffe4f2 0%,transparent 58%),radial-gradient(720px 340px at -8% -4%,#e7f3ff 0%,transparent 52%),var(--bg)}
body.theme-kids-blue{background:radial-gradient(880px 380px at 100% -8%,#d9f0ff 0%,transparent 58%),radial-gradient(720px 340px at -8% 0%,#e5fff6 0%,transparent 50%),var(--bg)}
body.theme-teens{background:radial-gradient(880px 380px at 100% -8%,#e4e8ff 0%,transparent 58%),radial-gradient(720px 340px at -8% 0%,#e7f3ff 0%,transparent 50%),var(--bg)}
body.theme-adults{background:radial-gradient(880px 380px at 100% -8%,#e5f6ee 0%,transparent 58%),radial-gradient(720px 340px at -8% 0%,#e7f3f6 0%,transparent 50%),var(--bg)}
body.theme-neutral{background:radial-gradient(880px 380px at 100% -8%,#e8eeff 0%,transparent 58%),radial-gradient(720px 340px at -8% 0%,#e7f6f4 0%,transparent 50%),var(--bg)}
.topbar{box-shadow:0 8px 24px #1725540d}
.topbar::after{content:"";display:block;height:4px;background:linear-gradient(90deg,var(--accent),var(--accent-2) 55%,#ffca54)}
.ico{width:1.15em;height:1.15em;display:block}
.nav-icon{display:inline-flex}
.section-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:var(--soft);color:var(--heading);flex:0 0 auto}
.section-icon .ico{width:22px;height:22px}
.section-block{margin-top:22px;scroll-margin-top:96px}
.section-head{display:flex;gap:12px;align-items:center;margin-bottom:14px}
.section-head h2,.section-head p{margin:0}
.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.stat{overflow:hidden}
.stat strong{font-variant-numeric:tabular-nums}
.stat-people{border-top:6px solid #1c8a62}
.card-grid,.stack-cards{display:grid;gap:12px}
.card-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.group-card,.info-card,.session-card{position:relative;overflow:hidden;min-width:0}
.group-card::before,.info-card::before,.session-card::before{content:"";display:block;height:4px;margin:-18px -18px 14px;background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.group-card-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;flex-wrap:wrap}
.info-card h3,.group-card h3,.session-card h3,.child-name{margin:0 0 4px;font-size:18px}
.child-name{font-size:22px}
.card .meta,.card .prose{margin:4px 0 0}
.prose,.meta,.name-list{overflow-wrap:anywhere}
.session-body{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.session-body>div{min-width:0;flex:1}
.session-body .button{flex:0 0 auto}
.button .ico{width:1.05em;height:1.05em}
.name-list{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.name-list li{background:var(--soft);color:var(--heading);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:800}
.submission-box{margin-top:12px;background:var(--soft);border-radius:16px;padding:12px 14px}
.grade-pill{display:inline-flex;margin:8px 0 0;padding:6px 10px;border-radius:999px;background:var(--mint);color:#146047;font-weight:800}
.feedback{margin-top:8px;padding:10px 12px;border-radius:14px;background:#fff;border-left:4px solid var(--accent)}
.hero-chip{display:inline-flex;margin:0 0 8px;padding:4px 10px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--heading);font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.avatar-cluster{display:flex;gap:8px;margin-top:14px}
.avatar-cluster img{width:72px;height:72px;border-radius:22px;background:#fff;border:2px solid #fff;box-shadow:0 8px 16px #17255414;object-fit:cover}
.child-head{display:flex;gap:14px;align-items:center}
.child-thumb{width:84px;height:84px;object-fit:cover;border-radius:22px;background:var(--soft);flex:0 0 auto}
.child-card{display:grid;gap:14px}
.subhead{margin:4px 0 0;font-size:15px;font-weight:700;color:var(--heading)}
.tone-kids{border-top:6px solid #378ad6}
.tone-teens{border-top:6px solid #2f7edb}
.tone-adults{border-top:6px solid #1c8a62}
.dash-hero .welcome-copy{min-width:0;flex:1}
body .dash-hero img.panel-portrait{width:min(220px,46vw);height:auto;aspect-ratio:1;object-fit:contain;object-position:center;border-radius:28px;background:linear-gradient(160deg,#fff,var(--soft));padding:8px;margin-left:auto;flex:0 0 auto;box-shadow:0 12px 28px #1725541a}
body.theme-neutral .dash-hero,body.theme-teens .dash-hero,body.theme-adults .dash-hero{background:linear-gradient(120deg,#fff,var(--soft) 55%,var(--mint))}
.login-stage .login-card{overflow:hidden;padding-top:0}
.login-stage .login-card::before{content:"";display:block;height:6px;margin:0 -28px 22px;background:linear-gradient(90deg,#f05b9c,#3e9fe8 55%,#ffca54)}
.login-card .button{width:100%;margin-top:8px}
@keyframes bloom-rise{from{transform:translateY(8px)}to{transform:none}}
@media (prefers-reduced-motion:no-preference){
  .rise{animation:bloom-rise .45s ease both}
  .group-card,.info-card,.session-card,.stat{transition:transform .2s ease,box-shadow .2s ease}
  .group-card:hover,.info-card:hover,.session-card:hover,.stat:hover{transform:translateY(-2px)}
}
@media (max-width:800px){
  .stats,.card-grid{grid-template-columns:1fr}
  .session-body{flex-direction:column}
  .topbar .who{display:flex;max-width:46%;min-width:0}
  .topbar .who-text{display:flex;min-width:0}
  .topbar .who-text span,.topbar .who-text small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body .dash-hero img.panel-portrait{width:min(168px,46vw);margin-left:0}
  .avatar-cluster img{width:56px;height:56px}
}
input:focus-visible,textarea:focus-visible,select:focus-visible{border-color:var(--focus);box-shadow:0 0 0 4px #17255422}
.button:hover{filter:brightness(.94)}
.button:active{transform:translateY(1px)}
.file-link{font-weight:800;text-underline-offset:3px}
.file-link:hover{color:var(--accent)}
.login-card h1{margin-top:4px}
.alert-error{border:1px solid #f3b3c6}
.workspace{display:block;width:min(1100px,100%);margin:0 auto}
.workspace .content{width:min(100% - 32px,1100px);margin:24px auto 40px}
.who-avatar{width:42px;height:42px;border-radius:14px;object-fit:cover;background:#fff;border:2px solid #fff}
.module-head h1{margin:0 0 8px}
.form-card,.profile-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:18px 0;display:grid;gap:10px}
.profile-layout{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:16px;align-items:start}
.profile-avatar{width:96px;height:96px;border-radius:28px;object-fit:cover;background:var(--soft)}
.field{display:grid;gap:6px}
.field label,fieldset legend{font-weight:800;color:var(--heading)}
input[type="checkbox"],input[type="radio"]{width:auto}
.filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-bottom:16px}
.filter-bar input{width:min(100%,280px)}
.table-wrap{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;background:#fff;border-radius:16px}
.data-table th,.data-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.data-table th{color:var(--heading);font-size:14px}
.table-avatar{width:36px;height:36px;border-radius:12px;object-fit:cover;vertical-align:middle;margin-right:8px}
.avatar-picker{border:0;padding:0;margin:8px 0}
.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.avatar-option{display:grid;justify-items:center;gap:4px;padding:8px;border:1px solid var(--line);border-radius:16px;background:#fff;font-size:12px;text-align:center}
.avatar-option img{width:72px;height:72px;object-fit:cover;border-radius:18px}
.avatar-band{margin:12px 0 6px;font-weight:800;color:var(--heading)}
.award-list{list-style:none;padding:0;display:grid;gap:12px}
.alert-ok{background:var(--mint);border-radius:14px;padding:10px 12px}
.classmate-row{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px}
.classmate-card{flex:0 0 132px;display:grid;justify-items:center;gap:8px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:22px;text-align:center}
.classmate-card img{width:88px;height:88px;border-radius:28px;object-fit:cover;background:var(--soft)}
.classmate-card strong{font-size:14px;line-height:1.3}
@media (max-width:800px){
  .profile-layout{grid-template-columns:1fr}
  .filter-bar input,.filter-bar .button{width:100%}
  .classmate-card{flex-basis:116px}
}
