/* ==========================================================
   主题：深色系 · 现代简约 · 光晕质感
   参考：独立设计师作品集站（大字体 / 环境光晕 / 橙色点睛）
   ========================================================== */
:root{
  --bg:#0a0a0d;
  --panel:#121217;
  --panel2:#17171e;
  --panel3:#1d1d26;
  --line:rgba(255,255,255,.09);
  --line2:rgba(255,255,255,.05);
  --text:#f4f4f6;
  --muted:#9c9ca8;
  --faint:#5f5f6c;
  --brand:#ff5c1f;
  --brand-ink:#ff7842;
  --brand-soft:rgba(255,92,31,.13);
  --violet:#7b5cff;
  --danger:#ff4d5e;
  --ok:#3dd68c;
  --gold:#ffb020;
  --topbar-bg:rgba(10,10,13,.72);
  --input-bg:rgba(255,255,255,.04);
  --ghost-bg:rgba(255,255,255,.05);
  --media-bg:#050507;
  --star-off:#33333f;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow-md:0 6px 20px rgba(0,0,0,.45);
  --shadow-lg:0 18px 48px rgba(0,0,0,.6);
  --glow-brand:0 6px 28px rgba(255,92,31,.28);
  --r-sm:8px; --r-md:12px; --r-lg:18px;
}

/* 日间模式（data-theme="light"，由 JS 按 localStorage / 系统偏好设置） */
html[data-theme="light"]{
  --bg:#f4f5f7;
  --panel:#ffffff;
  --panel2:#fafbfc;
  --panel3:#eff1f4;
  --line:#e3e5ea;
  --line2:#eef0f3;
  --text:#1f2329;
  --muted:#7a7f8a;
  --faint:#a8aeba;
  --brand:#ff5c1f;
  --brand-ink:#e84a10;
  --brand-soft:rgba(255,92,31,.10);
  --topbar-bg:rgba(255,255,255,.82);
  --input-bg:#fafbfc;
  --ghost-bg:#ffffff;
  --media-bg:#e9eaee;
  --star-off:#d5d8de;
  --shadow-sm:0 1px 2px rgba(16,24,40,.06);
  --shadow-md:0 6px 20px rgba(16,24,40,.10);
  --shadow-lg:0 18px 48px rgba(16,24,40,.16);
  --glow-brand:0 6px 24px rgba(255,92,31,.22);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}

/* 环境色块：取站内图片主色调（--bg1~--bg4），大半径高斯模糊后压得很淡，
   深色主题透出黑底、浅色主题透出白底 */
.bg-blobs{position:fixed;inset:-14%;z-index:-1;pointer-events:none;
  opacity:.42;filter:blur(90px) saturate(1.15);
  background:
    radial-gradient(38% 34% at 18% 22%, var(--bg1, rgba(255,92,31,.5)) 0%, transparent 62%),
    radial-gradient(34% 30% at 78% 16%, var(--bg2, rgba(123,92,255,.45)) 0%, transparent 64%),
    radial-gradient(40% 36% at 68% 78%, var(--bg3, rgba(48,164,108,.4)) 0%, transparent 66%),
    radial-gradient(32% 30% at 26% 86%, var(--bg4, rgba(62,99,221,.4)) 0%, transparent 62%)}
html[data-theme="light"] .bg-blobs{opacity:.3;filter:blur(90px) saturate(1.05)}

a{color:inherit;text-decoration:none;transition:color .18s}
a:hover{color:var(--brand-ink)}
img{max-width:100%}
h1,h2,h3,h4{line-height:1.2;font-weight:800;letter-spacing:-.02em}
hr{border:none;border-top:1px solid var(--line);margin:20px 0}
::selection{background:var(--brand);color:#fff}
code{background:var(--panel3);border:1px solid var(--line2);border-radius:6px;padding:1px 7px;font-size:12px;color:var(--brand-ink)}

/* 细滚动条 */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#2a2a34;border-radius:99px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#3a3a48}
::-webkit-scrollbar-track{background:transparent}

/* ========== 顶部导航 ========== */
.topbar{position:sticky;top:0;z-index:50;
  background:var(--topbar-bg);
  backdrop-filter:saturate(160%) blur(16px);-webkit-backdrop-filter:saturate(160%) blur(16px);
  border-bottom:1px solid var(--line2)}
.topbar-inner{max-width:1480px;margin:0 auto;display:flex;align-items:center;gap:22px;padding:14px 28px}
.brand{font-weight:800;font-size:17px;color:var(--text);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.brand:hover{color:var(--brand-ink)}
.nav{display:flex;gap:2px}
.nav a{padding:7px 13px;border-radius:999px;color:var(--muted);font-size:13px;font-weight:500;letter-spacing:.02em}
.nav a:hover{color:var(--text);background:rgba(255,255,255,.06)}
.nav a.on{color:var(--brand-ink);background:var(--brand-soft);font-weight:600}
.nav a.admin-link{color:var(--violet)}
.nav a.admin-link:hover{background:rgba(123,92,255,.14);color:#a08bff}
.topsearch{flex:1;max-width:400px;margin:0 auto}
.topsearch input{width:100%;padding:9px 18px;border:1px solid var(--line);border-radius:999px;
  background:var(--input-bg);font-size:13px;color:var(--text);transition:border .18s,box-shadow .18s,background .18s}
.topsearch input::placeholder{color:var(--faint)}
.topsearch input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,92,31,.16);background:rgba(255,255,255,.07)}
.userbox{display:flex;gap:14px;align-items:center;font-size:13px;white-space:nowrap}
.userbox .uname{color:var(--muted);display:flex;align-items:center;gap:6px}
.role-tag{font-style:normal;font-size:10px;padding:2px 8px;border-radius:999px;letter-spacing:.05em;
  background:var(--brand-soft);color:var(--brand-ink);border:1px solid rgba(255,92,31,.25)}
.role-tag.r-admin{background:rgba(255,77,94,.13);color:var(--danger);border-color:rgba(255,77,94,.3)}
.role-tag.r-editor{background:rgba(255,176,32,.12);color:var(--gold);border-color:rgba(255,176,32,.3)}

/* ========== 容器 / 页脚 ========== */
.container{max-width:1480px;margin:0 auto;padding:28px}
.footer{text-align:center;color:var(--faint);padding:40px 20px;font-size:12px;letter-spacing:.08em;
  border-top:1px solid var(--line2);margin-top:40px}

/* ========== 按钮 ========== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  background:var(--brand);color:#fff;border:1px solid transparent;padding:10px 20px;border-radius:999px;
  cursor:pointer;font-size:13px;font-weight:600;letter-spacing:.02em;
  transition:background .18s,transform .12s,box-shadow .18s,border-color .18s}
.btn:hover{background:var(--brand-ink);color:#fff;transform:translateY(-1px);box-shadow:var(--glow-brand)}
.btn:active{transform:translateY(0)}
.btn.ghost{background:var(--ghost-bg);color:var(--text);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft);box-shadow:none}
.btn.tiny{padding:5px 14px;font-size:12px}
.btn.small{padding:5px 12px;font-size:12px;border-radius:8px}
.btn.danger{background:var(--danger)}
.btn.danger:hover{background:#ff6574;box-shadow:0 6px 22px rgba(255,77,94,.3)}
.hint{color:var(--muted);font-size:12px}
.muted{color:var(--muted)}
.err{color:#ff8f9a;background:rgba(255,77,94,.1);padding:10px 16px;border-radius:var(--r-md);border:1px solid rgba(255,77,94,.3)}
.ok{color:#6fe8b3;background:rgba(61,214,140,.09);padding:10px 16px;border-radius:var(--r-md);border:1px solid rgba(61,214,140,.3)}
.empty{color:var(--faint);padding:70px 20px;text-align:center;font-size:14px;letter-spacing:.04em}

/* ========== 首页 Banner ========== */
.banner{position:relative;border-radius:var(--r-lg);overflow:hidden;background:#000;
  border:1px solid var(--line);box-shadow:var(--shadow-lg);margin-bottom:48px}
.banner-track{position:relative;height:420px}
.banner-slide{position:absolute;inset:0;opacity:0;transition:opacity .7s ease;display:block}
.banner-slide.on{opacity:1;z-index:1}
.banner-slide img{width:100%;height:100%;object-fit:cover;display:block}
.banner-cap{position:absolute;left:0;right:0;bottom:0;padding:90px 36px 30px;
  background:linear-gradient(transparent,rgba(0,0,0,.82));color:#fff}
.banner-cap span{font-size:clamp(20px,3vw,34px);font-weight:800;letter-spacing:-.01em;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.banner-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;
  border:1px solid rgba(255,255,255,.22);border-radius:50%;background:rgba(0,0,0,.32);color:#fff;font-size:22px;line-height:1;cursor:pointer;
  backdrop-filter:blur(6px);transition:background .18s,border-color .18s;display:flex;align-items:center;justify-content:center}
.banner-arrow:hover{background:rgba(0,0,0,.6);border-color:rgba(255,255,255,.5)}
.banner-arrow.prev{left:18px}.banner-arrow.next{right:18px}
.banner-dots{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:7px;z-index:3}
.banner-dots .dot{width:7px;height:7px;border-radius:99px;border:none;background:rgba(255,255,255,.4);cursor:pointer;padding:0;transition:background .22s,width .22s}
.banner-dots .dot.on{background:var(--brand);width:22px}

/* ========== 首页区块 ========== */
.home-sec{margin-bottom:52px}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px;gap:14px}
.sec-head h2{margin:0;font-size:clamp(19px,2vw,25px);display:flex;align-items:center;gap:12px}
.sec-head h2::before{content:"";width:8px;height:8px;background:var(--brand);border-radius:2px;flex-shrink:0;box-shadow:0 0 12px rgba(255,92,31,.6)}
.sec-head .more{color:var(--muted);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.sec-head .more:hover{color:var(--brand-ink)}
.sec-head .more::after{content:" →"}
.sec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:18px}
.sec-grid.small{grid-template-columns:repeat(auto-fill,minmax(155px,1fr))}

/* ========== 分类 pill ========== */
.catbar{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:22px}
.catpill{padding:8px 18px;border-radius:999px;background:var(--input-bg);border:1px solid var(--line);
  color:var(--muted);font-size:13px;cursor:pointer;transition:all .18s;letter-spacing:.02em}
.catpill:hover{border-color:rgba(255,92,31,.5);color:var(--brand-ink)}
.catpill.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600;box-shadow:var(--glow-brand)}

