:root{
  --ink:#0B0E14; --surface:#12161F; --line:#232A38;
  --signal:#FF2E63; --pulse:#2DE2C6; --paper:#EAF0FF; --muted:#8A93A6;
  --grad: linear-gradient(135deg,#FF2E63 0%,#FF6B3D 100%);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  background:var(--ink); color:var(--paper); overflow:hidden;
  font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
}
#ar-root{position:fixed;inset:0;z-index:0}
#ar-root video,#ar-root canvas{position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:cover}

.layer{
  position:fixed;inset:0;z-index:5;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;padding:28px;text-align:center;
}
#gate,#error,#result{background:
  radial-gradient(120% 80% at 50% 0%,rgba(255,46,99,.16),transparent 60%),
  var(--ink)}

.brand{
  font-family:"Space Grotesk",system-ui,sans-serif;font-weight:700;letter-spacing:.34em;
  font-size:13px;color:var(--muted);text-transform:uppercase
}
h1{font-family:"Space Grotesk",system-ui,sans-serif;font-weight:600;font-size:clamp(26px,7vw,40px);line-height:1.05;max-width:14ch}
.muted{color:var(--muted)}
.small{font-size:12px}
.mono{font-family:"Space Mono",ui-monospace,monospace}

/* scan reticle — the signature device */
.reticle{position:relative;width:128px;height:128px;margin:6px 0}
.reticle span{position:absolute;width:26px;height:26px;border:2px solid var(--signal)}
.reticle span:nth-child(1){top:0;left:0;border-right:0;border-bottom:0}
.reticle span:nth-child(2){top:0;right:0;border-left:0;border-bottom:0}
.reticle span:nth-child(3){bottom:0;left:0;border-right:0;border-top:0}
.reticle span:nth-child(4){bottom:0;right:0;border-left:0;border-top:0}
.reticle::after{
  content:"";position:absolute;left:6px;right:6px;height:2px;top:0;
  background:linear-gradient(90deg,transparent,var(--pulse),transparent);
  animation:scan 2.1s ease-in-out infinite
}
@keyframes scan{0%{top:6px;opacity:0}15%{opacity:1}85%{opacity:1}100%{top:118px;opacity:0}}

.cta{
  background:var(--grad);color:#fff;border:0;border-radius:999px;
  font-family:"Space Grotesk",system-ui,sans-serif;font-weight:600;font-size:17px;
  padding:16px 30px;cursor:pointer;box-shadow:0 10px 30px rgba(255,46,99,.35);
}
.cta:active{transform:scale(.97)}
.pill{
  background:var(--surface);color:var(--paper);border:1px solid var(--line);
  border-radius:999px;padding:11px 18px;font-size:14px;font-weight:600;cursor:pointer
}
.pill.ghost{background:transparent}
.hint{font-size:13px;margin-top:2px}

/* HUD */
#hud{justify-content:space-between;background:transparent;pointer-events:none}
#hud button{pointer-events:auto}
.hud-top{width:100%;display:flex;align-items:center;justify-content:space-between;
  padding-top:env(safe-area-inset-top)}
.live{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;letter-spacing:.12em;
  background:rgba(11,14,20,.55);backdrop-filter:blur(8px);padding:6px 12px;border-radius:999px}
.live i{width:8px;height:8px;border-radius:50%;background:var(--signal);animation:beat 1.1s infinite}
@keyframes beat{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.55}}
#hud-name{font-size:12px;color:var(--paper);background:rgba(11,14,20,.55);
  backdrop-filter:blur(8px);padding:6px 12px;border-radius:999px}
.scan-hint{font-size:13px;color:var(--paper);background:rgba(11,14,20,.5);
  padding:8px 14px;border-radius:12px;backdrop-filter:blur(8px);max-width:80%}
.scan-hint:empty{display:none}
.hud-bottom{width:100%;display:flex;align-items:center;justify-content:center;gap:16px;
  padding-bottom:calc(18px + env(safe-area-inset-bottom))}
.shutter{width:74px;height:74px;border-radius:50%;border:4px solid #fff;background:transparent;cursor:pointer;display:grid;place-items:center}
.shutter span{width:56px;height:56px;border-radius:50%;background:#fff;transition:transform .1s}
.shutter:active span{transform:scale(.82)}

#result img{max-width:88%;max-height:62vh;border-radius:18px;border:1px solid var(--line)}
.result-actions{display:flex;gap:12px}

@media (prefers-reduced-motion: reduce){
  .reticle::after,.live i{animation:none}
}

/* Gauge Me overlay */
.panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:28px}
.gauge-h{font-family:"Space Grotesk",sans-serif;font-size:1.5rem;max-width:18ch;color:var(--paper)}
.gauge-num{font-size:2.4rem;font-family:"Space Mono",monospace;color:var(--pulse)}
.gauge-num .muted{font-size:1.1rem;margin-left:4px}
.gauge-range{width:min(80vw,360px);accent-color:var(--signal);height:28px}
.gauge-result{font-family:"Space Grotesk",sans-serif;font-size:1.2rem;color:var(--signal)}
#sound{font-size:1rem;padding:4px 10px}

/* On-screen fatal error text — readable on a dark phone screen */
#err-msg{color:#fff;font-size:1.05rem;line-height:1.45;max-width:90%;word-break:break-word}

/* .layer sets display:flex, which overrides the hidden attribute's default
   display:none — restore it so hidden panels (#error, #hud, …) stay hidden. */
.layer[hidden]{display:none}
