/* 本地Trakt v7 —— Trakt 网页风（浅色 + 侧边栏 + 海报卡片） */
:root{
  --bg:#f3f3f6; --card:#ffffff; --card2:#efedf2; --line:#e5e4ea;
  --txt:#17171c; --mut:#8f8f99; --acc:#7c3aed; --acc2:#a06bff;
  --accbg:#f1eafd; --ok:#16a34a; --okbg:#dcfce7; --warn:#d97706;
  --topbg:rgba(243,243,246,.92);
  --shadow:0 1px 3px rgba(25,25,50,.07);
}
/* ===== 主题：深色 / 紫夜 ===== */
[data-theme="dark"]{
  --bg:#141419; --card:#1d1d24; --card2:#26262f; --line:#2e2e38;
  --txt:#f2f2f7; --mut:#9b9ba6; --acc:#a06bff; --acc2:#c4a5ff;
  --accbg:#2c2340; --ok:#22c55e; --okbg:#14532d; --warn:#f59e0b;
  --topbg:rgba(20,20,25,.92);
  --shadow:0 1px 3px rgba(0,0,0,.4);
}
[data-theme="grape"]{
  --bg:#150f22; --card:#1e1533; --card2:#2a1f45; --line:#3a2c5c;
  --txt:#f3efff; --mut:#a89cc9; --acc:#c084fc; --acc2:#e9a5ff;
  --accbg:#372863; --ok:#22c55e; --okbg:#14532d; --warn:#f59e0b;
  --topbg:rgba(21,15,34,.92);
  --shadow:0 1px 3px rgba(0,0,0,.45);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--txt);font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:15px}
a{color:inherit;text-decoration:none}

/* ===== 侧边栏（桌面） ===== */
.side{position:fixed;left:0;top:0;bottom:0;width:224px;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 12px;z-index:30}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;padding:4px 12px 20px}
.logo .mk{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,var(--acc),var(--acc2));color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;box-shadow:0 2px 8px rgba(124,58,237,.35)}
.snav{display:flex;flex-direction:column;gap:2px;flex:1}
.snav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:var(--txt);opacity:.68;font-size:15px;font-weight:500}
.snav a .ic{font-size:20px;width:26px;text-align:center}
.snav a:hover{background:var(--card2)}
.snav a.on{background:var(--accbg);color:var(--acc);font-weight:700;opacity:1}
.snav a.set{margin-top:auto}

/* ===== 主区域 ===== */
.main{margin-left:224px;min-height:100vh}
.top{position:sticky;top:0;z-index:10;background:var(--topbg);backdrop-filter:blur(10px);padding:14px 26px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.top h1{font-size:20px;margin:0;font-weight:800;letter-spacing:.5px}
.top .sp{flex:1}
.wrap{max-width:1080px;margin:0 auto;padding:18px 26px 60px}

.sec{margin:22px 0 8px;display:flex;align-items:center;justify-content:space-between}
.sec h2{font-size:17px;margin:0;font-weight:700}
.sec a.more{color:var(--mut);font-size:13px}
.sec a.more:hover{color:var(--acc)}

.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin:10px 0;box-shadow:var(--shadow)}
.row{display:flex;gap:12px;align-items:center}
.mut{color:var(--mut)} .small{font-size:12px} .acc{color:var(--acc)}

.btn{display:inline-block;background:linear-gradient(135deg,var(--acc),var(--acc2));color:#fff;border:0;border-radius:12px;padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;text-align:center;box-shadow:0 2px 8px rgba(124,58,237,.28)}
.btn.ghost{background:var(--card);border:1px solid var(--line);color:var(--txt);box-shadow:none}
.btn.sm{padding:7px 13px;font-size:12px;border-radius:10px}
.btn.block{width:100%}

input,select,textarea{width:100%;background:var(--card2);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;font-size:14px;margin:6px 0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accbg);border-color:var(--acc)}
textarea{resize:vertical;min-height:70px}
label{font-size:13px;color:var(--mut)}

