@font-face{font-family:RoomHand;src:url('/assets/fonts/PFanHuTuTi-0.680-editor.woff2') format('woff2');font-display:swap}
:root{color-scheme:light;background:#fbf6ea;color:#173f73;font-family:'Avenir Next','Yuanti SC','STYuanti','PingFang SC',sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100svh;display:flex;flex-direction:column}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #173f73;outline-offset:4px}[hidden]{display:none!important}
.room-header,.room-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 28px;flex-shrink:0}.room-header{min-height:66px}.room-header h1{font:normal 27px RoomHand,'Avenir Next',sans-serif;margin:0;letter-spacing:.015em}.room-controls{display:flex;align-items:center;gap:4px}.room-controls button{border:0;background:transparent;font-size:12px;min-height:44px;padding:8px 12px;border-radius:10px}.room-controls button:hover{background:#173f730a}.room-controls button[aria-pressed=false]{color:#805f3e}
#room-shell{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:0;padding:0 16px;perspective:1200px}
#room-window{position:relative;overflow:hidden;width:min(100%,calc((100svh - 126px)*1.77683));aspect-ratio:1672/941;background:#edd9b5;border-radius:7px;box-shadow:0 8px 28px #593d1519;isolation:isolate;touch-action:pan-x pan-y}
#room-stage{width:100%;height:100%;position:relative;transform:scale(1.018);transform-origin:50% 53%;will-change:transform;transition:transform 850ms cubic-bezier(.2,.7,.2,1)}
body.room-ready #room-stage{transition:none}body.room-entering #room-stage{animation:enter-room 1600ms cubic-bezier(.2,.7,.2,1) both}
#room-image,#room-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill}#room-image{user-select:none;-webkit-user-drag:none}#room-canvas{opacity:0;pointer-events:none}#room-canvas[data-renderer=ready]{opacity:1}
#discoveries{position:absolute;inset:0;pointer-events:none}.room-object{position:absolute;pointer-events:auto;display:block;min-width:28px;min-height:28px;text-decoration:none;isolation:isolate;border-radius:40%;outline-offset:7px}.room-object .object-art{position:absolute;inset:0;background-image:url('/room-assets/christmas-room-v2.jpg');background-repeat:no-repeat;opacity:0;transition:transform 260ms ease,opacity 120ms;transform-origin:50% 78%;filter:drop-shadow(0 2px 2px #fff8a380)}
.trophy{left:19.1%;top:6.65%;width:5.65%;height:12.35%}.trophy .object-art{background-size:1769.91% 809.72%;background-position:20.244% 7.587%;clip-path:polygon(10% 14%,28% 17%,28% 10%,78% 9%,80% 16%,95% 16%,98% 28%,88% 42%,73% 48%,64% 58%,65% 65%,82% 68%,85% 96%,26% 97%,25% 72%,42% 67%,45% 58%,36% 47%,12% 38%,2% 26%)}
.ornament{left:84.35%;top:21.35%;width:5.4%;height:10.7%}.ornament .object-art{background-size:1851.85% 934.58%;background-position:89.165% 23.908%;clip-path:polygon(46% 1%,56% 1%,61% 12%,100% 46%,89% 52%,88% 95%,12% 97%,12% 54%,0 47%,40% 13%)}
.room-object:hover .object-art,.room-object:focus-visible .object-art{opacity:1;transform:scale(1.075) rotate(-2deg)}.object-label{position:absolute;left:50%;top:calc(100% + 10px);transform:translate(-50%,3px);opacity:0;white-space:nowrap;font-size:12px;font-weight:600;padding:8px 13px;background:#fbf6eaf2;border-radius:12px;box-shadow:0 2px 12px #173f7322;transition:opacity 160ms,transform 160ms;pointer-events:none}.room-object:hover .object-label,.room-object:focus-visible .object-label{opacity:1;transform:translate(-50%,0)}
.tree-switch{position:absolute;left:89.8%;top:45.8%;width:3.2%;height:7.2%;min-width:44px;min-height:44px;padding:0;border:0;background:none;z-index:3;touch-action:manipulation;border-radius:18px;isolation:isolate;transform:translate(-50%,-50%)}
.tree-switch img{position:absolute;left:16%;top:10%;display:block;width:68%;height:80%;object-fit:contain;pointer-events:none;opacity:.86;transition:transform 180ms,opacity 180ms;transform:rotate(-12deg);transform-origin:50% 61%;filter:saturate(.76) contrast(.84) brightness(.91) blur(.22px)}
.tree-switch:hover:not(:disabled) img,.tree-switch:focus-visible img{transform:rotate(-12deg) scale(1.08);opacity:1}.tree-switch:active:not(:disabled) img{transform:rotate(-12deg) scale(.96)}.tree-switch:disabled{cursor:default}
.light-label{position:absolute;right:calc(100% + 3px);top:57%;transform:translateY(-50%);white-space:nowrap;padding:7px 10px;border-radius:9px;background:#fbf6eaf2;color:#173f73;font-size:11px;font-weight:500;box-shadow:0 2px 12px #173f731a;opacity:0;pointer-events:none;transition:opacity 160ms}
.tree-switch:hover .light-label,.tree-switch:focus-visible .light-label,.tree-switch.is-revealed .light-label{opacity:1}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;padding:0;margin:-1px;border:0}
#room-status{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);padding:8px 14px;background:#fbf6eaf2;color:#173f73;border-radius:10px;font-size:12px;text-align:center;margin:0;max-width:90%;pointer-events:none}#room-status:empty{display:none}#retry{position:absolute;top:55%;left:50%;transform:translateX(-50%);border:1px solid #173f7366;border-radius:12px;background:#fbf6ea;padding:10px 20px;min-height:44px}
.room-footer{min-height:60px;padding-top:8px;padding-bottom:max(8px,env(safe-area-inset-bottom));font-size:12px}.room-footer p{margin:0;color:#5d6e78}.room-footer a{padding:12px 0;text-decoration:none;font-weight:600}.room-footer a:hover{text-decoration:underline}.no-script{margin:0;padding:8px 24px;font-size:12px;text-align:center}
@keyframes enter-room{from{transform:scale(1.065) translateY(4px)}to{transform:scale(1.018) translateY(0)}}
body.is-still #room-stage{transform:scale(1.018)!important;animation:none!important;will-change:auto}
body:fullscreen .room-header,body:fullscreen #room-shell{background:#fbf6ea}
@media(max-width:700px){.room-header{padding:8px 12px;gap:4px;flex-wrap:wrap}.room-header h1{font-size:23px}.room-controls{gap:0}.room-controls button{padding:8px;font-size:11px}#room-shell{padding:0;align-items:center;overflow:hidden}#room-window{border-radius:0;width:100%;box-shadow:none}.room-footer{padding:10px 14px;align-items:center;gap:12px;font-size:11px}.room-footer p{max-width:55%;line-height:1.6}.room-footer a{white-space:nowrap}.object-label{font-size:10px;padding:5px 8px}.room-object{min-width:22px;min-height:30px}}
@media(max-width:700px) and (orientation:portrait){#room-shell{display:block;overflow-x:auto;align-content:center;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#173f7338 transparent}#room-window{width:max(100%,min(1250px,calc((100svh - 186px)*1.77683)));max-width:none;flex-shrink:0;margin:auto}.room-object{min-width:44px;min-height:44px}}
@media(prefers-reduced-motion:reduce){#room-stage,.object-art,.object-label{animation:none!important;transition:none!important}#room-stage{will-change:auto}}
/* Only the edited trophy footprint covers the original painting. */
.room-trophy-clean-plate{position:absolute;left:18.7799%;top:6.27%;width:6.2201%;height:13.1775%;background:url('/room-assets/mantel-trophy-patch-v1.png') no-repeat;background-size:100% 100%;pointer-events:none;mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent);}
.trophy.has-room-work{left:18.5%;top:5.3%;width:7%;height:14.1%}.trophy.has-room-work .object-art{display:none}.room-personal-trophy{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;transform-origin:50% 90%;filter:drop-shadow(0 2px 1px #26304750);transition:transform 260ms ease;}
.trophy.has-room-work:hover .room-personal-trophy,.trophy.has-room-work:focus-visible .room-personal-trophy{transform:scale(1.075) rotate(-2deg)}.room-display-notice{font-size:11px;max-width:260px;line-height:1.5}
@media(prefers-reduced-motion:reduce){.room-personal-trophy{transition:none}}
/* User creations keep their slot, with a painted background repaired only beneath that slot. */
.room-clean-patch{position:absolute;background-image:url('/room-assets/room-clean-objects-20261103.png');background-repeat:no-repeat;pointer-events:none;mask-image:linear-gradient(to right,transparent,#000 5%,#000 95%,transparent),linear-gradient(to bottom,transparent,#000 4%,#000 96%,transparent);mask-composite:intersect}
.room-object.has-room-work .object-art{display:none!important}
.room-personal-work{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;pointer-events:none;transform:rotate(var(--room-work-angle,0deg));transform-origin:50% 85%;filter:saturate(1.03) contrast(1.06) drop-shadow(.55px 0 0 #264059b0) drop-shadow(-.55px 0 0 #264059b0) drop-shadow(0 .55px 0 #264059b0) drop-shadow(0 -.55px 0 #264059b0) drop-shadow(1px 2px 1px #4b311b45);transition:transform 240ms ease}
.room-object.has-room-work:hover .room-personal-work,.room-object.has-room-work:focus-visible .room-personal-work{transform:rotate(var(--room-work-angle,0deg)) scale(1.045)}
.outside .room-personal-work{object-position:center top;filter:saturate(.9) drop-shadow(0 1px 1px #30251a40)}
@media(prefers-reduced-motion:reduce){.room-personal-work{transition:none}}

/* Actual visible silhouette, anchored to its supporting surface (including legacy previews). */
.room-work-placement{position:absolute;pointer-events:none;transform:rotate(var(--room-work-angle,0deg));transform-origin:50% 100%;transition:transform 240ms ease;isolation:isolate}
.room-work-placement .room-personal-work,.room-work-placement .room-personal-trophy{position:absolute;max-width:none;object-fit:fill;object-position:initial;transform:none!important;filter:url(#room-paper-surface) drop-shadow(.3px .55px .35px #32453960);transition:none}
.room-work-placement::before{content:'';position:absolute;z-index:-1;left:7%;bottom:-1.7%;width:88%;height:7%;border-radius:50%;background:radial-gradient(ellipse,#45321ed0 0%,#523f2770 36%,#523f2700 72%);filter:blur(1.1px);transform:skewX(-22deg)}
[data-room-kind=giftbox] .room-work-placement::before{left:5%;width:104%;height:12%;bottom:-3%}
[data-room-kind=plate] .room-work-placement::before{height:65%;bottom:-2%;opacity:.65}
[data-room-kind=frame] .room-work-placement::before{height:5%}
[data-room-kind=bunting] .room-work-placement::before,[data-room-kind=ornament] .room-work-placement::before{display:none}
[data-room-kind=bunting] .room-work-placement img,[data-room-kind=ornament] .room-work-placement img{filter:url(#room-paper-surface) drop-shadow(1px 2px 1.4px #132d275c)}
.room-object.has-room-work:hover .room-work-placement,.room-object.has-room-work:focus-visible .room-work-placement{transform:rotate(var(--room-work-angle,0deg)) scale(1.035)}
@media(prefers-reduced-motion:reduce){.room-work-placement{transition:none}}

/* Existing foreground branches overlap the base; neither the work nor the room art is rewritten. */
.room-work-foreground{display:none;position:absolute;inset:0;background:url('/room-assets/room-clean-objects-20261103.png') 0 0/100% 100%;pointer-events:none}
.room-work-foreground-candle{display:block;clip-path:polygon(46.8% 70.6%,47.5% 70.3%,48.1% 70.9%,48.7% 70.7%,49.2% 71.1%,50.1% 70.5%,50.7% 70.9%,51.3% 70.4%,51.8% 70.8%,52.6% 70.5%,53.6% 71.1%,53.6% 75.1%,46.8% 75.1%)}

/* The bottom of this flame stays attached to the projected wick, not to the holder silhouette. */
.room-candle-flame{position:absolute;z-index:2;width:0;height:0;pointer-events:none}
.room-candle-fire{position:absolute;left:-6px;bottom:0;width:12px;height:26px;display:block;border-radius:70% 32% 58% 44% / 80% 75% 28% 30%;background:radial-gradient(ellipse at 50% 82%,#fffce7 0 19%,#ffe58a 32%,#ffb52b 57%,#f3791870 76%,transparent 87%);filter:drop-shadow(0 0 3px #ffc34a90);transform-origin:50% 100%;animation:room-wick-sway 1.7s ease-in-out infinite alternate}
.room-candle-fire::after{content:'';position:absolute;left:35%;bottom:2%;width:34%;height:45%;border-radius:70% 40% 45% 45%;background:linear-gradient(to top,#cc9b7260,#fffdf0 32%,#fff5be);opacity:.9}
.room-candle-warmth{position:absolute;left:-38px;top:-43px;width:76px;height:76px;border-radius:50%;background:radial-gradient(ellipse,#ffce6642 0%,#ffc65022 28%,#ffb13e0c 50%,transparent 72%);mix-blend-mode:screen;animation:room-wick-glow 2.3s ease-in-out infinite alternate}
@keyframes room-wick-sway{0%{transform:rotate(-5deg) scale(.94,.94)}36%{transform:rotate(3deg) scale(1.04,.98)}70%{transform:rotate(-2deg) scale(.97,1.07)}100%{transform:rotate(5deg) scale(1.02,.96)}}
@keyframes room-wick-glow{from{opacity:.7;transform:scale(.95)}to{opacity:1;transform:scale(1.04)}}
#room-stage[data-candle-lit=false] .room-candle-flame{display:none}
.room-flame-paused .room-candle-fire,.room-flame-paused .room-candle-warmth{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.room-candle-fire,.room-candle-warmth{animation:none}}
