/* ============================================
   ToolWall Design System
   ============================================ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root {
  color-scheme: light;
  --bg: #f8fafc; --panel: #ffffff; --text: #0f172a; --text-muted: #64748b;
  --primary-color: #dc2626; --primary-hover: #b91c1c;
  --success: #22c55e; --danger: #ef4444;
  --border-color: #e2e8f0; --input-bg: #ffffff;
  --radius: 0.5rem;
  --accent: 210 40% 96%;
  --player-mini-bg: #ffffff; --player-mini-border: #e2e8f0;
  --player-expanded-bg: rgba(0,0,0,0.92);
  --card-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.06);
  --card-hover-shadow: 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04);
}
html[data-theme="dark"] {
  --bg: #0f172a; --panel: #1e293b; --text: #f1f5f9; --text-muted: #94a3b8;
  --border-color: #334155; --input-bg: #1e293b;
  --player-mini-bg: #1e293b; --player-mini-border: #334155;
  --player-expanded-bg: rgba(0,0,0,0.95);
  --card-shadow: 0 1px 3px rgba(0,0,0,0.2);
  --card-hover-shadow: 0 4px 12px rgba(0,0,0,0.3);
  --accent: 217.2 32.6% 17.5%;
}

/* Reset */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;padding-bottom:80px}
a{color:var(--primary-color);text-decoration:none;transition:opacity .2s}
a:hover{opacity:.8}
button{cursor:pointer;font-family:inherit;font-size:.875rem}

/* ===== Header & Nav ===== */
.site-header{padding:10px 24px;border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:900;backdrop-filter:blur(16px);background:hsla(0,0%,100%,.85)}
html[data-theme="dark"] .site-header{background:hsla(222,84%,5%,.85)}
.site-nav{display:flex;align-items:center;max-width:1200px;margin:0 auto}
.nav-brand{display:flex;align-items:center;gap:8px;color:var(--text);font-weight:700;font-size:1.05rem;text-decoration:none;flex-shrink:0}
.nav-brand:hover{opacity:1}
.brand-icon{width:32px;height:32px;background:var(--primary-color);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff}
.brand-icon svg{width:18px;height:18px}
.nav-links{display:flex;gap:4px;margin:0 auto}
.nav-link{padding:6px 14px;border-radius:var(--radius);font-size:.875rem;font-weight:500;color:var(--text-muted);transition:all .2s}
.nav-link:hover{background:hsl(var(--accent));color:var(--text);opacity:1}
.nav-link.active{background:var(--primary-color);color:#fff}
.theme-toggle{background:transparent;border:1px solid var(--border-color);color:var(--text-muted);width:36px;height:36px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0;padding:0}
.theme-toggle:hover{background:hsl(var(--accent));color:var(--text)}
.theme-icon{display:block}

/* ===== Footer ===== */
.site-footer{padding:16px 20px;border-top:1px solid var(--border-color);color:var(--text-muted);font-size:.8rem;text-align:center}

/* ===== Main ===== */
.page-main{max-width:1200px;margin:0 auto;padding:24px 24px}

/* ===== Homepage ===== */
.toolwall-home{display:flex;flex-direction:column;align-items:center}

/* Search Bar */
.search-bar-wrap{width:100%;max-width:680px;margin:32px auto 0;position:relative}
.search-bar{display:flex;align-items:center;background:var(--panel);border:1px solid var(--border-color);border-radius:12px;padding:6px 8px 6px 16px;gap:8px;box-shadow:var(--card-shadow);transition:border-color .2s,box-shadow .2s}
.search-bar:focus-within{border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(220,38,38,.1)}
.search-icon{color:var(--text-muted);display:flex;flex-shrink:0}
.search-bar input{flex:1;border:none;background:transparent;color:var(--text);font-size:.9rem;font-family:inherit;outline:none;padding:8px 4px;min-width:0}
.search-bar input::placeholder{color:var(--text-muted)}
.engine-switch{display:flex;gap:4px;flex-shrink:0}
.engine-btn{padding:6px 14px;border:none;background:transparent;color:var(--text-muted);border-radius:8px;font-size:.8rem;font-weight:600;transition:all .2s}
.engine-btn.active{background:var(--primary-color);color:#fff}
.engine-btn:hover:not(.active){background:hsl(var(--accent))}

/* Search Dropdown */
.search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--panel);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:280px;overflow-y:auto;display:none;z-index:50}
.search-dropdown.visible{display:block}
.search-dropdown-item{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;transition:background .15s;font-size:.85rem}
.search-dropdown-item:hover{background:hsl(var(--accent))}
.search-dropdown-item img{width:20px;height:20px;border-radius:4px;flex-shrink:0}
.search-dropdown-item .sdi-name{font-weight:500;color:var(--text)}
.search-dropdown-item .sdi-desc{color:var(--text-muted);margin-left:auto;font-size:.75rem}