/* ========== 画廊布局：筛选 + 瀑布流 ========== */
.filters input[type=search],.filters input[type=number],.filters select{width:100%;padding:9px 12px;
  border:1px solid var(--line);border-radius:9px;background:var(--input-bg);font-size:13px;font-family:inherit;color:var(--text)}
.filters input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,92,31,.14)}
.filters .btn{width:100%;margin-top:10px}
.range{display:flex;gap:6px;align-items:center;color:var(--faint)}
.range input{width:50%}
.color-grid{display:flex;flex-wrap:wrap;gap:8px}
.color-chip{position:relative;cursor:pointer}
.color-chip input{position:absolute;opacity:0;pointer-events:none}
.color-chip .sw{width:23px;height:23px;border-radius:50%;display:inline-block;border:2px solid rgba(255,255,255,.14);
  transition:transform .14s,box-shadow .14s,border-color .14s}
.color-chip:hover .sw{transform:scale(1.15)}
.color-chip input:checked + .sw{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--brand);transform:scale(1.15)}
.color-pick{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.color-pick input[type=color]{width:100%;height:34px;padding:2px;border:1px solid var(--line);border-radius:8px;background:var(--input-bg);cursor:pointer}
.color-pick .sim-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:400}
.color-pick .sim-row input[type=range]{flex:1;accent-color:var(--brand)}
.color-pick .sim-row output{min-width:26px;text-align:right;font-variant-numeric:tabular-nums}
.color-pick .hint{margin:0;font-size:11px;color:var(--faint);line-height:1.5}
.chars{margin-bottom:14px}
.chars h4{margin:0 0 9px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.14em}
.tag-pill.char{background:rgba(123,92,255,.16);border-color:rgba(123,92,255,.4);color:#b7a6ff;text-decoration:none}
.tag-pill.char a{color:inherit}
[data-theme=light] .tag-pill.char{color:#5a3fd4}
.tag-filter .tag-group{margin-bottom:14px}
.tag-filter .tag-group:last-child{margin-bottom:2px}
.result-meta{color:var(--muted);font-size:13px;margin-bottom:16px;letter-spacing:.03em}

/* 瀑布流 */
.waterfall{columns:5 230px;column-gap:18px}
.waterfall .card{break-inside:avoid;margin-bottom:18px}

/* ========== 卡片 ========== */
.card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);
  overflow:hidden;transition:transform .22s,box-shadow .22s,border-color .22s}
.card:hover{transform:translateY(-4px);border-color:rgba(255,92,31,.4);
  box-shadow:0 16px 40px rgba(0,0,0,.55),0 0 0 1px rgba(255,92,31,.15)}
.thumb{position:relative;background:var(--panel3);overflow:hidden}
.sec-grid .thumb{aspect-ratio:1/1}
.thumb img{width:100%;display:block;object-fit:cover;transition:transform .4s ease}
.sec-grid .thumb img{height:100%}
.card:hover .thumb img{transform:scale(1.04)}
.type-badge{position:absolute;left:9px;top:9px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;
  padding:3px 9px;border-radius:7px;backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.14)}
