:root{--bg: #0d0b09;--bg-elev: #1a1614;--ink: #ede6d3;--ink-muted: #8a8479;--ink-dim: #55504a;--burgundy: #6a1a1a;--burgundy-deep: #3a0e0e;--gold: #c9a961;--gold-bright: #e6c988;--gold-dim: #8a7440;--divider: rgba(201, 169, 97, .15);--card-radius: 4.5% / 3.2%;--card-aspect: 63 / 88;--carousel-card-w: clamp(148px, 24vw, 280px);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-decel: cubic-bezier(.06, .85, .2, 1)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,sans-serif;height:100%;overflow:hidden}body{background:radial-gradient(ellipse at 50% -10%,#1c1512,#0d0b09 60%)}#app{max-width:1080px;margin:0 auto;padding:clamp(.75rem,2vh,2rem) clamp(.75rem,3vw,1.5rem);display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:clamp(.75rem,2vh,1.75rem);height:100dvh;overflow:hidden}.header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding-bottom:clamp(.5rem,1.5vh,1.25rem);border-bottom:1px solid var(--divider)}.header-center{text-align:center;min-width:0}.header-slot{display:flex;align-items:center;gap:.5rem;min-width:0}.header-left{justify-self:start;flex-wrap:wrap}.header-right{justify-self:end;flex-wrap:wrap;justify-content:flex-end}.header h1{font-family:Cinzel,serif;font-weight:600;font-size:clamp(1.5rem,3.5vw,2.5rem);margin:0;letter-spacing:clamp(.2em,.7vw,.35em);color:var(--gold);text-shadow:0 0 30px rgba(201,169,97,.2);line-height:1}.header .subtitle{font-size:clamp(.65rem,.6vw + .4rem,.75rem);color:var(--ink-muted);letter-spacing:.3em;text-transform:uppercase;margin-top:.35rem}.stage{display:grid;place-items:center;min-height:0;min-width:0;position:relative;perspective:1200px;container-type:size;container-name:stage;overflow:hidden}.stage-empty{color:var(--ink-dim);font-style:italic;font-size:.9rem}.card{aspect-ratio:var(--card-aspect);border-radius:var(--card-radius);overflow:hidden;box-shadow:0 20px 40px #00000080,0 0 0 1px #0006;background:#000;position:relative}.card-back{background:#1a0505}.card-face{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover}.card-face-enter{animation:card-face-enter .4s var(--ease-out) both}@keyframes card-face-enter{0%{opacity:0}to{opacity:1}}.carousel{width:100%;max-width:900px;position:relative;overflow:hidden;padding:20px 0;mask-image:linear-gradient(to right,transparent 0,black 12%,black 88%,transparent 100%)}.carousel-track{display:flex;gap:16px;will-change:transform;padding:0 calc(50% - var(--carousel-card-w) / 2)}.carousel-track>.card{flex:0 0 var(--carousel-card-w)}.carousel-highlight{position:absolute;inset:0;pointer-events:none;display:grid;place-items:center}.carousel-highlight:before{content:"";width:calc(var(--carousel-card-w) + 14px);height:calc((var(--carousel-card-w) + 14px) * (88 / 63));border:1px solid var(--gold-dim);border-radius:5%/3.5%;box-shadow:inset 0 0 30px #c9a9611a,0 0 20px #c9a96114;opacity:0;transition:opacity .4s var(--ease-out)}.carousel.spinning .carousel-highlight:before{opacity:1}.reveal{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.4rem,1cqh,1rem);width:100%;height:100%;animation:reveal-enter .6s var(--ease-out) both}.reveal .card{width:min(380px,88cqw,calc(78cqh * 63 / 88))}.reveal-meta{text-align:center;max-width:min(520px,92vw);animation:reveal-meta .8s .3s var(--ease-out) both}.reveal-meta .name{font-family:Cinzel,serif;font-weight:600;font-size:clamp(1.05rem,1.4vw + .6rem,1.4rem);color:var(--gold);letter-spacing:.1em;margin:0}.reveal-meta .type{color:var(--ink-muted);font-size:clamp(.8rem,.7vw + .55rem,.95rem);margin-top:.35rem}.reveal-meta .pt{color:var(--ink);font-size:clamp(.9rem,.7vw + .6rem,1.05rem);margin-top:.5rem;font-weight:600}@keyframes reveal-enter{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes reveal-meta{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.summon-row{display:grid;place-items:center}.summon{font-family:Cinzel,serif;font-weight:600;font-size:clamp(.95rem,1vw + .55rem,1.15rem);letter-spacing:clamp(.15em,.5vw,.25em);color:var(--gold);background:linear-gradient(180deg,#2a1010,#1a0808);border:1px solid var(--gold-dim);border-radius:4px;padding:clamp(.75rem,1.5vh,1rem) clamp(1.5rem,5vw,3rem);cursor:pointer;transition:color .2s,border-color .2s,box-shadow .3s,transform .15s;box-shadow:0 0 #c9a96100}.summon:hover:not(:disabled){color:var(--gold-bright);border-color:var(--gold);box-shadow:0 0 30px #c9a96140}.summon:active:not(:disabled){transform:scale(.985)}.summon:disabled{color:var(--ink-dim);border-color:var(--ink-dim);cursor:default}.summon .x{font-weight:700;color:var(--gold-bright)}.x-selector{display:flex;justify-content:center;flex-wrap:wrap;gap:.5rem}.x-btn{min-width:clamp(2.25rem,5vw,2.75rem);padding:clamp(.4rem,1vw,.55rem) clamp(.5rem,1.5vw,.75rem);background:transparent;border:1px solid var(--ink-dim);border-radius:3px;color:var(--ink-muted);font-family:Cinzel,serif;font-weight:500;font-size:clamp(.85rem,.6vw + .55rem,.95rem);cursor:pointer;transition:all .15s}.x-btn:hover{border-color:var(--gold-dim);color:var(--ink)}.x-btn.active{background:#c9a96114;border-color:var(--gold);color:var(--gold-bright)}.printer-state{display:flex;align-items:center;gap:.4rem;letter-spacing:.15em;text-transform:uppercase;font-size:clamp(.6rem,.4vw + .5rem,.75rem);color:var(--ink-muted)}.dot{width:8px;height:8px;border-radius:50%;background:var(--ink-dim)}.dot.paired{background:#6ab04c;box-shadow:0 0 8px #6ab04c80}.dot.error{background:#d63447;box-shadow:0 0 8px #d6344780}.dot.busy{background:var(--gold);box-shadow:0 0 8px #c9a96199}.pair-btn,.action-btn{background:transparent;border:1px solid var(--ink-dim);color:var(--ink-muted);padding:.35rem .7rem;border-radius:3px;font-family:inherit;font-size:clamp(.7rem,.4vw + .55rem,.8rem);cursor:pointer;transition:all .15s;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.pair-btn:hover,.action-btn:hover:not(:disabled){border-color:var(--gold-dim);color:var(--ink)}.action-btn:disabled{opacity:.4;cursor:default}.attribution{font-size:clamp(.6rem,.4vw + .45rem,.7rem);color:var(--ink-dim);text-align:center;letter-spacing:.1em}.attribution a{color:var(--ink-muted);text-decoration:none}.attribution a:hover{color:var(--gold-dim)}.toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);background:#2a0a0a;border:1px solid #d63447;color:#ffb0b0;padding:.75rem 1.25rem;border-radius:4px;font-size:.85rem;animation:toast-in .3s var(--ease-out)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}@media (max-width: 640px){.printer-state{font-size:0}.summon{width:min(100%,22rem);text-align:center}}@media (max-width: 480px){.header .subtitle{display:none}}@media (max-height: 620px){.reveal-meta{display:none}.reveal .card{width:min(380px,88cqw,calc(94cqh * 63 / 88))}}.dev-panel{margin-top:2rem;padding:1rem 1.25rem;border:1px dashed var(--ink-dim);border-radius:4px;background:#ffffff05;font-family:ui-monospace,monospace;font-size:.85rem;color:var(--ink-muted)}.dev-head{color:var(--gold-dim);letter-spacing:.2em;font-size:.75rem;margin-bottom:.75rem}.dev-controls{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:.5rem}.dev-controls label{display:flex;gap:.5rem;align-items:center}.dev-controls input[type=number]{width:5rem;padding:.35rem .5rem;background:transparent;border:1px solid var(--ink-dim);color:var(--ink);border-radius:3px;font-family:inherit;font-size:.85rem}.dev-hint{font-size:.75rem;color:var(--ink-dim)}
