/* ── SEO 全曲カタログ（ユーザーには非表示・クローラーには可視） ─────────────────────────
   display:none / visibility:hidden はGoogleがコンテンツを無視する可能性があるため使わない。
   position:absolute + clip-path で視覚的に非表示にしつつクロール可能に保つ。
   aria-hidden="true" でスクリーンリーダーからは除外。                              */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
img,video{max-width:100%;height:auto}
body{overflow-wrap:break-word}
:root{
  --ink:#1a1008; --paper:#faf6f0; --warm:#f5ede0; --warm2:#ede2cf;
  --accent:#c85a1e; --accent-h:#a84812; --accent2:#4a9b7f; --accent3:#7b5ea7;
  --gold:#d4a843; --muted:#8a7060; --muted2:#b09c84; --border:#ddd0c0;
  --card:#ffffff; --shadow:0 2px 12px rgba(26,16,8,0.06);
  --font:'Noto Sans JP',system-ui,sans-serif; --serif:'Shippori Mincho',serif;
}
html[data-theme="dark"]{
  --ink:#f3ece1; --paper:#15110d; --warm:#1f1812; --warm2:#2a2018;
  --accent:#e87a3e; --accent-h:#f08c50; --accent2:#5cb594; --accent3:#9777c7;
  --gold:#e8c068; --muted:#9c8870; --muted2:#7a6852; --border:#2e2620;
  --card:#1c1611; --shadow:0 2px 16px rgba(0,0,0,0.4);
}
html{scroll-behavior:smooth;overflow-x:hidden}
body{font-family:var(--font);background:var(--paper);color:var(--ink);line-height:1.7;min-height:100vh;padding-bottom:100px;-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:hidden}
button,a,[role="button"]{touch-action:manipulation}
a{color:inherit}
button{font-family:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
.scard:focus-visible,.pkcard:focus-visible,.gscard:focus-visible{outline-offset:3px}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}
.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:8px 14px;z-index:1000;font-weight:700;border-radius:0 0 8px 0}
.skip:focus{left:0}

