/* ============================================================
   SOCCER STAR — Core design system (clean / flat)
   ============================================================ */
:root{
  /* surface */
  --bg:#101315;
  --surface:#191d20;
  --surface-2:#212629;
  --surface-3:#2a3034;
  --line:#282e32;
  --line-2:#384045;

  /* accent (단일 액센트) */
  --accent:#3ecf8e;
  --accent-ink:#062015;
  --accent-soft:rgba(62,207,142,.12);
  --accent-line:rgba(62,207,142,.38);
  --danger:#e5606a;

  /* 하위 호환 별칭 */
  --gold:var(--accent);
  --gold-2:var(--accent);
  --gold-d:var(--accent);
  --grass:var(--accent);

  /* text */
  --txt:#f1f3f3;
  --txt-2:#a9b3b7;
  --txt-3:#788387;

  /* type */
  --f-ui:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Malgun Gothic","Apple SD Gothic Neo",system-ui,sans-serif;
  --f-num:"Bebas Neue",var(--f-ui);

  /* metrics */
  --r-s:8px; --r-m:12px; --r-l:14px; --r-xl:16px;
  --sat:env(safe-area-inset-top,0px);
  --sab:env(safe-area-inset-bottom,0px);
  --sal:env(safe-area-inset-left,0px);
  --sar:env(safe-area-inset-right,0px);
  --shadow-1:0 1px 2px rgba(0,0,0,.35);
  --ease:cubic-bezier(.2,.8,.3,1);
  --spring:cubic-bezier(.2,.8,.3,1);
}

*,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--f-ui);
  background:var(--bg);
  color:var(--txt);
  overflow:hidden;
  overscroll-behavior:none;
  touch-action:manipulation;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"tnum" 1;
}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}
img,svg,canvas{display:block;max-width:100%}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,p{margin:0}
:focus{outline:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
::selection{background:rgba(62,207,142,.25)}

/* scrollbars */
.scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#333a3e transparent}
.scroll::-webkit-scrollbar{width:5px;height:5px}
.scroll::-webkit-scrollbar-thumb{background:#333a3e;border-radius:99px}
.scroll::-webkit-scrollbar-track{background:transparent}

/* ---------- boot ---------- */
.boot{
  position:fixed;inset:0;z-index:100;display:grid;place-content:center;justify-items:center;gap:18px;
  background:var(--bg);
  transition:opacity .3s var(--ease),visibility .3s;
}
.boot.done{opacity:0;visibility:hidden}
.boot-mark{
  font-family:var(--f-num);font-size:26px;letter-spacing:.24em;text-indent:.24em;color:var(--txt-2);
}
.boot-bar{width:120px;height:2px;border-radius:99px;background:var(--line-2);overflow:hidden}
.boot-bar i{display:block;height:100%;width:35%;border-radius:99px;background:var(--accent);animation:bootbar 1.1s var(--ease) infinite}
@keyframes bootbar{0%{transform:translateX(-110%)}100%{transform:translateX(330%)}}
.boot-tip{font-size:11.5px;color:var(--txt-3)}

/* ---------- app shell ---------- */
.app{position:fixed;inset:0;z-index:5}
.scene{
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  padding:calc(var(--sat) + 12px) calc(var(--sar) + 16px) calc(var(--sab) + 12px) calc(var(--sal) + 16px);
}
.scene-enter{animation:sceneIn .22s var(--ease) both}
.scene-exit{animation:sceneOut .18s var(--ease) both;pointer-events:none}
@keyframes sceneIn{from{opacity:0}to{opacity:1}}
@keyframes sceneOut{to{opacity:0}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-delay:0ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;transition-delay:0ms!important;
  }
}

/* ---------- atoms ---------- */
.stack{display:flex;flex-direction:column}
.row{display:flex;align-items:center}
.gap4{gap:4px}.gap6{gap:6px}.gap8{gap:8px}.gap10{gap:10px}.gap12{gap:12px}.gap16{gap:16px}
.grow{flex:1;min-height:0}
.center{align-items:center;justify-content:center}
.between{justify-content:space-between}
.wrap{flex-wrap:wrap}
.mute{color:var(--txt-2)}
.dim{color:var(--txt-3)}
.tiny{font-size:11px}
.small{font-size:12.5px}
.hidden{display:none!important}

.eyebrow{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--txt-3);font-weight:600}
.numeral{font-family:var(--f-num);letter-spacing:.02em;font-weight:400}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-1)}
.panel-inset{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-m)}

