:root{--wall:#f7f5f0;--wall-hi:#faf8f2;--ink:#1a1815;--ink-soft:#6b6458;--frame:#0e0d0b;--red:#c4342b;--gold:#b08d57;--hairline:#ddd7c9;--label:#fdfcf8;--ease-wall:cubic-bezier(.32, .72, .2, 1);--ease-out:cubic-bezier(.23, 1, .32, 1)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{color:var(--ink);background:var(--wall);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif;overflow:hidden}.room.m.phase-result .frame:not(.reserved):not(.twin):not(.gone){opacity:0;pointer-events:none}.room.m .lensrow{flex-wrap:nowrap;gap:12px}.room.m .lensbtn{min-height:44px;font-size:calc(11px * var(--fz,1));letter-spacing:.12em;padding:14px 2px}.room.m .strip{margin-top:12px;position:static;transform:none}.room.m .minis{flex-wrap:wrap}.room.m .strip .mini{width:52px}.room.m.strip-open .why{display:none}.room.m .caption .actions{position:absolute;left:0;right:0}.room.m .lensrow{margin-top:4px}.room.m .caption .title{font-size:calc(22px * var(--fz,1));-webkit-line-clamp:1}.room.m .caption .who{font-size:calc(12.5px * var(--fz,1));margin-top:3px}.room.m .caption .verdict{min-height:0;margin-top:8px}.room.m .caption .verdict-note{margin-top:0}.room.m .why{margin-top:10px}.room.m .whyline{font-size:calc(14.5px * var(--fz,1));line-height:1.38}.room.m .reserved.pair .accn{font-size:calc(9.5px * var(--fz,1));letter-spacing:.02em;left:auto;right:calc(50% + 26px);transform:none}.room{background:radial-gradient(140% 90% at 50% -10%, var(--wall-hi) 0%, var(--wall) 55%, #ece7db 100%);width:100vw;height:100dvh;position:relative;overflow:hidden}.floor-line{background:linear-gradient(#e7e2d4,#d9d3c2);border-top:1px solid #d3cdbd;height:48px;position:absolute;bottom:0;left:0;right:0}.stage{transform-origin:50%;width:1440px;height:860px;transform:translate(-50%, -50%) scale(var(--scale,1));position:absolute;top:50%;left:50%}.room.m .stage{width:375px;height:720px}.room.scroll{overflow-y:auto}.room.scroll .floor-line{display:none}.room.scroll .stage{transform:translate(-50%, 0) scale(var(--scale,1));transform-origin:top;top:0}.frame{transform-origin:0 0;transition:transform 1.05s var(--ease-wall), opacity .7s ease;position:absolute}.frame.gone{opacity:0;pointer-events:none}.phase-idle .frame:not(.reserved){animation:16s cubic-bezier(.45,0,.55,1) infinite alternate wallDrift}.phase-idle .frame:nth-child(2n){animation-delay:.8s}.phase-idle .frame:nth-child(3n){animation-delay:1.6s}.phase-idle .frame:nth-child(4n){animation-delay:2.4s}@keyframes wallDrift{to{transform:translate(5px,-3px)scale(1)}}.phase-result .frame:not(.reserved):not(.twin):not(.gone){opacity:.78}.phase-result .frame:not(.reserved):not(.twin):not(.gone) img{filter:saturate(.45)brightness(1.1);opacity:.72}.frame .moulding{background:var(--frame);height:100%;transition:transform .3s var(--ease-wall), box-shadow .3s ease;padding:5px;box-shadow:1px 2px 4px #18140e26,3px 8px 16px -8px #18140e38}.frame .mat{background:var(--label);height:100%;padding:7%;transition:padding .8s;box-shadow:inset 0 0 0 1px #18140e0f}.frame .mat.deep{padding:13%}.frame .mat .broken{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:8%;display:flex;box-shadow:inset 0 0 0 1px #18140e14}.frame .mat .broken span{font-family:Fraunces,serif;font-style:italic;font-size:calc(13px * var(--fz,1));color:var(--ink-soft);line-height:1.45}.frame .mat .broken button{appearance:none;font-family:IBM Plex Mono,monospace;font-size:calc(10.5px * var(--fz,1));letter-spacing:.08em;color:var(--ink);cursor:pointer;border:0;border-bottom:1px solid var(--ink);background:0 0;margin-top:8px;padding:6px 4px}@media (hover:hover){.frame .mat .broken button:hover{color:var(--red);border-bottom-color:var(--red)}}.frame .mat .broken button:active{color:var(--red)}.frame .mat .broken button:focus-visible{outline:2px solid var(--red);outline-offset:3px}.frame img{object-fit:cover;filter:saturate(.93)contrast(1.01);width:100%;height:100%;transition:filter .7s,opacity .7s;display:block}.reserved .mat img{object-fit:contain}@media (hover:hover) and (pointer:fine){.frame:not(.reserved):not(.twin):hover .moulding{transition-duration:.18s;transform:translateY(-4px);box-shadow:2px 10px 22px -8px #18140e59}}.lensbox{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.lenswrap{max-width:100%;max-height:100%;line-height:0;display:inline-block;position:relative}.twin .lenswrap{width:100%;height:100%}.twin .lenswrap img{object-fit:cover;width:100%;height:100%}.lenswrap img{width:auto;max-width:100%;height:auto;max-height:100%}.twin .lenswrap img{width:100%;height:100%}svg.lens{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.lens-mass{fill:#c4342b24;stroke:#c4342bb3;stroke-width:1.5px;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:50%;animation:lensIn .32s var(--ease-out) both}.lens-c{fill:var(--red);transform-box:fill-box;transform-origin:50%;animation:lensIn .32s var(--ease-out) both}.lens-bone{stroke:var(--gold);stroke-width:2.5px;stroke-linecap:round;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:50%;animation:lensIn .4s var(--ease-out) both}.lens-head{fill:none;stroke:var(--gold);stroke-width:2.5px;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:50%;animation:lensIn .45s var(--ease-out) both}@keyframes lensIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.conn{pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.conn line{stroke:var(--red);stroke-width:1px;vector-effect:non-scaling-stroke;animation:connIn .4s var(--ease-out) 80ms backwards}@keyframes connIn{0%{opacity:0}}.palband{pointer-events:none;height:6px;display:flex;position:absolute;bottom:0;left:0;right:0}.palband i{flex:1;display:block}.palband i.shared{box-shadow:0 0 0 2px var(--label), 0 0 0 3.5px var(--red);z-index:1;position:relative}.lensbox{position:relative}@media (prefers-reduced-motion:reduce){.lens-mass,.lens-c,.lens-bone,.lens-head{animation:none}}.why{margin-top:22px}.whyline{font-family:Fraunces,serif;font-style:italic;font-size:calc(16px * var(--fz,1));color:var(--ink);max-width:34ch;margin:0 auto;line-height:1.45}.lensrow{flex-wrap:wrap;justify-content:center;gap:28px;margin-top:12px;display:flex}.lensbtn{font-family:IBM Plex Mono,monospace;font-size:calc(11px * var(--fz,1));letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);cursor:pointer;transition:color .25s ease, transform .12s var(--ease-out);background:0 0;border:0;padding:6px 2px;position:relative}.lensbtn:before{content:"";background:var(--red);vertical-align:1px;width:6px;height:6px;transition:transform .16s var(--ease-out);margin-right:8px;display:inline-block;transform:scale(0)}.lensbtn.on{color:var(--red)}.lensbtn.on:before{transform:scale(1)}.lensbtn:active{transform:scale(.97)}@media (hover:hover) and (pointer:fine){.lensbtn:hover{color:var(--ink)}.lensbtn.on:hover{color:var(--red)}}.lensbtn:focus-visible{outline:2px solid var(--red);outline-offset:2px}.phase-result .lensrow .lensbtn:first-child{animation:.9s 2.25s backwards lensPulse}@keyframes lensPulse{0%{box-shadow:0 0 #c4342b80}to{box-shadow:0 0 0 7px #c4342b00}}.lens-note{font-size:calc(10.5px * var(--fz,1));color:var(--ink-soft);margin-top:8px;font-style:italic;line-height:1.4}.frame .accn{font-family:IBM Plex Mono,monospace;font-size:calc(11.5px * var(--fz,1));letter-spacing:.04em;color:#544e3f;white-space:nowrap;opacity:0;transition:opacity .25s;position:absolute;top:calc(100% + 7px);left:50%;transform:translate(-50%)}.frame.pair .accn,.frame.twin .accn{opacity:1}@media (hover:hover){.frame:hover .accn{opacity:1}}.phase-result .frame:not(.reserved):not(.twin) .accn{animation:2.4s 1.7s backwards accnFlash}@keyframes accnFlash{0%{opacity:0}12%{opacity:1}72%{opacity:1}to{opacity:0}}.accn.link{color:#8d8574;border-bottom:1px solid #0000;margin:-16px -12px;padding:16px 12px;text-decoration:none}@media (hover:hover){.accn.link:hover{color:var(--ink);border-bottom-color:var(--ink)}}.accn.link:focus-visible{outline:2px solid var(--red);outline-offset:2px;color:var(--ink)}.accn.link:active{color:var(--red)}button.frame{text-align:inherit;font:inherit;cursor:pointer;background:0 0;border:0}button.frame:disabled{cursor:default}.reserved .mat{background:#f2eee4;transition:background .5s,padding .8s;box-shadow:inset 0 0 0 1px #18140e1a}.reserved .choose{white-space:nowrap;background:var(--label);border:1px solid var(--hairline);color:var(--ink);font-size:calc(13px * var(--fz,1));min-height:48px;padding:10px 20px;transition:border-color .2s,transform .12s;display:inline-block;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.reserved .choose b{font-weight:500;display:block}.reserved .choose i{font-style:normal;font-size:calc(10.5px * var(--fz,1));color:var(--ink-soft);margin-top:3px;display:block}.reserved:focus-visible{outline:2px solid var(--red);outline-offset:6px}@media (hover:hover){.reserved:not(:disabled):hover .mat{background:#ece7da}.reserved:not(:disabled):hover .choose{border-color:var(--ink)}}.reserved:not(:disabled):active .moulding{transition-duration:.12s;transform:scale(.985)}.drag .reserved .mat{background:#eae3d1;box-shadow:inset 0 0 0 1px #c4342b73}.drag .reserved .moulding{transition-duration:.16s;transform:rotate(.8deg)translateY(-6px);box-shadow:4px 18px 32px -8px #c4342b47}.reserved .reslabel{white-space:nowrap;background:var(--label);border:1px solid var(--hairline);color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.12em;padding:6px 12px;display:inline-block;position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%)}.reserved .wallsize{white-space:nowrap;font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.14em;color:var(--ink-soft);position:absolute;top:calc(100% + 44px);left:50%;transform:translate(-50%)}.vinyl{transition:opacity .45s;position:absolute}.vinyl.off{opacity:0;pointer-events:none;transition-duration:.25s}.vinyl h1{font-family:Fraunces,serif;font-weight:400;font-size:calc(40px * var(--fz,1));letter-spacing:-.015em;color:var(--ink);line-height:1.04}.room.m .vinyl h1{font-size:calc(30px * var(--fz,1));margin-top:4px}.vinyl h1 em{font-style:italic;font-weight:300}.vinyl .sub{font-size:calc(14px * var(--fz,1));color:var(--ink-soft);max-width:330px;margin-top:16px;line-height:1.55}.vinyl .wallsize{font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.14em;color:var(--ink-soft);margin-top:14px}.room.m .vinyl .sub{font-size:calc(12.5px * var(--fz,1));max-width:300px;margin-top:10px}.vinyl .sub.status{font-family:IBM Plex Mono,monospace;font-size:calc(12px * var(--fz,1));letter-spacing:.06em;color:var(--ink)}.busybar{background:var(--hairline);width:200px;height:2px;margin-top:14px;overflow:hidden}.busybar .fill{background:var(--red);height:100%;transition:width .3s}.busybar .fill.ind{width:34%;animation:ind 1.15s var(--ease-wall) infinite alternate}@keyframes ind{0%{transform:translate(-30%)}to{transform:translate(230%)}}.vinyl .act{font-size:calc(13.5px * var(--fz,1));color:var(--ink);margin-top:20px}.vinyl .act .retry{appearance:none;font:inherit;color:inherit;cursor:pointer;border:0;border-bottom:1px solid var(--ink);background:0 0;padding:0 0 2px}.vinyl .act.tap .retry{margin:-4px 0;padding:15px 8px 15px 0;display:inline-block}@media (hover:hover){.vinyl .act .retry:hover{border-bottom-color:var(--red);color:var(--red)}}.vinyl .act .retry:active{color:var(--red)}.vinyl .act .retry:focus-visible{outline:2px solid var(--red);outline-offset:3px}.sampleframe{appearance:none;cursor:pointer;background:0 0;border:0;width:72px;padding:0;position:absolute}.sampleframe .sf-mould{background:linear-gradient(160deg, #2a2620 0%, var(--frame) 45%, #1a1815 100%);transition:transform .18s var(--ease-out), box-shadow .18s var(--ease-out);padding:3px;display:block;box-shadow:1px 2px 5px #18140e2e,3px 12px 26px -6px #18140e4d}.sampleframe .sf-mat{background:var(--label);padding:3px;display:block}.sampleframe .sf-mat img{width:100%;display:block}.sampleframe .sf-cap{text-align:center;white-space:nowrap;font-family:Fraunces,serif;font-style:italic;font-size:calc(13px * var(--fz,1));color:var(--ink);margin-top:7px;display:block}@media (hover:hover) and (pointer:fine){.sampleframe:hover .sf-mould{transform:translateY(-3px);box-shadow:2px 8px 18px -6px #18140e59}.sampleframe:hover .sf-cap{color:var(--red)}}.sampleframe:active .sf-mould{transform:translateY(-1px)}.sampleframe:focus-visible{outline:2px solid var(--red);outline-offset:4px}.vinyl .brandline{font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.18em;color:var(--ink-soft);text-transform:lowercase}.wlabel{background:var(--label);border:1px solid var(--hairline);width:235px;transition:left 1.05s var(--ease-wall), top 1.05s var(--ease-wall);padding:13px 16px;position:absolute}.wlabel .t{font-family:Fraunces,serif;font-size:calc(18px * var(--fz,1));letter-spacing:-.01em;font-weight:500}.wlabel .s{font-size:calc(10.5px * var(--fz,1));letter-spacing:.05em;color:var(--ink-soft);margin-top:3px}.frame.twin{transition-delay:0s}.phase-result .frame.twin{transition-delay:.3s}.phase-result .mark{animation:markIn .28s var(--ease-out) 1.15s backwards}.phase-result .caption{animation:capIn .55s var(--ease-wall) 1.3s backwards}@keyframes markIn{0%{opacity:0;transform:scale(.92)}}@keyframes capIn{0%{opacity:0;transform:translateY(8px)}}.phase-busy .frame.twin{transition-delay:0s}.frame.twin .mat img{animation:.5s twinIn}@keyframes twinIn{0%{opacity:0;filter:saturate(.5)blur(2px)}}.frame.twin .flashring{pointer-events:none;box-shadow:0 0 0 2px var(--red);animation:.9s forwards ringOut;position:absolute;inset:-4px}@keyframes ringOut{0%{opacity:1}to{opacity:0}}.strip-open .frame:not(.reserved):not(.twin):not(.gone){opacity:.32}.strip-open .frame:not(.reserved):not(.twin):not(.gone) img{filter:saturate(.3)brightness(1.14);opacity:.55}.phase-result .frame.under:not(.reserved):not(.twin):not(.gone){opacity:0;pointer-events:none}.mark{z-index:4;background:radial-gradient(120% 120% at 30% 25%, #d8493f 0%, var(--red) 55%, #8f231d 100%);color:#fdf8f0;width:40px;height:40px;font-family:IBM Plex Mono,monospace;font-size:calc(14px * var(--fz,1));opacity:0;transition:opacity .28s var(--ease-out), transform .28s var(--ease-out);border-radius:50%;justify-content:center;align-items:center;font-weight:500;display:flex;position:absolute;transform:scale(.92);box-shadow:inset 0 1px #ffffff47,inset 0 -2px 4px #3c080566,0 3px 10px #18140e59}.mark.on{opacity:1;transform:scale(1)}.frame.twin.droptarget .moulding{box-shadow:0 0 0 2px var(--red), 1px 2px 4px #18140e26, 3px 8px 16px -8px #18140e38}.lightpass{pointer-events:none;z-index:2;mix-blend-mode:soft-light;opacity:0;width:640px;height:640px;animation:lightTravel .9s var(--ease-wall) .3s forwards;background:radial-gradient(circle,#fff4dce6 0%,#fff4dc00 62%);border-radius:50%;position:absolute}@keyframes lightTravel{0%{opacity:0;transform:translate(0)scale(.25)}18%{opacity:1}55%{transform:translate(calc(var(--lx) * .55), calc(var(--ly) * .55)) scale(.9);opacity:.9}to{transform:translate(var(--lx), var(--ly)) scale(1.25);opacity:0}}.caption{opacity:0;transition:opacity .55s ease, transform .55s var(--ease-wall);position:absolute;transform:translateY(8px)}.caption.on{opacity:1;transform:translateY(0)}.caption .cap-brand{font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.18em;color:var(--ink-soft);text-transform:lowercase;margin-bottom:10px}.caption .title{font-family:Fraunces,serif;font-size:calc(24px * var(--fz,1));letter-spacing:-.01em;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:500;display:-webkit-box;overflow:hidden}.caption .who{font-size:calc(13px * var(--fz,1));color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin-top:6px;overflow:hidden}.caption .detail-note{font-family:Fraunces,serif;font-style:italic;font-size:calc(12px * var(--fz,1));color:var(--ink-soft);min-height:1.5em;margin-top:4px}.caption .verdict{font-family:IBM Plex Mono,monospace;font-size:calc(10.5px * var(--fz,1));letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);min-height:2.4em;margin-top:14px}.caption .verdict b{color:var(--red);font-weight:500}.caption .verdict-note{font-family:Fraunces,serif;font-style:italic;font-size:calc(12px * var(--fz,1));color:var(--ink);margin-top:5px}.caption:focus{outline:none}.caption .limited{font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.06em;text-transform:lowercase;color:var(--ink-soft);margin-top:8px}.caption .actions{justify-content:center;gap:30px;display:flex;position:absolute;top:232px;left:0;right:0}.caption .actions button{cursor:pointer;font-family:IBM Plex Mono,monospace;font-size:calc(11px * var(--fz,1));letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);transition:color .25s ease, transform .12s var(--ease-out);background:0 0;border:0;margin:-12px -6px;padding:16px 6px}@media (hover:hover) and (pointer:fine){.caption .actions button:hover{color:var(--ink)}}.caption .actions button:active{color:var(--red);transform:scale(.97)}.caption .actions button:focus-visible{outline:2px solid var(--red);outline-offset:3px}.strip{position:absolute;transform:translate(-50%)}.strip .striplabel{font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.05em;color:#5f584a;margin-bottom:10px}.strip .minis{justify-content:center;gap:14px;display:flex}.cap-fixed{font-family:IBM Plex Mono,monospace;font-size:calc(10px * var(--fz,1));letter-spacing:.18em;color:var(--ink-soft);text-transform:lowercase;position:absolute;top:24px;left:20px}.strip .mini{cursor:pointer;width:58px;animation:miniIn .4s var(--ease-wall) backwards;background:0 0;border:0;padding:8px 0;display:block;position:relative}.strip .mini:nth-child(2){animation-delay:60ms}.strip .mini:nth-child(3){animation-delay:.12s}.strip .mini:nth-child(4){animation-delay:.18s}@keyframes miniIn{0%{opacity:0;transform:translateY(8px)scale(.92)}}.strip .mini img{aspect-ratio:1;object-fit:cover;background:var(--frame);opacity:0;width:100%;transition:opacity .35s ease, transform .18s var(--ease-wall);padding:3px;display:block;box-shadow:1px 2px 5px #18140e33}.strip .mini img.ld{opacity:1}@media (hover:hover) and (pointer:fine){.strip .mini:hover img{transform:translateY(-4px);box-shadow:2px 8px 16px -6px #18140e59}}.strip .mini:active img{transform:translateY(1px)}.strip .mini:focus-visible{outline:2px solid var(--red);outline-offset:3px}.strip .mini span{background:var(--red);color:#fdf8f0;width:20px;height:20px;font-family:IBM Plex Mono,monospace;font-size:calc(8px * var(--fz,1));border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:4px;right:-4px}.dragghost{z-index:20;pointer-events:none;background:linear-gradient(160deg, #2a2620 0%, var(--frame) 45%, #1a1815 100%);width:72px;padding:3px;position:fixed;box-shadow:3px 14px 30px -6px #18140e73}.dragghost img{aspect-ratio:1;object-fit:cover;background:var(--label);width:100%;padding:3px;display:block}@media (prefers-reduced-motion:reduce){.frame,.frame .moulding,.frame .mat,.frame .accn,.mark,.caption,.wlabel,.vinyl,.reserved .mat,.reserved .choose,.strip .mini,.strip .mini img,.frame.twin .mat img{transition-duration:10ms!important;transition-delay:0s!important;animation-duration:10ms!important;animation-delay:0s!important}.busybar .fill.ind{animation:none;transform:translate(100%)}.frame.twin .flashring{opacity:0;animation:none}.phase-idle .frame:not(.reserved){animation:none}.lightpass{opacity:0;animation:none}.phase-result .frame:not(.reserved):not(.twin) .accn,.phase-result .lensrow .lensbtn:first-child{animation:none}}
