:root{--cream:#fff7ec;--paper:#fffdf9;--coral:#e75a49;--teal:#087f75;--plum:#3a2e5c;--muted:#726883;--gold:#ffc94d;--line:#e9e1d6;--radius:22px}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--plum);font-family:ui-rounded,"Avenir Next",system-ui,sans-serif;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select{font:inherit}a,button,input,select,summary{touch-action:manipulation}:focus-visible{outline:3px solid var(--teal);outline-offset:4px}.topbar{height:94px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--paper)}.brand{display:flex;gap:8px;align-items:center;font-size:23px;font-weight:650;letter-spacing:-1px}.brand strong{color:var(--coral)}.brand-star{color:var(--gold);font-size:38px;line-height:1;text-shadow:1px 2px 0 #dcb047}.account{display:flex;gap:24px;align-items:center;font-size:14px}.container{max-width:1200px;margin:auto;padding:48px 28px 72px;min-height:calc(100vh - 170px)}h1,h2,p{margin-top:0}h1{font-size:42px;line-height:1.18;letter-spacing:-1.5px;margin-bottom:16px}h2{font-size:23px;line-height:1.25;letter-spacing:-.5px}p{color:var(--muted)}.eyebrow{display:block;color:var(--teal);font-size:12px;letter-spacing:2px;font-weight:750;text-transform:uppercase;margin-bottom:18px}.hero{text-align:center;padding:28px 0 36px}.hero h1{font-size:68px;letter-spacing:-3px;line-height:1.06}.hero em{font-style:normal;color:var(--coral)}.intro{font-size:18px}.portal-grid,.school-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.portal-card{border:1px solid var(--line);background:var(--paper);padding:30px;border-radius:var(--radius);display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}.portal-card:hover,.school-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px #3a2e5c0b}.portal-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:18px;font-size:36px;background:#ffebe6;color:var(--coral);margin-bottom:32px}.portal-card h2{min-height:58px}.portal-card strong{margin-top:auto;padding-top:18px}.teal .portal-icon{color:var(--teal);background:#e4f4ef}.plum .portal-icon{color:var(--plum);background:#f0eafa}.login-card{max-width:530px;background:var(--paper);border:1px solid var(--line);padding:40px;margin:28px auto;border-radius:28px;text-align:center;box-shadow:0 16px 60px #3a2e5c07}.login-card h1{font-size:36px}.large-star{font-size:60px;color:var(--gold);margin-bottom:20px}.stack{display:flex;flex-direction:column;gap:12px;text-align:left;margin-top:28px}label{font-size:14px;font-weight:650;display:block;margin-bottom:4px}input:not([type=submit]),select{border:1px solid #cfc5d8;border-radius:12px;padding:13px 15px;width:100%;background:white;color:var(--plum);min-height:48px}.code-input{text-align:center;letter-spacing:2px}.button{display:inline-block;text-align:center;background:var(--coral);color:white;border:0;border-radius:12px;min-height:48px;padding:12px 22px;font-weight:700;cursor:pointer}.stack .button{margin-top:12px}.quiet-button{color:var(--plum);background:transparent;border:1px solid #ddd3e6;border-radius:10px;padding:9px 14px;font-size:13px;cursor:pointer;min-height:42px}.hint{font-size:13px;margin:22px 0 0}.tag{display:inline-block;border:1px solid var(--line);border-radius:30px;padding:6px 13px;font-size:12px;background:var(--paper);color:var(--muted)}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;margin-bottom:28px}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);margin:20px 0 34px}.stats>div{padding:24px 30px;display:flex;gap:8px;flex-direction:column;border-right:1px solid var(--line)}.stats>div:last-child{border:0}.stats strong{font-size:34px;line-height:1}.stats span{font-size:13px;color:var(--muted)}.school-card{background:var(--paper);border:1px solid var(--line);padding:26px;border-radius:var(--radius);transition:transform .2s,box-shadow .2s;margin-bottom:16px}.school-card h2{margin-top:22px}.school-symbol{font-size:28px;color:var(--teal);margin-right:14px}.school-card p{font-size:14px;margin-bottom:0}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:25px;margin-top:26px}summary{font-weight:700;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px;align-items:end}.form-grid>.button{justify-self:start}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px}.breadcrumb{font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}.breadcrumb a{text-decoration:underline}.year-tabs{display:flex;gap:10px;margin-bottom:30px}.year-tabs a{padding:8px 22px;border-radius:30px;border:1px solid var(--line)}.year-tabs .active{background:var(--plum);color:white}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px}td,th{padding:16px 12px;border-bottom:1px solid var(--line);vertical-align:middle}td{font-size:14px}.empty{padding:32px;border:1px dashed #d6c8ba;border-radius:18px;margin:24px 0;text-align:center}.empty h2{font-size:20px}.empty p{margin:0}.identity{display:flex;flex-direction:column;gap:5px;border-radius:14px;padding:18px;background:var(--cream);margin:18px 0}.identity span{font-size:13px;color:var(--muted)}.issued-code{font-size:23px;letter-spacing:1px;font-weight:700;color:var(--plum);overflow-wrap:anywhere;border:1px dashed var(--coral);padding:16px}.notice{padding:14px 20px;border-radius:12px;background:#e0f1e8;margin-bottom:25px}.notice.alert{background:#ffe4db}footer{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:12px;padding:24px;border-top:1px solid var(--line)}footer span{color:var(--coral)}.skip-link{position:absolute;left:20px;top:-100px;background:white;padding:10px;z-index:10}.skip-link:focus{top:10px}@media(max-width:800px){.portal-grid,.school-grid{grid-template-columns:1fr 1fr}.hero h1{font-size:54px}.topbar{padding:0 24px}.account>span{display:none}.page-heading{flex-direction:column}.two-columns{grid-template-columns:1fr}}@media(max-width:560px){.portal-grid,.school-grid,.form-grid{grid-template-columns:1fr}.container{padding:28px 18px 48px}.login-card{padding:26px 22px}.hero h1{font-size:46px}.stats>div{padding:20px 14px}.portal-card h2{min-height:0}h1{font-size:34px}.topbar{height:78px}.brand{font-size:21px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

textarea{font:inherit;padding:14px;border:1px solid #cfc5d8;border-radius:12px;background:white;min-width:0;width:100%;color:var(--plum)}input[type=checkbox],input[type=radio]{width:20px;min-height:20px;accent-color:var(--teal)}.question-image{display:block;max-width:100%;max-height:400px;object-fit:contain;margin:20px auto;border-radius:16px}.choice-image{max-width:100%;height:150px;object-fit:contain}.passage{background:var(--cream);padding:24px;border-radius:16px;color:var(--plum);font-size:18px}.preview-question{border:0;padding:20px 0;margin:20px 0}.preview-question legend{font-size:21px;font-weight:650}.answer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.answer-option{display:flex;align-items:center;gap:14px;border:1px solid var(--line);padding:20px;border-radius:14px;cursor:pointer}.answer-option:has(input:checked){background:#e4f4ef;border-color:var(--teal)}.answer-option .choice-image{min-width:0}.actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}@media(max-width:560px){.answer-grid{grid-template-columns:1fr}}

.quiz-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}.question-nav{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0}.question-nav a{width:42px;height:42px;display:grid;place-items:center;background:white;border:1px solid var(--line);border-radius:12px}.question-nav a.answered{background:#e4f4ef}.question-nav a.current{border:2px solid var(--plum);font-weight:800}.quiz-panel{animation:appear .2s ease-out}.countdown{font-size:54px;color:var(--coral);font-weight:800;margin:20px}.celebration .large-star{animation:bounce 1s ease-in-out 3}@keyframes appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{50%{transform:translateY(-8px) rotate(4deg)}}

.mascot{width:190px;height:190px;object-fit:contain;display:block;margin:0 auto 20px}.celebration-mascot{width:230px;height:230px}.answer-grid.choices-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:560px){.answer-grid.choices-3{grid-template-columns:1fr}}

@media print{.topbar,footer,.no-print,.breadcrumb,.button,.quiet-button{display:none!important}body{background:white}.container{padding:0}.panel{border:0;padding:0}.table-wrap{overflow:visible}tr{break-inside:avoid}}
.confirm-dialog{max-width:min(520px,90vw);border:1px solid var(--line);border-radius:24px;padding:32px;background:var(--paper);color:var(--plum)}.confirm-dialog::backdrop{background:#251c3b66;backdrop-filter:blur(3px)}

/* Wira accompanies the journey; timed questions have no idle animation. */
.wira{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0 auto 24px;isolation:isolate}
.wira-stage{position:relative;flex-shrink:0;width:190px;height:200px}
.wira-character{position:relative;z-index:1;display:block;width:100%;height:190px;object-fit:contain;transform-origin:50% 80%;filter:drop-shadow(0 8px 8px #bd741515)}
.wira-shadow{position:absolute;bottom:0;left:27%;width:46%;height:10px;background:#3a2e5c12;border-radius:50%;z-index:-1}
.wira-orbit{position:absolute;color:#d79812;font-size:23px;line-height:1;z-index:2;pointer-events:none}
.wira-orbit--one{top:12%;left:0;transform:rotate(-15deg)}
.wira-orbit--two{top:3%;right:5%;font-size:29px}
.wira-orbit--three{bottom:20%;right:0;font-size:15px}
.wira-message{position:relative;max-width:380px;margin:8px 0 0;padding:13px 18px;border:1px solid #eddfbe;border-radius:18px;background:#fff8e6;font-size:14px;line-height:1.5;text-align:left}
.wira-message strong{display:block;color:var(--teal);font-size:11px;letter-spacing:.7px;margin-bottom:3px}
.wira-message span{display:block;color:var(--plum)}
.wira--welcome .wira-character{animation:wira-arrive 700ms ease-out both, wira-hover 2s 700ms ease-in-out 2}
.wira--welcome .wira-orbit{animation:wira-twinkle 1.6s ease-in-out 2}
.wira--guide .wira-character{animation:wira-arrive 650ms ease-out both}
.wira--compact{flex-direction:row;justify-content:flex-start;gap:16px;margin:20px 0 0}
.wira--compact .wira-stage{width:80px;height:85px}
.wira--compact .wira-character{height:80px}
.wira--compact .wira-message{max-width:520px;margin:0}
.wira--compact .wira-orbit{display:none}
.wira--compact .wira-shadow{height:5px}
.wira--saved .wira-character{animation:wira-nod 600ms ease-in-out}
.wira--ready .wira-character{animation:wira-hover 1s ease-in-out 5}
.wira--celebrate .wira-stage{width:220px;height:230px}
.wira--celebrate .wira-character{height:220px;animation:wira-cheer 950ms ease-in-out 3}
.wira--celebrate .wira-orbit{animation:wira-spark 1.3s ease-out 3}
.wira--celebrate .wira-orbit--two{animation-delay:150ms}
.wira--celebrate .wira-orbit--three{animation-delay:300ms}
.hero .wira{margin-bottom:16px}.hero .wira-stage{width:150px;height:155px}.hero .wira-character{height:150px}
@keyframes wira-arrive{from{opacity:0;transform:translateY(14px) rotate(-6deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
@keyframes wira-hover{50%{transform:translateY(-7px) rotate(2deg)}}
@keyframes wira-nod{45%{transform:translateY(3px) rotate(5deg)}75%{transform:translateY(-2px) rotate(-2deg)}}
@keyframes wira-cheer{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-12px) rotate(-5deg)}70%{transform:translateY(-5px) rotate(5deg)}}
@keyframes wira-twinkle{50%{opacity:.4;scale:.8}}
@keyframes wira-spark{0%{opacity:0;scale:.5;translate:0 12px}35%{opacity:1;scale:1.15}100%{opacity:0;scale:.8;translate:0 -16px}}
@media(max-width:560px){.wira--compact{gap:10px}.wira--compact .wira-stage{width:60px;height:65px}.wira--compact .wira-character{height:60px}.wira--compact .wira-message{font-size:13px;padding:10px 12px}}
@media(prefers-reduced-motion:reduce){.wira *{animation:none!important;transition:none!important}}
@media print{.wira{display:none!important}}

.format-guide{margin-bottom:32px}.format-guide>summary{font-size:18px}.format-guide-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:28px;margin-top:24px}.format-example{min-width:0;border:1px solid var(--line);border-radius:18px;padding:22px;background:white}.format-example .passage{font-size:16px}.format-example .preview-question legend{font-size:18px}.format-example .answer-option{padding:12px;gap:8px}.format-example .choice-image{height:90px;width:100%;min-width:0}.format-example .answer-option input{flex-shrink:0}.format-setup ol{padding-left:22px;color:var(--muted)}.format-setup li{margin-bottom:14px}.format-example-key{padding:18px;background:var(--cream);border-radius:14px;font-size:14px}.format-example-key h3{margin-top:0}.format-example-key p:last-child{margin-bottom:0}.question-editor-heading{margin-top:32px}@media(max-width:1000px){.format-guide-layout{grid-template-columns:1fr}}@media(max-width:560px){.format-example{padding:14px}.format-example .answer-grid{grid-template-columns:1fr}}

.school-directory-card{display:flex;align-items:center;gap:20px}.school-directory-card>div{min-width:0}.school-directory-card h2{margin:0 0 12px;overflow-wrap:anywhere}.school-badge{display:flex;align-items:center;justify-content:center;flex:0 0 76px;width:76px;min-height:88px}.school-badge img{display:block;width:72px;height:84px;object-fit:contain}.school-badge svg{display:block;flex-shrink:0}@media(max-width:560px){.school-directory-card{gap:16px;padding:22px}.school-directory-card h2{font-size:21px}}

.student-code-table th[scope=row]{font-size:14px;text-transform:none;letter-spacing:0;color:var(--plum)}.roster-code{font-size:19px;font-weight:750;letter-spacing:2px;color:var(--plum);white-space:nowrap}@media print{.student-code-table td,.student-code-table th{padding:7px 10px}.roster-code{font-size:16px}thead{display:table-header-group}}
.code-updated{display:block;font-size:12px;color:var(--teal);margin-top:4px}

.bank-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.bank-metric{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:24px;display:flex;flex-direction:column;gap:8px}.bank-metric strong{font-size:34px;line-height:1.2}.bank-metric span{font-size:14px;color:var(--muted)}.bank-metric:hover{border-color:var(--teal)}.bank-drilldowns{margin:24px 0}.bank-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.bank-topic{font-size:13px;margin:0 0 12px;min-width:220px}.bank-topic:last-child{margin-bottom:0}@media(max-width:600px){.bank-metrics{grid-template-columns:repeat(2,1fr)}.bank-filters{grid-template-columns:1fr}.bank-metric{padding:18px}}

[data-test-standard-target][hidden] { display: none !important; }

.band-red { --signal: #b53d35; --signal-soft: #fff0ed; }
.band-orange { --signal: #9b5a06; --signal-soft: #fff5de; }
.band-green { --signal: #167451; --signal-soft: #e9f7ee; }
.band-none { --signal: #726982; --signal-soft: #f2f0f5; }
.performance-overview { display: flex; gap: 32px; align-items: center; margin-bottom: 28px; }
.score-ring { width: 160px; height: 160px; flex: 0 0 160px; border-radius: 50%; background: conic-gradient(var(--signal) var(--score), #ede8e0 0); display: grid; place-items: center; }
.score-ring > div { width: 130px; height: 130px; border-radius: 50%; background: #fffdf8; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.score-ring strong { font-size: 36px; line-height: 1.2; }
.performance-filters { display: flex; flex-wrap: wrap; gap: 10px; }
.performance-filters button { display: inline-flex; align-items: center; gap: 8px; }
.performance-filters button[aria-pressed="true"] { outline: 2px solid #382c5a; outline-offset: 2px; background: var(--signal-soft, #f1edf7); }
.signal-dot { display: inline-block; width: 11px; height: 11px; flex: 0 0 11px; border-radius: 50%; background: var(--signal); }
.signal-label { display: inline-flex; align-items: center; gap: 7px; color: var(--signal); font-weight: 700; font-size: 13px; }
.skill-result { border-top: 1px solid #e5ded5; padding: 18px 0; }
.skill-result[hidden] { display: none !important; }
.skill-result summary { display: grid; grid-template-columns: minmax(180px, 1.5fr) minmax(120px, 1fr) 150px; align-items: center; gap: 18px; cursor: pointer; }
.skill-name { display: flex; flex-direction: column; gap: 5px; }
.skill-name small { font-weight: 400; }
.skill-measure { display: flex; align-items: center; gap: 12px; }
.skill-track { height: 12px; border-radius: 8px; background: #eee8e1; flex: 1; overflow: hidden; }
.skill-track > span { display: block; height: 100%; background: var(--signal); border-radius: inherit; }
.skill-advice { margin-top: 16px; padding: 12px 20px; border-left: 4px solid var(--signal); background: var(--signal-soft); border-radius: 8px; }
@media (max-width: 700px) { .performance-overview { flex-direction: column; align-items: flex-start; gap: 16px; } .skill-result summary { grid-template-columns: 1fr; gap: 10px; } }

/* Shared motion: brief feedback, stable layouts, no looping dashboard effects. */
.button, .quiet-button, .bank-metric, .answer-option, .question-nav a {
  transition: background-color 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}
@media (hover: hover) {
  .button:hover { background-color: #d84b3d; box-shadow: 0 4px 12px #3a2e5c16; }
  .quiet-button:hover { background-color: #f1edf5; }
  .bank-metric:hover { transform: translateY(-2px); box-shadow: 0 8px 22px #3a2e5c0d; }
  .skill-result summary:hover { background-color: var(--signal-soft); border-radius: 8px; }
}
.button:active, .quiet-button:active { transform: translateY(1px); }
.button:disabled, .quiet-button:disabled { opacity: .65; cursor: wait; transform: none; }
input:not([type=submit]), select, textarea { transition: border-color 150ms ease, box-shadow 150ms ease; }
.notice { animation: feedback-arrive 220ms ease-out; }
.skill-track > span { transform-origin: left center; }
.skill-result summary { transition: background-color 160ms ease; }
@keyframes feedback-arrive { from { opacity: .4; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .portal-card:hover, .school-card:hover, .bank-metric:hover, .button:active, .quiet-button:active { transform: none; }
}

[data-class-tests-target="row"][hidden] { display: none !important; }
[data-controller="class-tests"] progress { width: 110px; height: 10px; accent-color: #167451; }

.band-orange { --signal: #ff850c; --signal-soft: #fff0dc; }
.signal-label.band-orange, .band-orange .signal-label { color: #914300; }
.student-result-link { font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
.class-headline { display: flex; align-items: center; gap: 24px; padding: 24px; border-radius: 18px; background: #f3eef9; }
.class-headline > strong { font-size: 64px; line-height: 1; }
.class-headline h3, .class-headline p { margin: 0; }
.band-columns { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 28px 0; }
.band-column { border: 2px solid transparent; border-radius: 18px; padding: 22px; background: var(--signal-soft); color: var(--plum); cursor: pointer; display: flex; flex-direction: column; align-items: stretch; gap: 10px; }
.band-column > strong { font-size: 42px; line-height: 1; }
.column-track { height: 150px; display: flex; align-items: flex-end; border-bottom: 2px solid #d9cfc2; }
.column-track > span { width: 100%; background: var(--signal); border-radius: 10px 10px 0 0; }
.band-column[aria-pressed="true"] { border-color: var(--plum); }
@media (max-width: 600px) { .band-columns { gap: 6px; } .band-column { padding: 12px 6px; } .band-column b { font-size: 12px; } .column-track { height: 100px; } .class-headline > strong { font-size: 44px; } }

.review-card--answered { background: #e4f7e9; border: 2px solid #36a16b; }
.review-card--unanswered { background: #fff0ee; border: 2px solid #df655d; }
.review-card--answered p { color: #17643e; font-weight: 700; }
.review-card--unanswered p { color: #a93029; font-weight: 700; }
.review-symbol { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: white; background: #218451; font-size: 23px; font-weight: 800; }
.review-card--unanswered .review-symbol { background: #bf3932; }
.review-card h2 { margin-top: 14px; }
.quiz-clock { display: flex; align-items: center; gap: 14px; padding: 12px 22px; border: 2px solid #edbe46; background: #fff2cb; border-radius: 22px; color: #3a2e5c; box-shadow: 0 4px 0 #edbe4633; }
.quiz-clock-label { display: block; font-size: 13px; font-weight: 750; }
.quiz-clock-digits { display: block; font-size: 34px; font-weight: 800; line-height: 1.15; font-variant-numeric: tabular-nums; min-width: 5ch; }
.quiz-clock-icon { width: 46px; height: 46px; flex-shrink: 0; }
.clock-hand { transform-origin: 24px 24px; animation: clock-greet 800ms ease-in-out 2; }
.quiz-clock--low { border-color: #ff850c; background: #fff0dc; }
@keyframes clock-greet { 0%,100% { transform: rotate(0); } 50% { transform: rotate(16deg); } }
@media(max-width:560px) { .quiz-clock { padding: 9px 15px; } .quiz-clock-digits { font-size: 30px; } }

/* Wira speaks beside his face, with a real bubble and a short pop. */
.wira { flex-direction: row; justify-content: center; align-items: flex-start; gap: 22px; padding-top: 14px; }
.wira-message { align-self: flex-start; margin-top: 0; background: white; border: 2px solid #edc96d; border-radius: 24px 24px 24px 6px; box-shadow: 0 6px 0 #edc96d25; padding: 17px 21px; max-width: 300px; transform-origin: 0 85%; animation: wira-speak 380ms cubic-bezier(.2,.8,.3,1.2) both; }
.wira-message::before { content: ""; position: absolute; width: 16px; height: 16px; background: white; border-left: 2px solid #edc96d; border-bottom: 2px solid #edc96d; left: -10px; bottom: 16px; transform: rotate(45deg); }
.wira--compact { align-items: center; margin-bottom: 18px; }
.wira--compact .wira-stage { width: 110px; height: 120px; }
.wira--compact .wira-character { height: 110px; }
.wira--compact .wira-message { align-self: flex-start; margin-top: 4px; max-width: 440px; }
.wira--saved .wira-message, .wira--ready .wira-message { animation: wira-speak 300ms ease-out; }
.wira-pose--vanakkam .wira-character { animation: wira-bow 1s ease-in-out 1; }
.wira-pose--wave .wira-character { animation: wira-wave 850ms ease-in-out 2; }
.wira-pose--prayer .wira-character { animation: wira-bow 1.3s ease-in-out 1; }
.wira--focus .wira-character { animation: wira-arrive 200ms ease-out; }
.wira--focus.wira--saved .wira-character { animation: wira-nod 600ms ease-in-out; }
@keyframes wira-speak { from { opacity: 0; transform: scale(.92) translateY(5px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes wira-bow { 45% { transform: translateY(7px) rotate(5deg) scale(.97); } }
@keyframes wira-wave { 25% { transform: rotate(-4deg) translateY(-4px); } 70% { transform: rotate(3deg); } }
@media(max-width:560px) { .wira { gap: 12px; } .wira-stage { width: 130px; height: 145px; } .wira-character { height: 135px; } .wira-message { padding: 12px 14px; font-size: 13px; } .wira--compact .wira-stage { width: 85px; height: 95px; } .wira--compact .wira-character { height: 85px; } }

/* Articulated Wira: joints move independently; no picture swapping. */
.wira-rig .rig-head { transform-origin: 120px 145px; }
.rig-arm-left { transform-origin: 86px 153px; }
.rig-arm-right { transform-origin: 153px 153px; }
.rig-forearm-left { transform-origin: 68px 186px; }
.rig-forearm-right { transform-origin: 173px 186px; }
.rig-hand-left { transform-origin: 68px 205px; }
.rig-hand-right { transform-origin: 173px 205px; }
.rig-eyes { transform-origin: 120px 104px; animation: wira-blink 4s 2; }
.rig-cape { transform-origin: 120px 145px; animation: cape-settle 2s ease-in-out 2; }
.rig-finger,.rig-prayer-emblem { display: none; }
.wira-pose--wave .rig-arm-right { animation: arm-wave 1.2s ease-in-out 3 both; }
.wira-pose--wave .rig-hand-right { animation: hand-wave 450ms ease-in-out 7; }
.wira-pose--vanakkam .rig-arm-left,.wira-pose--prayer .rig-arm-left { animation: palms-left 900ms ease-in-out forwards; }
.wira-pose--vanakkam .rig-arm-right,.wira-pose--prayer .rig-arm-right { animation: palms-right 900ms ease-in-out forwards; }
.wira-pose--vanakkam .rig-forearm-left,.wira-pose--prayer .rig-forearm-left { animation: fold-left 900ms ease-in-out forwards; }
.wira-pose--vanakkam .rig-forearm-right,.wira-pose--prayer .rig-forearm-right { animation: fold-right 900ms ease-in-out forwards; }
.wira-pose--vanakkam .rig-head,.wira-pose--prayer .rig-head { animation: head-bow 1.6s 600ms ease-in-out both; }
.wira-pose--prayer .rig-prayer-emblem { display: block; }
.wira-pose--salute .rig-arm-right { animation: salute-arm 1.4s ease-in-out forwards; }
.wira-pose--salute .rig-forearm-right { animation: salute-elbow 1.4s ease-in-out forwards; }
.wira-pose--point .rig-arm-right { animation: point-arm 1.1s ease-in-out forwards; }
.wira-pose--point .rig-finger { display: block; }
.wira-pose--think .rig-arm-right { transform: rotate(20deg); }
.wira-pose--think .rig-forearm-right { transform: rotate(-145deg); }
.wira-pose--think .rig-head { animation: head-think 1.4s ease-in-out 1; }
.wira-pose--thumbs .rig-arm-right { animation: thumbs-arm 500ms ease-out forwards; }
.wira-pose--thumbs .rig-forearm-right { transform: rotate(-75deg); }
.wira-pose--thumbs .rig-hand-right .rig-thumb { transform: translate(-3px,-8px) scaleY(1.4); transform-origin: 163px 209px; }
.wira-pose--encourage .rig-arm-right { animation: palms-right 800ms ease-in-out forwards; }
.wira-pose--encourage .rig-forearm-right { animation: fold-right 800ms ease-in-out forwards; }
.wira-pose--encourage .rig-head { animation: head-bow 1.5s ease-in-out 1; }
.wira-pose--celebrate .rig-arm-left { animation: cheer-left 900ms ease-in-out 3; }
.wira-pose--celebrate .rig-arm-right { animation: cheer-right 900ms ease-in-out 3; }
@keyframes wira-blink { 0%,44%,49%,100% { transform: scaleY(1); } 46% { transform: scaleY(.1); } }
@keyframes cape-settle { 50% { transform: skewX(3deg); } }
@keyframes arm-wave { 0%,100% { transform: rotate(-100deg); } 50% { transform: rotate(-125deg); } }
@keyframes hand-wave { 50% { transform: rotate(20deg); } }
@keyframes palms-left { to { transform: rotate(-35deg); } }
@keyframes palms-right { to { transform: rotate(35deg); } }
@keyframes fold-left { to { transform: rotate(-110deg); } }
@keyframes fold-right { to { transform: rotate(110deg); } }
@keyframes head-bow { 45%,65% { transform: translateY(5px) rotate(7deg); } }
@keyframes salute-arm { 40%,100% { transform: rotate(-100deg); } }
@keyframes salute-elbow { 40%,100% { transform: rotate(-70deg); } }
@keyframes point-arm { to { transform: rotate(-75deg); } }
@keyframes head-think { 50% { transform: rotate(-8deg); } }
@keyframes thumbs-arm { to { transform: rotate(-25deg); } }
@keyframes cheer-left { 50% { transform: rotate(130deg); } }
@keyframes cheer-right { 50% { transform: rotate(-130deg); } }
@media(prefers-reduced-motion:reduce) { .wira-rig * { animation:none!important; } .wira-pose--wave .rig-arm-right { transform:rotate(-105deg); } .wira-pose--vanakkam .rig-arm-left,.wira-pose--prayer .rig-arm-left { transform:rotate(-35deg); } .wira-pose--vanakkam .rig-arm-right,.wira-pose--prayer .rig-arm-right { transform:rotate(35deg); } .wira-pose--vanakkam .rig-forearm-left,.wira-pose--prayer .rig-forearm-left { transform:rotate(-110deg); } .wira-pose--vanakkam .rig-forearm-right,.wira-pose--prayer .rig-forearm-right { transform:rotate(110deg); } }
.rig-joined-palms { display:none; }
.wira-pose--vanakkam .rig-joined-palms,.wira-pose--prayer .rig-joined-palms { display:block; animation:palms-appear 1s ease-out both; }
@keyframes palms-appear { 0%,65% { opacity:0; } 100% { opacity:1; } }

/* Adult Wira: calm expression, neutral stance and a single small nod. */
.wira--professional { justify-content: flex-start; margin: 16px 0 24px; gap: 18px; }
.wira--professional .wira-orbit { display: none; }
.wira--professional .wira-stage { width: 90px; height: 100px; }
.wira--professional .wira-character { height: 95px; animation: none; filter: none; }
.wira--professional .wira-message { max-width: 660px; border-color: #d6dfe1; background: #f5f8f7; box-shadow: none; border-radius: 16px; animation: appear 180ms ease-out; font-size: 14px; }
.wira--professional .wira-message::before { background: #f5f8f7; border-color: #d6dfe1; }
.wira--professional .rig-cape,.wira--professional .rig-eyes { animation: none; }
.wira--professional .rig-head { animation: professional-nod 750ms ease-in-out 1; }
@keyframes professional-nod { 50% { transform: translateY(2px) rotate(2deg); } }
.login-card .wira--professional .wira-message { max-width: 310px; }
@media(max-width:560px) { .wira--professional .wira-stage { width:70px; height:85px; } .wira--professional .wira-character { height:80px; } .wira--professional { gap:12px; } }
footer .footer-brand { color: var(--plum); white-space: nowrap; }
footer .footer-message { color: var(--muted); max-width: 620px; text-align: center; }
footer { padding-left: 20px; padding-right: 20px; }

.test-selection-dashboard { position:sticky; top:12px; z-index:10; display:grid; grid-template-columns:repeat(4,1fr); gap:16px; padding:20px 24px; background:#352958; color:white; border-radius:20px; box-shadow:0 8px 24px #35295820; }
.test-selection-dashboard strong { display:block; font-size:30px; line-height:1.2; font-variant-numeric:tabular-nums; }
.test-selection-dashboard span { display:block; font-size:13px; margin-top:6px; }
.test-selection-dashboard strong span { display:inline; font-size:inherit; }
.test-question-row.is-selected { background:#e1f3ed; border-color:#008779; }
.test-preview-trigger { flex:1; text-align:left; color:var(--plum); background:transparent; border:0; padding:0; cursor:pointer; font:inherit; }
.test-preview-trigger span { display:block; font-size:13px; margin-top:4px; }
.test-preview-trigger .test-preview-link { color:#00796d; font-weight:700; }
.test-question-dialog { width:min(900px,calc(100vw - 32px)); max-height:85vh; overflow:auto; border:1px solid #e5dfd3; border-radius:24px; padding:28px; color:var(--plum); background:#fffdf9; }
.test-question-dialog::backdrop { background:#241b3b99; backdrop-filter:blur(3px); }
.test-question-dialog[open] { animation:appear 180ms ease-out; }
.test-question-dialog h2 { margin-top:0; }
@media(max-width:600px) { .test-selection-dashboard { grid-template-columns:repeat(2,1fr); gap:10px; padding:14px; top:4px; } .test-selection-dashboard strong { font-size:23px; } .test-question-dialog { padding:18px; } }