/* ===== 海报 ===== */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:16px 14px}
.poster{position:relative;aspect-ratio:2/3;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#e9e4f7,#dfe9f5);border:1px solid var(--line);box-shadow:var(--shadow)}
.poster img{width:100%;height:100%;object-fit:cover;display:block}
.poster .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:8px;text-align:center;font-size:13px;font-weight:700;color:#7c6bb0}
.poster .badge{position:absolute;left:6px;bottom:6px;background:rgba(20,20,30,.72);color:#fff;border-radius:8px;padding:3px 8px;font-size:11px;font-weight:600}
.ptitle{font-size:13px;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.psub{font-size:11px;color:var(--mut);margin-top:2px}

.hscroll{display:flex;gap:14px;overflow-x:auto;padding:6px 2px 12px;scrollbar-width:none}
.hscroll::-webkit-scrollbar{display:none}
.hscroll .item{flex:0 0 132px}
.hscroll .item:hover .ptitle{color:var(--acc)}

/* ===== 进度条 ===== */
.bar{height:7px;background:var(--card2);border-radius:4px;overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--acc2));border-radius:4px}

/* ===== 剧集行 ===== */
.ep{display:flex;align-items:center;gap:12px;padding:11px 6px;border-bottom:1px solid var(--line)}
.ep:last-child{border-bottom:0}
.ep .n{width:36px;height:36px;flex:0 0 36px;border-radius:11px;background:var(--card2);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--mut)}
.ep.done .n{background:var(--okbg);color:var(--ok)}
.ep .t{flex:1;min-width:0}
.ep .t .et{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.ep.done .t .et{color:var(--mut);text-decoration:line-through}
.ck{width:27px;height:27px;border-radius:50%;border:2px solid var(--line);background:var(--card);cursor:pointer;flex:0 0 27px}
.ep.done .ck{background:var(--ok);border-color:var(--ok);position:relative}
.ep.done .ck::after{content:"✓";color:#fff;font-size:15px;font-weight:800;position:absolute;inset:0;display:flex;align-items:center;justify-content:center}

/* ===== pill tabs（像 Trakt 的 媒体/剧集/电影） ===== */
.tabs{display:flex;gap:8px;margin:12px 0}
.tabs a{padding:8px 20px;border-radius:20px;background:var(--card);font-size:13px;font-weight:600;color:var(--mut);border:1px solid var(--line);box-shadow:var(--shadow)}
.tabs a.on{background:linear-gradient(135deg,var(--acc),var(--acc2));color:#fff;border:0}

/* ===== 历史：日期条 + 卡片 ===== */
.dstrip{display:flex;gap:8px;overflow-x:auto;padding:8px 2px 12px;scrollbar-width:none}
.dstrip::-webkit-scrollbar{display:none}
.dpill{flex:0 0 auto;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 16px;text-align:center;box-shadow:var(--shadow)}
.dpill b{display:block;font-size:14px;font-weight:700}
.dpill .wd{display:block;font-size:11px;color:var(--mut);margin-top:1px}
.dpill .dots{color:var(--acc);font-size:11px;letter-spacing:3px;line-height:1.4}
.dpill.today{background:linear-gradient(135deg,var(--acc),var(--acc2));border:0;color:#fff}
.dpill.today b{color:#fff}
.dpill.today .wd{color:rgba(255,255,255,.85)}
.dpill.today .dots{color:#fff}
.dayhead{font-size:15px;font-weight:700;margin:18px 0 8px;display:flex;align-items:center;gap:8px}
.dayhead::after{content:"";flex:1;height:1px;background:var(--line)}
.hitem{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;margin-bottom:10px;box-shadow:var(--shadow)}
.hitem img{width:52px;height:74px;object-fit:cover;border-radius:9px;background:var(--card2);flex:0 0 52px}
.hitem .tt{font-size:14px;font-weight:700}
.hitem:hover{border-color:var(--acc)}

/* ===== 统计：数字瓦片 ===== */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:12px 0}
.tile{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 16px;box-shadow:var(--shadow)}
.tile .v{font-size:28px;font-weight:800;letter-spacing:-.5px}
.tile .v .small{font-size:14px;font-weight:600;color:var(--mut)}
a.tile{transition:transform .12s ease}
a.tile:active{transform:scale(.96)}
.tile .k{font-size:12px;color:var(--mut);margin-top:5px}
.hrow{display:flex;align-items:center;gap:10px;padding:8px 2px}
.hrow .hw{flex:0 0 86px;font-size:13px;color:var(--mut);white-space:nowrap}
.hrow .hbar{flex:1;height:16px;background:var(--card2);border-radius:8px;overflow:hidden}
.hrow .hbar i{display:block;height:100%;min-width:5px;border-radius:8px;background:#dcd8ec}
.hrow .hbar i.max{background:linear-gradient(90deg,var(--acc),var(--acc2))}
.hrow .hv{flex:0 0 92px;text-align:right;font-size:13px;font-weight:600;white-space:nowrap}
.scrollcard{max-height:432px;overflow-y:auto}
/* ===== 宽卡片（媒体库） ===== */
.wcard{display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:0 0 14px;box-shadow:var(--shadow)}
.wimg{position:relative;aspect-ratio:16/9;background:linear-gradient(135deg,#e9e4f7,#dfe9f5)}
.wimg img{width:100%;height:100%;object-fit:cover;display:block}
.wimg .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:12px;text-align:center;font-weight:700;color:#7c6bb0}
.wimg .wbadge{position:absolute;left:10px;bottom:10px;background:rgba(20,20,30,.72);color:#fff;border-radius:8px;padding:3px 8px;font-size:11px;font-weight:600}
.winfo{padding:12px 14px}
.wtitle{font-weight:700;font-size:15px}
.wsub{font-size:12px;color:var(--mut);margin-top:4px}
/* ===== 媒体库视图：网格/列表/列数/密度 ===== */
.vtoolbar{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 12px}
.seg{display:inline-flex;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;color:var(--mut);font-size:12px;font-weight:600;padding:6px 12px;border-radius:9px;cursor:pointer;font-family:inherit}
.seg button.on{background:var(--card);color:var(--txt);box-shadow:var(--shadow)}
.libwrap[data-view="grid"] .liblist{display:none}
.libwrap[data-view="list"] .grid{display:none}
.libwrap[data-view="list"] #segCols{opacity:.35;pointer-events:none}
.libwrap[data-cols="2"] .grid{grid-template-columns:repeat(2,1fr)}
.libwrap[data-cols="3"] .grid{grid-template-columns:repeat(3,1fr)}
.libwrap[data-cols="4"] .grid{grid-template-columns:repeat(4,1fr)}
.libwrap[data-density="loose"] .grid{gap:22px 18px}
.libwrap[data-density="compact"] .grid{gap:10px 8px}
.libwrap[data-density="loose"] .wcard{margin-bottom:20px}
.libwrap[data-density="compact"] .wcard{margin-bottom:8px}
.libwrap[data-density="compact"] .winfo{padding:8px 12px}
.kv{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.kv:last-child{border:0}

/* ===== 评分/杂项 ===== */
.stars{display:flex;gap:6px;margin:8px 0;flex-wrap:wrap}
.stars button{background:var(--card);border:1px solid var(--line);color:var(--mut);width:34px;height:34px;border-radius:10px;font-size:14px;cursor:pointer;font-weight:600}
.stars button.on{background:#fef3c7;border-color:var(--warn);color:var(--warn)}
.empty{text-align:center;color:var(--mut);padding:36px 10px;font-size:14px}
.searchbar{display:flex;gap:8px;margin:10px 0}
.searchbar input{margin:0}
.chip{display:inline-block;background:var(--accbg);color:var(--acc);border-radius:14px;padding:4px 11px;font-size:12px;font-weight:600;margin:2px 4px 2px 0}
.detail-top{display:flex;gap:16px}
.detail-top .poster{flex:0 0 132px}
.detail-top h2{margin:0 0 6px;font-size:21px;font-weight:800}
.kbd{background:var(--card2);padding:3px 10px;border-radius:8px;font-size:12px;font-weight:600;color:var(--mut)}
details{margin:8px 0;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:4px 14px}
summary{cursor:pointer;font-size:14px;padding:10px 0;font-weight:600}
.flash{background:#ecfdf5;border:1px solid #a7f3d0;color:#047857;padding:10px 14px;border-radius:12px;margin:10px 0;font-size:14px}
.flash.err{background:#fef2f2;border-color:#fecaca;color:#b91c1c}

/* ===== 观影足迹 ===== */
.fp-head{background:linear-gradient(135deg,#7c3aed,#a06bff 60%,#c084fc);border-radius:20px;padding:26px 20px;color:#fff;margin:6px 0 4px;box-shadow:0 6px 22px rgba(124,58,237,.32);position:relative;overflow:hidden}
.fp-head::after{content:"🎬";position:absolute;right:12px;top:8px;font-size:66px;opacity:.22;pointer-events:none}
.fp-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;position:relative;z-index:1}
.fp-nav>a{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.22);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700}
.fp-label{font-size:17px;font-weight:800;text-align:center}
.fp-switch{display:flex;gap:6px;justify-content:center;margin-top:9px}
.fp-switch a{font-size:12px;padding:5px 16px;border-radius:14px;background:rgba(255,255,255,.22);color:#fff;font-weight:600}
.fp-switch a.on{background:#fff;color:var(--acc)}
.fp-big{font-size:46px;font-weight:800;letter-spacing:-1px;text-align:center;position:relative;z-index:1}
.fp-big span{font-size:16px;font-weight:600;margin:0 6px 0 2px}
.fp-sub{text-align:center;font-size:13px;opacity:.88;margin-top:8px;position:relative;z-index:1}

/* ===== 移动端：侧边栏变底部导航 ===== */
@media (max-width:860px){
  .side{left:12px;right:12px;top:auto;bottom:calc(8px + env(safe-area-inset-bottom));width:auto;padding:8px 6px;border:1px solid var(--line);border-radius:24px;background:var(--topbg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 10px 30px rgba(25,25,50,.16)}
  .logo{display:none}
  .snav{flex-direction:row;gap:2px}
  .snav a{flex:1;flex-direction:column;gap:3px;font-size:10px;padding:8px 0 7px;justify-content:center;font-weight:500;border-radius:16px;position:relative;opacity:.55}
  .snav a .ic{font-size:22px;width:auto;line-height:1}
  .snav a.set{margin-top:0}
  .snav a.on{background:transparent;color:var(--acc);opacity:1}
  .snav a.on::after{content:"";position:absolute;left:50%;bottom:1px;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--acc)}
  .main{margin-left:0}
  .wrap{padding:12px 14px 104px}
  .top{padding:12px 14px}
  .top h1{font-size:17px}
  .grid{grid-template-columns:repeat(3,1fr);gap:12px 10px}
  .hscroll .item{flex:0 0 112px}
  .tiles{grid-template-columns:repeat(2,1fr)}
}
