@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700;800&family=Nunito:wght@400;600;700;800;900&display=swap');
:root{font-family:'Nunito',sans-serif;color:#16393d;background:#007d83;--room:#ffb951;font-size:18px}*{box-sizing:border-box}body{margin:0;background:#007d83;background-image:radial-gradient(circle at 8% 10%,#ffdc74 0 3px,transparent 4px),radial-gradient(circle at 85% 70%,#a5f9ff 0 3px,transparent 4px);background-size:65px 65px,90px 90px}button,input{font:inherit}button{cursor:pointer;border:2px solid #124446;background:#f5e9fc;color:#124446;border-radius:13px;padding:10px 18px;font-weight:800;box-shadow:0 3px 0 #124446;transition:transform .15s}button:hover:not(:disabled){transform:translateY(-2px)}button:disabled{cursor:not-allowed;opacity:.6;box-shadow:none}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:4px solid #167b85;outline-offset:4px}header{background:#075354;color:#fff6d7;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:18px max(24px,calc((100vw - 1280px)/2));border-bottom:5px solid #ffc647}header a{font-family:'Baloo 2',cursive;font-size:26px;line-height:1;text-decoration:none;color:#ffcc64;font-weight:800}header a span{display:block;color:#f0ccff;font-family:'Nunito',sans-serif;font-size:12px;letter-spacing:2px;margin-top:8px}header button{background:#dac3ff}main{max-width:1320px;padding:28px 24px 48px;margin:auto}h1,h2,h3{font-family:'Baloo 2',cursive;line-height:1.08;margin:0 0 14px}h1{font-size:clamp(2.4rem,5vw,4.2rem);font-weight:800}h2{font-size:1.8rem}h3{font-size:1.35rem}p{line-height:1.6;margin:0 0 18px}.eyebrow{font-size:.78rem;font-weight:900;letter-spacing:1.5px;display:block;margin-bottom:10px}h1 span{display:block;font-size:.58em;color:#702880;margin-top:6px}.welcome{display:grid;grid-template-columns:1fr 1.1fr;background:#ffd270;border:3px solid #075354;border-radius:30px;overflow:hidden;box-shadow:0 8px 0 #075354}.welcome-copy{padding:35px}.stats{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}.stats b{background:#fce4f8;border:1px solid #612469;padding:6px 10px;border-radius:9px;font-size:.8rem}.primary{background:#c7f568;color:#243e11;border-color:#344715;padding:14px 22px;box-shadow:0 4px 0 #344715}.start{width:100%;text-align:left}.start span{float:right}.save-note{font-size:.77rem;margin:14px 0 0;font-weight:700}.manor{position:relative;min-height:380px}.manor>img{width:100%;height:100%;object-fit:cover;display:block}.manor-tag{position:absolute;bottom:20px;left:20px;right:20px;background:#075354ed;border:1px solid #ffba61;color:#fff6d5;border-radius:12px;text-align:center;padding:12px;font-weight:800;font-size:.85rem}.map-title{display:flex;justify-content:space-between;align-items:center;gap:15px;color:#fff2cc;margin-top:36px}.map-title h2{margin:0}.map-title span{font-weight:800}progress{width:100%;height:13px;margin:16px 0 24px;accent-color:#c7f568;border:0;border-radius:10px;background:#075354}progress::-webkit-progress-bar{background:#075354;border-radius:10px}progress::-webkit-progress-value{background:#c7f568;border-radius:10px}.room-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.room-card{background:var(--card);display:flex;gap:16px;text-align:left;align-items:center;padding:18px;border-radius:23px;min-height:190px;border-width:3px}.room-card:disabled{opacity:.82;color:#16393d}.avatar{width:95px;height:112px;object-fit:cover;object-position:center 35%;border-radius:22px;border:3px solid #542469;background:#ffdbb9;flex-shrink:0}.room-card .avatar{width:88px;height:105px}.room-card small{font-size:.67rem;font-weight:900}.room-card h3{margin-top:8px;margin-bottom:6px}.room-card p{font-size:.8rem;margin:0 0 8px}.room-card span{font-size:.72rem}.final-door{margin-top:30px;background:#40215f;border:2px solid #b27ee4;border-radius:25px;padding:28px;color:#eedcff}.final-door.ready{background:#ffd270;color:#16393d;border-color:#075354}.final-door>p{margin:20px 0 0}.charms{display:flex;flex-wrap:wrap;gap:10px}.charms span{border:2px dashed currentColor;border-radius:12px;padding:12px;font-size:.78rem}.charms b{font-size:1.1rem;padding-left:10px}.final-door form{margin-top:24px;max-width:450px}.room-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#fff2d0;font-weight:900;font-size:.85rem;margin-bottom:22px}.room-banner{background:var(--room);border:3px solid #075354;border-radius:27px;display:flex;align-items:center;gap:24px;padding:25px;position:relative;overflow:hidden;margin-bottom:24px}.room-banner>div{max-width:780px;position:relative;z-index:1}.room-banner h1{font-size:clamp(2rem,4vw,3.1rem)}.room-banner p{margin:0}.room-banner>.avatar{width:110px;height:140px}.banner-art{position:absolute;right:0;top:0;width:23%;height:100%;object-fit:cover;opacity:.12;pointer-events:none}.play-layout{display:grid;grid-template-columns:340px 1fr;gap:24px;align-items:start}.clue-shelf{background:#a6edf0;border:3px solid #176665;border-radius:24px;padding:24px}.clue-shelf>p{font-size:.88rem}.objects{display:grid;grid-template-columns:1fr 1fr;gap:12px}.objects button{background:#ffe6a6;padding:14px 8px;border-radius:17px}.objects button[aria-expanded=true]{background:#c7f568}.object-icon{font-size:2.1rem;display:block;margin-bottom:6px}.objects b{font-size:.82rem;display:block}.objects small{display:block;font-size:.7rem;margin-top:6px}.found-clue{background:#fff2c2;border:2px dashed #684281;border-radius:16px;padding:17px;margin-top:20px}.found-clue h3{font-size:1.1rem}.found-clue p{font-size:.95rem;margin:0}.host-tip{display:flex;gap:12px;margin-top:20px;align-items:center}.host-tip .avatar{width:60px;height:72px;border-radius:50%}.host-tip p{font-size:.78rem;margin:0}.puzzle-area{background:#fff0cb;border:3px solid #075354;border-radius:25px;padding:30px;min-height:510px;box-shadow:0 7px 0 #075354}.locks{display:flex;gap:8px;margin-bottom:26px;flex-wrap:wrap}.locks button{font-size:.8rem;padding:9px 13px;background:#eed6ff}.locks [aria-current=step]{background:#ffc158;border-width:3px}.instructions{font-size:1.05rem}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.tiles button{min-height:65px;background:#c1edf4}.tiles button[aria-pressed=true]{background:#bbeb61;border-width:3px}.tiles button[aria-pressed=true]::before{content:'✓ ';color:#233d14}label{display:block;font-weight:900;margin-bottom:10px}input{background:#fffaf1;border:3px solid #743f94;border-radius:14px;padding:14px 16px;display:block;width:100%;max-width:440px;min-width:0;font-weight:900;font-size:1.5rem;letter-spacing:3px;margin-bottom:18px}.secondary{font-size:.86rem}.order-line{background:#ffe09b;border:2px dashed #955294;border-radius:13px;padding:17px;min-height:70px;display:flex;flex-wrap:wrap;gap:10px;font-size:.9rem}.order-line span{background:#fff2d8;padding:5px 8px;border-radius:7px}.actions{display:flex;gap:10px;flex-wrap:wrap}.feedback{margin-top:20px;font-weight:900;color:#9a263d;min-height:24px}.hint-button{background:#f5d3ff;font-size:.86rem}.hints p{padding:12px;margin:15px 0 0;border-left:4px solid #7948a4;background:#f2dffd;font-size:.9rem}.solved{background:#d1f59b;border:2px solid #4a742c;border-radius:20px;padding:25px}.solved h3{font-size:1.8rem}.solved p{margin-bottom:20px}.charm-reward{background:#ffe87c;border:3px dashed #8d633d;border-radius:17px;text-align:center;margin:20px 0;padding:20px}.charm-reward span{font-weight:900;letter-spacing:3px;font-size:.8rem}.charm-reward h3{margin:14px 0;font-size:2rem}.charm-reward strong{display:inline-block;border:3px solid #723664;border-radius:50%;padding:10px 21px;background:#ebadfa}.charm-reward p{margin:0}.maze{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;max-width:405px;background:#773f9c;padding:8px;border-radius:18px;margin:20px auto}.cell{aspect-ratio:1;display:grid;place-items:center;background:#fbe6a2;border-radius:9px;font-size:1.9rem;min-width:0}.cell.wall{background:#331849}.cell.player{background:#b6ed59;border:3px solid #33581d}.directions{display:flex;justify-content:center;gap:10px;margin:15px 0}.directions button{font-size:1.4rem;padding:7px 18px}.journal{margin-top:25px;border:3px solid #075354;background:#b9ebdf;border-radius:24px;padding:28px}.journal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}details{padding:18px;background:#e5fff5;border:1px solid #428a7c;border-radius:14px}summary{cursor:pointer;font-weight:900}details p{margin:12px 0 0;font-size:.95rem}.discovery{background:#f4facb}.victory{background:#c8f571;border:3px solid #607f27;border-radius:22px;padding:28px;text-align:center;margin-top:24px}.cast{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin:20px 0}.cast .avatar{width:70px;height:85px}.victory h2{font-size:2.5rem}.victory p:last-child{margin:0}dialog{max-width:700px;width:calc(100% - 30px);background:#fff0c9;color:#16393d;border:4px solid #693296;border-radius:23px;padding:30px;max-height:90vh;overflow:auto}dialog::backdrop{background:#210b40bc}.close{float:right;margin:0 0 20px 20px}dialog h2{clear:both}dialog li{margin-bottom:12px;line-height:1.5}.danger{background:#ffd1da}footer{text-align:center;background:#075354;color:#f0d2fc;padding:22px;font-size:.78rem;font-weight:800}#confirmReset{margin-top:20px;padding-top:20px;border-top:2px solid #a55a83}#confirmReset button{margin:5px}body:has(.victory) .victory{animation:pop .5s ease-out}@keyframes pop{from{transform:scale(.94)}to{transform:scale(1)}}
@media(max-width:1100px){.room-grid{grid-template-columns:repeat(2,1fr)}.play-layout{grid-template-columns:290px 1fr}.clue-shelf{padding:18px}.puzzle-area{padding:23px}.welcome-copy{padding:25px}}@media(max-width:800px){.welcome{grid-template-columns:1fr}.manor{height:290px;min-height:0}.manor img{object-position:center 55%}.play-layout{grid-template-columns:1fr}.objects{grid-template-columns:repeat(4,1fr)}.host-tip{display:none}.room-banner>.avatar{width:80px;height:105px}.banner-art{display:none}.room-banner{gap:16px;padding:20px}.clue-shelf>p{margin-bottom:12px}.map-title{align-items:start}.room-nav{flex-wrap:wrap}.room-nav>span{order:3;width:100%;text-align:center}.welcome-copy{padding:28px}.journal-grid{grid-template-columns:1fr}}@media(max-width:520px){:root{font-size:16px}main{padding:20px 13px 35px}header{padding:17px 15px}header a{font-size:21px}header button{font-size:.85rem;padding:8px 12px}.room-grid{grid-template-columns:1fr}.room-card{min-height:155px}.room-card .avatar{width:90px;height:110px}.room-card h3{font-size:1.5rem}.room-card small,.room-card span{font-size:.8rem}.room-card p{font-size:.9rem}.map-title{display:block}.map-title span{display:block;margin-top:9px}.room-banner{align-items:start}.room-banner>.avatar{width:64px;height:85px}.room-banner h1{font-size:1.9rem}.objects{grid-template-columns:repeat(2,1fr)}.puzzle-area{padding:20px 16px}.locks{gap:7px}.locks button{padding:8px 10px}.tiles{gap:9px}.tiles button{font-size:.95rem;padding:10px}.journal{padding:20px}.final-door{padding:22px}.welcome-copy{padding:23px}.stats b{font-size:.85rem}.eyebrow{letter-spacing:1px}.cell{font-size:1.65rem}.directions{gap:8px}h1{font-size:3rem}header a span{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* A bright Christmas play surface: candy-red controls, teal snow and illustrated room portraits. */
body{background-image:radial-gradient(circle at 8% 10%,#ffffff9c 0 2px,transparent 3px),radial-gradient(circle at 85% 70%,#ffdb71 0 2px,transparent 3px);background-size:57px 57px,99px 99px}
header{background:#a82141;border-bottom:5px solid #ffda77}header a{color:#fff2ac}header a span{color:#ffe3e8;font-size:14px;letter-spacing:1px}header button{background:#ffefb6}
.game-start{display:grid;grid-template-columns:1fr 1.1fr;border:3px solid #075354;border-radius:26px;overflow:hidden;background:#fff0b1;box-shadow:0 7px 0 #004e54}
.start-copy{padding:24px 28px}.game-start h1{font-size:clamp(2.4rem,4vw,3.3rem)}h1 span{color:#b31f43;font-size:.53em}.game-start p{margin-bottom:12px}.game-start .stats{margin:16px 0}.game-start .stats b{background:#ffe3eb;border:1px solid #c05975}.primary{background:#a92040;color:white;border-color:#6d1530;box-shadow:0 4px 0 #6d1530}.primary:hover:not(:disabled){background:#8e1733}.save-note{font-size:.8rem}.village-view{position:relative;min-height:320px}.village-view>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.village-label{position:absolute;bottom:18px;left:18px;right:18px;background:#075354ed;color:#fff4ad;border:1px solid #ffe587;border-radius:12px;padding:12px;text-align:center;font-weight:900}
.room-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.room-card{flex-direction:column;align-items:center;text-align:center;position:relative;padding:18px 12px 20px;min-height:290px;gap:12px}.room-card:disabled{opacity:1;filter:saturate(.8)}.room-card .avatar{width:105px;height:105px;border-radius:50%;object-fit:cover;object-position:center;border-color:#075354}.room-card small{font-size:14px}.room-card h3{font-size:1.35rem;line-height:1.15;margin:8px 0}.room-card p,.room-card span{font-size:14px}.room-card .room-number{position:absolute;top:12px;left:12px;background:#075354;color:#fff3b9;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;font-size:16px}.avatar{object-position:center;border-color:#146966;background:white}.room-banner>.avatar{width:126px;height:126px;border-radius:50%;object-fit:cover}.banner-art{opacity:.2}.room-banner{border-color:#075354}.room-banner>div{max-width:830px}.room-banner h1{font-size:clamp(2rem,3.5vw,2.8rem)}.room-banner .eyebrow{color:#154448}.clue-shelf{background:#96e1de}.objects button{background:#fff0af}.objects button[aria-expanded=true]{background:#ffd1de}.objects b{font-size:16px}.objects small{font-size:14px}.objects .object-icon{font-size:2.3rem}.host-tip .avatar{width:65px;height:65px}.host-tip p{font-size:14px}.locks button{background:#d0f1f1;font-size:15px}.locks [aria-current=step]{background:#ffc0d1}.puzzle-area{background:#fff5d8}.tiles button{background:#d1eef0}.tiles button[aria-pressed=true]{background:#c4ed75}.found-clue{background:#fff9d7;border-color:#417c77}.hint-button{background:#ffd4e1}.hints p{background:#ffe4ed;border-color:#bc365e}.charm-reward{background:#ffed93}.charm-reward strong{background:#ffb4ce;border-color:#a83054}.final-door{background:#074f59;color:#fff4c5;border-color:#ffda77}.final-door.ready{background:#ffe597;color:#16393d}.charms span{font-size:14px}.room-nav{font-size:16px}.final-door.ready h2{color:#a41e42}.journal{background:#b6ecdf}.maze{background:#147978}.cell.wall{background:#064e57}.cell{background:#e0f8ff}.cell.player{background:#ffda71;border-color:#a06427}.lamp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:360px;margin:22px auto}.lamp-grid button{min-height:90px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#15586a;color:white;border-color:#073e4c}.lamp-grid button.lit{background:#ffe176;color:#603b07;border-color:#af7414}.lamp-grid button span{font-size:2rem;line-height:1.1}.lamp-grid button b{font-size:16px}.lamp-count{text-align:center;font-weight:900}.solved{background:#d4f2ae}.cast .avatar{height:90px;width:90px;border-radius:50%}.victory{background:#d5f0ab}.victory h2{color:#a51c3e}footer{background:#a82141;color:#fff0d3;font-size:14px}.eyebrow{font-size:14px}.map-title{margin-top:28px}.map-title span{font-size:16px}input{border-color:#168081}.order-line{border-color:#2a8e88;background:#fff1a8}.order-line span{background:white}.secondary{font-size:16px}.stats b{font-size:14px}
@media(max-width:1100px){.room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.room-card{min-height:180px;flex-direction:row;text-align:left;padding:22px;gap:18px}.room-card .room-number{top:8px;left:8px}.room-card .avatar{margin-top:10px}.start-copy{padding:24px}}
@media(max-width:800px){.game-start{grid-template-columns:1fr}.village-view{min-height:250px}.room-banner>.avatar{width:85px;height:85px}.room-card{flex-direction:column;text-align:center;padding:16px}.room-card .avatar{margin-top:8px}.host-tip{display:flex}.game-start h1{font-size:2.8rem}}
@media(max-width:520px){.room-grid{gap:12px}.room-card{padding:12px 9px}.room-card .avatar{width:78px;height:78px}.room-card h3{font-size:1.25rem}.room-card small,.room-card span,.room-card p{font-size:14px}.room-card .room-number{width:26px;height:26px;font-size:14px}.room-banner>.avatar{width:65px;height:65px}.room-banner .eyebrow{font-size:14px}.room-banner h1{font-size:1.9rem}.room-banner p{font-size:16px}.start-copy{padding:22px}.village-view{min-height:220px}header a{font-size:20px}header a span{font-size:12px}.lamp-grid button{min-height:75px}.game-start h1{font-size:2.6rem}.tiles button{font-size:16px}.locks button{font-size:14px}.map-title h2{font-size:1.75rem}}
