/* ==========================================================================
   CubRawl · UI core — buttons, inputs, chips, cubes & tiles
   ========================================================================== */

/* ---- primary button: cyan neon slab ---- */
.btn-play{
  display:block;width:100%;padding:16px 20px 17px;
  border:1px solid rgba(0,234,255,.7);border-radius:2px;
  color:#021018;
  background:linear-gradient(180deg,#8df8ff 0%,#00eaff 46%,#00b4d2 100%);
  font:400 21px/1 var(--font-display);letter-spacing:.05em;text-transform:uppercase;
  clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));
  box-shadow:inset 0 -4px 0 rgba(0,58,78,.32),inset 0 1px 0 rgba(255,255,255,.55),0 0 24px rgba(0,234,255,.30);
  transition:transform .1s ease,filter .1s ease,box-shadow .1s ease;
}
.btn-play:active{transform:translateY(2px)}
.btn-play:disabled{
  filter:none;opacity:1;cursor:not-allowed;transform:none;
  background:rgba(0,234,255,.06);border-color:var(--line);color:var(--ink-soft);
  box-shadow:none;
}

/* ---- secondary: outline ---- */
.btn-ghost{
  display:block;width:100%;padding:14px 18px;border-radius:2px;
  border:1px solid var(--line-strong);background:rgba(0,234,255,.045);
  color:var(--ink);font:500 15.5px/1 var(--font-ui);letter-spacing:.02em;
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px));
  transition:transform .1s ease,background .15s ease,border-color .15s ease;
}
.btn-ghost:hover{background:rgba(0,234,255,.10);border-color:var(--cyan)}
.btn-ghost:active{transform:translateY(1px)}

/* ---- tertiary: violet ---- */
.btn-alt{
  background:linear-gradient(180deg,#a98cff,#7a5cff 55%,#5b3fe0);
  border-color:rgba(169,140,255,.7);color:#fff;
  box-shadow:inset 0 -4px 0 rgba(38,16,90,.35),0 0 24px rgba(122,92,255,.32);
}

/* ---- pills / chips ---- */
.pill{
  padding:8px 15px;border-radius:2px;border:1px solid var(--line);
  background:rgba(9,14,30,.55);color:var(--ink-soft);
  font:500 13px/1 var(--font-ui);letter-spacing:.02em;
  clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));
  transition:background .15s,border-color .15s,color .15s,transform .1s;
}
.pill:hover{color:var(--ink);border-color:var(--line-strong);background:rgba(0,234,255,.08)}
.pill[aria-pressed="false"]{opacity:.7}
.pill.strong{
  background:linear-gradient(180deg,var(--cyan-soft),var(--cyan));
  color:#021018;border-color:transparent;font-weight:700;padding:0 18px;border-radius:2px;
}

.chip{
  display:inline-flex;align-items:center;gap:7px;padding:4px 11px 4px 4px;border-radius:2px;
  background:rgba(0,234,255,.06);border:1px solid var(--line);
  font:500 12.5px/1 var(--font-ui);color:var(--ink);
}
.chip img{width:24px;height:24px}
.chip.warn{background:rgba(255,51,85,.12);border-color:rgba(255,51,85,.4)}
.chip.king{background:rgba(255,176,32,.14);border-color:var(--line-amber)}
.chip.coin-chip{
  background:linear-gradient(135deg,rgba(255,176,32,.14),rgba(0,234,255,.08));
  border-color:var(--line-amber);cursor:pointer;font-weight:700;
}
.chip.coin-chip img{width:20px;height:20px;border-radius:50%;box-shadow:0 0 8px rgba(255,176,32,.4)}

/* ---- icon buttons ---- */
.ibtn{
  width:40px;height:40px;border-radius:2px;display:grid;place-items:center;
  border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);
  color:var(--ink);padding:0;
  clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px));
  transition:transform .1s,border-color .15s,background .15s;
}
.ibtn svg{width:18px;height:18px}
.ibtn:hover{border-color:var(--line-strong);background:rgba(0,234,255,.09)}

/* ---- inputs ---- */
.field{display:block;text-align:left;margin:0 0 12px}
.field>span{display:block;margin:0 0 7px 2px;font:600 11.5px/1 var(--font-ui);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}
.field-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.field input{
  width:100%;padding:13px 16px;border-radius:2px;border:1px solid var(--line);
  background:rgba(0,234,255,.035);color:var(--ink);
  font:600 16.5px/1.2 var(--font-ui);outline:none;
  -webkit-user-select:text;user-select:text;
  box-shadow:inset 0 0 18px rgba(0,234,255,.04);
  transition:border-color .15s,box-shadow .15s,background .15s;
}
.field input::placeholder{color:var(--ink-dim)}
.field input:focus{border-color:var(--cyan);background:rgba(0,234,255,.06);box-shadow:inset 0 0 22px rgba(0,234,255,.08),0 0 18px rgba(0,234,255,.16)}
.field-msg{display:block;margin:7px 2px 0;font:600 12.5px/1.35 var(--font-ui);color:var(--red)}
.field.bad input,.field.bad input:focus{border-color:var(--red);box-shadow:0 0 16px rgba(255,51,85,.25)}
.field.shake input{animation:fieldShake .4s}
@keyframes fieldShake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}

