/* =====================================================================
   btpenl · v3 统一设计系统 (Unified Design System)
   - 设计令牌 (与 theme/frost/layout/main.php 对齐)
   - Tailwind 工具类垫片 (让旧 Tailwind 标记直接渲染成 v3 毛玻璃)
   - v3 语义组件 (卡片/表单/表格/徽章/提示/分页/后台外壳)
   前台 main.php 与后台 admin/layout.php 均引入本文件。
   ===================================================================== */

:root{
    --bg-0:#d9dde4; --bg-1:#eef0f4;
    --ink:#20242c; --ink-dim:rgba(32,36,44,.66); --ink-faint:rgba(32,36,44,.40);
    --gold:#b07f2f; --gold-deep:#8f6420; --gold-soft:rgba(176,127,47,.14);
    --glass:rgba(255,255,255,.5); --glass-strong:rgba(255,255,255,.66);
    --glass-card:rgba(255,255,255,.45);
    --stroke:rgba(255,255,255,.75); --stroke-soft:rgba(32,36,44,.06);
    --shadow:0 22px 50px -22px rgba(40,48,66,.28);
    --shadow-lg:0 24px 70px -20px rgba(20,20,50,.32);
    --shadow-xl:0 32px 90px -24px rgba(15,15,40,.42);
    /* 弹层统一 (mask/modal)：admin 区 5 套弹窗共用，避免圆角/背景/模糊各自为政 */
    --modal-radius:20px;
    --modal-bg:var(--glass-strong);          /* 毛玻璃系：pe-modal / modal-wrap */
    --modal-bg-solid:rgba(255,255,255,.92);  /* 内容密集系：保留可读性，不做半透明 */
    --modal-blur:blur(28px) saturate(170%);
    --mask-bg:rgba(30,34,44,.38);
    --ease:cubic-bezier(.22,.9,.24,1);
    --serif:"Songti SC","STSong","Noto Serif SC","SimSun",Georgia,serif;
    --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
    --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Courier New",monospace;
    --blur:blur(20px) saturate(160%);
    --radius:16px;
    --radius-sm:10px;
    /* 状态色 (语义) */
    --c-blue:#3b6fb0; --c-blue-bg:rgba(59,111,176,.12);
    --c-green:#2f8f6f; --c-green-bg:rgba(47,143,111,.12);
    --c-red:#c0533f; --c-red-bg:rgba(192,83,63,.12);
    --c-yellow:#b5821f; --c-yellow-bg:rgba(181,130,31,.14);
    --c-orange:#c2702a; --c-orange-bg:rgba(194,112,42,.14);
    --c-purple:#7a5bb0; --c-purple-bg:rgba(122,91,176,.12);
    --c-teal:#2f8f7c; --c-teal-bg:rgba(47,143,124,.12);
}

/* ===================== 基础表单控件 (全站玻璃化) ===================== */
input[type=text],input[type=password],input[type=email],input[type=number],
input[type=search],input[type=url],input[type=tel],input[type=date],
textarea,select{
    font-family:var(--sans); font-size:14px; color:var(--ink);
    background:rgba(255,255,255,.72); border:1px solid rgba(255,255,255,.9);
    border-radius:12px; padding:11px 14px; outline:none;
    transition:border-color .25s, box-shadow .25s; width:100%;
    box-shadow:inset 0 1px 2px rgba(40,48,66,.04);
}
input:focus,textarea:focus,select:focus{
    border-color:rgba(176,127,47,.5);
    box-shadow:0 0 0 4px rgba(176,127,47,.12);
}
input::placeholder,textarea::placeholder{color:var(--ink-faint)}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--gold);transform:scale(1.05)}
select{cursor:pointer;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-dim) 50%),linear-gradient(135deg,var(--ink-dim) 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:36px}

