  :root{
    --bg:#1b1420;
    --bg2:#2a1d2e;
    --panel:rgba(255,255,255,.07);
    --panel-b:rgba(255,255,255,.13);
    --txt:#f6ecf3;
    --txt-dim:#c6b2c4;
    --accent:#ffb3d1;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html,body{height:100%;margin:0;}
  body{
    background:radial-gradient(120% 90% at 50% 0%, var(--bg2) 0%, var(--bg) 60%, #120d16 100%);
    color:var(--txt);
    font-family:"Pretendard","Apple SD Gothic Neo",-apple-system,BlinkMacSystemFont,"Malgun Gothic","맑은 고딕",sans-serif;
    overflow:hidden;
    touch-action:none;
    user-select:none;
    display:flex;flex-direction:column;
    transition:background .8s ease;
  }

  /* ---------- top bar ---------- */
  header{
    display:flex;align-items:center;justify-content:space-between;
    padding:14px 18px 6px;flex:0 0 auto;
  }
  .brand{display:flex;flex-direction:column;gap:2px;}
  .brand h1{margin:0;font-size:17px;font-weight:800;letter-spacing:-.4px;}
  .brand small{font-size:11.5px;color:var(--txt-dim);letter-spacing:-.2px;}
  .tools{display:flex;gap:7px;align-items:center;}
  .tbtn{
    width:38px;height:38px;border-radius:13px;border:1px solid var(--panel-b);
    background:var(--panel);color:var(--txt);font-size:16px;cursor:pointer;
    display:grid;place-items:center;transition:.18s;
  }
  .tbtn:hover{background:rgba(255,255,255,.14);}
  .tbtn.off{opacity:.35;}

  /* ---------- stage ---------- */
  main{flex:1 1 auto;position:relative;min-height:0;}
  canvas{display:block;width:100%;height:100%;cursor:pointer;}
  .hint{
    position:absolute;left:50%;top:16px;transform:translateX(-50%);
    font-size:12.5px;color:var(--txt-dim);background:rgba(0,0,0,.22);
    padding:6px 14px;border-radius:99px;pointer-events:none;
    transition:opacity .5s;backdrop-filter:blur(6px);white-space:nowrap;
  }
  .counter{
    position:absolute;right:16px;bottom:12px;font-size:11.5px;color:var(--txt-dim);
    pointer-events:none;letter-spacing:-.2px;
  }

  /* ---------- picker ---------- */
  .picker{
    flex:0 0 auto;display:flex;gap:9px;overflow-x:auto;overflow-y:hidden;
    padding:10px 16px calc(14px + env(safe-area-inset-bottom));
    scrollbar-width:none;
  }
  .picker::-webkit-scrollbar{display:none;}
  .chip{
    flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:3px;
    width:64px;padding:9px 0 8px;border-radius:16px;cursor:pointer;
    border:1px solid transparent;background:var(--panel);
    transition:.2s;
  }
  .chip .em{font-size:23px;line-height:1;filter:saturate(1.1);}
  .chip .nm{font-size:11px;color:var(--txt-dim);font-weight:600;letter-spacing:-.3px;}
  .chip:hover{background:rgba(255,255,255,.13);}
  .chip.on{background:rgba(255,255,255,.16);border-color:var(--accent);transform:translateY(-2px);}
  .chip.on .nm{color:var(--txt);}

  /* ---------- start overlay ---------- */
  .gate{
    position:fixed;inset:0;z-index:20;display:grid;place-items:center;
    background:rgba(18,13,22,.86);backdrop-filter:blur(10px);
    transition:opacity .45s ease;
  }
  .gate.hide{opacity:0;pointer-events:none;}
  .gate .box{text-align:center;padding:0 30px;}
  .gate .big{font-size:56px;animation:bob 2.2s ease-in-out infinite;display:inline-block;}
  @keyframes bob{0%,100%{transform:translateY(0) scale(1,1);}50%{transform:translateY(6px) scale(1.06,.94);}}
  .gate h2{margin:14px 0 6px;font-size:20px;letter-spacing:-.5px;}
  .gate p{margin:0 0 22px;font-size:13px;color:var(--txt-dim);line-height:1.6;}
  .gate button{
    border:0;border-radius:99px;padding:13px 30px;font-size:14.5px;font-weight:800;
    background:linear-gradient(135deg,#ffc4dc,#ffe6b8);color:#3a2130;cursor:pointer;
    box-shadow:0 8px 24px rgba(255,180,210,.25);font-family:inherit;
  }
  .gate button:active{transform:scale(.97);}

  /* ---------- volume popover ---------- */
  .vol{
    position:absolute;right:18px;top:60px;z-index:15;
    background:rgba(30,22,34,.95);border:1px solid var(--panel-b);
    border-radius:14px;padding:12px 14px;display:none;
    box-shadow:0 12px 30px rgba(0,0,0,.35);
  }
  .vol.on{display:block;}
  .vol label{font-size:11px;color:var(--txt-dim);display:block;margin-bottom:7px;}
  .vol input{width:130px;accent-color:var(--accent);}
