/* ============================================================
   SHARDFALL — faceted crystal UI
   Palette: twilight indigo field, azure (you) vs ember (enemy),
   shard-gold resource. Display: Cinzel. UI: Rajdhani.
   Signature: every panel & button is a cut gem (clip-path facets).
   ============================================================ */
:root{
  --ink:#0c122b;
  --panel:rgba(13,20,44,.86);
  --panel-2:rgba(19,28,60,.92);
  --line:rgba(126,180,255,.28);
  --azure:#5fd9ff;
  --azure-dim:#2e7fae;
  --ember:#ff6b47;
  --gold:#ffd66b;
  --text:#e9f0ff;
  --muted:#8fa3c8;
  --danger:#ff5566;
  --facet:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
  --shard:polygon(50% 0,100% 26%,88% 100%,12% 100%,0 26%);
  font-size:16px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{width:100%;height:100%;overflow:hidden;background:var(--ink)}
body{
  font-family:"Rajdhani","Segoe UI",system-ui,sans-serif;
  color:var(--text);
  user-select:none;-webkit-user-select:none;
  touch-action:none;
}
h1,h2,h3,.display{font-family:"Cinzel",Georgia,serif;letter-spacing:.06em}
button{font-family:inherit;color:inherit;background:none;border:none;cursor:pointer}
canvas#scene{position:fixed;inset:0;display:block}

/* ---------- layers ---------- */
#bars{position:fixed;inset:0;pointer-events:none;z-index:5;overflow:hidden}
#hud{position:fixed;inset:0;pointer-events:none;z-index:10}
#menus{position:fixed;inset:0;z-index:20;pointer-events:none}
#fx-flash{position:fixed;inset:0;pointer-events:none;background:#fff;opacity:0;z-index:15;transition:opacity .5s}

/* ---------- world health bars ---------- */
.wbar{position:absolute;width:44px;height:5px;background:rgba(0,0,0,.55);
  transform:translate(-50%,-100%);border:1px solid rgba(0,0,0,.6)}
.wbar i{display:block;height:100%;background:var(--azure);transition:width .12s}
.wbar.enemy i{background:var(--ember)}
.wbar.big{width:70px;height:7px}

/* ---------- HUD ---------- */
.hud-top{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;
  justify-content:space-between;padding:10px 12px;gap:10px}
.hud-bottom{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:flex-end;
  justify-content:center;gap:8px;padding:10px 12px;flex-wrap:wrap}
.hud-top,.hud-bottom{pointer-events:none}
.hud button,.hud .panel,.hud canvas,.hud .toggle,#joy{pointer-events:auto}
.panel{
  background:linear-gradient(160deg,var(--panel-2),var(--panel));
  clip-path:var(--facet);
  padding:10px 14px;
  box-shadow:0 0 0 1px var(--line) inset;
  pointer-events:auto;
}

/* resources */
#res-panel{display:flex;gap:16px;align-items:center;min-height:52px}
.res{display:flex;align-items:center;gap:7px;font-size:1.25rem;font-weight:600}
.res .gem{width:15px;height:19px;clip-path:var(--shard);background:linear-gradient(180deg,#fff2c8,var(--gold) 55%,#a87b1e)}
.res.pop .gem{background:linear-gradient(180deg,#d8f6ff,var(--azure) 55%,#1e5f8a)}
.res small{color:var(--muted);font-size:.72rem;display:block;line-height:.9;font-weight:500;letter-spacing:.12em}

/* core health */
#cores{display:flex;flex-direction:column;gap:6px;min-width:min(340px,42vw)}
.corebar{display:flex;align-items:center;gap:8px;font-size:.78rem;letter-spacing:.1em}
.corebar .track{flex:1;height:12px;background:rgba(0,0,0,.5);clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);box-shadow:0 0 0 1px var(--line) inset}
.corebar .track i{display:block;height:100%;background:linear-gradient(90deg,#2e7fae,var(--azure));transition:width .2s}
.corebar.enemy .track i{background:linear-gradient(90deg,#8a2f1a,var(--ember))}
.corebar b{width:34px;text-align:right;font-size:.85rem}

/* right cluster */
#hud-right{display:flex;flex-direction:column;gap:8px;align-items:flex-end}
#minimap{width:190px;height:64px;display:block;background:rgba(6,10,26,.85);
  clip-path:var(--facet);box-shadow:0 0 0 1px var(--line) inset;pointer-events:auto;cursor:pointer}
#hud-right .row{display:flex;gap:8px}
.icon-btn{
  width:44px;height:44px;display:grid;place-items:center;font-size:1.15rem;
  background:linear-gradient(160deg,var(--panel-2),var(--panel));
  clip-path:var(--facet);box-shadow:0 0 0 1px var(--line) inset;color:var(--text);
}
.icon-btn:active{transform:scale(.94)}

/* wave HUD (survival) */
#wave-hud{position:absolute;top:86px;left:50%;transform:translateX(-50%);text-align:center;display:none}
#wave-hud .display{font-size:1.05rem;color:var(--gold)}
#wave-hud small{color:var(--muted);letter-spacing:.15em}

/* ---------- train buttons ---------- */
#train-row{display:flex;gap:8px;align-items:flex-end}
.train{
  position:relative;width:74px;padding:8px 4px 6px;text-align:center;
  clip-path:var(--shard);
  background:linear-gradient(180deg,rgba(48,70,120,.95),rgba(16,24,50,.95));
  box-shadow:0 0 0 1px var(--line) inset;
}
.train .glyph{font-size:1.5rem;line-height:1.5;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}
.train .nm{font-size:.68rem;letter-spacing:.08em;color:var(--text);font-weight:600}
.train .cost{font-size:.72rem;color:var(--gold);font-weight:700}
.train .key{position:absolute;top:22px;left:10px;font-size:.6rem;color:var(--muted)}
.train:disabled{filter:grayscale(.8) brightness(.6)}
.train .cool{position:absolute;inset:0;background:rgba(8,12,28,.75);transform-origin:bottom;transform:scaleY(0);pointer-events:none}
.train.locked::after{content:"✕";position:absolute;inset:0;display:grid;place-items:center;font-size:1.6rem;color:var(--danger);background:rgba(8,12,28,.6)}
#queue{display:flex;gap:4px;position:absolute;bottom:104px;left:50%;transform:translateX(-50%)}
#queue span{width:26px;height:26px;display:grid;place-items:center;font-size:.95rem;
  background:var(--panel);clip-path:var(--shard);box-shadow:0 0 0 1px var(--line) inset}

/* stances / small controls */
.stack{display:flex;flex-direction:column;gap:8px}
.toggle{display:flex;clip-path:var(--facet);box-shadow:0 0 0 1px var(--line) inset;overflow:hidden}
.toggle button{padding:9px 12px;font-size:.78rem;letter-spacing:.1em;font-weight:700;color:var(--muted);background:var(--panel)}
.toggle button.on{background:linear-gradient(160deg,#1d4d74,#153a5c);color:#dff5ff}

/* ---------- selected unit / manual control ---------- */
#ctl-hint{position:absolute;bottom:118px;left:50%;transform:translateX(-50%);
  font-size:.8rem;letter-spacing:.12em;color:var(--azure);display:none;text-align:center;pointer-events:none}
#joy{position:absolute;left:26px;bottom:120px;width:118px;height:118px;border-radius:50%;
  background:radial-gradient(circle,rgba(95,217,255,.08),rgba(95,217,255,.02));
  box-shadow:0 0 0 1px var(--line) inset;display:none}
#joy .nub{position:absolute;left:50%;top:50%;width:46px;height:46px;border-radius:50%;
  transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#8fe6ff,#1d4d74)}
#atk-btn{position:absolute;right:26px;bottom:132px;width:74px;height:74px;border-radius:50%;display:none;
  background:radial-gradient(circle at 35% 30%,#ff9d7d,#8a2f1a);color:#fff;font-weight:800;letter-spacing:.1em;
  box-shadow:0 0 18px rgba(255,107,71,.4)}
#release-btn{position:absolute;right:44px;bottom:222px;display:none;padding:8px 14px;font-size:.75rem;
  letter-spacing:.12em;background:var(--panel);clip-path:var(--facet);box-shadow:0 0 0 1px var(--line) inset}

/* ---------- generic menu overlay ---------- */
.overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(5,8,20,.62);backdrop-filter:blur(6px)}
.overlay.show{display:flex;pointer-events:auto}
.sheet{
  width:min(560px,92vw);max-height:88vh;overflow-y:auto;padding:26px 28px 24px;
  background:linear-gradient(165deg,rgba(24,34,70,.97),rgba(11,16,36,.97));
  clip-path:polygon(26px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 26px),calc(100% - 26px) 100%,8px 100%,0 calc(100% - 8px),0 26px);
  box-shadow:0 0 0 1px var(--line) inset,0 30px 60px rgba(0,0,0,.5);
  text-align:center;pointer-events:auto;
}
.sheet h2{font-size:1.5rem;margin-bottom:4px;color:#f2f7ff}
.sheet .sub{color:var(--muted);font-size:.86rem;margin-bottom:18px;letter-spacing:.06em}
.btn{
  display:block;width:100%;margin:9px 0;padding:13px 16px;font-size:1rem;font-weight:700;letter-spacing:.14em;
  background:linear-gradient(160deg,#1d4d74,#12314b);clip-path:var(--facet);
  box-shadow:0 0 0 1px var(--line) inset;color:#e7f6ff;text-transform:uppercase;
}
.btn:hover{filter:brightness(1.18)}
.btn.ghost{background:var(--panel);color:var(--muted)}
.btn.gold{background:linear-gradient(160deg,#8a6a1d,#5c4512);color:#ffefc2}
.btn:disabled{filter:grayscale(.9) brightness(.55);cursor:default}
.row2{display:flex;gap:9px}.row2 .btn{flex:1}

/* title */
#menu-main .logo{width:64px;height:84px;margin:0 auto 10px;clip-path:var(--shard);
  background:linear-gradient(200deg,#d8f6ff,var(--azure) 45%,#123a5c 90%);
  box-shadow:0 0 34px rgba(95,217,255,.55);animation:hover 4s ease-in-out infinite}
@keyframes hover{50%{transform:translateY(-7px)}}
#menu-main h1{font-size:2.3rem;background:linear-gradient(180deg,#fff,#9adfff);
  -webkit-background-clip:text;background-clip:text;color:transparent}
#menu-main .tag{color:var(--muted);letter-spacing:.32em;font-size:.7rem;margin-bottom:20px}

/* level select */
#level-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0 6px}
.lvl{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  clip-path:var(--shard);background:linear-gradient(180deg,#28457a,#101c3c);
  box-shadow:0 0 0 1px var(--line) inset;font-weight:800;font-size:1.25rem}
.lvl small{font-size:.58rem;color:var(--muted);letter-spacing:.08em;font-weight:600}
.lvl.done{background:linear-gradient(180deg,#1d6a52,#0d2c22)}
.lvl.locked{filter:grayscale(1) brightness(.45)}

/* difficulty pick */
.diff-row{display:flex;gap:9px;margin:12px 0}
.diff-row .btn{margin:0}
.diff-row .btn.on{outline:2px solid var(--azure);outline-offset:-2px;filter:brightness(1.3)}

/* upgrades */
.up{display:flex;align-items:center;gap:12px;margin:10px 0;padding:10px 12px;text-align:left;
  background:var(--panel);clip-path:var(--facet);box-shadow:0 0 0 1px var(--line) inset}
.up .glyph{font-size:1.5rem}
.up .info{flex:1}
.up .info b{display:block;font-size:.95rem;letter-spacing:.06em}
.up .info small{color:var(--muted)}
.up .pips{display:flex;gap:4px;margin-top:4px}
.up .pips i{width:16px;height:8px;background:rgba(255,255,255,.12);clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%)}
.up .pips i.on{background:var(--azure)}
.up .buy{padding:9px 12px;font-weight:800;color:var(--gold);background:rgba(255,214,107,.1);
  clip-path:var(--facet);box-shadow:0 0 0 1px rgba(255,214,107,.35) inset;white-space:nowrap}
.up .buy:disabled{filter:grayscale(1) brightness(.6)}

/* settings */
.set-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:13px 0;font-size:.95rem}
.set-row input[type=range]{flex:1;accent-color:var(--azure)}
.help{color:var(--muted);font-size:.8rem;line-height:1.55;text-align:left;margin-top:10px}
.help b{color:var(--text)}

/* results */
#result-title{font-size:2rem}
#result-title.win{color:#9fffd8}#result-title.lose{color:var(--ember)}
#result-stats{display:flex;justify-content:center;gap:26px;margin:14px 0 6px}
#result-stats div b{display:block;font-size:1.5rem;color:var(--gold)}
#result-stats div small{color:var(--muted);letter-spacing:.12em;font-size:.68rem}

/* toast */
#toast{position:fixed;top:74px;left:50%;transform:translateX(-50%);padding:9px 20px;z-index:30;
  background:var(--panel-2);clip-path:var(--facet);box-shadow:0 0 0 1px var(--line) inset;
  font-weight:700;letter-spacing:.1em;font-size:.85rem;opacity:0;transition:opacity .3s;pointer-events:none}

/* mobile */
@media (max-width:760px){
  :root{font-size:14px}
  #minimap{width:132px;height:48px}
  .train{width:56px}
  .train .key{display:none}
  #cores{min-width:150px}
  #res-panel{min-height:44px;gap:10px}
  .hud-bottom{padding-bottom:8px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}
