:root{
  --accent:#ff0033;
  --accent2:#ff5a00;
  --bg:#0b0b0d;
  --ink:#ffffff;
  --muted:rgba(255,255,255,.62);
  --panel:rgba(255,255,255,.06);
  --panel-brd:rgba(255,255,255,.14);
  --rail-h: 128px;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:"Archivo",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  -webkit-user-select:none;user-select:none;
  touch-action:none;
}

/* Portrait-booth stage, centred; works on any screen */
.stage-wrap{
  position:fixed;inset:0;
  display:flex;align-items:center;justify-content:center;
}

.screen{
  position:absolute;inset:0;
  display:none;flex-direction:column;
  align-items:center;justify-content:center;
  padding:max(4vh,28px) 24px;
  animation:fade .45s ease both;
}
.screen.is-active{display:flex}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.is-hidden{display:none !important}

/* ---------------- buttons ---------------- */
.btn{
  font-family:inherit;font-weight:800;letter-spacing:.04em;
  border:0;border-radius:999px;cursor:pointer;
  display:inline-flex;align-items:center;gap:12px;
  padding:20px 40px;font-size:22px;color:#fff;
  background:var(--panel);border:1px solid var(--panel-brd);
  transition:transform .12s ease, filter .2s ease;
}
.btn:active{transform:scale(.96)}
.btn--primary{
  background:linear-gradient(120deg,var(--accent),var(--accent2));
  border-color:transparent;box-shadow:0 12px 40px -12px var(--accent);
}
.btn--ghost{background:rgba(255,255,255,.08)}
.btn__dot{width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 0 0 6px rgba(255,255,255,.25)}
.btn--pulse{animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 12px 40px -12px var(--accent)}50%{box-shadow:0 12px 60px -6px var(--accent)}}

/* ================= ATTRACT ================= */
.screen--attract{overflow:hidden}
.attract-inner{position:relative;z-index:2;text-align:center;max-width:820px}
.eyebrow{
  text-transform:uppercase;letter-spacing:.35em;font-weight:600;
  color:var(--accent);margin:0 0 18px;font-size:clamp(13px,2vw,18px)
}
.attract-title{margin:0;line-height:.86;text-transform:uppercase}
.attract-title__lead{display:block;font-weight:900;font-size:clamp(64px,14vw,180px);letter-spacing:-.02em}
.attract-title__sub{display:block;font-weight:800;font-size:clamp(28px,6vw,74px);letter-spacing:.02em;color:var(--muted)}
.attract-desc{max-width:520px;margin:26px auto 34px;color:var(--muted);font-size:clamp(15px,2.4vw,20px);line-height:1.5}
.brand-line{margin-top:26px;font-family:"Caveat",cursive;font-size:clamp(26px,5vw,44px);color:var(--accent)}
.brand-logo{
  position:absolute;left:28px;bottom:24px;z-index:2;
  font-weight:900;font-size:22px;letter-spacing:.02em;opacity:.9
}

/* hand-drawn animated scribbles behind title */
.scribble-bg{position:absolute;inset:0;z-index:1;opacity:.5;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(255,0,51,.22), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(255,90,0,.18), transparent 60%);
}
.scribble-bg::before,.scribble-bg::after{
  content:"";position:absolute;border-radius:50%;
  border:3px solid rgba(255,255,255,.10);
}
.scribble-bg::before{width:46vmin;height:46vmin;right:8vw;top:12vh;transform:rotate(18deg);
  border-style:dashed;animation:spin 40s linear infinite}
.scribble-bg::after{width:26vmin;height:26vmin;left:6vw;bottom:8vh;border-style:dotted;
  animation:spin 30s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}

/* ================= LOADING ================= */
.loader{width:64px;height:64px;border-radius:50%;
  border:5px solid rgba(255,255,255,.15);border-top-color:var(--accent);
  animation:spin 1s linear infinite}
.loading-text{margin-top:22px;color:var(--muted);font-size:18px}
.screen--loading .btn{margin-top:22px}

/* ================= STUDIO ================= */
.screen--studio{padding:0;justify-content:flex-start}
.stage{
  position:relative;width:100%;height:calc(100% - var(--rail-h));
  background:#000;overflow:hidden;display:flex;
}
#camera{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}
#view,#draw{position:absolute;inset:0;width:100%;height:100%;display:block}
#draw{touch-action:none}