/* buttons */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:0 18px;border-radius:var(--r-m);
  font-weight:600;font-size:15px;letter-spacing:-.01em;
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--txt);
  transition:background .15s,border-color .15s,opacity .15s,transform .1s;
  user-select:none;-webkit-user-select:none;
}
.btn:active{transform:scale(.985);background:var(--surface-3)}
.btn[disabled]{opacity:.35;pointer-events:none}
.btn.blocked{opacity:.45}
.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:700}
.btn-primary:active{background:#35b87e}
.btn-green{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:700}
.btn-green:active{background:#35b87e}
.btn-ghost{background:transparent;border-color:var(--line-2)}
.btn-sm{min-height:36px;padding:0 12px;font-size:13px;border-radius:var(--r-s)}
.btn-icon{min-height:42px;width:42px;padding:0;border-radius:var(--r-m)}

/* chips */
.chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 10px;border-radius:6px;font-size:11.5px;font-weight:600;
  background:var(--surface-2);border:1px solid var(--line);color:var(--txt-2);
}
.chip-gold{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}
.chip-green{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}
.chip-red{background:rgba(229,96,106,.10);border-color:rgba(229,96,106,.32);color:#eb8b92}

/* toast */
.toast-root{position:fixed;left:0;right:0;bottom:calc(var(--sab) + 84px);z-index:90;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{
  max-width:min(92vw,420px);padding:10px 16px;border-radius:var(--r-s);font-size:13px;font-weight:500;
  background:var(--surface-3);border:1px solid var(--line-2);color:var(--txt);
  animation:toastIn .18s var(--ease) both;
}
.toast.out{animation:toastOut .18s var(--ease) forwards}
.toast.warn{border-color:rgba(229,96,106,.45);color:#eb8b92}
@keyframes toastIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0}}

/* modal */
.modal-root{position:fixed;inset:0;z-index:95;display:grid;place-items:center;padding:calc(var(--sat) + 18px) 18px calc(var(--sab) + 18px)}
.modal-root[hidden]{display:none}
.modal-scrim{position:absolute;inset:0;background:rgba(6,8,9,.7);animation:fade .18s ease both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{
  position:relative;width:min(94vw,420px);max-height:100%;
  padding:20px;border-radius:var(--r-xl);
  background:var(--surface);border:1px solid var(--line-2);
  animation:modalIn .2s var(--ease) both;display:flex;flex-direction:column;gap:14px;
}
@keyframes modalIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.modal h3{font-size:17px;font-weight:700;letter-spacing:-.02em}

/* switch */
.switch{position:relative;width:46px;height:28px;border-radius:99px;background:var(--surface-3);border:1px solid var(--line-2);transition:background .18s,border-color .18s;flex:none}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#778286;transition:transform .18s var(--ease),background .18s}
.switch[aria-checked="true"]{background:var(--accent-soft);border-color:var(--accent-line)}
.switch[aria-checked="true"]::after{transform:translateX(18px);background:var(--accent)}

/* meter */
.meter{height:4px;border-radius:99px;background:var(--line);overflow:hidden}
.meter i{display:block;height:100%;border-radius:99px;background:var(--accent);transition:width .3s var(--ease)}

.divider{height:1px;background:var(--line)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ============================================================
   잠재력 (F ~ S) — 등급 색은 한곳에서만 정한다
   ============================================================ */
.pot-F{--pot:#8b9a9e}
.pot-E{--pot:#a8b4b8}
.pot-D{--pot:#d6dee1}
.pot-C{--pot:#f0c04a}
.pot-B{--pot:#3ecf8e}
.pot-A{--pot:#5ad9ff}
.pot-S{--pot:#c08cff}

/* 생성 화면 · 굴리기 패널의 잠재력 배지 */
.pot-badge{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:5px 11px;border-radius:var(--r-s);background:var(--surface-2);
  border:1px solid var(--pot,var(--line-2));color:var(--pot,var(--txt-2));
  font:inherit;cursor:pointer;
}
.pot-badge span{font-size:9.5px;letter-spacing:.06em;color:var(--txt-3);font-weight:600;white-space:nowrap}
.pot-badge b{font-family:var(--f-num);font-size:22px;font-weight:700;line-height:1;letter-spacing:.02em}
.pot-badge.pot-A,.pot-badge.pot-S{box-shadow:0 0 12px -2px var(--pot)}
.roll-head.bump .pot-badge{animation:bumpIn .26s var(--ease)}

/* 허브 상태 박스의 잠재력 칸 */
.hub-meta .meta-pot{cursor:pointer}
.hub-meta .meta-pot b{color:var(--pot,var(--txt))}

/* 선수 카드의 잠재력 표식 */
.pcard-pot{
  font-size:10px;font-weight:700;letter-spacing:.04em;
  padding:2px 6px;border-radius:99px;
  color:var(--pot,var(--txt-2));border:1px solid var(--pot,var(--line-2));
  background:color-mix(in srgb,var(--pot,var(--line)) 12%,transparent);
}

/* 설명 모달 — 등급 사다리 */
.info-head .pot-emoji{
  font-family:var(--f-num);font-size:30px;font-weight:700;line-height:1;
  color:var(--pot,var(--txt));
}
.pot-ladder{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.pot-step{
  display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:var(--r-s);
  background:var(--surface-2);border:1px solid transparent;
}
.pot-step.on{border-color:var(--pot);background:color-mix(in srgb,var(--pot) 12%,var(--surface-2))}
.pot-step b{
  font-family:var(--f-num);font-size:16px;line-height:1;width:16px;text-align:center;
  color:var(--pot,var(--txt-2));
}
.pot-step span{font-size:12px;color:var(--txt-2)}
.pot-step em{margin-left:auto;font-style:normal;font-size:11px;color:var(--txt-3)}
.pot-step.on span{color:var(--txt)}
.pot-step.on em{color:var(--pot)}