/* Date & Tagline */
.date-tagline{margin:16px 0 20px;color:var(--text-muted);font-size:.8rem;text-align:center;display:flex;align-items:center;gap:8px;justify-content:center}
.tagline-sep{opacity:.4}

/* Category List */
.category-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:24px}
.category-btn{padding:6px 18px;border:1px solid var(--border-color);background:transparent;color:var(--text-muted);border-radius:999px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}
.category-btn:hover{border-color:var(--primary-color);color:var(--primary-color)}
.category-btn.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}

/* Link Card Grid — compact, auto-fill */
.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;width:100%}
.link-card{background:var(--panel);border:1px solid var(--border-color);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px;transition:border-color .2s,box-shadow .2s,transform .2s;cursor:pointer;text-decoration:none;position:relative;overflow:hidden}
.link-card:hover{border-color:var(--primary-color);box-shadow:var(--card-hover-shadow);transform:translateY(-2px);opacity:1}
.link-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.link-card-icon{width:36px;height:36px;border-radius:8px;object-fit:contain;flex-shrink:0;background:hsl(var(--accent))}
.link-card-icon-placeholder{width:36px;height:36px;border-radius:8px;background:hsl(var(--accent));display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0;color:var(--text-muted)}
.link-card-status{display:flex;align-items:center;gap:4px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;flex-shrink:0;padding-top:2px}
.link-card-status .status-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.status-up{background:var(--success)}.status-down{background:var(--danger)}
.link-card-status.up{color:var(--success)}.link-card-status.down{color:var(--danger)}
.link-card-name{font-size:.85rem;font-weight:600;color:var(--text);line-height:1.3}
.link-card-desc{font-size:.75rem;color:var(--text-muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ===== Shared Page Styles ===== */
.link-list,.blog-list,.song-list{list-style:none}
input[type="text"],input[type="search"]{flex:1;border:1px solid var(--border-color);background:var(--input-bg);color:var(--text);border-radius:var(--radius);padding:8px 12px;font-size:.875rem;font-family:inherit;outline:none;transition:border-color .2s,box-shadow .2s}
input[type="text"]:focus,input[type="search"]:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(220,38,38,.1)}

/* Page Header (shared) */
.page-header{text-align:center;margin-bottom:28px}
.page-title{font-size:1.6rem;font-weight:700;color:var(--text);margin-bottom:6px}
.page-subtitle{font-size:.9rem;color:var(--text-muted)}

/* ===== Blog Page ===== */
.blog-page{max-width:800px;margin:0 auto}
.blog-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.blog-search-wrap{flex:1;min-width:200px;display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--border-color);border-radius:10px;padding:6px 14px;transition:border-color .2s,box-shadow .2s}
.blog-search-wrap:focus-within{border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(220,38,38,.1)}
.blog-search-icon{color:var(--text-muted);display:flex;flex-shrink:0}
.blog-search-wrap input{border:none;background:transparent;color:var(--text);font-size:.85rem;font-family:inherit;outline:none;padding:6px 0;flex:1;min-width:0}
.blog-search-wrap input::placeholder{color:var(--text-muted)}
.blog-stats{color:var(--text-muted);font-size:.8rem;flex-shrink:0}
.blog-list{display:flex;flex-direction:column;gap:10px}
.blog-card{display:flex;align-items:center;gap:16px;background:var(--panel);border:1px solid var(--border-color);border-radius:12px;padding:18px 20px;text-decoration:none;color:var(--text);transition:border-color .2s,box-shadow .2s,transform .2s}
.blog-card:hover{border-color:var(--primary-color);box-shadow:var(--card-hover-shadow);transform:translateY(-1px);opacity:1}
.blog-card-content{flex:1;min-width:0}
.blog-card-meta{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:.75rem;color:var(--text-muted)}
.blog-card-category{background:hsl(var(--accent));color:var(--primary-color);padding:2px 8px;border-radius:999px;font-weight:500;font-size:.7rem}
.blog-card-title{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:6px;line-height:1.4}
.blog-card-summary{font-size:.82rem;color:var(--text-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.blog-card-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.blog-tag{font-size:.7rem;color:var(--text-muted);background:hsl(var(--accent));padding:2px 8px;border-radius:999px}
.blog-card-arrow{color:var(--text-muted);flex-shrink:0;transition:transform .2s}
.blog-card:hover .blog-card-arrow{transform:translateX(3px);color:var(--primary-color)}
.blog-empty{text-align:center;padding:60px 20px;color:var(--text-muted);font-size:.9rem}

/* ===== Post Detail ===== */
.post-detail{max-width:800px;margin:0 auto;background:var(--panel);border:1px solid var(--border-color);border-radius:16px;padding:32px 36px;box-shadow:var(--card-shadow)}
.post-header{margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--border-color)}
.post-header-meta{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:.8rem;color:var(--text-muted)}
.post-category-badge{background:var(--primary-color);color:#fff;padding:2px 10px;border-radius:999px;font-size:.7rem;font-weight:600}
.post-title{font-size:1.5rem;font-weight:700;color:var(--text);line-height:1.35;margin-bottom:10px}
.post-tags{display:flex;gap:6px;flex-wrap:wrap}
.post-tag{font-size:.7rem;color:var(--text-muted);background:hsl(var(--accent));padding:3px 10px;border-radius:999px}
.post-content{font-size:.92rem;line-height:1.75;color:var(--text)}
.post-content h1,.post-content h2,.post-content h3,.post-content h4{margin:1.5em 0 .6em;font-weight:600;color:var(--text)}
.post-content h2{font-size:1.25rem;padding-bottom:8px;border-bottom:1px solid var(--border-color)}
.post-content h3{font-size:1.1rem}
.post-content p{margin-bottom:1em}
.post-content ul,.post-content ol{margin-bottom:1em;padding-left:1.5em}
.post-content li{margin-bottom:.4em}
.post-content code{background:hsl(var(--accent));padding:2px 6px;border-radius:4px;font-size:.85em;font-family:'Fira Code','Consolas',monospace}
.post-content pre{background:hsl(var(--accent));border:1px solid var(--border-color);border-radius:8px;padding:16px;overflow-x:auto;margin-bottom:1em;font-size:.82rem;line-height:1.6}
.post-content pre code{background:none;padding:0;border-radius:0}
.post-content blockquote{border-left:3px solid var(--primary-color);margin:1em 0;padding:8px 16px;color:var(--text-muted);background:hsl(var(--accent));border-radius:0 8px 8px 0}
.post-content img{max-width:100%;border-radius:8px;margin:1em 0}
.post-content a{color:var(--primary-color);text-decoration:underline;text-underline-offset:2px}
.post-content table{width:100%;border-collapse:collapse;margin-bottom:1em;font-size:.85rem}
.post-content th,.post-content td{padding:8px 12px;border:1px solid var(--border-color);text-align:left}
.post-content th{background:hsl(var(--accent));font-weight:600}
.post-footer{display:flex;align-items:center;justify-content:space-between;margin-top:28px;padding-top:20px;border-top:1px solid var(--border-color);flex-wrap:wrap;gap:12px}
.post-back-link{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-size:.85rem;text-decoration:none;transition:color .2s}
.post-back-link:hover{color:var(--primary-color);opacity:1}
.post-updated{font-size:.75rem;color:var(--text-muted)}

/* ===== About Page ===== */
.about-page{max-width:800px;margin:0 auto}
.about-hero{text-align:center;margin-bottom:36px}
.about-hero-icon{width:64px;height:64px;background:var(--primary-color);border-radius:16px;display:flex;align-items:center;justify-content:center;color:#fff;margin:0 auto 16px}
.about-title{font-size:1.6rem;font-weight:700;color:var(--text);margin-bottom:8px}
.about-subtitle{font-size:.92rem;color:var(--text-muted);line-height:1.5;max-width:500px;margin:0 auto}
.about-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:32px}
.about-card{background:var(--panel);border:1px solid var(--border-color);border-radius:12px;padding:20px;transition:border-color .2s,box-shadow .2s}
.about-card:hover{border-color:var(--primary-color);box-shadow:var(--card-hover-shadow)}
.about-card-icon{width:40px;height:40px;background:hsl(var(--accent));border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--primary-color);margin-bottom:12px}
.about-card-title{font-size:.9rem;font-weight:600;color:var(--text);margin-bottom:6px}
.about-card-desc{font-size:.8rem;color:var(--text-muted);line-height:1.5}
.about-section{margin-bottom:28px}
.about-section-title{font-size:1.05rem;font-weight:600;color:var(--text);margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}
.tech-stack{display:flex;flex-wrap:wrap;gap:8px}
.tech-badge{padding:6px 16px;background:hsl(var(--accent));color:var(--text);border:1px solid var(--border-color);border-radius:999px;font-size:.8rem;font-weight:500}
.about-table-wrap{overflow-x:auto}
.about-table{width:100%;border-collapse:collapse;font-size:.82rem}
.about-table th,.about-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border-color)}
.about-table th{color:var(--text-muted);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.3px}
.about-table td{color:var(--text)}
.about-table code{background:hsl(var(--accent));padding:2px 6px;border-radius:4px;font-size:.8em;font-family:'Fira Code','Consolas',monospace}
.about-footer-note{text-align:center;padding:20px;color:var(--text-muted);font-size:.85rem;border-top:1px solid var(--border-color);margin-top:8px}