.stage-topbar{
  position:absolute;top:0;left:0;right:0;z-index:5;
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 20px;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.5),transparent);
}
.hint{
  background:rgba(0,0,0,.45);backdrop-filter:blur(6px);
  padding:10px 16px;border-radius:999px;font-size:15px;color:#fff;
  border:1px solid rgba(255,255,255,.18);
  animation:fade .6s ease both;
}
.rec-pill{
  display:flex;align-items:center;gap:10px;font-weight:800;
  background:rgba(0,0,0,.55);padding:10px 16px;border-radius:999px;
  border:1px solid rgba(255,255,255,.2);font-variant-numeric:tabular-nums
}
.rec-pill__dot{width:12px;height:12px;border-radius:50%;background:var(--accent);animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}

.countdown{
  position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.35);
}
.countdown span{
  font-size:min(46vh,46vw);font-weight:900;color:#fff;
  text-shadow:0 10px 60px rgba(0,0,0,.6);
  animation:pop .95s ease both;
}
@keyframes pop{0%{transform:scale(.4);opacity:0}30%{opacity:1}100%{transform:scale(1.25);opacity:0}}

/* tool rail */
.toolrail{
  height:var(--rail-h);width:100%;
  display:flex;align-items:center;gap:18px;
  padding:0 22px;background:#111114;border-top:1px solid var(--panel-brd);
}
.swatches{display:flex;gap:12px;flex-wrap:nowrap;overflow-x:auto;flex:1}
.swatch{
  width:46px;height:46px;flex:0 0 auto;border-radius:50%;
  border:3px solid rgba(255,255,255,.25);cursor:pointer;transition:transform .12s ease;
}
.swatch:active{transform:scale(.9)}
.swatch.is-active{border-color:#fff;transform:scale(1.12);box-shadow:0 0 0 4px rgba(255,255,255,.18)}
.tool-group{display:flex;gap:10px}
.tool{
  width:56px;height:56px;border-radius:16px;font-size:22px;color:#fff;cursor:pointer;
  background:var(--panel);border:1px solid var(--panel-brd);
  display:grid;place-items:center;transition:transform .12s ease,background .2s
}
.tool:active{transform:scale(.92)}
.tool.is-active{background:var(--accent);border-color:transparent}
.tool__brush{width:22px;height:22px;border-radius:50%;background:#fff}
.btn--rec{
  background:linear-gradient(120deg,var(--accent),var(--accent2));
  padding:20px 30px;font-size:20px;flex:0 0 auto;
  box-shadow:0 12px 34px -14px var(--accent)
}
.btn__reccircle{width:16px;height:16px;border-radius:50%;background:#fff}

/* ================= PREVIEW ================= */
.preview-title{font-size:clamp(28px,6vw,52px);font-weight:900;margin:0 0 6px}
.preview-video-wrap{
  width:min(92vw,540px);aspect-ratio:9/16;max-height:64vh;
  background:#000;border-radius:22px;overflow:hidden;
  border:1px solid var(--panel-brd);box-shadow:0 30px 80px -30px #000
}
#result{width:100%;height:100%;object-fit:cover}
.preview-actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:26px}
.preview-note{margin-top:14px;color:var(--muted);font-size:14px;min-height:20px}

/* size popover */
.size-pop{
  position:fixed;bottom:calc(var(--rail-h) + 16px);left:50%;transform:translateX(-50%);
  background:#17171b;border:1px solid var(--panel-brd);border-radius:16px;
  padding:16px 20px;z-index:20;box-shadow:0 20px 60px -20px #000
}
.size-pop input{width:220px}

/* landscape desktop: keep booth portrait-ish but usable */
@media (min-aspect-ratio:1/1){
  .screen--studio{flex-direction:row;padding:0}
  .stage{height:100%;width:calc(100% - 320px)}
  .toolrail{
    height:100%;width:320px;flex-direction:column;
    align-items:stretch;border-top:0;border-left:1px solid var(--panel-brd);
    padding:22px;gap:22px;justify-content:flex-start
  }
  .swatches{flex-wrap:wrap;overflow:visible;flex:0 0 auto}
  .tool-group{flex-wrap:wrap}
  .btn--rec{margin-top:auto;justify-content:center}
  .size-pop{bottom:auto;top:50%;left:auto;right:340px;transform:translateY(-50%)}
}
