:root{
  --bg:#06101d;
  --bg2:#09182b;
  --panel:rgba(7,18,34,.84);
  --panel2:rgba(11,25,46,.92);
  --line:rgba(111,216,255,.22);
  --text:#eef7ff;
  --muted:#a9b7d5;
  --cyan:#39e6ff;
  --blue:#35a8ff;
  --gold:#ffc847;
  --orange:#ff9d2e;
  --purple:#b06cff;
  --teal:#29d9b2;
  --danger:#ff5974;
  --shadow:0 22px 80px rgba(0,0,0,.48);
  --radius:18px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  min-height:100dvh;
  overflow:hidden;
  color:var(--text);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:
    radial-gradient(900px 460px at 50% -10%, rgba(57,230,255,.18), transparent 58%),
    radial-gradient(650px 460px at 100% 55%, rgba(176,108,255,.14), transparent 60%),
    radial-gradient(700px 520px at 0% 90%, rgba(255,200,71,.08), transparent 58%),
    #050b16;
  -webkit-font-smoothing:antialiased;
  touch-action:manipulation;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  opacity:.16;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='104' viewBox='0 0 120 104'%3E%3Cg fill='none' stroke='%234ec7ff' stroke-opacity='.28' stroke-width='1'%3E%3Cpath d='M30 1h60l30 52-30 52H30L0 53 30 1Z'/%3E%3C/g%3E%3C/svg%3E");
  background-size:72px 62px;
  mask-image:radial-gradient(circle at center, #000 52%, transparent 100%);
}
button,a{font:inherit}
button{color:inherit}
.app-shell{
  height:100dvh;
  padding:calc(10px + var(--safe-top)) 14px calc(10px + var(--safe-bottom));
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  gap:10px;
  max-width:1700px;
  margin:0 auto;
}
.topbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  min-height:58px;
}
.brand-block{display:flex;align-items:center;gap:12px;min-width:0}
.logo-hex{
  width:44px;height:44px;display:grid;place-items:center;
  color:#07111f;font-weight:1000;font-size:28px;
  background:linear-gradient(135deg,var(--cyan),var(--gold));
  clip-path:polygon(25% 2%,75% 2%,100% 50%,75% 98%,25% 98%,0 50%);
  box-shadow:0 0 30px rgba(57,230,255,.28);
}
.eyebrow,.panel-kicker{
  margin:0;
  color:#8adfff;
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:.72rem;
  font-weight:950;
}
h1{
  margin:0;
  line-height:.95;
  letter-spacing:.02em;
  font-size:clamp(1.45rem,4vw,3.3rem);
  font-weight:1000;
  text-transform:uppercase;
  text-shadow:0 0 22px rgba(57,230,255,.3);
}
h1 span{color:var(--gold);text-shadow:0 0 24px rgba(255,200,71,.28)}
.top-actions{display:flex;align-items:center;gap:9px;flex-shrink:0}
.icon-btn,.primary-btn,.secondary-btn{
  border:1px solid rgba(133,194,255,.24);
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.02));
  border-radius:14px;
  min-height:44px;
  padding:8px 12px;
  cursor:pointer;
  font-weight:950;
  box-shadow:0 10px 24px rgba(0,0,0,.22);
  transition:transform .14s ease, filter .14s ease, border-color .14s ease;
}
.icon-btn:hover,.primary-btn:hover,.secondary-btn:hover{transform:translateY(-1px);filter:brightness(1.08);border-color:rgba(57,230,255,.42)}
.icon-btn:active,.primary-btn:active,.secondary-btn:active{transform:none}
.icon-btn{width:76px;display:grid;place-items:center;gap:1px;color:#e8f6ff}
.icon-btn span{font-size:1.32rem;line-height:1}
.icon-btn small{font-size:.65rem;text-transform:uppercase;color:var(--muted);letter-spacing:.05em}
.primary-btn{background:linear-gradient(135deg,var(--cyan),var(--purple));color:#06101d;border:0;padding:11px 18px}
.secondary-btn{background:rgba(7,18,34,.78);color:var(--text)}
.secondary-btn:disabled,.primary-btn:disabled{opacity:.45;cursor:not-allowed;transform:none;filter:none}
.stats-strip{display:grid;grid-template-columns:1.45fr repeat(3,1fr);gap:10px}
.stat-card,.info-card{
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015)),var(--panel);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}
.stat-card{padding:10px 14px;min-height:62px;display:grid;align-content:center;gap:2px}
.stat-label{color:var(--muted);font-weight:950;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem}
.stat-card strong{font-size:clamp(1.16rem,2.4vw,1.95rem);line-height:1;color:var(--text);font-variant-numeric:tabular-nums}
.score-card strong{font-size:clamp(1.35rem,3vw,2.2rem)}
.combo-card strong{color:var(--gold)}
.game-layout{display:grid;grid-template-columns:minmax(190px,280px) minmax(0,1fr) minmax(210px,320px);gap:12px;min-height:0}
.side-panel{display:grid;gap:12px;min-height:0;align-content:start}
.info-card{padding:14px;overflow:hidden}
.info-card h2{margin:4px 0 8px;font-size:1.12rem;line-height:1.05;text-transform:uppercase;letter-spacing:.02em}
.info-card p{margin:0;color:var(--muted);line-height:1.38}
.ring-icon{
  width:86px;
  height:86px;
  margin:8px auto 12px;
  position:relative;
  display:grid;
  place-items:center;
  filter:drop-shadow(0 0 16px rgba(57,230,255,.22));
}
.ring-icon .ring-core,
.ring-icon .ring-cell{
  position:absolute;
  display:block;
  width:18px;
  height:18px;
  clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);
}
.ring-icon .ring-core{
  width:22px;
  height:22px;
  background:rgba(4,12,24,.88);
  border:1px solid rgba(255,200,71,.34);
  box-shadow:0 0 0 12px rgba(255,200,71,.045), 0 0 24px rgba(255,200,71,.16) inset;
}
.ring-icon .ring-cell{
  background:linear-gradient(135deg,#fff0a5,#ffc847 45%,#39e6ff);
  border:1px solid rgba(255,255,255,.35);
  box-shadow:0 0 14px rgba(255,200,71,.42), 0 0 22px rgba(57,230,255,.18);
}
.ring-icon .c1{transform:translate(0,-29px)}
.ring-icon .c2{transform:translate(25px,-14px)}
.ring-icon .c3{transform:translate(25px,14px)}
.ring-icon .c4{transform:translate(0,29px)}
.ring-icon .c5{transform:translate(-25px,14px)}
.ring-icon .c6{transform:translate(-25px,-14px)}
.event-feed{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px;max-height:170px;overflow:auto}
.event-feed li{display:flex;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid rgba(255,255,255,.07);border-radius:12px;background:rgba(255,255,255,.035)}
.event-feed b{color:var(--gold);white-space:nowrap}.event-feed span{color:var(--muted);text-align:right}
.stage{position:relative;min-height:0;border:1px solid rgba(57,230,255,.18);border-radius:24px;background:radial-gradient(600px 300px at 50% 20%,rgba(57,230,255,.11),transparent 62%),rgba(4,12,24,.54);box-shadow:var(--shadow);overflow:hidden}
#gameCanvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
#gameCanvas.is-dragging{cursor:grabbing}
.mobile-hint{display:none;position:absolute;left:50%;bottom:8px;transform:translateX(-50%);font-size:.76rem;color:rgba(216,237,255,.82);letter-spacing:.08em;text-transform:uppercase;font-weight:950;pointer-events:none;text-align:center;white-space:nowrap;padding:5px 10px;border:1px solid rgba(137,199,255,.16);border-radius:999px;background:rgba(4,12,24,.64);backdrop-filter:blur(6px);box-shadow:0 8px 22px rgba(0,0,0,.22)}
.breakdown{display:grid;gap:6px;margin-top:8px}
.breakdown span,.breakdown div{display:flex;justify-content:space-between;gap:10px;color:var(--muted);border-bottom:1px solid rgba(255,255,255,.05);padding:5px 0}
.breakdown strong{color:var(--gold)}
.pulse-head{display:flex;align-items:center;gap:10px}.pulse-icon{width:50px;height:50px;border-radius:50%;display:grid;place-items:center;font-size:2rem;color:#07111f;background:linear-gradient(135deg,var(--cyan),var(--blue));box-shadow:0 0 26px rgba(57,230,255,.35)}
.pulse-meter{display:flex;gap:5px;margin:12px 0}.pulse-meter span{flex:1;min-width:8px;height:16px;border-radius:5px;background:rgba(255,255,255,.06);border:1px solid rgba(137,220,255,.2)}.pulse-meter span.on{background:linear-gradient(180deg,var(--cyan),var(--blue));box-shadow:0 0 14px rgba(57,230,255,.58)}
.pulse-action{width:100%;margin-top:10px}.tip-card{font-size:.94rem}
.bottom-controls{display:flex;gap:10px;justify-content:center;align-items:center;min-height:48px}.bottom-controls button{min-width:140px}
.modal-card{border:0;padding:0;background:transparent;color:var(--text);max-width:min(520px,calc(100vw - 24px))}.modal-card::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(8px)}.modal-inner{border:1px solid rgba(57,230,255,.28);background:linear-gradient(180deg,rgba(14,30,54,.98),rgba(6,12,24,.98));border-radius:24px;box-shadow:0 32px 100px rgba(0,0,0,.58);padding:22px}.modal-inner h2{margin:.2rem 0 .6rem;font-size:clamp(1.6rem,5vw,2.45rem);line-height:1}.modal-inner p,.modal-inner li{color:var(--muted);line-height:1.42}.modal-inner ul,.modal-inner ol{padding-left:1.3rem}.guide-inner kbd{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);padding:2px 6px;border-radius:6px;color:#fff}.local-scores{display:grid;gap:8px;padding-left:1.2rem}.local-scores li{padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.04);color:var(--muted)}.local-scores strong{color:var(--gold)}.final-score{font-size:clamp(2.4rem,10vw,4rem)!important;color:var(--gold)!important;font-weight:1000;margin:.2rem 0!important;text-shadow:0 0 28px rgba(255,200,71,.35)}.modal-actions{display:flex;gap:10px;flex-wrap:wrap}.prototype-note{font-size:.82rem;color:rgba(169,183,213,.75)!important;margin-top:14px!important}
@media (max-width:1100px){.game-layout{grid-template-columns:minmax(0,1fr) minmax(210px,280px)}.left-panel{display:none}.stage{min-height:0}.stats-strip{grid-template-columns:1.5fr repeat(2,1fr)}.compact-hide{display:none}}
@media (orientation:portrait),(max-width:760px){body{overflow:hidden}.pulse-mobile{display:inline-flex!important}.app-shell{padding:calc(8px + var(--safe-top)) 8px calc(8px + var(--safe-bottom));grid-template-rows:auto auto minmax(0,1fr) auto;gap:7px}.topbar{min-height:44px}.logo-hex{width:34px;height:34px;font-size:22px}.eyebrow{font-size:.58rem}h1{font-size:1.22rem}.top-actions{gap:5px}.icon-btn{width:48px;min-height:38px;border-radius:11px;padding:5px}.icon-btn span{font-size:1rem}.icon-btn small{font-size:.5rem}.stats-strip{grid-template-columns:1.25fr 1fr 1fr;gap:7px}.stat-card{min-height:50px;padding:8px 10px;border-radius:14px}.stat-label{font-size:.6rem}.stat-card strong{font-size:1rem}.score-card strong{font-size:1.22rem}.game-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr);gap:0}.right-panel{display:none}.stage{border-radius:18px;min-height:0}.bottom-controls{min-height:42px;gap:6px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}.bottom-controls button{min-width:0;width:100%;padding:8px 5px;border-radius:12px;font-size:.76rem}.mobile-hint{display:block;bottom:5px;font-size:.58rem;width:min(96%,520px);white-space:normal;line-height:1.25}.modal-inner{padding:18px;border-radius:20px}.desktop-only{display:none}}
@media (max-width:420px){.brand-block{gap:8px}.topbar{gap:6px}.top-actions .icon-btn:nth-child(2){display:none}.stats-strip{grid-template-columns:1.35fr 1fr 1fr}.stat-card{padding:7px 8px}.stat-label{letter-spacing:.08em}.bottom-controls button{font-size:.7rem;padding-inline:4px}.modal-inner{padding:16px}.modal-actions{display:grid}.modal-actions button{width:100%}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

.goal-card h2{color:var(--gold)}
.sound-off{border-color:rgba(255,89,116,.35)!important;color:#ffc8d1!important}
.pulse-mobile{display:none}
.stage.pulse-targeting{box-shadow:0 0 0 2px rgba(57,230,255,.28), var(--shadow)}

/* site-ready modal action polish */
.modal-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.modal-actions .secondary-btn,.modal-actions .primary-btn{min-width:160px}