/* ===== Food Page ===== */
.food-page{max-width:1000px;margin:0 auto}.food-shell{display:flex;flex-direction:column;gap:20px}.food-category-list{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.food-category-btn{padding:8px 16px;border:1px solid var(--border-color);background:var(--panel);color:var(--text-muted);border-radius:999px;font-size:.82rem;font-weight:600;transition:all .2s}.food-category-btn:hover{border-color:var(--primary-color);color:var(--primary-color);opacity:1}.food-category-btn.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.food-board{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:18px;align-items:start}.food-stack-wrap,.food-list-wrap{background:var(--panel);border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--card-shadow)}.food-stack-wrap{padding:20px}.food-stack-stage{position:relative;height:420px;perspective:1400px;overflow:hidden}.food-stack-card{position:absolute;inset:0;border-radius:24px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(135deg,var(--food-accent,#fb7185),color-mix(in srgb,var(--food-accent,#fb7185) 72%,#111 28%));color:#fff;box-shadow:0 24px 60px rgba(15,23,42,.22);transform-origin:center center;transition:transform .28s ease,opacity .28s ease,filter .28s ease;will-change:transform}.food-stack-card.is-dragging{transition:none;cursor:grabbing}.food-stack-card.is-top{cursor:grab}.food-stack-card::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0) 40%,rgba(15,23,42,.12));pointer-events:none}.food-card-top,.food-card-bottom{position:relative;z-index:1}.food-card-kicker{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;opacity:.82}.food-card-name{font-size:2rem;line-height:1.15;font-weight:700;margin-top:10px}.food-card-note{font-size:.92rem;line-height:1.7;max-width:28ch;opacity:.92;margin-top:14px}.food-card-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.food-card-tag{padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.16);backdrop-filter:blur(8px);font-size:.74rem;font-weight:600}.food-card-index{font-size:.82rem;opacity:.86}.food-card-hint{font-size:.8rem;opacity:.86}.food-stack-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px}.food-stack-btn{padding:8px 14px;border-radius:999px;border:1px solid var(--border-color);background:var(--panel);color:var(--text);font-weight:600;transition:all .2s}.food-stack-btn:hover{border-color:var(--primary-color);color:var(--primary-color)}.food-stack-meta{font-size:.82rem;color:var(--text-muted)}.food-list-wrap{padding:16px}.food-list-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin-bottom:12px}.food-list-title{font-size:1rem;font-weight:700;color:var(--text)}.food-list-desc{font-size:.82rem;color:var(--text-muted)}.food-list{display:flex;flex-direction:column;gap:10px}.food-list-item{width:100%;text-align:left;border:1px solid var(--border-color);background:transparent;border-radius:14px;padding:14px 16px;color:var(--text);transition:all .2s}.food-list-item:hover{border-color:var(--primary-color);transform:translateY(-1px)}.food-list-item.active{background:hsl(var(--accent));border-color:var(--primary-color)}.food-list-name{font-weight:700;font-size:.92rem}.food-list-note{font-size:.8rem;color:var(--text-muted);margin-top:4px}.food-empty{padding:32px 20px;text-align:center;color:var(--text-muted)}

/* 404 */
.error-page{text-align:center}.error-page h1{margin-bottom:4px;font-size:2.5rem}

/* ============================================
   Music Player — Mini Mode
   ============================================ */
#player-mini{position:fixed;bottom:0;left:0;right:0;z-index:1000;height:70px;background:var(--player-mini-bg);border-top:1px solid var(--player-mini-border);display:flex;align-items:center;padding:0 16px;gap:12px;transition:transform .3s ease-out,opacity .3s ease-out;box-shadow:0 -2px 10px rgba(0,0,0,.06)}
#player-mini.hidden{transform:translateY(100%);opacity:0;pointer-events:none}
.mini-progress-track{position:absolute;top:0;left:0;right:0;height:3px;background:var(--border-color);overflow:hidden}
.mini-progress-fill{height:100%;background:var(--primary-color);width:0%;transition:width .3s linear}
.mini-cover{width:48px;height:48px;border-radius:6px;object-fit:cover;flex-shrink:0;background:var(--border-color)}
.mini-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.mini-song-name{font-size:.875rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-song-artist{font-size:.75rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-controls{display:flex;align-items:center;gap:12px;flex-shrink:0}
.audio-visualizer{display:flex;align-items:flex-end;gap:2px;height:20px;padding:0 4px}
.viz-bar{width:3px;background:var(--primary-color);border-radius:1px;height:4px;transition:height .1s}
.audio-visualizer.active .viz-bar:nth-child(1){animation:vizPulse1 .45s ease-in-out infinite alternate}
.audio-visualizer.active .viz-bar:nth-child(2){animation:vizPulse2 .55s ease-in-out infinite alternate}
.audio-visualizer.active .viz-bar:nth-child(3){animation:vizPulse3 .4s ease-in-out infinite alternate}
@keyframes vizPulse1{0%{height:4px}100%{height:18px}}
@keyframes vizPulse2{0%{height:6px}100%{height:14px}}
@keyframes vizPulse3{0%{height:3px}100%{height:20px}}
.mini-play-btn{width:36px;height:36px;border-radius:50%;background:var(--primary-color);color:#fff;border:none;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .15s;flex-shrink:0}
.mini-play-btn:hover{background:var(--primary-hover);transform:scale(1.05)}
.mini-play-btn:active{transform:scale(.95)}
.mini-expand-btn{width:32px;height:32px;border:none;background:transparent;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--radius);transition:background .2s,color .2s}
.mini-expand-btn:hover{background:hsl(var(--accent));color:var(--text)}
.hamburger-icon{display:flex;flex-direction:column;gap:3px;width:16px}
.hamburger-icon span{display:block;height:2px;background:currentColor;border-radius:1px}

/* ============================================
   Music Player — Expanded Mode
   ============================================ */
#player-expanded{position:fixed;inset:0;z-index:1001;display:flex;flex-direction:column;align-items:center;transition:opacity .3s ease-out,visibility .3s ease-out;opacity:1;visibility:visible;overflow:hidden}
#player-expanded.hidden{opacity:0;visibility:hidden;pointer-events:none}
.expanded-bg{position:absolute;inset:-60px;background-size:cover;background-position:center;filter:blur(50px) brightness(.35);z-index:0}
.expanded-overlay{position:absolute;inset:0;background:var(--player-expanded-bg);z-index:1}
.expanded-inner{position:relative;z-index:2;width:100%;max-width:480px;height:100%;display:flex;flex-direction:column;padding:16px 24px;color:#f1f5f9}
.expanded-header{display:flex;justify-content:space-between;align-items:center;padding:8px 0 16px;flex-shrink:0}
.expanded-header-btn{width:36px;height:36px;border:none;background:rgba(255,255,255,.1);color:rgba(255,255,255,.8);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;transition:background .2s;backdrop-filter:blur(4px)}
.expanded-header-btn:hover{background:rgba(255,255,255,.2)}
.expanded-cover-wrap{display:flex;justify-content:center;padding:16px 0;flex-shrink:0}
.expanded-cover{width:220px;height:220px;border-radius:12px;object-fit:cover;box-shadow:0 20px 60px rgba(0,0,0,.5);transition:transform .3s}
.expanded-cover.spinning{animation:spinCover 12s linear infinite;border-radius:50%}
.expanded-lyrics{flex:1;overflow-y:auto;padding:16px 0;min-height:0;mask-image:linear-gradient(transparent,#000 15%,#000 85%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 15%,#000 85%,transparent);scroll-behavior:smooth}
.expanded-lyrics::-webkit-scrollbar{display:none}
.lyrics-line{padding:6px 0;font-size:.95rem;color:rgba(255,255,255,.35);transition:all .3s ease;text-align:center;line-height:1.6;cursor:pointer}
.lyrics-line.active{color:#fff;font-size:1.05rem;font-weight:600;transform:scale(1.02)}
.lyrics-line:hover:not(.active){color:rgba(255,255,255,.6)}
.lyrics-empty{text-align:center;color:rgba(255,255,255,.3);padding:40px 0;font-size:.9rem}
.expanded-song-info{text-align:center;padding:8px 0;flex-shrink:0}
.expanded-song-name{font-size:1.125rem;font-weight:700;color:#fff;margin-bottom:4px}
.expanded-song-artist{font-size:.85rem;color:rgba(255,255,255,.5)}
.expanded-progress{padding:12px 0 4px;flex-shrink:0}
.progress-track{position:relative;width:100%;height:4px;background:rgba(255,255,255,.15);border-radius:2px;cursor:pointer;transition:height .15s}
.progress-track:hover{height:6px}
.progress-fill{height:100%;background:var(--primary-color);border-radius:2px;position:relative;transition:width .1s linear}
.progress-thumb{position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 0 6px rgba(0,0,0,.3);opacity:0;transition:opacity .2s}
.progress-track:hover .progress-thumb{opacity:1}
.progress-time{display:flex;justify-content:space-between;font-size:.75rem;color:rgba(255,255,255,.4);margin-top:6px}
.expanded-controls{display:flex;align-items:center;justify-content:center;gap:24px;padding:12px 0 16px;flex-shrink:0}
.ctrl-btn{width:40px;height:40px;border:none;background:transparent;color:rgba(255,255,255,.7);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;transition:all .2s}
.ctrl-btn:hover{color:#fff;background:rgba(255,255,255,.1)}
.ctrl-btn:active{transform:scale(.9)}
.ctrl-btn.play-btn{width:56px;height:56px;background:var(--primary-color);color:#fff;font-size:1.3rem}
.ctrl-btn.play-btn:hover{background:var(--primary-hover);transform:scale(1.05)}
.ctrl-btn.active-mode{color:var(--primary-color)}
.expanded-volume{display:flex;align-items:center;justify-content:center;gap:8px;padding-bottom:8px;flex-shrink:0}
.volume-btn{width:32px;height:32px;border:none;background:transparent;color:rgba(255,255,255,.5);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.9rem;transition:color .2s}
.volume-btn:hover{color:#fff}
.volume-slider{-webkit-appearance:none;appearance:none;width:120px;height:4px;border-radius:2px;background:rgba(255,255,255,.15);outline:none;border:none}
.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 0 4px rgba(0,0,0,.3)}
.volume-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;cursor:pointer;border:none}
.playlist-toggle-wrap{display:flex;justify-content:center;flex-shrink:0}
.playlist-toggle-btn{padding:6px 20px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.05);color:rgba(255,255,255,.6);border-radius:999px;font-size:.8rem;cursor:pointer;transition:all .2s;backdrop-filter:blur(4px)}
.playlist-toggle-btn:hover{background:rgba(255,255,255,.1);color:#fff}
.expanded-playlist{max-height:0;overflow:hidden;transition:max-height .3s ease-out}
.expanded-playlist.open{max-height:240px;overflow-y:auto}
.expanded-playlist::-webkit-scrollbar{width:4px}
.expanded-playlist::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:2px}
.playlist-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;transition:background .2s}
.playlist-item:hover{background:rgba(255,255,255,.08)}
.playlist-item.active{background:rgba(220,38,38,.15)}
.playlist-item-index{width:24px;text-align:center;font-size:.8rem;color:rgba(255,255,255,.3);flex-shrink:0}
.playlist-item.active .playlist-item-index{color:var(--primary-color)}
.playlist-item-info{flex:1;min-width:0}
.playlist-item-name{font-size:.85rem;color:rgba(255,255,255,.8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.playlist-item.active .playlist-item-name{color:#fff;font-weight:600}
.playlist-item-artist{font-size:.75rem;color:rgba(255,255,255,.35)}
.playlist-item-status{font-size:.7rem;color:var(--primary-color);flex-shrink:0;font-weight:500}
#audio-el{display:none}

/* Animations */
@keyframes spinCover{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* Responsive */
@media(min-width:768px){
  #player-mini{max-width:600px;left:50%;transform:translateX(-50%);bottom:12px;border-radius:12px;border:1px solid var(--player-mini-border)}
  #player-mini.hidden{transform:translateX(-50%) translateY(calc(100% + 12px))}
  .expanded-inner{padding:24px 32px}
  .expanded-cover{width:260px;height:260px}
}
@media(max-width:767px){
  .expanded-inner{padding:12px 20px;max-width:100%}
  .expanded-cover{width:180px;height:180px}
  .expanded-controls{gap:18px}
  .ctrl-btn.play-btn{width:50px;height:50px}
  .link-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
  .search-bar-wrap{margin-top:20px}
  .nav-links{gap:2px}
  .nav-link{padding:6px 10px;font-size:.8rem}
  .about-grid{grid-template-columns:1fr}
  .post-detail{padding:20px 18px;border-radius:12px}
  .blog-card{padding:14px 16px}
  .blog-toolbar{flex-direction:column;align-items:stretch}
  .food-board{grid-template-columns:1fr}
  .food-stack-stage{height:360px}
  .food-stack-wrap,.food-list-wrap{padding:16px}
  .food-card-name{font-size:1.65rem}
}
@media(max-width:480px){
  .link-grid{grid-template-columns:repeat(2,1fr)}
  .engine-switch{gap:2px}
  .engine-btn{padding:4px 10px;font-size:.7rem}
  .about-hero-icon{width:52px;height:52px;border-radius:12px}
  .about-title{font-size:1.3rem}
}
.player-controls{display:flex;gap:8px;flex-wrap:wrap}