/* ---- cubes (player score, scoreboard, game over) ---- */
.cube{
  --c:#00eaff;
  display:grid;place-items:center;width:52px;height:52px;flex:none;border-radius:4px;color:#fff;
  font:400 19px/1 var(--font-display);white-space:nowrap;
  background-color:var(--c);
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 82%,#fff),var(--c) 55%,color-mix(in srgb,var(--c) 62%,#04060f));
  box-shadow:
    inset 0 -4px 0 color-mix(in srgb,var(--c) 48%,#04060f),
    inset 0 0 0 1px rgba(255,255,255,.16),
    0 0 16px color-mix(in srgb,var(--c) 30%,transparent);
  text-shadow:0 2px 0 color-mix(in srgb,var(--c) 40%,#04060f);
}
.cube.bump{animation:bump .45s cubic-bezier(.3,1.6,.5,1)}
@keyframes bump{0%{transform:scale(.72)}100%{transform:scale(1)}}
.cube[data-len="3"]{font-size:16px}
.cube[data-len="4"]{font-size:13px}
.cube[data-len="5"]{font-size:11px}

/* ---- title tiles ---- */
.tile{
  --c:#00eaff;--s:62px;
  width:var(--s);height:var(--s);display:grid;place-items:center;border-radius:5px;color:#fff;
  font:400 calc(var(--s) * .52)/1 var(--font-logo);
  background-color:var(--c);
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 82%,#fff),var(--c) 55%,color-mix(in srgb,var(--c) 60%,#04060f));
  box-shadow:
    inset 0 -5px 0 color-mix(in srgb,var(--c) 48%,#04060f),
    inset 0 0 0 1px rgba(255,255,255,.2),
    0 0 22px color-mix(in srgb,var(--c) 42%,transparent);
  text-shadow:0 3px 0 color-mix(in srgb,var(--c) 40%,#04060f);
  animation:wave 2.6s ease-in-out infinite;animation-delay:calc(var(--i) * -.16s);
}
@keyframes wave{0%,100%{transform:translateY(-5px)}50%{transform:translateY(5px)}}

/* ---- coins ---- */
.coin{width:20px;height:20px;flex:none}
.coin-pill{
  display:inline-flex;align-items:center;gap:7px;padding:7px 14px 7px 8px;border-radius:2px;
  background:linear-gradient(180deg,rgba(255,176,32,.18),rgba(255,176,32,.07));
  border:1px solid var(--line-amber);color:var(--amber);
  font:700 15px/1 var(--font-mono);
  box-shadow:inset 0 0 14px rgba(255,176,32,.10),0 0 14px rgba(255,176,32,.14);
  position:relative;
}
.coin-gain{
  position:absolute;left:50%;top:-6px;transform:translateX(-50%);
  font:400 18px/1 var(--font-display);color:var(--amber);
  text-shadow:0 0 12px rgba(255,176,32,.8);pointer-events:none;
  animation:gainUp 1.8s ease-out forwards;
}
@keyframes gainUp{
  0%{opacity:0;transform:translate(-50%,8px) scale(.8)}
  15%{opacity:1;transform:translate(-50%,-6px) scale(1.1)}
  100%{opacity:0;transform:translate(-50%,-34px) scale(1)}
}

/* ---- spinner ---- */
.spinner{
  display:inline-block;width:14px;height:14px;flex:none;
  border:2px solid var(--cyan);border-top-color:transparent;border-radius:50%;
  animation:spin 1s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---- clipped controls keep a visible focus ring ---- */
.btn-play:focus-visible,.btn-ghost:focus-visible,.btn-alt:focus-visible,
.pill:focus-visible,.ibtn:focus-visible{
  outline:none;
  box-shadow:inset 0 0 0 2px var(--amber),0 0 20px rgba(255,176,32,.35);
}

/* ---- hover only on precise pointers ---- */
@media (hover:hover){
  .btn-play:hover{filter:brightness(1.08);box-shadow:inset 0 -4px 0 rgba(0,58,78,.32),inset 0 1px 0 rgba(255,255,255,.55),0 0 38px rgba(0,234,255,.5)}
  .ibtn:hover{transform:translateY(-1px)}
}

/* ---- mobile cube sizing ---- */
@media (max-width:720px){
  .cube{width:44px;height:44px;font-size:16px}
  .cube[data-len="3"]{font-size:14px}
  .cube[data-len="4"]{font-size:11.5px}
  .cube[data-len="5"]{font-size:10px}
  .tile{--s:54px}
}

@media (prefers-reduced-motion:reduce){
  .tile,.field.shake input{animation:none}
  .coin-gain{animation:none}
}