/* ===================== Tailwind 工具类垫片 ===================== */
/* —— 布局 —— */
.flex{display:flex}.inline-flex{display:inline-flex}.block{display:block}.inline{display:inline}
.grid{display:grid}.hidden{display:none!important}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}
.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}
.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}
.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}
.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}
.mx-auto{margin-left:auto;margin-right:auto}
.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}
.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}
.w-full{width:100%}.max-w-md{max-width:28rem}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}
.h-screen{height:100vh}
.underline{text-decoration:underline}
/* 固定尺寸 */
.w-4{width:1rem}.h-4{height:1rem}.w-5{width:1.25rem}.h-5{height:1.25rem}.w-6{width:1.5rem}.h-6{height:1.5rem}
.w-8{width:2rem}.h-8{height:2rem}.w-10{height:2.5rem}.h-10{height:2.5rem}.w-11{width:2.75rem}.h-11{height:2.75rem}
.w-12{width:3rem}.h-12{height:3rem}.w-14{width:3.5rem}.h-14{height:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}
.w-64{width:16rem}.w-1\.5{width:.375rem}.h-1\.5{height:.375rem}.h-20{height:5rem}
/* 间距 (Tailwind 比例) */
.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-12{padding:3rem}
.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}
.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}
.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pb-2{padding-bottom:.5rem}
.m-0{margin:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-12{margin-top:3rem}
.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}
.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}
.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}
.space-x-1 > * + *{margin-left:.25rem}.space-x-2 > * + *{margin-left:.5rem}.space-x-3 > * + *{margin-left:.75rem}.space-x-4 > * + *{margin-left:1rem}
.space-y-1 > * + *{margin-top:.25rem}.space-y-3 > * + *{margin-top:.75rem}.space-y-4 > * + *{margin-top:1rem}.space-y-5 > * + *{margin-top:1.25rem}.space-y-6 > * + *{margin-top:1.5rem}
/* 网格 */
.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}
.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.col-span-1{grid-column:span 1}.col-span-2{grid-column:span 2}
/* 圆角 */
.rounded{border-radius:.375rem}.rounded-md{border-radius:.5rem}.rounded-lg{border-radius:14px}.rounded-xl{border-radius:20px}.rounded-2xl{border-radius:24px}.rounded-full{border-radius:999px}
/* 边框 */
.border{border-width:1px;border-style:solid;border-color:var(--stroke-soft)}
.border-b{border-bottom:1px solid rgba(32,36,44,.08)}
.border-t{border-top:1px solid rgba(32,36,44,.08)}
.border-2{border-width:2px;border-style:solid}
.border-gray-100{border-color:rgba(32,36,44,.06)}
.border-gray-200{border-color:rgba(32,36,44,.12)}
.border-gray-300{border-color:rgba(32,36,44,.2)}
.border-gray-400{border-color:rgba(32,36,44,.3)}
/* 背景 → 毛玻璃 */
.bg-white,.bg-gray-50,.bg-gray-100{
    background:var(--glass-card);
    backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
    border:1px solid var(--stroke);box-shadow:var(--shadow);
}
.bg-gray-200{background:rgba(32,36,44,.06)}
.bg-gray-800,.bg-gray-900{background:rgba(28,32,40,.82);color:#fff}
/* 品牌金 */
.bg-primary-50{background:rgba(176,127,47,.08)}.bg-primary-100{background:rgba(176,127,47,.14)}
.bg-primary-500{background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff}
.bg-primary-600{background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff}
.bg-primary-700{background:linear-gradient(135deg,#a9742a,#8f6420);color:#fff}
.border-primary-200{border-color:rgba(176,127,47,.35)}
.border-primary-400{border-color:rgba(176,127,47,.5)}
/* 语义色背景/文字 */
.bg-blue-50{background:var(--c-blue-bg)}.bg-blue-100{background:var(--c-blue-bg)}.bg-blue-500{background:var(--c-blue);color:#fff}.bg-blue-600{background:var(--c-blue);color:#fff}.bg-blue-700{background:#2f5a93;color:#fff}
.bg-green-50{background:var(--c-green-bg)}.bg-green-100{background:var(--c-green-bg)}.bg-green-500{background:var(--c-green);color:#fff}.bg-green-600{background:var(--c-green);color:#fff}.bg-green-700{background:#236b53;color:#fff}
.bg-red-50{background:var(--c-red-bg)}.bg-red-100{background:var(--c-red-bg)}.bg-red-500{background:var(--c-red);color:#fff}.bg-red-600{background:var(--c-red);color:#fff}.bg-red-700{background:#97402f;color:#fff}
.bg-yellow-50{background:var(--c-yellow-bg)}.bg-yellow-100{background:var(--c-yellow-bg)}.bg-yellow-600{background:var(--c-yellow);color:#fff}.bg-yellow-700{background:#8f6414;color:#fff}
.bg-orange-100{background:var(--c-orange-bg)}.bg-orange-500{background:var(--c-orange);color:#fff}.bg-orange-600{background:var(--c-orange);color:#fff}.bg-orange-700{background:#97551f;color:#fff}
.bg-purple-100{background:var(--c-purple-bg)}.bg-purple-500{background:var(--c-purple);color:#fff}.bg-purple-600{background:var(--c-purple);color:#fff}
.bg-teal-100{background:var(--c-teal-bg)}.bg-teal-500{background:var(--c-teal);color:#fff}.bg-teal-600{background:var(--c-teal);color:#fff}
.bg-emerald-100{background:var(--c-green-bg)}.bg-emerald-500{background:var(--c-green);color:#fff}.bg-emerald-600{background:var(--c-green);color:#fff}
.bg-indigo-100{background:rgba(79,70,229,.12)}.bg-indigo-500{background:#4f46e5;color:#fff}.bg-indigo-600{background:#4f46e5;color:#fff}
.bg-pink-100{background:rgba(190,80,140,.12)}.bg-pink-500{background:#be508c;color:#fff}
.bg-slate-100{background:rgba(100,116,139,.12)}
/* 文字颜色 */
.text-white{color:#fff}
.text-gray-300{color:#9aa1ab}.text-gray-400{color:#6b7280}.text-gray-500{color:var(--ink-faint)}.text-gray-600{color:#4b5563}.text-gray-700{color:#374151}.text-gray-800{color:#1f2937}.text-gray-900{color:#111827}
.text-slate-500{color:#64748b}.text-neutral-500{color:#737373}
.text-primary-500{color:var(--gold)}.text-primary-600{color:var(--gold-deep)}.text-primary-700{color:var(--gold-deep)}
.text-blue-500{color:var(--c-blue)}.text-blue-600{color:var(--c-blue)}.text-blue-700{color:#2f5a93}
.text-green-600{color:var(--c-green)}.text-green-700{color:#236b53}
.text-red-500{color:var(--c-red)}.text-red-600{color:var(--c-red)}.text-red-700{color:#97402f}
.text-yellow-600{color:var(--c-yellow)}.text-yellow-700{color:#8f6414}
.text-orange-600{color:var(--c-orange)}.text-orange-700{color:#97551f}
.text-purple-400{color:#a87fd6}.text-purple-600{color:var(--c-purple)}
.text-teal-500{color:var(--c-teal)}.text-teal-600{color:var(--c-teal)}
.text-indigo-600{color:#4f46e5}.text-emerald-600{color:var(--c-green)}
.text-pink-600{color:#be508c}
/* 字号 */
.text-xs{font-size:12px}.text-sm{font-size:13.5px}.text-base{font-size:15px}.text-lg{font-size:18px}.text-xl{font-size:20px}.text-2xl{font-size:24px}.text-3xl{font-size:30px}
.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
/* 阴影 */
.shadow{box-shadow:var(--shadow)}.shadow-lg{box-shadow:0 26px 60px -24px rgba(40,48,66,.34)}
.shadow-sm{box-shadow:0 2px 8px -4px rgba(40,48,66,.18)}
/* 分隔 */
.divide-y > * + *{border-top:1px solid rgba(32,36,44,.06)}
.divide-gray-50 > * + *{border-top-color:rgba(32,36,44,.04)}
.divide-gray-100 > * + *{border-top-color:rgba(32,36,44,.07)}
/* 状态变体 */
.hover\:bg-gray-50:hover{background:rgba(255,255,255,.6)}
.hover\:bg-gray-100:hover{background:rgba(255,255,255,.62)}
.hover\:bg-blue-50:hover{background:var(--c-blue-bg)}
.hover\:bg-green-50:hover{background:var(--c-green-bg)}
.hover\:bg-primary-50:hover{background:rgba(176,127,47,.1)}
.hover\:bg-blue-200:hover{background:rgba(59,111,176,.2)}
.hover\:text-blue-600:hover{color:var(--c-blue)}
.hover\:text-gray-700:hover{color:#374151}
.hover\:text-gray-900:hover{color:#111827}
.hover\:text-primary-600:hover{color:var(--gold-deep)}
.hover\:text-red-600:hover{color:var(--c-red)}
.hover\:border-blue-200:hover{border-color:rgba(59,111,176,.4)}
.hover\:border-primary-400:hover{border-color:rgba(176,127,47,.5)}
.hover\:underline:hover{text-decoration:underline}
.focus\:outline-none:focus{outline:none}
.focus\:border-primary-400:focus{border-color:rgba(176,127,47,.5)}
.focus\:border-blue-400:focus{border-color:rgba(59,111,176,.5)}
.focus\:ring-2:focus{box-shadow:0 0 0 3px rgba(176,127,47,.18)}
.focus\:ring-blue-500:focus{box-shadow:0 0 0 3px rgba(59,111,176,.2)}
.ring-2{box-shadow:0 0 0 3px rgba(176,127,47,.18)}
.ring-blue-500{--tw-ring-color:rgba(59,111,176,.5)}
.opacity-60{opacity:.6}.opacity-0{opacity:0}.cursor-not-allowed{cursor:not-allowed}
.line-clamp-1,.line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.line-clamp-1{-webkit-line-clamp:1}.line-clamp-2{-webkit-line-clamp:2}
.transition{transition:all .25s var(--ease)}
.translate-x-full{transform:translateX(100%)}
/* 响应式 */
@media (min-width:640px){
    .sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
    .sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
    .sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (min-width:1024px){
    .lg\:flex{display:flex}.lg\:hidden{display:none}
    .lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
    .lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
    .lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===================== v3 语义组件 ===================== */
.gcard{background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);border-radius:var(--radius);box-shadow:var(--shadow)}
/* 页面头 */
.page-head{max-width:1200px;margin:0 auto;padding:clamp(40px,6vw,72px) clamp(20px,6vw,60px) 8px}
.page-head .kicker{display:inline-flex;align-items:center;gap:10px;padding:7px 16px;border-radius:999px;font-size:13px;letter-spacing:.12em;color:var(--gold-deep);background:rgba(176,127,47,.12);border:1px solid rgba(176,127,47,.3);backdrop-filter:blur(8px);margin-bottom:16px}
.page-head h1{font-family:var(--serif);font-size:clamp(28px,4vw,44px);font-weight:700;color:#1a1e26;margin-bottom:10px}
.page-head .sub{color:var(--ink-dim);font-size:15px}
/* 表单 */
.field{margin-bottom:16px}
.field > label{display:block;font-size:13px;font-weight:500;color:var(--ink-dim);margin-bottom:6px}
.input,.select,.textarea{font-family:var(--sans);font-size:14px;color:var(--ink);background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.9);border-radius:12px;padding:11px 14px;outline:none;width:100%;transition:border-color .25s,box-shadow .25s}
.input:focus,.select:focus,.textarea:focus{border-color:rgba(176,127,47,.5);box-shadow:0 0 0 4px rgba(176,127,47,.12)}
.btn-submit{width:100%;padding:12px;border:none;border-radius:12px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 6px 20px -6px rgba(176,127,47,.5);font-family:var(--sans)}
.btn-submit:hover{transform:translateY(-1px);box-shadow:0 10px 28px -8px rgba(176,127,47,.6)}
.btn-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}
/* 徽章 */
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.6}
.badge.ok{background:var(--c-green-bg);color:var(--c-green)}
.badge.warn{background:var(--c-yellow-bg);color:var(--c-yellow)}
.badge.bad{background:var(--c-red-bg);color:var(--c-red)}
.badge.info{background:var(--c-blue-bg);color:var(--c-blue)}
.badge.muted{background:rgba(32,36,44,.06);color:var(--ink-dim)}
.badge.gold{background:rgba(176,127,47,.14);color:var(--gold-deep)}
/* 提示 */
.alert{border-radius:14px;padding:14px 18px;font-size:14px;margin-bottom:16px;border:1px solid transparent}
.alert.ok{background:var(--c-green-bg);color:#236b53;border-color:rgba(47,143,111,.25)}
.alert.warn{background:var(--c-yellow-bg);color:#8f6414;border-color:rgba(181,130,31,.25)}
.alert.bad{background:var(--c-red-bg);color:#97402f;border-color:rgba(192,83,63,.25)}
.alert.info{background:var(--c-blue-bg);color:#2f5a93;border-color:rgba(59,111,176,.25)}
/* 表格 (毛玻璃) */
.gtable{width:100%;border-collapse:separate;border-spacing:0;background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.gtable th{text-align:left;font-size:12.5px;letter-spacing:.04em;color:var(--ink-faint);font-weight:600;padding:14px 18px;background:rgba(255,255,255,.35);border-bottom:1px solid rgba(32,36,44,.08)}
.gtable td{padding:14px 18px;font-size:14px;color:var(--ink);border-bottom:1px solid rgba(32,36,44,.05);vertical-align:middle}
.gtable tbody tr:last-child td{border-bottom:none}
.gtable tbody tr{transition:background .2s}
.gtable tbody tr:hover{background:rgba(255,255,255,.45)}
.gtable .num{font-variant-numeric:tabular-nums}
/* 分页胶囊 */
.pager{display:flex;justify-content:center;gap:8px;margin-top:40px;flex-wrap:wrap}
.pager a,.pager span{padding:9px 16px;border-radius:12px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.8);color:var(--ink-dim);text-decoration:none;font-size:14px;backdrop-filter:blur(10px);transition:all .25s}
.pager a:hover{color:var(--gold-deep);border-color:rgba(176,127,47,.4)}
.pager .cur{color:var(--gold-deep);font-weight:700;border-color:rgba(176,127,47,.4)}
/* 面包屑 */
.crumbs{font-size:13.5px;color:var(--ink-faint);margin-bottom:24px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.crumbs a{color:var(--ink-dim);text-decoration:none}.crumbs a:hover{color:var(--gold-deep)}
.crumbs .sep{color:var(--ink-faint)}.crumbs .current{color:var(--ink)}
/* 空状态 */
.empty-state{border-radius:24px;padding:clamp(40px,5vw,72px);text-align:center;background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);color:var(--ink-dim);font-size:15px}
.empty-state b{font-family:var(--serif);font-size:22px;color:var(--ink);display:block;margin-bottom:8px}
/* Toast：已统一到 ui-dialog.css（此处删除，避免与新版重复定义导致白字浅底） */
/* 模态 */
.modal-mask{position:fixed;inset:0;z-index:9998;background:var(--mask-bg);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}
.modal-card{background:var(--modal-bg);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);border:1px solid var(--stroke);border-radius:var(--modal-radius);box-shadow:var(--shadow-lg);max-width:520px;width:100%;padding:clamp(24px,3vw,36px)}

/* ===================== 后台玻璃外壳 ===================== */
.admin-shell{display:flex;min-height:100vh;background:
    radial-gradient(900px 600px at 88% -4%, rgba(180,205,225,.5), transparent 60%),
    radial-gradient(820px 600px at 4% 12%, rgba(215,196,235,.4), transparent 58%),
    radial-gradient(820px 640px at 50% 116%, rgba(190,220,214,.46), transparent 60%),
    linear-gradient(180deg,var(--bg-1) 0%,var(--bg-0) 60%)}
.admin-side{width:260px;flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;min-height:0;
    background:rgba(255,255,255,.46);backdrop-filter:blur(26px) saturate(160%);-webkit-backdrop-filter:blur(26px) saturate(160%);
    border-right:1px solid rgba(255,255,255,.7);box-shadow:8px 0 30px -24px rgba(40,48,66,.4);padding:18px 14px;overflow-y:auto}
.admin-side .side-brand{display:flex;align-items:center;gap:12px;padding:10px 12px;margin-bottom:14px}
.admin-side .side-logo{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(140deg,var(--gold),var(--gold-deep));color:#fff;font-weight:700;font-family:var(--serif);font-size:16px;box-shadow:0 6px 16px -6px rgba(176,127,47,.5)}
.admin-side .side-brand b{font-family:var(--serif);font-size:19px;color:#1a1e26;letter-spacing:.02em}
.admin-side .side-brand span{display:block;font-size:10px;letter-spacing:.28em;color:var(--ink-faint);text-transform:uppercase}
.admin-side .side-group{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);padding:14px 12px 6px}
.admin-side a.side-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:var(--ink-dim);text-decoration:none;font-size:14px;transition:all .22s var(--ease);margin-bottom:2px}
.admin-side a.side-link svg{width:18px;height:18px;flex-shrink:0;opacity:.7}
.admin-side a.side-link:hover{background:rgba(255,255,255,.55);color:var(--ink)}
.admin-side a.side-link.active{background:rgba(176,127,47,.14);color:var(--gold-deep);font-weight:600}
.admin-side a.side-link.active svg{opacity:1}
/* 可折叠子菜单 */
.admin-side .side-toggle{cursor:pointer;width:100%;border:none;background:transparent;text-align:left}
.admin-side .side-toggle .side-arrow{width:16px;height:16px;margin-left:auto;opacity:.5;transition:transform .2s ease}
.admin-side .side-toggle .side-arrow.rotate{transform:rotate(90deg)}
.admin-side .side-sub-menu{overflow:hidden}
.admin-side a.side-link.side-sub{padding-left:44px;font-size:13px;opacity:.85;margin-bottom:0;border-radius:8px}
.admin-side a.side-link.side-sub:hover{opacity:1;background:rgba(255,255,255,.4)}
.admin-side a.side-link.side-sub.active{opacity:1;font-weight:500;color:var(--gold-deep);background:rgba(176,127,47,.1)}
/* 导航区独占剩余高度并可滚动：否则展开多项后侧栏整体被撑出视口，底部退出登录被挤出屏幕 */
.admin-side nav{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.admin-side nav::-webkit-scrollbar{width:5px}
.admin-side nav::-webkit-scrollbar-thumb{background:rgba(32,36,44,.16);border-radius:3px}
.admin-side nav::-webkit-scrollbar-track{background:transparent}
.admin-side .side-foot{margin-top:auto;padding-top:12px;border-top:1px solid rgba(32,36,44,.07);flex-shrink:0}
/* ===== 侧栏减重：分组折叠 + 快捷区（沿用 v3 设计令牌，不新增视觉体系）===== */
.admin-side .side-sec{margin-bottom:2px}
.admin-side button.side-group{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:0;cursor:pointer;font-family:inherit;font-weight:inherit;font-size:11px;line-height:1.5;text-align:left;padding:14px 12px 6px}
.admin-side button.side-group:hover{color:var(--ink)}
.admin-side .side-caret{flex-shrink:0;opacity:.45;transition:transform .22s var(--ease)}
.admin-side .side-sec.is-open .side-caret{transform:rotate(180deg)}
/* 折叠容器：grid-template-rows 0fr->1fr 实现可过渡高度。
   ⚠️ 硬性前提：容器必须只有「一个」grid item，多个 item 会在 0fr 行内互相挤压重叠。
   因此所有子项统一包在 .side-iwrap 里（见 layout.php），折叠规则只作用于这一个包裹层。 */
.admin-side .side-sec-items{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows .24s var(--ease)}
.admin-side .side-sec.is-open > .side-sec-items{grid-template-rows:1fr}
.admin-side .side-sec-items > .side-iwrap{min-height:0;overflow:hidden}
/* ===== 两级菜单（2026-09-04）：父项可展开，子项缩进 ===== */
.admin-side .side-sub{margin-bottom:2px}
.admin-side a.side-link--parent{position:relative;padding-right:8px}
.admin-side a.side-link--parent > .side-caret{margin-left:auto;opacity:.4}
.admin-side .side-sub.is-open > a.side-link--parent > .side-caret{transform:rotate(180deg)}
.admin-side .side-sub.is-open > a.side-link--parent{color:var(--ink);font-weight:500}
.admin-side .side-sub-items{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows .22s var(--ease)}
.admin-side .side-sub.is-open > .side-sub-items{grid-template-rows:1fr}
.admin-side .side-sub-items > .side-iwrap{min-height:0;overflow:hidden}
/* 快捷区（收藏/最近访问）：内容由 JS 动态注入，不需要 grid 折叠 */
.admin-side a.side-link--sub{margin-left:30px;padding-left:16px;padding-top:7px;padding-bottom:7px;font-size:13px;border-left:1px solid rgba(32,36,44,.1);border-radius:0 8px 8px 0;margin-bottom:1px}
.admin-side a.side-link--sub::before{content:"";width:5px;height:1px;background:rgba(32,36,44,.18);margin-right:8px;flex-shrink:0}
.admin-side a.side-link--sub:hover{background:rgba(255,255,255,.5);color:var(--ink)}
.admin-side a.side-link--sub.active{background:rgba(176,127,47,.12);color:var(--gold-deep);font-weight:500;border-left-color:var(--gold)}
.admin-side a.side-link--sub.active::before{background:var(--gold)}
/* ===== 功能直达面板（Ctrl/⌘+K）===== */
#navPalette{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 16px}
#navPalette[hidden]{display:none}
#navPalette .np-backdrop{position:absolute;inset:0;background:rgba(20,22,28,.42);backdrop-filter:blur(3px)}
#navPalette .np-panel{position:relative;width:min(560px,100%);max-height:70vh;display:flex;flex-direction:column;background:rgba(255,255,255,.92);backdrop-filter:blur(20px) saturate(1.4);border:1px solid rgba(255,255,255,.7);border-radius:16px;box-shadow:0 24px 60px rgba(20,22,28,.22);overflow:hidden}
#navPalette .np-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(32,36,44,.08);color:var(--ink-faint)}
#navPalette .np-head input{flex:1;background:none;border:0;outline:none;font-size:15px;color:var(--ink)}
#navPalette .np-body{overflow-y:auto;padding:8px}
#navPalette .np-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;text-decoration:none;color:var(--ink-dim);font-size:14px}
#navPalette .np-item.is-cur{background:rgba(176,127,47,.14);color:var(--gold-deep)}
#navPalette .np-star{cursor:pointer;color:var(--ink-faint);font-size:14px;line-height:1}
#navPalette .np-star.on{color:var(--gold-deep)}
#navPalette .np-star:hover{opacity:.7}
#navPalette .np-group{margin-left:auto;font-size:11px;color:var(--ink-faint);opacity:.7}
#navPalette .np-empty{padding:24px;text-align:center;color:var(--ink-faint);font-size:13px}
#navPalette .np-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px solid rgba(32,36,44,.08);font-size:11px;color:var(--ink-faint)}
#navPalette .np-linkbtn{background:none;border:0;cursor:pointer;color:var(--ink-faint);font-size:11px;text-decoration:underline;padding:0}
#navPalette .np-linkbtn:hover{color:var(--ink)}
/* 桌面端可折叠侧栏（body.side-collapsed）：收成图标栏，仅 ≥1024px 生效，移动端保持汉堡抽屉 */
@media (min-width:1024px){
  body.side-collapsed .admin-side{width:64px;padding-left:8px;padding-right:8px}
  body.side-collapsed .admin-side .side-brand b,
  body.side-collapsed .admin-side .side-brand span,
  body.side-collapsed .admin-side .side-group,
  body.side-collapsed .admin-side a.side-link span,
  body.side-collapsed .admin-side .side-foot a span{display:none}
  body.side-collapsed .admin-side a.side-link{justify-content:center;gap:0;padding-left:0;padding-right:0}
  body.side-collapsed .admin-side .side-brand{justify-content:center;padding-left:0;padding-right:0}
  /* 图标态：分组标题隐藏、链接收成图标，此时一级列表强制展开（否则图标栏空空如也） */
  body.side-collapsed .admin-side .side-sec-items{grid-template-rows:1fr}
  body.side-collapsed .admin-side .side-caret{display:none}
  body.side-collapsed .admin-side button.side-group{display:none}
  /* 子项无图标，图标态下隐藏（父项仍可点击直达） */
  body.side-collapsed .admin-side .side-sub-items{display:none}
}
.admin-main{flex:1;display:flex;flex-direction:column;min-width:0}
.admin-top{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px clamp(20px,4vw,40px);
    background:rgba(255,255,255,.4);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);
    border-bottom:1px solid rgba(255,255,255,.7)}
.admin-top h1{font-family:var(--serif);font-size:20px;font-weight:700;color:#1a1e26}
.admin-top .top-link{font-size:13.5px;color:var(--c-blue);text-decoration:none}.admin-top .top-link:hover{text-decoration:underline}
.admin-top .top-user{font-size:13.5px;color:var(--ink-dim)}
.admin-content{padding:clamp(20px,3vw,36px);flex:1}
.admin-stat{background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);border-radius:20px;padding:22px;box-shadow:var(--shadow);transition:transform .3s var(--ease)}
.admin-stat:hover{transform:translateY(-4px)}
.admin-stat .label{font-size:13px;color:var(--ink-faint)}
.admin-stat .val{font-family:var(--serif);font-size:30px;font-weight:700;color:#1a1e26;margin-top:6px;line-height:1}
.admin-stat .delta{font-size:12px;margin-top:8px}
.admin-quick{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;border-radius:16px;background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);box-shadow:var(--shadow);text-decoration:none;color:var(--ink-dim);font-size:12.5px;transition:all .25s var(--ease)}
.admin-quick:hover{transform:translateY(-3px);border-color:rgba(176,127,47,.4);color:var(--gold-deep)}
.admin-quick svg{width:22px;height:22px}

/* ===================== 后台全局玻璃化覆盖 ===================== */
/* 让所有后台页面的 bg-white 卡片自动变为毛玻璃 */
.admin-content .bg-white{
    background:var(--glass-card);
    backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
    border-color:var(--stroke);
    box-shadow:var(--shadow);
}
/* 圆角统一 */
.admin-content .rounded-xl{border-radius:var(--radius)}
.admin-content .rounded-lg{border-radius:var(--radius-sm)}
/* 表头玻璃化 */
.admin-content .bg-gray-50{
    background:rgba(255,255,255,.25);
    backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
    border-color:var(--stroke-soft);
}
/* 表格行 hover */
.admin-content tbody tr:hover{background:rgba(255,255,255,.35)}
/* 搜索栏/操作栏也玻璃化 */
.admin-content .bg-white.rounded-xl.p-4{
    background:rgba(255,255,255,.38);
}
/* 提示框玻璃化 */
.admin-content .bg-blue-50{background:rgba(59,111,176,.08);border-color:rgba(59,111,176,.2);backdrop-filter:blur(8px)}
.admin-content .bg-green-50{background:rgba(47,143,111,.08);border-color:rgba(47,143,111,.2);backdrop-filter:blur(8px)}
.admin-content .bg-orange-50{background:rgba(194,112,42,.08);border-color:rgba(194,112,42,.2);backdrop-filter:blur(8px)}
.admin-content .bg-red-50{background:rgba(192,83,63,.08);border-color:rgba(192,83,63,.2);backdrop-filter:blur(8px)}
/* 按钮玻璃化 */
.admin-content .bg-blue-600{
    background:var(--c-blue);
    box-shadow:0 4px 14px rgba(59,111,176,.3);
}
.admin-content .bg-blue-600:hover{
    box-shadow:0 6px 20px rgba(59,111,176,.4);
    transform:translateY(-1px);
}
.admin-content .bg-green-600{background:var(--c-green);box-shadow:0 4px 14px rgba(47,143,111,.25)}
.admin-content .bg-green-50{background:rgba(47,143,111,.08);border-color:rgba(47,143,111,.15)}
/* 分页玻璃化 */
.admin-content .bg-blue-600.text-white{border-radius:10px}
.admin-content .bg-gray-100{background:rgba(255,255,255,.35);border:1px solid var(--stroke-soft);border-radius:10px}
.admin-content .bg-gray-100:hover{background:rgba(255,255,255,.55)}
/* 标签/徽章玻璃化 */
.admin-content .bg-green-50.text-green-700,
.admin-content .bg-orange-50.text-orange-700,
.admin-content .bg-red-50.text-red-700{
    backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    border:1px solid rgba(255,255,255,.5);
}
/* 统计卡片悬停动效 */
.admin-content .bg-white.rounded-xl.p-5,
.admin-content .bg-white.rounded-xl.p-6{
    transition:transform .25s var(--ease),box-shadow .25s var(--ease);
}
.admin-content .bg-white.rounded-xl.p-5:hover,
.admin-content .bg-white.rounded-xl.p-6:hover{
    transform:translateY(-3px);
    box-shadow:0 26px 60px -24px rgba(40,48,66,.34);
}
/* 弹窗玻璃化 */
.admin-content .fixed .bg-white{
    background:var(--glass-strong);
    backdrop-filter:blur(28px) saturate(170%);-webkit-backdrop-filter:blur(28px) saturate(170%);
    border:1px solid var(--stroke);
    border-radius:20px;
}
/* status.php 自定义卡片玻璃化 */
.admin-content .s-card{
    background:var(--glass-card);
    backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
    border-color:var(--stroke);
    box-shadow:var(--shadow);
}
/* 状态页节点头部保持原样（蓝色渐变）不覆盖 */
/* 状态页资源监控卡片微调 */
.admin-content .res-card{
    background:rgba(255,255,255,.35);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border:1px solid var(--stroke);
}

/* Tailwind hover 工具类垫片（让旧标记在 v3 下也有交互反馈） */
.hover\:bg-blue-50:hover{background:rgba(176,127,47,.08)}
.hover\:border-blue-200:hover{border-color:rgba(176,127,47,.45)}
.hover\:bg-blue-100:hover{background:rgba(176,127,47,.10)}
.hover\:bg-blue-600:hover{background:var(--c-blue)}
.hover\:bg-slate-700:hover{background:rgba(32,36,44,.06)}
.hover\:underline:hover{text-decoration:underline}
.hover\:text-blue-200:hover{color:#9ec5e8}


/* === v3 consolidated frontend === */
/* Frontend base (moved from theme/frost/layout/main.php — global) */
[x-cloak]{display:none!important}
/* hidden 属性全局兜底：作者样式的 display（如 .gm-box{display:flex}）会覆盖 UA 的
   [hidden]{display:none}，导致弹窗/抽屉 hidden 失效、页面加载即弹出。
   此处统一兜底（与 #navPalette[hidden]、#tpModal[hidden] 的局部修法合并为全局）。
   注意：只匹配 hidden 属性（<div hidden>），不影响 class="hidden"（Tailwind 类）。 */
[hidden]{display:none!important}
        
        *{margin:0;padding:0;box-sizing:border-box}
        html{scroll-behavior:smooth}
        body{font-family:var(--sans);background:var(--bg-0);color:var(--ink);line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased}
        ::selection{background:rgba(176,127,47,.28)}
        a{color:var(--gold-deep);text-decoration:none;transition:color .25s}
        a:hover{color:var(--gold)}

        /* 背景层 */
        .sky{position:fixed;inset:0;z-index:-3;background:
            radial-gradient(1000px 640px at 85% -6%, rgba(180,205,225,.55), transparent 62%),
            radial-gradient(880px 620px at 5% 16%, rgba(215,196,235,.42), transparent 60%),
            radial-gradient(900px 720px at 45% 115%, rgba(190,220,214,.5), transparent 62%),
            linear-gradient(180deg,var(--bg-1) 0%,var(--bg-0) 60%)}
        .blob{position:fixed;z-index:-2;border-radius:50%;filter:blur(90px);mix-blend-mode:multiply;opacity:.5;will-change:transform}
        .blob.gold{width:480px;height:480px;background:radial-gradient(circle,rgba(232,200,140,.7),transparent 65%);top:-120px;right:10%;animation:drift1 28s var(--ease) infinite alternate}
        .blob.teal{width:440px;height:440px;background:radial-gradient(circle,rgba(160,220,205,.65),transparent 65%);bottom:-140px;left:6%;animation:drift2 34s var(--ease) infinite alternate}
        .blob.violet{width:380px;height:380px;background:radial-gradient(circle,rgba(200,185,235,.55),transparent 65%);top:44%;left:40%;animation:drift3 40s var(--ease) infinite alternate}
        @keyframes drift1{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(-120px,90px,0) scale(1.15)}}
        @keyframes drift2{from{transform:translate3d(0,0,0) scale(1.1)}to{transform:translate3d(140px,-80px,0) scale(.95)}}
        @keyframes drift3{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(80px,70px,0) scale(1.18)}}

        /* 公告栏 */
        .ticker{position:relative;z-index:60;background:linear-gradient(90deg,rgba(176,127,47,.14),rgba(176,127,47,.04));border-bottom:1px solid rgba(176,127,47,.2);padding:8px 20px;text-align:center;font-size:12.5px;letter-spacing:.05em;color:var(--gold-deep);overflow:hidden;white-space:nowrap}
        .ticker span{display:inline-block;animation:tick 18s linear infinite}
        @keyframes tick{from{transform:translateX(100%)}to{transform:translateX(-100%)}}
        @media (prefers-reduced-motion:reduce){.ticker span{animation:none}}

        /* 导航 */
        .nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px clamp(20px,5vw,72px);background:rgba(255,255,255,.42);backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border-bottom:1px solid rgba(255,255,255,.65);box-shadow:0 8px 30px -18px rgba(40,48,66,.18)}
        .brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);flex-shrink:0}
        .brand .mark{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(140deg,rgba(176,127,47,.28),rgba(176,127,47,.08));border:1px solid rgba(176,127,47,.35);font-family:var(--serif);font-weight:700;color:var(--gold-deep);box-shadow:0 4px 16px -4px rgba(176,127,47,.35)}
        .brand .bt{font-family:var(--serif);font-size:21px;letter-spacing:.04em}
        .brand .bt b{font-weight:700}.brand .bt span{color:var(--gold-deep)}
        .brand .sub{display:block;font-size:10px;letter-spacing:.3em;color:var(--ink-faint);text-transform:uppercase}
        .nav-center{display:flex;align-items:center;gap:6px;margin:0 auto}
        .nav-link{color:var(--ink-dim);text-decoration:none;font-size:14.5px;padding:8px 16px;border-radius:10px;position:relative;transition:color .25s,background .25s}
        .nav-link:hover{color:var(--ink);background:rgba(255,255,255,.55)}
        .nav-link.active{color:var(--gold-deep);font-weight:600}
        .nav-link.active::after{content:"";position:absolute;left:16px;right:16px;bottom:3px;height:2px;border-radius:2px;background:var(--gold);box-shadow:0 1px 8px rgba(176,127,47,.5)}
        .nav-right{display:flex;align-items:center;gap:12px;flex-shrink:0}
        .search{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;width:clamp(120px,14vw,220px);background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.8);backdrop-filter:blur(12px);transition:border-color .25s,box-shadow .25s}
        .search:focus-within{border-color:rgba(176,127,47,.4);box-shadow:0 0 0 4px rgba(176,127,47,.1)}
        .search svg{flex-shrink:0;opacity:.45}
        .search input{background:none;border:none;outline:none;color:var(--ink);width:100%;font-size:13.5px;font-family:var(--sans)}
        .search input::placeholder{color:var(--ink-faint)}
        .icon-btn{position:relative;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;cursor:pointer;background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.8);color:var(--ink-dim);transition:color .25s,transform .25s}
        .icon-btn:hover{color:var(--ink);transform:translateY(-1px)}
        .icon-btn .red{position:absolute;top:8px;right:9px;width:7px;height:7px;border-radius:50%;background:#d65a5a;box-shadow:0 0 6px #d65a5a}
        .avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(140deg,#8fd8c9,#5a8fae);border:2px solid rgba(255,255,255,.85);display:grid;place-items:center;font-size:14px;font-weight:700;color:#fff;box-shadow:0 4px 14px -4px rgba(40,80,90,.4);text-decoration:none}
        .nav-login{font-size:14px;color:var(--ink-dim);text-decoration:none;padding:9px 18px;border-radius:12px;border:1px solid rgba(32,36,44,.1);background:rgba(255,255,255,.5);transition:all .25s}
        .nav-login:hover{color:var(--gold-deep);border-color:rgba(176,127,47,.4)}
        .burger{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:8px}
        .burger i{width:22px;height:2px;background:var(--ink);border-radius:2px}
        .nav-mobile{display:none;position:absolute;top:62px;left:0;right:0;flex-direction:column;gap:4px;padding:18px clamp(20px,6vw,90px);background:rgba(255,255,255,.9);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow)}
        .nav-mobile.open{display:flex}

        /* 动效 */
        .reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
        .reveal.in{opacity:1;transform:none}

        @media (max-width:1020px){.search{display:none}}
        @media (max-width:920px){.nav-center{display:none}.burger{display:flex}}

        /* 未激活提示条 */
        .verify-banner{background:rgba(255,193,99,.3);border-bottom:1px solid rgba(217,153,41,.35);backdrop-filter:blur(10px);padding:10px clamp(20px,5vw,72px);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:13.5px;color:#7a5414}
        .verify-banner .btn{background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff;border:none;padding:8px 16px;border-radius:10px;font-size:13px;cursor:pointer;font-weight:600;font-family:var(--sans)}
        .verify-banner a{color:#7a5414;text-decoration:underline}

        /* 通用按钮 */
        .btn{display:inline-flex;align-items:center;gap:10px;padding:13px 24px;border-radius:12px;font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;border:none;transition:transform .25s var(--ease),box-shadow .25s,background .25s;font-family:var(--sans)}
        .btn.gold{background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff;box-shadow:0 14px 32px -10px rgba(143,100,32,.5)}
        .btn.gold:hover{transform:translateY(-3px);box-shadow:0 20px 40px -10px rgba(143,100,32,.6)}
        .btn.ghost{background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.85);color:var(--ink)}
        .btn.ghost:hover{transform:translateY(-3px);background:rgba(255,255,255,.75)}

        /* 页脚 */
        .foot{position:relative;margin-top:60px}
        .foot::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(800px 400px at 20% 120%, rgba(232,200,140,.25), transparent 60%),radial-gradient(800px 420px at 85% 120%, rgba(160,220,205,.2), transparent 60%);pointer-events:none}
        .newsletter{max-width:720px;margin:0 auto;padding:clamp(28px,4vw,48px);border-radius:24px;text-align:center;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.8);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);box-shadow:var(--shadow)}
        .newsletter h3{font-family:var(--serif);font-size:clamp(20px,2.6vw,28px);margin-bottom:8px}
        .newsletter p{font-size:14px;color:var(--ink-faint);margin-bottom:22px}
        .newsletter form{display:flex;gap:10px;max-width:440px;margin:0 auto}
        .newsletter input{flex:1;padding:13px 18px;border-radius:12px;font-size:14px;font-family:var(--sans);background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.9);color:var(--ink);outline:none;transition:border-color .25s}
        .newsletter input::placeholder{color:var(--ink-faint)}
        .newsletter input:focus{border-color:rgba(176,127,47,.5)}
        .foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr auto;gap:clamp(24px,3vw,48px);padding:clamp(48px,6vw,72px) clamp(20px,6vw,90px) 32px;align-items:start}
        .foot-brand p{font-size:14px;color:var(--ink-dim);max-width:300px;margin:14px 0 20px}
        .socials{display:flex;gap:10px}
        .socials a{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.45);border:1px solid rgba(255,255,255,.6);color:var(--ink-dim);text-decoration:none;transition:transform .25s var(--ease),color .25s,border-color .25s}
        .socials a:hover{transform:translateY(-2px);color:var(--gold-deep);border-color:rgba(176,127,47,.4)}
        .foot-col h4{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:14px;font-weight:600}
        .foot-col a{display:block;font-size:13.5px;color:var(--ink-dim);text-decoration:none;padding:4px 0;transition:color .25s,transform .25s}
        .foot-col a:hover{color:var(--gold-deep);transform:translateX(3px)}
        .foot-bottom{border-top:1px solid rgba(32,36,44,.06);padding:16px clamp(20px,6vw,90px);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink-faint)}
        @media (max-width:1020px){.foot-grid{grid-template-columns:1fr 1fr 1fr}}
        @media (max-width:920px){.foot-grid{grid-template-columns:1fr 1fr;gap:28px}.newsletter form{flex-direction:column}}
        @media (max-width:640px){.foot-grid{grid-template-columns:1fr;gap:24px}}
        @media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}


/* ===== pg-about  (template: about) ===== */
.pg-about .about-page {max-width:800px;margin:0 auto;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px) 80px}
.pg-about .about-hero {text-align:center;padding:clamp(40px,6vw,80px) 0 32px}
.pg-about .about-hero .logo {width:72px;height:72px;border-radius:18px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));display:grid;place-items:center;margin:0 auto 20px;color:#fff;font-family:var(--serif);font-size:28px;font-weight:700;box-shadow:0 10px 30px -10px rgba(176,127,47,.4)}
.pg-about .about-hero h1 {font-family:var(--serif);font-size:clamp(28px,4vw,42px);font-weight:700;color:#1a1e26;margin-bottom:8px}
.pg-about .about-hero .subtitle {font-size:16px;color:var(--ink-dim)}
.pg-about .about-card {border-radius:24px;padding:clamp(28px,4vw,48px);background:rgba(255,255,255,.45);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow);margin-bottom:24px}
.pg-about .about-card h2 {font-family:var(--serif);font-size:clamp(20px,2.4vw,26px);font-weight:700;color:#1a1e26;margin-bottom:16px;display:flex;align-items:center;gap:12px}
.pg-about .about-card h2::before {content:"";width:5px;height:5px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold)}
.pg-about .about-card p {color:var(--ink-dim);font-size:15px;line-height:1.8;margin-bottom:12px}
.pg-about .about-card p:last-child {margin-bottom:0}
.pg-about .about-card ul {list-style:none;margin-top:12px}
.pg-about .about-card ul li {font-size:14.5px;color:var(--ink-dim);padding:8px 0;border-bottom:1px solid rgba(32,36,44,.06);display:flex;align-items:center;gap:10px}
.pg-about .about-card ul li:last-child {border-bottom:none}
.pg-about .about-card ul li::before {content:"";width:5px;height:5px;border-radius:50%;background:var(--gold);flex-shrink:0}
.pg-about .about-card a {color:var(--gold-deep);text-decoration:none;font-weight:500}
.pg-about .about-card a:hover {text-decoration:underline}
.pg-about .about-cta {border-radius:24px;padding:clamp(28px,4vw,48px);text-align:center;background:rgba(255,255,255,.48);backdrop-filter:blur(28px) saturate(170%);-webkit-backdrop-filter:blur(28px) saturate(170%);border:1px solid rgba(255,255,255,.85);box-shadow:var(--shadow)}
.pg-about .about-cta h2 {font-family:var(--serif);font-size:clamp(22px,2.8vw,30px);font-weight:700;color:#1a1e26;margin-bottom:12px}
.pg-about .about-cta p {color:var(--ink-dim);margin-bottom:24px}


/* ===== pg-archive  (template: archive) ===== */
.pg-archive .arch-page {max-width:900px;margin:0 auto;padding:clamp(40px,6vw,72px) clamp(20px,6vw,60px) 90px}
.pg-archive .arch-page .sec-head {text-align:center;margin-bottom:44px}
.pg-archive .arch-page .sec-head .kicker {display:inline-flex;align-items:center;gap:10px;padding:7px 16px;border-radius:999px;font-size:13px;letter-spacing:.12em;color:var(--gold-deep);background:rgba(176,127,47,.12);border:1px solid rgba(176,127,47,.3);backdrop-filter:blur(8px);margin-bottom:16px}
.pg-archive .arch-page h1 {font-family:var(--serif);font-size:clamp(30px,4.4vw,42px);font-weight:700;margin-bottom:12px;color:#1a1e26}
.pg-archive .arch-page .sub {color:var(--ink-dim);font-size:15px}
.pg-archive .arch-year {margin-bottom:40px}
.pg-archive .arch-year h2 {font-family:var(--serif);font-size:22px;font-weight:700;color:#1a1e26;display:flex;align-items:center;gap:12px;margin-bottom:16px}
.pg-archive .arch-year h2 small {font-size:13px;font-weight:400;color:var(--ink-faint)}
.pg-archive .arch-list {display:flex;flex-direction:column;gap:14px;border-left:2px solid rgba(176,127,47,.25);padding-left:24px}
.pg-archive .a-card {display:flex;gap:18px;align-items:center;border-radius:18px;padding:12px;background:rgba(255,255,255,.42);backdrop-filter:blur(18px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow);text-decoration:none;color:inherit;transition:transform .28s var(--ease),background .28s}
.pg-archive .a-card:hover {transform:translateY(-3px);background:rgba(255,255,255,.58)}
.pg-archive .a-card .thumb {width:130px;flex-shrink:0;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,rgba(150,175,215,.5),rgba(160,205,195,.45))}
.pg-archive .a-card .thumb img {width:100%;height:78px;object-fit:cover;display:block}
.pg-archive .a-card .thumb .bar {height:78px;background:linear-gradient(135deg,rgba(150,175,215,.5),rgba(160,205,195,.45));position:relative}
.pg-archive .a-card .thumb .bar::after {content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%)}
.pg-archive .a-card .a-body {flex:1;min-width:0}
.pg-archive .a-card .a-cat {font-size:11.5px;letter-spacing:.08em;color:var(--gold-deep);font-weight:600;margin-bottom:4px}
.pg-archive .a-card h3 {font-size:16.5px;font-weight:600;line-height:1.4;color:#1a1e26;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-archive .a-card .a-meta {font-size:12px;color:var(--ink-faint)}
.pg-archive .empty-state {border-radius:24px;padding:clamp(40px,5vw,64px);text-align:center;background:rgba(255,255,255,.42);backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);color:var(--ink-dim);font-size:15px}
.pg-archive .empty-state b {font-family:var(--serif);font-size:22px;color:var(--ink);display:block;margin-bottom:8px}
.pg-archive @media (max-width:640px) {.a-card .thumb{width:96px}.a-card .thumb img,.a-card .thumb .bar{height:64px}}


/* ===== pg-index  (template: index) ===== */
.pg-index .hero {min-height:calc(100vh - 112px);display:flex;align-items:center;padding:clamp(40px,6vw,96px) clamp(20px,6vw,90px) 80px;gap:clamp(32px,5vw,80px);position:relative}
.pg-index .hero-copy {flex:1.15;min-width:0}
.pg-index .eyebrow {display:inline-flex;align-items:center;gap:10px;padding:7px 16px;border-radius:999px;font-size:13px;letter-spacing:.12em;color:var(--gold-deep);background:rgba(176,127,47,.12);border:1px solid rgba(176,127,47,.3);backdrop-filter:blur(8px)}
.pg-index .eyebrow::before {content:"";width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold)}
.pg-index .hero h1 {font-family:var(--serif);font-size:clamp(44px,7vw,92px);font-weight:700;line-height:1.12;letter-spacing:.01em;color:#1a1e26;margin:26px 0 20px}
.pg-index .hero h1 .hl {position:relative;color:var(--gold-deep)}
.pg-index .hero h1 .hl::after {content:"";position:absolute;left:0;right:0;bottom:.06em;height:.42em;background:linear-gradient(90deg,rgba(176,127,47,.22),transparent);border-radius:4px;z-index:-1}
.pg-index .hero p.lead {font-size:clamp(16px,1.6vw,19px);color:var(--ink-dim);max-width:560px;margin-bottom:36px}
.pg-index .hero-actions {display:flex;gap:16px;flex-wrap:wrap}
.pg-index .hero-stats {display:flex;gap:clamp(24px,4vw,56px);margin-top:56px;flex-wrap:wrap}
.pg-index .hero-stats .s b {font-family:var(--serif);font-size:clamp(26px,3vw,38px);font-weight:700;display:block;line-height:1;color:#1a1e26}
.pg-index .hero-stats .s b em {font-style:normal;color:var(--gold-deep);font-size:.62em;vertical-align:super;margin-left:2px}
.pg-index .hero-stats .s span {font-size:13px;color:var(--ink-faint);letter-spacing:.06em}
.pg-index .hero-panel {flex:1;min-width:0;position:relative;perspective:1200px}
.pg-index .glass-panel {background:rgba(255,255,255,.46);backdrop-filter:blur(26px) saturate(170%);-webkit-backdrop-filter:blur(26px) saturate(170%);border:1px solid rgba(255,255,255,.85);border-radius:28px;box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.9);padding:clamp(24px,3vw,40px);transform:rotateY(-6deg) rotateX(2deg);transition:transform .6s var(--ease);position:relative;overflow:hidden}
.pg-index .hero-panel:hover .glass-panel {transform:rotateY(-2deg) rotateX(0)}
.pg-index .glass-panel::before {content:"";position:absolute;top:0;left:8%;right:55%;height:1px;background:linear-gradient(90deg,rgba(255,255,255,1),transparent)}
.pg-index .panel-tag {display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}
.pg-index .panel-tag span {font-size:13px;letter-spacing:.1em;color:var(--ink-faint)}
.pg-index .panel-tag b {font-family:var(--serif);font-size:15px;color:var(--gold-deep);font-weight:600}
.pg-index .plan {display:flex;align-items:center;justify-content:space-between;padding:18px 4px;border-bottom:1px solid rgba(32,36,44,.07)}
.pg-index .plan:last-child {border-bottom:none}
.pg-index .plan .p-name {font-size:15px;font-weight:600}
.pg-index .plan .p-name small {display:block;font-size:12px;color:var(--ink-faint);font-weight:400;margin-top:2px}
.pg-index .plan .p-price {font-family:var(--serif);font-size:26px;color:var(--gold-deep)}
.pg-index .plan .p-price small {font-size:13px;color:var(--ink-dim);margin-right:2px}
.pg-index .plan-empty {font-size:13.5px;color:var(--ink-faint);text-align:center;padding:26px 10px}
.pg-index .panel-cta {margin-top:24px;text-align:center;padding:13px;border-radius:14px;font-size:14px;font-weight:600;letter-spacing:.04em;background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.85);color:var(--ink);cursor:pointer;text-decoration:none;display:block;transition:transform .25s var(--ease),background .25s}
.pg-index .panel-cta:hover {transform:translateY(-2px);background:rgba(176,127,47,.14);border-color:rgba(176,127,47,.35)}
.pg-index .panel-float {position:absolute;right:-14px;top:-16px;background:rgba(255,255,255,.72);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.9);border-radius:16px;padding:12px 18px;font-size:13px;box-shadow:var(--shadow);display:flex;align-items:center;gap:10px;animation:float 5s var(--ease) infinite alternate}
.pg-index .panel-float .pulse {width:9px;height:9px;border-radius:50%;background:#2f8f7c;box-shadow:0 0 10px #2f8f7c}
.pg-index @keyframes float {from{transform:translateY(0)}to{transform:translateY(-10px)}}
.pg-index section {padding:clamp(70px,9vw,130px) clamp(20px,6vw,90px)}
.pg-index .sec-head {max-width:640px;margin-bottom:clamp(40px,5vw,64px)}
.pg-index .sec-head .kicker {font-size:13px;letter-spacing:.18em;color:var(--gold-deep);text-transform:uppercase;margin-bottom:14px}
.pg-index .sec-head h2 {font-family:var(--serif);font-size:clamp(30px,4.4vw,52px);font-weight:700;line-height:1.2;letter-spacing:.01em;color:#1a1e26}
.pg-index .sec-head p {color:var(--ink-dim);margin-top:16px;font-size:16px}
.pg-index .home-post-grid {display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:clamp(16px,2vw,24px)}
.pg-index .home-post-card {border-radius:20px;padding:18px;background:rgba(255,255,255,.45);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:0 16px 40px -24px rgba(40,48,66,.28);transition:transform .35s var(--ease),background .35s;display:grid;grid-template-columns:160px 1fr;gap:16px;text-decoration:none;color:inherit;overflow:hidden}
.pg-index .home-post-card:hover {transform:translateY(-4px);background:rgba(255,255,255,.6)}
.pg-index .home-post-card .cat {font-size:11px;letter-spacing:.14em;color:var(--gold-deep);margin-bottom:8px;display:flex;align-items:center;gap:6px;text-transform:uppercase}
.pg-index .home-post-card .cat::before {content:"";width:4px;height:4px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold)}
.pg-index .home-post-card h3 {font-family:var(--serif);font-size:clamp(15px,1.6vw,18px);font-weight:700;line-height:1.35;margin-bottom:6px;color:#1a1e26}
.pg-index .home-post-card .excerpt {color:var(--ink-dim);font-size:13px;margin-bottom:10px;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pg-index .home-post-card .meta {font-size:11.5px;color:var(--ink-faint);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pg-index .home-post-card .cover {border-radius:14px;overflow:hidden;background:linear-gradient(135deg,rgba(150,175,215,.5),rgba(160,205,195,.45));min-height:120px}
.pg-index .home-post-card .cover img {width:100%;height:100%;min-height:120px;object-fit:cover;display:block}
.pg-index .home-post-card .cover .ph {min-height:120px;background:linear-gradient(135deg,rgba(150,175,215,.5),rgba(160,205,195,.45));position:relative}
.pg-index .home-post-card .cover .ph::after {content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%)}
.pg-index .empty-state {border-radius:24px;padding:clamp(40px,5vw,72px);text-align:center;background:rgba(255,255,255,.42);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);color:var(--ink-dim);font-size:15px}
.pg-index .empty-state b {font-family:var(--serif);font-size:22px;color:var(--ink);display:block;margin-bottom:8px}
.pg-index .plans-wrap {display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.5vw,32px);align-items:stretch}
.pg-index .plan-card {border-radius:28px;padding:clamp(28px,3.4vw,44px);background:rgba(255,255,255,.45);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow);transition:transform .35s var(--ease),background .35s;display:flex;flex-direction:column;position:relative}
.pg-index .plan-card:hover {transform:translateY(-8px);background:rgba(255,255,255,.6)}
.pg-index .plan-card .pl-name {font-family:var(--serif);font-size:24px;font-weight:700;margin-bottom:6px}
.pg-index .plan-card .pl-desc {font-size:13.5px;color:var(--ink-faint);margin-bottom:22px;min-height:3.4em}
.pg-index .plan-card .pl-price {font-family:var(--serif);font-size:46px;font-weight:700;color:var(--gold-deep);line-height:1;margin-bottom:24px}
.pg-index .plan-card .pl-price small {font-size:15px;color:var(--ink-dim);font-weight:400}
.pg-index .plan-card ul {list-style:none;margin-bottom:30px;flex:1}
.pg-index .plan-card li {font-size:14px;color:var(--ink-dim);padding:9px 0;display:flex;gap:11px;align-items:center}
.pg-index .plan-card li::before {content:"✓";color:var(--gold-deep);font-weight:700}
.pg-index .plan-card .btn {width:100%;justify-content:center;text-decoration:none}
.pg-index .plan-card.soon {justify-content:center;align-items:center;gap:8px;text-align:center;min-height:280px}
.pg-index .plan-card.soon b {font-family:var(--serif);font-size:22px}
.pg-index .plan-card.soon span {font-size:13.5px;color:var(--ink-faint)}
.pg-index .metrics {display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2vw,28px)}
.pg-index .metric {border-radius:22px;padding:clamp(22px,2.6vw,34px);text-align:left;background:rgba(255,255,255,.4);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);border:1px solid rgba(255,255,255,.7);transition:transform .3s var(--ease)}
.pg-index .metric:hover {transform:translateY(-4px)}
.pg-index .metric b {font-family:var(--serif);font-size:clamp(28px,3.2vw,42px);font-weight:700;display:block;line-height:1.1;color:var(--gold-deep)}
.pg-index .metric span {font-size:13px;color:var(--ink-faint);letter-spacing:.06em}
.pg-index .final-cta {text-align:center;max-width:820px;margin:0 auto;border-radius:32px;padding:clamp(40px,6vw,80px);background:rgba(255,255,255,.48);backdrop-filter:blur(28px) saturate(170%);-webkit-backdrop-filter:blur(28px) saturate(170%);border:1px solid rgba(255,255,255,.85);box-shadow:var(--shadow)}
.pg-index .final-cta h2 {font-family:var(--serif);font-size:clamp(28px,4vw,46px);font-weight:700;margin-bottom:14px;color:#1a1e26}
.pg-index .final-cta p {color:var(--ink-dim);margin-bottom:32px}
.pg-index .pager {display:flex;justify-content:center;gap:8px;margin-top:48px;flex-wrap:wrap}
.pg-index .pager a, .pg-index .pager span {padding:10px 18px;border-radius:12px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.8);color:var(--ink-dim);text-decoration:none;font-size:14px;backdrop-filter:blur(10px);transition:all .25s}
.pg-index .pager a:hover {color:var(--gold-deep);border-color:rgba(176,127,47,.4)}
.pg-index .pager .cur {color:var(--gold-deep);font-weight:700;border-color:rgba(176,127,47,.4)}
.pg-index @media (max-width:920px) {
        .hero{flex-direction:column;min-height:auto;padding-top:48px}
        .hero-panel{width:100%;max-width:480px}
        .glass-panel{transform:none}
        .blog-grid{grid-template-columns:1fr}
        .post.featured,.post.standard,.post.slim{grid-column:span 1}
        .plans-wrap{grid-template-columns:1fr;max-width:460px;margin:0 auto}
        .metrics{grid-template-columns:repeat(2,1fr)}
        .home-post-grid{grid-template-columns:1fr}
        .home-post-card{grid-template-columns:1fr}
        .home-post-card .cover{min-height:160px}
    }


/* ===== pg-pages-privacy / pg-pages-terms  (template: pages/privacy, pages/terms) 2026-10-20 ===== */
.pg-pages-privacy .legal-page, .pg-pages-terms .legal-page {max-width:800px;margin:0 auto;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px) 80px}
.pg-pages-privacy .legal-hero, .pg-pages-terms .legal-hero {text-align:center;padding:clamp(40px,6vw,80px) 0 32px}
.pg-pages-privacy .legal-hero .icon, .pg-pages-terms .legal-hero .icon {width:64px;height:64px;border-radius:16px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));display:grid;place-items:center;margin:0 auto 20px;box-shadow:0 10px 30px -10px rgba(176,127,47,.4)}
.pg-pages-privacy .legal-hero .icon svg, .pg-pages-terms .legal-hero .icon svg {width:28px;height:28px;stroke:#fff;fill:none;stroke-width:2}
.pg-pages-privacy .legal-hero h1, .pg-pages-terms .legal-hero h1 {font-family:var(--serif);font-size:clamp(28px,4vw,42px);font-weight:700;color:#1a1e26;margin-bottom:8px}
.pg-pages-privacy .legal-hero .subtitle, .pg-pages-terms .legal-hero .subtitle {font-size:16px;color:var(--ink-dim)}
.pg-pages-privacy .legal-card, .pg-pages-terms .legal-card {border-radius:24px;padding:clamp(28px,4vw,48px);background:rgba(255,255,255,.45);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow)}
.pg-pages-privacy .legal-card h2, .pg-pages-terms .legal-card h2 {font-family:var(--serif);font-size:clamp(18px,2.2vw,22px);font-weight:700;color:#1a1e26;margin:28px 0 12px;display:flex;align-items:center;gap:10px}
.pg-pages-privacy .legal-card h2:first-child, .pg-pages-terms .legal-card h2:first-child {margin-top:0}
.pg-pages-privacy .legal-card h2::before, .pg-pages-terms .legal-card h2::before {content:"";width:5px;height:5px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold);flex-shrink:0}
.pg-pages-privacy .legal-card .legal-h3, .pg-pages-terms .legal-card .legal-h3 {font-size:15px;font-weight:600;color:var(--ink);margin:16px 0 8px}
.pg-pages-privacy .legal-card p, .pg-pages-terms .legal-card p {color:var(--ink-dim);font-size:15px;line-height:1.8;margin-bottom:12px}
.pg-pages-privacy .legal-card ul, .pg-pages-terms .legal-card ul {list-style:none;margin:12px 0}
.pg-pages-privacy .legal-card ul li, .pg-pages-terms .legal-card ul li {font-size:14.5px;color:var(--ink-dim);padding:8px 0;border-bottom:1px solid rgba(32,36,44,.06);display:flex;align-items:flex-start;gap:10px;line-height:1.6}
.pg-pages-privacy .legal-card ul li:last-child, .pg-pages-terms .legal-card ul li:last-child {border-bottom:none}
.pg-pages-privacy .legal-card ul li::before, .pg-pages-terms .legal-card ul li::before {content:"";width:5px;height:5px;border-radius:50%;background:var(--gold);flex-shrink:0;margin-top:8px}
.pg-pages-privacy .legal-card ul li strong, .pg-pages-terms .legal-card ul li strong {color:var(--ink);font-weight:600}
.pg-pages-privacy .legal-card a, .pg-pages-terms .legal-card a {color:var(--gold-deep);text-decoration:none;font-weight:500}
.pg-pages-privacy .legal-card a:hover, .pg-pages-terms .legal-card a:hover {text-decoration:underline}

/* ===== pg-product-host_list  (template: product/host_list) ===== */
.pg-product-host_list .host-page {max-width:1200px;margin:0 auto;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px) 80px}
.pg-product-host_list .host-hero {text-align:center;padding:clamp(40px,6vw,80px) 0 32px}
.pg-product-host_list .host-hero h1 {font-family:var(--serif);font-size:clamp(28px,4vw,42px);font-weight:700;color:#1a1e26;margin-bottom:12px}
.pg-product-host_list .host-hero p {color:var(--ink-dim);font-size:16px;max-width:600px;margin:0 auto}
.pg-product-host_list .filter-bar {border-radius:18px;padding:20px;margin-bottom:32px;background:rgba(255,255,255,.45);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.75)}
.pg-product-host_list .filter-bar label {font-size:13px;font-weight:500;color:var(--ink-dim)}
.pg-product-host_list .filter-bar select {padding:8px 12px;border-radius:10px;font-size:13px;font-family:var(--sans);background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.9);color:var(--ink);outline:none}
.pg-product-host_list .filter-bar select:focus {border-color:rgba(176,127,47,.5)}
.pg-product-host_list .product-grid {display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:clamp(20px,2.5vw,32px)}
.pg-product-host_list .product-card {border-radius:24px;padding:clamp(24px,3vw,36px);background:rgba(255,255,255,.45);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow);transition:transform .35s var(--ease),background .35s;display:flex;flex-direction:column;position:relative;overflow:hidden}
.pg-product-host_list .product-card:hover {transform:translateY(-8px);background:rgba(255,255,255,.6)}
.pg-product-host_list .product-card.recommend {border-color:rgba(176,127,47,.4);box-shadow:var(--shadow),0 0 0 1px rgba(176,127,47,.2)}
.pg-product-host_list .product-card .recommend-badge {position:absolute;top:16px;right:16px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:12px;font-weight:600;padding:4px 12px;border-radius:999px}
.pg-product-host_list .product-card .p-name {font-family:var(--serif);font-size:22px;font-weight:700;color:#1a1e26;margin-bottom:6px}
.pg-product-host_list .product-card .p-desc {font-size:13.5px;color:var(--ink-faint);margin-bottom:20px;line-height:1.5}
.pg-product-host_list .product-card .p-price {font-family:var(--serif);font-size:42px;font-weight:700;color:var(--gold-deep);line-height:1;margin-bottom:20px}
.pg-product-host_list .product-card .p-price small {font-size:14px;color:var(--ink-dim);font-weight:400}
.pg-product-host_list .product-card .p-price .yearly {font-size:13px;color:var(--ink-faint);margin-top:4px}
.pg-product-host_list .product-card .p-specs {list-style:none;padding:16px 0;margin-bottom:20px;border-top:1px solid rgba(32,36,44,.06);border-bottom:1px solid rgba(32,36,44,.06)}
.pg-product-host_list .product-card .p-specs li {font-size:13.5px;color:var(--ink-dim);padding:8px 0;display:flex;justify-content:space-between}
.pg-product-host_list .product-card .p-specs li span:first-child {color:var(--ink-faint)}
.pg-product-host_list .product-card .p-specs li span:last-child {font-weight:500;color:var(--ink)}
.pg-product-host_list .product-card .p-specs .check {color:var(--gold-deep);font-weight:600}
.pg-product-host_list .product-card .btn {width:100%;justify-content:center;text-decoration:none;padding:12px;border-radius:12px;font-size:14px;font-weight:600}
.pg-product-host_list .guarantee-section {margin-top:60px;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:clamp(16px,2vw,24px)}
.pg-product-host_list .guarantee-item {border-radius:20px;padding:clamp(20px,2.5vw,28px);text-align:center;background:rgba(255,255,255,.4);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);border:1px solid rgba(255,255,255,.7);transition:transform .3s var(--ease)}
.pg-product-host_list .guarantee-item:hover {transform:translateY(-4px)}
.pg-product-host_list .guarantee-item .icon {width:48px;height:48px;border-radius:12px;display:grid;place-items:center;margin:0 auto 14px;background:rgba(176,127,47,.12)}
.pg-product-host_list .guarantee-item h3 {font-family:var(--serif);font-size:16px;font-weight:700;color:#1a1e26;margin-bottom:6px}
.pg-product-host_list .guarantee-item p {font-size:13px;color:var(--ink-faint)}
.pg-product-host_list .empty-state {border-radius:24px;padding:clamp(40px,5vw,72px);text-align:center;background:rgba(255,255,255,.42);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);color:var(--ink-dim);font-size:15px}
.pg-product-host_list .empty-state b {font-family:var(--serif);font-size:22px;color:var(--ink);display:block;margin-bottom:8px}
.pg-product-host_list @media (max-width:768px) {
        .product-grid{grid-template-columns:1fr}
    }

/* ===== pg-product-host_detail  (template: product/host_detail) ===== */
.pg-product-host_detail .detail-page {max-width:1200px;margin:0 auto;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px) 80px}
.pg-product-host_detail .breadcrumb {display:flex;align-items:center;font-size:13px;color:var(--ink-faint);margin-bottom:24px}
.pg-product-host_detail .breadcrumb a {color:var(--ink-faint);text-decoration:none;transition:color .2s}
.pg-product-host_detail .breadcrumb a:hover {color:var(--gold-deep)}
.pg-product-host_detail .breadcrumb .sep {margin:0 10px;color:rgba(32,36,44,.15)}
.pg-product-host_detail .breadcrumb .current {color:var(--ink);font-weight:500}

.pg-product-host_detail .detail-grid {display:grid;grid-template-columns:1fr 360px;gap:clamp(20px,3vw,32px)}
@media (max-width:900px) {.pg-product-host_detail .detail-grid{grid-template-columns:1fr}}

.pg-product-host_detail .detail-main {border-radius:24px;padding:clamp(28px,3vw,40px);background:rgba(255,255,255,.45);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow)}
.pg-product-host_detail .detail-main h1 {font-family:var(--serif);font-size:clamp(26px,3.5vw,38px);font-weight:700;color:#1a1e26;margin-bottom:8px}
.pg-product-host_detail .detail-main .desc {font-size:15px;color:var(--ink-dim);line-height:1.6;margin-bottom:28px}

.pg-product-host_detail .detail-main .features-title {font-family:var(--serif);font-size:17px;font-weight:700;color:#1a1e26;margin-bottom:14px}
.pg-product-host_detail .detail-main .features-list {display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:28px}
@media (max-width:600px) {.pg-product-host_detail .detail-main .features-list{grid-template-columns:1fr}}
.pg-product-host_detail .detail-main .features-list li {display:flex;align-items:center;font-size:13.5px;color:var(--ink-dim);padding:6px 0}
.pg-product-host_detail .detail-main .features-list li svg {flex-shrink:0;margin-right:8px}

.pg-product-host_detail .detail-main .section-title {font-family:var(--serif);font-size:17px;font-weight:700;color:#1a1e26;margin-bottom:14px}
.pg-product-host_detail .detail-main .spec-table {border-radius:16px;padding:20px;background:rgba(255,255,255,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.6)}
.pg-product-host_detail .detail-main .spec-row {display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(32,36,44,.06)}
.pg-product-host_detail .detail-main .spec-row:last-child {border-bottom:none}
.pg-product-host_detail .detail-main .spec-label {font-size:13.5px;color:var(--ink-faint)}
.pg-product-host_detail .detail-main .spec-value {font-size:13.5px;font-weight:600;color:var(--ink)}
.pg-product-host_detail .detail-main .spec-value.yes {color:var(--gold-deep)}
.pg-product-host_detail .detail-main .spec-value.no {color:var(--ink-faint);font-weight:400}

.pg-product-host_detail .detail-main .adv-feats {display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;margin-bottom:28px}
.pg-product-host_detail .detail-main .adv-tag {font-size:12px;padding:5px 14px;border-radius:999px;background:rgba(176,127,47,.1);color:var(--gold-deep);font-weight:500}

.pg-product-host_detail .detail-main .content-section {margin-top:28px;padding-top:28px;border-top:1px solid rgba(32,36,44,.06)}
.pg-product-host_detail .detail-main .content-section .prose {font-size:14.5px;line-height:1.75;color:var(--ink-dim)}
.pg-product-host_detail .detail-main .content-section .prose h2,.pg-product-host_detail .detail-main .content-section .prose h3 {color:var(--ink);font-family:var(--serif);margin:20px 0 10px}
.pg-product-host_detail .detail-main .content-section .prose p {margin-bottom:12px}
.pg-product-host_detail .detail-main .content-section .prose ul,.pg-product-host_detail .detail-main .content-section .prose ol {padding-left:20px;margin-bottom:12px}

.pg-product-host_detail .detail-sidebar {position:sticky;top:100px;align-self:start}
.pg-product-host_detail .detail-sidebar .order-card {border-radius:24px;padding:clamp(24px,3vw,32px);background:rgba(255,255,255,.5);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow)}

.pg-product-host_detail .order-card .price-main {margin-bottom:20px}
.pg-product-host_detail .order-card .price-main .price-label {font-size:13px;color:var(--ink-faint);margin-bottom:4px}
.pg-product-host_detail .order-card .price-main .price-val {font-family:var(--serif);font-size:clamp(36px,4vw,48px);font-weight:700;color:var(--gold-deep);line-height:1}
.pg-product-host_detail .order-card .price-main .price-val small {font-size:14px;color:var(--ink-faint);font-weight:400;margin-left:2px}
.pg-product-host_detail .order-card .price-main .list-price {font-size:13px;color:var(--ink-faint);text-decoration:line-through;margin-left:8px}

.pg-product-host_detail .order-card .price-row {display:flex;justify-content:space-between;align-items:baseline;padding:12px 0;border-bottom:1px solid rgba(32,36,44,.06)}
.pg-product-host_detail .order-card .price-row:last-of-type {border-bottom:none}
.pg-product-host_detail .order-card .price-row .price-label {font-size:13px;color:var(--ink-faint)}
.pg-product-host_detail .order-card .price-row .price-val {font-family:var(--serif);font-size:20px;font-weight:700;color:#1a1e26}
.pg-product-host_detail .order-card .price-row .price-val small {font-size:12px;color:var(--ink-faint);font-weight:400;margin-left:2px}
.pg-product-host_detail .order-card .price-row .save-tag {font-size:11px;padding:2px 8px;border-radius:999px;background:rgba(5,150,105,.1);color:#059669;font-weight:600}

.pg-product-host_detail .order-card .buy-btn {display:block;width:100%;text-align:center;padding:14px;border:none;border-radius:14px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:16px;font-weight:700;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 8px 24px -8px rgba(176,127,47,.5);text-decoration:none;font-family:var(--sans)}
.pg-product-host_detail .order-card .buy-btn:hover {transform:translateY(-2px);box-shadow:0 12px 32px -10px rgba(176,127,47,.6)}

.pg-product-host_detail .order-card .auto-note {font-size:12px;color:var(--ink-faint);text-align:center;margin-top:12px}

.pg-product-host_detail .order-card .period-select {display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.pg-product-host_detail .order-card .period-opt {display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-radius:12px;border:1.5px solid rgba(32,36,44,.08);background:rgba(255,255,255,.35);cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}
.pg-product-host_detail .order-card .period-opt input {position:absolute;opacity:0;pointer-events:none}
.pg-product-host_detail .order-card .period-opt:hover {border-color:rgba(176,127,47,.3);background:rgba(255,255,255,.5)}
.pg-product-host_detail .order-card .period-opt.active {border-color:var(--gold);background:rgba(176,127,47,.06);box-shadow:0 0 0 1px rgba(176,127,47,.2)}
.pg-product-host_detail .order-card .period-opt .period-name {font-size:13.5px;font-weight:600;color:var(--ink)}
.pg-product-host_detail .order-card .period-opt .period-price {font-family:var(--serif);font-size:18px;font-weight:700;color:var(--gold-deep)}
.pg-product-host_detail .order-card .period-opt .period-price small {font-size:11px;color:var(--ink-faint);font-weight:400;margin-left:2px}
.pg-product-host_detail .order-card .period-opt .save-tag {font-size:10px;padding:2px 7px;border-radius:999px;background:rgba(5,150,105,.1);color:#059669;font-weight:600;margin-left:6px}

.pg-product-host_detail .order-card .total-price {display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px;padding:14px 0;border-bottom:1px solid rgba(32,36,44,.06)}
.pg-product-host_detail .order-card .total-price .total-label {font-size:14px;color:var(--ink-dim)}
.pg-product-host_detail .order-card .total-price .total-val {font-family:var(--serif);font-size:clamp(28px,3vw,36px);font-weight:700;color:var(--gold-deep)}

.pg-product-host_detail .order-card .perks {margin-top:20px;padding-top:16px;border-top:1px solid rgba(32,36,44,.06)}
.pg-product-host_detail .order-card .perk {display:flex;align-items:center;font-size:13px;color:var(--ink-dim);padding:6px 0}
.pg-product-host_detail .order-card .perk svg {flex-shrink:0;margin-right:8px}


/* ===== pg-product-checkout  (template: product/checkout) ===== */
.pg-product-checkout .checkout-page {max-width:1000px;margin:0 auto;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px) 80px}
.pg-product-checkout .breadcrumb {display:flex;align-items:center;font-size:13px;color:var(--ink-faint);margin-bottom:24px}
.pg-product-checkout .breadcrumb a {color:var(--ink-faint);text-decoration:none;transition:color .2s}
.pg-product-checkout .breadcrumb a:hover {color:var(--gold-deep)}
.pg-product-checkout .breadcrumb .sep {margin:0 10px;color:rgba(32,36,44,.15)}
.pg-product-checkout .breadcrumb .current {color:var(--ink);font-weight:500}

.pg-product-checkout .checkout-grid {display:grid;grid-template-columns:1fr 340px;gap:clamp(16px,2.5vw,28px)}
@media (max-width:800px) {.pg-product-checkout .checkout-grid{grid-template-columns:1fr}}

.pg-product-checkout .checkout-card {border-radius:22px;padding:clamp(20px,2.5vw,28px);background:rgba(255,255,255,.45);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow);margin-bottom:clamp(12px,1.5vw,20px)}
.pg-product-checkout .checkout-title {font-family:var(--serif);font-size:17px;font-weight:700;color:#1a1e26;margin-bottom:16px}

/* 优惠券 */
.pg-product-checkout .coupon-row {display:flex;gap:8px}
.pg-product-checkout .coupon-input {flex:1;padding:10px 14px;border-radius:12px;border:1.5px solid rgba(32,36,44,.1);background:rgba(255,255,255,.6);font-size:14px;outline:none;transition:border-color .2s;font-family:var(--sans)}
.pg-product-checkout .coupon-input:focus {border-color:var(--gold)}
.pg-product-checkout .coupon-btn {padding:10px 20px;border-radius:12px;border:none;background:var(--gold);color:#fff;font-weight:600;font-size:14px;cursor:pointer;transition:background .2s;font-family:var(--sans)}
.pg-product-checkout .coupon-btn:hover {background:var(--gold-deep)}
.pg-product-checkout .coupon-btn:disabled {opacity:.5;cursor:not-allowed}
.pg-product-checkout .coupon-result {margin-top:10px;font-size:13px;padding:8px 12px;border-radius:10px}
.pg-product-checkout .coupon-result.success {background:rgba(5,150,105,.08);color:#059669}
.pg-product-checkout .coupon-result.error {background:rgba(220,38,38,.08);color:#dc2626}
.pg-product-checkout .coupon-result.hidden {display:none}
.pg-product-checkout .coupon-list {margin-top:12px}
.pg-product-checkout .coupon-list-title {font-size:12px;color:var(--ink-faint);margin-bottom:8px}
.pg-product-checkout .coupon-item {display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;border:1px solid rgba(32,36,44,.06);cursor:pointer;margin-bottom:6px;transition:border-color .2s,background .2s}
.pg-product-checkout .coupon-item:hover {border-color:rgba(176,127,47,.3);background:rgba(176,127,47,.04)}
.pg-product-checkout .coupon-tag {font-size:12px;font-weight:700;padding:3px 10px;border-radius:6px;white-space:nowrap}
.pg-product-checkout .coupon-tag.tag-fixed {background:rgba(176,127,47,.12);color:var(--gold-deep)}
.pg-product-checkout .coupon-tag.tag-percent {background:rgba(220,38,38,.08);color:#dc2626}
.pg-product-checkout .coupon-info {display:flex;flex-direction:column}
.pg-product-checkout .coupon-name {font-size:13px;font-weight:600;color:var(--ink)}
.pg-product-checkout .coupon-cond {font-size:11px;color:var(--ink-faint)}

/* 支付方式 */
.pg-product-checkout .pay-methods {display:flex;flex-direction:column;gap:8px}
.pg-product-checkout .pay-method {display:flex;align-items:center;gap:14px;padding:14px;border-radius:14px;border:1.5px solid rgba(32,36,44,.08);background:rgba(255,255,255,.35);cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}
.pg-product-checkout .pay-method input {position:absolute;opacity:0;pointer-events:none}
.pg-product-checkout .pay-method:hover {border-color:rgba(176,127,47,.3)}
.pg-product-checkout .pay-method.active {border-color:var(--gold);background:rgba(176,127,47,.06);box-shadow:0 0 0 1px rgba(176,127,47,.2)}
.pg-product-checkout .pay-method.disabled {cursor:not-allowed;opacity:.6;pointer-events:none}
.pg-product-checkout .pay-icon {width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}
.pg-product-checkout .pay-icon-balance {background:rgba(59,130,246,.1);color:#3b82f6}
.pg-product-checkout .pay-icon-wechat {background:rgba(34,197,94,.1);color:#22c55e}
.pg-product-checkout .pay-icon-alipay {background:rgba(59,130,246,.1);color:#2563eb}
.pg-product-checkout .pay-icon-manual {background:rgba(249,115,22,.1);color:#f97316}
.pg-product-checkout .pay-info {display:flex;flex-direction:column}
.pg-product-checkout .pay-name {font-size:14px;font-weight:600;color:var(--ink)}
.pg-product-checkout .pay-desc {font-size:12px;color:var(--ink-faint)}
.pg-product-checkout .pay-desc strong {color:var(--gold-deep)}

/* 订单摘要 */
.pg-product-checkout .checkout-summary {position:sticky;top:100px;align-self:start}
.pg-product-checkout .summary-row {display:flex;justify-content:space-between;font-size:13.5px;color:var(--ink-dim);padding:8px 0}
.pg-product-checkout .summary-row span:last-child {font-weight:500;color:var(--ink)}
.pg-product-checkout .summary-divider {border-top:1px solid rgba(32,36,44,.06);margin:12px 0}
.pg-product-checkout .summary-total {display:flex;justify-content:space-between;align-items:baseline;margin-bottom:20px}
.pg-product-checkout .summary-total span:first-child {font-size:14px;color:var(--ink-dim)}
.pg-product-checkout .summary-total .total-val {font-family:var(--serif);font-size:clamp(28px,3vw,36px);font-weight:700;color:var(--gold-deep)}

.pg-product-checkout .checkout-pay-btn {display:block;width:100%;padding:14px;border:none;border-radius:14px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:16px;font-weight:700;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 8px 24px -8px rgba(176,127,47,.5);font-family:var(--sans)}
.pg-product-checkout .checkout-pay-btn:hover {transform:translateY(-2px);box-shadow:0 12px 32px -10px rgba(176,127,47,.6)}
.pg-product-checkout .checkout-pay-btn:disabled {opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.pg-product-checkout .checkout-note {font-size:12px;color:var(--ink-faint);text-align:center;margin-top:12px}

/* 倒计时 */
.pg-product-checkout .checkout-timer {display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:10px 16px;border-radius:12px;background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.2);font-size:13px;color:#92400e}
.pg-product-checkout .checkout-timer strong {font-family:var(--mono,monospace);font-weight:700}
.pg-product-checkout .checkout-timer.urgent {background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.2);color:#991b1b;animation:pulse-bg 2s infinite}
.pg-product-checkout .checkout-timer.expired {background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.3);color:#991b1b}
@keyframes pulse-bg{0%,100%{opacity:1}50%{opacity:.7}}

/* 产品配置 */
.pg-product-checkout .checkout-specs {display:grid;grid-template-columns:1fr 1fr;gap:4px}
.pg-product-checkout .checkout-specs .spec-item {display:flex;justify-content:space-between;padding:8px 0;font-size:13px;border-bottom:1px solid rgba(32,36,44,.04)}
.pg-product-checkout .checkout-specs .spec-item span:first-child {color:var(--ink-faint)}
.pg-product-checkout .checkout-specs .spec-item span:last-child {font-weight:600;color:var(--ink)}

/* 条款 */
.pg-product-checkout .terms-check {display:flex;align-items:flex-start;gap:8px;margin-bottom:16px;font-size:12px;color:var(--ink-faint);line-height:1.5}
.pg-product-checkout .terms-check input {margin-top:2px;flex-shrink:0}
.pg-product-checkout .terms-check a {color:var(--gold-deep);text-decoration:none}
.pg-product-checkout .terms-check a:hover {text-decoration:underline}

/* 返回订单 */
.pg-product-checkout .checkout-back {text-align:center;margin-top:14px}
.pg-product-checkout .checkout-back a {font-size:13px;color:var(--ink-faint);text-decoration:none;transition:color .2s}
.pg-product-checkout .checkout-back a:hover {color:var(--gold-deep)}

/* ===== pg-user-pay_result  (template: user/pay_result) ===== */
.pg-user-pay_result .pay-result-page {max-width:560px;margin:0 auto;padding:clamp(40px,6vw,80px) clamp(16px,4vw,40px)}
.pg-user-pay_result .pay-result-card {border-radius:28px;padding:clamp(32px,4vw,48px);background:rgba(255,255,255,.45);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow);text-align:center}
.pg-user-pay_result .pay-result-footer {text-align:center;margin-top:24px;font-size:13px;color:var(--ink-faint)}
.pg-user-pay_result .pay-state {padding:20px 0}
.pg-user-pay_result .pay-state.hidden {display:none}
.pg-user-pay_result .state-icon {width:80px;height:80px;border-radius:50%;display:grid;place-items:center;margin:0 auto 24px}
.pg-user-pay_result .state-icon svg {color:#fff}
.pg-user-pay_result .state-icon-loading {background:linear-gradient(135deg,#3b82f6,#2563eb)}
.pg-user-pay_result .state-icon-success {background:linear-gradient(135deg,#22c55e,#16a34a)}
.pg-user-pay_result .state-icon-fail {background:linear-gradient(135deg,#ef4444,#dc2626)}
.pg-user-pay_result .state-icon-warn {background:linear-gradient(135deg,#f59e0b,#d97706)}
.pg-user-pay_result .state-icon-pending {background:linear-gradient(135deg,#eab308,#ca8a04)}
.pg-user-pay_result .state-title {font-family:var(--serif);font-size:clamp(22px,3vw,28px);font-weight:700;color:#1a1e26;margin-bottom:8px}
.pg-user-pay_result .state-desc {font-size:15px;color:var(--ink-dim);margin-bottom:24px;line-height:1.6}
.pg-user-pay_result .state-hint {font-size:13px;color:var(--ink-faint);margin-bottom:16px}
.pg-user-pay_result .qrcode-box {width:200px;height:200px;margin:0 auto 20px;border-radius:16px;background:rgba(255,255,255,.6);border:1px solid rgba(32,36,44,.08);display:grid;place-items:center;overflow:hidden}
.pg-user-pay_result .qrcode-canvas {display:flex;align-items:center;justify-content:center}
.pg-user-pay_result .result-info-grid {display:grid;grid-template-columns:1fr 1fr;gap:4px;text-align:left;margin-bottom:24px;padding:16px;border-radius:16px;background:rgba(255,255,255,.35);border:1px solid rgba(32,36,44,.04)}
.pg-user-pay_result .result-info-grid .info-item {padding:8px 0}
.pg-user-pay_result .result-info-grid .info-label {font-size:12px;color:var(--ink-faint);margin-bottom:2px}
.pg-user-pay_result .result-info-grid .info-val {font-size:14px;font-weight:600;color:var(--ink)}
.pg-user-pay_result .result-info-grid .info-val.mono {font-family:var(--mono,monospace);font-size:12px}
.pg-user-pay_result .result-info-grid .info-val.price {font-family:var(--serif);font-size:20px;color:var(--gold-deep)}
.pg-user-pay_result .poll-status {display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;color:var(--ink-dim);margin-bottom:8px}
.pg-user-pay_result .poll-status .spin {animation:spin 1s linear infinite}
.pg-user-pay_result .refresh-btn {padding:4px 12px;border-radius:8px;border:1px solid rgba(32,36,44,.1);background:rgba(255,255,255,.5);font-size:12px;cursor:pointer;color:var(--ink-dim);transition:background .2s}
.pg-user-pay_result .refresh-btn:hover {background:rgba(255,255,255,.8)}
.pg-user-pay_result .poll-timer {font-size:12px;color:var(--ink-faint);margin-bottom:12px}
.pg-user-pay_result .cancel-link {font-size:13px;color:var(--ink-faint);background:none;border:none;cursor:pointer;transition:color .2s}
.pg-user-pay_result .cancel-link:hover {color:var(--ink)}
.pg-user-pay_result .state-actions {display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.pg-user-pay_result .btn-primary {padding:12px 28px;border-radius:14px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:15px;font-weight:600;text-decoration:none;transition:transform .2s,box-shadow .2s;box-shadow:0 6px 20px -6px rgba(176,127,47,.4);display:inline-flex;align-items:center;gap:6px}
.pg-user-pay_result .btn-primary:hover {transform:translateY(-1px);box-shadow:0 10px 28px -8px rgba(176,127,47,.5)}
.pg-user-pay_result .btn-ghost {padding:12px 28px;border-radius:14px;background:rgba(255,255,255,.5);border:1px solid rgba(32,36,44,.1);color:var(--ink-dim);font-size:15px;text-decoration:none;transition:background .2s}
.pg-user-pay_result .btn-ghost:hover {background:rgba(255,255,255,.8)}
.pg-user-pay_result .pending-info {text-align:left;padding:16px;border-radius:16px;background:rgba(245,158,11,.06);border:1px solid rgba(245,158,11,.15);margin-bottom:20px}
.pg-user-pay_result .pending-label {font-size:13px;font-weight:600;color:#92400e;margin-bottom:10px}
.pg-user-pay_result .pending-method {padding:10px;border-radius:10px;background:rgba(255,255,255,.5);border:1px solid rgba(245,158,11,.1);margin-bottom:8px;font-size:13px;color:var(--ink-dim);line-height:1.7}
.pg-user-pay_result .pending-method strong {color:var(--ink);display:block;margin-bottom:2px}
.pg-user-pay_result .pending-note {font-size:12px;color:#b45309;margin-top:10px}
.pg-user-pay_result .text-link {color:var(--gold-deep);text-decoration:none;font-size:13px}
.pg-user-pay_result .text-link:hover {text-decoration:underline}
@keyframes spin {from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.pg-user-pay_result .spin {animation:spin 1s linear infinite}


/* ===== pg-user-login  (template: user/login) ===== */
.pg-user-login .auth-page {min-height:70vh;display:flex;align-items:center;justify-content:center;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px)}
.pg-user-login .auth-box {width:100%;max-width:420px}
.pg-user-login .auth-card {border-radius:22px;padding:clamp(28px,4vw,36px);background:rgba(255,255,255,.45);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow)}
.pg-user-login .auth-card h1 {font-family:var(--serif);font-size:24px;font-weight:700;color:#1a1e26;margin-bottom:6px}
.pg-user-login .auth-card .subtitle {font-size:clamp(14.5px,1.5vw,17px);line-height:1.95;color:var(--ink-dim);margin-bottom:24px}
.pg-user-login .auth-card label {display:block;font-size:13px;font-weight:500;color:var(--ink-dim);margin-bottom:6px}
.pg-user-login .auth-card input[type=text], .pg-user-login .auth-card input[type=password], .pg-user-login .auth-card input[type=email] {width:100%;padding:11px 14px;border-radius:10px;font-size:14px;font-family:var(--sans);background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.9);color:var(--ink);outline:none;transition:border-color .25s}
.pg-user-login .auth-card input:focus {border-color:rgba(176,127,47,.5)}
.pg-user-login .auth-card .field {margin-bottom:16px}
.pg-user-login .auth-card .row {display:flex;align-items:center;justify-content:space-between;font-size:13px;margin-bottom:20px}
.pg-user-login .auth-card .row label {display:flex;align-items:center;gap:6px;color:var(--ink-dim);margin:0}
.pg-user-login .auth-card .row a {color:var(--gold-deep);text-decoration:none}
.pg-user-login .auth-card .row a:hover {text-decoration:underline}
.pg-user-login .auth-card .btn-submit {width:100%;padding:12px;border:none;border-radius:12px;background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 6px 20px -6px rgba(143,100,32,.5);font-family:var(--sans)}
.pg-user-login .auth-card .btn-submit:hover {transform:translateY(-1px);box-shadow:0 10px 28px -8px rgba(143,100,32,.6)}
.pg-user-login .auth-card .btn-submit:disabled {opacity:.6;cursor:not-allowed;transform:none}
.pg-user-login .auth-card .links {text-align:center;margin-top:20px;font-size:13px;color:var(--ink-faint)}
.pg-user-login .auth-card .links a {color:var(--gold-deep);text-decoration:none;font-weight:500}
.pg-user-login .auth-card .brand {display:flex;align-items:center;gap:10px;margin-bottom:24px;justify-content:center}
.pg-user-login .auth-card .brand .logo {width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#c99a4d,#a9742a);display:grid;place-items:center;color:#fff;font-weight:700;font-family:var(--serif)}
.pg-user-login .auth-card .brand .name {font-family:var(--serif);font-size:21px;font-weight:700;color:#1a1e26}

/* ===== pg-user-hosts  (template: user/hosts) ===== */
.pg-user-hosts .hosts-page {max-width:1100px;margin:0 auto;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px) 80px}
.pg-user-hosts .hosts-header {display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}
.pg-user-hosts .hosts-title {font-family:var(--serif);font-size:clamp(24px,3vw,32px);font-weight:700;color:#1a1a2e}
.pg-user-hosts .hosts-desc {font-size:14px;color:var(--ink-dim);margin-top:4px}
.pg-user-hosts .btn-buy {padding:8px 20px;border-radius:12px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:13px;font-weight:600;text-decoration:none;transition:transform .2s,box-shadow .2s;box-shadow:0 4px 12px -4px rgba(176,127,47,.4)}
.pg-user-hosts .btn-buy:hover {transform:translateY(-1px);box-shadow:0 8px 20px -6px rgba(176,127,47,.5)}

/* 空状态 */
.pg-user-hosts .hosts-empty {border-radius:24px;padding:clamp(40px,5vw,72px);text-align:center;background:rgba(255,255,255,.4);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.7)}
.pg-user-hosts .hosts-empty .empty-icon {width:80px;height:80px;border-radius:50%;background:rgba(32,36,44,.04);display:grid;place-items:center;margin:0 auto 16px;color:var(--ink-faint)}
.pg-user-hosts .hosts-empty h3 {font-family:var(--serif);font-size:20px;font-weight:700;color:#1a1a2e;margin-bottom:8px}
.pg-user-hosts .hosts-empty p {font-size:14px;color:var(--ink-dim);margin-bottom:20px}
.pg-user-hosts .btn-primary-sm {padding:10px 24px;border-radius:12px;background:linear-gradient(135deg,var(--gold),var(--gold-deep));color:#fff;font-size:14px;font-weight:600;text-decoration:none;display:inline-block}

/* 统计卡片 */
.pg-user-hosts .hosts-stats {display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
@media(max-width:600px){.pg-user-hosts .hosts-stats{grid-template-columns:repeat(2,1fr)}}
.pg-user-hosts .stat-card, .pg-user-hosts .ui-card {border-radius:16px;padding:16px;text-align:center;background:rgba(255,255,255,.4);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.6)}
.pg-user-hosts .stat-card .stat-num, .pg-user-hosts .ui-card .stat-num {display:block;font-family:var(--serif);font-size:28px;font-weight:700;color:var(--ink)}
.pg-user-hosts .stat-card .stat-label, .pg-user-hosts .ui-card .stat-label {font-size:12px;color:var(--ink-faint)}
.pg-user-hosts .stat-running .stat-num {color:#16a34a}
.pg-user-hosts .stat-expiring .stat-num {color:#d97706}
.pg-user-hosts .stat-expired .stat-num {color:#dc2626}

/* 提醒横幅 */
.pg-user-hosts .alert-banner {display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;font-size:13px;margin-bottom:16px}
.pg-user-hosts .alert-danger {background:rgba(220,38,38,.06);border:1px solid rgba(220,38,38,.15);color:#991b1b}
.pg-user-hosts .alert-warning {background:rgba(245,158,11,.06);border:1px solid rgba(245,158,11,.15);color:#92400e}
.pg-user-hosts .alert-banner strong {font-weight:700}
.pg-user-hosts .alert-banner a {margin-left:auto;color:inherit;text-decoration:underline;font-weight:600}

/* 主机卡片 */
.pg-user-hosts .hosts-grid {display:grid;grid-template-columns:repeat(auto-fill,minmax(480px,1fr));gap:16px}
@media(max-width:600px){.pg-user-hosts .hosts-grid{grid-template-columns:1fr}}
.pg-user-hosts .host-card {border-radius:22px;padding:clamp(18px,2.5vw,24px);background:rgba(255,255,255,.45);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow);transition:border-color .2s}
.pg-user-hosts .host-card:hover {border-color:rgba(176,127,47,.3)}
.pg-user-hosts .host-card-top {display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
.pg-user-hosts .host-name-row {display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pg-user-hosts .host-name-row h3 {font-family:var(--serif);font-size:18px;font-weight:700;color:#1a1a2e}
.pg-user-hosts .host-product {font-size:13px;color:var(--ink-faint);margin-top:2px}
.pg-user-hosts .host-domain {display:flex;align-items:center;gap:6px;margin-top:6px;font-size:13px;color:var(--ink-dim)}
.pg-user-hosts .host-domain a {color:var(--gold-deep);text-decoration:none;font-family:var(--mono,monospace);font-size:12px}
.pg-user-hosts .host-domain a:hover {text-decoration:underline}
.pg-user-hosts .copy-btn {background:none;border:none;cursor:pointer;color:var(--ink-faint);padding:2px;border-radius:4px;transition:color .2s}
.pg-user-hosts .copy-btn:hover {color:var(--gold-deep)}
.pg-user-hosts .host-expire {text-align:right;flex-shrink:0}
.pg-user-hosts .expire-label {font-size:11px;color:var(--ink-faint);display:block}
.pg-user-hosts .expire-date {font-size:14px;font-weight:600;color:var(--ink);display:block}
.pg-user-hosts .expire-days {font-size:12px;color:var(--ink-faint);display:block;margin-top:2px}
.pg-user-hosts .text-red {color:#dc2626!important}

/* 进度条 */
.pg-user-hosts .progress-bar {margin-bottom:12px}
.pg-user-hosts .progress-track {height:4px;border-radius:2px;background:rgba(32,36,44,.06);overflow:hidden}
.pg-user-hosts .progress-fill {height:100%;border-radius:2px;transition:width .3s}
.pg-user-hosts .prog-green {background:#22c55e}
.pg-user-hosts .prog-yellow {background:#f59e0b}
.pg-user-hosts .prog-red {background:#ef4444}

/* 操作按钮 */
.pg-user-hosts .host-actions {display:flex;gap:8px;margin-bottom:8px}
.pg-user-hosts .action-btn {display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border-radius:10px;font-size:12px;font-weight:500;text-decoration:none;border:1px solid rgba(32,36,44,.08);background:rgba(255,255,255,.4);color:var(--ink-dim);transition:all .2s}
.pg-user-hosts .action-btn:hover {border-color:rgba(176,127,47,.3);color:var(--gold-deep)}
.pg-user-hosts .action-renew {color:#8b5cf6;border-color:rgba(139,92,246,.2)}
.pg-user-hosts .action-renew:hover {background:rgba(139,92,246,.06);border-color:rgba(139,92,246,.4)}
.pg-user-hosts .action-manage {color:var(--gold-deep);border-color:rgba(176,127,47,.2)}
.pg-user-hosts .action-manage:hover {background:rgba(176,127,47,.06)}
.pg-user-hosts .host-meta {font-size:11px;color:var(--ink-faint)}

/* badge 通用 */
.badge {display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600}
.badge-green {background:rgba(34,197,94,.1);color:#16a34a}
.badge-blue {background:rgba(59,130,246,.1);color:#2563eb}
.badge-yellow {background:rgba(234,179,8,.1);color:#a16207}
.badge-orange {background:rgba(249,115,22,.1);color:#c2410c}
.badge-red {background:rgba(239,68,68,.1);color:#dc2626}
.dot {width:6px;height:6px;border-radius:50%;display:inline-block}
.dot-green {background:#22c55e}
.dot-blue {background:#3b82f6}
.dot-red {background:#ef4444}
.pulse {animation:pulse-dot 1.5s infinite}
@keyframes pulse-dot {0%,100%{opacity:1}50%{opacity:.4}}


/* ===== pg-user-register  (template: user/register) ===== */
.pg-user-register .auth-page {min-height:70vh;display:flex;align-items:center;justify-content:center;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px)}
.pg-user-register .auth-box {width:100%;max-width:420px}
.pg-user-register .auth-card {border-radius:22px;padding:clamp(28px,4vw,36px);background:rgba(255,255,255,.45);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow)}
.pg-user-register .auth-card h1 {font-family:var(--serif);font-size:24px;font-weight:700;color:#1a1e26;margin-bottom:6px}
.pg-user-register .auth-card .subtitle {font-size:clamp(14.5px,1.5vw,17px);line-height:1.95;color:var(--ink-dim);margin-bottom:24px}
.pg-user-register .auth-card label {display:block;font-size:13px;font-weight:500;color:var(--ink-dim);margin-bottom:6px}
.pg-user-register .auth-card input[type=text], .pg-user-register .auth-card input[type=password], .pg-user-register .auth-card input[type=email] {width:100%;padding:11px 14px;border-radius:10px;font-size:14px;font-family:var(--sans);background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.9);color:var(--ink);outline:none;transition:border-color .25s}
.pg-user-register .auth-card input:focus {border-color:rgba(176,127,47,.5)}
.pg-user-register .auth-card .field {margin-bottom:16px}
.pg-user-register .auth-card .field .hint {font-size:12px;color:var(--ink-faint);margin-top:4px}
.pg-user-register .auth-card .terms {display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--ink-dim);margin-bottom:20px}
.pg-user-register .auth-card .terms input {margin-top:2px}
.pg-user-register .auth-card .terms a {color:var(--gold-deep);text-decoration:none}
.pg-user-register .auth-card .terms a:hover {text-decoration:underline}
.pg-user-register .auth-card .btn-submit {width:100%;padding:12px;border:none;border-radius:12px;background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 6px 20px -6px rgba(143,100,32,.5);font-family:var(--sans)}
.pg-user-register .auth-card .btn-submit:hover {transform:translateY(-1px);box-shadow:0 10px 28px -8px rgba(143,100,32,.6)}
.pg-user-register .auth-card .btn-submit:disabled {opacity:.6;cursor:not-allowed;transform:none}
.pg-user-register .auth-card .links {text-align:center;margin-top:20px;font-size:13px;color:var(--ink-faint)}
.pg-user-register .auth-card .links a {color:var(--gold-deep);text-decoration:none;font-weight:500}
.pg-user-register .auth-card .brand {display:flex;align-items:center;gap:10px;margin-bottom:24px;justify-content:center}
.pg-user-register .auth-card .brand .logo {width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#c99a4d,#a9742a);display:grid;place-items:center;color:#fff;font-weight:700;font-family:var(--serif)}
.pg-user-register .auth-card .brand .name {font-family:var(--serif);font-size:21px;font-weight:700;color:#1a1e26}
.fm-btn {display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:all .2s;white-space:nowrap}
.fm-btn-primary {background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 4px 12px -4px rgba(59,130,246,.4)}
.fm-btn-primary:hover {transform:translateY(-1px);box-shadow:0 6px 16px -4px rgba(59,130,246,.5)}
.fm-btn-ghost {background:rgba(255,255,255,.6);border:1px solid rgba(32,36,44,.08);color:var(--ink-dim)}
.fm-btn-ghost:hover {background:rgba(255,255,255,.9);border-color:rgba(32,36,44,.15)}
.fm-row {transition:background .15s}
.fm-row:hover {background:rgba(176,127,47,.04)}
.fm-name {display:flex;align-items:center;gap:8px}
.fm-size,.fm-time,.fm-perm {font-size:12px;color:var(--ink-dim);font-family:var(--mono,monospace)}
.fm-check {cursor:pointer}
.fm-modal {position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.5);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;animation:modalFadeIn .25s ease}
.fm-modal-wide {width:800px;max-width:95vw}
.fm-modal-header {display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid rgba(32,36,44,.06)}
.fm-modal-header h3 {font-size:17px;font-weight:700;color:#111;font-family:var(--serif)}
.fm-modal-close {background:none;border:none;font-size:24px;color:#9ca3af;cursor:pointer;padding:4px 8px;border-radius:8px;line-height:1}
.fm-modal-close:hover {background:rgba(32,36,44,.06)}
.fm-modal-body {padding:24px}
.fm-modal-body p {font-size:14px;color:var(--ink-dim);margin-bottom:12px}
.fm-modal-footer {display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-top:1px solid rgba(32,36,44,.06);background:rgba(32,36,44,.01)}
.fm-editor {width:100%;min-height:400px;padding:16px;border:none;font-family:var(--mono,monospace);font-size:13px;line-height:1.6;resize:vertical;outline:none;background:#1e1e2e;color:#cdd6f4}
.fm-editor-path {font-size:12px;color:var(--ink-faint);font-family:var(--mono,monospace)}
.fm-input {width:100%;padding:10px 14px;border:2px solid rgba(32,36,44,.1);border-radius:12px;font-size:14px;outline:none;box-sizing:border-box;transition:all .25s}
.fm-input:focus {border-color:var(--gold);box-shadow:0 0 0 4px rgba(176,127,47,.1)}
.fm-error {font-size:13px;color:#dc2626;margin-top:8px}
.fm-upload-zone {border:2px dashed rgba(32,36,44,.15);border-radius:16px;padding:40px;text-align:center;cursor:pointer;transition:all .2s}
.fm-upload-zone:hover {border-color:var(--gold);background:rgba(176,127,47,.02)}
.fm-upload-zone p {font-size:14px;color:var(--ink-faint);margin-top:12px}
.fm-upload-list {margin-top:12px;max-height:120px;overflow-y:auto}
.fm-upload-item {font-size:13px;padding:4px 0;color:var(--ink-dim)}
.fm-upload-size {color:var(--ink-faint);font-size:12px}
.fm-upload-progress {margin-top:16px}
.fm-progress-fill {height:100%;border-radius:3px;background:linear-gradient(90deg,#22c55e,#16a34a);transition:width .3s}
#uploadStatus {font-size:13px;color:var(--ink-dim);margin-top:6px;display:block}
@keyframes modalFadeIn {from{opacity:0}to{opacity:1}}
@keyframes modalSlideUp {from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}


/* ===== pg-user-verify_email  (template: user/verify_email) ===== */
.pg-user-verify_email .verify-page { min-height: 80vh; display: flex; align-items: center; justify-content: center; padding: clamp(30px, 5vw, 60px) clamp(16px, 4vw, 40px); }
.pg-user-verify_email .verify-box { width: 100%; max-width: 440px; }
.pg-user-verify_email .verify-card { border-radius: 22px; padding: clamp(28px, 4vw, 36px); background: rgba(255, 255, 255, 0.45); backdrop-filter: blur(20px) saturate(160%); -webkit-backdrop-filter: blur(20px) saturate(160%); border: 1px solid rgba(255, 255, 255, 0.75); box-shadow: var(--shadow); text-align: center; }
.pg-user-verify_email .verify-icon { width: 72px; height: 72px; border-radius: 50%; display: grid; place-items: center; margin: 0 auto 20px; }
.pg-user-verify_email .verify-icon.success { background: rgba(80, 160, 90, 0.15); }
.pg-user-verify_email .verify-icon.error { background: rgba(214, 90, 90, 0.12); }
.pg-user-verify_email .verify-icon.info { background: rgba(70, 130, 200, 0.15); }
.pg-user-verify_email .verify-icon.gold { background: rgba(176, 127, 47, 0.15); }
.pg-user-verify_email .verify-card h1 { font-family: var(--serif); font-size: clamp(22px, 2.8vw, 28px); font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.pg-user-verify_email .verify-card .msg { color: var(--ink-dim); font-size: 14.5px; margin-bottom: 24px; line-height: 1.6; }
.pg-user-verify_email .verify-card .email-display { font-weight: 600; color: var(--gold-deep); }
.pg-user-verify_email .verify-card .alert-box { border-radius: var(--radius-sm); padding: 12px 16px; margin-bottom: 20px; text-align: left; font-size: 13.5px; }
.pg-user-verify_email .verify-card .alert-box.warning { background: rgba(200, 140, 40, 0.12); border: 1px solid rgba(200, 140, 40, 0.3); color: #8a5e1a; }
.pg-user-verify_email .verify-card .alert-box.tip { background: rgba(70, 130, 200, 0.1); border: 1px solid rgba(70, 130, 200, 0.25); color: #3060a0; }
.pg-user-verify_email .verify-card .alert-box ul { margin: 6px 0 0 18px; }
.pg-user-verify_email .verify-card .alert-box li { margin-bottom: 3px; }
.pg-user-verify_email .verify-card .actions { display: flex; flex-direction: column; gap: 10px; }
.pg-user-verify_email .verify-card .btn-resend { width: 100%; padding: 12px; border: none; border-radius: var(--radius-sm); background: linear-gradient(135deg, var(--gold), var(--gold-deep)); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; box-shadow: 0 6px 20px -6px rgba(176, 127, 47, 0.5); font-family: var(--sans); }
.pg-user-verify_email .verify-card .btn-resend:hover { transform: translateY(-2px); box-shadow: 0 10px 28px -8px rgba(176, 127, 47, 0.6); }
.pg-user-verify_email .verify-card .btn-resend:disabled { opacity: 0.6; cursor: not-allowed; transform: none; }
.pg-user-verify_email .verify-card .btn-skip { width: 100%; padding: 12px; border: 1px solid rgba(176, 127, 47, 0.25); border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.5); color: var(--gold-deep); font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.25s; font-family: var(--sans); text-align: center; }
.pg-user-verify_email .verify-card .btn-skip:hover { background: rgba(176, 127, 47, 0.08); border-color: rgba(176, 127, 47, 0.4); }

/* ===== pg-admin-login  (standalone: admin/login) ===== */
.pg-admin-login{font-family:var(--sans);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
    background:
        radial-gradient(820px 560px at 85% -6%, rgba(180,205,225,.5), transparent 60%),
        radial-gradient(760px 560px at 6% 14%, rgba(215,196,235,.4), transparent 58%),
        radial-gradient(820px 620px at 50% 116%, rgba(190,220,214,.46), transparent 60%),
        linear-gradient(180deg,var(--bg-1) 0%,var(--bg-0) 60%)}
.pg-admin-login .auth-box{width:100%;max-width:420px}
.pg-admin-login .auth-card{border-radius:24px;padding:clamp(28px,4vw,40px);background:rgba(255,255,255,.5);backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow)}
.pg-admin-login .auth-card h1{font-family:var(--serif);font-size:24px;font-weight:700;color:#1a1e26;text-align:center;margin-bottom:4px}
.pg-admin-login .auth-card .sub{text-align:center;font-size:14px;color:var(--ink-faint);margin-bottom:26px}
.pg-admin-login .brand{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:24px}
.pg-admin-login .brand .logo{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(140deg,var(--gold),var(--gold-deep));color:#fff;font-weight:700;font-family:var(--serif);font-size:18px;box-shadow:0 8px 20px -6px rgba(176,127,47,.5)}
.pg-admin-login .brand .name{font-family:var(--serif);font-size:22px;font-weight:700;color:#1a1e26}


/* ===================== Tailwind 工具类垫片 · 补充 (2026-08-21) ===================== */
/* 间距补充 */
.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-3{margin-left:.75rem}
.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}
.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}
.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-8{padding-top:2rem;padding-bottom:2rem}
.pl-8{padding-left:2rem}
.gap-1\.5{gap:.375rem}
.space-y-2 > * + *{margin-top:.5rem}
/* 尺寸补充 */
.h-3{height:.75rem}.h-16{height:4rem}.h-full{height:100%}.w-3{width:.75rem}
.max-w-xs{max-width:20rem}.max-w-\[200px\]{max-width:200px}.min-w-\[200px\]{min-width:200px}
/* 弹窗/悬浮定位补充 */
.inset-0{top:0;right:0;bottom:0;left:0}
.left-3{left:.75rem}.top-1\/2{top:50%}.bottom-6{bottom:1.5rem}.right-6{right:1.5rem}
.-translate-y-1\/2{transform:translateY(-50%)}
.z-50{z-index:50}
/* 文字/溢出 */
.uppercase{text-transform:uppercase}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.object-cover{object-fit:cover}.overflow-x-auto{overflow-x:auto}
.outline-none{outline:none}.resize-none{resize:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* 边框补充 */
.border-gray-50{border-color:rgba(32,36,44,.03)}
.border-blue-200{border-color:rgba(59,111,176,.35)}.border-green-200{border-color:rgba(47,143,111,.35)}.border-red-200{border-color:rgba(192,83,63,.35)}.border-yellow-200{border-color:rgba(181,130,31,.35)}
/* 背景补充 */
.bg-black\/50{background:rgba(0,0,0,.5)}
.bg-orange-50{background:var(--c-orange-bg)}
/* 阴影补充 */
.shadow-2xl{box-shadow:0 40px 90px -30px rgba(40,48,66,.45)}
/* 悬浮/聚焦补充 */
.hover\:bg-gray-200:hover{background:rgba(255,255,255,.62)}
.hover\:bg-blue-700:hover{background:#2f5a93;color:#fff}
.hover\:bg-green-100:hover{background:var(--c-green-bg)}
.hover\:bg-green-700:hover{background:#236b53;color:#fff}
.hover\:bg-red-700:hover{background:#97402f;color:#fff}
.hover\:bg-primary-700:hover{background:linear-gradient(135deg,#a9742a,#8f6420);color:#fff}
.hover\:border-blue-300:hover{border-color:rgba(59,111,176,.45)}
.hover\:text-blue-900:hover{color:#1e3a5f}
.focus\:border-blue-500:focus{border-color:rgba(59,111,176,.5)}
/* 响应式补充 (md / lg) */
@media (min-width:768px){
  .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .md\:col-span-2{grid-column:span 2}
}
@media (min-width:1024px){
  .lg\:flex-row{flex-direction:row}
  .lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}
  .lg\:h-32{height:8rem}.lg\:w-48{width:12rem}
  .lg\:items-start{align-items:flex-start}
  .lg\:mb-0{margin-bottom:0}
  .lg\:space-x-6 > * + *{margin-left:1.5rem}
}
/* 开关组件 (peer toggle) */
.peer-focus\:outline-none:focus{outline:none}
.after\:absolute::after{position:absolute}
.after\:bg-white::after{background:#fff}
.after\:border::after{border-width:1px;border-style:solid;border-color:rgba(32,36,44,.3)}
.after\:border-gray-300::after{border-color:rgba(32,36,44,.3)}
.after\:rounded-full::after{border-radius:999px}
.after\:h-5::after{height:1.25rem}.after\:w-5::after{width:1.25rem}
.after\:top-\[2px\]::after{top:2px}.after\:left-\[2px\]::after{left:2px}
.after\:content-\[\'\'\]::after{content:''}
.after\:transition-all::after{transition:all .25s var(--ease)}
.peer:checked ~ .peer-checked\:bg-primary-600{background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff}
.peer:checked ~ .peer-checked\:after\:translate-x-full::after{transform:translateX(100%)}
.peer:checked ~ .peer-checked\:after\:border-white::after{border-color:#fff}

.pr-4{padding-right:1rem}

/* ===== pg-admin-blog-article_edit (template: admin/blog/article_edit) ===== */
.pg-admin-blog-article_edit .ae-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.pg-admin-blog-article_edit .ae-title{font-family:var(--serif);font-size:22px;font-weight:700;color:#1a1e26;margin:0}
.pg-admin-blog-article_edit .ae-back{font-size:13px;color:var(--c-blue);text-decoration:none}
.pg-admin-blog-article_edit .ae-back:hover{text-decoration:underline}
.pg-admin-blog-article_edit .ae-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.pg-admin-blog-article_edit .ae-side{position:sticky;top:88px;display:flex;flex-direction:column;gap:20px}
.pg-admin-blog-article_edit .ae-card{padding:20px 22px}
.pg-admin-blog-article_edit .ae-card-title{font-family:var(--serif);font-size:16px;font-weight:700;color:#1a1e26;margin:0 0 14px}
.pg-admin-blog-article_edit .ae-row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pg-admin-blog-article_edit .ae-hint{font-size:12px;color:var(--ink-faint);margin:6px 0 0;line-height:1.5}
.pg-admin-blog-article_edit .ae-msg{font-size:12px;margin-top:6px}
.pg-admin-blog-article_edit .ae-msg-info{color:var(--c-blue)}
.pg-admin-blog-article_edit .ae-msg-ok{color:var(--c-green)}
.pg-admin-blog-article_edit .ae-msg-bad{color:var(--c-red)}
.pg-admin-blog-article_edit .ae-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.72);color:var(--ink);font-size:13px;cursor:pointer;font-family:var(--sans);transition:all .2s var(--ease)}
.pg-admin-blog-article_edit .ae-btn:hover{border-color:rgba(176,127,47,.45);color:var(--gold-deep);background:rgba(176,127,47,.08)}
.pg-admin-blog-article_edit .ae-btn:disabled{opacity:.5;cursor:not-allowed}
.pg-admin-blog-article_edit .ae-btn-ghost{background:transparent}
.pg-admin-blog-article_edit .ae-foot{margin-top:20px;display:flex;justify-content:flex-end}
.pg-admin-blog-article_edit .ae-autosave{margin-top:10px;font-size:12px;color:var(--ink-faint);text-align:center}
.pg-admin-blog-article_edit .hidden{display:none!important}

/* 封面 */
.pg-admin-blog-article_edit .ae-cover{display:flex;gap:16px;align-items:flex-start}
.pg-admin-blog-article_edit .ae-cover-drop{position:relative;width:180px;height:120px;flex-shrink:0;border-radius:var(--radius-sm);border:2px dashed rgba(32,36,44,.18);background:rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:border-color .2s}
.pg-admin-blog-article_edit .ae-cover-drop:hover,.pg-admin-blog-article_edit .ae-cover-drop.ae-drag{border-color:rgba(176,127,47,.6)}
.pg-admin-blog-article_edit .ae-cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pg-admin-blog-article_edit .ae-cover-ph{font-size:12px;color:var(--ink-faint);text-align:center;padding:0 10px}
.pg-admin-blog-article_edit .ae-cover-side{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.pg-admin-blog-article_edit .ae-cover-btns{display:flex;gap:8px}
.pg-admin-blog-article_edit .ae-fname{font-size:12px;color:var(--ink-dim);word-break:break-all}
.pg-admin-blog-article_edit .ae-details{font-size:12px;color:var(--ink-dim)}
.pg-admin-blog-article_edit .ae-details summary{cursor:pointer;color:var(--c-blue)}
.pg-admin-blog-article_edit .ae-details summary:hover{color:var(--gold-deep)}

/* 编辑器 */
.pg-admin-blog-article_edit .wp-editor{background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.9);border-radius:var(--radius-sm);overflow:hidden}
.pg-admin-blog-article_edit .wp-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:8px 10px;background:rgba(255,255,255,.4);border-bottom:1px solid rgba(32,36,44,.08)}
.pg-admin-blog-article_edit .wp-toolbar button{height:30px;min-width:30px;padding:0 8px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.75);border-radius:8px;cursor:pointer;font-size:13px;color:var(--ink)}
.pg-admin-blog-article_edit .wp-toolbar button:hover{background:rgba(176,127,47,.1);border-color:rgba(176,127,47,.4);color:var(--gold-deep)}
.pg-admin-blog-article_edit .wp-select{height:30px;border:1px solid rgba(255,255,255,.9);border-radius:8px;background:rgba(255,255,255,.75);font-size:13px;color:var(--ink);padding:0 4px}
.pg-admin-blog-article_edit .wp-sep{width:1px;height:20px;background:rgba(32,36,44,.12);margin:0 4px}
.pg-admin-blog-article_edit .wp-content{min-height:360px;padding:18px 20px;outline:none;font-size:15px;line-height:1.8;color:var(--ink)}
.pg-admin-blog-article_edit .wp-content p{margin:0 0 12px}
.pg-admin-blog-article_edit .wp-content h2{font-size:1.5em;font-weight:700;margin:18px 0 10px;font-family:var(--serif)}
.pg-admin-blog-article_edit .wp-content h3{font-size:1.25em;font-weight:700;margin:16px 0 8px;font-family:var(--serif)}
.pg-admin-blog-article_edit .wp-content h4{font-size:1.1em;font-weight:700;margin:14px 0 6px}
.pg-admin-blog-article_edit .wp-content blockquote{border-left:4px solid rgba(176,127,47,.5);padding:6px 14px;margin:12px 0;color:var(--ink-dim);background:rgba(176,127,47,.06)}
.pg-admin-blog-article_edit .wp-content pre{background:rgba(32,36,44,.92);color:#e6e9ef;padding:12px 14px;border-radius:8px;overflow:auto;font-family:ui-monospace,Menlo,monospace;font-size:13px}
.pg-admin-blog-article_edit .wp-content img{max-width:100%;height:auto;border-radius:8px}
.pg-admin-blog-article_edit .wp-content a{color:var(--c-blue);text-decoration:underline}
.pg-admin-blog-article_edit .wp-source{width:100%;border:none;border-top:1px solid rgba(32,36,44,.08);padding:14px;font-family:ui-monospace,Menlo,monospace;font-size:13px;resize:vertical;outline:none}

/* 标签 */
.pg-admin-blog-article_edit .ae-tags{border:1px solid rgba(255,255,255,.9);border-radius:var(--radius-sm);padding:12px;background:rgba(255,255,255,.5)}
.pg-admin-blog-article_edit .ae-tag-sel{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.pg-admin-blog-article_edit .ae-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 6px 3px 10px;border-radius:999px;background:rgba(176,127,47,.12);color:var(--gold-deep);font-size:12px}
.pg-admin-blog-article_edit .ae-tag-x{border:none;background:none;color:var(--gold-deep);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
.pg-admin-blog-article_edit .ae-tag-x:hover{color:var(--c-red)}
.pg-admin-blog-article_edit .ae-tag-input{display:flex;gap:8px}
.pg-admin-blog-article_edit .ae-tag-input .input{flex:1}
.pg-admin-blog-article_edit .ae-tag-ava{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.pg-admin-blog-article_edit .ae-tag-ava-item{padding:3px 10px;border-radius:999px;background:rgba(32,36,44,.05);color:var(--ink-dim);font-size:12px;border:1px solid transparent;cursor:pointer}
.pg-admin-blog-article_edit .ae-tag-ava-item:hover{border-color:rgba(176,127,47,.4);color:var(--gold-deep)}

/* 附件 */
.pg-admin-blog-article_edit .ae-attach-drop{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px;border:2px dashed rgba(32,36,44,.16);border-radius:var(--radius-sm);background:rgba(255,255,255,.4);transition:border-color .2s}
.pg-admin-blog-article_edit .ae-attach-drop:hover,.pg-admin-blog-article_edit .ae-attach-drop.ae-drag{border-color:rgba(176,127,47,.6)}
.pg-admin-blog-article_edit .ae-attach-or{font-size:12px;color:var(--ink-faint)}
.pg-admin-blog-article_edit .ae-attach-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.pg-admin-blog-article_edit .ae-att-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid rgba(255,255,255,.9);border-radius:var(--radius-sm);background:rgba(255,255,255,.55)}
.pg-admin-blog-article_edit .ae-att-ico{flex-shrink:0;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:10px;font-weight:700;background:rgba(176,127,47,.12);color:var(--gold-deep)}
.pg-admin-blog-article_edit .ae-att-name{flex:1;min-width:0;font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-admin-blog-article_edit .ae-att-size{flex-shrink:0;font-size:12px;color:var(--ink-faint)}
.pg-admin-blog-article_edit .ae-att-del{flex-shrink:0;width:24px;height:24px;border:none;background:rgba(32,36,44,.04);border-radius:50%;color:var(--ink-dim);cursor:pointer;font-size:15px;line-height:1}
.pg-admin-blog-article_edit .ae-att-del:hover{background:var(--c-red-bg);color:var(--c-red)}
.pg-admin-blog-article_edit .ae-progress{height:6px;background:rgba(32,36,44,.08);border-radius:999px;overflow:hidden;margin-top:12px}
.pg-admin-blog-article_edit .ae-progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--gold-deep));transition:width .2s}
.pg-admin-blog-article_edit .ae-attach-sum{margin-top:10px;font-size:12px}
.pg-admin-blog-article_edit .ae-fail{color:var(--c-red);margin-top:4px}

/* 编辑器键入反馈：字数 + 保存状态 */
.pg-admin-blog-article_edit .ae-editor-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 2px 0;font-size:12px;}
.pg-admin-blog-article_edit .ae-wc{color:var(--ink-faint);font-variant-numeric:tabular-nums;}
.pg-admin-blog-article_edit .ae-savestat{color:var(--ink-faint);transition:color .2s;}
.pg-admin-blog-article_edit .ae-savestat-saving{color:var(--c-blue);}
.pg-admin-blog-article_edit .ae-savestat-ok{color:var(--c-green);}
.pg-admin-blog-article_edit .ae-savestat-bad{color:var(--c-red);}

/* 草稿恢复弹窗 */
.pg-admin-blog-article_edit .ae-modal{position:fixed;inset:0;background:rgba(17,24,39,.45);display:flex;align-items:center;justify-content:center;z-index:60;padding:20px;}
.pg-admin-blog-article_edit .ae-modal-box{background:var(--modal-bg-solid);border-radius:var(--modal-radius);padding:22px;width:380px;max-width:100%;box-shadow:var(--shadow-lg);}
.pg-admin-blog-article_edit .ae-modal-title{font-family:var(--serif);font-size:17px;font-weight:700;color:#1a1e26;margin:0 0 10px;}
.pg-admin-blog-article_edit .ae-modal-desc{font-size:13px;color:var(--ink-dim);line-height:1.6;margin:0 0 12px;}
.pg-admin-blog-article_edit .ae-modal-time{color:var(--gold-deep);font-weight:600;}
.pg-admin-blog-article_edit .ae-modal-prev{max-height:96px;overflow:auto;background:rgba(32,36,44,.04);border:1px solid rgba(32,36,44,.08);border-radius:10px;padding:10px 12px;font-size:12px;color:var(--ink-dim);line-height:1.6;white-space:pre-wrap;word-break:break-all;}
.pg-admin-blog-article_edit .ae-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;}
.pg-admin-blog-article_edit .ae-btn-primary{background:linear-gradient(90deg,var(--gold),var(--gold-deep));border-color:transparent;color:#fff;font-weight:600;}
.pg-admin-blog-article_edit .ae-btn-primary:hover{filter:brightness(1.05);}

/* 响应式 */
@media (max-width:980px){
  .pg-admin-blog-article_edit .ae-grid{grid-template-columns:1fr}
  .pg-admin-blog-article_edit .ae-side{position:static}
}
@media (max-width:560px){
  .pg-admin-blog-article_edit .ae-row2{grid-template-columns:1fr}
  .pg-admin-blog-article_edit .ae-cover{flex-direction:column}
}

/* ============ 附件管理（媒体库）.pg-admin-blog-attachments ============ */
.pg-admin-blog-attachments .att-wrap{max-width:100%;}
.pg-admin-blog-attachments .att-h2{font-size:18px;font-weight:700;color:#20242c;margin:0 0 16px;}
.pg-admin-blog-attachments .att-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:20px;}
.pg-admin-blog-attachments .att-stat{background:#fff;border:1px solid rgba(32,36,44,.12);border-radius:14px;padding:14px 16px;}
.pg-admin-blog-attachments .att-stat-num{font-size:24px;font-weight:700;color:#20242c;}
.pg-admin-blog-attachments .att-stat-label{font-size:12px;color:#9ca3af;margin-top:2px;}
.pg-admin-blog-attachments .att-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;}
.pg-admin-blog-attachments .att-tabs{display:flex;gap:4px;background:#f3f4f6;border-radius:10px;padding:4px;}
.pg-admin-blog-attachments .att-tab{padding:6px 14px;border-radius:8px;font-size:13px;color:#6b7280;text-decoration:none;transition:.15s;}
.pg-admin-blog-attachments .att-tab:hover{color:#20242c;}
.pg-admin-blog-attachments .att-tab.active{background:#fff;color:#20242c;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06);}
.pg-admin-blog-attachments .att-search{display:flex;gap:8px;margin-left:auto;}
.pg-admin-blog-attachments .att-search input{height:36px;border:1px solid rgba(32,36,44,.16);border-radius:10px;padding:0 12px;font-size:13px;min-width:200px;outline:none;box-sizing:border-box;}
.pg-admin-blog-attachments .att-search input:focus{border-color:#2563eb;}
.pg-admin-blog-attachments .att-tools{display:flex;gap:8px;}
.pg-admin-blog-attachments .att-upload{display:inline-flex;align-items:center;height:36px;padding:0 14px;background:#2563eb;color:#fff;border:none;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s;}
.pg-admin-blog-attachments .att-upload:hover{background:#1d4ed8;}
.pg-admin-blog-attachments .att-bulk{height:36px;padding:0 14px;background:#fff;border:1px solid #ef4444;color:#ef4444;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;}
.pg-admin-blog-attachments .att-bulk:hover{background:#fef2f2;}
.pg-admin-blog-attachments .att-progress{margin:0 0 14px;padding:10px 14px;background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;border-radius:10px;font-size:13px;}
.pg-admin-blog-attachments .att-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px;}
.pg-admin-blog-attachments .att-card{position:relative;background:#fff;border:1px solid rgba(32,36,44,.12);border-radius:14px;overflow:hidden;transition:.15s;}
.pg-admin-blog-attachments .att-card:hover{border-color:rgba(37,99,235,.4);box-shadow:0 6px 18px rgba(32,36,44,.10);}
.pg-admin-blog-attachments .att-check{position:absolute;top:8px;left:8px;z-index:2;background:rgba(255,255,255,.85);border-radius:6px;padding:2px 4px;}
.pg-admin-blog-attachments .att-check input{width:16px;height:16px;cursor:pointer;}
.pg-admin-blog-attachments .att-thumb{height:118px;background:#f3f4f6;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.pg-admin-blog-attachments .att-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.pg-admin-blog-attachments .att-fileico{font-size:22px;font-weight:800;color:#9ca3af;letter-spacing:1px;}
.pg-admin-blog-attachments .att-meta{padding:8px 10px 4px;}
.pg-admin-blog-attachments .att-name{font-size:13px;font-weight:600;color:#20242c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pg-admin-blog-attachments .att-sub{font-size:11px;color:#9ca3af;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pg-admin-blog-attachments .att-actions{display:flex;gap:12px;padding:6px 10px 10px;}
.pg-admin-blog-attachments .att-act{background:none;border:none;padding:0;font-size:12px;color:#2563eb;cursor:pointer;}
.pg-admin-blog-attachments .att-act:hover{text-decoration:underline;}
.pg-admin-blog-attachments .att-act.att-del{color:#ef4444;}
.pg-admin-blog-attachments .att-pager{display:flex;align-items:center;gap:12px;margin-top:18px;}
.pg-admin-blog-attachments .att-page{padding:6px 14px;background:#fff;border:1px solid rgba(32,36,44,.12);border-radius:10px;font-size:13px;color:#20242c;text-decoration:none;}
.pg-admin-blog-attachments .att-page:hover{border-color:#2563eb;color:#2563eb;}
.pg-admin-blog-attachments .att-page-info{font-size:13px;color:#6b7280;}
.pg-admin-blog-attachments .att-empty{padding:40px;text-align:center;color:#9ca3af;background:#fff;border:1px dashed rgba(32,36,44,.16);border-radius:14px;}
.pg-admin-blog-attachments .hidden{display:none!important;}
.pg-admin-blog-attachments .att-modal{position:fixed;inset:0;background:rgba(17,24,39,.45);display:flex;align-items:center;justify-content:center;z-index:60;padding:20px;}
.pg-admin-blog-attachments .att-modal.hidden{display:none!important;}
.pg-admin-blog-attachments .att-modal-box{background:var(--modal-bg-solid);border-radius:var(--modal-radius);padding:22px;width:360px;max-width:100%;box-shadow:var(--shadow-lg);}
.pg-admin-blog-attachments .att-modal-title{font-size:16px;font-weight:700;color:#20242c;margin:0 0 14px;}
.pg-admin-blog-attachments .att-label{display:block;font-size:12px;color:#6b7280;margin-bottom:6px;}
.pg-admin-blog-attachments .att-input{width:100%;height:38px;border:1px solid rgba(32,36,44,.16);border-radius:10px;padding:0 12px;font-size:14px;outline:none;box-sizing:border-box;}
.pg-admin-blog-attachments .att-input:focus{border-color:#2563eb;}
.pg-admin-blog-attachments .att-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;}
.pg-admin-blog-attachments .att-btn{height:36px;padding:0 16px;border:1px solid rgba(32,36,44,.16);background:#fff;color:#20242c;border-radius:10px;font-size:13px;cursor:pointer;}
.pg-admin-blog-attachments .att-btn:hover{background:#f9fafb;}
.pg-admin-blog-attachments .att-btn-primary{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:600;}
.pg-admin-blog-attachments .att-btn-primary:hover{background:#1d4ed8;}

/* 全页拖拽上传遮罩 */
.pg-admin-blog-attachments .att-dropoverlay{position:fixed;inset:0;z-index:80;background:rgba(37,99,235,.08);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:30px;}
.pg-admin-blog-attachments .att-dropoverlay-inner{border:2px dashed #2563eb;border-radius:18px;padding:48px 64px;text-align:center;background:rgba(255,255,255,.92);box-shadow:0 20px 50px rgba(0,0,0,.15);}
.pg-admin-blog-attachments .att-dropoverlay-icon{font-size:42px;line-height:1;color:#2563eb;}
.pg-admin-blog-attachments .att-dropoverlay.hidden{display:none!important;}
.pg-admin-blog-attachments .att-dropoverlay-text{margin-top:12px;font-size:15px;font-weight:600;color:#1d4ed8;}
.pg-admin-blog-attachments .att-dropoverlay-box{position:relative;background:#fff;border-radius:18px;padding:36px 40px;max-width:460px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.22);text-align:center;}
.pg-admin-blog-attachments .att-dropoverlay-close{position:absolute;top:10px;right:14px;width:30px;height:30px;border:none;background:transparent;font-size:24px;line-height:1;color:#64748b;cursor:pointer;border-radius:8px;}
.pg-admin-blog-attachments .att-dropoverlay-close:hover{background:#f1f5f9;color:#0f172a;}
.pg-admin-blog-attachments .att-dropzone{border:2px dashed #2563eb;border-radius:14px;padding:38px 28px;background:#f8faff;cursor:pointer;transition:.15s;}
.pg-admin-blog-attachments .att-dropzone.dragover{background:#eef4ff;border-color:#1d4ed8;}
.pg-admin-blog-attachments .att-dropzone .att-btn-primary{margin-top:14px;cursor:pointer;}
.pg-admin-blog-attachments .att-dropoverlay-hint{margin-top:14px;font-size:12px;color:#64748b;}
@media (max-width:640px){
  .pg-admin-blog-attachments .att-stats{grid-template-columns:1fr;}
}

/* ==================== 用户仪表盘 ==================== */
.pg-user-dashboard{padding:24px;}
.pg-user-dashboard .dashboard-page{max-width:1200px;margin:0 auto;}

/* 欢迎区域 */
.pg-user-dashboard .welcome-card{
    display:flex;justify-content:space-between;align-items:center;
    padding:32px;margin-bottom:24px;
    background:linear-gradient(135deg,rgba(176,127,47,.3) 0%,rgba(176,127,47,.15) 100%);
    border-color:rgba(176,127,47,.4);
}
.pg-user-dashboard .welcome-content h1{font-size:24px;font-weight:700;margin:0 0 8px;color:var(--ink);}
.pg-user-dashboard .welcome-content p{font-size:14px;color:var(--ink-dim);margin:0;}
.pg-user-dashboard .welcome-stats{display:flex;gap:32px;}
.pg-user-dashboard .welcome-stat{text-align:center;}
.pg-user-dashboard .welcome-stat-value{display:block;font-size:24px;font-weight:700;color:var(--gold-deep);}
.pg-user-dashboard .welcome-stat-label{display:block;font-size:12px;color:var(--ink-dim);margin-top:4px;}

/* 通知横幅 */
.pg-user-dashboard .alert{
    display:flex;align-items:flex-start;padding:16px 20px;margin-bottom:16px;gap:12px;position:relative;
    border-radius:16px;border:1px solid transparent;
}
.pg-user-dashboard .alert-error{background:var(--c-red-bg);border-color:rgba(192,83,63,.25);color:#97402f;}
.pg-user-dashboard .alert-warning{background:var(--c-yellow-bg);border-color:rgba(181,130,31,.25);color:#8f6414;}
.pg-user-dashboard .alert-content{flex:1;}
.pg-user-dashboard .alert-content strong{display:block;font-weight:600;}
.pg-user-dashboard .alert-content span{font-size:13px;opacity:.8;}
.pg-user-dashboard .alert-details{margin-top:8px;font-size:13px;display:flex;flex-direction:column;gap:2px;}
.pg-user-dashboard .alert-link{font-weight:600;text-decoration:none;white-space:nowrap;}
.pg-user-dashboard .alert-close{position:absolute;top:12px;right:12px;background:none;border:none;font-size:18px;cursor:pointer;opacity:.5;padding:4px;line-height:1;}
.pg-user-dashboard .alert-close:hover{opacity:1;}

/* 统计卡片 */
.pg-user-dashboard .stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;}
.pg-user-dashboard .stat-card, .pg-user-dashboard .ui-card{
    padding:20px;display:flex;align-items:center;gap:16px;
    text-decoration:none;transition:all .2s;
    background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
    border:1px solid var(--stroke);border-radius:20px;box-shadow:var(--shadow);
}
.pg-user-dashboard .stat-card:hover, .pg-user-dashboard .ui-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(0,0,0,.1);}
.pg-user-dashboard .stat-alert{border-color:rgba(176,127,47,.5);animation:dashboard-pulse 2s infinite;}
@keyframes dashboard-pulse{
    0%,100%{box-shadow:0 0 0 0 rgba(176,127,47,.3);}
    50%{box-shadow:0 0 0 8px rgba(176,127,47,0);}
}
.pg-user-dashboard .stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;}
.pg-user-dashboard .stat-green .stat-icon{background:var(--c-green-bg);color:var(--c-green);}
.pg-user-dashboard .stat-gray .stat-icon{background:rgba(107,114,128,.1);color:#6b7280;}
.pg-user-dashboard .stat-yellow .stat-icon{background:var(--c-yellow-bg);color:var(--c-yellow);}
.pg-user-dashboard .stat-orange .stat-icon{background:var(--c-orange-bg);color:var(--c-orange);}
.pg-user-dashboard .stat-info{flex:1;}
.pg-user-dashboard .stat-value{display:block;font-size:28px;font-weight:700;color:var(--ink);line-height:1;}
.pg-user-dashboard .stat-label{display:block;font-size:13px;color:var(--ink-dim);margin-top:4px;}
.pg-user-dashboard .stat-action{font-size:12px;color:var(--gold-deep);opacity:0;transition:opacity .2s;}
.pg-user-dashboard .stat-card:hover .stat-action, .pg-user-dashboard .ui-card:hover .stat-action{opacity:1;}

/* 双栏布局 */
.pg-user-dashboard .dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px;}
.pg-user-dashboard .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.pg-user-dashboard .section-header h2{font-size:18px;font-weight:600;color:var(--ink);margin:0;}
.pg-user-dashboard .view-all{font-size:14px;color:var(--gold-deep);text-decoration:none;}
.pg-user-dashboard .view-all:hover{color:var(--gold);}

/* 主机/订单列表 */
.pg-user-dashboard .hosts-list,.pg-user-dashboard .orders-list{overflow:hidden;}
.pg-user-dashboard .host-item,.pg-user-dashboard .order-item{
    display:flex;align-items:center;
    border-bottom:1px solid rgba(32,36,44,.06);
    transition:background .2s;
}
.pg-user-dashboard .host-item:last-child,.pg-user-dashboard .order-item:last-child{border-bottom:none;}
.pg-user-dashboard .host-item:hover,.pg-user-dashboard .order-item:hover{background:rgba(255,255,255,.3);}
.pg-user-dashboard .host-main,.pg-user-dashboard .order-main{
    flex:1;display:flex;justify-content:space-between;align-items:center;
    padding:16px 20px;text-decoration:none;
}
.pg-user-dashboard .host-name,.pg-user-dashboard .order-no{font-weight:600;color:var(--ink);margin-bottom:4px;font-size:14px;}
.pg-user-dashboard .host-meta,.pg-user-dashboard .order-meta{display:flex;gap:12px;font-size:12px;color:var(--ink-dim);}
.pg-user-dashboard .host-expire.text-warning{color:var(--c-orange);font-weight:600;}
.pg-user-dashboard .host-plan,.pg-user-dashboard .order-product{
    background:var(--gold-soft);color:var(--gold-deep);
    padding:2px 8px;border-radius:4px;
}
.pg-user-dashboard .host-status{
    padding:6px 12px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap;
}
.pg-user-dashboard .status-1{background:var(--c-green-bg);color:var(--c-green);}
.pg-user-dashboard .status-2{background:rgba(107,114,128,.1);color:#6b7280;}
.pg-user-dashboard .status-4{background:var(--c-blue-bg);color:var(--c-blue);}
.pg-user-dashboard .status-5{background:var(--c-red-bg);color:var(--c-red);}
.pg-user-dashboard .host-actions{display:flex;gap:8px;padding-right:16px;}
.pg-user-dashboard .host-action-btn{
    width:32px;height:32px;display:flex;align-items:center;justify-content:center;
    border-radius:8px;background:var(--gold-soft);color:var(--ink-dim);
    text-decoration:none;transition:all .2s;
}
.pg-user-dashboard .host-action-btn:hover{background:rgba(176,127,47,.2);color:var(--gold-deep);}

/* 订单状态 */
.pg-user-dashboard .order-amount{font-weight:700;color:var(--ink);font-size:16px;}
.pg-user-dashboard .order-status-area{display:flex;align-items:center;gap:8px;padding-right:16px;}
.pg-user-dashboard .order-status{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;}
.pg-user-dashboard .status-unpaid{background:var(--c-yellow-bg);color:var(--c-yellow);}
.pg-user-dashboard .status-paid{background:var(--c-green-bg);color:var(--c-green);}
.pg-user-dashboard .status-refunded{background:var(--c-purple-bg);color:var(--c-purple);}
.pg-user-dashboard .status-cancelled{background:rgba(107,114,128,.1);color:#6b7280;}
.pg-user-dashboard .order-pay-btn,.pg-user-dashboard .order-refund-btn{
    padding:4px 10px;border-radius:8px;font-size:11px;font-weight:600;
    text-decoration:none;border:none;cursor:pointer;transition:all .2s;
}
.pg-user-dashboard .order-pay-btn{background:var(--c-yellow-bg);color:var(--c-yellow);}
.pg-user-dashboard .order-pay-btn:hover{background:rgba(181,130,31,.2);}
.pg-user-dashboard .order-refund-btn{background:var(--c-red-bg);color:var(--c-red);}
.pg-user-dashboard .order-refund-btn:hover{background:rgba(192,83,63,.2);}

/* 空状态 */
.pg-user-dashboard .empty-state{text-align:center;padding:48px 24px;}
.pg-user-dashboard .empty-state p{color:var(--ink-dim);margin:16px 0;}/* 按钮 */
.pg-user-dashboard .btn-primary, .pg-user-dashboard .btn-ghost {
    padding:10px 20px;border-radius:10px;font-size:14px;font-weight:600;
    text-decoration:none;display:inline-flex;align-items:center;justify-content:center;
    gap:8px;border:none;cursor:pointer;transition:all .2s;
}
.pg-user-dashboard .btn-primary{background:linear-gradient(135deg,var(--gold) 0%,var(--gold-deep) 100%);color:#fff;}
.pg-user-dashboard .btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(176,127,47,.4);}
.pg-user-dashboard .btn-ghost{background:rgba(255,255,255,.5);border:1px solid rgba(32,36,44,.1);color:var(--ink-dim);}
.pg-user-dashboard .btn-ghost:hover{background:rgba(255,255,255,.8);}
.pg-user-dashboard .btn-sm{padding:6px 14px;font-size:12px;}

/* 即将到期提醒 */
.pg-user-dashboard .expiring-banner{padding:16px 20px;background:var(--c-yellow-bg);border-color:rgba(181,130,31,.25);}
.pg-user-dashboard .expiring-header{display:flex;align-items:center;gap:8px;font-weight:600;color:#8f6414;margin-bottom:12px;}
.pg-user-dashboard .expiring-list{display:flex;flex-direction:column;gap:8px;}
.pg-user-dashboard .expiring-item{
    display:flex;align-items:center;justify-content:space-between;
    padding:10px 14px;background:rgba(255,255,255,.5);border-radius:10px;
}
.pg-user-dashboard .expiring-name{font-weight:500;color:var(--ink);}
.pg-user-dashboard .expiring-date{font-size:13px;color:var(--ink-dim);}

/* 响应式 */
@media (max-width:1024px){
    .pg-user-dashboard .stats-grid{grid-template-columns:repeat(2,1fr);}
    .pg-user-dashboard .dashboard-grid{grid-template-columns:1fr;}
}
@media (max-width:640px){
    .pg-user-dashboard .welcome-card{flex-direction:column;text-align:center;gap:20px;}
    .pg-user-dashboard .welcome-stats{justify-content:center;}
    .pg-user-dashboard .stats-grid{grid-template-columns:1fr;}
    .pg-user-dashboard .host-main,.pg-user-dashboard .order-main{flex-direction:column;align-items:flex-start;gap:8px;}
    .pg-user-dashboard .host-actions,.pg-user-dashboard .order-status-area{padding:0 16px 16px;}
    .pg-user-dashboard .expiring-item{flex-direction:column;align-items:flex-start;gap:8px;}
    .pg-admin-blog-attachments .att-search{margin-left:0;width:100%;}
    .pg-admin-blog-attachments .att-search input{flex:1;min-width:0;}
}

/* ===================== Tailwind hover: 垫片变体 =====================
   后台大量使用 hover: 工具类（v3 原垫片缺失伪类变体），
   此处统一映射为 frost 设计令牌，恢复卡片/按钮悬停反馈。 */
.hover\:bg-gray-50:hover{background-color:rgba(32,36,44,.04);}
.hover\:bg-gray-100:hover{background-color:rgba(32,36,44,.07);}
.hover\:bg-gray-200:hover{background-color:rgba(32,36,44,.11);}
.hover\:bg-gray-800:hover{background-color:rgba(32,36,44,.85);}
.hover\:bg-blue-50:hover,.hover\:bg-blue-100:hover{background-color:var(--c-blue-bg);}
.hover\:bg-blue-200:hover{background-color:rgba(59,111,176,.20);}
.hover\:bg-blue-600:hover,.hover\:bg-blue-700:hover{background-color:var(--c-blue);}
.hover\:bg-green-50:hover,.hover\:bg-green-100:hover{background-color:var(--c-green-bg);}
.hover\:bg-green-200:hover{background-color:rgba(47,143,111,.20);}
.hover\:bg-green-600:hover,.hover\:bg-green-700:hover{background-color:var(--c-green);}
.hover\:bg-red-50:hover,.hover\:bg-red-100:hover{background-color:var(--c-red-bg);}
.hover\:bg-red-200:hover{background-color:rgba(192,83,63,.20);}
.hover\:bg-red-600:hover,.hover\:bg-red-700:hover{background-color:var(--c-red);}
.hover\:bg-purple-50:hover,.hover\:bg-purple-100:hover{background-color:var(--c-purple-bg);}
.hover\:bg-purple-700:hover{background-color:var(--c-purple);}
.hover\:bg-orange-50:hover,.hover\:bg-orange-100:hover{background-color:var(--c-orange-bg);}
.hover\:bg-orange-700:hover{background-color:var(--c-orange);}
.hover\:bg-yellow-50:hover,.hover\:bg-yellow-100:hover,.hover\:bg-amber-100:hover{background-color:var(--c-yellow-bg);}
.hover\:bg-yellow-700:hover{background-color:var(--c-yellow);}
.hover\:bg-emerald-100:hover{background-color:rgba(47,143,111,.12);}
.hover\:bg-cyan-700:hover{background-color:#0e7490;}
.hover\:text-gray-500:hover{color:rgba(32,36,44,.50);}
.hover\:text-gray-600:hover{color:rgba(32,36,44,.66);}
.hover\:text-gray-700:hover{color:rgba(32,36,44,.82);}
.hover\:text-blue-500:hover,.hover\:text-blue-600:hover,.hover\:text-blue-700:hover{color:var(--c-blue);}
.hover\:text-green-600:hover{color:var(--c-green);}
.hover\:text-red-500:hover,.hover\:text-red-600:hover,.hover\:text-red-700:hover{color:var(--c-red);}
.hover\:text-purple-600:hover{color:var(--c-purple);}
.hover\:border-blue-200:hover{border-color:rgba(59,111,176,.40);}
.hover\:border-blue-300:hover{border-color:rgba(59,111,176,.55);}
.hover\:border-gray-300:hover{border-color:rgba(32,36,44,.18);}
.hover\:underline:hover{text-decoration:underline;}
.hover\:shadow-sm:hover{box-shadow:0 1px 2px rgba(40,48,66,.10);}
.hover\:shadow-md:hover{box-shadow:var(--shadow);}
.hover\:-translate-y-0\.5:hover{transform:translateY(-2px);}
.hover\:opacity-90:hover{opacity:.9;}
/* 为交互元素补充过渡，使 hover 变化平滑 */
a:hover,button:hover,.btn:hover,.card:hover,[class*="hover\\:"]:hover{transition:background-color .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease),transform .18s var(--ease),opacity .18s var(--ease);}

/* ===================== 后台空状态组件 ===================== */
.pg-admin .empty-state,.admin-content .empty-state{padding:clamp(32px,4vw,56px);}
.empty-state .es-icon{width:56px;height:56px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--glass-card);border:1px solid var(--stroke);color:var(--ink-faint);font-size:24px;}
.empty-state .es-action{margin-top:18px;}
.empty-state .es-action .btn{margin:0 4px;}

/* ===================== 内联样式外置 · 工具类（替代高频 inline style） ===================== */
.icon-16{width:16px;height:16px;flex-shrink:0;}
.text-faint{color:var(--ink-faint);}
.text-dim{color:var(--ink-dim);}
.mono{font-family:var(--mono);}
.nowrap{white-space:nowrap;}
.t-center{text-align:center;}
/* 注意：display:none 已由 .hidden（display:none!important）覆盖，模板中 style="display:none" 应改为 class="hidden" */

/* ===================== Utility Layer (inline-style externalization) ===================== */
.text-11{font-size:11px}
.text-12{font-size:12px}
.text-13{font-size:13px}
.text-14{font-size:14px}
.text-15{font-size:15px}
.text-16{font-size:16px}
.text-18{font-size:18px}
.text-20{font-size:20px}
.text-22{font-size:22px}
.text-24{font-size:24px}
.text-28{font-size:28px}
.text-32{font-size:32px}
.fw-400{font-weight:400}
.fw-500{font-weight:500}
.fw-600{font-weight:600}
.fw-700{font-weight:700}
.c-#111{color:ink-900}
.bg-#111{background:ink-900}
.c-#111827{color:gray-900}
.bg-#111827{background:gray-900}
.c-#1f2937{color:gray-800}
.bg-#1f2937{background:gray-800}
.c-#374151{color:gray-700}
.bg-#374151{background:gray-700}
.c-#4b5563{color:gray-600}
.bg-#4b5563{background:gray-600}
.c-#6b7280{color:gray-500}
.bg-#6b7280{background:gray-500}
.c-#9ca3af{color:gray-400}
.bg-#9ca3af{background:gray-400}
.c-#9aa1ab{color:gray-300}
.bg-#9aa1ab{background:gray-300}
.c-#e5e7eb{color:gray-200}
.bg-#e5e7eb{background:gray-200}
.c-#f3f4f6{color:gray-100}
.bg-#f3f4f6{background:gray-100}
.c-#f9fafb{color:gray-50}
.bg-#f9fafb{background:gray-50}
.c-#eff6ff{color:blue-50}
.bg-#eff6ff{background:blue-50}
.c-#ef4444{color:red-500}
.bg-#ef4444{background:red-500}
.c-#10b981{color:green-500}
.bg-#10b981{background:green-500}
.c-#3b82f6{color:blue-500}
.bg-#3b82f6{background:blue-500}
.c-#f0fdf4{color:green-50}
.bg-#f0fdf4{background:green-50}
.c-#bbf7d0{color:green-200}
.bg-#bbf7d0{background:green-200}
.c-#166534{color:green-800}
.bg-#166534{background:green-800}
.c-#fef2f2{color:red-50}
.bg-#fef2f2{background:red-50}
.c-#fecaca{color:red-200}
.bg-#fecaca{background:red-200}
.c-#dc2626{color:red-600}
.bg-#dc2626{background:red-600}
.c-#fef3c7{color:amber-100}
.bg-#fef3c7{background:amber-100}
.c-#f59e0b{color:amber-500}
.bg-#f59e0b{background:amber-500}
.c-#0ea5e9{color:sky-500}
.bg-#0ea5e9{background:sky-500}
.c-#22c55e{color:green-600}
.bg-#22c55e{background:green-600}
.c-#f43f5e{color:rose-500}
.bg-#f43f5e{background:rose-500}
.c-#8b5cf6{color:violet-500}
.bg-#8b5cf6{background:violet-500}
.c-#6366f1{color:indigo-500}
.bg-#6366f1{background:indigo-500}
.bg-none{background:none}
.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}
.flex{display:flex}.block{display:block}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.hidden{display:none}
.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-stretch{align-items:stretch}
.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}
.flex-1{flex:1}.flex-auto{flex:auto}.flex-shrink-0{flex-shrink:0}
.gap-4{gap:4px}
.gap-6{gap:6px}
.gap-8{gap:8px}
.gap-10{gap:10px}
.gap-12{gap:12px}
.gap-14{gap:14px}
.gap-16{gap:16px}
.gap-20{gap:20px}
.gap-24{gap:24px}
.m-4{margin:4px}
.p-4{padding:4px}
.px-4{padding-left:4px;padding-right:4px}
.py-4{padding-top:4px;padding-bottom:4px}
.pt-4{padding-top:4px}
.pb-4{padding-bottom:4px}
.pl-4{padding-left:4px}
.pr-4{padding-right:4px}
.mt-4{margin-top:4px}
.mb-4{margin-bottom:4px}
.ml-4{margin-left:4px}
.mr-4{margin-right:4px}
.m-6{margin:6px}
.p-6{padding:6px}
.px-6{padding-left:6px;padding-right:6px}
.py-6{padding-top:6px;padding-bottom:6px}
.pt-6{padding-top:6px}
.pb-6{padding-bottom:6px}
.pl-6{padding-left:6px}
.pr-6{padding-right:6px}
.mt-6{margin-top:6px}
.mb-6{margin-bottom:6px}
.ml-6{margin-left:6px}
.mr-6{margin-right:6px}
.m-8{margin:8px}
.p-8{padding:8px}
.px-8{padding-left:8px;padding-right:8px}
.py-8{padding-top:8px;padding-bottom:8px}
.pt-8{padding-top:8px}
.pb-8{padding-bottom:8px}
.pl-8{padding-left:8px}
.pr-8{padding-right:8px}
.mt-8{margin-top:8px}
.mb-8{margin-bottom:8px}
.ml-8{margin-left:8px}
.mr-8{margin-right:8px}
.m-10{margin:10px}
.p-10{padding:10px}
.px-10{padding-left:10px;padding-right:10px}
.py-10{padding-top:10px;padding-bottom:10px}
.pt-10{padding-top:10px}
.pb-10{padding-bottom:10px}
.pl-10{padding-left:10px}
.pr-10{padding-right:10px}
.mt-10{margin-top:10px}
.mb-10{margin-bottom:10px}
.ml-10{margin-left:10px}
.mr-10{margin-right:10px}
.m-12{margin:12px}
.p-12{padding:12px}
.px-12{padding-left:12px;padding-right:12px}
.py-12{padding-top:12px;padding-bottom:12px}
.pt-12{padding-top:12px}
.pb-12{padding-bottom:12px}
.pl-12{padding-left:12px}
.pr-12{padding-right:12px}
.mt-12{margin-top:12px}
.mb-12{margin-bottom:12px}
.ml-12{margin-left:12px}
.mr-12{margin-right:12px}
.m-14{margin:14px}
.p-14{padding:14px}
.px-14{padding-left:14px;padding-right:14px}
.py-14{padding-top:14px;padding-bottom:14px}
.pt-14{padding-top:14px}
.pb-14{padding-bottom:14px}
.pl-14{padding-left:14px}
.pr-14{padding-right:14px}
.mt-14{margin-top:14px}
.mb-14{margin-bottom:14px}
.ml-14{margin-left:14px}
.mr-14{margin-right:14px}
.m-16{margin:16px}
.p-16{padding:16px}
.px-16{padding-left:16px;padding-right:16px}
.py-16{padding-top:16px;padding-bottom:16px}
.pt-16{padding-top:16px}
.pb-16{padding-bottom:16px}
.pl-16{padding-left:16px}
.pr-16{padding-right:16px}
.mt-16{margin-top:16px}
.mb-16{margin-bottom:16px}
.ml-16{margin-left:16px}
.mr-16{margin-right:16px}
.m-18{margin:18px}
.p-18{padding:18px}
.px-18{padding-left:18px;padding-right:18px}
.py-18{padding-top:18px;padding-bottom:18px}
.pt-18{padding-top:18px}
.pb-18{padding-bottom:18px}
.pl-18{padding-left:18px}
.pr-18{padding-right:18px}
.mt-18{margin-top:18px}
.mb-18{margin-bottom:18px}
.ml-18{margin-left:18px}
.mr-18{margin-right:18px}
.m-20{margin:20px}
.p-20{padding:20px}
.px-20{padding-left:20px;padding-right:20px}
.py-20{padding-top:20px;padding-bottom:20px}
.pt-20{padding-top:20px}
.pb-20{padding-bottom:20px}
.pl-20{padding-left:20px}
.pr-20{padding-right:20px}
.mt-20{margin-top:20px}
.mb-20{margin-bottom:20px}
.ml-20{margin-left:20px}
.mr-20{margin-right:20px}
.m-24{margin:24px}
.p-24{padding:24px}
.px-24{padding-left:24px;padding-right:24px}
.py-24{padding-top:24px;padding-bottom:24px}
.pt-24{padding-top:24px}
.pb-24{padding-bottom:24px}
.pl-24{padding-left:24px}
.pr-24{padding-right:24px}
.mt-24{margin-top:24px}
.mb-24{margin-bottom:24px}
.ml-24{margin-left:24px}
.mr-24{margin-right:24px}
.m-28{margin:28px}
.p-28{padding:28px}
.px-28{padding-left:28px;padding-right:28px}
.py-28{padding-top:28px;padding-bottom:28px}
.pt-28{padding-top:28px}
.pb-28{padding-bottom:28px}
.pl-28{padding-left:28px}
.pr-28{padding-right:28px}
.mt-28{margin-top:28px}
.mb-28{margin-bottom:28px}
.ml-28{margin-left:28px}
.mr-28{margin-right:28px}
.m-32{margin:32px}
.p-32{padding:32px}
.px-32{padding-left:32px;padding-right:32px}
.py-32{padding-top:32px;padding-bottom:32px}
.pt-32{padding-top:32px}
.pb-32{padding-bottom:32px}
.pl-32{padding-left:32px}
.pr-32{padding-right:32px}
.mt-32{margin-top:32px}
.mb-32{margin-bottom:32px}
.ml-32{margin-left:32px}
.mr-32{margin-right:32px}
.m-40{margin:40px}
.p-40{padding:40px}
.px-40{padding-left:40px;padding-right:40px}
.py-40{padding-top:40px;padding-bottom:40px}
.pt-40{padding-top:40px}
.pb-40{padding-bottom:40px}
.pl-40{padding-left:40px}
.pr-40{padding-right:40px}
.mt-40{margin-top:40px}
.mb-40{margin-bottom:40px}
.ml-40{margin-left:40px}
.mr-40{margin-right:40px}
.m-48{margin:48px}
.p-48{padding:48px}
.px-48{padding-left:48px;padding-right:48px}
.py-48{padding-top:48px;padding-bottom:48px}
.pt-48{padding-top:48px}
.pb-48{padding-bottom:48px}
.pl-48{padding-left:48px}
.pr-48{padding-right:48px}
.mt-48{margin-top:48px}
.mb-48{margin-bottom:48px}
.ml-48{margin-left:48px}
.mr-48{margin-right:48px}
.w-6{width:6px}
.h-6{height:6px}
.w-8{width:8px}
.h-8{height:8px}
.w-10{width:10px}
.h-10{height:10px}
.w-12{width:12px}
.h-12{height:12px}
.w-14{width:14px}
.h-14{height:14px}
.w-15{width:15px}
.h-15{height:15px}
.w-16{width:16px}
.h-16{height:16px}
.w-18{width:18px}
.h-18{height:18px}
.w-20{width:20px}
.h-20{height:20px}
.w-24{width:24px}
.h-24{height:24px}
.w-28{width:28px}
.h-28{height:28px}
.w-32{width:32px}
.h-32{height:32px}
.w-40{width:40px}
.h-40{height:40px}
.w-48{width:48px}
.h-48{height:48px}
.w-60{width:60px}
.h-60{height:60px}
.w-72{width:72px}
.h-72{height:72px}
.w-80{width:80px}
.h-80{height:80px}
.w-100{width:100px}
.h-100{height:100px}
.w-120{width:120px}
.h-120{height:120px}
.w-140{width:140px}
.h-140{height:140px}
.w-160{width:160px}
.h-160{height:160px}
.w-200{width:200px}
.h-200{height:200px}
.w-250{width:250px}
.h-250{height:250px}
.w-300{width:300px}
.h-300{height:300px}
.w-400{width:400px}
.h-400{height:400px}
.rounded-4{border-radius:4px}
.rounded-6{border-radius:6px}
.rounded-8{border-radius:8px}
.rounded-10{border-radius:10px}
.rounded-12{border-radius:12px}
.rounded-14{border-radius:14px}
.rounded-16{border-radius:16px}
.rounded-18{border-radius:18px}
.rounded-20{border-radius:20px}
.rounded-24{border-radius:24px}
.rounded-full{border-radius:9999px}
.border-0{border:none}
.cursor-pointer{cursor:pointer}
.no-underline{text-decoration:none}
.box-border{box-sizing:border-box}
.fixed{position:fixed}.inset-0{inset:0}.z-100{z-index:100}

/* ===== 全局组件（毛玻璃卡片/按钮/表单/Tab/Toast/页面背景）===== */
:root{--glass-border:rgba(0,0,0,.06);--glass-shadow:0 8px 32px -8px rgba(20,20,40,.18);--blur-size:18px;--r:16px}
.g-card{background:rgba(255,255,255,.55);-webkit-backdrop-filter:blur(var(--blur-size)) saturate(160%);backdrop-filter:blur(var(--blur-size)) saturate(160%);border:1px solid var(--glass-border);border-radius:var(--r);box-shadow:var(--glass-shadow)}
.g-card-strong{background:rgba(255,255,255,.75);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border:1px solid rgba(0,0,0,.08);border-radius:var(--r);box-shadow:0 12px 40px -12px rgba(20,20,40,.2)}
.g-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:6px 14px;border-radius:10px;font-size:12px;font-weight:500;transition:all .15s ease;border:1px solid rgba(0,0,0,.06);cursor:pointer;text-decoration:none;background:rgba(255,255,255,.6);color:var(--ink)}
.g-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px -4px rgba(0,0,0,.15)}
.g-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.g-btn-primary{background:#2563eb;color:#fff;border-color:#2563eb}
.g-btn-primary:hover{background:#1d4ed8}
.g-btn-danger{background:rgba(239,68,68,.1);color:#dc2626;border-color:rgba(239,68,68,.2)}
.g-btn-ghost{background:rgba(0,0,0,.04);color:var(--ink-dim);border-color:transparent}
.g-btn-ghost:hover{background:rgba(0,0,0,.08);color:var(--ink)}
.g-input{padding:9px 12px;border-radius:10px;font-size:13px;border:1px solid rgba(0,0,0,.08);background:rgba(255,255,255,.6);outline:none;width:100%;transition:all .15s}
.g-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}
.g-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:none;background:transparent;color:var(--ink-faint);font-size:12px;font-weight:500;cursor:pointer;border-radius:10px;transition:all .15s}
.g-tab:hover{background:rgba(0,0,0,.04);color:var(--ink-dim)}
.g-tab.active{background:rgba(59,130,246,.1);color:#2563eb;font-weight:600}
.g-tab-link{text-decoration:none;color:var(--ink-faint);transition:color .15s,background .15s}
.g-tab-link:hover{background:rgba(0,0,0,.04);color:var(--ink-dim)}
.g-tab-link.active{color:var(--c-blue)}
.g-toggle{position:relative;display:inline-flex;align-items:center;cursor:pointer}
.g-toggle input{position:absolute;opacity:0;width:0;height:0}
.g-toggle span{position:relative;width:40px;height:22px;background:rgba(0,0,0,.1);border-radius:11px;transition:.2s}
.g-toggle span::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;background:white;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.g-toggle input:checked+span{background:#2563eb}
.g-toggle input:checked+span::after{transform:translateX(18px)}
.page-bg{min-height:100vh;background:linear-gradient(135deg,#f0f4ff 0%,#e8f0fe 30%,#f5f0ff 60%,#fef4f0 100%)}
.g-toast{position:fixed;bottom:24px;right:24px;padding:10px 18px;border-radius:10px;font-size:12px;font-weight:500;z-index:999;opacity:0;transform:translateY(8px);transition:all .25s;pointer-events:none}
.g-toast.show{opacity:1;transform:translateY(0);pointer-events:auto}
.g-toast-ok{background:rgba(34,197,94,.9);color:#fff}
.g-toast-err{background:rgba(239,68,68,.9);color:#fff}
@keyframes spin{to{transform:rotate(360deg)}}

/* ===== 侧边栏折叠 ===== */
.side-collapse{margin:0}
.side-toggle{cursor:pointer;user-select:none;display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:10px;text-decoration:none;color:inherit;transition:background .15s,color .15s}
.side-toggle:hover{background:rgba(0,153,204,.06)}
.side-toggle.active{background:rgba(0,153,204,.1);color:#0099cc}
.side-toggle svg:first-child{width:20px;height:20px;flex-shrink:0}
.side-toggle span{flex:1;font-size:14px;font-weight:500}
.side-chevron{width:16px;height:16px;flex-shrink:0;opacity:.4;transition:transform .25s cubic-bezier(.22,.9,.24,1),opacity .2s}
.side-chevron.rotated{transform:rotate(90deg);opacity:.7}
.side-collapse-body{overflow:hidden;transition:max-height .3s cubic-bezier(.22,.9,.24,1),opacity .25s ease;padding-left:12px}
.side-collapse-body .side-sub{display:block;padding:7px 16px 7px 34px;font-size:13px;color:#7a90a5;border-radius:8px;text-decoration:none;transition:background .15s,color .15s;white-space:nowrap}
.side-collapse-body .side-sub:hover{background:rgba(0,153,204,.06);color:#0099cc}
.side-collapse-body .side-sub.active{background:rgba(0,153,204,.1);color:#0099cc;font-weight:600}


/* ===== 后台页面组件 ===== */

/* --- products --- */
.pg-admin-products{max-width:1100px;margin:0 auto}

/* Header */
.pe-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}
.pe-title{font-family:var(--serif);font-size:22px;font-weight:700;color:var(--ink);letter-spacing:-.02em}
.pe-subtitle{font-size:13px;color:var(--ink-faint);margin-top:2px}
.pe-btn-primary{display:inline-flex;align-items:center;gap:7px;padding:10px 22px;border:none;border-radius:12px;background:var(--c-blue);color:#fff;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .2s ease;text-decoration:none;box-shadow:0 4px 14px rgba(59,111,176,.3)}
.pe-btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(59,111,176,.4)}

/* Stats */
.pe-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.pe-stat-card{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);box-shadow:var(--shadow);transition:transform .25s var(--ease)}
.pe-stat-card:hover{transform:translateY(-2px)}
.pe-stat-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pe-stat-icon.blue{background:rgba(59,111,176,.12);color:var(--c-blue)}
.pe-stat-icon.green{background:rgba(47,143,111,.12);color:var(--c-green)}
.pe-stat-icon.amber{background:rgba(181,130,31,.12);color:var(--c-yellow)}
.pe-stat-icon.purple{background:rgba(122,91,176,.12);color:var(--c-purple)}
.pe-stat-info{display:flex;flex-direction:column}
.pe-stat-label{font-size:12px;color:var(--ink-faint)}
.pe-stat-value{font-family:var(--serif);font-size:20px;font-weight:700;color:var(--ink);line-height:1.2;margin-top:1px}

/* Empty */
.pe-empty{text-align:center;padding:60px 20px;background:var(--glass-card);backdrop-filter:var(--blur);border:1px solid var(--stroke);border-radius:20px;color:var(--ink-faint);font-size:14px}
.pe-empty svg{margin-bottom:12px}

/* Product Grid */
.pe-product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}

/* Product Card */
.pe-product-card{padding:16px 18px;border-radius:16px;background:var(--glass-card);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--stroke);box-shadow:var(--shadow);transition:all .25s var(--ease);display:flex;flex-direction:column}
.pe-product-card:hover{transform:translateY(-3px);box-shadow:0 26px 60px -24px rgba(40,48,66,.34)}
.pe-product-card.recommend{border-color:rgba(176,127,47,.4);box-shadow:var(--shadow),0 0 0 1px rgba(176,127,47,.2)}

/* Card Top */
.pe-card-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:10px}
.pe-card-name h3{font-size:15px;font-weight:700;color:var(--ink);margin-bottom:4px;background:linear-gradient(135deg,var(--ink) 0%,var(--c-blue) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.pe-card-badges{display:flex;gap:5px}
.pe-badge-sm{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:100px;font-size:11px;font-weight:600;letter-spacing:.02em}
.pe-badge-sm.on{background:rgba(47,143,111,.12);color:var(--c-green)}
.pe-badge-sm.off{background:rgba(156,163,175,.12);color:var(--ink-faint)}
.pe-badge-sm.star{background:rgba(181,130,31,.12);color:var(--c-yellow)}
.pe-card-node{display:flex;align-items:center}
.pe-node-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:8px;font-size:11.5px;font-weight:600;background:linear-gradient(135deg,rgba(59,111,176,.1),rgba(122,91,176,.1));color:var(--c-blue);border:1px solid rgba(59,111,176,.15);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.pe-node-tag svg{opacity:.7}
.pe-node-tag.default{background:rgba(156,163,175,.1);color:var(--ink-faint);border-color:rgba(156,163,175,.15)}

/* Specs */
.pe-card-specs{display:grid;grid-template-columns:1fr 1fr;gap:5px 10px;margin-bottom:12px}
.pe-spec-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-dim)}
.pe-spec-item svg{color:var(--ink-faint);flex-shrink:0}

/* Card Bottom */
.pe-card-bottom{display:flex;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid var(--stroke-soft);margin-top:auto}
.pe-card-sales{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-faint)}
.pe-card-actions{display:flex;gap:5px}
.pe-action-btn{width:28px;height:28px;border-radius:7px;border:none;background:rgba(255,255,255,.4);color:var(--ink-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;text-decoration:none}
.pe-action-btn:hover{background:rgba(255,255,255,.7);color:var(--ink)}
.pe-action-btn.edit{background:rgba(59,111,176,.1);color:var(--c-blue)}
.pe-action-btn.edit:hover{background:rgba(59,111,176,.2)}
.pe-action-btn.danger{background:rgba(192,83,63,.08);color:var(--c-red)}
.pe-action-btn.danger:hover{background:rgba(192,83,63,.15)}

/* Pagination */
.pe-pagination{display:flex;align-items:center;justify-content:space-between;margin-top:24px}
.pe-page-info{font-size:13px;color:var(--ink-faint)}
.pe-page-btns{display:flex;gap:6px}
.pe-page-btn{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;color:var(--ink-dim);background:rgba(255,255,255,.35);border:1px solid var(--stroke-soft);text-decoration:none;transition:all .15s ease}
.pe-page-btn:hover{background:rgba(255,255,255,.55)}
.pe-page-btn.active{background:var(--c-blue);color:#fff;border-color:var(--c-blue)}

/* Modal */
.pe-modal{background:var(--modal-bg);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);border:1px solid var(--stroke);border-radius:var(--modal-radius);box-shadow:var(--shadow-lg);max-width:600px;width:100%;max-height:85vh;overflow-y:auto}
.pe-modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--stroke-soft);position:sticky;top:0;background:var(--glass-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:1;border-radius:var(--modal-radius) var(--modal-radius) 0 0}
.pe-modal-head h3{font-size:17px;font-weight:700;color:var(--ink)}
.pe-modal-close{width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:var(--ink-faint);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}
.pe-modal-close:hover{background:rgba(255,255,255,.5);color:var(--ink)}
.pe-modal-body{padding:24px}

/* Responsive */
@media(max-width:1100px){.pe-product-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){
    .pe-stats{grid-template-columns:1fr 1fr}
    .pe-product-grid{grid-template-columns:1fr}
}

/* --- payment --- */
.pay-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;background:transparent;color:#6b7280;font-size:13px;font-weight:500;cursor:pointer;border-radius:10px;transition:all .15s ease;white-space:nowrap;text-decoration:none;position:relative;}
.pay-tab:hover{background:#f3f4f6;color:#374151;}
.pay-tab.active{background:#eff6ff;color:#2563eb;font-weight:600;}
.tab-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;background:#ef4444;color:white;font-size:10px;font-weight:600;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;}
.config-status{width:8px;height:8px;border-radius:50%;margin-left:4px;}
.config-status.ok{background:#22c55e;}
.config-status.warn{background:#eab308;}
.pay-panel{display:none;}
.pay-panel.active{display:block;}
.tab-panel-animate{animation:fadeIn .2s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.sort-icon{font-size:10px;opacity:.5;}
.toggle-switch{appearance:none;-webkit-appearance:none;width:36px;height:20px;background:#d1d5db;border-radius:10px;position:relative;cursor:pointer;transition:background .2s;outline:none;border:none;flex-shrink:0;}
.toggle-switch:checked{background:#22c55e;}
.toggle-switch::before{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.15);}
.toggle-switch:checked::before{transform:translateX(16px);}
/* Toast 已统一到 ui-dialog.css，此处删除（原浅底定义会盖掉深色版的 color:#fff 导致白字看不见） */

/* --- users --- */
.g-modal{display:none;position:fixed;inset:0;z-index:50;background:rgba(30,30,60,.35);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;justify-content:center;padding:16px}
.g-modal-box{background:var(--modal-bg-solid);-webkit-backdrop-filter:var(--modal-blur);backdrop-filter:var(--modal-blur);border:1px solid var(--stroke);border-radius:var(--modal-radius);box-shadow:var(--shadow-lg);overflow:hidden}
.g-modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(0,0,0,.06)}
.g-modal-head h3{font-size:14px;font-weight:600;color:#1a1a2e;margin:0}
.g-modal-close{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#888;cursor:pointer;background:none;border:none;font-size:18px}
.g-modal-close:hover{background:rgba(0,0,0,.06);color:#1a1a2e}
.g-modal-foot{display:flex;gap:8px;padding:14px 20px;border-top:1px solid rgba(0,0,0,.06)}

/* --- task --- */
.deploy-details .deploy-pop{display:none;position:absolute;right:0;top:100%;margin-top:8px;width:320px;background:#fff;border-radius:16px;box-shadow:0 20px 60px -15px rgba(0,0,0,.15);border:1px solid #e5e7eb;z-index:30}
.deploy-details[open] .deploy-pop{display:block}
.deploy-details[open] summary{color:#3b82f6;border-color:#93c5fd;background:#eff6ff}


/* ===== 主机控制面板 (host_control) ===== */
/* 统一到 frost 共享设计令牌（v3.css :root）：仅映射本页用到的变量名，
     布局/结构/间距/圆角完全保持不变，颜色与主机续费、仪表盘等其它 frost 页面一致 */
  

  .hc *{box-sizing:border-box;margin:0;padding:0}
  .hc{display:flex;min-height:100vh;position:relative;color:var(--ink);
    font-family:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,sans-serif;line-height:1.55;
    transition:color .4s ease}
  .hc a{color:inherit;text-decoration:none}
  .hc button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}

  /* 背景光斑 */
  .hc-bg{position:fixed;inset:0;z-index:-2;background:var(--body-bg);transition:background .5s ease}
  .hc-bg::before,.hc-bg::after,.hc-bg .hc-blob{content:"";position:fixed;border-radius:50%;filter:blur(70px);opacity:.5;transition:background .5s ease}
  .hc-bg::before{width:560px;height:560px;top:-140px;left:-120px;background:radial-gradient(circle, rgba(176,127,47,.22), transparent 70%)}
  .hc-bg::after{width:520px;height:520px;bottom:-160px;right:-100px;background:radial-gradient(circle, rgba(47,143,124,.16), transparent 70%)}
  .hc-bg .hc-blob{width:420px;height:420px;top:38%;left:52%;background:radial-gradient(circle, rgba(47,143,124,.13), transparent 70%)}
  .hc-bg::before,.hc-bg::after,.hc-bg .hc-blob{animation:hcfloat 16s ease-in-out infinite alternate}
  .hc-bg::after{animation-delay:-6s}
  .hc-bg .hc-blob{animation-delay:-11s}
  @keyframes hcfloat{from{transform:translate(0,0) scale(1)}to{transform:translate(40px,-30px) scale(1.08)}}

  /* 毛玻璃基元 */
  /* 统一为与「运行状态」框一致的 3% 墨色近乎全透明 + 玻璃描边；翻转背面(.hc-flip-back)单独白底不在此列 */
  .hc-glass{background:color-mix(in oklch,var(--ink) 3%, transparent);-webkit-backdrop-filter:blur(var(--blur)) saturate(170%);backdrop-filter:blur(var(--blur)) saturate(170%);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}
  .hc-glass-strong{background:color-mix(in oklch,var(--ink) 3%, transparent);-webkit-backdrop-filter:blur(var(--blur)) saturate(170%);backdrop-filter:blur(var(--blur)) saturate(170%);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}

  /* 主区 */
  .hc-main{flex:1;min-width:0;display:flex;flex-direction:column;max-width:1200px;margin:0 auto;width:100%}
  .hc-topbar{display:flex;align-items:center;gap:16px;padding:14px 28px;position:sticky;top:0;z-index:10;background:color-mix(in oklch,var(--ink) 3%, transparent);-webkit-backdrop-filter:blur(28px) saturate(180%);backdrop-filter:blur(28px) saturate(180%);border-bottom:1px solid var(--glass-border)}
  .hc-crumbs{font-size:13px;color:var(--ink-3)}
  .hc-crumbs b{color:var(--ink);font-weight:600}
  .hc-crumbs span{color:var(--brand);font-weight:600}
  .hc-crumbs a{color:var(--brand);font-weight:600;text-decoration:none;cursor:pointer;transition:color .15s ease,opacity .15s ease}
  .hc-crumbs a:hover{color:var(--brand-2);opacity:.85}
  .hc-topbar .hc-spacer{flex:1}
  .hc-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;text-decoration:none;cursor:pointer;box-shadow:0 4px 14px color-mix(in oklch,var(--brand) 45%, transparent);transition:transform .15s ease,opacity .15s ease}
  .hc-avatar:hover{transform:translateY(-1px);opacity:.9}

  .hc-content{padding:26px 28px 60px;max-width:1280px;width:100%;margin:0 auto}

  .hc-hero{border-radius:var(--r);padding:22px 24px;display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap}
  .hc-hero-main{flex:1;min-width:260px}
  .hc-hero-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .hc-hero-title h1{font-size:21px;font-weight:700}
  .hc-pill{font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--glass-border)}
  .hc-pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
  .hc-pill.green{background:var(--green-bg);color:var(--green)}
  .hc-pill.gray{background:color-mix(in oklch,var(--ink) 7%, transparent);color:var(--ink-2)}
  .hc-pill.brand{background:color-mix(in oklch,var(--brand) 18%, transparent);color:var(--brand)}
  .hc-hero-desc{color:var(--ink-2);font-size:13px;margin-top:6px}
  .hc-hero-desc a{color:var(--brand);font-weight:600}
  .hc-hero-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

  .hc-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:var(--r-sm);font-size:13.5px;font-weight:600;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}
  .hc-btn:active{transform:translateY(1px)}
  .hc-btn:focus-visible{outline:3px solid color-mix(in oklch,var(--brand) 45%, transparent);outline-offset:2px}
  .hc-btn svg{width:15px;height:15px}
  .hc-btn.primary{background:linear-gradient(135deg, var(--brand), var(--brand-2));color:#fff;box-shadow:0 6px 18px -4px var(--brand)}
  .hc-btn.primary:hover{filter:brightness(1.06)}
  .hc-btn.ghost{border:1px solid var(--glass-border);color:var(--ink-2);background:color-mix(in oklch,var(--ink) 4%, transparent)}
  .hc-btn.ghost:hover{color:var(--ink)}
  .hc-btn.danger{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 8px 20px -8px color-mix(in oklch,var(--brand) 60%, transparent);border:none}
  .hc-btn.danger:hover{transform:translateY(-1px);box-shadow:0 12px 26px -8px color-mix(in oklch,var(--brand) 65%, transparent)}
  .hc-btn.brand{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 8px 20px -8px color-mix(in oklch,var(--brand) 60%, transparent)}
  .hc-btn.brand:hover{transform:translateY(-1px);box-shadow:0 12px 26px -8px color-mix(in oklch,var(--brand) 65%, transparent)}
  .hc-btn.orange{background:linear-gradient(135deg,#c2702a,#97551f);color:#fff;box-shadow:0 6px 18px -4px rgba(194,112,42,.35)}
  .hc-btn.orange:hover{transform:translateY(-1px);box-shadow:0 10px 24px -4px rgba(194,112,42,.45)}
  .hc-btn.blue{background:linear-gradient(135deg,#3b6fb0,#2f5a93);color:#fff;box-shadow:0 6px 18px -4px rgba(59,111,176,.35)}
  .hc-btn.blue:hover{transform:translateY(-1px);box-shadow:0 10px 24px -4px rgba(59,111,176,.45)}

  .hc-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:22px}
  .hc-stat{border-radius:14px;padding:10px 16px;background:color-mix(in oklch,var(--ink) 3%, transparent);border:1px solid var(--glass-border)}
  .hc-stat .k{font-size:11px;color:var(--ink-3);font-weight:500;margin-bottom:2px}
  .hc-stat .v{font-size:16px;font-weight:800;margin-top:0;font-variant-numeric:tabular-nums}
  .hc-stat .v small{font-size:12px;font-weight:500;color:var(--ink-3);margin-left:4px}
  .hc-stat.warn .v{color:var(--orange)}
  .hc-stat.good .v{color:var(--green)}
  /* 剩余天数高亮（金底突出；≤7天转红警示） */
  .hc-stat .v .hc-days-left{display:inline-block;font-weight:700;color:var(--brand-2);
    background:color-mix(in oklch,var(--brand) 16%, transparent);border:1px solid color-mix(in oklch,var(--brand) 34%, transparent);
    border-radius:99px;padding:1px 9px;margin-left:3px;font-size:12px;line-height:1.7;vertical-align:middle}
  .hc-stat .v .hc-days-left.soon{color:var(--red);background:color-mix(in oklch,var(--red) 14%, transparent);border-color:color-mix(in oklch,var(--red) 34%, transparent)}

  .hc-layout{display:grid;grid-template-columns:900px 300px;gap:22px;margin-top:24px;align-items:start;justify-content:center}
  .hc-side-stack{max-width:300px;overflow:hidden}
  /* .hc-card / .hc-bottom-card / .hc-stat 背景统一为 3% 墨色近乎全透明，
     磨砂与阴影由共用的 .hc-glass 类提供（同款透明 + 保留玻璃质感阴影） */
  .hc-card{border-radius:var(--r);padding:20px 22px;background:color-mix(in oklch,var(--ink) 3%, transparent);border:1px solid var(--glass-border)}
  .hc-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
  .hc-card-head h2{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
  .hc-card-head h2 svg{width:16px;height:16px;color:var(--brand)}
  .hc-card-head .more{font-size:12.5px;color:var(--brand);font-weight:600}
  .hc-card-head .more:hover{text-decoration:underline}

  .hc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
  .hc-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px 10px;border-radius:14px;background:color-mix(in oklch,var(--ink) 3%, transparent);border:1px solid var(--glass-border);color:var(--ink-2);font-size:12px;font-weight:600;cursor:pointer;transition:all .22s cubic-bezier(.4,0,.2,1);width:100%;min-height:80px}
  .hc-tile svg{width:16px;height:16px;color:var(--brand);transition:transform .22s cubic-bezier(.4,0,.2,1)}
  .hc-tile:hover{background:color-mix(in oklch,var(--brand) 10%, transparent);color:var(--ink);border-color:color-mix(in oklch,var(--brand) 30%, transparent);transform:translateY(-4px);box-shadow:0 12px 32px -8px color-mix(in oklch,var(--brand) 20%, transparent)}
  .hc-tile:hover svg{transform:scale(1.12)}
  .hc-tile .tag{font-size:10px;color:var(--ink-3)}

  /* 站点配置整卡翻牌：正面磁贴网格，背面内嵌真实配置表单（与卡片同尺寸） */
  #cfg.hc-flip{padding:0;perspective:1600px}
  .hc-flip-inner{position:relative;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1)}
  .hc-flip-front{position:relative;padding:20px 22px;backface-visibility:hidden;-webkit-backface-visibility:hidden}
  .hc-flip-back{position:absolute;inset:0;transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden;
    background:#fff;
    border:1.5px solid color-mix(in oklch,var(--gold) 45%, var(--glass-border));
    border-radius:var(--r);
    box-shadow:
      0 0 0 1px color-mix(in oklch,var(--ink) 8%, transparent) inset,
      0 24px 60px -22px rgba(20,16,12,.45),
      0 0 0 7px color-mix(in oklch,var(--gold) 7%, transparent);
    padding:16px 20px;overflow:hidden;display:flex;flex-direction:column}
  /* 四角装饰括号：科技感框 UI，强化透明面板的可视边界 */
  .hc-flip-back::after{content:"";position:absolute;inset:9px;border-radius:calc(var(--r) - 7px);pointer-events:none;z-index:0;
    background:
      linear-gradient(var(--gold),var(--gold)) left top/15px 2px no-repeat,
      linear-gradient(var(--gold),var(--gold)) left top/2px 15px no-repeat,
      linear-gradient(var(--gold),var(--gold)) right top/15px 2px no-repeat,
      linear-gradient(var(--gold),var(--gold)) right top/2px 15px no-repeat,
      linear-gradient(var(--gold),var(--gold)) left bottom/15px 2px no-repeat,
      linear-gradient(var(--gold),var(--gold)) left bottom/2px 15px no-repeat,
      linear-gradient(var(--gold),var(--gold)) right bottom/15px 2px no-repeat,
      linear-gradient(var(--gold),var(--gold)) right bottom/2px 15px no-repeat;
    opacity:.6;filter:drop-shadow(0 0 5px color-mix(in oklch,var(--gold) 45%, transparent))}
  .hc-flip.flipped .hc-flip-inner{transform:rotateY(180deg)}
  /* 翻牌门控：未翻转时背面不挡正面；翻转后正面不挡背面 */
  .hc-flip-back{pointer-events:none}
  .hc-flip.flipped .hc-flip-back{pointer-events:auto}
  .hc-flip.flipped .hc-flip-front{pointer-events:none}
  .hc-flip-front .hc-tile{min-height:104px}
  .hc-back-head{position:relative;z-index:1;display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:12px;
    border-bottom:1px solid color-mix(in oklch,var(--gold) 22%, var(--glass-border));flex:none}
  .hc-back-head h3{font-size:16px;font-weight:700;margin:0;color:var(--ink)}
  .hc-back-body{position:relative;z-index:1;flex:1;min-height:0;overflow:auto;padding-right:2px}
  .hc-back-body .hc-modal-body{margin:0;padding:0;max-width:none}
  .hc-back-body .hc-modal-note{padding:4px 0 8px}

  .hc-rows{display:flex;flex-direction:column}
  .hc-row{display:flex;align-items:center;gap:14px;padding:14px 2px;border-bottom:1px solid var(--line)}
  .hc-row:last-child{border-bottom:none;padding-bottom:2px}
  .hc-row .ic{width:38px;height:38px;border-radius:11px;flex-shrink:0;display:grid;place-items:center;background:color-mix(in oklch,var(--brand) 12%, transparent);border:1px solid color-mix(in oklch,var(--brand) 22%, transparent)}
  .hc-row .ic svg{width:18px;height:18px;color:var(--brand)}
  .hc-row .r-t{font-weight:600;font-size:13.5px}
  .hc-row .r-d{font-size:12px;color:var(--ink-3);margin-top:1px}
  .hc-row .grow{flex:1;min-width:0}
  .hc-mono{font-family:"Cascadia Code",Consolas,monospace;font-size:12px;color:var(--ink-2);background:color-mix(in oklch,var(--ink) 6%, transparent);padding:2px 8px;border-radius:6px}
  .hc-chip{font-size:11.5px;padding:2px 9px;border-radius:99px;font-weight:600}
  .hc-chip.on{background:var(--green-bg);color:var(--green)}
  .hc-chip.off{background:color-mix(in oklch,var(--ink) 8%, transparent);color:var(--ink-3)}
  .hc-chip.brand{background:color-mix(in oklch,var(--brand) 18%, transparent);color:var(--brand)}
  .hc-domain-chip{display:inline-flex;align-items:center;gap:6px;padding-right:5px}
  .hc-domain-chip .hc-dm-name{line-height:1.6}
  .hc-dm-del{appearance:none;border:none;background:transparent;color:inherit;cursor:pointer;
    font-size:15px;line-height:1;padding:0 2px;border-radius:99px;opacity:.5;transition:opacity .15s ease, background .15s ease, color .15s ease}
  .hc-dm-del:hover{opacity:1;background:color-mix(in oklch,var(--red) 22%, transparent);color:var(--red)}

  .hc-side-stack{display:flex;flex-direction:column;gap:22px}
  .hc-bottom-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:24px}
  .hc-bottom-card{padding:18px;border-radius:14px;background:color-mix(in oklch,var(--ink) 3%, transparent);border:1px solid var(--glass-border)}
  .hc-bottom-card .hc-card-head{margin-bottom:12px}
  .hc-bottom-card .hc-card-head h2{font-size:14px}
  .hc-meter{margin-top:6px}
  .hc-meter .bar{height:8px;border-radius:99px;background:color-mix(in oklch,var(--ink) 9%, transparent);overflow:hidden}
  .hc-meter .bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--brand),var(--brand-2))}
  .hc-meter .bar i.warn{background:var(--orange)}
  .hc-meter .bar i.good{background:var(--green)}
  .hc-kv{display:flex;justify-content:space-between;font-size:12.5px;color:var(--ink-2);padding:5px 0}
  .hc-kv b{color:var(--ink);font-weight:600}
  .hc-kv .green{color:var(--green);font-weight:700}

  .hc-log-list{display:flex;flex-direction:column}
  .hc-log{display:flex;gap:10px;padding:9px 0;font-size:12.5px;border-bottom:1px dashed var(--line)}
  .hc-log:last-child{border-bottom:none}
  .hc-log .hc-time{color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
  .hc-log .hc-msg{color:var(--ink-2)}
  .hc-log .hc-msg b{color:var(--ink);font-weight:600}
  .hc-log .ok{color:var(--green);font-weight:600}

  .hc-backup-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line)}
  .hc-backup-row:last-child{border-bottom:none}
  .hc-backup-row .grow{flex:1}
  .hc-backup-row .n{font-size:13px;font-weight:600}
  .hc-backup-row .d{font-size:11.5px;color:var(--ink-3)}

  .hc-notice{display:flex;align-items:center;gap:10px;background:var(--orange-bg);border:1px solid color-mix(in oklch,var(--orange) 35%, transparent);color:var(--orange);border-radius:var(--r-sm);padding:10px 14px;font-size:13px;font-weight:600;margin-bottom:18px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .hc-notice svg{width:16px;height:16px;flex-shrink:0}
  .hc-notice.red{background:var(--red-bg);border-color:color-mix(in oklch,var(--red) 35%, transparent);color:var(--red)}

  .hc-foot{border-top:1px solid var(--glass-border);margin-top:40px;padding:26px 28px;color:var(--ink-3);font-size:12.5px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;background:color-mix(in oklch,var(--ink) 3%, transparent);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}

  /* 配置弹窗：居中悬浮卡片（替代从右滑入的整页面板，避免「右边弹出」） */
  .hc-modal-mask{position:fixed;inset:0;z-index:1000;
    background:rgba(28,32,46,.42);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
    display:flex;align-items:center;justify-content:center;padding:24px;
    opacity:0;visibility:hidden;transition:opacity .26s ease, visibility 0s linear .26s}
  .hc-modal-mask.show{opacity:1;visibility:visible;transition:opacity .26s ease}
  .hc-modal{width:100%;max-width:820px;max-height:90vh;height:auto;
    background:var(--modal-bg-solid);
    border:1px solid var(--stroke);border-radius:var(--modal-radius);overflow:hidden;
    box-shadow:var(--shadow-lg);
    display:flex;flex-direction:column;
    transform:translateY(18px) scale(.98);transition:transform .32s cubic-bezier(.2,.9,.3,1.04)}
  .hc-modal-mask.show .hc-modal{transform:none}
  .hc-modal-head{display:flex;align-items:center;gap:14px;padding:14px 26px;position:sticky;top:0;z-index:2;
    background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);
    border-bottom:1px solid var(--stroke);box-shadow:0 8px 24px -20px rgba(40,48,66,.5);flex-shrink:0}
  .hc-modal-head h3{font-size:16px;font-weight:700;letter-spacing:.2px}
  .hc-modal-head .x{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--ink-3);font-size:20px;background:color-mix(in oklch,var(--ink) 6%, transparent);transition:.15s;flex-shrink:0}
  .hc-modal-head .x:hover{color:var(--ink);background:color-mix(in oklch,var(--ink) 12%, transparent)}
  /* 弹窗头部标签（如日志切换） */
  .hc-head-tab{padding:5px 14px;border-radius:99px;font-size:12.5px;font-weight:600;border:1px solid transparent;
    color:var(--ink-3);background:transparent;cursor:pointer;transition:all .18s ease;white-space:nowrap}
  .hc-head-tab:hover{color:var(--ink-2);background:color-mix(in oklch,var(--ink) 5%, transparent)}
  .hc-head-tab.on{color:var(--brand-2);background:color-mix(in oklch,var(--brand) 12%, transparent);
    border-color:color-mix(in oklch,var(--brand) 30%, transparent)}
  /* 返回控制台按钮 */
  .hc-page-back{display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:99px;
    font-size:13.5px;font-weight:600;color:var(--brand-2);background:color-mix(in oklch,var(--brand) 14%, transparent);
    border:1px solid color-mix(in oklch,var(--brand) 30%, transparent);transition:all .15s ease;flex-shrink:0}
  .hc-page-back:hover{background:color-mix(in oklch,var(--brand) 22%, transparent);transform:translateX(-2px);color:var(--brand-2)}
  .hc-page-back svg{width:15px;height:15px}
  /* 配置内容卡片：浮在渐变背景上的毛玻璃卡 */
  .hc-modal-body{flex:1;overflow:auto;max-width:860px;width:100%;margin:22px auto;padding:30px 32px 36px;
    background:var(--glass-strong);border:1px solid var(--stroke);border-radius:var(--r);box-shadow:var(--shadow)}
  .hc-modal-foot{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding:16px 0 0;
    border-top:1px solid var(--stroke-soft);background:var(--glass-strong)}
  .hc-modal-note{font-size:13px;color:var(--ink-2);padding:10px 0 4px;line-height:1.6}
  /* 美化确认弹窗（网站/数据库备份） */
  .hc-confirm{text-align:center;padding:8px 4px 0}
  .hc-confirm-ico{width:64px;height:64px;margin:6px auto 18px;border-radius:18px;display:grid;place-items:center;
    background:linear-gradient(140deg,color-mix(in oklch,var(--brand) 22%,#fff),#fff);
    border:1px solid color-mix(in oklch,var(--brand) 42%,transparent);color:var(--brand);
    box-shadow:0 12px 28px -12px color-mix(in oklch,var(--brand) 60%,transparent)}
  .hc-confirm-ico svg{width:30px;height:30px}
  .hc-confirm-title{font-size:19px;font-weight:700;color:var(--ink);margin:0 0 10px}
  .hc-confirm-desc{font-size:13.5px;color:var(--ink-2);line-height:1.7;max-width:430px;margin:0 auto 4px}
  .hc-confirm-desc b{color:var(--ink);font-weight:600}
  .hc-confirm .hc-modal-foot{justify-content:center;margin-top:22px;gap:12px}
  .hc-confirm .hc-modal-foot .hc-btn{min-width:100px;justify-content:center;padding:10px 22px;border-radius:10px}
  .hc-confirm .hc-modal-foot .hc-btn.ghost:hover{background:color-mix(in oklch,var(--ink) 8%, transparent);transform:none}
  .hc-confirm .hc-modal-foot .hc-btn.primary:hover{filter:brightness(1.08);transform:translateY(-1px)}
  .hc-confirm .hc-modal-foot .hc-btn.danger:hover{background:color-mix(in oklch,var(--red) 14%, transparent);transform:translateY(-1px)}
  .hc-confirm .hc-tip{max-width:450px;margin:16px auto 0;text-align:left}
  /* 暂停遮罩块（FTP/DB 面板被管理员暂停时） */
  .hc-suspend-block{text-align:center;padding:40px 20px}
  .hc-suspend-block .hc-suspend-icon{width:64px;height:64px;margin:0 auto 18px;border-radius:18px;display:grid;place-items:center;
    background:linear-gradient(140deg,color-mix(in oklch,var(--red) 18%,#fff),#fff);
    border:1px solid color-mix(in oklch,var(--red) 35%,transparent);color:var(--red);
    box-shadow:0 12px 28px -12px color-mix(in oklch,var(--red) 50%,transparent)}
  .hc-suspend-block .hc-suspend-icon svg{width:28px;height:28px}
  .hc-suspend-block h4{font-size:17px;font-weight:700;color:var(--ink);margin:0 0 8px}
  .hc-suspend-block p{font-size:13.5px;color:var(--ink-2);line-height:1.6;max-width:360px;margin:0 auto}
  @media (max-width:680px){.hc-modal{max-width:100%}.hc-modal-body{margin:14px;padding:22px 18px}.hc-modal-head{padding:12px 16px}}
  /* 弹窗图标徽标 + 域名副标题 + 金色提示条（对齐 preview_modal.html 重设计） */
  .hc-modal-l{display:flex;align-items:center;gap:12px;min-width:0}
  .hc-modal-ico{flex:none;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;
    background:linear-gradient(140deg,var(--gold-soft,#f3e7cf),#fff);border:1px solid #e6d8b8;color:var(--brand-2);
    box-shadow:0 3px 10px -6px rgba(176,127,47,.5)}
  .hc-modal-ico svg{width:16px;height:16px}
  .hc-modal-titles{display:flex;flex-direction:column;gap:1px;min-width:0}
  .hc-modal-head .sub{font-size:12px;color:var(--ink-3);font-weight:400;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .hc-tip{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:var(--r-sm);
    background:linear-gradient(180deg,#fff8ea,#fdf3e0);border:1px solid #f0e2c2;color:#86611f;margin-bottom:16px;font-size:13px;line-height:1.6}
  .hc-tip svg{flex:none;margin-top:2px;width:18px;height:18px}
  .hc-tip b{color:#6b4d18}
  .hc-danger-note{font-size:13px;color:var(--red);background:var(--red-bg);border:1px solid color-mix(in oklch,var(--red) 35%, transparent);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:14px;line-height:1.6}
  .hc-form{display:flex;flex-direction:column;gap:12px}
  .hc-form-alt{display:flex;flex-direction:column;gap:12px}
  /* 表单字段：对齐 preview_modal.html 金色质感（纯白底 + 金色聚焦环 + 暖白聚焦背景） */
  .hc-field{display:flex;flex-direction:column;gap:7px}
  .hc-field label{font-size:13px;color:var(--ink);font-weight:600}
  .hc-field input,.hc-field textarea,.hc-field select{width:100%;padding:12px 14px;border-radius:12px;border:1px solid #e8d9b8;background:#fffdf8;color:var(--ink);font-size:14px;font-family:inherit;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
  .hc-field input:focus,.hc-field textarea:focus,.hc-field select:focus{border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in oklch,var(--brand) 18%, transparent);background:#fffdf8}
  .hc-field textarea{resize:vertical;line-height:1.5}
  .hc-field .hc-hint{font-size:12px;color:var(--ink-3);margin-top:-2px}
  .hc-list{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto}
  .hc-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:var(--r-sm);background:color-mix(in oklch,var(--ink) 5%, transparent);border:1px solid var(--glass-border);font-size:13px}
  .hc-list-row b{font-weight:600}
  /* 自定义复选框（替换原生 checkbox）*/
  .hc-list-row:has(input[type=checkbox]){position:relative;cursor:pointer;justify-content:flex-start;gap:10px;transition:background .18s,border-color .18s,box-shadow .18s}
  .hc-list-row:has(input:checked){background:color-mix(in oklch,var(--brand-2) 10%, transparent);border-color:color-mix(in oklch,var(--brand-2) 40%, transparent)}
  .hc-list-row:has(input:checked) b{color:var(--brand-2)}
  .hc-list-row:has(input[type=checkbox]):hover{background:color-mix(in oklch,var(--ink) 8%, transparent)}
  .hc-list-row:has(input:checked):hover{background:color-mix(in oklch,var(--brand-2) 14%, transparent)}
  .hc-list-row input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
  .hc-chk{width:18px;height:18px;border-radius:5px;border:1.5px solid color-mix(in oklch,var(--ink) 25%, transparent);background:color-mix(in oklch,var(--ink) 4%, transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .18s,background .18s,box-shadow .18s}
  .hc-list-row:has(input:checked) .hc-chk{background:var(--brand-2);border-color:var(--brand-2);box-shadow:0 2px 8px color-mix(in oklch,var(--brand-2) 35%, transparent)}
  .hc-chk::after{content:'';display:block;width:5px;height:9px;border-right:2px solid transparent;border-bottom:2px solid transparent;transform:rotate(40deg);margin-top:-2px;transition:border-color .15s .03s}
  .hc-list-row:has(input:checked) .hc-chk::after{border-color:#fff}
  .hc-list-row:focus-within{box-shadow:0 0 0 3px color-mix(in oklch,var(--brand-2) 25%, transparent)}
  .hc-tag{font-size:11px;color:var(--ink-3);background:color-mix(in oklch,var(--ink) 8%, transparent);padding:2px 8px;border-radius:99px;margin-left:6px}
  .hc-spin{pointer-events:none;opacity:.6}

  /* SSL 证书管理：分栏标签页 */
  .hc-tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
  .hc-tab{padding:7px 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid var(--glass-border);color:var(--ink-2);background:color-mix(in oklch,var(--ink) 3%,transparent);transition:.15s;cursor:pointer}
  .hc-tab:hover{color:var(--ink);background:color-mix(in oklch,var(--ink) 6%,transparent)}
  .hc-tab.on{background:color-mix(in oklch,var(--brand) 18%,transparent);color:var(--ink);border-color:color-mix(in oklch,var(--brand) 40%,transparent);font-weight:600}
  /* 文件管理器大尺寸弹窗 */
  .hc-fm-actions{display:flex;gap:8px;align-items:center}
  .hc-fm-actions .x svg{width:16px;height:16px}
  .hc-file-modal{max-width:1120px;max-height:90vh;transition:max-width .25s ease,max-height .25s ease,width .25s ease}
  .hc-file-modal.maximized{max-width:98vw;max-height:97vh;width:98vw}
  .hc-file-modal.loading::after{content:'加载中...';position:absolute;inset:0;display:grid;place-items:center;font-size:14px;color:var(--ink-2);background:rgba(255,255,255,.7);z-index:10;border-radius:inherit}
  .hc-file-frame{width:100%;height:90vh;border:0;display:block;border-radius:var(--r);transition:height .25s ease}
  .hc-file-modal.maximized .hc-file-frame{height:calc(97vh - 4px)}

  /* 文件管理器：独立居中弹窗（不影响右侧配置页） */
  #hcFileModal{position:fixed;inset:0;z-index:1100;display:flex;flex-direction:row;align-items:center;justify-content:center;
    width:100%;min-width:0;border:none;box-shadow:none;transform:none;
    background:rgba(22,26,38,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
    opacity:0;visibility:hidden;transition:opacity .22s ease, visibility 0s linear .22s}
  #hcFileModal.show{opacity:1;visibility:visible;transition:opacity .22s ease}
  #hcFileModal .hc-file-modal{width:min(1120px,92vw);height:auto;max-width:1120px;max-height:90vh;
    background:var(--glass-strong);border:1px solid var(--stroke);border-radius:var(--r);
    box-shadow:var(--shadow);overflow:hidden;transform:scale(.97);
    transition:transform .22s ease, max-width .25s ease, max-height .25s ease, width .25s ease}
  #hcFileModal.show .hc-file-modal{transform:scale(1)}
  #hcFileModal .hc-file-modal.maximized{width:98vw;max-width:98vw;max-height:97vh}
  #hcFileModal .hc-file-frame{height:calc(90vh - 4px)}
  #hcFileModal .hc-file-modal.maximized .hc-file-frame{height:calc(97vh - 4px)}

  @media (max-width: 1020px){
    .hc-layout{grid-template-columns:1fr}
  }
  @media(max-width:680px){.hc-grid{grid-template-columns:repeat(3,1fr)}}
  @media (max-width: 640px){
    .hc-content{padding:18px 14px 50px}
    .hc-topbar{padding:12px 14px}
    .hc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .hc-stats{grid-template-columns:repeat(2,1fr)}
    .hc-bottom-row{grid-template-columns:1fr 1fr}
    .hc-layout{grid-template-columns:1fr}
  }
  @media (prefers-reduced-motion: reduce){
    .hc-bg::before,.hc-bg::after,.hc-bg .hc-blob{animation:none}
  }

  /* 补全缺失的工具类 */
  .mono{font-family:"Cascadia Code",Consolas,"Courier New",monospace;font-size:12px;color:var(--ink-2);background:color-mix(in oklch,var(--ink) 6%,transparent);padding:2px 8px;border-radius:6px}
  .hc-plan-bar{height:5px;border-radius:3px;overflow:hidden;background:color-mix(in oklch,var(--ink) 9%,transparent)}
  .hc-plan-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--green),var(--green));transition:width .5s ease}
  .mt-6{margin-top:6px}.mt-8{margin-top:8px}.mt-14{margin-top:14px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}
  .py-5{padding-top:5px;padding-bottom:5px}.py-6{padding-top:6px;padding-bottom:6px}.py-14{padding-top:14px;padding-bottom:14px}
  .px-12{padding-left:12px;padding-right:12px}.px-14{padding-left:14px;padding-right:14px}.px-16{padding-left:16px;padding-right:16px}
  .text-11{font-size:11px}.text-12{font-size:12px}.text-13{font-size:13px}.text-14{font-size:14px}
  .fw-400{font-weight:400}.fw-500{font-weight:500}.ml-4{margin-left:4px}
  .flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}
  .gap-6{gap:6px}.gap-8{gap:8px}.gap-12{gap:12px}
  @keyframes spin{to{transform:rotate(360deg)}}

/* ===== 文件管理器 · 金棕玻璃风 ===== */
.fm-app{display:flex;height:100vh;overflow:hidden;font-family:var(--sans);color:var(--ink);background:var(--bg-0)}
.fm-sidebar{width:240px;flex-shrink:0;display:flex;flex-direction:column;background:rgba(255,255,255,.55);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border-right:1px solid rgba(255,255,255,.7)}
.fm-back-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;color:var(--ink-2);transition:all .15s;text-decoration:none}
.fm-back-btn:hover{background:var(--gold-soft);color:var(--gold-deep)}
.fm-sidebar-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--ink)}
.fm-sidebar-title svg{color:var(--brand)}
.fm-site-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;font-size:16px;font-weight:700}
.fm-site-info{min-width:0}
.fm-site-name{font-size:13px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fm-site-path{font-size:11px;color:var(--ink-3);font-family:var(--mono)}
.fm-action-btn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border-radius:10px;font-size:13px;font-weight:500;color:var(--ink-2);background:transparent;border:none;cursor:pointer;transition:all .15s;text-align:left}
.fm-action-btn svg{color:var(--ink-3);flex-shrink:0;transition:color .15s}
.fm-action-btn:hover{background:rgba(176,127,47,.06);color:var(--ink)}
.fm-action-btn:hover svg{color:var(--brand)}
.fm-action-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 4px 14px -4px rgba(176,127,47,.4)}
.fm-action-primary svg{color:#fff}
.fm-action-primary:hover{transform:translateY(-1px);box-shadow:0 6px 18px -4px rgba(176,127,47,.5);background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff}
.fm-action-primary:hover svg{color:#fff}
.fm-sidebar-info{margin-top:auto;padding:12px 16px;border-top:1px solid var(--stroke-soft)}
.fm-info-item{display:flex;justify-content:space-between;font-size:12px;padding:4px 0}
.fm-info-label{color:var(--ink-3)}
.fm-info-value{color:var(--ink-2);font-family:var(--mono);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}
/* 主内容区 */
.fm-main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.fm-breadcrumb{display:flex;align-items:center;gap:4px;padding:10px 20px;border-bottom:1px solid var(--stroke-soft);background:rgba(255,255,255,.4);flex-wrap:wrap}
.fm-breadcrumb-item{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:12px;color:var(--ink-2);cursor:pointer;transition:all .15s}
.fm-breadcrumb-item:hover{background:var(--gold-soft);color:var(--gold-deep)}
.fm-breadcrumb-root{font-weight:600}
.fm-breadcrumb-root svg{color:var(--brand)}
.fm-search-box{display:flex;align-items:center;gap:8px;margin:12px 20px 0;padding:8px 14px;border-radius:10px;background:rgba(255,255,255,.5);border:1px solid var(--glass-border);backdrop-filter:blur(12px)}
.fm-search-input{flex:1;border:none;background:transparent;font-size:13px;color:var(--ink);outline:none;font-family:inherit}
.fm-search-input::placeholder{color:var(--ink-faint)}
.fm-search-count{font-size:11px;color:var(--ink-3);white-space:nowrap}
.fm-file-container{flex:1;overflow:auto;margin:8px 20px 0;border-radius:14px;background:rgba(255,255,255,.45);backdrop-filter:blur(18px);border:1px solid var(--glass-border)}
.fm-file-table{width:100%;border-collapse:collapse}
.fm-file-table th{position:sticky;top:0;padding:10px 14px;font-size:12px;font-weight:600;color:var(--ink-faint);text-align:left;background:rgba(255,255,255,.7);backdrop-filter:blur(12px);border-bottom:1px solid var(--stroke-soft);z-index:1;cursor:pointer;user-select:none;white-space:nowrap}
.fm-file-table th:hover{color:var(--gold-deep)}
.sort-arrow{font-size:10px;opacity:.4}
.fm-col-check{width:36px;text-align:center}
.fm-file-table td{padding:9px 14px;font-size:13px;border-bottom:1px solid rgba(32,36,44,.03)}
.fm-file-table tr{transition:background .15s}
.fm-file-table tr:hover{background:rgba(176,127,47,.04)}
.fm-empty-state{text-align:center;padding:40px 20px;color:var(--ink-3);font-size:13px}
.fm-loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--glass-border);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:8px}
.fm-statusbar{display:flex;align-items:center;justify-content:space-between;padding:8px 20px;font-size:12px;color:var(--ink-3);border-top:1px solid var(--stroke-soft);background:rgba(255,255,255,.3)}
/* 弹窗 */
.fm-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.35);backdrop-filter:blur(4px);animation:fadeIn .2s ease}
.fm-modal.hidden{display:none}
.fm-modal-container{width:90%;max-width:500px;max-height:85vh;background:var(--modal-bg-solid);border-radius:var(--modal-radius);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:slideUp .25s ease}
.fm-modal-sm{max-width:400px}
.fm-modal-wide{max-width:800px}
.fm-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--stroke-soft);background:linear-gradient(180deg,rgba(176,127,47,.04),transparent)}
.fm-modal-title{display:flex;align-items:center;gap:10px}
.fm-modal-title h3{font-size:16px;font-weight:700;margin:0}
.fm-modal-title svg{color:var(--brand)}
.fm-modal-close{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-size:18px;color:var(--ink-3);background:transparent;border:none;cursor:pointer;transition:all .15s}
.fm-modal-close:hover{background:rgba(220,38,38,.08);color:var(--red)}
.fm-modal-body{padding:20px;overflow-y:auto;flex:1}
.fm-modal-body.p-0{padding:0}
.fm-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--stroke-soft)}
/* 按钮 */
.fm-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .15s}
.fm-btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 4px 14px -4px rgba(176,127,47,.4)}
.fm-btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 18px -4px rgba(176,127,47,.5)}
.fm-btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}
.fm-btn-ghost{background:rgba(255,255,255,.6);border:1px solid var(--glass-border);color:var(--ink-2)}
.fm-btn-ghost:hover{background:rgba(255,255,255,.9)}
/* 表单 */
.fm-form-group{margin-bottom:16px}
.fm-label{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px}
.fm-input{width:100%;padding:10px 14px;border-radius:10px;border:1px solid #e8d9b8;background:#fffdf8;font-size:14px;font-family:inherit;outline:none;transition:all .15s;box-sizing:border-box}
.fm-input:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(176,127,47,.12)}
.fm-form-static{padding:10px 14px;border-radius:10px;background:rgba(0,0,0,.03);font-size:13px;color:var(--ink-2)}
.fm-error{font-size:12px;color:var(--red);margin-top:8px}
.fm-error.hidden{display:none}
/* 编辑器 */
.fm-editor-toolbar{display:flex;justify-content:space-between;padding:8px 16px;font-size:12px;color:var(--ink-3);border-bottom:1px solid var(--stroke-soft);background:rgba(0,0,0,.02)}
.fm-editor-path{font-family:var(--mono)}
.fm-editor{width:100%;min-height:400px;border:none;padding:16px;font-family:var(--mono);font-size:13px;line-height:1.7;resize:vertical;outline:none;background:transparent;color:var(--ink)}
/* 上传 */
.fm-upload-target{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3);margin-bottom:12px}
.fm-upload-zone{border:2px dashed var(--glass-border);border-radius:14px;padding:40px 20px;text-align:center;cursor:pointer;transition:all .2s}
.fm-upload-zone:hover{border-color:var(--brand);background:rgba(176,127,47,.04)}
.fm-upload-icon{color:var(--ink-faint);margin-bottom:12px}
.fm-upload-text{font-size:14px;font-weight:600;color:var(--ink);margin:0 0 6px}
.fm-upload-hint{font-size:12px;color:var(--ink-3);margin:0}
.fm-upload-list{margin-top:12px;max-height:200px;overflow-y:auto}
.fm-upload-progress{margin-top:16px}
.fm-progress-track{height:6px;border-radius:3px;background:rgba(0,0,0,.06);overflow:hidden}
.fm-progress-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--brand),var(--brand-2));transition:width .3s ease}
.fm-progress-status{font-size:12px;color:var(--ink-3);margin-top:6px;display:block}
/* 右键菜单 */
.fm-context-menu{position:fixed;z-index:2000;min-width:180px;background:#fff;border-radius:12px;box-shadow:0 16px 48px -12px rgba(0,0,0,.2);border:1px solid var(--glass-border);padding:6px;display:none;animation:slideUp .15s ease}
.fm-context-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:13px;color:var(--ink-2);cursor:pointer;transition:all .1s}
.fm-context-menu-item svg{width:15px;height:15px;color:var(--ink-3);flex-shrink:0}
.fm-context-menu-item:hover{background:rgba(176,127,47,.06);color:var(--ink)}
.fm-context-menu-item:hover svg{color:var(--brand)}
.fm-context-menu-item-danger:hover{background:rgba(220,38,38,.06);color:var(--red)}
.fm-context-menu-item-danger:hover svg{color:var(--red)}
.fm-context-menu-divider{height:1px;background:var(--stroke-soft);margin:4px 0}
.fm-ctx-shortcut{margin-left:auto;font-size:11px;color:var(--ink-faint)}
/* 批量操作栏 */
.fm-batch-bar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:16px;padding:10px 20px;border-radius:14px;background:rgba(255,255,255,.85);backdrop-filter:blur(20px);border:1px solid var(--glass-border);box-shadow:0 16px 48px -12px rgba(0,0,0,.2);z-index:100}
.fm-batch-bar.hidden{display:none}
.fm-batch-info{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink)}
.fm-batch-info svg{color:var(--brand)}
.fm-batch-actions{display:flex;gap:6px}
.fm-batch-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--glass-border);background:rgba(255,255,255,.6);color:var(--ink-2);transition:all .15s}
.fm-batch-btn:hover{background:rgba(255,255,255,.9)}
.fm-batch-btn-red{color:var(--red);border-color:rgba(220,38,38,.2)}
.fm-batch-btn-red:hover{background:rgba(220,38,38,.06)}
/* 预览 */
.fm-preview-overlay{position:fixed;inset:0;z-index:3000;background:rgba(0,0,0,.6);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center}
.fm-preview-box{position:relative;max-width:90vw;max-height:85vh;background:#fff;border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.4);overflow:auto}
.fm-preview-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-size:18px;background:rgba(255,255,255,.8);border:none;cursor:pointer;z-index:1}
.fm-preview-info{padding:12px 16px;font-size:12px;color:var(--ink-3);border-top:1px solid var(--stroke-soft)}
.fm-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fm-info-grid>div{padding:8px 12px;border-radius:8px;background:rgba(0,0,0,.02)}
.fm-info-grid dt{font-size:11px;color:var(--ink-3)}
.fm-info-grid dd{font-size:13px;font-weight:600;color:var(--ink);margin:2px 0 0}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ===== Toggle Switch ===== */
.hc-switch {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
  vertical-align: middle;
}
.hc-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}
.hc-switch-slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background: var(--glass-border, #ccc);
  border-radius: 24px;
  transition: .3s;
}
.hc-switch-slider:before {
  content: "";
  position: absolute;
  height: 18px;
  width: 18px;
  left: 3px;
  bottom: 3px;
  background: white;
  border-radius: 50%;
  transition: .3s;
  box-shadow: 0 1px 3px rgba(0,0,0,.15);
}
.hc-switch input:checked + .hc-switch-slider {
  background: var(--brand, #b07f2f);
}
.hc-switch input:checked + .hc-switch-slider:before {
  transform: translateX(20px);
}/* ============================================================
   Dashboard（admin/dashboard）— 作用域 .pg-admin-dashboard
   仅依赖 v3 全局令牌：--ink / --ink-dim / --ink-faint
                      --c-* / --c-*-bg
   不引入新配色语言，与全站 v3 设计系统一致。
   ============================================================ */
.pg-admin-dashboard{
  /* 后台页未引入 .hc-* 用户作用域，补 --ink-2/3 别名（原模板已用） */
  --ink-2:var(--ink-dim);
  --ink-3:var(--ink-faint);
  padding:4px 4px 8px;
}
.dash-wrap{max-width:1200px;margin:0 auto}

/* 顶部：标题 + 时间 + 刷新 */
.dash-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.dash-title{font-size:20px;font-weight:800;color:var(--ink);margin:0;line-height:1.2}
.dash-sub{font-size:12px;color:var(--ink-faint);margin:2px 0 0}
.dash-head-right{display:flex;align-items:center;gap:12px}
.dash-time{font-size:12px;color:var(--ink-faint)}
.dash-refresh{background:rgba(0,0,0,.04);color:var(--ink-dim)}

/* 区块标题 */
.dash-section-title{font-size:12px;font-weight:600;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.5px;margin:18px 0 10px;padding-left:4px}

/* 网格 */
.dash-grid{display:grid;gap:12px;margin-bottom:4px}
.dash-grid--4{grid-template-columns:repeat(4,1fr)}
.dash-grid--3{grid-template-columns:repeat(3,1fr)}

/* 快捷操作卡（复用 .g-card 玻璃底座） */
.quick-card{display:flex;flex-direction:column;align-items:center;text-align:center;text-decoration:none;padding:16px;transition:transform .2s,box-shadow .2s}
.quick-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px -8px rgba(40,48,66,.18)}
.quick-card__label{font-size:12px;font-weight:600;color:var(--ink);margin-top:8px}

/* 统计卡（业务概览 / 内容管理 统一规格：padding 16 / 图标 28） */
.dash-stat{display:block;text-decoration:none;padding:16px;color:var(--ink);position:relative;overflow:hidden}
.dash-stat__top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.dash-stat__label{font-size:11px;color:var(--ink-faint)}
.dash-stat__sub{opacity:.6}
.dash-stat__val{font-size:22px;font-weight:800;color:var(--ink);line-height:1.1}
.dash-stat__foot{font-size:11px;margin-top:4px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.dash-stat__delta{color:var(--ink-faint)}
.dash-stat__delta--up{color:var(--c-green)}
.dash-stat__delta--down{color:var(--c-red)}

/* 语义色图标芯片 */
.dash-ico{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dash-ico svg{width:14px;height:14px}
.dash-ico--green{background:var(--c-green-bg);color:var(--c-green)}
.dash-ico--blue{background:var(--c-blue-bg);color:var(--c-blue)}
.dash-ico--purple{background:var(--c-purple-bg);color:var(--c-purple)}
.dash-ico--teal{background:var(--c-teal-bg);color:var(--c-teal)}
.dash-ico--yellow{background:var(--c-yellow-bg);color:var(--c-yellow)}
.dash-ico--gray{background:rgba(32,36,44,.08);color:var(--ink-faint)}

/* 趋势：7 日净收入迷你折线 + 环比徽章 */
.dash-trend{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.dash-spark{width:120px;height:32px;flex-shrink:0;display:block}
.dash-mom{font-size:11px;font-weight:600;white-space:nowrap}
.dash-mom.is-up{color:var(--c-green)}
.dash-mom.is-down{color:var(--c-red)}

/* 告警条 */
.dash-alerts{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.dash-alert{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;font-size:13px}
.dash-alert svg{width:16px;height:16px;flex-shrink:0}
.dash-alert__msg{flex:1;min-width:0}
.dash-alert__act{font-size:12px;text-decoration:none;font-weight:600}
.dash-alert--warning{background:var(--c-yellow-bg);color:var(--c-orange);border:1px solid rgba(181,130,31,.25)}
.dash-alert--warning .dash-alert__act{color:var(--c-orange)}
.dash-alert--info{background:var(--c-blue-bg);color:var(--c-blue);border:1px solid rgba(59,111,176,.2)}
.dash-alert--info .dash-alert__act{color:var(--c-blue)}
.dash-alert--danger{background:var(--c-red-bg);color:var(--c-red);border:1px solid rgba(192,83,63,.25)}
.dash-alert--danger .dash-alert__act{color:var(--c-red)}

/* 最新数据面板（基于 .g-card-strong 玻璃底座） */
.dash-panel{overflow:hidden}
.dash-panel__head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(0,0,0,.06)}
.dash-panel__title{font-size:13px;font-weight:700;color:var(--ink)}
.dash-link{font-size:11px;color:var(--c-blue);text-decoration:none}
.dash-link:hover{text-decoration:underline}
.dash-row{padding:10px 16px;border-bottom:1px solid rgba(0,0,0,.03);display:flex;justify-content:space-between;align-items:center;gap:12px}
.dash-row:last-child{border-bottom:none}
.dash-row__text{flex:1;min-width:0}
.dash-comment-row{padding:10px 16px;border-bottom:1px solid rgba(0,0,0,.03)}
.dash-comment-row:last-child{border-bottom:none}
.dash-row__title{font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.dash-row__meta{font-size:11px;color:var(--ink-faint);margin-top:2px}
.dash-row__amount{font-size:13px;font-weight:700;color:var(--ink);flex-shrink:0;margin-left:12px}
.dash-comment{font-size:13px;color:var(--ink-dim);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dash-comment__meta{display:flex;justify-content:space-between;align-items:center;margin-top:6px;gap:6px}
.dash-comment__author{font-size:11px;color:var(--ink-faint)}
.dash-btns{display:flex;gap:6px;flex-shrink:0}
.dash-btn{font-size:11px;border-radius:6px;padding:2px 8px;cursor:pointer;transition:all .15s;border:1px solid transparent}
.dash-btn--reject{color:var(--c-red);background:var(--c-red-bg);border-color:rgba(192,83,63,.15)}
.dash-btn--approve{color:var(--c-green);background:var(--c-green-bg);border-color:rgba(47,143,111,.15)}
.dash-empty{padding:32px 16px;text-align:center;color:var(--ink-faint)}
.dash-empty svg{opacity:.3;margin:0 auto 6px;display:block}
.dash-empty__txt{font-size:12px;color:var(--ink-faint)}

/* 待审评论计数（JS 控制颜色） */
#pendingCommentCount.is-alert{color:var(--c-yellow)}
#pendingCommentHint{font-size:11px;color:var(--c-green);margin-top:4px}

/* 骨架屏 */
.dash-skeleton{display:none}
.is-loading .dash-skeleton{display:block}
.is-loading .dash-real{display:none}
.dash-skel{background:linear-gradient(90deg,rgba(32,36,44,.06) 25%,rgba(32,36,44,.12) 37%,rgba(32,36,44,.06) 63%);background-size:400% 100%;animation:dashShimmer 1.4s ease infinite;border-radius:8px}
@keyframes dashShimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.dash-skel--title{height:20px;width:160px;margin-bottom:18px}
.dash-skel--card{height:104px;margin-bottom:12px}
.dash-skel--line{height:12px;margin:8px 0;width:60%}
.dash-skel--row{height:56px;margin-bottom:10px}

/* 响应式 */
@media (max-width:900px){
  .dash-grid--4{grid-template-columns:repeat(2,1fr)}
  .dash-grid--3{grid-template-columns:1fr}
}
@media (max-width:560px){
  .dash-grid--4{grid-template-columns:1fr}
}

/* ===== 全局空态组件 ui-empty（评审 P1-2）=====
   统一后台所有列表/卡片的无数据呈现，替代此前 5 种手写写法。
   设计：图标 opacity .3 不抢视觉；副文案给下一步动作；操作按钮限宽避免过长。 */
.ui-empty{padding:48px 16px;text-align:center;color:var(--ink-faint)}
.ui-empty__icon{color:var(--ink-3);opacity:.3;margin-bottom:8px;line-height:0}
.ui-empty__icon svg{display:block;margin:0 auto}
.ui-empty__title{font-size:14px;color:var(--ink-dim);margin:0 0 4px}
.ui-empty__desc{font-size:12px;color:var(--ink-faint);margin:0 0 16px}
.ui-empty__action{font-size:13px;max-width:220px;margin:0 auto}
.ui-empty--sm{padding:24px 16px}
.ui-empty--sm .ui-empty__title{font-size:13px}
.ui-empty--sm .ui-empty__desc{font-size:11px;margin-bottom:12px}
/* 表格态：去掉 td 内边距，交由 .ui-empty 自己控制 */
.ui-empty-row>td{padding:0!important;border-bottom:none!important}
.ui-empty-row:hover>td{background:transparent!important}

/* ===== 视觉一致性组件层（评审 P1-4）=====
   实测：表头 15 种、卡片 12 种、按钮 19 种计算样式组合，同一元素跨页长得不一样。
   根因是没有组件层约束，每页手写 Tailwind 原子类拼装。
   策略：定义权威组件类，逐步迁移；用 !important 保证不被既有原子类覆盖（迁移期必要）。
   令牌全部复用已有 --ink-* / --c-*，不新造颜色。 */

/* --- 表头 --- */
.ui-th{background:var(--bg-0);color:var(--ink-3);font-size:12px;font-weight:600;
  padding:12px 20px;text-align:left;border-bottom:1px solid rgba(32,36,44,.08);white-space:nowrap}
.ui-th--r{text-align:right}
.ui-th--c{text-align:center}
.ui-th--sort{cursor:pointer}

/* --- 卡片 --- */
.ui-card{background:rgba(255,255,255,.72);border:1px solid rgba(32,36,44,.06);
  border-radius:16px;padding:16px 20px}

/* --- 按钮（统一四档：主/次/幽灵/危险）--- */
.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-size:12px;font-weight:500;line-height:1;padding:7px 14px;border-radius:8px;
  border:1px solid transparent;cursor:pointer;white-space:nowrap;
  transition:background-color .15s ease,border-color .15s ease,color .15s ease;
  text-decoration:none;font-family:inherit}
.ui-btn:disabled{opacity:.5;cursor:not-allowed}
.ui-btn--primary{background:var(--c-blue);color:#fff;border-color:var(--c-blue)}
.ui-btn--primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}
.ui-btn--ghost{background:rgba(255,255,255,.6);color:var(--ink-2);border-color:rgba(32,36,44,.1)}
.ui-btn--ghost:hover:not(:disabled){background:rgba(255,255,255,.9);border-color:rgba(32,36,44,.18)}
.ui-btn--danger{background:var(--c-red);color:#fff;border-color:var(--c-red)}
.ui-btn--danger:hover:not(:disabled){filter:brightness(.94)}
.ui-btn--sm{font-size:11px;padding:4px 10px;border-radius:6px}
.ui-btn--secondary{background:rgba(32,36,44,.06);color:var(--ink-2);border-color:rgba(32,36,44,.12)}
.ui-btn--secondary:hover:not(:disabled){background:rgba(32,36,44,.1);border-color:rgba(32,36,44,.2)}
.ui-btn--success{background:var(--c-green);color:#fff;border-color:var(--c-green)}
.ui-btn--success:hover:not(:disabled){filter:brightness(.94)}
.ui-btn--warning{background:var(--c-yellow);color:#3a2c05;border-color:var(--c-yellow)}
.ui-btn--warning:hover:not(:disabled){filter:brightness(.94)}
.ui-btn--info{background:var(--c-blue);color:#fff;border-color:var(--c-blue)}
.ui-btn--info:hover:not(:disabled){background:#2563eb;border-color:#2563eb}

/* 迁移期兼容：历史 .g-btn / .tk-btn 逐步替换，先对齐基础盒模型避免视觉跳变 */
.g-btn,.tk-btn{box-sizing:border-box}
/* g-btn 盒模型对齐 ui-btn：消灭圆角(10->8)/内距(6->7)/gap(4->6) 差异，
   使模板手写按钮与 UI.confirm() 生成的 ui-btn--* 形状完全一致。
   仅收敛静态形状，颜色语义与 hover 交互各自保留。 */
.g-btn{padding:7px 14px;border-radius:8px;gap:6px;line-height:1;white-space:nowrap;font-family:inherit}

/* ===== 组件层·补齐（评审缺口：ui-input / ui-badge / ui-alert / ui-tab）=====
   实测四族在后台高度发散：输入 49 种/185 次/29 文件、徽章 65 种/111 次/33 文件、
   提示 11 种/25 次、标签页 7 种/28 次（g-tab / sm-tab / pe-tab 三套并存）。
   本阶段纯追加、零模板改动 —— 对现有页面零影响，仅为 Phase B 模板迁移提供权威定义。
   令牌与 ui-btn / ui-card / ui-th 同源，不新造颜色。 */

/* --- 输入框（input / select / textarea 通用）--- */
.ui-input{display:block;width:100%;box-sizing:border-box;
  padding:8px 12px;font-size:13px;line-height:1.5;color:var(--ink);
  background:rgba(255,255,255,.72);border:1px solid rgba(32,36,44,.12);
  border-radius:var(--radius-sm);font-family:inherit;
  transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}
.ui-input::placeholder{color:var(--ink-faint)}
.ui-input:hover:not(:disabled){border-color:rgba(32,36,44,.2)}
.ui-input:focus{outline:none;background:#fff;border-color:var(--gold);
  box-shadow:0 0 0 3px var(--gold-soft)}
.ui-input:disabled{background:rgba(32,36,44,.04);color:var(--ink-faint);cursor:not-allowed}
textarea.ui-input{min-height:88px;resize:vertical}
select.ui-input{cursor:pointer;padding-right:30px}

/* --- 徽章（状态标签）--- */
.ui-badge{display:inline-flex;align-items:center;gap:4px;
  padding:2px 8px;font-size:11px;font-weight:600;line-height:1.6;
  border-radius:999px;white-space:nowrap;
  background:rgba(32,36,44,.06);color:var(--ink-dim)}
.ui-badge--green{background:var(--c-green-bg);color:var(--c-green)}
.ui-badge--red{background:var(--c-red-bg);color:var(--c-red)}
.ui-badge--blue{background:var(--c-blue-bg);color:var(--c-blue)}
.ui-badge--yellow{background:var(--c-yellow-bg);color:var(--c-yellow)}

/* --- 标签页（收敛 g-tab / sm-tab / pe-tab 三套并存）--- */
.ui-tab{display:flex;align-items:center;gap:2px;border-bottom:1px solid rgba(32,36,44,.08)}
.ui-tab__item{display:inline-flex;align-items:center;gap:6px;
  padding:9px 14px;margin-bottom:-1px;font-size:13px;font-weight:500;
  color:var(--ink-dim);text-decoration:none;white-space:nowrap;cursor:pointer;
  background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;
  transition:color .15s ease,border-color .15s ease,background-color .15s ease}
.ui-tab__item:hover{color:var(--ink);background:rgba(32,36,44,.03)}
.ui-tab__item.is-active,.ui-tab__item[aria-selected="true"],.ui-tab__item.active{
  color:var(--gold-deep);border-bottom-color:var(--gold);font-weight:600}
.ui-tab__item:disabled,.ui-tab__item.is-disabled{opacity:.45;cursor:not-allowed}

/* ============================================================
   用户端 auth-* 补齐  2026-09-07
   背景：login / register 的 auth 样式定义在 .pg-user-login /
        .pg-user-register 作用域下（pg-* 是 PHP 运行时动态输出的
        body class，属活类，勿删）。forgot_password 页 body 为
        pg-user-forgot_password，命中不到那些作用域，且其自身用的
        auth-page / auth-card / auth-header / auth-logo / auth-form /
        auth-submit / auth-footer 全无定义 → 整页布局裸奔。
   做法：补**全局**定义，视觉对齐 login 页。
        因 .pg-user-login .auth-card 等选择器更具体（优先级更高），
        login / register / admin-login 沿用原有样式，不受影响。
   ============================================================ */
.auth-page{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:clamp(24px,4vw,40px) clamp(16px,4vw,40px)}
.auth-box{width:100%;max-width:420px}
.auth-card{border-radius:22px;padding:clamp(28px,4vw,36px);background:rgba(255,255,255,.45);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow)}
.auth-card h1{font-family:var(--serif);font-size:24px;font-weight:700;color:#1a1e26;margin-bottom:6px}
.auth-card p{font-size:clamp(14.5px,1.5vw,17px);line-height:1.95;color:var(--ink-dim);margin-bottom:24px}
.auth-card label{display:block;font-size:13px;font-weight:500;color:var(--ink-dim);margin-bottom:6px}
.auth-card input[type=text],.auth-card input[type=password],.auth-card input[type=email]{width:100%;padding:11px 14px;border-radius:10px;font-size:14px;font-family:var(--sans);background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.9);color:var(--ink);outline:none;transition:border-color .25s}
.auth-card input:focus{border-color:rgba(176,127,47,.5)}
.auth-card .field{margin-bottom:16px}
.auth-header{margin-bottom:24px}
.auth-logo{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#c99a4d,#a9742a);display:grid;place-items:center;color:#fff;font-weight:700;font-family:var(--serif);margin-bottom:14px}
.auth-form{margin:0}
.auth-submit{width:100%;padding:12px;border:none;border-radius:12px;background:linear-gradient(135deg,#c99a4d,#a9742a);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 6px 20px -6px rgba(143,100,32,.5);font-family:var(--sans)}
.auth-submit:hover{transform:translateY(-1px);box-shadow:0 10px 28px -8px rgba(143,100,32,.6)}
.auth-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}
.auth-footer{text-align:center;margin-top:20px;font-size:13px;color:var(--ink-faint);display:flex;align-items:center;justify-content:center;gap:10px}
.auth-footer a{color:var(--gold-deep);text-decoration:none;font-weight:500}
.auth-footer a:hover{text-decoration:underline}

/* ============================================================
   用户端 Tailwind 兼容层  2026-09-07
   站点从未加载 Tailwind，以下为模板实际使用且零定义的工具类。
   渐变用 Tailwind 的 --tw-gradient-* 变量机制实现。
   ============================================================ */
.min-h-screen{min-height:100vh}
.max-h-48{max-height:12rem}
.left-4{left:1rem}
.mt-0{margin-top:0}
.translate-y-1{--tw-translate-y:0.25rem;transform:translate(var(--tw-translate-x,0),var(--tw-translate-y))}
.border-dashed{border-style:dashed}
.c-gray-400{color:rgba(32,36,44,.45)}
.text-blue-800{color:#1e40af}
.text-yellow-800{color:#854d0e}
.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops,var(--gold),var(--gold-deep)))}
.from-primary-500{--tw-gradient-from:var(--gold);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(176,127,47,0))}
.to-primary-700{--tw-gradient-to:var(--gold-deep)}

/* ===== admin/login 页头页尾 (2026-09-08 加，可整段删除回滚) ===== */
.pg-admin-login{flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0}
.pg-admin-login .al-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;
    padding:13px clamp(16px,4vw,40px);border-bottom:1px solid rgba(255,255,255,.55)
}
.pg-admin-login .al-head-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#1a1e26}
.pg-admin-login .al-head-mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
    background:linear-gradient(140deg,var(--gold),var(--gold-deep));color:#fff;font-weight:700;
    font-family:var(--serif);font-size:15px;box-shadow:0 6px 16px -6px rgba(176,127,47,.5)
}
.pg-admin-login .al-head-brand img{height:34px;width:auto;border-radius:8px;display:block}
.pg-admin-login .al-head-name{font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:.01em}
.pg-admin-login .al-head-nav{display:flex;align-items:center;gap:4px}
.pg-admin-login .al-head-nav a{padding:7px 12px;border-radius:9px;font-size:13.5px;color:var(--ink-dim);
    text-decoration:none;transition:background .2s,color .2s;white-space:nowrap
}
.pg-admin-login .al-head-nav a:hover{background:rgba(176,127,47,.10);color:var(--brand)}
.pg-admin-login .al-main{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:28px 24px}
.pg-admin-login .al-foot{flex:none;padding:15px clamp(16px,4vw,40px);border-top:1px solid rgba(255,255,255,.55)}
.pg-admin-login .al-foot-inner{display:flex;align-items:center;justify-content:center;gap:8px 18px;
    flex-wrap:wrap;font-size:12.5px;color:var(--ink-faint)
}
.pg-admin-login .al-foot-inner a{color:var(--ink-faint);text-decoration:none;transition:color .2s}
.pg-admin-login .al-foot-inner a:hover{color:var(--brand)}
@media (max-width:640px){
    .pg-admin-login .al-head-nav a[data-opt]{display:none}
    .pg-admin-login .al-head-name{font-size:15px}
    .pg-admin-login .al-head{padding:11px 16px}
}