/* HEADER */
header{position:sticky;top:0;z-index:100;background:rgba(13,11,8,.82);backdrop-filter:blur(20px);border-bottom:1px solid rgba(255,255,255,.08)}
.hwrap{max-width:1280px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:66px;gap:1rem;padding:0 1.5rem}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0}
.logo-mark{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#1de9b6 0%,#7c4dff 100%);display:grid;place-items:center;box-shadow:0 0 16px rgba(29,233,182,.4),0 0 30px rgba(124,77,255,.2);flex-shrink:0}
.logo-name{font-size:14.5px;font-weight:900;letter-spacing:.04em;line-height:1.2;background:linear-gradient(135deg,#fff 0%,rgba(255,255,255,.75) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.logo-sub{font-size:9.5px;color:rgba(255,255,255,.35);letter-spacing:.12em;margin-top:1px}
nav{display:flex;gap:2px;flex:1;justify-content:center}
nav a{text-decoration:none;color:rgba(255,255,255,.5);font-size:12.5px;font-weight:500;padding:7px 12px;border-radius:8px;transition:all .18s;white-space:nowrap}
nav a:hover{color:#fff;background:rgba(255,255,255,.08)}
nav a.active{color:#1de9b6;font-weight:700;background:rgba(29,233,182,.1)}
.htools{display:flex;gap:6px;align-items:center}
.iconbtn{width:48px;height:48px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:rgba(255,255,255,.7);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:15px;transition:all .18s}
.iconbtn:hover{border-color:rgba(29,233,182,.5);background:rgba(29,233,182,.08);color:#1de9b6;box-shadow:0 0 10px rgba(29,233,182,.2)}
.iconbtn-lbl{font-size:8.5px;font-weight:700;letter-spacing:.04em;opacity:.6;line-height:1}
.hbadge{background:var(--accent);color:#fff;font-size:11px;font-weight:700;padding:6px 14px;border-radius:20px;letter-spacing:.05em}

/* HERO (元の構成) */
.hero{background:#0d0b08;color:#fff;padding:5rem 1.5rem 4rem;position:relative;overflow:hidden}
html[data-theme="dark"] .hero{background:#0a0805}
.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 50% 70% at 75% 50%,rgba(29,233,182,.12) 0%,transparent 60%),radial-gradient(ellipse 60% 80% at 20% 80%,rgba(124,77,255,.1) 0%,transparent 55%),radial-gradient(ellipse 40% 50% at 90% 10%,rgba(200,90,30,.1) 0%,transparent 50%);pointer-events:none}
.herowrap{max-width:1360px;margin:0 auto;display:grid;grid-template-columns:1fr 340px;gap:2rem;align-items:center;position:relative;z-index:2}
.hero-navi-bg{position:absolute;top:0;bottom:0;left:0;right:0;z-index:0;pointer-events:none;overflow:hidden}
.hero-navi-bg img{position:absolute;bottom:-8%;left:50%;transform:translateX(-58%);height:108%;width:auto;object-fit:contain}
.hero-navi-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(to right,#0d0b08 18%,transparent 42%,transparent 62%,#0d0b08 88%),linear-gradient(to bottom,rgba(13,11,8,.3) 0%,transparent 20%,transparent 75%,#0d0b08 100%)}
/* ヒーロー右パネル */
.hero-panel{background:rgba(8,6,18,.88);border:1px solid rgba(255,255,255,.07);border-radius:20px;padding:22px 20px;backdrop-filter:blur(16px);display:flex;flex-direction:column;gap:12px;box-shadow:0 8px 40px rgba(0,0,0,.6)}
.hp-label{color:#1de9b6;font-size:12.5px;font-weight:700;letter-spacing:.08em}
.hp-main{background:linear-gradient(135deg,#0b1e35 0%,#091525 100%);border:1.5px solid #1de9b6;border-radius:14px;padding:16px 18px;display:flex;align-items:center;gap:14px;cursor:pointer;width:100%;text-align:left;transition:all .2s;box-shadow:0 0 16px rgba(29,233,182,.1)}
.hp-main:hover{background:rgba(29,233,182,.1);transform:translateY(-1px)}
.hp-ai{background:#1de9b6;color:#000;font-weight:900;font-size:12px;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.05em}
.hp-main-text{color:#fff;font-size:16px;font-weight:800;line-height:1.35}
.hp-main-text em{font-style:normal;color:#ffd700}
.hp-row{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);border-radius:14px;padding:16px 18px;display:flex;align-items:center;gap:14px;cursor:pointer;width:100%;text-align:left;transition:all .2s;color:#fff}
.hp-row:hover{background:rgba(124,77,255,.12);border-color:rgba(124,77,255,.4);transform:translateY(-1px)}
.hp-row-icon{font-size:26px;flex-shrink:0;line-height:1}
.hp-row strong{display:block;font-size:15px;font-weight:700;margin-bottom:4px}
.hp-row p{color:rgba(255,255,255,.5);font-size:12px;margin:0;line-height:1.5}
.hp-cta{background:linear-gradient(135deg,#f5c518 0%,#e09800 100%);color:#000;font-weight:900;font-size:17px;border:none;border-radius:50px;padding:17px 20px;cursor:pointer;width:100%;transition:all .2s;margin-top:4px;letter-spacing:.04em;box-shadow:0 4px 20px rgba(245,197,24,.35)}
.hp-cta:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(245,197,24,.5)}
.htag{display:inline-flex;align-items:center;gap:6px;background:rgba(29,233,182,.1);border:1px solid rgba(29,233,182,.3);color:#1de9b6;font-size:11.5px;font-weight:700;padding:6px 14px;border-radius:20px;margin-bottom:1.4rem;letter-spacing:.05em;box-shadow:0 0 16px rgba(29,233,182,.15)}
.hero h1{font-family:var(--serif);font-size:clamp(2rem,3.6vw,3.2rem);font-weight:700;line-height:1.32;margin-bottom:1.2rem;letter-spacing:.02em;color:#fff}
.hero h1 em{font-style:normal;background:linear-gradient(135deg,#1de9b6 0%,#7c4dff 55%,#d4a843 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.hero p.lead{font-size:14px;color:rgba(255,255,255,.65);max-width:520px;line-height:1.95;margin-bottom:1.8rem}
.hsearch{display:flex;gap:8px;max-width:580px;flex-wrap:wrap}
.hsearch input{flex:1;min-width:200px;background:rgba(255,255,255,.06);border:1.5px solid rgba(255,255,255,.15);color:#fff;font-family:var(--font);font-size:14px;padding:14px 20px;border-radius:12px;outline:none;transition:all .25s;backdrop-filter:blur(12px);font-weight:500}
.hsearch input::placeholder{color:rgba(255,255,255,.4)}
.hsearch input:focus{border-color:rgba(29,233,182,.6);background:rgba(29,233,182,.06);box-shadow:0 0 0 3px rgba(29,233,182,.12)}
.hsearch button{background:linear-gradient(135deg,#1de9b6 0%,#00b8d4 100%);color:#0d0b08;border:none;font-size:14px;font-weight:800;padding:14px 24px;border-radius:12px;cursor:pointer;transition:all .2s;white-space:nowrap;box-shadow:0 4px 16px rgba(29,233,182,.3)}
.hsearch button:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(29,233,182,.4)}
.hsearch .aibtn{background:linear-gradient(135deg,rgba(124,77,255,.85) 0%,rgba(200,90,30,.85) 100%);color:#fff;display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(124,77,255,.4)}
.hsearch .aibtn:hover{filter:brightness(1.15);transform:translateY(-1px)}
.aitips{display:flex;flex-wrap:wrap;gap:7px;margin-top:.75rem}
.aitip{font-size:12px;color:rgba(255,255,255,.82);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);padding:6px 14px;border-radius:20px;cursor:pointer;transition:all .2s;font-weight:600;letter-spacing:.2px;white-space:nowrap}
.aitip:hover{background:rgba(29,233,182,.14);border-color:rgba(29,233,182,.55);color:#1de9b6;transform:translateY(-1px);box-shadow:0 4px 12px rgba(29,233,182,.15)}
/* 検索ボックス上部カウント表示 */
.hsearch-hint{display:flex;align-items:center;gap:8px;margin-bottom:.55rem;font-size:12px;color:rgba(255,255,255,.48)}
.hsearch-hint strong{color:rgba(29,233,182,.9);font-size:13px;font-weight:700}
.hsearch-hint .hdot{color:rgba(255,255,255,.2)}
.hsearch-hint .htag-small{font-size:11px;background:rgba(29,233,182,.1);border:1px solid rgba(29,233,182,.25);color:rgba(29,233,182,.8);padding:2px 8px;border-radius:10px;font-weight:600}
body.ai-active .hsearch input{border-color:var(--gold);background:rgba(0,0,0,.6);box-shadow:0 0 0 3px rgba(212,168,67,.3);color:#fff}
/* autofill（ブラウザ自動補完）の黄色背景を打ち消す */
.hsearch input:-webkit-autofill,
.hsearch input:-webkit-autofill:hover,
.hsearch input:-webkit-autofill:focus{-webkit-text-fill-color:#fff;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.65) inset;transition:background-color 5000s ease-in-out 0s}
.rmcustom input:-webkit-autofill,
.rmcustom input:-webkit-autofill:focus{-webkit-text-fill-color:var(--ink);-webkit-box-shadow:0 0 0 1000px var(--card) inset;transition:background-color 5000s ease-in-out 0s}
.hstats{display:flex;gap:2.5rem;margin-top:2.2rem;flex-wrap:wrap}
.hstat .num{display:block;font-size:1.9rem;font-weight:900;font-family:var(--serif);color:#fff;line-height:1;margin-bottom:4px;text-shadow:0 2px 8px rgba(0,0,0,0.95),0 0 4px #000}
.hstat .lbl{font-size:11.5px;color:rgba(255,255,255,.85);letter-spacing:.06em;text-shadow:0 1px 4px rgba(0,0,0,0.9);font-weight:500}
/* ヒーロービジュアル: プロモ画像 */
.hvis{display:flex;align-items:flex-end;justify-content:center;height:auto}
.hero-panel{display:flex;align-items:center;justify-content:center}
.hvb{width:3px;background:#fff;border-radius:3px;animation:wv 1.4s ease-in-out infinite;will-change:transform}
@keyframes wv{0%,100%{transform:scaleY(1)}50%{transform:scaleY(3)}}
@keyframes floatImg{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}

/* プレイヤー再生中のバー (audio中央に小さくビジュアライズ) */
.pbars{display:none;align-items:flex-end;gap:2px;height:18px;flex-shrink:0;margin-left:2px}
.pbar.playing .pbars{display:flex}
.pb1{width:2px;background:var(--accent);border-radius:1px;animation:pbA .8s ease-in-out infinite}
.pb2{width:2px;background:var(--accent);border-radius:1px;animation:pbA .8s ease-in-out infinite .15s}
.pb3{width:2px;background:var(--accent);border-radius:1px;animation:pbA .8s ease-in-out infinite .3s}
@keyframes pbA{0%,100%{height:30%}50%{height:100%}}

/* 📻 作業用ラジオ */
.radiobtn{background:linear-gradient(135deg,#c85a1e 0%,#d4a843 100%);color:#fff;display:inline-flex;flex-direction:column;align-items:center;gap:2px;font-weight:800;line-height:1.3}
.radiobtn .radiosub{font-size:10px;font-weight:500;opacity:.88;letter-spacing:.02em}
.radiobtn:hover{filter:brightness(1.1);transform:translateY(-1px)}
.rmgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.rmcard{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;border:1.5px solid var(--border);border-radius:11px;background:var(--card);cursor:pointer;text-align:left;font-family:inherit;transition:all .15s;color:var(--ink)}
.rmcard:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 14px rgba(200,90,30,.15)}
.rmcard .ic{font-size:1.6rem;margin-bottom:4px;line-height:1}
.rmcard b{font-size:14px;font-weight:800}
.rmcard small{font-size:11px;color:var(--muted);font-weight:500}
.rmcustom{margin-top:1rem;border-top:1px solid var(--border);padding-top:1rem}
.rmguide{margin-top:1.2rem;border-top:1px solid var(--border);padding-top:1rem}
.rmguide-ttl{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:.7rem}
.rmguide-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}
.rmguide-list li{font-size:12.5px;color:var(--ink);line-height:1.6;display:flex;gap:.5rem;align-items:flex-start}
.rmguide-list li .gi{flex-shrink:0;font-size:14px;margin-top:1px}
.rmcustom label{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;display:block;margin-bottom:6px}
.rmcustom input{width:100%;font-family:inherit;font-size:14px;padding:12px 14px;border:1.5px solid var(--border);border-radius:9px;background:var(--paper);color:var(--ink);outline:none;transition:all .2s}
.rmcustom input:focus{border-color:var(--accent);background:var(--card);box-shadow:0 0 0 3px rgba(200,90,30,.12)}
.rmopts{display:flex;flex-wrap:wrap;gap:10px;margin-top:.8rem;align-items:center;font-size:12px;color:var(--muted)}
.rmopts select{font-family:inherit;font-size:12px;padding:5px 9px;border:1px solid var(--border);background:var(--card);border-radius:6px;color:var(--ink);outline:none;font-weight:600}

/* ラジオ稼働中インジケータ (左下フローティング) */
.radioind{position:fixed;bottom:88px;left:20px;background:linear-gradient(135deg,#c85a1e 0%,#d4a843 100%);color:#fff;padding:10px 16px;border-radius:24px;font-size:12.5px;font-weight:800;cursor:pointer;box-shadow:0 8px 24px rgba(200,90,30,.4);display:none;align-items:center;gap:9px;z-index:181;letter-spacing:.04em}
.radioind.on{display:inline-flex}
.radioind:hover{transform:translateY(-2px);filter:brightness(1.1)}
.radioind .pulse{display:inline-block;width:9px;height:9px;border-radius:50%;background:#fff;animation:rpulse 1.4s infinite}
@keyframes rpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.2)}}
.radioind .skip{background:rgba(255,255,255,.25);border:none;color:#fff;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:13px;cursor:pointer;line-height:1}
.radioind .skip:hover{background:rgba(255,255,255,.45)}
.radioind .stop{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:11px;cursor:pointer;line-height:1;font-weight:900}
.radioind .stop:hover{background:rgba(255,255,255,.2);border-color:#fff}
/* グッド・バッドボタン */
.radioind .rfb{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:14px;cursor:pointer;line-height:1;transition:all .18s;opacity:.75}
.radioind .rfb:hover{opacity:1;transform:scale(1.15)}
.radioind .rfb.good.active{background:rgba(80,200,100,.5);border-color:rgba(80,220,100,.9);opacity:1;transform:scale(1.1)}
.radioind .rfb.bad.active{background:rgba(220,70,70,.5);border-color:rgba(240,80,80,.9);opacity:1}
@media(max-width:640px){.radioind{bottom:76px;left:12px;padding:8px 12px;font-size:11px}
.radioind .rfb{width:30px;height:30px;font-size:12px}}

/* プレイヤーにRADIOバッジ */
.pbar.radio .pcat::before{content:'📻 RADIO ';font-weight:800;color:var(--gold);margin-right:4px}
/* 再生バーのグッド・バッドボタン（RADIOモード中のみ表示） */
.pbar .prfb{display:none;font-size:15px;opacity:.65;transition:all .18s}
.pbar.radio .prfb{display:grid}
.pbar .prfb:hover{opacity:1;transform:scale(1.2)}
.pbar .prfb.active{opacity:1}
.pbar .pgood.active{text-shadow:0 0 8px rgba(80,220,100,.9)}
.pbar .pbad.active{text-shadow:0 0 8px rgba(240,80,80,.9)}

/* AIランクバッジ */

/* プレイリストピックチェックボックス (カバー右上) */
.cpick{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;border:2px solid rgba(255,255,255,.7);background:rgba(0,0,0,.5);color:#fff;cursor:pointer;display:grid;place-items:center;font-size:14px;font-weight:800;z-index:3;transition:all .15s;backdrop-filter:blur(6px);line-height:1}
.cpick:hover{border-color:#fff;background:rgba(0,0,0,.75);transform:scale(1.08)}
.cpick.on{background:var(--accent2);border-color:#fff;color:#fff}
.cpick.on::before{content:'✓'}
/* duration バッジは pick が居る時は左下に逃がす */
.scard:has(.cpick) .cmeta2{top:auto;bottom:8px}

/* プレイリストフローティングピル */
.plpill{position:fixed;bottom:88px;right:20px;background:var(--ink);color:#fff;border:none;padding:11px 18px;border-radius:24px;font-size:13px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.35);cursor:pointer;display:none;align-items:center;gap:9px;z-index:180;transition:all .2s}
.plpill.on{display:inline-flex}
.plpill:hover{background:var(--accent);transform:translateY(-2px) scale(1.02)}
.plpill .ct{background:var(--accent);color:#fff;font-size:11px;font-weight:800;padding:1px 8px;border-radius:10px;font-variant-numeric:tabular-nums}
.plpill:hover .ct{background:#fff;color:var(--accent)}

/* プレイリストドロワー */
.plback{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:225;display:none;backdrop-filter:blur(4px)}
.plback.on{display:block}
.pldraw{position:fixed;bottom:0;right:0;top:0;width:400px;max-width:100vw;background:var(--card);color:var(--ink);border-left:1px solid var(--border);box-shadow:-12px 0 36px rgba(0,0,0,.3);z-index:230;transform:translateX(100%);transition:transform .28s ease;display:none;flex-direction:column}
.pldraw.on{transform:translateX(0)}
.plhead{padding:1.3rem 1.4rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.plttl{font-family:var(--serif);font-size:1.2rem;font-weight:700;display:flex;align-items:center;gap:8px}
.plttl small{font-size:11.5px;color:var(--muted);font-weight:500;font-family:var(--font);margin-left:6px}
.plclose{background:transparent;border:none;font-size:24px;color:var(--muted);cursor:pointer;line-height:1;padding:0;width:30px;height:30px}
.plclose:hover{color:var(--accent)}
.plbody{flex:1;overflow-y:auto;padding:.7rem;scroll-behavior:smooth}
.plitem{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;margin-bottom:5px;background:var(--paper);border:1px solid var(--border);transition:all .12s}
.plitem:hover{background:var(--warm);border-color:var(--accent)}
.plitem.now{border-color:var(--accent);background:var(--warm)}
.plimg{width:42px;height:42px;border-radius:7px;overflow:hidden;flex-shrink:0;background:var(--warm2);display:grid;place-items:center;font-size:14px;color:var(--muted)}
.plimg img{width:100%;height:100%;object-fit:cover}
.plinfo{flex:1;min-width:0}
.plttl2{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plmeta{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.plact{display:flex;gap:3px}
.plact button{width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;display:grid;place-items:center;font-size:11px;line-height:1;padding:0}
.plact button:hover{border-color:var(--accent);color:var(--accent)}
.plfoot{padding:.9rem 1.1rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.45rem;flex-shrink:0;background:var(--paper)}
.plfoot button{padding:11px 14px;border-radius:9px;border:none;cursor:pointer;font-weight:700;font-size:13px;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .12s}
.plfoot .pri{background:var(--accent);color:#fff}
.plfoot .pri:hover{background:var(--accent-h)}
.plfoot .sec{background:var(--card);color:var(--ink);border:1px solid var(--border)}
.plfoot .sec:hover{border-color:var(--accent);color:var(--accent)}
.plfoot .danger{background:transparent;color:var(--muted);border:1px solid var(--border);font-size:12px;padding:8px 14px}
.plfoot .danger:hover{border-color:var(--accent);color:var(--accent)}
.plfoot-row{display:flex;gap:.45rem}.plfoot-row .pri{flex:1}
.plshuf{min-width:44px;font-size:16px}
.plshuf.on{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}
.plempty{padding:3rem 1rem;text-align:center;color:var(--muted);font-size:13px;line-height:2}
.plempty .em{font-size:2.5rem;margin-bottom:.6rem}

@media(max-width:640px){
  .pldraw{width:100vw}
  .plpill{bottom:175px;right:12px;padding:10px 14px;font-size:12px}
}

/* AI MATCH バナー & 理由チップ */
.aibanner{margin:0 0 1.4rem;background:linear-gradient(135deg,rgba(212,168,67,.18) 0%,rgba(200,90,30,.12) 100%);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:12px;padding:1rem 1.2rem;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}
.aibhead{font-size:11px;font-weight:800;color:var(--accent);letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;display:flex;align-items:center;gap:6px}
.aibq{font-family:var(--serif);font-size:1.05rem;font-weight:700;line-height:1.5;color:var(--ink)}
.aibsub{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.6}
.aibtags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.aibchip{font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:14px;background:var(--card);color:var(--accent);border:1px solid var(--accent)}
.aibreset{align-self:flex-start;font-size:11px;color:var(--muted);background:transparent;border:1px solid var(--border);padding:6px 12px;border-radius:18px;cursor:pointer;font-weight:600;flex-shrink:0}
.aibreset:hover{border-color:var(--accent);color:var(--accent)}

/* カードのAIマッチ理由 */
.creason{font-size:11px;font-weight:600;color:var(--accent);background:linear-gradient(135deg,rgba(212,168,67,.15) 0%,rgba(200,90,30,.1) 100%);border-left:3px solid var(--gold);padding:6px 10px;border-radius:0 7px 7px 0;line-height:1.5;margin-bottom:6px;display:flex;align-items:flex-start;gap:5px}
.creason::before{content:'✨';flex-shrink:0;font-size:11px;line-height:1.5}

/* AI入力モーダル/オーバーレイ */
.aimodal{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:280;display:none;align-items:flex-start;justify-content:center;padding:8vh 1rem 1rem;backdrop-filter:blur(8px)}
.aimodal.on{display:flex}
.aibox{background:var(--card);color:var(--ink);max-width:640px;width:100%;border-radius:18px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.4);border:1px solid var(--border);max-height:88vh;display:flex;flex-direction:column}
.aibody{overflow-y:auto;flex:1;min-height:0}
.aitop{padding:1rem 1.4rem .9rem;background:linear-gradient(135deg,var(--ink) 0%,#2a1810 100%);color:#fff}
.aittl{font-family:var(--serif);font-size:1.15rem;font-weight:700;display:flex;align-items:center;gap:7px;margin-bottom:.25rem;white-space:nowrap}
.aittl span:first-child{font-size:1.3rem;flex-shrink:0}
.aisub{font-size:12px;color:rgba(255,255,255,.7);line-height:1.5}
.aibody{padding:1.4rem 1.6rem}
.aiform{display:flex;flex-direction:column;gap:.8rem}
.aiform textarea{font-family:var(--font);font-size:14px;padding:14px 16px;border:1.5px solid var(--border);border-radius:10px;background:var(--paper);color:var(--ink);resize:vertical;min-height:90px;outline:none;transition:all .2s;line-height:1.7}
.aiform textarea:focus{border-color:var(--accent);background:var(--card);box-shadow:0 0 0 3px rgba(200,90,30,.12)}
.aiexamples{display:flex;flex-wrap:wrap;gap:6px}
.aiex{font-size:12px;padding:6px 12px;border-radius:18px;background:var(--warm);border:1px solid var(--border);color:var(--ink);cursor:pointer;font-weight:500;transition:all .15s}
.aiex:hover{border-color:var(--accent);color:var(--accent);background:var(--card)}
.aigo{padding:13px;background:linear-gradient(135deg,#d4a843 0%,#c85a1e 100%);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:800;cursor:pointer;transition:all .15s;letter-spacing:.04em;display:flex;align-items:center;justify-content:center;gap:8px}
.aigo:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 6px 18px rgba(200,90,30,.3)}
.aigo:disabled{opacity:.5;cursor:wait}
.aiclose{background:transparent;border:none;color:rgba(255,255,255,.6);font-size:24px;cursor:pointer;line-height:1;float:right}
.aiclose:hover{color:#fff}

/* AI 履歴 */
.aihist{margin-top:.6rem}
.aihist-label{font-size:10.5px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}
.aihist-clear{background:transparent;border:none;color:var(--muted);font-size:11px;cursor:pointer;font-weight:600;padding:0}
.aihist-clear:hover{color:var(--accent)}
.aihist-list{display:flex;flex-direction:column;gap:3px;max-height:140px;overflow-y:auto}
.aihist-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;background:var(--paper);border:1px solid var(--border);cursor:pointer;font-size:12.5px;color:var(--ink);transition:all .12s;text-align:left}
.aihist-item:hover{border-color:var(--accent);background:var(--warm)}
.aihist-item .h-icon{flex-shrink:0;color:var(--muted);font-size:11px}
.aihist-item .h-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aihist-item .h-rm{flex-shrink:0;width:18px;height:18px;border-radius:50%;border:none;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center;font-size:13px;line-height:1;opacity:0;transition:opacity .15s}
.aihist-item:hover .h-rm{opacity:1}
.aihist-item .h-rm:hover{background:var(--accent);color:#fff}

/* AI モーダル — タブ */
.aitabs{display:flex;background:var(--paper);border-bottom:2px solid var(--border);flex-shrink:0}
.aitab{flex:1;padding:10px 4px;font-size:12px;font-weight:700;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;color:var(--muted);transition:all .15s;letter-spacing:.01em}
.aitab.active{color:var(--accent);border-bottom-color:var(--accent)}
.aitab:hover:not(.active){color:var(--ink);background:var(--warm)}
.aitabpanel{padding:1.2rem 1.4rem}

/* AI モーダル — 気分カード */
.aimood-section{margin-bottom:1.1rem}
.aimood-ttl{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:.65rem;letter-spacing:.02em}
.aimood-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.aimood-grid--scene{grid-template-columns:repeat(4,1fr)}
.aimoodcard{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px 10px;border-radius:12px;background:var(--paper);border:2px solid var(--border);cursor:pointer;font-size:1.55rem;transition:all .15s;color:var(--ink);line-height:1}
.aimoodcard span{font-size:10.5px;font-weight:600;text-align:center;line-height:1.25;color:var(--ink)}
.aimoodcard:hover{border-color:var(--accent);background:var(--warm);transform:translateY(-1px)}
.aimoodcard.selected{border-color:var(--accent);background:var(--warm);box-shadow:0 0 0 3px rgba(200,90,30,.18)}
.aimood-grid--scene .aimoodcard{padding:10px 4px 8px;font-size:1.3rem}
@media(max-width:480px){
  .aimood-grid{grid-template-columns:repeat(3,1fr)}
  .aimood-grid--scene{grid-template-columns:repeat(4,1fr)}
  .aimoodcard span{font-size:10px}
}

/* AI モーダル — パーソナル推薦 */
.airecs-empty{text-align:center;padding:2.2rem 1rem 1.8rem;color:var(--muted)}
.airecs-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;font-size:13px;font-weight:700}
.airecs-profile{font-size:11px;font-weight:400;color:var(--muted)}
.airecs-list{display:flex;flex-direction:column;gap:6px;max-height:230px;overflow-y:auto}
.airecs-item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:10px;background:var(--paper);border:1px solid var(--border);cursor:pointer;transition:all .12s}
.airecs-item:hover{border-color:var(--accent);background:var(--warm)}
.airecs-thumb{width:38px;height:38px;border-radius:7px;object-fit:cover;flex-shrink:0}
.airecs-thumb-fb{width:38px;height:38px;border-radius:7px;background:var(--warm2);display:grid;place-items:center;font-size:1.1rem;flex-shrink:0}
.airecs-info{flex:1;min-width:0}
.airecs-title{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.airecs-meta{font-size:11px;color:var(--muted);margin-top:2px}
.airecs-play{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;display:grid;place-items:center;font-size:12px;transition:transform .15s}
.airecs-play:hover{transform:scale(1.12)}

/* PICKUP (今週のおすすめ) */
.pickup{background:linear-gradient(180deg,var(--warm) 0%,var(--paper) 100%);padding:2.5rem 1.5rem 2rem;border-bottom:1px solid var(--border)}
.pkwrap{max-width:1280px;margin:0 auto}
.pkhead{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:1.4rem;flex-wrap:wrap;gap:.6rem}
.pkttl{font-family:var(--serif);font-size:1.5rem;font-weight:700;display:flex;align-items:center;gap:10px}
.pkttl::before{content:'';width:5px;height:24px;background:linear-gradient(180deg,var(--accent),var(--gold));border-radius:3px}
.pksub{font-size:12px;color:var(--muted)}
.pkrow{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.pkcard{position:relative;aspect-ratio:1/1;border-radius:14px;overflow:hidden;cursor:pointer;background:var(--warm2);transition:transform .25s,box-shadow .25s}
.pkcard:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(26,16,8,.18)}
.pkcard img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.pkcard:hover img{transform:scale(1.06)}
.pkov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 20%,rgba(0,0,0,.88) 100%);display:flex;flex-direction:column;justify-content:flex-end;padding:13px;color:#fff}
.pkg{font-size:10px;font-weight:700;padding:3px 9px;border-radius:14px;background:var(--accent);align-self:flex-start;letter-spacing:.04em;margin-bottom:7px;text-shadow:none}
.pktit{font-size:14px;font-weight:800;line-height:1.35;text-shadow:0 1px 4px rgba(0,0,0,.6);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pkdesc{font-size:10.5px;color:rgba(255,255,255,.72);margin-top:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.4}
.pkmeta{font-size:11px;color:rgba(255,255,255,.78);margin-top:3px;font-variant-numeric:tabular-nums}
.pkplay{position:absolute;top:10px;right:10px;width:42px;height:42px;border-radius:50%;background:rgba(0,0,0,.7);color:#fff;border:none;cursor:pointer;display:grid;place-items:center;font-size:14px;backdrop-filter:blur(4px);opacity:0;transition:opacity .2s,transform .2s}
.pkcard:hover .pkplay{opacity:1}
.pkplay:hover{transform:scale(1.1);background:var(--accent)}
@media(hover:none){.pkplay{opacity:1}}

/* NEW ARRIVALS (新着BGM) */
.new-arrivals{background:var(--paper);padding:2rem 1.5rem;border-bottom:1px solid var(--border)}
.nawrap{max-width:1280px;margin:0 auto}
.nahead{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:1.2rem;flex-wrap:wrap;gap:.6rem}
.nattl{font-family:var(--serif);font-size:1.5rem;font-weight:700;display:flex;align-items:center;gap:10px}
.nattl::before{content:'';width:5px;height:24px;background:linear-gradient(180deg,var(--accent2),var(--accent));border-radius:3px}
.nasub{font-size:12px;color:var(--muted)}
.narow{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px;scrollbar-width:thin}
.narow::-webkit-scrollbar{height:5px}
.narow::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.nacard{flex:0 0 180px;display:flex;flex-direction:column;border-radius:12px;overflow:hidden;background:var(--card);border:1px solid var(--border);scroll-snap-align:start;transition:transform .2s,box-shadow .2s;text-decoration:none;color:inherit}
.nacard:hover{transform:translateY(-3px);box-shadow:0 6px 20px rgba(26,16,8,.14);border-color:var(--accent)}
.nacard-img{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--warm2)}
.nacard-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s}
.nacard:hover .nacard-img img{transform:scale(1.06)}
.naplay{position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,.7);color:#fff;border:none;cursor:pointer;display:grid;place-items:center;font-size:13px;backdrop-filter:blur(4px);opacity:0;transition:opacity .2s,transform .2s;z-index:2}
.nacard:hover .naplay{opacity:1}
.naplay:hover{transform:scale(1.1);background:var(--accent)}
.naplay.playing{opacity:1;background:var(--accent)}
@media(hover:none){.naplay{opacity:1}}
.nacard-body{padding:10px 12px;flex:1;display:flex;flex-direction:column;gap:5px}
.na-genre{font-size:10px;font-weight:700;padding:2px 8px;border-radius:12px;background:var(--accent2);color:#fff;align-self:flex-start;letter-spacing:.04em}
.na-tit{font-size:13px;font-weight:800;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.na-meta{font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:auto}

/* GENRE SHOWCASE (Bento) */
.genshow{padding:2.5rem 1.5rem;background:var(--paper)}
.gswrap{max-width:1280px;margin:0 auto}
.gshead{margin-bottom:1.4rem;display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
.gsttl{font-family:var(--serif);font-size:1.5rem;font-weight:700;display:flex;align-items:center;gap:10px}
.gsttl::before{content:'';width:5px;height:24px;background:linear-gradient(180deg,var(--accent2),var(--accent));border-radius:3px}
.gssub{font-size:12px;color:var(--muted)}
.gsgrid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:140px;gap:10px}
.gscard{position:relative;border-radius:14px;overflow:hidden;background:var(--warm2);cursor:pointer;transition:transform .2s}
.gscard:hover{transform:translateY(-2px)}
.gscard img{width:100%;height:100%;object-fit:cover;transition:transform .35s,filter .25s;filter:brightness(.78)}
.gscard:hover img{transform:scale(1.05);filter:brightness(.6)}
.gscard.big{grid-column:span 2;grid-row:span 2}
.gscard.med{grid-row:span 2}
.gsover{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:14px 16px;color:#fff;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.5))}
.gsej{font-family:var(--serif);font-size:1.2rem;font-weight:700;line-height:1.2;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.gsen{font-size:10px;color:rgba(255,255,255,.7);letter-spacing:.08em;text-transform:uppercase;margin-top:2px}
.gscnt{position:absolute;top:10px;right:10px;font-size:10.5px;font-weight:800;background:rgba(0,0,0,.7);color:#fff;padding:3px 9px;border-radius:14px;backdrop-filter:blur(4px)}
.gscard.big .gsej{font-size:1.7rem}
.gscard.med .gsej{font-size:1.4rem}

/* RECENT (最近聴いた曲) */
.recent{padding:1.6rem 1.5rem;background:var(--paper);border-bottom:1px solid var(--border)}
.rwrap{max-width:1280px;margin:0 auto}
.rhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:.9rem;gap:.6rem;flex-wrap:wrap}
.rttl{font-size:13px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:8px;letter-spacing:.04em}
.rttl::before{content:'⏱';font-size:14px}
.rrow{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;scrollbar-width:thin}
.rrow::-webkit-scrollbar{height:6px}
.rrow::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.rcard{flex:0 0 220px;display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);background:var(--card);border-radius:10px;cursor:pointer;scroll-snap-align:start;transition:all .15s}
.rcard:hover{border-color:var(--accent);transform:translateX(-2px)}
.rcimg{width:42px;height:42px;border-radius:7px;background:var(--warm2);overflow:hidden;flex-shrink:0}
.rcimg img{width:100%;height:100%;object-fit:cover}
.rcinfo{min-width:0;flex:1}
.rcttl{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rcmeta{font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.rclear{font-size:11px;color:var(--muted);background:transparent;border:none;cursor:pointer;font-weight:600}
.rclear:hover{color:var(--accent)}

/* SKELETON */
.sk{background:linear-gradient(90deg,var(--warm) 0%,var(--warm2) 50%,var(--warm) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:14px;height:340px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.sk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}

/* TOAST */
.toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:24px;font-size:13px;font-weight:700;opacity:0;transition:all .25s;z-index:400;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* FAQ SECTION */
.faq{padding:3rem 1.5rem;background:var(--paper)}
.faqwrap{max-width:900px;margin:0 auto}
.faqhead{text-align:center;margin-bottom:2rem}
.faqttl{font-family:var(--serif);font-size:1.6rem;font-weight:700;margin-bottom:.4rem}
.faqsub{font-size:13px;color:var(--muted)}
.faqitem{border:1px solid var(--border);background:var(--card);border-radius:11px;margin-bottom:8px;overflow:hidden}
.faqq{padding:14px 18px;cursor:pointer;font-size:14px;font-weight:700;display:flex;justify-content:space-between;align-items:center;gap:10px;list-style:none;line-height:1.5}
.faqq::-webkit-details-marker{display:none}
.faqq::after{content:'+';font-size:22px;font-weight:300;color:var(--muted);transition:transform .2s;flex-shrink:0;line-height:1}
.faqitem[open] .faqq::after{transform:rotate(45deg)}
.faqitem[open] .faqq{border-bottom:1px solid var(--border)}
.faqa{padding:14px 18px 16px;font-size:13px;color:var(--muted);line-height:1.85}
.faqa b{color:var(--ink)}
.faqa code{background:var(--warm);padding:2px 7px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--ink)}

/* LICENSE SECTION */
.lic{padding:3rem 1.5rem;background:var(--warm)}
.licwrap{max-width:1100px;margin:0 auto}
.lichead{text-align:center;margin-bottom:2rem}
.licttl{font-family:var(--serif);font-size:1.6rem;font-weight:700;margin-bottom:.5rem}
.licsub{font-size:13px;color:var(--muted)}
.licgrid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.licbox{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1.4rem 1.5rem}
.licbox h4{font-size:14px;font-weight:800;margin-bottom:1rem;display:flex;align-items:center;gap:8px}
.lic-ok h4{color:var(--accent2)}
.lic-ng h4{color:var(--accent)}
.licbox ul{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px}
.licbox li{font-size:13px;line-height:1.6;display:flex;align-items:flex-start;gap:8px;color:var(--ink)}
.licbox li::before{flex-shrink:0;width:18px;text-align:center;font-weight:800}
.lic-ok li::before{content:'✓';color:var(--accent2)}
.lic-ng li::before{content:'✕';color:var(--accent)}
.lictip{margin-top:1.6rem;padding:1rem 1.2rem;background:var(--card);border:1px dashed var(--border);border-radius:10px;font-size:12.5px;color:var(--muted);text-align:center;line-height:1.7}
.lictip b{color:var(--ink)}
@media(max-width:640px){
  .licgrid{grid-template-columns:1fr}
  .licttl{font-size:1.3rem}
}

/* USE CASE (用途別シーン) */
.usec{background:var(--warm);padding:2rem 1.5rem;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.uwrap{max-width:1280px;margin:0 auto}
.uhead{display:flex;align-items:center;gap:14px;margin-bottom:1rem;flex-wrap:wrap}
.uttl{font-family:var(--serif);font-size:1.15rem;font-weight:700;display:flex;align-items:center;gap:8px}
.uttl::before{content:'';width:4px;height:18px;background:var(--accent3);border-radius:2px}
.usub{font-size:11.5px;color:var(--muted)}
.uchips{display:flex;flex-wrap:wrap;gap:8px}
.uchip{padding:9px 16px;border-radius:24px;border:1.5px solid var(--border);background:var(--card);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:7px}
.uchip:hover{border-color:var(--accent);color:var(--accent);background:var(--card)}
.uchip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.uchip .ic{font-size:16px}

/* TRUST BAR */
.trust{background:var(--warm);border-bottom:1px solid var(--border);padding:1.4rem 1.5rem}
.trustinner{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.tcell{display:flex;align-items:center;gap:11px;padding:.8rem 1rem;background:var(--card);border-radius:10px;border:1px solid var(--border)}
.tcell .ic{font-size:22px}
.tcell strong{display:block;font-size:13px;font-weight:700}
.tcell span{font-size:11px;color:var(--muted)}
.tcell-en{display:block;font-size:10px;color:rgba(29,233,182,.6);margin-top:2px;font-weight:600;letter-spacing:.03em}

/* MAIN */
.main{max-width:1280px;margin:0 auto;padding:2.5rem 1.5rem;display:grid;grid-template-columns:230px 1fr;gap:2rem;align-items:start}
.side{position:sticky;top:78px;display:flex;flex-direction:column;gap:1.5rem}
.sblock{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px}
.stitle{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px;padding:0 4px}
.catlist{display:flex;flex-direction:column;gap:2px;max-height:480px;overflow-y:auto}
.catbtn{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:8px;border:none;background:transparent;color:var(--muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;text-align:left;width:100%}
.catbtn:hover{background:var(--warm);color:var(--ink)}
.catbtn.active{background:var(--ink);color:var(--paper);font-weight:700}
html[data-theme="dark"] .catbtn.active{background:var(--accent);color:#fff}
.ccount{font-size:11px;background:rgba(0,0,0,.08);padding:1px 7px;border-radius:10px}
html[data-theme="dark"] .ccount{background:rgba(255,255,255,.1)}
.catbtn.active .ccount{background:rgba(255,255,255,.22)}

.fchips{display:flex;flex-wrap:wrap;gap:5px}
.fchip{font-size:11px;padding:5px 10px;border-radius:14px;border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;transition:all .15s;font-weight:600}
.fchip:hover{border-color:var(--accent);color:var(--accent)}
.fchip.on{background:var(--accent);color:#fff;border-color:var(--accent)}

/* CONTENT */
/* 適用中フィルタの一括表示バー */
.fbar{display:none;flex-wrap:wrap;align-items:center;gap:8px;background:linear-gradient(135deg,var(--warm) 0%,var(--paper) 100%);border:1px solid var(--border);border-radius:11px;padding:.7rem .9rem;margin-bottom:1rem}
.fbar.on{display:flex}
.fbar-label{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-right:4px}
.fbar-chip{font-size:12px;font-weight:600;padding:5px 10px 5px 12px;background:var(--card);border:1px solid var(--border);border-radius:14px;display:inline-flex;align-items:center;gap:6px;color:var(--ink);transition:all .12s}
.fbar-chip:hover{border-color:var(--accent)}
.fbar-chip .key{font-size:10px;color:var(--muted);font-weight:700}
.fbar-chip .x{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--warm2);color:var(--muted);border:none;cursor:pointer;font-size:11px;font-weight:800;line-height:1;padding:0;margin-left:4px}
.fbar-chip .x:hover{background:var(--accent);color:#fff}
.fbar-clear{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--muted);background:transparent;border:1px solid var(--border);padding:5px 13px;border-radius:14px;cursor:pointer;letter-spacing:.04em}
.fbar-clear:hover{border-color:var(--accent);color:var(--accent);background:var(--card)}
.fbar-count{font-size:12px;color:var(--accent);font-weight:800;font-variant-numeric:tabular-nums}

.ctop{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.4rem;flex-wrap:wrap;gap:1rem}
.ctitle{font-size:1.15rem;font-weight:700;display:flex;align-items:center;gap:10px}
.ctitle::before{content:'';display:block;width:4px;height:20px;background:var(--accent);border-radius:2px}
.ccount2{font-size:12px;color:var(--muted);font-weight:500;margin-left:6px}
.ctools{display:flex;gap:8px;align-items:center}
.csort{font-family:inherit;font-size:12px;color:var(--ink);border:1px solid var(--border);background:var(--card);padding:7px 12px;border-radius:7px;cursor:pointer;outline:none}

/* GRID */
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.scard{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;transition:all .2s;display:flex;flex-direction:column}
.scard:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-2px)}
.cthumb{position:relative;aspect-ratio:16/9;background:var(--warm2);overflow:hidden}
.cthumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.scard:hover .cthumb img{transform:scale(1.05)}
.cplay{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.5));opacity:0;transition:opacity .2s;cursor:pointer}
.scard:hover .cplay{opacity:1}
.cplay button{width:54px;height:54px;border-radius:50%;background:var(--accent);color:#fff;border:none;font-size:18px;cursor:pointer;display:grid;place-items:center;box-shadow:0 4px 14px rgba(0,0,0,.4)}
.cplay button:hover{background:var(--accent-h);transform:scale(1.08)}
.cplay button.playing{background:var(--accent2)}
.cmeta1{position:absolute;top:8px;left:8px;display:flex;gap:5px}
.cmeta2{position:absolute;top:8px;right:8px}
.gtag{font-size:10px;font-weight:700;padding:3px 9px;border-radius:14px;background:rgba(0,0,0,.65);color:#fff;backdrop-filter:blur(6px)}
.dur{font-size:10px;font-weight:700;padding:3px 9px;border-radius:14px;background:rgba(0,0,0,.65);color:#fff;backdrop-filter:blur(6px);font-variant-numeric:tabular-nums}
.cbody{padding:12px 14px 13px;display:flex;flex-direction:column;gap:8px;flex:1}
.ctit{font-size:14.5px;font-weight:800;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:40px;cursor:pointer;letter-spacing:.01em;color:inherit;text-decoration:none}
.ctit:hover{color:var(--accent)}
.cdesc{font-size:11.5px;color:var(--muted);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:36px;margin-top:-2px}
.ctags{display:flex;flex-wrap:wrap;gap:4px;min-height:20px}
.ctag{font-size:10px;font-weight:600;padding:2px 8px;border-radius:12px;background:var(--warm);color:var(--muted);letter-spacing:.02em;cursor:pointer;transition:all .12s;border:1px solid transparent;white-space:nowrap}
.ctag:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.crow{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:4px;border-top:1px solid var(--border)}
.cbpm{font-size:11px;color:var(--muted);font-weight:600;display:inline-flex;align-items:center;gap:4px}
.cbpm b{color:var(--ink);font-weight:800;font-variant-numeric:tabular-nums}
.cact{display:flex;gap:6px}

/* ジャンル別カラーアクセント (gtag) */
.gtag.g-ambient{background:rgba(45,125,210,.85)}
.gtag.g-cinematic{background:rgba(140,80,180,.85)}
.gtag.g-jazz{background:rgba(200,90,30,.85)}
.gtag.g-lo-fi{background:rgba(140,110,90,.85)}
.gtag.g-jpop{background:rgba(220,90,140,.85)}
.gtag.g-electronic{background:rgba(40,170,160,.85)}
.gtag.g-rock{background:rgba(200,60,60,.85)}
.gtag.g-pop{background:rgba(230,170,50,.85)}
.gtag.g-folk{background:rgba(110,150,90,.85)}
.gtag.g-hiphop{background:rgba(80,80,80,.85)}
.gtag.g-childrens{background:rgba(255,140,170,.85)}
.gtag.g-anime{background:rgba(190,80,120,.85)}
.gtag.g-horror{background:rgba(80,20,20,.9)}
.gtag.g-wafu{background:rgba(160,60,80,.85)}
.gtag.g-corporate{background:rgba(70,130,170,.85)}
.gtag.g-kpop{background:rgba(230,80,160,.85)}
.gtag.g-other{background:rgba(120,120,120,.85)}
.sbtn{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--card);cursor:pointer;display:grid;place-items:center;font-size:14px;color:var(--muted);transition:all .15s}
.sbtn:hover{border-color:var(--accent);color:var(--accent)}
.sbtn.on{color:var(--accent);border-color:var(--accent)}
.dlbtn{font-size:11px;font-weight:700;padding:6px 11px;border-radius:7px;border:1.5px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;transition:all .15s;text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.dlbtn:hover{border-color:var(--accent);color:var(--accent);background:var(--warm)}
.dlbtn.on{border-color:var(--accent);color:var(--accent);background:var(--warm)}

.loadmore{display:block;margin:2.5rem auto 0;padding:14px 38px;background:var(--card);border:1.5px solid var(--border);border-radius:10px;color:var(--ink);font-weight:700;cursor:pointer;font-size:14px;transition:all .15s}
.loadmore:hover{border-color:var(--accent);color:var(--accent);background:var(--warm)}
.empty{padding:4rem 1rem;text-align:center;color:var(--muted)}
.empty .em{font-size:3rem;margin-bottom:1rem}

/* PLAYER */
.pbar{position:fixed;bottom:0;left:0;right:0;background:var(--ink);color:#fff;border-top:1px solid rgba(255,255,255,.1);padding:11px 1.5rem calc(11px + env(safe-area-inset-bottom, 0px));padding-left:max(1.5rem, env(safe-area-inset-left, 0px));padding-right:max(1.5rem, env(safe-area-inset-right, 0px));z-index:200;transform:translateY(100%);transition:transform .3s ease;box-shadow:0 -4px 24px rgba(0,0,0,.2)}
html[data-theme="dark"] .pbar{background:#0a0805;color:#f3ece1}
.pbar.on{transform:translateY(0)}
.pinner{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:18px}
.pthumb{width:44px;height:44px;border-radius:8px;background:rgba(255,255,255,.1);overflow:hidden;flex-shrink:0;display:grid;place-items:center}
.pthumb img{width:100%;height:100%;object-fit:cover}
.pinfo{flex:0 0 200px;min-width:0}
.pname{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbar.on .pname{cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-color:rgba(255,255,255,.35)}
.pbar.on .pname:hover,.pbar.on .pname:active{opacity:.75;text-decoration-color:rgba(255,255,255,.75)}
.pcat{font-size:11px;color:rgba(255,255,255,.45)}
.pctrl{display:flex;align-items:center;gap:6px}
.cb{width:34px;height:34px;border-radius:50%;border:none;background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);cursor:pointer;display:grid;place-items:center;font-size:13px;transition:all .15s;position:relative}
.cb:hover{background:rgba(255,255,255,.18);color:#fff}
.cb.on{color:var(--accent);background:rgba(232,122,62,.18)}
.cb[title]::after{content:attr(title);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:rgba(0,0,0,.85);color:#fff;font-size:11px;font-weight:600;padding:5px 9px;border-radius:7px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;z-index:200;letter-spacing:.02em}
.cb[title]:hover::after{opacity:1}
.cpb{width:42px;height:42px;background:var(--accent);color:#fff;font-size:15px}
.cpb:hover{background:var(--accent-h)}
.parea{flex:1;display:flex;align-items:center;gap:10px;min-width:120px}
.ptime{font-size:11px;color:rgba(255,255,255,.5);flex-shrink:0;font-variant-numeric:tabular-nums}
.pseek{flex:1;height:5px;background:rgba(255,255,255,.13);border-radius:5px;cursor:pointer;position:relative;touch-action:none;user-select:none;-webkit-user-select:none}
.pfill{position:absolute;top:0;left:0;height:100%;background:var(--accent);border-radius:5px;width:0;pointer-events:none}
.pseek:hover .pfill{background:var(--accent-h)}
.pknob{display:none}/* デスクトップでは非表示 */
.vol{display:flex;align-items:center;gap:8px}
.vol input{width:80px;cursor:pointer;accent-color:var(--accent)}
.pdl{flex-shrink:0;font-size:12px;font-weight:700;padding:9px 16px;border-radius:7px;border:1px solid rgba(255,255,255,.22);background:transparent;color:rgba(255,255,255,.85);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:5px}
.pdl:hover{background:rgba(255,255,255,.12);color:#fff}
#dlBtn{display:none;text-decoration:none;padding:0;line-height:0;border:none}

/* DETAIL MODAL */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:300;display:none;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(6px)}
.modal.on{display:flex}
.mbox{background:var(--card);color:var(--ink);max-width:600px;width:100%;border-radius:14px;overflow:hidden;max-height:90vh;display:flex;flex-direction:column}
.mtop{padding:1.4rem 1.6rem;display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--border);gap:1rem}
.mttlwrap{flex:1;min-width:0}
.mgenre{display:inline-block;font-size:10px;font-weight:700;padding:3px 10px;border-radius:14px;background:var(--accent);color:#fff;letter-spacing:.04em;margin-bottom:6px}
.mtit{font-size:1.25rem;font-weight:800;line-height:1.4}
.mclose{background:transparent;border:none;font-size:24px;color:var(--muted);cursor:pointer;line-height:1}
.mbody{padding:1.4rem 1.6rem;overflow-y:auto}
.mimg{width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:var(--warm);margin-bottom:1.2rem}
.mimg img{width:100%;height:100%;object-fit:cover}
.mmeta{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-bottom:1rem}
.mm{background:var(--warm);padding:.7rem;border-radius:8px;text-align:center}
.mm .l{font-size:10px;color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.mm .v{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:2px}
.mdesc{font-size:13px;color:var(--muted);margin-bottom:1rem;line-height:1.7}
.mtags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:1rem}
.mtg{font-size:11px;padding:4px 10px;border-radius:14px;background:var(--warm);color:var(--ink);font-weight:600}
.mcredit{background:var(--warm);padding:.9rem 1rem;border-radius:8px;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}
.mcredit code{font-family:ui-monospace,Menlo,monospace;color:var(--ink);font-size:12px;font-weight:600}
.cpybtn{font-size:11px;font-weight:700;padding:6px 12px;border-radius:6px;border:1px solid var(--border);background:var(--card);color:var(--ink);cursor:pointer}
.cpybtn:hover{border-color:var(--accent);color:var(--accent)}
.mfoot{padding:1rem 1.6rem;border-top:1px solid var(--border);display:flex;gap:10px}
.mbtn{flex:1;padding:12px;font-size:14px;font-weight:700;border-radius:9px;border:none;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.mbtn.pri{background:var(--accent);color:#fff}
.mbtn.pri:hover{background:var(--accent-h)}
.mbtn.sec{background:var(--warm);color:var(--ink)}
.mbtn.sec:hover{background:var(--warm2)}

/* お問い合わせモーダル */
.contactmodal{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:280;display:none;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(8px)}
.contactmodal.on{display:flex}
.contactbox{background:var(--card);color:var(--ink);max-width:520px;width:100%;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.4);border:1px solid var(--border)}
.contacthead{padding:1.2rem 1.5rem;background:linear-gradient(135deg,var(--ink) 0%,#2a1810 100%);color:#fff;display:flex;justify-content:space-between;align-items:center}
.contacthead h3{font-size:1.1rem;font-weight:800;margin:0}
.contactbody{padding:1.4rem 1.5rem;display:flex;flex-direction:column;gap:1rem}
.contactbody label{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;display:block;margin-bottom:5px}
.contactbody select,.contactbody input,.contactbody textarea{width:100%;font-family:var(--font);font-size:14px;padding:10px 13px;border:1.5px solid var(--border);border-radius:9px;background:var(--paper);color:var(--ink);outline:none;transition:all .2s;box-sizing:border-box}
.contactbody select:focus,.contactbody input:focus,.contactbody textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(200,90,30,.12)}
.contactbody textarea{min-height:110px;resize:vertical;line-height:1.6}
.contactfoot{padding:1rem 1.5rem;border-top:1px solid var(--border);display:flex;gap:10px}
@media(max-width:640px){
  .contactbody select,.contactbody input,.contactbody textarea{font-size:16px !important}
  .contactmodal{padding:0;align-items:flex-end}
  .contactbox{border-radius:20px 20px 0 0;max-height:90dvh;display:flex;flex-direction:column}
  .contactbody{overflow-y:auto;flex:1}
}

/* FOOTER */
footer{background:var(--ink);color:rgba(255,255,255,.5);padding:3rem 1.5rem;margin-top:4rem}
html[data-theme="dark"] footer{background:#0a0805}
.finner{max-width:1280px;margin:0 auto}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:3rem;margin-bottom:2rem}
.fcol h3{font-size:11px;font-weight:700;color:rgba(255,255,255,.7);letter-spacing:.1em;text-transform:uppercase;margin-bottom:1rem}
.fcol a{display:block;font-size:13px;color:rgba(255,255,255,.45);text-decoration:none;margin-bottom:7px;transition:color .15s}
.fcol a:hover{color:rgba(255,255,255,.9)}
.fabout p{font-size:12px;line-height:1.85;color:rgba(255,255,255,.55);margin-bottom:.7rem}
.fbot{border-top:1px solid rgba(255,255,255,.08);padding-top:1.5rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.flogo{font-family:var(--serif);font-size:16px;font-weight:700;color:#fff}
.fcopy{font-size:11px;color:rgba(255,255,255,.3)}

/* RESPONSIVE */
@media(max-width:1100px){
  .herowrap{grid-template-columns:1fr 300px}
}
@media(max-width:980px){
  .main{grid-template-columns:1fr}
  .side{position:static;flex-direction:row;flex-wrap:wrap;gap:.8rem}
  .sblock{flex:1;min-width:240px}
  .catlist{max-height:200px}
  .trustinner{grid-template-columns:1fr 1fr}
  .herowrap{grid-template-columns:1fr}
  .hero-navi-bg{display:none}
  .hero-panel{display:flex;margin-top:1.5rem}
  nav{display:none}
  .fgrid{grid-template-columns:1fr 1fr;gap:1.5rem}
  .gsgrid{grid-template-columns:repeat(3,1fr);grid-auto-rows:120px}
  .gscard.big{grid-column:span 2;grid-row:span 2}
}
@media(max-width:640px){
  .hwrap{padding:0 1rem;gap:.5rem}
  .logo-sub{display:none}
  .iconbtn{width:34px;height:34px;font-size:14px}
  .htag{white-space:normal;font-size:10.5px;padding:5px 10px;max-width:100%}
  .hbadge{display:none}
  .sgrid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:10px}
  .ctit{font-size:13px;min-height:36px}
  /* モバイルでも常に1行だけ表示（ぱっと見で内容がわかるように） */
  .cdesc{-webkit-line-clamp:1;min-height:0;font-size:11px}
  .ctags{display:none}
  .mmeta{grid-template-columns:1fr 1fr}
  .fgrid{grid-template-columns:1fr}
  .gsgrid{grid-template-columns:repeat(2,1fr);grid-auto-rows:110px}
  .gscard.big,.gscard.med{grid-column:span 1;grid-row:span 1}
  .gscard .gsej{font-size:1rem !important}
  .pkrow{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
  .pkttl,.gsttl{font-size:1.2rem}
  /* 検索ボックス: input全幅1行目 → 3ボタン横並び2行目（横長レイアウト） */
  .hsearch{max-width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .hsearch input{grid-column:1/-1;font-size:16px;min-width:0}
  .hsearch button{min-width:0;padding:12px 5px;font-size:12px;justify-content:center;text-align:center}
  /* モバイルではラジオサブタイトルを非表示（縦長崩れ防止） */
  .radiosub{display:none}
  /* hstats: gap:2.5rem(40px)→1rem に縮小 */
  .hstats{gap:1rem}
  /* iOSのinputズームイン防止: font-size 16px未満だと自動ズームするため */
  input,textarea,select{font-size:16px !important}
  /* trustinner: 2カラム(158px)→1カラム(フル幅)に */
  .trustinner{grid-template-columns:1fr}
  /* tcell: min-width:auto を解消して flex子が縮まれるように */
  .tcell{min-width:0}
  /* モバイルプレイヤー分の余白 (3行で~140px) */
  body{padding-bottom:160px}
  /* ======== モバイルプレイヤー 3行レイアウト ======== */
  /* 行1: サムネ + 曲名情報 + アニメバー */
  /* 行2: コントロールボタン (中央揃え) */
  /* 行3: シークバー (全幅) */
  .pbar{padding:8px 1rem calc(8px + env(safe-area-inset-bottom,0px))}
  .pinner{flex-wrap:wrap;gap:4px 8px;align-items:center}
  /* 行1 */
  .pthumb{order:1;width:38px;height:38px;flex-shrink:0}
  .pinfo{order:1;flex:1;min-width:0}
  .pbars{order:1;flex-shrink:0}
  /* 行2: pctrl を全幅で独立行に。ボタンが多い端末では折り返してタップ領域(42px)を確保 */
  .pctrl{order:2;width:100%;justify-content:center;gap:6px;margin-top:2px;flex-wrap:wrap}
  /* モバイルはシャッフルのみ退避。看板機能の🔮(似た曲)・共有🔗・＋・DLは常時表示する。
     ※ 旧来は🔮もスマホで非表示で「似た曲がスマホで使えない」状態だった（2026-06-13修正） */
  #shufBtn{display:none}
  /* 44px以上タップ領域 */
  .cb{width:42px;height:42px;font-size:14px}
  .cpb{width:48px;height:48px;font-size:16px}
  /* 行3: シークバー全幅 */
  .parea{display:flex;order:3;width:100%;min-width:0;margin-top:2px}
  .vol,.pdl{display:none}
  #dlBtn{display:grid;place-items:center}
  /* ===== モバイルシークバー（完全作り直し） ===== */
  /* タップ領域 32px、視覚トラック 6px */
  .pseek{
    height:32px;
    background:rgba(255,255,255,.45); /* 高コントラスト白トラック */
    border-radius:6px;
    overflow:visible;
  }
  /* トラック全幅 (::before を廃止し .pseek 自体に背景を持たせる) */
  .pfill{height:6px;top:50%;transform:translateY(-50%);border-radius:6px}
  /* ツマミ専用要素 — 常時表示・指で隠れない16px */
  .pknob{
    display:block;
    position:absolute;
    top:50%;
    left:0;                            /* JSで更新 */
    transform:translate(-50%,-50%);
    width:16px;height:16px;
    border-radius:50%;
    background:#fff;
    box-shadow:0 1px 8px rgba(0,0,0,.55);
    pointer-events:none;
    z-index:2;
    transition:left .05s linear;
  }
  .ptime{font-size:10px}
  /* ======== モバイルモーダル: ボトムシート化 ======== */
  /* キーボードが上がると dvh が縮小 → モーダルが自動的に小さくなる */
  .aimodal{padding:0;align-items:flex-end}
  .aibox{
    border-radius:20px 20px 0 0;
    max-height:90dvh;       /* キーボード表示時に縮む dynamic viewport */
    max-height:90svh;       /* 古いiOSフォールバック */
    display:flex;flex-direction:column;
    overflow:hidden;
  }
  .aibody{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;min-height:0}
  /* iOS ズーム防止: フォントサイズ16px未満の入力欄はフォーカス時にズームする */
  .rmcustom input,.rmopts select,.aiform textarea{font-size:16px !important}
  /* フッターの列を1列に */
  .fcol a{color:rgba(255,255,255,.7)}
}

/* ===== ナビちゃん（ナビゲーターキャラ） ===== */
.navi-chan{display:flex;align-items:flex-end;gap:14px;position:relative;flex-wrap:wrap}
.navi-chan.right{flex-direction:row-reverse}
.navi-img{width:110px;height:165px;flex-shrink:0;
  border-radius:14px;overflow:hidden;
  border:2px solid var(--accent3);
  box-shadow:0 0 18px rgba(123,94,167,.35),0 6px 24px rgba(0,0,0,.18);
  background:#000;position:relative}
.navi-img img{width:100%;height:100%;object-fit:cover;display:block}
.navi-img .navi-name{position:absolute;left:0;right:0;bottom:0;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.85));
  color:#fff;text-align:center;font-size:10px;font-weight:bold;
  padding:14px 4px 6px;letter-spacing:.5px}
.navi-bubble{background:rgba(123,94,167,.07);border:1.5px solid var(--accent3);
  border-radius:16px;padding:14px 18px;max-width:560px;
  font-size:14.5px;color:var(--ink);position:relative;line-height:1.7;
  box-shadow:0 0 12px rgba(123,94,167,.1)}
.navi-bubble strong{color:var(--accent3)}
.navi-bubble::before{content:"";position:absolute;width:12px;height:12px;
  background:var(--paper);border:1.5px solid var(--accent3);
  border-top:none;border-right:none;
  transform:rotate(45deg);bottom:18px;left:-7px}
.navi-chan.right .navi-bubble::before{
  border:1.5px solid var(--accent3);border-bottom:none;border-left:none;
  left:auto;right:-7px}
.navi-tag{display:inline-block;font-family:'Menlo','SFMono-Regular',monospace;
  font-size:10px;color:var(--accent3);background:rgba(123,94,167,.14);
  padding:2px 8px;border-radius:6px;margin-right:8px;letter-spacing:.5px}
.navi-qa{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.navi-qa button{font-size:12px;background:transparent;
  border:1px solid var(--accent3);color:var(--accent3);padding:6px 12px;
  border-radius:999px;cursor:pointer;font-family:inherit;transition:all .15s}
.navi-qa button:hover{background:var(--accent3);color:#fff}

/* ヒーロー直下の挨拶バンド (ヒーローと同じ黒で連続感) */
.navi-greet .navi-img{width:150px;height:240px}
.navi-greet .navi-img img{object-position:center top}
.navi-greet{background:#0d0b08;padding:0 1.5rem 60px;color:#fff;
  position:relative}
html[data-theme="dark"] .navi-greet{background:#0a0805}
.navi-greet::after{content:'';position:absolute;left:0;right:0;bottom:-1px;
  height:60px;background:linear-gradient(180deg,transparent,var(--paper))}
.navi-greet-wrap{max-width:1100px;margin:0 auto;position:relative;z-index:1}
.navi-greet .navi-bubble{background:rgba(123,94,167,.14);color:#f3ece1;
  border-color:#a988d4}
.navi-greet .navi-bubble strong{color:#c5a8e8}
.navi-greet .navi-bubble::before{background:#0d0b08;border-color:#a988d4}
.navi-greet .navi-tag{color:#c5a8e8;background:rgba(123,94,167,.25)}
.navi-greet .navi-qa button{border-color:#a988d4;color:#c5a8e8}
.navi-greet .navi-qa button:hover{background:#a988d4;color:#0d0b08}

/* ===== CHERI 紹介セクション（AI K-POPアイドル） ===== */
.cheri-promo{background:var(--paper);padding:0 1.5rem 2.6rem}
.cheri-wrap{max-width:1100px;margin:0 auto}
.cheri-card{display:flex;align-items:center;gap:30px;
  background:linear-gradient(135deg,#1b0c19 0%,#2c0f26 48%,#1a0a1f 100%);
  border:1px solid rgba(255,124,200,.35);border-radius:22px;
  padding:26px 34px;text-decoration:none;position:relative;overflow:hidden;
  box-shadow:0 12px 44px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,124,200,.07);
  transition:transform .26s cubic-bezier(.16,1,.3,1),box-shadow .26s}
.cheri-card::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 55% 90% at 10% 50%,rgba(255,77,166,.24),transparent 60%),
             radial-gradient(ellipse 50% 75% at 92% 15%,rgba(170,77,255,.20),transparent 55%)}
.cheri-card:hover{transform:translateY(-3px);
  box-shadow:0 18px 54px rgba(255,77,166,.28),inset 0 0 0 1px rgba(255,124,200,.18)}
.cheri-icon{flex-shrink:0;width:120px;height:120px;border-radius:50%;overflow:hidden;
  position:relative;z-index:1;border:2px solid rgba(255,150,212,.65);
  box-shadow:0 0 26px rgba(255,77,166,.45)}
.cheri-icon img{width:100%;height:100%;object-fit:cover;display:block}
.cheri-body{position:relative;z-index:1;flex:1;min-width:0}
.cheri-badge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.13em;
  color:#ff9ad4;background:rgba(255,77,166,.15);border:1px solid rgba(255,124,200,.4);
  padding:4px 13px;border-radius:20px;margin-bottom:11px}
.cheri-name{font-family:var(--serif);font-size:clamp(1.4rem,3vw,2rem);font-weight:700;
  color:#fff;line-height:1.32;margin:0 0 9px}
.cheri-name em{font-style:normal;letter-spacing:.04em;
  background:linear-gradient(135deg,#ff4da6 0%,#ff8cc6 50%,#c084ff 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.cheri-desc{font-size:14px;color:rgba(255,255,255,.74);line-height:1.85;
  margin:0 0 18px;max-width:520px}
.cheri-btn{display:inline-flex;align-items:center;gap:8px;
  background:linear-gradient(135deg,#ff2e93,#ff5fb0);color:#fff;font-weight:800;
  font-size:14.5px;padding:12px 28px;border-radius:30px;
  box-shadow:0 6px 22px rgba(255,46,147,.45);transition:transform .2s,box-shadow .2s}
.cheri-card:hover .cheri-btn{transform:scale(1.045);box-shadow:0 9px 28px rgba(255,46,147,.62)}
@media(max-width:640px){
  .cheri-promo{padding:0 1rem 2rem}
  .cheri-card{flex-direction:column;text-align:center;gap:18px;padding:26px 22px}
  .cheri-icon{width:132px;height:132px}
  .cheri-desc{margin-left:auto;margin-right:auto}
}
@media(prefers-reduced-motion:reduce){
  .cheri-card,.cheri-btn{transition:none}
  .cheri-card:hover{transform:none}
  .cheri-card:hover .cheri-btn{transform:none}
}

/* FAQ末尾コンパニオン */
.navi-card{background:rgba(123,94,167,.06);border:1px solid var(--accent3);
  border-radius:14px;padding:18px;margin-top:24px;display:flex;gap:14px;
  align-items:flex-start}
.navi-card .navi-img{width:80px;height:120px}
.navi-card-text{font-size:14px;color:var(--ink);line-height:1.7}
.navi-who{font-size:11px;color:var(--accent3);
  font-family:'Menlo',monospace;letter-spacing:1px;margin-bottom:4px}

/* 右下フローティング常駐 */
.navi-fab{position:fixed;
  bottom:calc(18px + env(safe-area-inset-bottom, 0px));
  right:calc(18px + env(safe-area-inset-right, 0px));
  z-index:210;
  display:flex;flex-direction:column;align-items:flex-end;gap:10px;
  pointer-events:none;
  transition:bottom .3s ease}
.navi-fab > *{pointer-events:auto}
/* プレイヤーバー表示時は上にずらす（プレイヤー高さ約160px分） */
body:has(.pbar.on) .navi-fab{
  bottom:calc(172px + env(safe-area-inset-bottom, 0px))}
/* プレイリストボタン表示時は上にずらして重ならないようにする */
body:has(.plpill.on) .navi-fab{
  bottom:calc(140px + env(safe-area-inset-bottom, 0px))}
body:has(.pbar.on):has(.plpill.on) .navi-fab{
  bottom:calc(240px + env(safe-area-inset-bottom, 0px))}
/* モバイル: プレイリストボタン表示中・再生中の重なり防止 */
@media(max-width:640px){
  body:has(.plpill.on) .navi-fab{
    bottom:calc(230px + env(safe-area-inset-bottom, 0px))}
  body:has(.pbar.on) .plpill{
    bottom:calc(220px + env(safe-area-inset-bottom, 0px))}
  body:has(.pbar.on):has(.plpill.on) .navi-fab{
    bottom:calc(290px + env(safe-area-inset-bottom, 0px))}
}
.navi-fab-bubble{max-width:260px;font-size:13px;line-height:1.6;
  background:var(--paper);border:1.5px solid var(--accent3);
  border-radius:14px;padding:12px 14px;color:var(--ink);
  box-shadow:0 6px 20px rgba(0,0,0,.18);
  display:none;animation:naviPop .35s ease-out;position:relative}
.navi-fab-bubble strong{color:var(--accent3)}
.navi-fab-bubble .navi-close{position:absolute;top:6px;right:8px;
  background:transparent;border:none;color:var(--ink-dim,#888);
  cursor:pointer;font-size:16px;line-height:1;padding:4px 8px}
.navi-fab.open .navi-fab-bubble{display:block}
.navi-fab-btn{width:60px;height:60px;border-radius:50%;
  border:2px solid var(--accent3);overflow:hidden;cursor:pointer;
  box-shadow:0 0 18px rgba(123,94,167,.5),0 6px 18px rgba(0,0,0,.3);
  background:#000;animation:naviPulse 3s ease-in-out infinite;
  padding:0;transition:transform .2s;
  /* iOSでタップハイライトを抑える */
  -webkit-tap-highlight-color:transparent}
.navi-fab-btn img{width:100%;height:100%;object-fit:cover;
  object-position:center 15%;display:block}
.navi-fab-btn:hover{transform:scale(1.06)}
.navi-fab-quick{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.navi-fab-quick a{font-size:12px;text-decoration:none;
  color:var(--accent3);padding:6px 12px;border:1px solid var(--accent3);
  border-radius:999px;background:transparent;text-align:center;transition:all .15s}
.navi-fab-quick a:hover{background:var(--accent3);color:#fff}

@keyframes naviPulse{
  0%,100%{box-shadow:0 0 18px rgba(123,94,167,.5),0 6px 18px rgba(0,0,0,.3)}
  50%{box-shadow:0 0 32px rgba(123,94,167,.8),0 6px 22px rgba(0,0,0,.4)}
}
@keyframes naviPop{
  from{opacity:0;transform:translateY(8px) scale(.95)}
  to{opacity:1;transform:translateY(0) scale(1)}
}

/* タブレット〜スマホ */
@media (max-width:760px){
  .navi-greet{padding:24px 1rem 36px}
  .navi-img{width:96px;height:144px}
  .navi-greet .navi-img{width:120px;height:190px}
  .navi-bubble{font-size:13.5px;padding:12px 14px;line-height:1.65}
  .navi-bubble::before{bottom:14px}
  .navi-qa button{font-size:11.5px;padding:5px 10px}
  .navi-card{padding:14px;flex-wrap:wrap}
  .navi-card .navi-img{width:74px;height:110px}
}

/* 狭い縦長スマホ: 画像と吹き出しを縦積みにして横はみ出しを防ぐ */
@media (max-width:480px){
  .navi-chan{flex-direction:column;align-items:flex-start;gap:10px}
  .navi-chan.right{flex-direction:column;align-items:flex-end}
  .navi-img{width:84px;height:126px}
  .navi-greet .navi-img{width:100px;height:160px}
  .navi-bubble{max-width:100%;width:100%}
  .navi-bubble::before{display:none}
  .navi-qa{gap:6px}
  .navi-fab-btn{width:54px;height:54px;
    animation:naviPulse 3.5s ease-in-out infinite}
  .navi-fab-bubble{max-width:calc(100vw - 88px);font-size:12.5px;padding:10px 12px;
    /* ぶつからないように右マージン */}
  .navi-fab-bubble .navi-close{font-size:18px;padding:6px 10px}
  .navi-fab-quick a{font-size:11.5px;padding:6px 10px}
  body:has(.pbar.on) .navi-fab{
    bottom:calc(156px + env(safe-area-inset-bottom, 0px))}
}

/* 体感パフォーマンス: 動きを苦手とするユーザー向けにアニメ無効 */
@media (prefers-reduced-motion: reduce){
  .navi-fab-btn{animation:none}
  .navi-fab-bubble{animation:none}
}

/* ===== ナビちゃん チャットパネル ===== */
.navi-chat-panel{
  position:fixed;bottom:calc(88px + env(safe-area-inset-bottom,0px));
  right:calc(14px + env(safe-area-inset-right,0px));
  width:min(400px,calc(100vw - 28px));max-height:580px;
  background:var(--paper);border:2px solid var(--accent3);
  border-radius:20px;box-shadow:0 16px 48px rgba(0,0,0,.28);
  display:flex;flex-direction:column;overflow:hidden;
  transform:translateY(20px) scale(.97);opacity:0;
  pointer-events:none;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .25s ease;
  z-index:220}
.navi-chat-panel.open{transform:translateY(0) scale(1);opacity:1;pointer-events:auto}
body:has(.pbar.on) .navi-chat-panel{bottom:calc(182px + env(safe-area-inset-bottom,0px))}
.navi-chat-header{display:flex;align-items:center;gap:12px;
  padding:12px 16px;border-bottom:1px solid rgba(123,94,167,.2);flex-shrink:0}
.navi-chat-avatar{width:74px;height:74px;border-radius:50%;overflow:hidden;
  border:2.5px solid var(--accent3);flex-shrink:0}
.navi-chat-avatar img{width:100%;height:100%;object-fit:cover;object-position:center 15%}
.navi-chat-name{font-weight:800;font-size:16px;color:var(--accent3);flex:1}
.navi-chat-status{font-size:12px;color:var(--ink-dim,#888)}
.navi-chat-x{background:transparent;border:none;color:var(--ink-dim,#888);
  cursor:pointer;font-size:20px;line-height:1;padding:4px 6px}
.navi-chat-messages{flex:1;overflow-y:auto;padding:12px 14px;
  display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}
.navi-chat-messages::-webkit-scrollbar{width:4px}
.navi-chat-messages::-webkit-scrollbar-thumb{background:rgba(123,94,167,.3);border-radius:4px}
.navi-msg{display:flex;gap:8px;align-items:flex-end;max-width:100%}
.navi-msg.user{flex-direction:row-reverse}
.navi-msg-av{width:64px;height:64px;border-radius:50%;overflow:hidden;
  border:2px solid var(--accent3);flex-shrink:0}
.navi-msg-av img{width:100%;height:100%;object-fit:cover;object-position:center 15%}
.navi-msg-bubble{max-width:76%;padding:11px 15px;border-radius:18px;
  font-size:15px;line-height:1.7;word-break:break-word}
.navi-msg.navi .navi-msg-bubble{background:rgba(123,94,167,.08);
  border:1px solid rgba(123,94,167,.2);color:var(--ink);border-bottom-left-radius:4px}
.navi-msg.user .navi-msg-bubble{background:var(--accent3);
  color:#fff;border-bottom-right-radius:4px}
.navi-msg-bubble strong{color:var(--accent3)}
.navi-msg.user .navi-msg-bubble strong{color:#fff}
/* 曲カード */
.navi-song-list{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.navi-song-card{display:flex;align-items:center;gap:9px;
  background:rgba(123,94,167,.07);border:1px solid rgba(123,94,167,.18);
  border-radius:10px;padding:7px 10px;cursor:pointer;transition:all .15s;
  text-align:left;width:100%}
.navi-song-card:hover{background:rgba(123,94,167,.15);transform:translateX(2px)}
.navi-song-thumb{width:40px;height:40px;border-radius:7px;overflow:hidden;
  flex-shrink:0;background:#111}
.navi-song-thumb img{width:100%;height:100%;object-fit:cover}
.navi-song-info{flex:1;min-width:0}
.navi-song-title{font-size:14px;font-weight:700;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.navi-song-meta{font-size:12px;color:var(--ink-dim,#888);margin-top:2px}
/* おすすめ理由チップ（同ジャンル/近いテンポ/似た雰囲気） */
.navi-why{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.navi-why-chip{font-size:10.5px;line-height:1;color:var(--accent3,#7b5ea7);
  background:rgba(123,94,167,.12);border:1px solid rgba(123,94,167,.3);
  border-radius:999px;padding:3px 8px;font-weight:700;white-space:nowrap}
.navi-why-chip::before{content:'・';margin-right:-2px}
.navi-song-play{color:var(--accent3);font-size:18px;flex-shrink:0}
/* 入力エリア */
.navi-chat-input-wrap{display:flex;gap:8px;padding:10px 12px;
  border-top:1px solid rgba(123,94,167,.2);flex-shrink:0}
.navi-chat-input{flex:1;border:2px solid rgba(123,94,167,.3);
  border-radius:999px;padding:10px 16px;font-size:15px;
  background:var(--paper);color:var(--ink);outline:none;font-family:inherit}
.navi-chat-input:focus{border-color:var(--accent3)}
.navi-chat-send{width:36px;height:36px;border-radius:50%;
  background:var(--accent3);border:none;color:#fff;
  cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:transform .15s}
.navi-chat-send:hover{transform:scale(1.08)}
/* タイピング */
.navi-typing{display:flex;gap:4px;align-items:center;padding:4px 0}
.navi-typing span{width:7px;height:7px;border-radius:50%;
  background:var(--accent3);opacity:.5;animation:naviDot 1.2s ease-in-out infinite}
.navi-typing span:nth-child(2){animation-delay:.2s}
.navi-typing span:nth-child(3){animation-delay:.4s}
@keyframes naviDot{0%,80%,100%{transform:scale(.8)}40%{transform:scale(1.2);opacity:1}}
.navi-song-hint{font-size:11px;color:var(--accent3);opacity:.7;margin-top:4px;margin-bottom:2px;letter-spacing:.03em}
/* サジェストチップ */
.navi-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.navi-chip{font-size:11.5px;background:transparent;
  border:1px solid var(--accent3);color:var(--accent3);
  padding:4px 10px;border-radius:999px;cursor:pointer;transition:all .15s;
  font-family:inherit}
.navi-chip:hover{background:var(--accent3);color:#fff}
/* 常駐サイト案内バー */
.navi-about-bar{padding:5px 12px;border-top:1px solid rgba(123,94,167,.18);background:rgba(123,94,167,.05);display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}
.navi-about-btn{font-size:11.5px;padding:5px 12px;border-radius:999px;border:1.5px solid rgba(123,94,167,.45);background:transparent;color:var(--accent3);cursor:pointer;font-weight:600;transition:all .15s;font-family:inherit}
.navi-about-btn:hover{background:rgba(123,94,167,.18);border-color:var(--accent3)}
@media(max-width:480px){
  .navi-chat-panel{width:calc(100vw - 28px);max-height:70vh;
    right:14px;left:14px}}
