/* Deliberately different from the philosopher storybook: bold cartoon party pages. */
.party-theme--mint { --party-accent:#157b73;--party-pale:#def4e9;--party-dark:#134c50;--party-pop:#ffd16e; }
.party-theme--lavender { --party-accent:#6552ab;--party-pale:#eee7fb;--party-dark:#36375f;--party-pop:#ffce77; }
.party-theme--peach { --party-accent:#b35427;--party-pale:#ffefd5;--party-dark:#633c3b;--party-pop:#ffc765; }
.party-theme--sky { --party-accent:#2965a0;--party-pale:#e1f0fa;--party-dark:#233e6c;--party-pop:#ffd675; }
.party-theme--coral { --party-accent:#a54a3b;--party-pale:#ffe9df;--party-dark:#614653;--party-pop:#ffcc6a; }
.party-theme--violet { --party-accent:#7355a9;--party-pale:#ece5fa;--party-dark:#3b3766;--party-pop:#ffd878; }
.happy-victory { position:relative; isolation:isolate; overflow:hidden; border:3px solid var(--party-dark); border-radius:30px; background:var(--party-pale); color:#243d62; box-shadow:0 9px 0 var(--party-dark),0 24px 55px #25385818; padding:34px clamp(20px,4vw,50px) 30px; margin-bottom:20px; }
.happy-victory h2,.happy-victory h3,.cartoon-celebration h2,.cartoon-celebration h3 { font-family:var(--font-reader); font-weight:800; letter-spacing:-.035em; }
.victory-banner { position:relative; z-index:1; text-align:center; max-width:950px; margin:0 auto 26px; }
.victory-ticket { display:inline-block; padding:9px 22px; border:2px solid var(--party-dark); border-radius:99px; background:#fff9e5; font-size:.95rem; font-weight:800; color:var(--party-dark); box-shadow:0 4px 0 var(--party-dark); }
.happy-victory h2 { color:var(--party-dark); font-size:clamp(2rem,4.7vw,3.3rem); line-height:1.12; margin:24px 0 14px; text-wrap:balance; }
.victory-banner>p { margin:0; font-size:1.1rem; line-height:1.6; font-weight:650; }
.victory-scene { position:relative; max-width:960px; margin:0 auto 28px; }
.victory-illustration { margin:0; border:3px solid var(--party-dark); border-radius:24px; overflow:hidden; background:#fff8e9; box-shadow:0 6px 0 #243d6220; }
.victory-illustration img { display:block; width:100%; height:auto; max-height:560px; object-fit:contain; }
.victory-illustration figcaption { font-size:1rem; font-weight:650; line-height:1.65; padding:18px 24px; text-align:center; border-top:2px solid var(--party-dark); background:#fffdf4; }
.victory-speech { position:relative; margin:18px 22px 0 auto; width:min(450px,90%); padding:20px 24px 18px; background:white; border:3px solid var(--party-dark); border-radius:22px 22px 22px 4px; box-shadow:7px 7px 0 var(--party-pop); transform:rotate(1deg); }
.victory-speech p { font-size:clamp(1.15rem,2.5vw,1.5rem); font-weight:800; color:var(--party-dark); line-height:1.4; margin:0 0 8px; }
.victory-speech>span:last-child { display:block; font-size:.9rem; color:#425671; line-height:1.5; }
.victory-speech-star { position:absolute; right:-18px; top:-25px; font-size:2.6rem; color:#f5b637; -webkit-text-stroke:1px var(--party-dark); line-height:1; transform:rotate(12deg); }
.victory-afterparty { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.85fr); gap:22px; margin:24px auto; max-width:1100px; }
.victory-mini-story,.victory-scorecard { padding:25px 28px; border:2px solid var(--party-dark); border-radius:21px; background:#fffdf6; }
.victory-mini-story h3 { font-size:1.4rem; margin:0 0 13px; }
.victory-mini-story p { font-size:1.1rem; line-height:1.8; margin:0 0 15px; }
.victory-mini-story .victory-cheer { font-weight:800; color:var(--party-dark); margin:0; }
.victory-scorecard { background:#fff4ce; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; }
.victory-score-stars { color:#aa6413; font-size:2.15rem; line-height:1.2; letter-spacing:6px; }
.victory-scorecard>strong { font-size:1.2rem; margin:16px 0 10px; line-height:1.5; }
.victory-scorecard p { font-size:1rem; line-height:1.75; margin:0 0 10px; }
.victory-scorecard .victory-saved { font-size:.9rem; color:#4d5c62; margin:8px 0 0; }
.victory-next { position:relative; text-align:center; padding:22px 0 10px; max-width:850px; margin:auto; }
body .victory-button { background:var(--party-dark); color:#fffdf0; font-size:1.15rem; font-weight:800; padding:19px 28px; border:2px solid var(--party-dark); border-radius:15px; box-shadow:0 5px 0 #132b4d; }
body .victory-button:hover { background:var(--party-accent); }
.victory-next>p { font-size:1rem; margin:24px 0 12px; line-height:1.7; }
.victory-next .victory-rule { max-width:68ch; font-size:.95rem; margin:0 auto; line-height:1.75; }
.victory-story-extra { position:relative; border-top:2px dashed #243d6240; margin:25px auto 0; padding-top:20px; max-width:1000px; }
.victory-story-extra summary { font-weight:750; font-size:1rem; cursor:pointer; min-height:48px; padding:10px 0; }
.victory-story-extra[open] { background:#fffdf5; border:2px solid var(--party-dark); border-radius:17px; padding:20px 26px; }
.victory-story-extra h3 { font-size:1.35rem; margin-top:20px; }
.victory-story-extra p { font-size:1.05rem; line-height:1.85; max-width:75ch; }
.victory-sparkles { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.victory-sparkles span { position:absolute; font-size:2.5rem; color:var(--party-accent); opacity:.6; }
.victory-sparkles span:nth-child(1) { left:3%; top:28px; transform:rotate(15deg); }
.victory-sparkles span:nth-child(2) { right:4%; top:90px; font-size:4rem; }
.victory-sparkles span:nth-child(3) { right:2%; top:580px; }
.victory-sparkles span:nth-child(4) { left:1%; top:760px; font-size:3.5rem; }
.happy-victory--comic { background-color:#fff9e9; background-image:radial-gradient(var(--party-pale) 2px,transparent 2px); background-size:18px 18px; border-radius:16px; }
.happy-victory--comic .victory-ticket { border-radius:7px; transform:rotate(-2deg); background:var(--party-pop); }
.happy-victory--comic .victory-illustration { border-radius:10px; box-shadow:8px 8px 0 var(--party-dark); }
.happy-victory--comic .victory-speech { margin:22px 35px 0 auto; transform:rotate(-2deg); }
.happy-victory--comic .victory-mini-story { border-radius:8px; box-shadow:-5px 5px 0 var(--party-accent); }
.happy-victory--comic .victory-scorecard { border-radius:8px; box-shadow:5px 5px 0 var(--party-pop); }
.happy-victory--festival { background:radial-gradient(ellipse at 50% 12%,#415d86 0%,#252e54 55%,#1e2849 100%); border-color:#dba654; box-shadow:0 9px 0 #ae8041,0 24px 55px #25385825; color:#fff4dd; }
.happy-victory--festival .victory-banner h2 { color:#ffe29c; text-shadow:0 4px 0 #12213f; }
.happy-victory--festival .victory-ticket { background:#ffe49e; color:#3c3657; border-color:#9f733b; }
.happy-victory--festival .victory-banner>p { color:#f6ead5; }
.happy-victory--festival .victory-illustration { border:5px solid #e2b75f; border-radius:40% 40% 25px 25px; background:#e2e9fa; }
.happy-victory--festival .victory-illustration figcaption { border-color:#d6ae68; color:#243d62; background:#fff2cd; }
.happy-victory--festival .victory-mini-story,.happy-victory--festival .victory-scorecard,.happy-victory--festival .victory-speech { color:#243d62; border-color:#ccaa62; }
.happy-victory--festival .victory-mini-story h3 { color:var(--party-dark); }
.happy-victory--festival .victory-sparkles span { color:#ffe0a0; opacity:.9; }
.happy-victory--festival .victory-next .reading-keyword { color:inherit!important; }
.happy-victory--festival .victory-story-extra { border-color:#a69b7c; }
.happy-victory--festival .victory-story-extra[open] { color:#243d62; }
body .happy-victory--festival .victory-button { background:#ffe09b; color:#263456; border-color:#ddb463; box-shadow:0 5px 0 #9b7034; }
body .happy-victory--festival .victory-button:hover { background:#ffedbf; }
/* The following congratulations screen keeps its quiz hooks and fanfare. */
body .cartoon-celebration { display:grid; grid-template-columns:minmax(0,1fr); border:3px solid var(--party-dark); border-radius:28px; background:#fffdf4; box-shadow:0 8px 0 var(--party-dark); }
body .cartoon-celebration .celebration-art { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr); background:var(--party-pale); border-bottom:3px solid var(--party-dark); padding:0; }
body .cartoon-celebration .celebration-art img { display:block; width:100%; max-height:420px; object-fit:contain; }
body .cartoon-celebration .celebration-art figcaption { align-self:center; color:var(--party-dark); font:800 clamp(1.4rem,3vw,2rem)/1.4 var(--font-reader); padding:35px; text-wrap:balance; text-align:left; }
body .cartoon-celebration .celebration-copy { padding:36px clamp(22px,4vw,48px); display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0 35px; }
body .cartoon-celebration .celebration-copy>* { min-width:0; }
body .cartoon-celebration .celebration-kicker { grid-column:1/-1; font-size:1rem; color:var(--party-accent); letter-spacing:.05em; }
body .cartoon-celebration h2 { grid-column:1/-1; font-size:clamp(2rem,4vw,3rem); color:var(--party-dark); margin:12px 0 15px; }
body .cartoon-celebration .celebration-chapter { grid-column:1/-1; font-size:1.1rem; color:#485f6a; margin:0 0 25px; }
body .cartoon-celebration .celebration-award { grid-column:1; background:var(--party-pale); border:2px solid var(--party-dark); padding:22px; border-radius:18px; gap:20px; }
body .cartoon-celebration .celebration-award h3 { font-size:1.5rem; color:var(--party-dark); line-height:1.3; }
body .cartoon-celebration .celebration-award span { font-size:.9rem; letter-spacing:0; color:#4e5c70; }
body .cartoon-celebration .celebration-medal { width:76px; height:91px; flex-basis:76px; }
body .cartoon-celebration .celebration-message { grid-column:1; padding:22px 24px; border:2px solid #d2d9df; border-radius:20px 20px 20px 4px; background:#f8fafb; color:#3b5367; }
body .cartoon-celebration .celebration-message p { font-size:1.05rem; line-height:1.8; }
body .cartoon-celebration .celebration-message cite { font-size:.95rem; color:#57687b; }
body .cartoon-celebration .celebration-results { grid-column:1; font-size:1rem; padding:19px 0; gap:12px 19px; }
body .cartoon-celebration .celebration-results .stars { font-size:1.7rem; }
body .cartoon-celebration .celebration-idea { grid-column:1; font-size:1rem; line-height:1.8; margin-block:20px; }
body .cartoon-celebration .celebration-unlock { grid-column:1; font-size:1.05rem; line-height:1.75; }
body .cartoon-celebration .celebration-quiz-offer { grid-column:2; grid-row:4 / span 5; align-self:start; margin:0 0 22px; border:2px solid #abbfa9; padding:26px; border-radius:21px; background:#f0f6e9; }
body .cartoon-celebration .celebration-quiz-offer h3 { font-size:1.4rem; line-height:1.4; }
body .cartoon-celebration .celebration-quiz-offer p { font-size:1rem; line-height:1.8; margin-block:14px; }
body .cartoon-celebration .celebration-quiz-offer .btn { font-size:1.1rem; width:100%; padding:17px; font-weight:750; border-radius:12px; }
body .cartoon-celebration .celebration-actions { grid-column:1/-1; gap:15px; margin-top:20px; }
body .cartoon-celebration .celebration-actions .btn { font-size:1rem; padding:15px 22px; }
body .cartoon-celebration .level-save-message,body .cartoon-celebration .celebration-extras,body .cartoon-celebration .celebration-sound-note { grid-column:1/-1; }
body .cartoon-celebration .level-save-message { font-size:.95rem; margin:22px 0 7px; }
body .cartoon-celebration .celebration-extras { gap:16px 28px; }
body .cartoon-celebration .celebration-extras button { font-size:.95rem; }
body .cartoon-celebration .celebration-sound-note { font-size:.9rem; margin-top:10px; }
@media(max-width:850px) {
 .happy-victory { padding:27px 22px; }
 .victory-afterparty { grid-template-columns:minmax(0,1fr); }
 .victory-scorecard { align-items:flex-start; text-align:left; }
 body .cartoon-celebration .celebration-copy { display:block; padding:28px; }
 body .cartoon-celebration .celebration-art { grid-template-columns:minmax(0,1fr); }
 body .cartoon-celebration .celebration-art img { max-height:430px; }
 body .cartoon-celebration .celebration-art figcaption { font-size:1.4rem; text-align:center; padding:24px 30px; }
 body .cartoon-celebration .celebration-quiz-offer { margin-block:28px; }
}
@media(max-width:540px) {
 .happy-victory { padding:25px 15px; border-radius:22px; }
 .victory-ticket { font-size:.9rem; padding:10px 15px; }
 .happy-victory h2 { font-size:2rem; }
 .victory-banner>p { font-size:1.05rem; }
 .victory-illustration { border-radius:16px; }
 .victory-illustration figcaption { padding:18px 16px; text-align:left; }
 .victory-speech,.happy-victory--comic .victory-speech { width:calc(100% - 16px); margin:18px 10px 0 auto; padding:20px 20px; }
 .victory-speech p { font-size:1.15rem; }
 .victory-mini-story,.victory-scorecard { padding:23px 20px; }
 .victory-mini-story p { font-size:1.05rem; }
 .victory-mini-story h3 { font-size:1.3rem; }
 .victory-next { padding-top:15px; }
 body .victory-button { width:100%; padding:17px; font-size:1.1rem; }
 .victory-story-extra[open] { padding:18px; }
 body .cartoon-celebration .celebration-copy { padding:26px 20px; }
 body .cartoon-celebration .celebration-award { padding:18px; gap:14px; }
 body .cartoon-celebration .celebration-award h3 { font-size:1.3rem; }
 body .cartoon-celebration .celebration-medal { width:58px; height:70px; flex-basis:58px; }
 body .cartoon-celebration .celebration-quiz-offer { padding:22px 19px; }
 body .cartoon-celebration .celebration-message { padding:20px; }
 body .cartoon-celebration .celebration-actions { display:flex; flex-direction:column; }
}
@media(prefers-reduced-motion:no-preference) {
 .victory-speech { animation:victory-pop .45s ease-out 1; }
 @keyframes victory-pop { from { opacity:0; translate:0 14px; } to { opacity:1; translate:0 0; } }
}
@media print { .victory-sparkles,.victory-next,.victory-story-extra { display:none; } .happy-victory { box-shadow:none; } }

/* A second save toast should not cover the congratulations or the story. */
body:has(.happy-victory) .toast:not(.error),body:has(.cartoon-celebration) .toast:not(.error) { display:none; }