.feat-badge{position:absolute;left:9px;bottom:9px;background:var(--gold);color:#1a1200;font-size:11px;font-weight:700;padding:3px 9px;border-radius:7px}
.album-badge{position:absolute;left:9px;top:9px;background:var(--brand);color:#fff;font-size:11px;font-weight:600;padding:3px 9px;border-radius:7px}
.nsfw-badge{position:absolute;right:9px;top:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:600;padding:3px 9px;border-radius:7px}
.tpl-badge{position:absolute;right:9px;bottom:9px;background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:3px 9px;border-radius:7px}
.meta{padding:11px 14px}
.title{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sub{font-size:12px;color:var(--muted);margin-top:3px}
.blurred{filter:blur(18px) saturate(1.1);transform:scale(1.06);transition:filter .3s}
img.blurred{pointer-events:none}

/* ========== 分页器 ========== */
.pager{display:flex;gap:8px;margin-top:26px;flex-wrap:wrap;align-items:center;
  justify-content:center}
.pager a{padding:8px 14px;border:1px solid var(--line);border-radius:9px;color:var(--muted);
  background:var(--panel);font-size:13px;text-decoration:none;min-width:40px;text-align:center;
  transition:border-color .15s,color .15s,background .15s}
.pager a:hover{border-color:var(--brand);color:var(--brand-ink)}
.pager a.cur{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}
.pager a.pager-nav{font-size:12.5px}
.pager .pager-gap{padding:0 2px;color:var(--faint);font-size:14px;line-height:1;user-select:none}

/* ========== 详情页 ========== */
.detail{display:grid;grid-template-columns:minmax(0,1fr) 384px;gap:30px;align-items:start}
.viewer{position:relative;background:var(--media-bg);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;display:flex;
  flex-direction:column;justify-content:center;
  align-items:center;position:relative;min-height:320px;box-shadow:var(--shadow-md)}
.main-media{max-width:100%;max-height:80vh;border-radius:10px;display:block}
video.main-media{width:100%}
.reveal-btn{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--brand);
  color:#fff;border:none;padding:13px 26px;border-radius:999px;cursor:pointer;z-index:5;font-weight:600;letter-spacing:.03em;box-shadow:var(--glow-brand)}
/* hover：文字保持白色，只在底色上叠一层半透明白，让按钮略微变浅。
   全局 a:hover 会把文字改成 --brand-ink，和按钮底色撞色导致文字「消失」，这里必须显式写回 color。 */
.reveal-btn:hover{background:var(--brand);color:#fff;
  box-shadow:var(--glow-brand),inset 0 0 0 999px rgba(255,255,255,.16)}

.info{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px}
.info h1{margin:0 0 18px;font-size:22px;word-break:break-all}
.action-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:20px}
.like-btn{display:inline-flex;align-items:center;gap:7px;background:var(--ghost-bg);border:1px solid var(--line);
  color:var(--muted);padding:10px 18px;border-radius:999px;cursor:pointer;font-size:14px;font-weight:600;transition:all .18s}
.like-btn .heart{transition:transform .18s}
.like-btn:hover{border-color:rgba(255,77,94,.5);color:var(--danger)}
.like-btn.on{border-color:var(--danger);color:var(--danger);background:rgba(255,77,94,.1)}
.like-btn.on .heart{transform:scale(1.18)}
.dl-menu{position:relative}
.dl-menu .dl-list{position:absolute;top:calc(100% + 8px);left:0;min-width:100%;background:var(--panel3);border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;display:none;z-index:10}
.dl-menu.open .dl-list{display:block}
.dl-menu .dl-list a{display:block;padding:10px 15px;border-radius:8px;font-size:13px;color:var(--text);white-space:nowrap}
.dl-menu .dl-list a:hover{background:var(--brand-soft);color:var(--brand-ink)}

.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;padding:18px;background:var(--panel2);
  border:1px solid var(--line2);border-radius:var(--r-md);margin-bottom:18px}
.fact span{display:block;font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.12em;margin-bottom:2px}
.fact b{font-size:13px;font-weight:600}
.fact a{color:var(--brand-ink)}

.palette{margin-bottom:18px}
.palette h4{margin:0 0 9px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.14em}
.palette-row{display:flex;gap:8px;flex-wrap:wrap}
.swatch{width:38px;height:38px;border-radius:10px;border:1px solid rgba(255,255,255,.14);cursor:pointer;
  transition:transform .14s,border-color .14s;padding:0}
.swatch:hover{transform:scale(1.14);border-color:rgba(255,255,255,.4)}

.tags{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.tag-pill{display:inline-flex;align-items:center;text-decoration:none;
  background:var(--brand-soft);color:var(--brand-ink);font-size:12px;padding:5px 13px;border-radius:999px;
  border:1px solid rgba(255,92,31,.22);transition:background .15s,border-color .15s}
a.tag-pill:hover{background:rgba(255,92,31,.24);border-color:rgba(255,92,31,.5);color:var(--brand-ink)}
.note{background:var(--panel2);border:1px solid var(--line2);border-radius:12px;padding:14px;font-size:13px;white-space:pre-wrap;color:var(--muted)}

.rating-box{border-top:1px solid var(--line2);padding-top:16px;margin-top:16px}
.rating-box h4{margin:0 0 9px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.14em}
.stars{display:flex;gap:4px;font-size:27px;cursor:pointer;color:var(--star-off)}
.stars .s{transition:color .12s,transform .12s,text-shadow .12s}
.stars .s:hover{transform:scale(1.18)}
.stars .s.on{color:var(--gold);text-shadow:0 0 14px rgba(255,176,32,.45)}
.rating-msg{font-size:12px;color:var(--ok);margin-left:10px}

.comments-sec{margin-top:40px;max-width:780px}
.comments-sec h3{font-size:18px;margin-bottom:14px}
.comment-form{display:flex;gap:10px;margin:14px 0}
.comment-form textarea{flex:1;border:1px solid var(--line);border-radius:12px;padding:11px 14px;font-family:inherit;
  resize:vertical;background:var(--input-bg);color:var(--text)}
.comment-form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,92,31,.14)}
.comment-list{list-style:none;padding:0;margin:0}
.comment-list li{padding:14px 0;border-bottom:1px solid var(--line2);font-size:13px}
.comment-list li b{color:var(--brand-ink)}
.comment-list .ctime{color:var(--faint);font-size:11px;margin-left:8px}
.comment-list p{margin:5px 0 0;color:var(--text)}

.similar{margin-top:44px}
.similar h3{font-size:18px}

/* ========== 图集详情 ========== */
.page-title{font-size:clamp(20px,2.4vw,28px);margin:0 0 8px}
.album-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.album-head .page-title{flex:1;margin:0}
.back-btn{padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--topbar-bg);
  backdrop-filter:blur(10px);color:var(--text);font-size:13px;cursor:pointer;font-family:inherit;
  transition:border-color .2s,color .2s;flex-shrink:0}
