:root{--paper:#f2e8d5;--paper2:#e8dac0;--ink:#241812;--oxblood:#6b1f1a;--brass:#b8862b;--brass2:#d9a94a;--line:#cdb994;--r:14px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 "Avenir Next",Avenir,"Helvetica Neue",system-ui,sans-serif;overflow-x:hidden;
 background-image:radial-gradient(circle at 20% 0,#f8f0df 0,transparent 55%),repeating-linear-gradient(90deg,transparent 0 38px,rgba(107,31,26,.035) 38px 40px)}
h1,h2,h3,.brand,.empty-t,.pro-t{font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px clamp(16px,4vw,48px);border-bottom:2px solid var(--ink);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.25rem;color:var(--ink);text-decoration:none;letter-spacing:.01em}
.mk{width:38px;height:22px;display:inline-block;color:var(--oxblood)}.mk svg{width:100%;height:100%;fill:currentColor}
.privacy{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:#6b5a48}
main{max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,48px) 48px}
.intro{padding:clamp(24px,5vw,56px) 0 clamp(18px,3vw,32px);max-width:900px}
.eyebrow{margin:0 0 8px;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--oxblood);font-weight:700}
h1{margin:0;max-width:14ch;font-size:clamp(2.2rem,6.5vw,4.4rem);line-height:1;letter-spacing:-.02em;font-weight:800}
.lede{margin:16px 0 0;font-size:1.08rem;max-width:56ch;color:#4a3b2e}
.room{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(16px,3vw,40px);align-items:start}
.stage{position:relative;background:var(--paper2);border:2px solid var(--ink);border-radius:var(--r);box-shadow:8px 8px 0 var(--oxblood);overflow:hidden;min-height:340px;display:grid;place-items:center}
#view{display:none;max-width:100%;max-height:78vh;height:auto;width:auto;touch-action:none;cursor:grab}
.stage.has #view{display:block}.stage.has .empty{display:none}
.empty{text-align:center;padding:32px 20px;display:grid;gap:10px;justify-items:center}
.frame{width:110px;color:var(--oxblood)}
.empty-t{margin:0;font-size:1.6rem;font-weight:700}
.empty-b{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.status{position:absolute;left:10px;bottom:10px;max-width:calc(100% - 20px);background:var(--ink);color:var(--paper);font-size:.8rem;padding:5px 10px;border-radius:99px}
.status:empty{display:none}
.btn{font:inherit;font-weight:700;border:2px solid var(--ink);background:var(--paper);color:var(--ink);padding:11px 18px;border-radius:99px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;transition:transform .1s,box-shadow .1s;box-shadow:3px 3px 0 var(--ink)}
.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}
.btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}
.btn.primary{background:var(--oxblood);color:#fff4e0}
.btn.gold{background:var(--brass2)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.linkish{background:none;border:0;font:inherit;font-size:.88rem;color:var(--oxblood);text-decoration:underline;cursor:pointer;padding:8px 0;min-height:36px}
.panel{display:grid;gap:18px}
.block h2{margin:0 0 8px;font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;font-family:inherit;color:#6b5a48}
.styles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.sty{position:relative;border:2px solid var(--line);background:#fbf4e4;border-radius:10px;padding:6px 2px 4px;cursor:pointer;font:inherit;font-size:.68rem;color:var(--ink);display:grid;justify-items:center;gap:2px;min-width:0}
.sty canvas{width:100%;height:30px;object-fit:contain}
.sty.lock span{max-width:70%;justify-self:start;margin-left:4px}.sty span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.sty[aria-selected=true]{border-color:var(--ink);background:#fff;box-shadow:2px 2px 0 var(--oxblood)}
.sty.lock::after{content:"PRO";position:absolute;bottom:3px;right:4px;background:#fbf4e4;padding:0 2px;font-size:.52rem;font-weight:800;letter-spacing:.06em;color:var(--brass)}
.swatches{display:flex;gap:10px;flex-wrap:wrap}
.sw{width:36px;height:36px;border-radius:50%;border:2px solid var(--paper);box-shadow:0 0 0 2px var(--line);cursor:pointer;padding:0}
.sw[aria-checked=true]{box-shadow:0 0 0 3px var(--ink)}
.sliders{display:grid;gap:6px}
.sliders label{display:grid;grid-template-columns:56px 1fr;align-items:center;font-size:.9rem;font-weight:600}
input[type=range]{width:100%;accent-color:var(--oxblood);min-height:32px}
.actions{display:flex;gap:10px;flex-wrap:wrap}
.tag{background:var(--brass2);color:var(--ink);font-size:.62rem;padding:2px 6px;border-radius:6px;letter-spacing:.08em;text-transform:uppercase}
.pro{border:2px dashed var(--brass);border-radius:var(--r);padding:16px 18px;background:rgba(217,169,74,.12)}
.pro-t{margin:0 0 6px;font-size:1.2rem;font-weight:700}.pro-t span{font-size:.8rem;font-weight:400;font-family:inherit}
.pro ul{margin:0 0 14px;padding-left:18px;font-size:.92rem}
.pro.on .btn.gold,.pro.on #paid{display:none}
.pro.on .pro-t::after{content:" — unlocked ✓";font-size:.85rem;color:var(--oxblood)}
dialog{border:2px solid var(--ink);border-radius:var(--r);background:var(--paper);max-width:min(94vw,900px);padding:18px;box-shadow:8px 8px 0 var(--oxblood)}
dialog::backdrop{background:rgba(36,24,18,.6)}
dialog h3{margin:0 0 10px}dialog canvas{max-width:100%;max-height:68vh;width:auto;height:auto;margin-inline:auto;display:block;margin-bottom:12px}
.x{position:absolute;right:10px;top:6px;font-size:1.6rem;background:none;border:0;cursor:pointer}
footer{border-top:2px solid var(--ink);padding:18px clamp(16px,4vw,48px);font-size:.8rem;color:#6b5a48}
@media (max-width:860px){.room{grid-template-columns:minmax(0,1fr)}.stage{box-shadow:5px 5px 0 var(--oxblood)}.styles{grid-template-columns:repeat(4,1fr)}}