.back-btn:hover{border-color:var(--brand);color:var(--brand-ink)}
.viewer .back-btn{position:absolute;top:14px;left:14px;z-index:5}
.album-cap{margin-top:12px;text-align:center;max-width:100%}
.album-cap .cap-title{color:var(--text);font-size:14px;font-weight:600;word-break:break-all}
.album-cap .cap-fn{color:var(--faint);font-size:12px;margin-top:4px;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.athumb{border:2px solid transparent;border-radius:10px;overflow:hidden;cursor:pointer;padding:0;
  background:var(--panel3);transition:border-color .14s;position:relative;display:block}
.athumb img{width:100%;display:block;object-fit:cover;object-position:center;aspect-ratio:1/1}
.athumb:hover{border-color:rgba(255,92,31,.4)}
.athumb.on{border-color:var(--brand)}
.athumb.is-nsfw img{filter:blur(10px)}
/* 预览格上的徽标：等比缩小，避免遮住缩略图 */
.athumb-flags{position:absolute;inset:0;pointer-events:none}
.athumb-flags .nsfw-badge,.athumb-flags .tpl-badge,.athumb-flags .feat-badge{
  font-size:9px;padding:1px 5px;border-radius:5px;right:4px;top:4px;bottom:auto;left:auto}
.athumb-flags .feat-badge{top:auto;bottom:4px}
.athumb-flags .tpl-badge{top:auto;bottom:4px;right:4px}
.athumb-flags .tpl-badge+.feat-badge{bottom:auto;top:4px}
.athumb-flags .nsfw-badge+.tpl-badge{bottom:auto;top:4px}

/* ========== 认证 / 设置 / 表单 ========== */
.auth-card,.settings-card,.upload-form{max-width:480px;margin:44px auto;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r-lg);padding:32px;box-shadow:var(--shadow-md)}
.settings-card{max-width:600px}
.upload-form{max-width:740px}
.auth-card h1,.settings-card h1,.upload-form h1{margin-top:0;font-size:24px}
.auth-card h3,.settings-card h3,.upload-form h3{font-size:15px;margin-bottom:6px}
.auth-card label,.settings-card label,.upload-form label{display:block;margin:14px 0 6px;font-size:12px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.auth-card input,.settings-card input,.upload-form input,.upload-form textarea,.upload-form select{
  width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:14px;
  background:var(--input-bg);color:var(--text)}
.auth-card input:focus,.settings-card input:focus,.upload-form input:focus,.upload-form textarea:focus,.upload-form select:focus{
  outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,92,31,.14);background:rgba(255,255,255,.06)}
.upload-form .btn{margin-top:18px}
.upload-form label.check{text-transform:none;letter-spacing:0;font-weight:400}

/* ========== 后台 ========== */
body.admin{background:var(--bg)}
body.admin h1{font-size:24px;margin:6px 0 18px}
.stat-row{display:flex;gap:18px;flex-wrap:wrap;margin:18px 0}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 30px;text-align:center;min-width:130px;
  transition:border-color .18s,transform .18s}
.stat:hover{border-color:rgba(255,92,31,.35);transform:translateY(-2px)}
.stat b{display:block;font-size:32px;font-weight:800;letter-spacing:-.02em;
  background:linear-gradient(120deg,var(--brand),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.12em}
.tbl{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;margin-top:14px}
.tbl th,.tbl td{padding:11px 15px;border-bottom:1px solid var(--line2);text-align:left;font-size:13px;vertical-align:middle}
.tbl th{background:var(--panel2);color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:rgba(255,255,255,.025)}
.tbl input.ci{width:100%;padding:6px 9px;border:1px solid var(--line);border-radius:8px;
  background:var(--input-bg);color:var(--text);font-family:inherit;font-size:12.5px}
.mini{width:56px;height:56px;object-fit:cover;border-radius:9px;border:1px solid var(--line2)}
.preview-edit{max-width:360px;border-radius:12px;margin-bottom:16px;border:1px solid var(--line)}
.inline-form{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:14px 0}
.inline-form input,.inline-form select{padding:9px 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--input-bg);color:var(--text);font-family:inherit;font-size:13px}
.inline-form input:focus,.inline-form select:focus{outline:none;border-color:var(--brand)}
.tag-pick{display:flex;flex-wrap:wrap;gap:12px;border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:6px;background:var(--panel2)}
.tag-pick .cat{width:100%}
.tag-pick .cat>b{font-size:12px;color:var(--muted);display:block;margin-bottom:5px;font-weight:600}
.tax{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px;margin-top:18px}
.cat-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px}
.cat-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-weight:700}
.tag-list{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.tag-list .tag-pill a{color:var(--danger);margin-left:5px}
.add-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:11px;max-height:460px;overflow:auto;margin:12px 0}
.add-item{display:flex;flex-direction:column;align-items:center;font-size:11px;cursor:pointer;border:1px solid var(--line);
  border-radius:12px;padding:8px;background:var(--panel2);color:var(--muted);transition:border-color .15s}
.add-item:hover{border-color:rgba(255,92,31,.4)}
.add-item img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px}
.add-item input{accent-color:var(--brand)}
.add-item:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
.add-item.is-in{opacity:.5}
.add-item.is-in span::after{content:'（已在图集内）';color:var(--faint)}

/* 图集编辑：当前图片列表 + 选图区筛选 */
.cur-list{max-height:520px}
.cur-item{cursor:grab;padding:9px 9px 11px;gap:7px;position:relative}
.cur-item:active{cursor:grabbing}
.cur-item.dragging{opacity:.4;border-color:var(--brand);background:var(--brand-soft)}
.cur-item .ai-idx{position:absolute;left:12px;top:12px;min-width:20px;height:20px;line-height:20px;text-align:center;
  background:rgba(0,0,0,.6);color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:0 5px}
.cur-item .ai-name{font-size:11px;line-height:1.4;max-width:100%;word-break:break-all;text-align:center}
.ai-flags,.ai-ops{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;align-items:center}
.ai-ops{margin-top:2px}
.ai-ops .btn{padding:3px 8px;font-size:11px;line-height:1.5}
.pill{font-style:normal;font-size:10px;font-weight:700;padding:2px 7px;border-radius:6px;color:#fff;white-space:nowrap}
.pill-cover{background:var(--gold);color:#1a1200}
.pill-nsfw{background:var(--danger)}
.pill-tpl{background:#3b82f6}
.pick-filter{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin:14px 0 4px;padding:12px 14px;
  background:var(--panel2);border:1px solid var(--line2);border-radius:var(--r-md)}
.pick-filter input[type=search]{flex:1;min-width:180px;max-width:320px}
.pick-filter .hint{margin:0}

/* 详情页：模板图提示 */
.tpl-note{display:inline-block;margin:0 0 14px;background:rgba(59,130,246,.14);color:#3b82f6;
  border:1px solid rgba(59,130,246,.32);border-radius:8px;padding:5px 12px;font-size:12px;font-weight:600}

/* ========== 主题切换按钮 / 消息角标 ========== */
.theme-btn{background:var(--ghost-bg);border:1px solid var(--line);color:var(--text);width:32px;height:32px;
  border-radius:50%;cursor:pointer;font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center;
  transition:border-color .18s,color .18s,background .18s;padding:0}
.theme-btn:hover{border-color:var(--brand);color:var(--brand-ink)}
.inbox-link{position:relative}
.name-tip{margin:-2px 0 10px;font-size:11.5px}
.name-ok{color:var(--ok,#30a46c)}
.name-bad{color:var(--danger)}
.badge{font-style:normal;background:var(--danger);color:#fff;font-size:10px;font-weight:700;
  padding:1px 6px;border-radius:999px;margin-left:3px;vertical-align:2px}

/* ========== 消息箱 ========== */
.inbox-list{list-style:none;padding:0;margin:0}
.inbox-list li{padding:12px 0;border-bottom:1px solid var(--line2);font-size:13px;color:var(--text)}
.inbox-list li.unread{background:var(--brand-soft);border-radius:10px;padding:12px 14px;margin:4px 0;border-bottom:none}
.inbox-list li a{color:var(--brand-ink)}
.inbox-list .ctime{color:var(--faint);font-size:11px;margin-left:8px;white-space:nowrap}
.msg-type{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.06em;padding:2px 8px;border-radius:999px;margin-right:8px;vertical-align:1px}
.msg-announce{background:rgba(255,176,32,.14);color:var(--gold);border:1px solid rgba(255,176,32,.3)}
.msg-reply{background:var(--brand-soft);color:var(--brand-ink);border:1px solid rgba(255,92,31,.25)}
.settings-card.wide{max-width:900px}

/* 账号页：各部件统一宽度、单列自上而下排布 */
.settings-wrap{max-width:680px;margin:44px auto;display:flex;flex-direction:column;gap:20px}
.settings-wrap .settings-card,.settings-wrap .settings-card.wide{max-width:none;width:100%;margin:0}
.settings-wrap #inbox{scroll-margin-top:90px}
.settings-wrap .sec-grid.small{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}

/* 顶栏账号入口：用户名 + 账号设置合并为一个按钮 */
.acct-link{display:inline-flex;align-items:center;gap:8px;padding:5px 12px;border-radius:999px;
  border:1px solid var(--line);background:var(--ghost-bg);color:var(--text);font-size:12.5px;
  transition:border-color .16s,background .16s}
.acct-link:hover{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft)}
.acct-link .uname{color:var(--text);display:inline-flex;align-items:center;gap:6px;max-width:150px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-link .acct-label{color:var(--muted);font-size:12px}
.acct-link .badge{margin-left:-2px}
@media(max-width:560px){
  .acct-link .acct-label{display:none}
  .acct-link{padding:4px 9px}
}

/* ========== 评论回复 ========== */
.reply-btn{font-size:12px;color:var(--faint);cursor:pointer}
.reply-btn:hover{color:var(--brand-ink)}
.reply-ref{font-size:11px;color:var(--muted);background:var(--panel2);border:1px solid var(--line2);
  border-radius:999px;padding:1px 9px;margin-left:8px}
.reply-tip{font-size:12px;color:var(--muted);background:var(--panel2);border:1px solid var(--line2);
  border-radius:9px;padding:6px 12px;margin-bottom:8px}
.reply-tip a{color:var(--danger);margin-left:8px}

/* ========== 后台侧边抽屉 ========== */
.drawer-mask{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(3px);
  opacity:0;pointer-events:none;transition:opacity .25s;z-index:90}
.drawer-mask.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,94vw);background:var(--panel);
  border-left:1px solid var(--line);box-shadow:var(--shadow-lg);z-index:95;
  transform:translateX(102%);transition:transform .28s ease;display:flex;flex-direction:column}
.drawer.open{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 20px;border-bottom:1px solid var(--line);font-size:16px}
.drawer-close{background:var(--ghost-bg);border:1px solid var(--line);color:var(--muted);width:32px;height:32px;
  border-radius:50%;cursor:pointer;font-size:18px;line-height:1;transition:all .15s;padding:0}
.drawer-close:hover{border-color:var(--danger);color:var(--danger)}
.drawer-body{padding:20px;overflow-y:auto;flex:1}
.drawer-body label{display:block;margin:14px 0 6px;font-size:12px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.drawer-body input,.drawer-body textarea{width:100%;padding:10px 13px;border:1px solid var(--line);
  border-radius:10px;font-family:inherit;font-size:14px;background:var(--input-bg);color:var(--text)}
.drawer-body input:focus,.drawer-body textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,92,31,.14)}
.drawer-body label.check{text-transform:none;letter-spacing:0;font-weight:400;display:flex}
.drawer-body label.tag{display:inline-flex;text-transform:none;letter-spacing:0;font-weight:400}
.admin-wf .file-card{cursor:pointer}
html[data-theme="light"] .drawer-mask{background:rgba(30,34,45,.35)}

/* ========== 逐文件上传（每行一个进度条） ========== */
.up-summary{font-size:13px;color:var(--muted);margin:10px 0 8px;font-variant-numeric:tabular-nums}
.up-list{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto;
  border:1px solid var(--line);border-radius:var(--r-md);padding:10px;background:var(--panel2)}
.up-list:empty{display:none}
.up-row{padding:8px 10px;border:1px solid var(--line2);border-radius:10px;background:var(--panel);
  transition:opacity .26s,transform .26s}
.up-row.gone{opacity:0;transform:translateX(-8px)}
.up-row.failed{border-color:rgba(255,92,31,.45);background:rgba(255,92,31,.05)}
.up-row-head{display:flex;align-items:center;gap:10px;font-size:12px}
.up-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.up-size{color:var(--faint);font-variant-numeric:tabular-nums}
.up-state{font-weight:600;color:var(--muted);white-space:nowrap}
.up-state.going{color:var(--violet)}
.up-state.ok{color:#4ade80}
.up-state.dup{color:#ffd60a}
.up-state.retry{color:var(--brand)}
.up-state.bad{color:#ff8f9a}
.up-bar{height:7px;border-radius:99px;background:var(--panel3);overflow:hidden;margin-top:7px}
.up-fill{height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--violet));
  border-radius:99px;transition:width .22s}
.up-row.ok .up-fill{background:linear-gradient(90deg,#30a46c,#4ade80)}
.up-row.failed .up-fill{background:linear-gradient(90deg,#e5484d,#ff8f9a)}
.up-reason{font-size:12px;color:#ff8f9a;margin-top:6px;word-break:break-all;white-space:pre-wrap}

/* ========== 筛选栏（后台文件管理 / 邀请码 / 用户） ========== */
.file-filter{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;
  background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;margin:12px 0}
.ff-item{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--faint);
  text-transform:uppercase;letter-spacing:.1em}
.ff-item input,.ff-item select{padding:8px 11px;border:1px solid var(--line);border-radius:9px;
  background:var(--input-bg);color:var(--text);font-size:13px;min-width:130px;text-transform:none;letter-spacing:0}
.ff-item input:focus,.ff-item select:focus{outline:none;border-color:var(--brand)}
.ff-grow{flex:1;min-width:200px}
.ff-grow input{width:100%}
.ff-actions{display:flex;gap:8px}

/* ========== 无限滚动哨兵 ========== */
.wf-sentinel{text-align:center;color:var(--faint);font-size:12px;padding:18px 0 6px;cursor:pointer}
.wf-sentinel:empty{display:none}

/* ========== Toast 通知 ========== */
.toast-box{position:fixed;right:18px;bottom:18px;z-index:3000;display:flex;flex-direction:column;gap:9px;
  align-items:flex-end;pointer-events:none}
.toast{opacity:0;transform:translateY(8px);transition:opacity .26s,transform .26s;
  background:var(--panel);border:1px solid var(--line);border-left:3px solid #4ade80;
  border-radius:11px;padding:11px 16px;font-size:13px;color:var(--text);
  box-shadow:0 12px 30px rgba(0,0,0,.3);max-width:min(360px,80vw);word-break:break-word}
.toast.show{opacity:1;transform:translateY(0)}
.toast.bad{border-left-color:#ff8f9a}

/* ========== 图集详情：全图预览区（1:1 居中裁剪） ========== */
.album-strip{margin:26px 0 8px}
.album-strip h3{margin:0 0 12px}
.strip-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.strip-grid .athumb{width:100%}
.album-pane .pane-title{margin:16px 0 10px;font-size:13px;color:var(--muted)}
.album-meta-line{font-size:13px;color:var(--muted);margin:-8px 0 16px}
.t-time{font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}

/* ========== 后台抽屉：相似图提示 ========== */
.sim-box{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.sim-box h4{margin:0 0 8px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.sim-hint{font-size:12px;color:var(--muted);margin:0 0 8px;line-height:1.7}
.sim-hint.identical{color:#ffd60a}
.sim-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}
.sim-item{position:relative;display:block;border:2px solid var(--line2);border-radius:9px;overflow:hidden;background:var(--panel3)}
.sim-item img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:center;display:block}
.sim-item.identical{border-color:rgba(255,214,10,.6)}
.sim-item.best{border-color:#4ade80}
.sim-item[data-id]{cursor:pointer}
.sim-item.sel{border-color:var(--brand)}
.sim-item.current{cursor:default;border-color:var(--brand);box-shadow:0 0 0 2px rgba(255,92,31,.2)}
.sim-check{position:absolute;right:4px;top:4px;width:18px;height:18px;line-height:18px;text-align:center;
  border-radius:50%;background:rgba(0,0,0,.45);color:transparent;font-size:12px;font-weight:700;font-style:normal}
.sim-item.sel .sim-check{background:var(--brand);color:#fff}
.sim-open{position:absolute;left:4px;top:4px;font-size:10px;padding:1px 6px;border-radius:6px;
  background:rgba(0,0,0,.58);color:#fff;text-decoration:none}
.sim-open:hover{background:var(--brand)}
.sim-tag{position:absolute;left:0;right:0;bottom:0;font-size:10px;text-align:center;
  background:rgba(0,0,0,.6);color:#fff;padding:2px 0}
.sim-add{display:flex;gap:9px;align-items:center;margin-top:12px;flex-wrap:wrap}
.sim-add .sim-new-title{max-width:200px;margin:0}
.album-belong{display:flex;flex-wrap:wrap;gap:8px;border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:6px;background:var(--panel2)}
.album-chip{display:inline-flex;align-items:center;padding:5px 11px;border-radius:99px;background:var(--brand);color:#fff;font-size:12px;text-decoration:none;line-height:1.4}
.album-chip:hover{filter:brightness(1.12)}

/* ========== 上传环境诊断 ========== */
.env-box{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 16px;margin:10px 0 16px}
.env-row{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:12px;color:var(--muted)}
.env-row b{color:var(--text);font-weight:600}
.env-box p{margin:8px 0 0;font-size:12px}
.env-box .bad,.bad{color:#ff8f9a}

/* ========== 仪表盘面板 ========== */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-top:4px}
.dash-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px}
.dash-panel h3{margin:0 0 12px;font-size:12px;color:var(--faint);text-transform:uppercase;letter-spacing:.14em}
.dash-list{list-style:none;padding:0;margin:0}
.dash-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:7px 0;border-bottom:1px solid var(--line2);font-size:13px}
.dash-list li:last-child{border-bottom:none}
.dash-list li>span{color:var(--muted);white-space:nowrap}
.dash-list li>b{font-weight:600;color:var(--text);text-align:right}
.dash-list li>a{color:var(--brand-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.dash-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dash-thumb img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:9px;
  border:1px solid var(--line2);display:block;transition:border-color .15s,transform .15s}
.regen-bar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.regen-bar-in{height:100%;width:0;border-radius:99px;background:var(--brand);
  transition:width .25s ease}

/* 评分范围：双滑条（最低分 / 最高分） */
.rate-range{padding:2px 0 4px}
.rate-range .rate-vals{display:flex;align-items:center;gap:6px;font-size:13px;
  color:var(--text);margin-bottom:6px}
.rate-range .rate-vals b{font-variant-numeric:tabular-nums;min-width:30px}
.rate-range .rate-vals .sep{color:var(--faint)}
.dual-range{position:relative;height:26px}
.dual-range .dual-track{position:absolute;left:8px;right:8px;top:10px;height:6px;
  border-radius:99px;background:var(--line);overflow:hidden}
.dual-range .dual-fill{position:absolute;top:0;bottom:0;left:0;width:100%;
  border-radius:99px;background:var(--brand)}
.dual-range input[type=range]{-webkit-appearance:none;appearance:none;position:absolute;
  left:8px;top:0;width:calc(100% - 16px);height:26px;margin:0;background:transparent;pointer-events:none}
.dual-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;
  width:16px;height:16px;border-radius:50%;background:var(--brand);
  border:2px solid var(--panel);cursor:pointer;pointer-events:auto;
  box-shadow:0 1px 3px rgba(0,0,0,.35)}
.dual-range input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;
  background:var(--brand);border:2px solid var(--panel);cursor:pointer;pointer-events:auto}
.dash-thumb:hover img{border-color:var(--brand);transform:translateY(-2px)}

/* ========== 复选框 ==========
   自绘外观，勾用 background-image 居中绘制。
   不用 ::after 伪元素定位 —— 那玩意儿靠固定坐标，字号/行高一变就歪。 */
input[type=checkbox]{
  -webkit-appearance:none;appearance:none;
  width:17px;height:17px;flex:0 0 17px;margin:0;padding:0;
  border:1.5px solid var(--line);border-radius:5px;
  background:var(--input-bg) no-repeat center/11px 11px;
  cursor:pointer;
  transition:background-color .15s,border-color .15s,box-shadow .15s}
input[type=checkbox]:hover{border-color:var(--brand);background-color:var(--brand-soft)}
input[type=checkbox]:checked{
  background-color:var(--brand);border-color:var(--brand);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='%23fff' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round' d='M3.2 8.4l3.1 3.1L12.8 4.8'/></svg>")}
input[type=checkbox]:focus-visible{
  outline:none;box-shadow:0 0 0 3px rgba(255,92,31,.24)}

/* ---------- 单选按钮 ---------- */
/* 圆点用径向渐变居中绘制，与复选框的勾同一套思路：不靠伪元素坐标定位 */
input[type=radio]{
  -webkit-appearance:none;appearance:none;
  width:15px;height:15px;flex:0 0 15px;margin:0;padding:0;
  border:1.5px solid var(--line);border-radius:50%;
  background:var(--input-bg) no-repeat center;
  cursor:pointer;vertical-align:-2px;
  transition:border-color .15s,background-color .15s,box-shadow .15s}
input[type=radio]:hover{border-color:var(--brand)}
input[type=radio]:checked{
  border-color:var(--brand);
  background-image:radial-gradient(circle,var(--brand) 0 3.5px,transparent 3.5px)}
input[type=radio]:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,92,31,.24)}

/* 复选框容器 label：抵消各处 label 的 block + 大写字样式 */
label.check,label.tag,
.filters label.check,.filters label.tag,
.upload-form label.check,.upload-form label.tag,
.drawer-body label.check,.drawer-body label.tag,
.auth-card label.check,.settings-card label.check,.settings-card label.tag{
  display:inline-flex;align-items:flex-start;gap:8px;
  text-transform:none;letter-spacing:0;font-weight:400;font-size:13px;
  margin:5px 12px 5px 0;color:var(--muted);cursor:pointer;line-height:1.5}
.upload-form label.check,.drawer-body label.check,
.auth-card label.check,.settings-card label.check{
  display:flex;width:fit-content;max-width:100%;margin:8px 0}
label.check:hover,label.tag:hover{color:var(--text)}
label.check input[type=checkbox],label.tag input[type=checkbox]{margin-top:2px}

/* ========== 筛选栏折叠 ========== */
.filter-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;
  margin:0 0 12px}
.filter-toggle .caret{transition:transform .2s;font-size:11px;color:var(--muted)}
.filter-toggle[aria-expanded="true"] .caret{transform:rotate(180deg)}

/* ========== 筛选栏：高度受视口约束，内容区内部滚动 ========== */
.layout{display:grid;grid-template-columns:262px 1fr;gap:26px;align-items:start}
.filters{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:14px 16px;position:sticky;top:82px;
  max-height:calc(100vh - 104px);
  display:flex;flex-direction:column}
.filters .filter-toggle{flex:0 0 auto;margin-bottom:10px}
.filters-inner{
  flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  margin:4px -6px 0;padding:0 6px;scrollbar-width:thin}
.filters-inner::-webkit-scrollbar{width:8px}
.filters-inner::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}
.filters-inner::-webkit-scrollbar-track{background:transparent}

/* 分组标题 */
.filters h4{
  margin:18px 0 9px;padding:0;
  font-size:11px;font-weight:700;color:var(--faint);
  text-transform:uppercase;letter-spacing:.14em;
  border:0;background:none}
.filters h4:first-of-type{margin-top:0}

/* 搜索行 */
.filters .frow{margin:0 0 4px}
.filters .frow input[type=search]{width:100%}

/* ---------- 筛选分组：标题行 + 全选/全不选 ---------- */
.fgrp{margin-top:16px}
.filters .fgrp:first-of-type{margin-top:14px}
.fgrp-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.filters .fgrp-head h4,.filters .fgrp-head .tg-name{
  margin:0;padding:0;
  font-size:11px;font-weight:700;color:var(--faint);
  text-transform:uppercase;letter-spacing:.12em}
.fgrp-acts{display:inline-flex;gap:3px;flex:0 0 auto}
/* 快捷动作：胶囊形，默认低对比，悬停才浮出橙色，不跟分组标题抢视线 */
.mini-act{
  border:1px solid var(--line);background:var(--panel2);color:var(--muted);
  font-family:inherit;font-size:11px;font-weight:500;line-height:1;
  padding:5px 10px;margin:0;border-radius:999px;
  cursor:pointer;white-space:nowrap;
  transition:border-color .14s,color .14s,background .14s,box-shadow .14s}
.mini-act:hover{border-color:rgba(255,92,31,.45);color:var(--brand-ink);background:var(--brand-soft)}
.mini-act:active{background:rgba(255,92,31,.2)}
.mini-act:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,92,31,.2)}

/* 人物的二级分组名 */
.chk-sub{
  margin:9px 0 5px;
  font-size:10.5px;font-weight:700;color:var(--faint);
  text-transform:uppercase;letter-spacing:.1em}

/* ---------- 筛选胶囊：类型 / 画幅 / 尺寸 / 人物 ----------
   原生控件隐藏，视觉全部交给胶囊；::before 画标记槽，
   多选方框、单选圆环，靠类名区分，不依赖 :has() */
.chk-row{display:flex;flex-wrap:wrap;gap:6px}
.chk-pill{
  position:relative;
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;
  border:1px solid var(--line);border-radius:999px;
  background:var(--panel2);color:var(--muted);
  font-size:12px;font-weight:400;line-height:1.5;
  letter-spacing:0;text-transform:none;
  margin:0;cursor:pointer;max-width:100%;
  white-space:nowrap;
  transition:border-color .14s,color .14s,background .14s,box-shadow .14s}
.chk-pill:hover{border-color:rgba(255,92,31,.4);background:var(--panel3);color:var(--text)}
.chk-pill span{min-width:0}
/* 选中态：橙调填充 */
.chk-pill.on{
  background:var(--brand-soft);
  border-color:rgba(255,92,31,.45);
  color:var(--brand-ink);font-weight:500}
.chk-pill.on:hover{border-color:rgba(255,92,31,.7);background:rgba(255,92,31,.18)}

/* 胶囊内的原生控件只保留状态，不可见也不占布局 */
.chk-pill input[type=checkbox],.chk-pill input[type=radio]{
  position:absolute;width:1px;height:1px;margin:0;padding:0;
  opacity:0;pointer-events:none}

/* 标记槽 */
.chk-pill::before{
  content:"";flex:0 0 auto;
  width:12px;height:12px;margin:0;
  border:1.5px solid var(--line);
  background:transparent no-repeat center/9px 9px;
  transition:border-color .14s,background-color .14s}
.chk-pill:hover::before{border-color:var(--brand)}
.chk-pill.box::before{border-radius:4px}
.chk-pill.dot::before{border-radius:50%}
.chk-pill.on::before{border-color:var(--brand)}
.chk-pill.box.on::before{
  background-color:var(--brand);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='%23fff' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round' d='M3.4 8.4l3 3L12.6 4.9'/></svg>")}
.chk-pill.dot.on::before{
  background-image:radial-gradient(circle,var(--brand) 0 3px,transparent 3px)}
.chk-pill:focus-within{box-shadow:0 0 0 3px rgba(255,92,31,.2)}

/* ========== 分段控件（替代下拉框，杜绝文字转行） ========== */
.seg-group{margin-top:16px}
.seg-label{
  display:block;margin:0 0 7px;
  font-size:10.5px;font-weight:700;color:var(--faint);
  text-transform:uppercase;letter-spacing:.1em}
.seg{
  display:flex;gap:3px;padding:3px;
  background:var(--panel2);border:1px solid var(--line);border-radius:10px}
.seg-item{
  position:relative;flex:1;display:block;
  margin:0;padding:0;cursor:pointer}
.seg-item input[type=radio]{
  -webkit-appearance:none;appearance:none;
  position:absolute;inset:0;width:100%;height:100%;
  margin:0;padding:0;border:0;background:none;
  opacity:0;z-index:1;cursor:pointer;flex:none}
.seg-item span{
  display:block;padding:6px 4px;border-radius:7px;
  text-align:center;font-size:12px;font-weight:500;
  color:var(--muted);line-height:1.5;white-space:nowrap;
  transition:background .15s,color .15s}
.seg-item:hover span{color:var(--text)}
.seg-item input:checked + span{
  background:var(--brand);color:#fff;font-weight:600;
  box-shadow:var(--shadow-sm)}
.seg-item input:focus-visible + span{box-shadow:0 0 0 3px rgba(255,92,31,.24)}
/* 折叠区：主色调 / 评分 / 标签 */
.facc{margin-top:16px;border-top:1px solid var(--line2)}
.facc-item{border-bottom:1px solid var(--line2)}
.facc-item>summary{
  list-style:none;cursor:pointer;user-select:none;
  padding:10px 2px;margin:0;
  display:flex;align-items:center;justify-content:space-between;
  font-size:12px;font-weight:600;color:var(--muted);
  text-transform:none;letter-spacing:0}
.facc-item>summary::-webkit-details-marker{display:none}
.facc-item>summary::after{content:"▾";font-size:10px;color:var(--faint);transition:transform .18s}
.facc-item[open]>summary::after{transform:rotate(180deg)}
.facc-item>summary:hover{color:var(--text)}
.facc-cnt{font-style:normal;font-size:10px;background:var(--brand);color:#fff;
  border-radius:999px;padding:0 6px;margin-left:6px}
.facc-item .tag-filter{max-height:36vh;overflow-y:auto;padding:2px 2px 10px}

/* ---------- 标签筛选模式：满足任一 / 全部满足 ---------- */
/* 放在标签列表最上方，宽度收窄，跟下面的分类块区分开 */
.tag-filter .seg-group{margin:10px 0 14px}
.tag-filter .seg-group .seg{max-width:210px}
.tag-filter .seg-group .seg-item span{padding:6px 6px;font-size:11.5px}
.tmode-hint{margin:7px 0 0;font-size:11px;line-height:1.5;color:var(--faint)}

/* ---------- 主色调：不限 + 色块 ---------- */
.color-none{margin-bottom:10px}
.color-none .chk-pill{padding:4px 10px;font-size:11.5px}
/* 筛选栏里的标签：与胶囊同一套视觉，控件隐藏、状态由容器表达 */
.tag-group-tags{display:flex;flex-wrap:wrap;gap:6px}
.tag-group-tags label.tag{
  position:relative;
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 10px;margin:0;
  border:1px solid var(--line);border-radius:999px;
  background:var(--panel2);color:var(--muted);
  font-size:12px;font-weight:400;line-height:1.5;
  letter-spacing:0;text-transform:none;
  cursor:pointer;white-space:nowrap;
  transition:border-color .14s,color .14s,background .14s}
.tag-group-tags label.tag:hover{
  border-color:rgba(255,92,31,.4);background:var(--panel3);color:var(--text)}
.tag-group-tags label.tag.on{
  background:var(--brand-soft);border-color:rgba(255,92,31,.45);
  color:var(--brand-ink);font-weight:500}
.tag-group-tags label.tag input[type=checkbox]{
  position:absolute;width:1px;height:1px;margin:0;padding:0;opacity:0;pointer-events:none}
.tag-group-tags label.tag::before{
  content:"";flex:0 0 auto;width:11px;height:11px;margin:0;
  border:1.5px solid var(--line);border-radius:3.5px;
  background:transparent no-repeat center/8px 8px;
  transition:border-color .14s,background-color .14s}
.tag-group-tags label.tag:hover::before{border-color:var(--brand)}
.tag-group-tags label.tag.on::before{
  border-color:var(--brand);background-color:var(--brand);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='%23fff' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round' d='M3.4 8.4l3 3L12.6 4.9'/></svg>")}
.tag-group-tags label.tag:focus-within{box-shadow:0 0 0 3px rgba(255,92,31,.2)}
label.tag.on{color:var(--brand-ink);font-weight:600}
.facc-item .rate-range{padding-bottom:12px}
.facc-item .color-pick{padding-bottom:10px}

/* ========== 后台补充 ========== */
.album-edit-form{max-width:640px;margin:14px 0 20px;background:var(--panel2);border:1px solid var(--line);
  border-radius:var(--r-md);padding:16px 18px}
.album-edit-form label{display:block;margin:12px 0 6px;font-size:12px;color:var(--muted)}
.album-edit-form input[type=text],.album-edit-form input:not([type=checkbox]),
.album-edit-form textarea{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--input-bg);color:var(--text);font-family:inherit;font-size:13px}
.album-edit-form textarea{resize:vertical}
.album-edit-form select{padding:9px 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--input-bg);color:var(--text);font-family:inherit;font-size:13px}
.album-edit-form .action-row{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap}
.file-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:12px 0}
.file-toolbar select,.admin-wf select,.filters select{padding:8px 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--input-bg);color:var(--text);font-family:inherit;font-size:13px}
.feat-flag{font-style:normal;font-size:10px;padding:2px 7px;border-radius:999px;margin-left:6px;
  background:rgba(255,176,32,.14);color:var(--gold);border:1px solid rgba(255,176,32,.32)}
.vis-line{font-size:11px;color:var(--faint);margin-top:2px}
.vis-flag{font-size:11px;color:var(--faint);border:1px dashed var(--line);border-radius:6px;padding:0 5px}
.reveal-btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;max-width:88%}

/* ========== 响应式 ========== */
@media(max-width:1080px){
  .waterfall{columns:4 200px}
  .detail{grid-template-columns:1fr}
}
@media(max-width:860px){
  .layout{grid-template-columns:1fr}
  .filters{position:static}
  .filters{max-height:none}
  .filters-inner{overflow:visible;max-height:none;padding-right:0;margin-right:0}
  .waterfall{columns:3 160px}
  .sec-grid{grid-template-columns:repeat(auto-fill,minmax(155px,1fr))}
  .banner-track{height:280px}
  .facts{grid-template-columns:1fr}
  .container{padding:18px}

  /* 顶栏改两行：品牌 + 用户区一行，导航与搜索各占一行并可横向滑动，避免挤压溢出 */
  .topbar-inner{flex-wrap:wrap;gap:10px;padding:10px 14px;align-items:center}
  .brand{flex:1 1 auto;min-width:0;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .userbox{order:2;flex:0 0 auto;gap:10px;max-width:62%;overflow-x:auto;scrollbar-width:none}
  .userbox::-webkit-scrollbar{display:none}
  .nav{order:3;flex:1 1 100%;gap:6px;padding:2px 0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .nav::-webkit-scrollbar{display:none}
  .nav a{flex:0 0 auto;white-space:nowrap}
  .topsearch{order:4;flex:1 1 100%;max-width:none;display:block;margin:0}
}
@media(max-width:560px){
  .waterfall{columns:2 140px}
  .banner-track{height:210px}
  .nav a{padding:6px 10px;font-size:12px}
  .userbox{gap:9px;font-size:12px;max-width:100%}
  .userbox .uname .role-tag{display:none}
  .container{padding:14px}
  .viewer{padding:8px}
  .main-media{max-height:64vh}
  .detail{gap:18px}
  .drawer{width:100vw}
  .pager a{padding:7px 12px}
  .filters{padding:16px}
  .catbar{gap:7px}
  .catpill{padding:6px 12px;font-size:12px}
  table.tbl{display:block;overflow-x:auto;white-space:nowrap}
  .action-row{flex-wrap:wrap}
  .file-filter{flex-direction:column;align-items:stretch;gap:10px}
  .ff-item input,.ff-item select{width:100%;min-width:0}
  .ff-actions{justify-content:flex-end}
  .strip-grid{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:8px}
  .toast-box{left:14px;right:14px;bottom:14px;align-items:stretch}
  .toast{max-width:none}
}
