:root{
  --bg:#e8ebe6;--bg-soft:#f4f6f2;--surface:#fff;--surface-soft:#f9fbf8;--ink:#0e0f0c;--muted:#667066;--muted-2:#8a9489;
  --line:#dce2d9;--line-strong:#cbd4c9;--green:#9bea63;--green-strong:#246b2a;--blue:#2787e8;--purple:#6845e8;--coral:#e66a5b;--amber:#c98217;
  --r-sm:8px;--r:12px;--r-lg:16px;--shadow:0 14px 34px rgba(31,48,30,.08);--max:1240px;--sidebar:228px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:Inter,"Manrope","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Noto Sans SC",sans-serif;background:radial-gradient(900px 520px at 100% 0,rgba(228,217,248,.28),transparent 62%),var(--bg);color:var(--ink);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased;min-height:100vh}
/* Lucide replaces these placeholders at runtime. Reserve the final box first so text never reflows. */
[data-lucide]{display:inline-block;width:17px;height:17px;flex:0 0 17px;vertical-align:middle;line-height:1}
[data-lucide].spin{display:inline-block}
.vip-dot [data-lucide],.toast-close [data-lucide]{width:14px;height:14px;flex-basis:14px}
.nav-links a [data-lucide]{width:15px;height:15px;flex-basis:15px}
.app-nav a [data-lucide]{width:17px;height:17px;flex-basis:17px}
.mobile-app-nav a [data-lucide]{width:18px;height:18px;flex-basis:18px}
.brand-mark-default [data-lucide]{width:20px;height:20px;flex-basis:20px}
.admin-title-icon [data-lucide]{width:20px;height:20px;flex-basis:20px}
.account-card-title>span [data-lucide]{width:18px;height:18px;flex-basis:18px}
.vip-badge [data-lucide],.free-badge [data-lucide]{width:11px;height:11px;flex-basis:11px}
.resource-actions .btn [data-lucide],.account-card .btn [data-lucide],.admin-page .btn [data-lucide]{width:15px;height:15px;flex-basis:15px}
body:has(.app-main){background:var(--bg-soft)}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}svg{width:17px;height:17px;stroke-width:2;vertical-align:middle}::selection{background:rgba(155,234,99,.5)}
.wrap{width:min(var(--max),calc(100% - 40px));margin:0 auto}.narrow{max-width:760px}.center{text-align:center}.left{text-align:left}.mb0{margin-bottom:0}.mt24{margin-top:24px}.dim{color:var(--muted-2);font-size:13px}.mut{color:var(--muted)}
h1,h2,h3,h4{margin:0 0 12px;line-height:1.24;letter-spacing:-.025em}h1{font-size:clamp(38px,4.7vw,62px);font-weight:850}h2{font-size:clamp(28px,3.2vw,40px);font-weight:800}h3{font-size:18px;font-weight:750}p{margin:0 0 12px}
.grid{display:grid;gap:20px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:0 7px 22px rgba(31,48,30,.04)}

/* global navigation */
.nav{position:sticky;top:12px;z-index:50;width:min(var(--max),calc(100% - 40px));margin:12px auto 0;background:rgba(255,255,255,.93);border:1px solid rgba(203,212,201,.9);border-radius:14px;box-shadow:0 8px 22px rgba(31,48,30,.06)}
.nav-in{height:64px;padding:0 14px 0 18px;display:flex;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;white-space:nowrap}.brand-mark{width:32px;height:32px;display:grid;place-items:center;background:var(--green);color:var(--green-strong);border-radius:50%;font-weight:900;box-shadow:inset 0 0 0 1px rgba(36,107,42,.14)}
.brand-text{letter-spacing:.01em}.nav-links{display:flex;align-items:center;gap:3px;margin-left:auto}.nav-links a{padding:8px 11px;border-radius:9px;color:var(--muted);font-size:14px;white-space:nowrap}.nav-links a:hover,.nav-links a.on{background:#eef6ea;color:var(--green-strong)}.nav-links a.ghost{border:1px solid var(--line);color:var(--ink);margin-left:7px}.nav-links a.cta{background:var(--green);color:var(--ink);font-weight:750;margin-left:3px}.vip-dot{font-style:normal;font-size:10px;color:var(--green-strong);background:#e1f7d7;padding:2px 5px;border-radius:5px;margin-left:4px}.nav-toggle{display:none;margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:9px;width:42px;height:40px;align-items:center;justify-content:center}
.hero{padding:82px 0 54px}.hero-grid{display:grid;grid-template-columns:minmax(0,.86fr) minmax(520px,1.14fr);gap:54px;align-items:center}.hero-copy{padding:12px 0}.eyebrow,.section-label{display:inline-flex;align-items:center;gap:9px;color:var(--green-strong);font-weight:750;font-size:13px;letter-spacing:.02em;margin-bottom:18px}.eyebrow span{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 0 4px rgba(155,234,99,.25)}.hero h1{max-width:620px;margin-bottom:22px}.hero h1 span{display:block;color:var(--green-strong)}.lead{font-size:17px;line-height:1.85;color:var(--muted);max-width:580px;margin-bottom:28px}.hero-btns{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.hero-note{display:flex;align-items:center;gap:7px;margin-top:18px;color:var(--muted-2);font-size:12.5px}.hero-note svg{width:15px;color:var(--green-strong)}
.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:#fff;color:var(--ink);font-weight:650;font-size:14px;transition:.18s}.btn:hover{border-color:#aab7a7;transform:translateY(-1px);box-shadow:0 5px 12px rgba(31,48,30,.08)}.btn-pri{background:var(--green);border-color:var(--green);color:#173219}.btn-pri:hover{background:#aaf079;border-color:#aaf079}.btn-lg{min-height:48px;padding:12px 20px;font-size:15px}.btn-sm{min-height:36px;padding:7px 11px;font-size:13px}.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;color:var(--muted);padding:0}.icon-btn:hover{border-color:#b6c5b4;color:var(--ink);background:var(--surface-soft)}
.preview-shell{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:var(--shadow);min-height:492px}.preview-top{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.preview-kicker,.page-kicker{font-size:12px;color:var(--muted-2);font-weight:700;display:block;margin-bottom:5px}.preview-top h2{font-size:23px;margin:0}.preview-filters{display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding:18px 0 14px;margin-bottom:14px}.preview-filters span{font-size:12px;color:var(--muted);padding:5px 9px;border-radius:7px}.preview-filters span.active{background:#eef6ea;color:var(--green-strong);font-weight:700}.preview-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.preview-kpis>div{background:var(--surface-soft);border:1px solid #edf1eb;border-radius:10px;padding:12px 10px;min-width:0}.preview-kpis small,.preview-kpis span{display:block;color:var(--muted-2);font-size:11px;white-space:nowrap}.preview-kpis b{display:inline-block;font-size:25px;line-height:1.3;margin:5px 3px 1px 0;font-variant-numeric:tabular-nums}.preview-kpis .up{color:var(--green-strong);font-weight:700}.preview-kpis .risk{color:var(--coral);font-weight:700}.preview-analysis{display:grid;grid-template-columns:1fr 138px;gap:16px;align-items:center;border-bottom:1px solid var(--line);padding:18px 0}.chart-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}.chart-head b{font-size:13px}.chart-head span{color:var(--muted-2);font-size:11px}.chart-bars{height:75px;display:flex;align-items:flex-end;gap:10px;padding:0 4px;border-bottom:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 24px,#edf1eb 25px)}.chart-bars i{display:block;flex:1;max-width:28px;background:#cdecb9;border-radius:5px 5px 0 0}.chart-bars i.strong{background:var(--green)}.chart-axis{display:flex;justify-content:space-between;color:var(--muted-2);font-size:10px;padding-top:5px}.route-progress{text-align:center;border-left:1px solid var(--line);padding-left:14px}.ring{width:86px;height:86px;margin:0 auto 7px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) 42%,#e9eee7 0)}.ring:before{content:"";position:absolute;width:66px;height:66px;background:#fff;border-radius:50%}.ring span{position:relative;z-index:1}.ring b{display:block;font-size:18px;line-height:1}.ring small{display:block;color:var(--muted-2);font-size:9px;margin-top:3px}.route-progress p{font-size:11px;color:var(--muted);margin:0}.preview-list{padding-top:4px}.preview-row{display:grid;grid-template-columns:30px minmax(120px,1fr) 72px 62px 70px;align-items:center;gap:8px;padding:11px 0;border-bottom:1px solid #edf1eb;font-size:12px}.preview-row:last-child{border-bottom:0}.rank{font-size:11px;color:var(--muted-2);font-variant-numeric:tabular-nums}.rank.top{color:var(--green-strong);font-weight:800}.company{min-width:0}.company b,.company small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.company small{color:var(--muted-2);font-size:10.5px;margin-top:2px}.reason{justify-self:start;background:#edf5fb;color:#2872af;border-radius:5px;padding:3px 5px;font-size:10px}.score{color:var(--purple);font-weight:800;font-variant-numeric:tabular-nums}.score small{font-size:9px;color:var(--muted-2);font-weight:500}.status{justify-self:end;color:var(--muted);font-size:10px}.status.done{color:var(--green-strong);display:inline-flex;gap:3px;align-items:center}.status.done svg{width:12px;height:12px}.preview-toast,.preview-alert{position:absolute;right:-17px;display:flex;gap:9px;align-items:flex-start;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;padding:10px 12px;width:178px;font-size:11px}.preview-toast{top:132px}.preview-alert{bottom:40px;right:-22px}.preview-toast>svg{color:var(--purple)}.preview-alert>svg{color:var(--coral)}.preview-toast b,.preview-toast small,.preview-alert b,.preview-alert small{display:block}.preview-toast small,.preview-alert small{color:var(--muted-2);font-size:10px;margin-top:2px}
.stats-band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.6)}.stats{display:grid;grid-template-columns:repeat(4,1fr);padding:17px 0}.stat{display:flex;align-items:center;gap:12px;padding:8px 20px;border-right:1px solid var(--line)}.stat:last-child{border-right:0}.stat>svg{color:var(--green-strong);width:20px;height:20px}.stat b,.stat small{display:block}.stat b{font-size:25px;line-height:1.1;font-variant-numeric:tabular-nums}.stat small{font-size:12px;color:var(--muted-2);margin-top:4px}
.sec{padding:92px 0}.section-head{max-width:700px;margin-bottom:34px}.section-head>span,.section-label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--green-strong);font-weight:800}.section-head h2{margin-top:8px}.section-head p{color:var(--muted);font-size:15px;max-width:620px}.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.process-step{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 20px;min-height:230px}.process-step>span{display:block;color:var(--muted-2);font-size:12px;font-weight:800;margin-bottom:28px}.process-step>svg{width:24px;height:24px;color:var(--green-strong);margin-bottom:18px}.process-step h3{font-size:17px}.process-step p{font-size:13px;color:var(--muted);margin:0}.process-sec{padding-bottom:82px}.accuracy-sec{background:#f4f6f1;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.accuracy-grid{display:grid;grid-template-columns:.84fr 1.16fr;gap:76px;align-items:center}.section-head.left{margin:0}.text-link{display:inline-flex;align-items:center;gap:6px;color:var(--blue);font-weight:700;font-size:14px;margin-top:10px}.text-link svg{width:15px}.logic-panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:8px 22px 16px;box-shadow:0 8px 22px rgba(31,48,30,.04)}.logic-row{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid #edf1eb}.logic-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:9px}.logic-icon svg{width:17px}.logic-icon.green{color:var(--green-strong);background:#eef8e9}.logic-icon.blue{color:var(--blue);background:#edf5fb}.logic-icon.purple{color:var(--purple);background:#f0edff}.logic-icon.amber{color:var(--amber);background:#fff5e5}.logic-row span:nth-child(2){flex:1;min-width:0}.logic-row b,.logic-row small{display:block}.logic-row b{font-size:13px}.logic-row small{font-size:11px;color:var(--muted-2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logic-row strong{font-size:14px;color:var(--green-strong);font-variant-numeric:tabular-nums}.logic-total{display:flex;align-items:end;justify-content:space-between;padding-top:14px}.logic-total span{font-size:12px;color:var(--muted)}.logic-total b{color:var(--purple);font-size:32px;line-height:1}.logic-total small{font-size:12px;color:var(--muted-2)}
.coverage-sec{padding-top:82px}.coverage-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:15px}.coverage-panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:21px}.panel-title{display:flex;justify-content:space-between;gap:10px;margin-bottom:20px}.panel-title b{font-size:15px}.panel-title span{font-size:11px;color:var(--muted-2)}.hbar{display:grid;grid-template-columns:1.15fr 1fr 34px;gap:10px;align-items:center;margin:15px 0}.hbar span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hbar>i{height:7px;border-radius:99px;background:#edf1eb;overflow:hidden}.hbar>i b{display:block;height:100%;background:var(--blue);border-radius:99px}.hbar em{font-style:normal;color:var(--muted-2);font-size:10px;text-align:right}.city-cloud{display:flex;align-items:center;justify-content:center;gap:12px 14px;flex-wrap:wrap;min-height:148px}.city-cloud span{font-size:13px;color:#436347;background:#f1f8ec;padding:7px 10px;border-radius:7px}.city-cloud span.xl{font-size:20px;color:var(--green-strong);font-weight:800;background:#e3f7d8}.city-cloud span.lg{font-size:17px;color:#317a43}.city-cloud span.md{font-size:15px;color:#3f6fba;background:#edf5fb}.city-cloud small{display:block;font-size:9px;color:var(--muted-2);text-align:center;margin-top:1px}.donut-wrap{display:flex;align-items:center;gap:22px;min-height:148px}.donut{width:118px;height:118px;position:relative;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green-strong) 0 31%,var(--blue) 31% 73%,var(--purple) 73% 89%,#cbd7c7 89%)}.donut:before{content:"";position:absolute;width:76px;height:76px;background:#fff;border-radius:50%}.donut span{position:relative;z-index:1;text-align:center;font-size:20px;font-weight:800}.donut small{display:block;font-size:10px;color:var(--muted-2);font-weight:500}.donut-wrap ul{padding:0;margin:0;list-style:none;font-size:11px;color:var(--muted);line-height:2}.donut-wrap li i{display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:5px}.c1{background:var(--green-strong)}.c2{background:var(--blue)}.c3{background:var(--purple)}.c4{background:#cbd7c7}
.resource-sec{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.resource-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:80px;align-items:center}.resource-copy h2{max-width:480px}.resource-copy p{color:var(--muted);max-width:480px;margin-bottom:24px}.resource-list{border-left:1px solid var(--line);padding-left:32px}.resource-list>div{display:flex;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid #edf1eb}.resource-list>div:last-child{border-bottom:0}.resource-list>div>svg{color:var(--blue);width:22px;height:22px}.resource-list span{flex:1}.resource-list b,.resource-list small{display:block}.resource-list b{font-size:14px}.resource-list small{font-size:12px;color:var(--muted-2);margin-top:2px}.resource-list em{font-size:11px;color:var(--muted-2);font-style:normal}.pricing-tease{padding-top:84px}.plan-row{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);align-items:center;gap:22px;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px}.plan-summary{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:15px}.plan-summary>span{background:#e5f7dd;color:var(--green-strong);font-size:11px;font-weight:800;padding:4px 7px;border-radius:5px}.plan-summary b,.plan-summary small{display:block}.plan-summary b{font-size:16px}.plan-summary small{color:var(--muted-2);font-size:11px;margin-top:2px}.plan-summary strong{font-size:25px;color:var(--purple);white-space:nowrap}.plan-summary strong small{display:inline;font-size:11px}.plan-points{display:flex;gap:10px 20px;flex-wrap:wrap}.plan-points span{font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.plan-points svg{width:14px;color:var(--green-strong)}.final-cta{padding:70px 0 90px}.final-cta-in{background:#dff4d4;border:1px solid #c9e7be;border-radius:18px;padding:34px 40px;display:flex;align-items:center;justify-content:space-between;gap:22px}.final-cta-in>div>span{color:var(--green-strong);font-size:12px;font-weight:800}.final-cta-in h2{font-size:31px;margin:7px 0}.final-cta-in p{color:#537058;margin:0}

/* product workspace */
.app-side{position:fixed;z-index:40;left:0;top:0;bottom:0;width:var(--sidebar);background:#fff;border-right:1px solid var(--line);padding:25px 16px 18px;display:flex;flex-direction:column}.app-brand{display:flex;align-items:center;gap:10px;padding:0 9px 28px}.app-brand .brand-mark{width:31px;height:31px;font-size:15px}.app-brand b,.app-brand small{display:block}.app-brand b{font-size:14px}.app-brand small{font-size:10px;color:var(--muted-2);margin-top:1px}.app-nav{display:flex;flex-direction:column;gap:4px}.app-nav a{display:flex;align-items:center;gap:11px;min-height:43px;padding:0 12px;border-radius:9px;color:var(--muted);font-size:13.5px;position:relative}.app-nav a:hover{background:#f2f6f1;color:var(--ink)}.app-nav a.on{background:#eef8e9;color:var(--green-strong);font-weight:750}.app-nav a.on:before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:3px;background:var(--green-strong);border-radius:0 3px 3px 0}.app-nav a svg{width:17px}.side-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:15px}.side-user{display:flex;align-items:center;gap:9px}.side-user>span:nth-child(2){flex:1;min-width:0}.side-user b,.side-user small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-user b{font-size:12px}.side-user small{color:var(--muted-2);font-size:10px;margin-top:2px}.side-user>a{color:var(--muted-2)}.user-avatar{width:30px;height:30px;border-radius:50%;background:#edf5fb;color:var(--blue);display:grid;place-items:center;font-size:12px;font-weight:800}.mobile-app-nav,.mobile-app-head{display:none}.app-main{margin-left:var(--sidebar);min-height:100vh;padding:35px 42px 70px;max-width:calc(100% - var(--sidebar))}.route-header{max-width:1390px;margin:0 auto}.route-title{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:26px}.route-title h1{font-size:34px;margin:4px 0 7px}.route-title p{font-size:12px;color:var(--muted-2);margin:0}.header-actions{display:flex;gap:9px;align-items:center}.route-notice{max-width:1390px;margin:0 auto 20px;display:flex;gap:9px;align-items:center}.alert{padding:13px 15px;border-radius:var(--r);border:1px solid var(--line);font-size:13px}.alert.info{background:#edf5fb;border-color:#cfe3f5;color:#2d638f}.alert.warn{background:#fff5e6;border-color:#f2d9aa;color:#875d1d}.alert.err{background:#fff0ee;border-color:#f1c4bd;color:#9a4439}.alert.ok{background:#edf8e9;border-color:#cce5c1;color:#2d6d37}.route-notice a{font-weight:750;color:var(--blue);margin-left:6px}.route-kpis{max-width:1390px;margin:0 auto 20px;display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.route-kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 17px;min-height:126px;position:relative}.route-kpi>span{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.route-kpi>span svg{width:16px;color:var(--blue)}.route-kpi>div:nth-child(2){display:flex;align-items:end;gap:8px;margin-top:13px}.route-kpi b{font-size:31px;line-height:1;font-variant-numeric:tabular-nums}.route-kpi em{font-style:normal;color:var(--muted-2);font-size:11px;padding-bottom:2px}.route-kpi em.positive{color:var(--green-strong)}.route-kpi em.risk{color:var(--coral)}.risk-kpi>span svg{color:var(--coral)}.mini-bars{display:flex;gap:4px;align-items:end;height:19px;position:absolute;right:15px;bottom:18px}.mini-bars i{display:block;width:5px;border-radius:3px;background:#dbeed2}.mini-bars i:nth-child(1){height:7px}.mini-bars i:nth-child(2){height:11px}.mini-bars i:nth-child(3){height:9px}.mini-bars i:nth-child(4){height:15px}.mini-bars i:nth-child(5){height:19px;background:var(--green)}.mini-bars.purple i{background:#e4defc}.mini-bars.purple i:nth-child(5){background:var(--purple)}.mini-bars.green i{background:#dbeed2}.mini-bars.red i{background:#f4d9d5}.mini-bars.red i:nth-child(5){background:var(--coral)}
.route-toolbar{max-width:1390px;margin:0 auto 12px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:13px}.route-toolbar form{display:flex;align-items:center;gap:9px;flex-wrap:wrap;position:relative}.search-field{height:40px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--line);border-radius:8px;min-width:250px;flex:1}.search-field svg{width:16px;color:var(--muted-2)}.search-field input{border:0;outline:0;width:100%;color:var(--ink);background:transparent;font-size:13px}.search-field input::placeholder{color:#9da69c}.filter-toggle{position:relative}.filter-count{font-size:10px;color:var(--green-strong);background:#e5f7dd;padding:2px 5px;border-radius:4px}.sort-field{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.sort-field select,.filter-panel select,.filter-panel input{height:38px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:0 9px;outline:0;font-size:12px}.sort-field select:focus,.filter-panel select:focus,.filter-panel input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(39,135,232,.12)}.filter-panel{display:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:16px 3px 3px;margin-top:5px;border-top:1px solid var(--line);width:100%}.filter-panel.open{display:grid}.filter-panel label>span,.profile-filter>span{display:block;font-size:11px;color:var(--muted-2);margin-bottom:5px}.filter-panel label select,.filter-panel label input{width:100%}.profile-filter{background:var(--surface-soft);border:1px dashed var(--line-strong);border-radius:8px;padding:8px 10px;min-height:63px}.profile-filter b{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-filter small{display:block;font-size:10px;color:var(--muted-2);margin-top:2px}.filter-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:3px}.route-summary{max-width:1390px;margin:0 auto 10px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}.route-summary b{color:var(--ink);font-size:16px}.route-summary span{color:var(--muted-2)}.route-summary p{display:flex;align-items:center;gap:5px;margin:0;color:var(--muted-2);font-size:11px}.route-summary svg{width:13px}
.route-table{max-width:1390px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.route-table-head,.route-main{display:grid;grid-template-columns:58px minmax(150px,1.35fr) 92px minmax(82px,.8fr) 76px 96px minmax(118px,1fr) 112px 82px 118px;gap:12px;align-items:center}.route-table-head{padding:11px 18px;color:var(--muted-2);font-size:11px;background:#f7f9f6;border-bottom:1px solid var(--line)}.route-item{border-bottom:1px solid var(--line);transition:.16s}.route-item:last-child{border-bottom:0}.route-item:hover{background:#fcfdfb}.route-item.expanded{background:#fbfdf9}.route-main{padding:14px 18px;min-height:81px}.route-rank span,.route-rank small{display:block}.route-rank span{font-size:12px;font-weight:800;color:var(--muted-2);font-variant-numeric:tabular-nums}.route-rank small{font-size:9px;color:#a5afa4;margin-top:2px}.route-item:nth-child(-n+4) .route-rank span{color:var(--green-strong)}.route-company{min-width:0}.route-company b,.route-company small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-company b{font-size:13px}.route-company small{font-size:11px;color:var(--muted-2);margin-top:4px}.route-cell{min-width:0;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag{display:inline-flex;align-items:center;padding:4px 7px;border-radius:5px;background:#f0f4ef;border:1px solid #e2e9df;color:var(--muted);font-size:10px;white-space:nowrap}.tag.y{background:#fff5e5;border-color:#f2dfbd;color:#97631d}.tag.g{background:#e8f6e3;border-color:#d2ebca;color:var(--green-strong)}.tag.b{background:#edf5fb;border-color:#d6e7f5;color:#2a6d9f}.route-match>div{display:flex;align-items:baseline;gap:2px}.route-match b{font-size:17px;color:var(--purple);font-variant-numeric:tabular-nums}.route-match small{font-size:10px;color:var(--muted-2)}.route-match>span{display:block;height:5px;background:#eeeafc;border-radius:99px;overflow:hidden;margin-top:5px}.route-match>span i{display:block;height:100%;background:var(--purple);border-radius:99px}.route-reasons{display:flex;flex-wrap:wrap;gap:4px;min-width:0}.route-reasons span{background:#edf5fb;color:#2872af;border-radius:5px;padding:3px 5px;font-size:10px;white-space:nowrap}.route-deadline b,.route-deadline small{display:block}.route-deadline b{font-size:11px;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.route-deadline small{font-size:10px;color:var(--muted-2);margin-top:3px;white-space:normal;line-height:1.35}.route-deadline.urgent b,.route-deadline.urgent small{color:var(--coral)}.route-deadline.expired b,.route-deadline.expired small{color:var(--muted-2)}.route-deadline small{display:flex;align-items:center;gap:3px}.route-deadline small svg{width:12px;height:12px}.entry-btn{width:auto;padding:0 8px;gap:4px;color:var(--blue);border-color:#d9e8f5;font-size:10px;min-height:31px}.entry-btn svg{width:13px;height:13px}.no-entry{color:var(--muted-2)}.route-actions{display:flex;align-items:center;gap:5px}.status-control{min-width:0}.status-select{width:88px;height:32px;padding:0 7px;border-radius:7px;border:1px solid var(--line);font-size:10px;outline:0;background:#fff;color:var(--muted)}.status-select.status-applied{background:#eaf7e5;border-color:#cbe6c1;color:var(--green-strong);font-weight:750}.status-select.status-saved{background:#edf5fb;border-color:#d5e7f4;color:#286898}.status-select.status-unsuitable{background:#f2f3f1;color:var(--muted-2)}.status-select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(39,135,232,.12)}.expand-btn{width:30px;height:30px}.expand-btn svg{transition:.18s;width:14px}.route-item.expanded .expand-btn svg{transform:rotate(180deg)}.route-detail{margin:0 18px 14px 88px;display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:12px;padding:13px 15px;background:var(--surface-soft);border:1px solid #edf1eb;border-radius:9px}.route-detail>div>span{display:block;color:var(--muted-2);font-size:10px;margin-bottom:4px}.route-detail p{font-size:12px;color:var(--muted);margin:0;line-height:1.6}.detail-actions{grid-column:1/-1;display:flex;gap:8px;padding-top:4px}.detail-actions svg{width:14px}.locked{position:relative;overflow:hidden}.locked .blurred{filter:blur(4px);opacity:.58;pointer-events:none;user-select:none}.locked .lock-mask{position:absolute;inset:0;background:rgba(255,255,255,.84);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center}.lock-mask>svg{width:24px;height:24px;color:var(--purple)}.lock-mask .lt{font-size:15px;font-weight:800}.lock-mask .ld{font-size:12px;color:var(--muted);margin-bottom:5px}.empty-state{padding:76px 20px;text-align:center}.empty-state>svg{width:34px;height:34px;color:var(--muted-2);margin-bottom:14px}.empty-state h2{font-size:20px}.empty-state p{font-size:13px;color:var(--muted);margin-bottom:18px}.pager{display:flex;justify-content:center;gap:7px;align-items:center;margin:22px auto 7px}.pager a,.pager span{min-height:34px;display:inline-flex;align-items:center;gap:4px;padding:0 11px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--muted);font-size:12px}.pager a:hover{border-color:var(--blue);color:var(--blue)}.pager .cur{background:var(--green);border-color:var(--green-strong);color:var(--green-strong);font-weight:800}.page-status{text-align:center;color:var(--muted-2);font-size:11px}.toast{position:fixed;right:22px;bottom:24px;z-index:100;display:flex;align-items:center;gap:8px;background:#132414;color:#e8f8e6;border-radius:9px;padding:11px 14px;font-size:13px;box-shadow:0 10px 24px rgba(15,35,17,.2);opacity:0;pointer-events:none;transform:translateY(8px);transition:.2s}.toast.show{opacity:1;transform:translateY(0)}.toast.err{background:#6d2d26}.toast svg{width:16px}.toast.err svg{color:#ffd8d2}

/* forms, resources, pricing and legacy cards */
.stepbox{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:24px;margin:0 0 18px;box-shadow:0 5px 16px rgba(31,48,30,.03)}.stepbox>.sh{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.stepbox>.sh .n{font-size:11px;color:var(--green-strong);font-weight:850;letter-spacing:.08em}.stepbox>.sd{font-size:13px;color:var(--muted);margin-bottom:20px}.field{margin-bottom:19px}.field>label,.lb{display:block;font-weight:700;margin-bottom:7px;font-size:14px}.lb .req{color:var(--coral);margin-left:3px}.hint{font-size:12px;color:var(--muted-2);margin:-2px 0 8px}.inp,select.inp,textarea.inp{width:100%;padding:10px 12px;border-radius:8px;background:#fff;border:1px solid var(--line-strong);color:var(--ink);outline:0}.inp:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(39,135,232,.12)}textarea.inp{min-height:90px;resize:vertical}.row{display:grid;gap:14px}.row2{grid-template-columns:1fr 1fr}.row3{grid-template-columns:repeat(3,1fr)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{position:relative;display:inline-flex;align-items:center;cursor:pointer}.chip input{position:absolute;opacity:0}.chip span{padding:7px 11px;border:1px solid var(--line);background:#fff;border-radius:7px;font-size:13px;color:var(--muted)}.chip input:checked+span{background:#e8f6e3;border-color:#b9dda9;color:var(--green-strong);font-weight:700}.cascade{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:10px}.casc-col{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fbfcfa}.casc-col .ct{padding:8px 11px;background:#f4f7f2;border-bottom:1px solid var(--line);font-size:11px;color:var(--muted-2);font-weight:700}.casc-list{max-height:262px;overflow-y:auto;padding:5px}.casc-item{padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--muted);display:flex;justify-content:space-between;gap:8px}.casc-item:hover{background:#eef6ea;color:var(--green-strong)}.casc-item.on{background:#e8f6e3;color:var(--green-strong);font-weight:700}.casc-item .cnt{font-size:10px;color:var(--muted-2)}.casc-empty{padding:20px 10px;text-align:center;color:var(--muted-2);font-size:12px}.picked{margin-top:10px;padding:10px 12px;border-radius:8px;background:#eef8e9;border:1px solid #d3e9cb;font-size:13px}.picked b{color:var(--green-strong)}.region-box{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fbfcfa}.region-top{display:flex;gap:8px;align-items:center;padding:10px;border-bottom:1px solid var(--line);flex-wrap:wrap}.region-body{display:grid;grid-template-columns:180px 1fr;min-height:230px}.prov-list{border-right:1px solid var(--line);max-height:290px;overflow-y:auto;padding:5px}.city-list{padding:11px;max-height:290px;overflow-y:auto}.prov-item{padding:7px 10px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--muted);display:flex;justify-content:space-between}.prov-item.on{background:#e8f6e3;color:var(--green-strong);font-weight:700}.prov-item .badge{font-size:10px;background:var(--green);color:var(--green-strong);border-radius:5px;padding:0 5px;font-weight:800}.sel-box{margin-top:10px;display:flex;flex-wrap:wrap;gap:7px;align-items:center}.sel-city{display:inline-flex;gap:5px;padding:4px 8px;border-radius:6px;background:#edf5fb;border:1px solid #d5e7f4;font-size:12px}.sel-city i{cursor:pointer;font-style:normal;color:var(--coral)}.filterbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px 16px;border-radius:var(--r);background:#fff;border:1px solid var(--line);margin-bottom:20px}.filterbar select,.filterbar input{padding:7px 10px;border-radius:8px;background:#fff;border:1px solid var(--line);color:var(--ink)}.co{border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;margin-bottom:16px;background:#fff;position:relative}.co-h{display:flex;align-items:flex-start;gap:15px;margin-bottom:12px}.co-rank{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:#f3f6f1;color:var(--muted);font-weight:800}.co-rank.top{background:var(--green);color:var(--green-strong)}.co-t{flex:1;min-width:0}.co-t h3{margin:0 0 4px}.co-meta{font-size:12px;color:var(--muted-2)}.co-match{min-width:70px;text-align:center}.co-match b{display:block;font-size:23px;color:var(--purple)}.co-match span{font-size:10px;color:var(--muted-2)}.bar{height:5px;background:#eeeafc;border-radius:99px;overflow:hidden;margin:9px 0 13px}.bar i{display:block;height:100%;background:var(--purple);border-radius:99px}.co-body{font-size:13px;color:var(--muted)}.co-row{display:flex;gap:8px;margin-bottom:6px}.co-row .k{flex:0 0 68px;color:var(--muted-2);font-size:12px}.co-row .v{flex:1;min-width:0;word-break:break-word}.co-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.jobs-clip{max-height:44px;overflow:hidden}.jobs-clip.open{max-height:600px}.more-link{color:var(--blue);cursor:pointer;font-size:12px}.pager .cur{background:var(--green)}.loading-wrap{min-height:66vh;display:grid;place-items:center;text-align:center}.spinner{width:64px;height:64px;border:4px solid #e5eee2;border-top-color:var(--green-strong);border-right-color:var(--blue);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 22px}@keyframes spin{to{transform:rotate(360deg)}}.load-t{font-size:21px;font-weight:800}.load-s{color:var(--muted);margin-top:7px}.load-bar{width:min(420px,80vw);height:6px;border-radius:99px;background:#e8eee6;margin:22px auto;overflow:hidden}.load-bar i{display:block;height:100%;background:var(--green-strong);border-radius:99px}.load-tips{font-size:12px;color:var(--muted-2);max-width:450px}.price-card{border:1px solid var(--line);border-radius:var(--r-lg);padding:25px;background:#fff;position:relative;display:flex;flex-direction:column}.price-card.hot{border-color:#b7dca7;box-shadow:0 10px 28px rgba(65,116,52,.1)}.price-card .hotbadge{position:absolute;top:-11px;right:18px;background:var(--green);color:var(--green-strong);font-size:11px;font-weight:800;padding:3px 9px;border-radius:5px}.price-card .pn{color:var(--muted);font-weight:700}.price-card .pv{font-size:38px;color:var(--purple);font-weight:850;margin:7px 0}.price-card .pv small{font-size:13px;color:var(--muted-2)}.price-card ul{list-style:none;padding:0;margin:0 0 20px;flex:1 0 auto}.price-card li{padding:7px 0;border-bottom:1px dashed var(--line);font-size:13px;color:var(--muted)}.price-card li:before{content:'✓';color:var(--green-strong);font-weight:800;margin-right:7px}.res-card{border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;background:#fff;margin-bottom:14px}.res-card h3{font-size:16px}.res-card .rm{font-size:12px;color:var(--muted-2)}.res-card .rb{font-size:14px;color:var(--muted);white-space:pre-wrap;word-break:break-word}.adm{display:grid;grid-template-columns:212px 1fr;gap:22px;max-width:1320px;margin:0 auto;padding:22px 20px 60px}.adm-side{position:sticky;top:22px}.adm-side a{display:block;padding:9px 13px;border-radius:8px;color:var(--muted);font-size:14px}.adm-side a.on{background:#eef8e9;color:var(--green-strong)}.adm-h{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.metric{padding:18px;border-radius:var(--r);border:1px solid var(--line);background:#fff}.metric b{display:block;font-size:27px;color:var(--purple)}.metric span{font-size:12px;color:var(--muted-2)}.auth-box{max-width:420px;margin:56px auto}.auth-box .card{padding:30px}.auth-tabs{display:flex;gap:8px;margin-bottom:22px}.auth-tabs a{flex:1;text-align:center;padding:9px;border-radius:8px;background:#f4f7f2;border:1px solid var(--line);color:var(--muted)}.auth-tabs a.on{background:#e8f6e3;color:var(--green-strong);font-weight:700}.foot{border-top:1px solid var(--line);margin-top:25px;background:#f4f6f1}.foot-in{width:min(var(--max),calc(100% - 40px));margin:0 auto;padding:38px 0 24px;display:grid;grid-template-columns:1.4fr 1fr 1.3fr;gap:34px}.foot-col a{display:block;color:var(--muted);font-size:13px;padding:3px 0}.foot-brand{font-weight:800;font-size:16px;margin-bottom:8px}.foot-t{font-weight:750;font-size:13px;margin-bottom:8px}.foot-col p{font-size:13px;color:var(--muted);margin:0 0 7px}.foot-bar{text-align:center;border-top:1px solid var(--line);padding:14px;color:var(--muted-2);font-size:11px}

@media (max-width:1100px){.hero-grid{grid-template-columns:1fr;gap:35px}.hero-copy{max-width:690px}.preview-shell{max-width:720px}.coverage-grid{grid-template-columns:1fr 1fr}.nature-panel{grid-column:1/-1}.route-table-head,.route-main{grid-template-columns:50px minmax(150px,1.25fr) 84px minmax(78px,.7fr) 70px 88px minmax(100px,1fr) 105px 76px 108px;gap:8px}.app-main{padding-right:25px;padding-left:30px}}
@media (max-width:900px){.nav-links{gap:0}.nav-links a{padding-left:8px;padding-right:8px}.process-grid{grid-template-columns:repeat(2,1fr)}.accuracy-grid,.resource-grid{grid-template-columns:1fr;gap:30px}.resource-list{border-left:0;border-top:1px solid var(--line);padding:10px 0 0}.plan-row{grid-template-columns:1fr}.plan-summary{grid-template-columns:auto 1fr auto}.plan-points{padding-left:4px}.route-kpis{grid-template-columns:repeat(2,1fr)}.route-table{overflow:visible;background:transparent;border:0}.route-table-head{display:none}.route-item{background:#fff;border:1px solid var(--line);border-radius:var(--r);margin-bottom:10px}.route-main{grid-template-columns:46px minmax(0,1fr) auto;gap:9px;padding:16px}.route-cell,.route-reasons,.route-deadline,.route-entry,.route-actions{grid-column:2/-1}.route-cell{display:flex;gap:6px;align-items:center}.route-cell:before,.route-reasons:before,.route-deadline:before{content:attr(data-label);flex:0 0 48px;color:var(--muted-2);font-size:10px}.route-match{grid-column:3;grid-row:1/3;min-width:74px}.route-reasons{grid-column:2/-1}.route-deadline{grid-column:2}.route-entry{grid-column:2}.route-actions{grid-column:3;grid-row:5;justify-content:flex-end}.route-detail{margin:0 16px 14px 71px;grid-template-columns:1fr}.detail-actions{grid-column:auto;flex-wrap:wrap}.filter-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.route-summary{padding:0 2px}.app-main{padding-top:25px}}
@media (max-width:720px){body{font-size:14px}.wrap{width:min(100% - 28px,1240px)}.nav{top:8px;width:calc(100% - 20px);margin-top:8px}.nav-in{height:56px}.nav-links{display:none;position:absolute;top:57px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:0 0 12px 12px;padding:7px 10px 12px;flex-direction:column;align-items:stretch;box-shadow:var(--shadow)}.nav-links a{padding:10px 12px}.nav-toggle{display:inline-flex}.hero{padding:58px 0 34px}.hero h1{font-size:37px}.lead{font-size:15px}.preview-shell{padding:16px;min-height:0}.preview-kpis{grid-template-columns:repeat(2,1fr)}.preview-analysis{grid-template-columns:1fr}.route-progress{border-left:0;border-top:1px solid var(--line);padding:14px 0 0}.preview-toast,.preview-alert{position:relative;right:auto;top:auto;bottom:auto;margin:10px 0 0;width:100%}.preview-row{grid-template-columns:25px minmax(0,1fr) 54px}.preview-row .reason{display:none}.preview-row .status{justify-self:end}.stats{grid-template-columns:repeat(2,1fr);padding:8px 0}.stat{padding:12px 13px;border-right:0}.stat:nth-child(odd){border-right:1px solid var(--line)}.stat:nth-child(-n+2){border-bottom:1px solid var(--line)}.sec{padding:60px 0}.process-grid{grid-template-columns:1fr}.process-step{min-height:auto}.coverage-grid{grid-template-columns:1fr}.nature-panel{grid-column:auto}.final-cta{padding:45px 0 60px}.final-cta-in{padding:25px 22px;align-items:flex-start;flex-direction:column}.final-cta-in h2{font-size:28px}.plan-summary{grid-template-columns:auto 1fr}.plan-summary strong{grid-column:2;grid-row:2}.plan-summary .btn{grid-column:1/-1}.plan-points{display:grid;grid-template-columns:1fr}.app-side{display:none}.mobile-app-nav{position:fixed;z-index:60;display:flex;bottom:0;left:0;right:0;height:62px;background:#fff;border-top:1px solid var(--line);justify-content:space-around}.mobile-app-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted-2);font-size:10px;min-width:68px}.mobile-app-nav a.on{color:var(--green-strong);font-weight:750}.mobile-app-nav svg{width:18px}.app-main{margin-left:0;max-width:none;padding:14px 13px 82px}.mobile-app-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.mobile-app-head a:first-child{display:flex;align-items:center;gap:7px;font-size:14px}.mobile-app-head .brand-mark{width:29px;height:29px;font-size:14px}.mobile-app-head a:last-child{color:var(--muted)}.route-title{display:block;margin-bottom:19px}.route-title h1{font-size:29px}.header-actions{margin-top:15px}.header-actions .btn{flex:1}.route-notice{align-items:flex-start;margin-bottom:13px}.route-kpis{gap:9px;margin-bottom:13px}.route-kpi{padding:13px 12px;min-height:113px}.route-kpi b{font-size:26px}.route-kpi em{font-size:10px}.route-toolbar{padding:10px}.route-toolbar form{gap:7px}.search-field{min-width:calc(100% - 1px);order:0}.filter-toggle{order:1;flex:1}.sort-field{order:2;flex:1}.sort-field span{display:none}.sort-field select{width:100%}.route-toolbar form>.btn-pri{order:3}.filter-panel{grid-template-columns:1fr;gap:10px}.filter-actions{grid-column:auto}.route-summary{display:block;margin:11px 2px}.route-summary p{margin-top:6px}.route-main{grid-template-columns:38px minmax(0,1fr) auto;padding:14px 13px}.route-match{grid-column:3;grid-row:1/3}.route-company b{font-size:13px}.route-detail{margin-left:57px;margin-right:13px}.route-actions{grid-row:5}.status-select{width:86px}.entry-btn span{display:none}.entry-btn{width:31px;padding:0}.route-reasons span{font-size:9px}.pager{margin-bottom:8px}.foot-in{width:calc(100% - 28px);grid-template-columns:1fr;gap:24px}.row2,.row3{grid-template-columns:1fr}.cascade,.region-body{grid-template-columns:1fr}.prov-list{border-right:0;border-bottom:1px solid var(--line);max-height:170px}.co-h{flex-wrap:wrap}.co-match{text-align:left}.co-row{display:block}.co-row .k{display:block;margin-bottom:2px}.auth-box{margin:30px auto}.auth-box .card{padding:22px}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js body{transition:none!important}}

/* shared functional shell refinements */
.legacy-app-main>.wrap{width:min(100%,1240px);padding-left:0;padding-right:0}
.app-toast{position:fixed;z-index:120;top:82px;right:24px;display:flex;align-items:center;gap:10px;min-width:280px;max-width:min(430px,calc(100vw - 32px));padding:13px 14px;border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 18px 44px rgba(28,48,27,.17);font-size:13px;opacity:0;transform:translate3d(0,-10px,0);pointer-events:none;transition:opacity .24s ease,transform .24s ease}.app-toast.is-visible{opacity:1;transform:translate3d(0,0,0);pointer-events:auto}.app-toast>svg{width:18px;flex:0 0 18px}.app-toast span{flex:1;line-height:1.5}.app-toast-ok>svg{color:var(--green-strong)}.app-toast-info>svg{color:var(--blue)}.app-toast-warn>svg{color:var(--amber)}.app-toast-err>svg{color:var(--coral)}.toast-close{width:28px;height:28px;border:0;background:transparent;color:var(--muted-2);padding:0;border-radius:6px}.toast-close:hover{background:var(--surface-soft);color:var(--ink)}.toast-close svg{width:15px}.toast{right:22px}.profile-workspace{width:min(100%,1180px);margin:0 auto;padding:26px 0 70px}.profile-header{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:20px}.profile-header h1{font-size:35px;margin:4px 0 8px}.profile-header p{margin:0;color:var(--muted);font-size:13px}.autosave-state{display:inline-flex;align-items:center;gap:7px;color:var(--green-strong);font-size:12px;background:#eef8e9;border:1px solid #d3e9cb;border-radius:8px;padding:8px 10px;white-space:nowrap}.autosave-state svg{width:15px}.autosave-state.saving{color:var(--muted);background:#f5f7f4}.profile-tip{display:flex;align-items:center;gap:9px;margin-bottom:18px;padding:11px 13px;border:1px solid #cfe3f5;border-radius:9px;background:#edf5fb;color:#2d638f;font-size:12px}.profile-tip svg{width:16px;flex:0 0 16px}.profile-tip span{flex:1}.profile-tip a{color:var(--blue);font-weight:750}.profile-layout{display:grid;grid-template-columns:212px minmax(0,1fr);gap:24px;align-items:start}.wizard-progress{position:sticky;top:26px;display:flex;flex-direction:column;gap:3px;padding:6px 0}.wizard-dot{position:relative;display:grid;grid-template-columns:31px 1fr;grid-template-rows:auto auto;column-gap:9px;text-align:left;border:0;background:transparent;color:var(--muted-2);padding:10px 10px;border-radius:9px}.wizard-dot:after{content:"";position:absolute;left:24px;top:42px;height:17px;border-left:1px dashed var(--line-strong)}.wizard-dot:last-child:after{display:none}.wizard-dot span{grid-row:1/3;width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:#f1f4f0;color:var(--muted-2);font-size:10px;font-weight:800}.wizard-dot b{font-size:12px;line-height:1.3;color:var(--muted)}.wizard-dot small{font-size:10px;line-height:1.3;color:var(--muted-2);margin-top:2px}.wizard-dot:hover{background:#f7faf5}.wizard-dot.on{background:#eef8e9}.wizard-dot.on span,.wizard-dot.done span{background:var(--green);color:var(--green-strong)}.wizard-dot.on b,.wizard-dot.done b{color:var(--green-strong);font-weight:800}.wizard-stage{min-width:0}.wizard-step{margin:0;animation:step-in .26s ease both;box-shadow:0 7px 22px rgba(31,48,30,.045)}.wizard-step[hidden]{display:none}.wizard-step .sh h3{font-size:21px}.wizard-step .sd{max-width:680px}.step-insight,.review-notice{display:flex;align-items:flex-start;gap:8px;padding:11px 12px;border-radius:8px;background:#f7faf5;border:1px solid #e1ebdd;color:var(--muted);font-size:12px}.step-insight svg,.review-notice svg{width:15px;flex:0 0 15px;color:var(--green-strong)}.wizard-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:14px}.wizard-actions .wizard-exit{margin-right:auto}.profile-review{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:17px}.review-row{display:grid;grid-template-columns:84px 1fr;gap:9px;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);font-size:12px}.review-row span{color:var(--muted-2)}.review-row b{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis}.spin{animation:spin 1s linear infinite}.route-company b{font-size:15px;font-weight:850;color:var(--ink);letter-spacing:-.01em}.route-company small{font-size:12px;margin-top:5px}.route-main{min-height:88px}.route-summary b{font-size:17px}.route-kpi{min-height:136px}.route-kpi b{font-size:34px}.route-table-head{font-size:12px}.route-item{background:#fff}.route-item:hover{box-shadow:inset 3px 0 0 var(--green)}.route-reasons span{font-size:10.5px}.entry-btn span{font-weight:750}.admin-page{background:var(--bg-soft)}.admin-page .adm{max-width:none;grid-template-columns:var(--sidebar) minmax(0,1fr);gap:30px;margin:0;padding:35px 42px 70px 0}.admin-page .adm-side{position:relative;top:auto;align-self:stretch;padding:0 16px;background:#fff;border-right:1px solid var(--line);min-height:calc(100vh - 105px)}.admin-page .admin-app-side{padding-top:25px}.admin-page .adm-side .app-brand{padding:0 9px 28px}.admin-page .adm-side .app-nav a{margin-bottom:3px}.admin-page .adm>div{max-width:1360px;width:100%}.admin-page .adm-h h2{font-size:30px}.admin-page .metric b{font-size:31px}.admin-foot-link{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;padding:8px 9px}.admin-foot-link:hover{color:var(--ink);background:#f4f7f2;border-radius:7px}.admin-page .card,.admin-page .metric{box-shadow:0 7px 22px rgba(31,48,30,.045)}
@keyframes step-in{from{opacity:0;transform:translate3d(calc(var(--wizard-direction,1) * 14px),0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@media (min-width:1000px){body{font-size:15.7px}.app-main{padding-top:40px}.route-main{font-size:13px}.route-company b{font-size:15.5px}.route-company small{font-size:12px}.route-cell{font-size:12px}.route-reasons span{font-size:11px}.status-select{font-size:11px}}
@media (max-width:900px){.profile-layout{grid-template-columns:1fr}.wizard-progress{position:static;display:grid;grid-template-columns:repeat(7,1fr);gap:3px;padding:0 0 12px;overflow:auto}.wizard-dot{display:block;text-align:center;padding:7px 3px;min-width:72px}.wizard-dot:after{display:none}.wizard-dot span{margin:0 auto 5px}.wizard-dot b,.wizard-dot small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wizard-dot b{font-size:10px}.wizard-dot small{font-size:9px}.profile-header{align-items:flex-start;flex-direction:column}.profile-review{grid-template-columns:1fr}.admin-page .adm{grid-template-columns:1fr;padding:24px 18px 60px}.admin-page .adm>div{min-width:0}.admin-page .g4{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-page .metric{min-width:0}.admin-page .metric b{overflow-wrap:anywhere}.admin-page .adm-side{min-height:0;padding:14px;position:static;border:1px solid var(--line);border-radius:12px}.admin-page .adm-side .app-brand{padding-bottom:14px}.admin-page .adm-side .app-nav{display:flex;flex-direction:row;flex-wrap:wrap;gap:4px}.admin-page .adm-side .app-nav a{min-height:38px}.admin-page .adm-side .app-nav a.on:before{display:none}.admin-page .adm-side .side-foot{display:flex;border-top:1px solid var(--line);margin-top:12px;padding-top:8px}.admin-page .adm-side .admin-foot-link{margin-right:8px}.app-toast{top:72px;right:14px}}
@media (max-width:720px){.profile-workspace{padding-top:16px}.profile-header h1{font-size:29px}.profile-header p{font-size:12px}.wizard-progress{margin-left:-3px;margin-right:-3px}.wizard-actions{position:sticky;bottom:72px;z-index:20;background:rgba(244,246,241,.92);padding:9px 0;backdrop-filter:blur(8px)}.wizard-actions .wizard-exit{display:none}.app-toast{min-width:0;right:12px;left:12px;max-width:none}.route-company b{font-size:14px}.admin-page .g2{grid-template-columns:1fr}.admin-page .adm{padding-left:12px;padding-right:12px}.admin-page .metric{padding:15px}.admin-page .metric b{font-size:27px}}
.route-feature-strip{max-width:1390px;margin:0 auto 15px;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--line)}.route-feature-strip>div{display:flex;align-items:center;gap:9px;padding:13px 15px;background:#fff}.route-feature-strip>div>svg{color:var(--green-strong);width:19px;flex:0 0 19px}.route-feature-strip b,.route-feature-strip small{display:block}.route-feature-strip b{font-size:12px}.route-feature-strip small{font-size:10px;color:var(--muted-2);margin-top:2px}
@media (max-width:900px){.route-feature-strip{grid-template-columns:repeat(2,1fr)}}
@media (max-width:720px){.route-feature-strip{grid-template-columns:1fr 1fr}.route-feature-strip>div{padding:11px 10px}.route-feature-strip small{font-size:9px}}

/* 2026 interface system: typography, motion and shared feedback */
:root{
  --font-ui:"STXihei","华文细黑","MiSans","HarmonyOS Sans SC","Source Han Sans SC","Noto Sans CJK SC","Microsoft YaHei UI","Microsoft YaHei",sans-serif;
  --font-display:"STXihei","华文细黑","MiSans","HarmonyOS Sans SC","Source Han Sans SC","Noto Sans CJK SC","Microsoft YaHei UI",sans-serif;
  --shadow-soft:0 10px 30px rgba(22,38,25,.065);
  --shadow-float:0 22px 58px rgba(18,35,21,.16);
}
*{letter-spacing:0}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{font-family:var(--font-ui);background:var(--bg);font-feature-settings:"kern" 1,"liga" 1;text-rendering:optimizeLegibility}
body:has(.app-main),.admin-page{background:var(--bg-soft)}
h1,h2,h3,h4,.brand,.app-brand,.metric b{font-family:var(--font-display);letter-spacing:0}
button,input,select,textarea{font-family:inherit}
a,button,.btn,.icon-btn,.chip span,.app-nav a,.nav-links a{transition:color .22s ease,background-color .22s ease,border-color .22s ease,box-shadow .22s ease,transform .22s ease}
:focus-visible{outline:3px solid rgba(39,135,232,.28);outline-offset:2px}
.js body,.js body.page-ready,.js body.page-leaving,.js body.page-ready.pjax-enter{opacity:1;transform:none}
html.app-navigating{cursor:progress}
/* Persistent sidebar selection: one background layer slides between links. */
.app-nav.sidebar-motion{position:relative;isolation:isolate}
.app-nav.sidebar-motion>a{z-index:1;background:transparent}
.app-nav.sidebar-motion>a.on{background:transparent}
.app-nav.sidebar-motion>a.on:before{display:none}
.sidebar-active-indicator{position:absolute;z-index:0;top:0;left:0;right:0;display:block;border-radius:9px;background:#dff1d8;box-shadow:inset 0 0 0 1px rgba(55,116,48,.18),0 4px 12px rgba(48,95,43,.1);pointer-events:none;will-change:transform;transition:transform .46s cubic-bezier(.16,1,.3,1),height .28s ease}
.sidebar-active-indicator:before{content:"";position:absolute;left:-16px;top:7px;bottom:7px;width:4px;border-radius:0 4px 4px 0;background:#246b2a;box-shadow:0 0 8px rgba(36,107,42,.22)}
.sidebar-active-indicator.is-immediate{transition:none}

/* Page loading skeleton: blocks stay fixed; only the soft highlight travels. */
.page-shimmer{position:fixed;z-index:39;top:0;right:0;bottom:0;left:0;padding:40px 44px 70px;overflow:hidden;background:var(--bg-soft);pointer-events:none;opacity:1;transition:opacity .16s ease}
.page-shimmer.is-complete{opacity:0}
.page-shimmer-app,.page-shimmer-admin{left:var(--sidebar)}
.page-shimmer-public{top:88px;padding-top:34px}
.page-shimmer-inner{width:min(1390px,100%);margin:0 auto}
.home-app-content .hero{padding-top:34px}
.shimmer-block{position:relative;display:block;overflow:hidden;border-radius:7px;background:#e0e5de}
.shimmer-block:after{content:"";position:absolute;inset:0;width:45%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);transform:translate3d(-130%,0,0);animation:page-shimmer-sweep 1.25s ease-in-out infinite;will-change:transform}
.shimmer-kicker{width:92px;height:12px;margin-bottom:14px}
.shimmer-title{width:min(420px,64%);height:35px;margin-bottom:13px}
.shimmer-copy{width:min(620px,86%);height:14px;margin-bottom:28px}
.shimmer-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}
.shimmer-grid .shimmer-block{height:126px}
.shimmer-panel{width:100%;height:190px;margin-bottom:16px}
.shimmer-row{width:100%;height:72px;margin-bottom:10px}
.shimmer-row.short{width:76%}
@keyframes page-shimmer-sweep{to{transform:translate3d(330%,0,0)}}

@media (max-width:900px){
  .admin-page .sidebar-active-indicator{display:none}
  .admin-page .app-nav.sidebar-motion>a.on{background:#eef8e9}
  .page-shimmer-admin{top:170px;left:0;padding:24px 18px 60px}
  .shimmer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
  .page-shimmer-app{top:0;right:0;bottom:calc(62px + env(safe-area-inset-bottom));left:0;padding:22px 14px 80px}
  .page-shimmer-public{top:72px;padding:24px 14px 60px}
  .shimmer-title{width:82%;height:29px}
  .shimmer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .shimmer-grid .shimmer-block{height:104px}
  .shimmer-panel{height:150px}
  .home-app-content .hero{padding-top:18px}
}

/* High-visibility notifications */
.app-toast{top:24px;right:28px;min-width:340px;max-width:min(460px,calc(100vw - 32px));padding:16px 46px 16px 17px;border-width:1px 1px 1px 4px;border-radius:10px;background:#fff;font-size:14px;font-weight:650;box-shadow:var(--shadow-float);transform:translate3d(0,-16px,0) scale(.98);overflow:hidden}
.app-toast.is-visible{transform:translate3d(0,0,0) scale(1)}
.app-toast>svg{width:21px;height:21px;stroke-width:2.3}
.app-toast span{line-height:1.65}
.app-toast-ok{border-color:#9fd18d;background:#f8fff5;color:#204d27}
.app-toast-info{border-color:#8fc4ed;background:#f6fbff;color:#245c88}
.app-toast-warn{border-color:#e2b45f;background:#fffaf0;color:#765018}
.app-toast-err{border-color:#e49589;background:#fff8f6;color:#873e35}
.app-toast .toast-close{position:absolute;top:10px;right:10px}
.app-toast:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:currentColor;opacity:.28;transform-origin:left;transform:scaleX(0)}
.app-toast.is-visible:after{animation:toast-life 5.2s linear both}
.toast{min-width:280px;padding:14px 17px;border-radius:9px;font-size:14px;font-weight:650;box-shadow:var(--shadow-float);transition:opacity .28s ease,transform .34s cubic-bezier(.22,1,.36,1)}
@keyframes toast-life{from{transform:scaleX(1)}to{transform:scaleX(0)}}

/* Profile wizard: calmer spacing and two-stage crossfade */
.profile-page{--profile-accent:#246b2a}
.profile-workspace{width:min(100%,1220px);padding-top:36px}
.profile-header{margin-bottom:26px}
.profile-header h1{font-size:36px;font-weight:760;line-height:1.3;margin-bottom:10px}
.profile-header p{font-size:14px;line-height:1.8;max-width:760px}
.profile-layout{grid-template-columns:224px minmax(0,1fr);gap:38px}
.wizard-progress{top:34px;gap:6px}
.wizard-dot{grid-template-columns:34px 1fr;column-gap:11px;padding:12px 11px;border-radius:8px}
.wizard-dot:after{left:27px;top:47px;height:20px}
.wizard-dot span{width:29px;height:29px;font-size:11px}
.wizard-dot b{font-size:13px;line-height:1.45}
.wizard-dot small{font-size:10.5px;line-height:1.45;margin-top:3px}
.wizard-stage{min-width:0;transition:min-height .34s cubic-bezier(.22,1,.36,1)}
.wizard-step{margin:0;padding:32px 34px;border-radius:14px;animation:none;box-shadow:var(--shadow-soft);opacity:1;filter:none;transform:none;transition:opacity .24s ease,filter .28s ease,transform .38s cubic-bezier(.22,1,.36,1)}
.wizard-step.is-leaving{opacity:0;filter:blur(2px);transform:translate3d(calc(var(--wizard-direction,1) * -12px),0,0) scale(.996);pointer-events:none}
.wizard-step.is-preparing{opacity:0;filter:blur(2px);transform:translate3d(calc(var(--wizard-direction,1) * 14px),0,0) scale(.996)}
.wizard-step.is-entering{opacity:1;filter:none;transform:none}
.wizard-step .sh{margin-bottom:7px}
.wizard-step .sh h3{font-size:23px;font-weight:760;line-height:1.4}
.wizard-step .sd{font-size:14px;line-height:1.75;margin-bottom:27px;max-width:740px}
.wizard-step .field{margin-bottom:25px}
.wizard-step .field>label,.wizard-step .lb{font-size:14px;line-height:1.55;margin-bottom:9px}
.wizard-step .hint{font-size:12.5px;line-height:1.65;margin-bottom:11px}
.wizard-step .row{gap:18px}
.wizard-step .chips{gap:10px 9px}
.wizard-step .chip span{padding:8px 12px;line-height:1.45}
.wizard-step .chip.sm span{font-size:12.5px}
.wizard-step .chipgroup{padding:4px 0 8px}
.wizard-step .gt{margin-bottom:9px}
.wizard-step .inp{min-height:44px;line-height:1.55}
.wizard-step textarea.inp{min-height:106px}
.step-insight,.review-notice{padding:13px 14px;font-size:12.5px;line-height:1.7}
.wizard-actions{margin-top:18px;padding:2px 0;min-height:48px}
.wizard-actions .btn{min-width:116px}

/* Resource library and article reading surface */
.resource-workspace{width:min(1120px,calc(100% - 40px));margin:0 auto;padding:38px 0 70px}
.resource-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:25px}
.resource-header h1{font-size:34px;margin:4px 0 8px}
.resource-header p{margin:0;color:var(--muted);max-width:720px;line-height:1.75}
.resource-count{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;white-space:nowrap}
.resource-count svg{color:var(--green-strong)}
.resource-filter{margin-bottom:22px;padding:12px;background:rgba(255,255,255,.82);box-shadow:0 5px 16px rgba(31,48,30,.035)}
.resource-filter .resource-search{display:flex;align-items:center;flex:1;min-width:220px;position:relative}
.resource-filter .resource-search svg{position:absolute;left:11px;width:16px;color:var(--muted-2)}
.resource-filter .resource-search input{width:100%;padding-left:35px}
.resource-listing{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.resource-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:15px;margin:0;padding:21px 22px;border-radius:10px;box-shadow:0 6px 20px rgba(31,48,30,.035);transition:transform .24s ease,border-color .24s ease,box-shadow .24s ease}
.resource-item:hover{transform:translateY(-2px);border-color:#bdcbbb;box-shadow:var(--shadow-soft)}
.resource-item-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;background:#edf5fb;color:var(--blue)}
.resource-item-icon svg{width:20px;height:20px}
.resource-item-main{min-width:0;display:flex;flex-direction:column}
.resource-item h2{font-size:17px;line-height:1.55;margin:0 0 7px}
.resource-item h2 a:hover{color:var(--green-strong)}
.resource-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:11.5px;color:var(--muted-2)}
.resource-excerpt{font-size:13.5px;line-height:1.8;color:var(--muted);margin:13px 0 16px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;white-space:normal;word-break:break-word}
.resource-item-actions{display:flex;align-items:center;gap:8px;margin-top:auto}
.resource-item-actions .btn{min-height:36px}
.resource-article-shell{width:min(900px,calc(100% - 40px));margin:0 auto;padding:34px 0 74px}
.resource-back{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;margin-bottom:16px;white-space:nowrap;width:fit-content;max-width:100%}
.resource-back:hover{color:var(--green-strong)}
.resource-back svg{width:15px}
.resource-article{padding:40px 48px 44px;border-radius:12px;box-shadow:var(--shadow-soft)}
.resource-article-header{padding-bottom:24px;border-bottom:1px solid var(--line)}
.resource-article-header h1{font-size:32px;line-height:1.45;margin:12px 0 13px;font-weight:760}
.resource-prose{font-size:16px;line-height:2;color:#343c35;padding:27px 0 5px}
.resource-prose h2{font-size:22px;margin:30px 0 13px;padding-left:12px;border-left:3px solid var(--green-strong)}
.resource-prose h3{font-size:18px;margin:25px 0 10px}
.resource-prose p{margin:0 0 18px}
.resource-prose ul,.resource-prose ol{margin:0 0 20px;padding-left:24px}
.resource-prose li{margin:7px 0;padding-left:3px}
.resource-prose blockquote{margin:20px 0;padding:14px 17px;border-left:3px solid var(--blue);background:#f4f9fd;color:var(--muted)}
.resource-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:20px 0;border-top:1px solid var(--line)}
.resource-actions .btn svg{width:16px}
.resource-password{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;background:var(--surface-soft);border:1px solid var(--line);border-radius:7px;font-size:12px;color:var(--muted)}
.resource-password code{color:var(--ink);font-weight:750}

/* Admin uses the same connected application shell as the user workspace */
.admin-page .adm{display:block;max-width:none;margin:0;padding:0 40px 72px calc(var(--sidebar) + 40px)}
.admin-page .adm-side{position:fixed;z-index:50;left:0;top:0;bottom:0;width:var(--sidebar);min-height:100vh;padding:25px 16px 20px;background:#fff;border:0;border-right:1px solid var(--line);display:flex;flex-direction:column}
.admin-page .adm-side .app-brand{display:flex;padding:0 9px 28px}
.admin-page .adm-side .app-nav{display:flex;flex-direction:column;gap:4px}
.admin-page .adm-side .app-nav a{display:flex;margin:0;min-height:43px;padding:0 12px}
.admin-page .adm-side .side-foot{margin-top:auto}
.admin-page .adm>div{max-width:1440px;width:100%;margin:0 auto;min-width:0}
.admin-page .adm>div>.adm-h{position:sticky;top:0;z-index:30;min-height:77px;margin:0 0 25px;padding:14px 0;display:flex;align-items:center;background:rgba(244,246,242,.92);border-bottom:1px solid rgba(203,212,201,.75);backdrop-filter:blur(12px)}
.admin-page .adm-h h2{font-size:29px;font-weight:760;margin:0}
.admin-page .card,.admin-page .metric,.admin-page .filterbar{border-radius:10px;box-shadow:0 6px 20px rgba(31,48,30,.035)}
.admin-page .card{padding:24px}
.admin-page .metric{min-height:126px;padding:19px 20px;display:flex;flex-direction:column;justify-content:center;border-top:3px solid #8bb9de}
.admin-page .metric b{font-size:30px;line-height:1.2;color:#225f91;font-weight:760}
.admin-page .metric span{font-size:12.5px;margin-top:7px;color:var(--muted)}
.admin-page .g4>.metric:nth-child(4n+2){border-top-color:#8fc77c}.admin-page .g4>.metric:nth-child(4n+2) b{color:#2e7136}
.admin-page .g4>.metric:nth-child(4n+3){border-top-color:#b3a3ea}.admin-page .g4>.metric:nth-child(4n+3) b{color:#654bc1}
.admin-page .g4>.metric:nth-child(4n+4){border-top-color:#d9b26b}.admin-page .g4>.metric:nth-child(4n+4) b{color:#8a611e}
.admin-page .filterbar{padding:13px 14px}
.admin-page .tb{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.admin-page .tb th{padding:11px 12px;background:#f4f7f2;color:#697369;font-size:11.5px;font-weight:700;white-space:nowrap;border-bottom:1px solid var(--line)}
.admin-page .tb td{padding:13px 12px;line-height:1.55;border-bottom:1px solid #e9eee7;vertical-align:middle}
.admin-page .tb tr:last-child td{border-bottom:0}
.admin-page .tb tr:hover td{background:#fbfdf9}
.scroll-x{display:block;width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.admin-page .toolbar{gap:9px;margin-bottom:12px}
.admin-page .codebox{background:#172019;color:#d9e7d8;border:1px solid #2f3e31;border-radius:8px;padding:16px;line-height:1.7}
.admin-page .log-box{max-height:360px;min-height:96px;overflow:auto;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;scrollbar-width:thin;scrollbar-color:#718474 #243126}
.admin-page .log-box::-webkit-scrollbar{width:9px;height:9px}.admin-page .log-box::-webkit-scrollbar-track{background:#243126;border-radius:8px}.admin-page .log-box::-webkit-scrollbar-thumb{background:#718474;border-radius:8px;border:2px solid #243126}
.admin-page .kv{min-height:44px;align-items:center}
.admin-page .inp{min-height:43px}
.admin-page .ai-prompt{min-height:380px;line-height:1.75;white-space:pre-wrap;tab-size:2;font-family:"Microsoft YaHei UI","Microsoft YaHei",sans-serif}

@media (max-width:1100px){
  .resource-listing{grid-template-columns:1fr}
  .admin-page .adm{padding-right:24px;padding-left:calc(var(--sidebar) + 24px)}
  .admin-page .row[style*="grid-template-columns"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:900px){
  .profile-layout{grid-template-columns:minmax(0,1fr);gap:24px}
  .admin-page .adm{padding:0 18px 60px}
  .admin-page .adm-side{position:relative;inset:auto;width:100%;min-height:0;margin:18px 0 0;padding:14px;border:1px solid var(--line);border-radius:10px}
  .admin-page .adm>div>.adm-h{top:0;min-height:68px;margin-bottom:18px}
  .admin-page .adm-side .app-brand{padding-bottom:14px}
  .admin-page .adm-side .app-nav{flex-direction:row;flex-wrap:wrap}
  .admin-page .adm-side .app-nav a{min-height:38px}
  .admin-page .adm-side .side-foot{margin-top:12px}
}
@media (max-width:720px){
  .app-toast{top:12px;right:12px;left:12px;min-width:0;max-width:none;padding:14px 43px 14px 14px}
  .profile-workspace{padding-top:18px}
  .profile-header{margin-bottom:19px}
  .profile-header h1{font-size:28px}
  .profile-header p{font-size:12.5px}
  .wizard-step{padding:23px 18px;border-radius:10px}
  .wizard-step .sh h3{font-size:20px}
  .wizard-step .sd{font-size:12.5px;margin-bottom:22px}
  .wizard-step .field{margin-bottom:22px}
  .wizard-actions{bottom:62px;margin-left:-2px;margin-right:-2px;padding:10px 2px}
  .wizard-actions .btn{min-width:0;flex:1;padding-left:11px;padding-right:11px}
  .resource-workspace,.resource-article-shell{width:calc(100% - 26px);padding-top:23px}
  .resource-header{display:block;margin-bottom:18px}
  .resource-header h1{font-size:28px}
  .resource-count{margin-top:11px}
  .resource-filter select,.resource-filter .resource-search{width:100%;min-width:100%}
  .resource-listing{gap:10px}
  .resource-item{grid-template-columns:38px minmax(0,1fr);padding:17px 15px;gap:12px}
  .resource-item-icon{width:38px;height:38px}
  .resource-article{padding:27px 20px 31px}
  .resource-article-header h1{font-size:25px}
  .resource-prose{font-size:15px;line-height:1.9}
  .admin-page .adm{padding-left:12px;padding-right:12px}
  .admin-page .adm-side{margin-top:12px}
  .admin-page .adm>div>.adm-h{min-height:62px}
  .admin-page .adm-h h2{font-size:25px}
  .admin-page .card{padding:18px 15px}
  .admin-page .g4{grid-template-columns:1fr 1fr}
  .admin-page .metric{min-height:110px;padding:15px}
  .admin-page .metric b{font-size:26px}
  .admin-page .row[style*="grid-template-columns"]{grid-template-columns:1fr!important}
}

/* 画像地区与推荐标识 */
.target-preferences{align-items:center;margin-top:10px;gap:9px}
.target-preferences[hidden]{display:none}
.field-note{font-size:11px;color:var(--muted-2)}
.major-hint-chip{transition:background .18s ease,border-color .18s ease,box-shadow .18s ease}
.major-hint-chip.is-major-hint>span::after{content:'专业推荐';display:inline-flex;align-items:center;margin-left:6px;padding:1px 4px;border-radius:4px;background:#f6d982;color:#6f4b10;font-size:9px;font-weight:800;line-height:1.35;vertical-align:middle}
.major-hint-chip[data-hint-kind="skill"].is-major-hint>span::after{content:'加分项';background:#d9ecfb;color:#245d88}
.priority-chips{gap:10px}.priority-chip{min-width:0}.priority-chip>span{display:flex;align-items:center;gap:7px}.priority-chip small{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#e8f5df;color:#3f762e;font-size:10px;font-weight:800}.priority-chip input[type="radio"]{accent-color:var(--green-strong)}
.nature-chip input[value="不限"]:checked+span{background:#eef8e9;border-color:#b9dda9;color:var(--green-strong);font-weight:800}
.prov-actions{display:inline-flex;align-items:center;gap:5px;margin-left:auto}
.prov-whole{border:1px solid #d7e6d1;background:#fff;color:var(--green-strong);border-radius:5px;padding:3px 6px;font-size:10px;line-height:1.2;cursor:pointer;white-space:nowrap}
.prov-whole:hover,.prov-whole.selected{background:#e8f6e3;border-color:#b9dda9;font-weight:750}
.region-notice{margin-top:10px;padding:9px 11px;border:1px solid #cfe3f5;border-radius:8px;background:#edf5fb;color:#2d638f;font-size:12px;line-height:1.5}
.region-notice[hidden]{display:none}
.recommend-badge{display:inline-flex;align-items:center;justify-content:center;gap:3px;padding:3px 7px;border-radius:5px;background:#e8f6e3;border:1px solid #b9dda9;color:#26713a;font-size:10px;font-weight:800;vertical-align:middle;white-space:nowrap}
.recommend-badge svg{width:11px;height:11px;flex:0 0 11px}
@media (max-width:720px){
  .prov-item{align-items:center}
  .prov-whole{padding:4px 6px}
  .recommend-badge{margin-left:4px;font-size:9px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js body,.js body.page-ready,.js body.page-leaving{opacity:1;transform:none;filter:none}
}

/* 2026.08 density and control pass */
:root{
  --max:1360px;
  --sidebar:240px;
  --font-ui:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC","HarmonyOS Sans SC","Noto Sans SC",Arial,sans-serif;
  --font-display:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC","HarmonyOS Sans SC","Noto Sans SC",Arial,sans-serif;
  --font-control:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC","Noto Sans SC",Arial,sans-serif;
}
body{font-family:var(--font-ui);font-size:16px;line-height:1.72}
body,h1,h2,h3,h4,b,strong,.brand,.app-brand,.metric b{font-synthesis:none}
.wrap{width:min(var(--max),calc(100% - 48px))}
.nav{width:min(var(--max),calc(100% - 48px))}
.card{padding:25px}
.app-main{padding:40px 44px 78px}
.legacy-app-main>.wrap{max-width:1360px}
.btn{min-height:45px;padding:10px 17px;font-size:14px}
.btn-sm{min-height:38px;padding:8px 12px}

/* Every text-entry control uses a deliberate Windows CJK font and one UI language. */
input,select,textarea,option{font-family:var(--font-control)!important;letter-spacing:0}
.inp,
select.inp,
textarea.inp,
.filterbar input,
.filterbar select,
.sort-field select,
.filter-panel input,
.filter-panel select,
.status-select{
  min-height:46px;
  padding:10px 13px;
  border:1px solid #cfd8cc;
  border-radius:8px;
  background-color:#fff;
  color:#202620;
  font-size:14px;
  line-height:1.5;
  box-shadow:inset 0 1px 2px rgba(21,40,24,.035),0 1px 0 rgba(255,255,255,.8);
  outline:0;
  transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease;
}
.inp:hover,.filterbar input:hover,.filterbar select:hover,.sort-field select:hover,.filter-panel input:hover,.filter-panel select:hover,.status-select:hover{border-color:#adbca9}
.inp:focus,.filterbar input:focus,.filterbar select:focus,.sort-field select:focus,.filter-panel input:focus,.filter-panel select:focus,.status-select:focus{border-color:#4c99df;box-shadow:0 0 0 4px rgba(39,135,232,.12),inset 0 1px 2px rgba(21,40,24,.025);background:#fff}
.inp::placeholder,.filterbar input::placeholder,.filter-panel input::placeholder,.search-field input::placeholder,.resource-search input::placeholder{color:#929d91;opacity:1}
select.inp,.filterbar select,.sort-field select,.filter-panel select,.status-select{padding-right:34px;cursor:pointer}
textarea.inp{min-height:112px;line-height:1.75;resize:vertical}
input[type="file"].inp{padding:7px 9px;background:#f9fbf8;color:var(--muted)}
input[type="file"]::file-selector-button{height:32px;margin-right:11px;padding:0 12px;border:1px solid #cbd6c8;border-radius:6px;background:#fff;color:#334034;font-family:var(--font-control);font-weight:700;cursor:pointer}
.search-field{height:46px;border-color:#cfd8cc;background:#fff;box-shadow:inset 0 1px 2px rgba(21,40,24,.03)}
.search-field input,.resource-search input{font-family:var(--font-control)!important;font-size:14px}
.status-select{height:37px;min-height:37px;padding-top:0;padding-bottom:0}
.field{margin-bottom:23px}
.field>label,.lb{margin-bottom:9px}
.hint{line-height:1.65;margin-top:7px;margin-bottom:10px}
.inp + .hint,select.inp + .hint,textarea.inp + .hint{margin-top:9px}

/* Larger content scale without wasteful vertical gaps. */
.sec{padding:82px 0}
.pricing-tease{padding-top:64px}
.final-cta{padding:28px 0 68px}
.final-cta-in{padding:38px 42px}
.final-cta-in h2{font-size:34px}
.plan-row{padding:27px 28px}
.resource-workspace{width:min(1240px,calc(100% - 48px));padding-top:42px}
.resource-workspace>.alert{margin-bottom:18px}
.resource-filter{margin-top:18px}
.profile-workspace{width:min(100%,1280px)}
.profile-layout{grid-template-columns:230px minmax(0,1fr);gap:42px}

/* More refined wizard choreography, including the content inside each step. */
.wizard-stage{position:relative;overflow:hidden;border-radius:14px;isolation:isolate}
.wizard-step{transform-origin:50% 24%;transition:opacity .22s ease,filter .26s ease,transform .38s cubic-bezier(.16,1,.3,1);will-change:opacity,filter,transform}
.wizard-step.is-leaving{opacity:0;filter:blur(4px);transform:translate3d(calc(var(--wizard-direction,1) * -20px),6px,0) scale(.985)}
.wizard-step.is-preparing{opacity:0;filter:blur(5px);transform:translate3d(calc(var(--wizard-direction,1) * 24px),10px,0) scale(.982)}
.wizard-step.is-entering{animation:wizard-panel-in .48s cubic-bezier(.16,1,.3,1) both}
.wizard-step.is-entering>.sh,.wizard-step.is-entering>.sd,.wizard-step.is-entering>.field,.wizard-step.is-entering>.row,.wizard-step.is-entering>.step-insight,.wizard-step.is-entering>.profile-review,.wizard-step.is-entering>.review-notice{animation:wizard-content-in .42s cubic-bezier(.16,1,.3,1) both}
.wizard-step.is-entering>.sd{animation-delay:.035s}.wizard-step.is-entering>.field,.wizard-step.is-entering>.row{animation-delay:.065s}.wizard-step.is-entering>.step-insight,.wizard-step.is-entering>.review-notice{animation-delay:.09s}
@keyframes wizard-panel-in{from{opacity:0;filter:blur(5px);transform:translate3d(calc(var(--wizard-direction,1) * 24px),10px,0) scale(.982)}to{opacity:1;filter:none;transform:none}}
@keyframes wizard-content-in{from{opacity:0;transform:translate3d(0,8px,0)}to{opacity:1;transform:none}}

/* Continuous evaluation animation; transforms only to avoid frame drops. */
.loading-wrap{min-height:calc(100vh - 90px);padding:44px 20px}
.loading-card{width:min(620px,100%);padding:46px 48px 42px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 70px rgba(30,49,31,.1)}
.load-visual{position:relative;width:112px;height:112px;margin:0 auto 28px;display:grid;place-items:center;contain:layout paint}
.load-ring{position:absolute;inset:0;border-radius:50%;border:2px solid transparent;border-top-color:var(--green-strong);border-right-color:#69b04c;animation:load-spin 1.35s linear infinite;will-change:transform}
.load-ring:before{content:"";position:absolute;inset:9px;border-radius:50%;border:1px solid #d8e7d4;border-left-color:var(--blue);border-bottom-color:var(--blue);animation:load-spin-reverse 1.9s linear infinite;will-change:transform}
.load-orbit{position:absolute;inset:21px;border-radius:50%;background:conic-gradient(from 90deg,rgba(155,234,99,.12),rgba(39,135,232,.12),rgba(155,234,99,.12));animation:load-breathe 2.4s ease-in-out infinite}
.load-core{position:relative;z-index:1;width:49px;height:49px;border-radius:50%;display:grid;place-items:center;background:#f3faef;color:var(--green-strong);box-shadow:0 0 0 8px rgba(155,234,99,.09)}
.load-core svg{width:23px;height:23px;animation:load-core-pulse 1.8s ease-in-out infinite}
@keyframes load-spin{to{transform:rotate(360deg)}}@keyframes load-spin-reverse{to{transform:rotate(-360deg)}}
@keyframes load-breathe{50%{transform:scale(.9);opacity:.68}}@keyframes load-core-pulse{50%{transform:scale(1.1)}}
.load-t{font-size:24px;font-weight:780;line-height:1.5}
.load-s{min-height:26px;margin-top:10px;font-size:14px;transition:opacity .18s ease,transform .18s ease}
.load-s.is-changing{opacity:0;transform:translateY(4px)}
.load-bar{position:relative;width:100%;height:9px;margin:27px auto 17px;background:#eaf0e8;overflow:hidden}
.load-bar i{position:relative;width:6%;background:linear-gradient(90deg,var(--green-strong),#76cc4f,var(--blue));transition:none;will-change:width}
.load-bar i:after{content:"";position:absolute;inset:0;width:36%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);animation:load-shimmer 1.25s linear infinite}
@keyframes load-shimmer{from{transform:translateX(-120%)}to{transform:translateX(360%)}}
.load-meta{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:10px;color:var(--muted-2);font-size:12px}
.load-percent{color:var(--green-strong);font-weight:800;font-variant-numeric:tabular-nums}
.load-tips{max-width:none;margin-top:18px;line-height:1.75}

/* Result card buttons + detail typography. Full card layout lives in the unified block at end of file. */
.route-detail>div>span{font-size:11px;font-weight:700;color:#788278}
.route-detail p{font-size:12.5px;color:#505a51;line-height:1.72}
.detail-actions{align-items:center;padding-top:10px;margin-top:2px;border-top:1px solid #e6ece3}
.detail-actions .primary-entry{min-width:132px}
.route-collapse-btn{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:7px;padding:0 9px;font-size:11px;white-space:nowrap;cursor:pointer;flex:0 0 auto;height:36px;min-height:36px}
.route-collapse-btn:hover{color:var(--ink);border-color:var(--line-strong)}
.route-collapse-btn svg{width:13px;height:13px;transition:transform .18s ease}
.route-item.collapsed .route-collapse-btn svg{transform:rotate(180deg)}
.route-item.collapsed .route-detail{display:none!important}
.announcement-entry{color:var(--muted);border-color:var(--line);background:#fff;height:36px;min-height:36px}
.route-actions .status-select{height:36px;min-height:36px;line-height:36px;padding-top:0;padding-bottom:0}

/* Information is presented as structured UI instead of unstyled text rows. */
.kv{display:grid;grid-template-columns:minmax(112px,.42fr) minmax(0,1fr);gap:16px;align-items:center;min-height:52px;margin:7px 0;padding:11px 13px;border:1px solid #e3e9e0!important;border-radius:8px;background:#f8faf7;color:#303830;font-size:13px}
.kv .k{color:#788278;font-size:12px;font-weight:700}
.kv>span:last-child{text-align:right;min-width:0;word-break:break-word}
.kv code{display:inline-flex;padding:3px 7px;border:1px solid #dce5d9;border-radius:5px;background:#fff;color:#315b34;font-family:Consolas,monospace}
.account-page .card>.kv,.legacy-app-main .card>.kv{box-shadow:0 2px 7px rgba(31,48,30,.025)}
.admin-feature-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;padding:0!important;list-style:none;counter-reset:feature}
.admin-feature-list li{position:relative;margin:0;padding:16px 15px 16px 48px;border:1px solid #e0e8dd;border-radius:8px;background:#f8faf7;color:#535e54;line-height:1.75}
.admin-feature-list li:before{counter-increment:feature;content:counter(feature);position:absolute;left:15px;top:17px;width:24px;height:24px;display:grid;place-items:center;border-radius:6px;background:#e9f6e4;color:var(--green-strong);font-size:11px;font-weight:800}
.admin-callout{padding:14px 15px!important;border:1px solid #dae6d6;border-radius:8px;background:#f6faf4;color:#5b665b!important;line-height:1.75}

/* Generated codes and management tables. */
.card-code-list{max-height:320px;white-space:pre-wrap;word-break:break-all;overflow:auto;font-family:Consolas,"Microsoft YaHei UI",monospace;font-size:13px;line-height:1.9;tab-size:2}
.card-code-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:13px}
.card-code-actions form{margin:0}
.admin-page .tb{table-layout:fixed;min-width:760px}
.admin-page .tb th,.admin-page .tb td{box-sizing:border-box;text-align:left;vertical-align:middle}
.admin-page .tb th{height:43px;padding:11px 12px}
.admin-page .tb td{height:52px;padding:12px}
.admin-page .tb th:first-child,.admin-page .tb td:first-child{padding-left:14px}
.cards-table{min-width:1120px!important}.users-table{min-width:1050px!important}.resources-table{min-width:980px!important}
.tb-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.upload-preview-form{margin-top:16px}
.upload-note{margin:14px 0 0!important}

@media (max-width:1100px){
  .app-main{padding-left:30px;padding-right:25px}
  .admin-feature-list{grid-template-columns:1fr}
}
@media (max-width:900px){
  .profile-layout{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:720px){
  body{font-size:14.5px}
  .wrap{width:calc(100% - 26px)}
  .card{padding:20px 17px}
  .final-cta{padding-top:20px}
  .loading-wrap{padding:20px 0;min-height:calc(100vh - 74px)}
  .loading-card{padding:34px 20px 30px}
  .load-visual{width:96px;height:96px;margin-bottom:23px}
  .load-t{font-size:20px}
  .load-meta{align-items:flex-start}
  .wizard-stage{border-radius:10px}
  .detail-actions{flex-direction:column;align-items:stretch}
  .detail-actions .btn{width:100%}
  .kv{grid-template-columns:1fr;gap:4px;padding:11px 12px}
  .kv>span:last-child{text-align:left}
}

/* 2026.08 visual hierarchy, administration tables and configurable branding. */
:root{--max:1480px}
body{font-size:16.2px}
.wrap,.nav{width:min(var(--max),calc(100% - 44px))}
.pricing-tease{padding-bottom:0}
.app-main{padding-left:34px;padding-right:34px}
.route-header,.route-notice,.route-kpis,.route-table,.route-feature-strip{width:100%;max-width:none}
.resource-workspace{width:min(1360px,calc(100% - 44px))}
.profile-workspace{width:min(100%,1360px)}
.admin-page .adm{padding-right:30px;padding-left:calc(var(--sidebar) + 30px)}
.admin-page .adm>div{max-width:1520px}

/* A distinct product mark that also accepts a user-uploaded image. */
.brand-mark{position:relative;flex:0 0 auto;width:36px;height:36px;border-radius:9px;background:var(--green);color:#164f20;box-shadow:inset 0 0 0 1px rgba(35,91,39,.16),3px 3px 0 #ddd7f8;overflow:hidden}
.brand-mark-default{display:grid;place-items:center}
.brand-mark-default svg{width:20px;height:20px;stroke-width:2.35}
.brand-mark-image{display:grid;place-items:center;background:#fff;border:1px solid #d6ded3;box-shadow:0 3px 11px rgba(27,43,29,.09);overflow:hidden}
.brand-mark-image img{display:block;width:100%;height:100%;object-fit:contain}
.app-brand .brand-mark{width:36px;height:36px;font-size:0}
.mobile-app-head .brand-mark{width:31px;height:31px}

/* Result cards: company and score are the primary scan targets. */
.route-company{display:flex;align-items:center;gap:10px;min-width:0}
.route-company-icon{width:34px;height:34px;display:grid;place-items:center;flex:0 0 34px;border:1px solid #d9e9d3;border-radius:8px;background:#eff8eb;color:var(--green-strong)}
.route-company-icon svg{width:17px;height:17px}
.route-company-copy{min-width:0;display:block}
.route-company b{font-size:16px!important;font-weight:800;color:#121713;line-height:1.35}
.route-company small{font-size:11.5px;color:#758075}
.route-match{align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding:7px 9px;border:1px solid #ded8f6;border-radius:8px;background:#f8f6ff}
.route-match em{display:flex;align-items:center;gap:3px;margin-bottom:1px;color:#7666b0;font-size:9px;font-style:normal;font-weight:750;line-height:1}
.route-match em svg{width:10px;height:10px}
.route-match>div{justify-content:flex-start}
.route-match b{font-size:22px;color:#5e3bd7}
.route-match>span{height:4px;margin-top:3px;background:#e5e0f8}
.route-actions,.status-control{width:100%;min-width:0}
.status-control{display:block}
.status-select{display:block;width:100%;min-width:108px;height:40px;min-height:40px;padding:0 32px 0 10px;font-size:12px!important;line-height:40px;text-align:left;text-overflow:ellipsis}

/* The rotating loader stays above the progress bar as a separate visual stage. */
.load-satellites{position:absolute;inset:7px;border-radius:50%;animation:load-spin 2.8s linear infinite;will-change:transform}
.load-satellites i{position:absolute;width:7px;height:7px;border-radius:2px;background:var(--blue);box-shadow:0 0 0 4px rgba(39,135,232,.09)}
.load-satellites i:nth-child(1){left:50%;top:-3px}.load-satellites i:nth-child(2){right:1px;bottom:17px;background:var(--green-strong);box-shadow:0 0 0 4px rgba(36,107,42,.08)}.load-satellites i:nth-child(3){left:5px;bottom:13px;background:var(--purple);box-shadow:0 0 0 4px rgba(104,69,232,.08)}
.load-visual{margin-bottom:30px}
.load-bar{overflow:hidden}
.load-bar>i{overflow:hidden}

/* Shared icon-led hierarchy for administration pages. */
.admin-title-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;border:1px solid #cfe3c8;border-radius:9px;background:#eaf6e5;color:var(--green-strong)}
.admin-title-icon svg{width:20px;height:20px}
.admin-card-title{display:flex;align-items:center;gap:11px;min-width:0;margin-bottom:20px}
.admin-card-title>span:first-child{width:34px;height:34px;display:grid;place-items:center;flex:0 0 34px;border:1px solid #d9e5d5;border-radius:8px;background:#f0f6ee;color:#356f38}
.admin-card-title>span:first-child svg{width:17px;height:17px}
.admin-card-title>div{min-width:0}
.admin-card-title h3{margin:0;font-size:17px;line-height:1.35}
.admin-card-title p{margin:3px 0 0;color:var(--muted-2);font-size:11.5px;line-height:1.45}
.admin-card-title.compact{margin:0 0 14px}
.admin-card-title.compact>span:first-child{width:31px;height:31px;flex-basis:31px}
.admin-card-title.compact h3{font-size:15px}
.admin-page .btn{gap:7px}
.admin-page .btn svg{width:15px;height:15px}
.danger-btn{border-color:#eccdc7!important;background:#fff8f6!important;color:#a2483d!important}
.danger-btn:hover{border-color:#d79b91!important;background:#fff1ee!important}
.upload-actions{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start;margin-top:6px}
.upload-action-form{flex:1 1 320px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:18px 18px 16px;border:1px dashed #d8e1d5;border-radius:10px;background:#fbfdfa}
.upload-action-form .field{margin:0;width:100%}
.upload-action-form .btn{align-self:flex-start}
.upload-action-form .upload-action-spacer{align-self:flex-start}
.upload-action-form .hint{margin:0;line-height:1.55}
.dashboard-actions{display:flex;gap:11px;flex-wrap:wrap;margin:13px 0 30px}
.dashboard-environment{padding-top:24px;border-top:1px solid var(--line)}
.connectivity-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.connectivity-actions form{margin:0}

/* Metrics and data tables use consistent visual and typographic alignment. */
.admin-page .metric{position:relative;overflow:hidden;padding-right:62px}
.admin-page .metric .metric-icon{position:absolute;right:17px;top:17px;width:32px;height:32px;padding:7px;border-radius:8px;background:#edf5fb;color:#2b73aa}
.admin-page .g4>.metric:nth-child(4n+2) .metric-icon{background:#eef8e9;color:#2e7136}.admin-page .g4>.metric:nth-child(4n+3) .metric-icon{background:#f2effd;color:#654bc1}.admin-page .g4>.metric:nth-child(4n+4) .metric-icon{background:#fff6e7;color:#8a611e}
.admin-page .tb{border:1px solid #dce4d9;border-radius:8px;background:#fff;font-family:var(--font-ui);font-size:13.5px;color:#303831;overflow:hidden}
.admin-page .tb thead th{height:48px;padding:12px 14px;background:#edf2eb;color:#59655a;font-size:12px;font-weight:750;line-height:1.35;border-bottom:1px solid #d5ded2}
.admin-page .tb tbody td{height:58px;padding:13px 14px;line-height:1.6;color:#3b443c;border-bottom:1px solid #e8ede6;background:#fff;font-variant-numeric:tabular-nums}
.admin-page .tb tbody tr:nth-child(even) td{background:#fafcf9}
.admin-page .tb tbody tr:hover td{background:#f2f8ef}
.admin-page .tb tbody tr:last-child td{border-bottom:0}
.admin-page .tb th,.admin-page .tb td{text-align:left;vertical-align:middle}
.admin-page .cards-table th:nth-child(n+4):nth-child(-n+6),.admin-page .cards-table td:nth-child(n+4):nth-child(-n+6),.admin-page .users-table th:nth-child(n+5):nth-child(-n+6),.admin-page .users-table td:nth-child(n+5):nth-child(-n+6),.admin-page .resources-table th:nth-child(n+3):nth-child(-n+5),.admin-page .resources-table td:nth-child(n+3):nth-child(-n+5){text-align:center}
.admin-page .tb input[type="checkbox"]{width:17px;height:17px;accent-color:var(--green-strong)}
.table-code{display:inline-flex;padding:5px 8px;border:1px solid #dce5d9;border-radius:6px;background:#f6faf5;color:#2e6134;font-family:Consolas,"Microsoft YaHei UI",monospace;font-size:12px;line-height:1.2}
.cell-primary{font-weight:750;color:#202720}
.table-user,.resource-table-title{display:flex;align-items:center;gap:8px;min-width:0}
.table-user>svg,.resource-table-title>svg{width:18px;height:18px;flex:0 0 18px;color:#5c805c}
.resource-table-title>span{min-width:0}.resource-table-title b{font-weight:750}
.table-empty{height:120px!important;text-align:center!important;color:var(--muted-2)!important}
.table-empty svg{display:block;width:23px;height:23px;margin:0 auto 8px}
.table-icon-action{width:34px;height:34px;min-height:34px;border-color:#d8e1d5;background:#fff;color:#506052}
.table-icon-action:hover{border-color:#a9c3a4;background:#f1f8ee;color:var(--green-strong)}
.table-icon-action.danger{color:#a4564b}.table-icon-action.danger:hover{border-color:#ddb0a8;background:#fff4f2;color:#9e4036}
.tb-actions{gap:7px;flex-wrap:nowrap}
.cards-table{min-width:max(1180px,100%)!important}.users-table{min-width:max(1020px,100%)!important}.resources-table{min-width:max(980px,100%)!important}
/* Orders table: long order numbers/usernames truncate instead of overlapping. */
.orders-table{min-width:max(1120px,100%)!important}
.orders-table .order-no{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.orders-table .cell-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bulk-actions{gap:14px!important;margin-bottom:16px!important}
.bulk-actions>.btn{height:39px;min-width:128px;justify-content:center}
.bulk-select{display:inline-flex!important;align-items:center;gap:8px}
.bulk-select input{width:16px;height:16px;margin:0;accent-color:var(--green-strong)}
.ai-config-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ai-config-actions .chip span,.ai-config-actions>.btn{min-height:43px;display:inline-flex;align-items:center}
.ai-config-actions .chip span{padding-top:0;padding-bottom:0}
.ai-config-actions>.btn{height:43px;padding-top:0;padding-bottom:0}
.ai-cost-section{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}
.ai-cost-section .admin-card-title.compact{margin-top:0}
.table-code-cell{display:flex;align-items:center;gap:8px;min-width:0}
.table-code-cell .table-code{min-width:0;max-width:calc(100% - 38px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.table-copy-action{flex:0 0 30px;width:30px;height:30px;min-height:30px;border:1px solid #d8e1d5;background:#fff;color:#547057}
.table-copy-action svg{width:14px;height:14px}
.table-copy-action:hover,.table-copy-action.is-copied{border-color:#9bc990;background:#eef8e9;color:var(--green-strong)}
.admin-page .cards-table th:first-child,.admin-page .cards-table td:first-child{text-align:center;padding-left:8px;padding-right:8px}

/* Logo mode control and preview on the site settings page. */
.logo-settings{margin:2px 0 27px;padding:24px 0 25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.logo-config-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:32px;align-items:center}
.logo-mode{display:inline-flex;padding:4px;border:1px solid #d5ddd2;border-radius:9px;background:#f1f4f0}
.logo-mode label{cursor:pointer}
.logo-mode input{position:absolute;opacity:0;pointer-events:none}
.logo-mode span{height:38px;display:inline-flex;align-items:center;gap:7px;padding:0 14px;border-radius:6px;color:#6b756b;font-size:13px;font-weight:700}
.logo-mode span svg{width:16px;height:16px}
.logo-mode input:checked+span{background:#fff;color:#245f2b;box-shadow:0 2px 8px rgba(30,49,31,.09)}
.logo-upload-field{margin:17px 0 0;opacity:.56;transition:opacity .2s ease}
.logo-upload-field.is-active{opacity:1}
.logo-preview{min-height:100px;display:flex;align-items:center;gap:15px;padding:18px 20px;border-left:3px solid #9fd28e;background:#f6faf4}
.logo-preview>.logo-preview-default,.logo-preview>.logo-preview-image{flex:0 0 auto}
.logo-preview .brand-mark{width:54px;height:54px;border-radius:11px}
.logo-preview .brand-mark svg{width:27px;height:27px}
.logo-preview>span:last-child b,.logo-preview>span:last-child small{display:block}
.logo-preview>span:last-child b{font-size:13px}.logo-preview>span:last-child small{margin-top:4px;color:var(--muted-2);font-size:11px}

@media (max-width:1100px){
  .app-main{padding-left:25px;padding-right:25px}
  .admin-page .adm{padding-right:24px;padding-left:calc(var(--sidebar) + 24px)}
}
@media (max-width:900px){
  .admin-page .adm{padding-left:18px;padding-right:18px}
  .logo-config-grid{grid-template-columns:1fr}
}
@media (max-width:720px){
  .wrap,.nav{width:calc(100% - 24px)}
  .app-main{padding-left:13px;padding-right:13px}
  .admin-page .adm{padding-left:12px;padding-right:12px}
  .admin-title-icon{width:34px;height:34px;flex-basis:34px}.admin-title-icon svg{width:18px;height:18px}
  .admin-page .adm>div>.adm-h{gap:9px}
  .admin-page .metric{padding-right:52px}
  .admin-page .metric .metric-icon{right:13px;top:13px;width:29px;height:29px}
  .dashboard-actions{margin-bottom:26px}
  .connectivity-actions{align-items:stretch}.connectivity-actions form,.connectivity-actions .btn{width:100%}
  .upload-actions{flex-direction:column;gap:12px}
  .upload-action-form{flex-basis:100%;padding:14px}
  .ai-config-actions{align-items:stretch}.ai-config-actions .chip,.ai-config-actions .chip span,.ai-config-actions>.btn{width:100%}
  .logo-mode{display:flex;width:100%}.logo-mode label{flex:1}.logo-mode span{justify-content:center;padding:0 8px}
  .logo-preview{padding:15px}
}

/* Motion remains visible for the two workflows where progress feedback is essential. */
.wizard-step.is-leaving{transition:opacity .3s ease,filter .34s ease,transform .44s cubic-bezier(.16,1,.3,1)!important}
.wizard-step.is-entering{animation:wizard-panel-in .52s cubic-bezier(.16,1,.3,1) both!important}
.wizard-step.is-entering>.sh,.wizard-step.is-entering>.sd,.wizard-step.is-entering>.field,.wizard-step.is-entering>.row,.wizard-step.is-entering>.step-insight,.wizard-step.is-entering>.profile-review,.wizard-step.is-entering>.review-notice{animation:wizard-content-in .46s cubic-bezier(.16,1,.3,1) both!important}
.load-ring{border-width:3px;animation:load-spin 1.1s linear infinite!important}
.load-ring:before{animation:load-spin-reverse 1.65s linear infinite!important}
.load-satellites{animation:load-spin 2.25s linear infinite!important}
.load-orbit{animation:load-breathe 2.1s ease-in-out infinite!important}
.load-core svg{animation:load-core-pulse 1.55s ease-in-out infinite!important}

/* Personal center */
.account-workspace{width:min(1400px,100%);margin:0 auto;padding:8px 0 60px}
.account-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(390px,520px);align-items:center;gap:42px;margin-bottom:24px;padding:12px 2px 28px;border-bottom:1px solid var(--line)}
.account-hero-copy h1{font-size:36px;margin:5px 0 9px}
.account-hero-copy p{max-width:620px;color:var(--muted);margin-bottom:18px}
.account-logout{border-color:#e5c6c0;color:#a3483e;background:#fff9f7}
.account-logout:hover{border-color:#d79a90;background:#fff2ef}
.account-identity{min-width:0}
.account-person{display:flex;align-items:center;gap:12px;padding:13px 15px;border-left:3px solid #8abedd;background:#f5f9fc}
.account-avatar{width:48px;height:48px;display:grid;place-items:center;flex:0 0 48px;border-radius:50%;background:#dcecf8;color:#236a9d;font-size:18px;font-weight:800}
.account-person>span:nth-child(2){min-width:0;flex:1}.account-person b,.account-person small{display:block}.account-person b{font-size:15px}.account-person small{margin-top:3px;color:var(--muted-2);font-size:11px}
.account-person>svg{width:21px;color:#3d8a45}
.account-metrics{margin-bottom:22px}
.account-metric{position:relative;overflow:hidden;padding-right:58px;min-height:122px}
.account-metric>svg{position:absolute;right:17px;top:17px;width:31px;height:31px;padding:7px;border-radius:8px;background:#edf5fb;color:#2c70a4}
.account-metric:nth-child(2)>svg{background:#eef8e9;color:#34733a}.account-metric:nth-child(3)>svg{background:#f2effd;color:#654bc1}.account-metric:nth-child(4)>svg{background:#fff6e7;color:#8a611e}
.account-metric b{font-size:29px;line-height:1.25}.account-metric span{margin-top:6px}
.account-grid{align-items:stretch}
.account-card{min-width:0;height:100%}
.account-vip-divider{margin-top:24px!important;margin-bottom:16px!important}.account-vip-details{padding-top:2px}
.account-card-title{display:flex;align-items:center;gap:11px;margin-bottom:16px}
.account-card-title>span{width:36px;height:36px;display:grid;place-items:center;flex:0 0 36px;border:1px solid #d9e5d5;border-radius:8px;background:#f0f6ee;color:#356f38}
.account-card-title>span svg{width:18px;height:18px}
.account-card-title h3{margin:0;font-size:17px}.account-card-title small{display:block;margin-top:2px;color:var(--muted-2);font-size:10.5px}
.account-card .btn svg{width:15px}
.side-user .side-logout{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;color:#8a514a;font-size:10px;white-space:nowrap}
.side-user .side-logout svg{width:14px;height:14px}
.side-user .side-logout:hover{color:#a23f35}

.card-pager .disabled{opacity:.5;cursor:not-allowed}.card-pager .ellipsis{padding:0 3px;border:0;background:transparent}.card-pager svg{width:14px;height:14px}

@media (max-width:900px){
  .account-hero{grid-template-columns:1fr;gap:21px}
  .admin-page .adm-side .app-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .admin-page .adm-side .app-nav a{width:100%;margin:0;align-items:center}
  .admin-page .adm-side .side-foot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .admin-page .adm-side .admin-foot-link{margin:0;min-height:38px;align-items:center}
}

@media (max-width:720px){
  .nav-links{display:flex;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-8px) scale(.985);transform-origin:top center;border-radius:12px;transition:opacity .22s ease,transform .3s cubic-bezier(.16,1,.3,1),visibility 0s linear .3s}
  .nav-open .nav-links{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0) scale(1);transition-delay:0s}
  .nav-open .nav-toggle{background:#eef8e9;border-color:#bad9af;color:var(--green-strong)}
  .nav-links a.ghost,.nav-links a.cta{margin-left:0}
  .mobile-app-nav{padding-bottom:env(safe-area-inset-bottom);height:calc(62px + env(safe-area-inset-bottom))}
  .mobile-app-nav a{flex:1;min-width:0;padding:0 2px}

  .profile-page .legacy-app-main{overflow:visible}
  .profile-workspace{width:100%;padding-bottom:22px}
  .profile-tip{align-items:flex-start;flex-wrap:wrap}.profile-tip span{min-width:calc(100% - 28px)}
  .wizard-stage{overflow:visible;isolation:auto}
  .wizard-step{width:100%;max-width:100%;overflow:visible}
  .wizard-progress{width:100%;max-width:100%;padding-bottom:8px}
  .wizard-actions{position:static;margin-top:16px;padding:10px 0 0;background:transparent;backdrop-filter:none}
  .wizard-actions .btn{min-height:44px}
  .region-top .inp{width:100%;min-width:100%!important}
  .casc-col,.region-box{min-width:0}.casc-list,.city-list{max-width:100%}

  .pricing-grid,.pricing-steps,.account-grid,.account-metrics{grid-template-columns:1fr!important}
  .pricing-page .wrap{padding-top:24px!important}
  .pricing-howto{padding:20px 17px}
  .account-workspace{padding:6px 0 24px}
  .account-hero{display:block;margin-bottom:17px;padding:8px 0 20px}
  .account-hero-copy h1{font-size:29px}.account-hero-copy p{font-size:12.5px}
  .account-identity{margin-top:18px}.account-person{padding:12px}
  .account-metrics{gap:10px}.account-metric{min-height:105px}
  .account-grid{gap:12px}.account-card{padding:19px 16px}
  .account-logout{width:100%;justify-content:center}

  .admin-page .g3{grid-template-columns:1fr!important}
  .admin-page .adm-side .app-brand{align-items:center}
  .admin-page .adm-side .app-nav a{justify-content:flex-start;padding:0 11px}
}

/* Final interaction and spacing refinements. */
.countdown-card{padding:11px;border:1px solid #d7e3d3;border-radius:8px;background:#f7faf5}
.countdown-card>span{display:flex;align-items:center;gap:6px;color:#607060;font-size:10px;font-weight:700;line-height:1.4}
.countdown-card>span svg{width:14px;height:14px;flex:0 0 14px;color:var(--green-strong)}
.countdown-card strong{display:block;margin-top:6px;color:#274f2c;font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.35;white-space:nowrap}
.app-side>.sidebar-countdown{margin-top:auto;margin-bottom:14px}
.app-side>.side-foot{margin-top:0}
.mobile-account-countdown{display:none}
.price-card .po{min-height:21px;color:var(--muted-2);font-size:12px;text-decoration-line:line-through;text-decoration-thickness:1.5px;text-decoration-color:#9a625b}
.result-page .app-main{padding-top:46px;padding-bottom:92px}
.result-page .route-title{margin-bottom:30px}
.result-page .route-kpis{margin-bottom:24px}
.result-page .route-feature-strip{margin-bottom:20px}
.result-page .route-toolbar{margin-bottom:16px}
.result-page .route-summary{margin-bottom:14px}

@media (max-width:720px){
  .result-page .app-main{padding-top:22px;padding-bottom:94px}
  .result-page .route-title{margin-bottom:23px}
  .result-page .route-kpis{margin-bottom:17px}
  .result-page .route-feature-strip{margin-bottom:17px}
  .result-page .route-toolbar{margin-bottom:15px}
  .result-page .route-summary{margin-top:14px;margin-bottom:14px}
  .mobile-account-countdown{display:block;margin-top:10px;padding:13px 14px}
  .mobile-account-countdown>span{font-size:11px}
  .mobile-account-countdown strong{font-size:18px}
}

/* Administrator authentication */
.admin-login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(310px,.72fr) minmax(500px,1.28fr);background:#f4f6f2}
.admin-login-brand{display:flex;flex-direction:column;padding:52px clamp(38px,5vw,78px);background:#1d3921;color:#f4faf2}
.admin-login-logo{display:flex;align-items:center;gap:12px;color:#fff}
.admin-login-logo .brand-mark{width:42px;height:42px}
.admin-login-logo b,.admin-login-logo small{display:block}.admin-login-logo b{font-size:15px}.admin-login-logo small{margin-top:2px;color:#b8cbb9;font-size:10.5px}
.admin-login-brand-copy{margin:auto 0}.admin-login-brand-copy>span{color:#9ec99c;font-size:12px;font-weight:750}.admin-login-brand-copy h1{margin:8px 0 9px;color:#fff;font-size:38px}.admin-login-brand-copy p{margin:0;color:#c5d3c5;font-size:14px}
.admin-login-back{display:inline-flex;align-items:center;gap:7px;width:max-content;color:#c5d3c5;font-size:12px}.admin-login-back:hover{color:#fff}.admin-login-back svg{width:15px}
.admin-login-panel{display:grid;place-items:center;padding:48px}
.admin-login-card{width:min(100%,470px);padding:38px 40px 34px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 16px 42px rgba(31,48,30,.09)}
.admin-login-icon{width:48px;height:48px;display:grid;place-items:center;margin-bottom:20px;border:1px solid #cfe3c8;border-radius:9px;background:#eaf6e5;color:var(--green-strong)}.admin-login-icon svg{width:24px;height:24px}
.admin-login-card h2{margin:5px 0 7px;font-size:27px}.admin-login-intro{margin:0 0 25px;color:var(--muted);font-size:13px}
.admin-login-card .alert{margin-bottom:19px}.admin-login-card .field{margin-bottom:20px}.admin-login-card .btn{margin-top:4px}
.admin-login-input{position:relative}.admin-login-input>svg{position:absolute;z-index:1;left:14px;top:50%;width:17px;height:17px;color:var(--muted-2);transform:translateY(-50%);pointer-events:none}.admin-login-input .inp{height:48px;padding-left:43px;background:#fbfcfa}
.admin-login-security{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:22px;padding-top:19px;border-top:1px solid var(--line);color:var(--muted-2);font-size:11px}.admin-login-security svg{width:15px;color:var(--green-strong)}

@media (max-width:760px){
  .admin-login-shell{display:block;min-height:100vh}
  .admin-login-brand{min-height:0;padding:22px 20px 20px}
  .admin-login-brand-copy{display:none}.admin-login-back{margin-top:18px}
  .admin-login-panel{padding:30px 14px 46px}
  .admin-login-card{padding:29px 22px 26px}
  .admin-login-card h2{font-size:24px}
}

@media (max-width:420px){
  .admin-page .adm-side .app-nav,.admin-page .adm-side .side-foot{grid-template-columns:1fr}
  .card-pager{gap:4px;flex-wrap:wrap}.card-pager a,.card-pager span{padding-left:8px;padding-right:8px}
}

.route-result-count{display:flex;align-items:baseline;gap:7px;min-height:42px;padding:7px 12px;border:1px solid #d9e8d2;border-radius:10px;background:linear-gradient(110deg,#f4faef,#fff);color:var(--muted)}
.route-result-count>svg{width:17px;height:17px;color:var(--green-strong);align-self:center}.route-result-count strong{font-size:29px;line-height:1;color:var(--green-strong)}.route-result-count span{font-size:13px;font-weight:800;color:var(--ink)}.route-result-count small{font-size:11px;color:var(--muted-2);margin-left:3px}
@media (max-width:720px){.route-result-count{width:max-content;max-width:100%;padding:6px 10px}.route-result-count strong{font-size:25px}.route-result-count small{display:block;margin-left:0}}

/* 定制简历入口按钮（投递清单） */
.btn-resume{background:linear-gradient(135deg,#f1ecff,#eaf7e3);border-color:#d8cdf2;color:#5b3bd6}
.btn-resume:hover{background:linear-gradient(135deg,#e9e0ff,#ddf2d2);border-color:#c9b9ee;box-shadow:0 5px 14px rgba(104,69,232,.16)}



/* ===== VIP 尊贵标识（会员）与免费标识 ===== */
.vip-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;background:linear-gradient(135deg,#f9e9b8,#f0d485);border:1px solid #e2bd5a;color:#7a5a10;font-size:10.5px;font-weight:800;letter-spacing:.05em;white-space:nowrap;line-height:1.4;box-shadow:0 1px 3px rgba(179,137,32,.18)}
.vip-badge svg{width:11px;height:11px}
.vip-badge.sm{font-size:10px;padding:2px 8px}
.free-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;background:#f1f3f5;border:1px solid #dfe3e8;color:#6b7280;font-size:10.5px;font-weight:700;white-space:nowrap;line-height:1.4}
.free-badge svg{width:11px;height:11px}

/* ===== 后台卡密列表：VIP 方案标识 ===== */
.vip-chip{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:22px;padding:0 9px;border-radius:999px;background:linear-gradient(135deg,#f9e9b8,#f0d485);border:1px solid #e2bd5a;color:#7a5a10;font-size:10.5px;font-weight:800;letter-spacing:.05em;line-height:1;white-space:nowrap}
.vip-chip svg{width:10px;height:10px;flex:0 0 10px}

/* ===== 首页 hero：1v1 对标定制简历卖点卡（位于预览图下方，不重叠） ===== */
.hero-visual{display:flex;flex-direction:column;gap:14px;min-width:0}
.hero-ai-card{display:flex;align-items:center;gap:13px;padding:14px 16px;border-radius:14px;background:linear-gradient(120deg,#fff8e3,#fffdf4);border:1px solid #ecd9a0;box-shadow:0 10px 26px rgba(122,90,16,.10)}
.hero-ai-icon{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,#f9e9b8,#efcf7c);border:1px solid #e2bd5a;color:#7a5a10;box-shadow:0 4px 12px rgba(179,137,32,.18)}
.hero-ai-icon svg{width:20px;height:20px}
.hero-ai-card b{display:block;font-size:14px;color:#4a3d12}
.hero-ai-card small{display:block;margin-top:2px;color:#8a7a45;font-size:11.5px;line-height:1.55}

/* ===== 个人中心：VIP 尊享权益卡片 ===== */
.vip-panel{margin-top:2px;border-radius:16px;padding:17px;background:linear-gradient(165deg,#fffaf0,#fff4da);border:1px solid #ecd9a0;position:relative;overflow:hidden}
.vip-panel::before{content:"";position:absolute;right:-40px;top:-40px;width:130px;height:130px;border-radius:50%;background:radial-gradient(circle,rgba(242,217,138,.4),transparent 70%)}
.vip-panel::after{content:"";position:absolute;left:-46px;bottom:-56px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.55),transparent 70%)}
.vip-panel-head{position:relative;display:flex;align-items:center;gap:12px;margin-bottom:13px}
.vip-seal{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,#f9e9b8,#efcf7c);border:1px solid #e2bd5a;color:#7a5a10;box-shadow:0 4px 12px rgba(179,137,32,.22)}
.vip-seal svg{width:21px;height:21px}
.vip-panel-head b{display:block;font-size:15.5px;color:#5b4a17}
.vip-panel-head small{display:flex;align-items:center;gap:6px;margin-top:3px;color:#8a7a45;font-size:11px}
.vip-expiry{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.72);border:1px solid #eeddb0;font-size:12.5px;color:#8a7a45;margin-bottom:13px}
.vip-expiry span{display:inline-flex;align-items:center;gap:6px;min-width:0}
.vip-expiry svg{width:14px;height:14px;color:#b08a1e;flex:0 0 14px}
.vip-expiry strong{color:#5b4a17;font-size:13px;font-weight:800;letter-spacing:.02em;text-align:right;min-width:0;word-break:break-all}
.vip-feat-title{position:relative;font-size:11px;color:#9c8a52;font-weight:800;letter-spacing:.08em;margin-bottom:9px}
.vip-feats{position:relative;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vip-feats li{display:flex;align-items:center;gap:7px;font-size:12px;color:#4a3f1c;padding:8px 9px;border-radius:9px;background:rgba(255,255,255,.6);border:1px solid #f0e2bc;line-height:1.4}
.vip-feats svg{width:14px;height:14px;color:#b08a1e;flex:0 0 14px}
@media (max-width:520px){.vip-feats{grid-template-columns:1fr}}

/* ===== 开通会员页：1v1 对标定制简历卖点横幅 ===== */
.vip-selling{margin-bottom:24px;border-radius:18px;padding:24px;background:linear-gradient(150deg,#fffdf4,#fbf3d9);border:1px solid #ecd9a0;position:relative;overflow:hidden}
.vip-selling::before{content:"";position:absolute;right:-60px;top:-60px;width:190px;height:190px;border-radius:50%;background:radial-gradient(circle,rgba(242,217,138,.35),transparent 70%)}
.vip-selling-head{position:relative;display:flex;gap:16px;align-items:flex-start;margin-bottom:18px}
.vip-selling-seal{width:54px;height:54px;flex:0 0 54px;display:grid;place-items:center;border-radius:15px;background:linear-gradient(135deg,#f9e9b8,#efcf7c);border:1px solid #e2bd5a;color:#7a5a10;box-shadow:0 6px 16px rgba(179,137,32,.2)}
.vip-selling-seal svg{width:26px;height:26px}
.vip-selling h2{margin:2px 0 7px;font-size:20px;color:#4a3d12}
.vip-selling p{margin:0;color:#8a7a45;font-size:13px;line-height:1.75;max-width:820px}
.vip-selling-grid{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.vip-selling-item{display:flex;gap:11px;align-items:center;padding:13px 14px;border-radius:12px;background:rgba(255,255,255,.72);border:1px solid #f0e2bc}
.vsi-icon{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;border-radius:10px;background:linear-gradient(135deg,#fdf3d2,#f7e5a8);border:1px solid #ecd9a0;color:#8a611e}
.vsi-icon svg{width:17px;height:17px}
.vip-selling-item b{display:block;font-size:13px;color:#4a3f1c}
.vip-selling-item small{display:block;margin-top:2px;color:#9c8a52;font-size:11px;line-height:1.5}
@media (max-width:900px){.vip-selling-grid{grid-template-columns:1fr}}

/* ===== 移动端展开导航：链接间距与按钮样式（mobile nav gap fix） ===== */
@media (max-width:720px){
  .nav-links a{margin:2px 0;border-radius:9px}
  .nav-links a.ghost,.nav-links a.cta{margin:6px 0 0;text-align:center;border-radius:10px}
  .nav-links a.cta{margin-top:8px}
}


/* ===== 客户端发布页（download/index.php） ===== */
.dl-grid{align-items:stretch}
.dl-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:24px;height:100%}
.dl-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:13px;border:1px solid var(--line);margin-bottom:2px}
.dl-icon svg{width:23px;height:23px}
.dl-icon.green{background:linear-gradient(135deg,#eef6ea,#dcefce);border-color:#cfe3c4;color:var(--green-strong)}
.dl-icon.blue{background:#edf5fb;border-color:#d6e7f5;color:#2a6d9f}
.dl-icon.purple{background:#f2effd;border-color:#e2dcf7;color:#654bc1}
.dl-card h3{margin:0;font-size:17px}
.dl-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.75;flex:1}
.dl-meta{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted-2);background:#f4f7f2;border:1px solid var(--line);padding:4px 9px;border-radius:7px}
.dl-card .btn{width:100%;margin-top:6px}
.dl-date{margin:4px 0 0!important;font-size:11px!important;color:var(--muted-2)!important;flex:none!important}
.dl-note{margin-top:26px;padding:22px}
.dl-note h3{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:16px}
.dl-note h3 svg{width:17px;height:17px;color:var(--blue)}
.dl-note-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.dl-note-grid b{display:block;font-size:13px;margin-bottom:6px}
.dl-note-grid p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.75}
.dl-note-grid code{background:#f0f4ef;border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:12px}
@media (max-width:900px){.dl-note-grid{grid-template-columns:1fr}}

@media (max-width:720px){.dl-grid{grid-template-columns:1fr}.dl-card{padding:20px 18px}}


/* ===== 发布页：推荐标签 ===== */
.dl-card{position:relative}
.dl-flag{position:absolute;top:14px;right:14px;z-index:2;display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#f9e9b8,#f0d485);border:1px solid #e2bd5a;color:#7a5a10;font-size:10.5px;font-weight:800;letter-spacing:.02em;white-space:nowrap;box-shadow:0 2px 8px rgba(179,137,32,.16)}
.dl-flag svg{width:11px;height:11px}


/* ===== 发布页 v2：推荐标签与图标同行对齐，更新日期并入规格标签 ===== */
.dl-card{position:static}
.dl-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dl-card-top .dl-icon{margin-bottom:0}
.dl-flag{position:static;top:auto;right:auto;z-index:auto;display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#f9e9b8,#f0d485);border:1px solid #e2bd5a;color:#7a5a10;font-size:10.5px;font-weight:800;letter-spacing:.02em;white-space:nowrap;box-shadow:0 2px 8px rgba(179,137,32,.16)}
.dl-flag svg{width:11px;height:11px}
.dl-meta-date{margin-left:8px;padding-left:8px;border-left:1px solid #dfe5dc;color:var(--muted-2)}

.dl-card-top{width:100%}

/* flag-edge-fix：让推荐标签的视觉右缘与按钮右缘严格对齐，阴影不向右扩散 */
.dl-flag{box-shadow:0 3px 10px -5px rgba(179,137,32,.4)}


/* ===== 首页导航栏图标（与侧边导航一致） ===== */
.nav-links a{display:inline-flex;align-items:center;gap:5px}
.nav-links a svg{width:15px;height:15px;flex:0 0 15px}
.nav-links a.ghost svg,.nav-links a.cta svg{width:14px;height:14px}


/* tablet-nav-icon-hide：平板宽度导航拥挤，隐藏图标防止溢出；桌面与手机下拉菜单保留图标 */
@media (min-width:721px) and (max-width:1100px){
  .nav-links a svg{display:none}
  .nav-links a{gap:0}
}


/* ===== 后台：客户端发布卡片 ===== */
.client-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:#fbfcfa;min-width:0}
.client-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.client-icon{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;border-radius:10px;background:#edf5fb;border:1px solid #d6e7f5;color:#2a6d9f}
.client-head b{display:block;font-size:14px}
.client-head small{display:block;margin-top:2px;color:var(--muted-2);font-size:11px}
.client-current{margin-bottom:12px;font-size:12px;color:var(--muted);background:#f4f7f2;border:1px solid var(--line);border-radius:8px;padding:8px 10px;word-break:break-all;line-height:1.6}
.client-current code{font-size:11.5px;color:var(--ink)}
.client-mode{display:flex;gap:8px;margin-bottom:12px}
.client-mode label{position:relative;display:inline-flex;cursor:pointer}
.client-mode input{position:absolute;opacity:0}
.client-mode span{padding:6px 12px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:12.5px;color:var(--muted)}
.client-mode input:checked+span{background:#e8f6e3;border-color:#b9dda9;color:var(--green-strong);font-weight:700}
.client-local-fields[hidden],.client-url-fields[hidden]{display:none}

/* ===== 品牌、导航反馈与组件交互 ===== */
.brand{font-size:18px;gap:12px}
.brand .brand-mark{width:42px;height:42px;border-radius:10px}
.app-brand{gap:13px;padding-bottom:25px;border-radius:9px}
.app-brand .brand-mark{width:44px;height:44px;border-radius:10px}
.app-brand b{font-size:18px;line-height:1.18;white-space:nowrap}
.app-brand small{font-size:12px;line-height:1.3;margin-top:4px;white-space:nowrap}
.app-nav.sidebar-motion>a:hover{background:rgba(223,241,216,.52)}
.app-nav.sidebar-motion>a.on:hover{background:transparent}
.logo-preview-copy b,.logo-preview-copy small,.logo-preview-copy em{display:block}
.logo-preview-copy b{font-size:17px!important;line-height:1.25}
.logo-preview-copy small{font-size:12px!important;margin-top:3px!important;color:var(--muted)!important}
.logo-preview-copy em{margin-top:6px;color:var(--muted-2);font-size:10px;font-style:normal}
.code-input{font-family:Consolas,"Microsoft YaHei UI",monospace}

/* Personal-center metrics use four distinct non-purple status colors. */
.account-metric:nth-child(1){background:#f5f9fd;border-color:#cfe1ef}
.account-metric:nth-child(1)>svg{background:#dcecf8;color:#246a9b}
.account-metric:nth-child(1) b{color:#246a9b}
.account-metric:nth-child(2){background:#f3f9f0;border-color:#cfe3c8}
.account-metric:nth-child(2)>svg{background:#deefd8;color:#34733a}
.account-metric:nth-child(2) b{color:#34733a}
.account-metric:nth-child(3){background:#f0f9f7;border-color:#c4e3de}
.account-metric:nth-child(3)>svg{background:#d9efeb;color:#19756d}
.account-metric:nth-child(3) b{color:#19756d}
.account-metric:nth-child(4){background:#fff8ec;border-color:#ecd9b7}
.account-metric:nth-child(4)>svg{background:#f9e9c9;color:#8a611e}
.account-metric:nth-child(4) b{color:#8a611e}

.card,.metric,.route-kpi,.stepbox,.price-card,.res-card,.co,.resource-item,.dl-card,.client-card,.account-person,.review-row,.filterbar,.logo-preview{
  transition:border-color .22s ease,box-shadow .22s ease,background-color .22s ease;
}
.brand-mark,.account-card-title>span,.resource-item-icon,.route-company-icon,.client-icon{
  transition:border-color .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease;
}
@media (hover:hover) and (pointer:fine){
  .card:hover,.metric:hover,.route-kpi:hover,.stepbox:hover,.price-card:hover,.res-card:hover,.co:hover,.resource-item:hover,.dl-card:hover,.client-card:hover,.account-person:hover,.review-row:hover,.filterbar:hover,.logo-preview:hover{
    border-color:#b8c9b4;box-shadow:0 10px 26px rgba(31,48,30,.085)
  }
  .resource-item:hover{transform:none}
  .app-brand:hover{background:#f4f8f2}
  .card:hover .account-card-title>span,.resource-item:hover .resource-item-icon,.route-item:hover .route-company-icon,.client-card:hover .client-icon{
    border-color:#a9c6a3;box-shadow:0 4px 12px rgba(37,80,36,.09)
  }
  .tag:hover,.sel-city:hover,.picked:hover{filter:brightness(.975)}
}

@media (max-width:720px){
  .mobile-app-nav a{flex:1;min-width:0}
  .mobile-app-head{margin:14px 13px 0}
  .mobile-app-head a:first-child{gap:9px}
  .mobile-app-head a:first-child>span{display:block;min-width:0}
  .mobile-app-head a:first-child b,.mobile-app-head a:first-child small{display:block;white-space:nowrap}
  .mobile-app-head a:first-child b{font-size:16px;line-height:1.18}
  .mobile-app-head a:first-child small{margin-top:2px;color:var(--muted-2);font-size:10px;line-height:1.2}
  .mobile-app-head .brand-mark{width:36px;height:36px}
}



/* ============ 支付页 & 支付弹窗（Modal） ============ */
[hidden]{display:none!important}
.pay-head{text-align:center;margin:0 auto 24px;max-width:620px}
.pay-head-icon{width:54px;height:54px;border-radius:17px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eaf7e3,#d3efc4);color:var(--green-strong);margin-bottom:14px;box-shadow:0 8px 20px rgba(92,148,66,.16)}
.pay-head-icon svg{width:27px;height:27px}
.pay-head h1{font-size:27px;margin:0 0 7px}
.pay-head p{color:var(--muted);font-size:13.5px;margin:0}

.pay-card{max-width:560px;margin:0 auto;border-radius:20px;overflow:hidden;padding:26px 26px 24px}
.pay-card .divider{margin:18px 0}
.pay-summary{display:flex;align-items:center;gap:14px}
.pay-summary-icon{width:50px;height:50px;border-radius:15px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f2effd,#e3dcfb);color:#654bc1;flex:none;box-shadow:0 6px 16px rgba(101,75,193,.14)}
.pay-summary-icon svg{width:25px;height:25px}
.pay-summary-copy{min-width:0;flex:1}
.pay-summary-name{display:block;font-size:18px;font-weight:800}
.pay-summary-unit{display:block;font-size:12px;color:var(--muted-2);margin-top:3px}
.pay-summary-price{flex:none;text-align:right}
.pay-summary-price b{display:block;font-size:25px;color:var(--purple);line-height:1.2;font-variant-numeric:tabular-nums}
.pay-summary-price s{display:block;font-size:11px;color:var(--muted-2);text-decoration:line-through}

.pay-benefit-title{font-weight:800;font-size:14px;margin:0 0 10px;display:flex;align-items:center;gap:7px}
.pay-benefit-title:before{content:"";width:4px;height:14px;border-radius:4px;background:var(--green)}
.pay-benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pay-benefit{border:1px solid var(--line);border-radius:13px;padding:13px 8px 11px;text-align:center;background:linear-gradient(180deg,#fbfcfa,#fff);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.pay-benefit:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(31,48,30,.06);border-color:#d8e6d3}
.pay-benefit svg{width:19px;height:19px;display:block;margin:0 auto 7px}
.pay-benefit:nth-child(1) svg{color:var(--blue)}
.pay-benefit:nth-child(2) svg{color:var(--green-strong)}
.pay-benefit:nth-child(3) svg{color:var(--purple)}
.pay-benefit b{display:block;font-size:16px}
.pay-benefit span{font-size:11px;color:var(--muted-2)}

.pay-features{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:8px}
.pay-features li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--muted);background:#fafcf8;border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.pay-features svg{width:16px;height:16px;color:var(--green-strong);flex:none}

.pay-warn{display:flex;align-items:flex-start;gap:10px;margin:18px 0 0;padding:12px 14px;border-radius:12px;background:#fff8ec;border:1px solid #f2e2bd;color:#8a611e;text-align:left}
.pay-warn svg{width:18px;height:18px;flex:none;margin-top:1px;color:#c98a1b}
.pay-warn b{display:block;font-size:13.5px}
.pay-warn span{display:block;font-size:12px;margin-top:2px;opacity:.9}

.pay-cta{margin-top:18px;width:100%;min-height:50px;border-radius:13px;font-size:16px;border:0;background:linear-gradient(135deg,#b6f687,#8bdc5c);color:#1c3a14;box-shadow:0 10px 22px rgba(108,191,69,.3);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}
.pay-cta:hover{border:0;background:linear-gradient(135deg,#b6f687,#8bdc5c);transform:translateY(-2px);box-shadow:0 14px 28px rgba(108,191,69,.4);filter:brightness(1.06)}
.pay-cta:active{border:0;transform:translateY(0)}
.pay-cta svg{width:19px;height:19px}
.pay-channels{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin:13px 0 0;font-size:12.5px;color:var(--muted-2)}
.pay-channels-label{line-height:1;flex:none}
.pay-channel-chip{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:4px 10px;border-radius:99px;font-weight:700;font-size:12px;line-height:1;flex:none;white-space:nowrap}
.pay-channel-chip svg{width:13px;height:13px;flex:none;display:block}
.pay-channel-chip>span{line-height:1;display:inline-block}
.pay-channel-chip.pay-channel-wxpay{background:#eaf7ec;border:1px solid #c9ecd2;color:#0d7a36}
.pay-channel-chip.pay-channel-wxpay svg{color:#07c160}
.pay-channel-chip.pay-channel-alipay{background:#eaf2ff;border:1px solid #c6dcff;color:#0a5fd8}
.pay-channel-chip.pay-channel-alipay svg{color:#1677ff}
.pay-channel-chip.pay-channel-qqpay{background:#fff4e4;border:1px solid #ffe0b5;color:#c2610a}
.pay-channel-chip.pay-channel-qqpay svg{color:#ff9500}

/* 结果页状态 */
.pay-result{text-align:center;padding:16px 4px 10px}
.pay-result-icon{width:66px;height:66px;border-radius:22px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px;animation:payPop .45s cubic-bezier(.2,.9,.3,1.3)}
.pay-result-icon svg{width:32px;height:32px}
.pay-result-ok .pay-result-icon{background:linear-gradient(135deg,#e8f6e3,#d2eec6);color:var(--green-strong);box-shadow:0 10px 24px rgba(92,148,66,.2)}
.pay-result-pending .pay-result-icon{background:linear-gradient(135deg,#edf5fb,#dcebf8);color:#2a6d9f;box-shadow:0 10px 24px rgba(42,109,159,.16)}
.pay-result h2{font-size:20px;margin:0 0 7px}
.pay-result p{color:var(--muted);margin:0 auto;max-width:420px;font-size:13.5px}
@keyframes payPop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}

/* Modal 弹窗 */
body.pay-modal-open{overflow:hidden}
.pay-modal-mask{position:fixed;inset:0;z-index:300;background:rgba(18,28,17,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;transition:opacity .22s ease}
.pay-modal-mask.is-open{opacity:1}
.pay-modal-mask[hidden]{display:none}
.pay-modal{width:min(100%,384px);background:#fff;border-radius:20px;box-shadow:0 26px 70px rgba(18,28,17,.32);overflow:hidden;transform:translateY(16px) scale(.96);opacity:0;transition:transform .28s cubic-bezier(.18,.9,.28,1.15),opacity .22s ease}
.pay-modal-mask.is-open .pay-modal{transform:none;opacity:1}
.pay-modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 20px 12px}
.pay-modal-head-copy b{display:block;font-size:17px}
.pay-modal-head-copy small{color:var(--muted-2);font-size:12px;margin-top:2px;display:block}
.pay-modal-close{width:32px;height:32px;border:1px solid var(--line);background:#f7f9f6;border-radius:10px;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .18s ease;padding:0}
.pay-modal-close:hover{background:#eef3ec;color:var(--ink);transform:rotate(90deg)}
.pay-modal-close svg{width:15px;height:15px}
.pay-modal-tabs{display:flex;gap:8px;padding:2px 20px 14px}
.pay-modal-tab{flex:1;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);background:#f7f9f6;border-radius:12px;font-size:13px;font-weight:750;color:var(--muted);cursor:pointer;transition:all .2s ease;position:relative;padding:0 8px}
.pay-modal-tab svg{width:16px;height:16px;flex:none}
.pay-modal-tab:hover{border-color:#c9d8c4;color:var(--ink)}
.pay-modal-tab.on{background:linear-gradient(135deg,#eaf7e3,#d7f0ca);border-color:#c3e3b4;color:#2e6b22;box-shadow:0 4px 12px rgba(108,191,69,.18)}
.pay-modal-tab.on:after{content:"";position:absolute;left:50%;bottom:-1px;transform:translateX(-50%);width:20px;height:3px;border-radius:3px;background:var(--green-strong)}
/* 渠道专属配色：微信绿 / 支付宝蓝 / QQ 橙 */
.pay-modal-tab[data-channel="wxpay"].on:after{background:#07c160}
.pay-modal-tab[data-channel="alipay"].on{background:linear-gradient(135deg,#e8f1ff,#d2e5ff);border-color:#b9d6ff;color:#0e5fd6;box-shadow:0 4px 12px rgba(22,119,255,.16)}
.pay-modal-tab[data-channel="alipay"].on:after{background:#1677ff}
.pay-modal-tab[data-channel="qqpay"].on{background:linear-gradient(135deg,#fff3e0,#ffdfb0);border-color:#ffd195;color:#c25e00;box-shadow:0 4px 12px rgba(255,149,0,.16)}
.pay-modal-tab[data-channel="qqpay"].on:after{background:#ff9500}
.pay-modal-body{padding:4px 20px 20px;text-align:center}
.pay-modal-qr{position:relative;width:236px;height:236px;margin:0 auto;border:1px solid var(--line);border-radius:18px;display:flex;align-items:center;justify-content:center;background:#fff;box-shadow:0 10px 26px rgba(31,48,30,.07)}
.pay-modal-qr img{display:block;border-radius:12px;max-width:100%;animation:payQrIn .3s ease}
@keyframes payQrIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.pay-modal-qr-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--muted-2);font-size:12px;background:#fff;border-radius:18px}
.pay-modal-qr-loading svg{width:24px;height:24px;animation:paySpin 1s linear infinite;color:var(--green-strong)}
@keyframes paySpin{to{transform:rotate(360deg)}}
.pay-paid-mask{position:absolute;inset:0;background:rgba(255,255,255,.94);border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;animation:payFadeIn .3s ease;z-index:2}
.pay-paid-mask svg{width:52px;height:52px;color:var(--green-strong);animation:payPop .5s cubic-bezier(.2,.9,.3,1.3)}
.pay-paid-mask b{font-size:16px}
@keyframes payFadeIn{from{opacity:0}to{opacity:1}}
.pay-amount{margin:16px 0 0}
.pay-amount b{display:block;font-size:30px;line-height:1.15;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.pay-amount-breakdown{display:block;font-size:12px;color:var(--muted-2);margin-top:5px}
.pay-fee-warn{display:flex;align-items:center;justify-content:center;gap:7px;margin:12px 0 0;padding:9px 12px;border-radius:10px;background:#f6f8f4;border:1px dashed var(--line-strong);color:var(--muted);font-size:12.5px;text-align:left}
.pay-fee-warn svg{width:15px;height:15px;color:#c98a1b;flex:none}
.pay-fee-warn b{color:#8a611e}
.pay-fee-warn.has-fee{background:#fff6e8;border:1px solid #f0dcae;color:#8a611e}
.pay-modal-status{font-size:13px;color:var(--muted);min-height:20px;margin:12px 0 0;transition:color .2s ease}
.pay-modal-status.is-ok{color:var(--green-strong);font-weight:750}
.pay-modal-status.is-err{color:var(--coral)}
.pay-modal-actions{display:flex;flex-direction:column;gap:9px;align-items:stretch;margin-top:14px}
.pay-modal-actions .btn{width:100%;border-radius:11px}
.pay-modal-link{color:var(--muted)!important}
.pay-modal-tip{font-size:11.5px;color:var(--muted-2);margin:13px 0 0;display:flex;align-items:center;justify-content:center;gap:6px}
.pay-modal-tip svg{width:13px;height:13px;animation:paySpin 2.4s linear infinite}

/* ==========================================================================
   Admin Console · Enterprise Minimal Theme
   极简企业级后台排版：干净留白 + 高级配色 + 卡片化布局。
   仅作用于 .admin-page（后台全部页面），沿用现有绿色系主色调。
   ========================================================================== */

/* ---- Canvas：柔和留白底 + 极淡的品牌色晕染 ---- */
.admin-page{background:radial-gradient(1200px 540px at 92% -12%,rgba(155,234,99,.08),transparent 62%),radial-gradient(1000px 520px at -8% 112%,rgba(39,135,232,.045),transparent 58%),#f1f4ef}
.admin-page .grid{gap:18px}
.admin-page .scroll-x::-webkit-scrollbar{height:9px}
.admin-page .scroll-x::-webkit-scrollbar-track{background:transparent}
.admin-page .scroll-x::-webkit-scrollbar-thumb{background:#ccd7c9;border-radius:99px;border:2px solid #fff}
.admin-page .scroll-x::-webkit-scrollbar-thumb:hover{background:#b7c4b4}

/* ---- 桌面端布局骨架：侧栏 / 页头 / 内容留白 ---- */
@media (min-width:901px){
  .admin-page .adm{padding:34px 46px 88px calc(var(--sidebar) + 46px)}
  .admin-page .adm-side{background:rgba(255,255,255,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-right:1px solid #e2e8df;box-shadow:1px 0 0 rgba(24,40,26,.03)}
  .admin-page .adm-side .app-brand{padding:8px 10px 30px;border-bottom:1px solid #eef1eb;margin-bottom:24px}
  .admin-page .adm-side .app-brand b{font-size:15px;font-weight:800;letter-spacing:-.01em}
  .admin-page .adm-side .app-brand small{font-size:10.5px;letter-spacing:.04em}
  .admin-page .adm-side .app-nav{gap:6px}
  .admin-page .adm-side .app-nav a{min-height:46px;padding:0 14px;border-radius:10px;gap:13px;color:#59645a;font-size:13.5px;font-weight:600}
  .admin-page .adm-side .app-nav a svg{width:18px;height:18px;color:#8b958a}
  .admin-page .adm-side .app-nav a:hover{background:#f1f5f0;color:#1c231c}
  .admin-page .adm-side .app-nav a.on{background:#e7f3df;color:#1d5c26;font-weight:750}
  .admin-page .adm-side .app-nav a.on svg{color:#2c7032}
  .admin-page .adm-side .app-nav a.on:before{display:none}
  .admin-page .adm-side .app-nav.sidebar-motion>a.on{background:transparent}
  .admin-page .sidebar-active-indicator{border-radius:10px;background:#e7f3df;box-shadow:inset 0 0 0 1px rgba(63,124,54,.16)}
  .admin-page .sidebar-active-indicator:before{left:-16px;top:8px;bottom:8px;width:3px;background:#2c7032;box-shadow:0 0 10px rgba(44,112,50,.22)}
  .admin-page .adm-side .side-foot{padding-top:16px}
  .admin-page .adm-side .admin-foot-link{display:flex;align-items:center;gap:8px;min-height:38px;padding:0 12px;border-radius:9px;color:#7c867b;font-size:12.5px;font-weight:600}
  .admin-page .adm-side .admin-foot-link:hover{background:#f1f5f0;color:#1c231c}
  .admin-page .adm-side .admin-foot-link svg{width:15px;height:15px}
  .admin-page .adm>div>.adm-h{min-height:88px;margin-bottom:32px;padding:18px 0;gap:16px;background:rgba(241,244,239,.88);border-bottom:1px solid rgba(212,221,209,.85)}
  .admin-page .adm-h h2{font-size:23px;font-weight:800;letter-spacing:-.01em;margin:0}
  .admin-page .adm-h .dim{font-size:12.5px;letter-spacing:.01em}
}

/* ---- 页头标题图标 ---- */
.admin-title-icon{width:40px;height:40px;flex-basis:40px;border-radius:11px;border:1px solid #d2e5c9;background:linear-gradient(135deg,#f0f9ea,#e2f2d8);color:#2c7032;box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}
.admin-title-icon svg{width:19px;height:19px}

/* ---- 卡片 / 指标卡：留白 + 发丝边框 + 双层柔和阴影 ---- */
.admin-page .card,.admin-page .metric,.admin-page .filterbar{border-radius:14px;box-shadow:0 1px 2px rgba(24,40,26,.04),0 14px 34px rgba(24,40,26,.05)}
.admin-page .card{padding:26px 28px;border:1px solid #e3e9e0;background:#fff}
.admin-page .metric{min-height:136px;padding:24px;border:1px solid #e3e9e0;background:#fff;justify-content:center;transition:border-color .22s ease,box-shadow .22s ease,background-color .22s ease,transform .22s ease}
.admin-page .metric::before{content:"";position:absolute;top:0;left:22px;right:22px;height:2px;border-radius:0 0 4px 4px;background:var(--metric-accent,#2b6ea8);opacity:.7}
.admin-page .metric b{font-size:29px;font-weight:800;letter-spacing:-.02em;color:#151b13;font-variant-numeric:tabular-nums}
.admin-page .metric span{font-size:12px;font-weight:600;color:#6c776c;margin-top:8px;letter-spacing:.01em}
.admin-page .metric .metric-icon{width:36px;height:36px;padding:8px;border-radius:10px;background:#eaf3fb;color:#2b6ea8;border:1px solid rgba(43,110,168,.13);box-shadow:inset 0 1px 0 rgba(255,255,255,.85)}
.admin-page .metric .metric-icon svg{width:18px;height:18px}

/* 指标卡四色点缀（沿用现有 蓝/绿/紫/金 次序） */
.admin-page .g4>.metric:nth-child(4n+1){--metric-accent:#2b6ea8}
.admin-page .g4>.metric:nth-child(4n+2){--metric-accent:#2c7032}
.admin-page .g4>.metric:nth-child(4n+3){--metric-accent:#6a4fd0}
.admin-page .g4>.metric:nth-child(4n+4){--metric-accent:#a06c14}
.admin-page .g4>.metric:nth-child(4n+1) .metric-icon{background:#eaf3fb;color:#2b6ea8;border-color:rgba(43,110,168,.13)}
.admin-page .g4>.metric:nth-child(4n+2) .metric-icon{background:#e9f6e2;color:#2c7032;border-color:rgba(44,112,50,.13)}
.admin-page .g4>.metric:nth-child(4n+3) .metric-icon{background:#f0edfc;color:#6a4fd0;border-color:rgba(106,79,208,.13)}
.admin-page .g4>.metric:nth-child(4n+4) .metric-icon{background:#fdf3e0;color:#a06c14;border-color:rgba(160,108,20,.15)}
.admin-page .g3>.metric:nth-child(2){--metric-accent:#2c7032}
.admin-page .g3>.metric:nth-child(3){--metric-accent:#6a4fd0}
.admin-page .g3>.metric:nth-child(2) .metric-icon{background:#e9f6e2;color:#2c7032;border-color:rgba(44,112,50,.13)}
.admin-page .g3>.metric:nth-child(3) .metric-icon{background:#f0edfc;color:#6a4fd0;border-color:rgba(106,79,208,.13)}
.admin-page .g4>.metric:nth-child(4n+2) b,.admin-page .g4>.metric:nth-child(4n+3) b,.admin-page .g4>.metric:nth-child(4n+4) b,.admin-page .g3>.metric:nth-child(2) b,.admin-page .g3>.metric:nth-child(3) b{color:#151b13}
.admin-page .g4>.metric:nth-child(4n+1),.admin-page .g4>.metric:nth-child(4n+2),.admin-page .g4>.metric:nth-child(4n+3),.admin-page .g4>.metric:nth-child(4n+4){border-top-color:#e3e9e0}

/* ---- 卡片标题 ---- */
.admin-card-title{margin-bottom:22px;gap:13px}
.admin-card-title>span:first-child{width:36px;height:36px;flex-basis:36px;border-radius:10px;border:1px solid #dde8d9;background:linear-gradient(135deg,#f3f9f0,#eaf4e6);color:#356f38}
.admin-card-title>span:first-child svg{width:17px;height:17px}
.admin-card-title h3{font-size:15.5px;font-weight:750;letter-spacing:-.01em}
.admin-card-title p{font-size:11.5px}

/* ---- 数据表：柔和表头、发丝分隔、克制的悬停 ---- */
.admin-page .tb{border-color:#e2e8df;border-radius:12px}
.admin-page .tb thead th{height:46px;padding:12px 16px;background:#f2f6f0;color:#5c685c;font-size:11px;font-weight:750;letter-spacing:.04em;border-bottom:1px solid #dfe6dc}
.admin-page .tb tbody td{height:56px;padding:13px 16px;border-bottom:1px solid #edf1ea}
.admin-page .tb tbody tr:nth-child(even) td{background:#fcfdfb}
.admin-page .tb tbody tr:hover td{background:#f5f9f3}
.admin-page .tb th:first-child,.admin-page .tb td:first-child{padding-left:16px}
.admin-page .tb th:last-child,.admin-page .tb td:last-child{padding-right:16px}

/* ---- 状态徽标（此前后台 badge 未定义样式，统一为胶囊） ---- */
.admin-page .badge{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:999px;border:1px solid transparent;font-size:11.5px;font-weight:750;line-height:1.5;white-space:nowrap}
.admin-page .badge.on{background:#e8f5e1;border-color:#cfe6c0;color:#25682c}
.admin-page .badge.off{background:#f1f3ef;border-color:#e2e5de;color:#717b71}

/* ---- 按钮 / 输入框：圆角、克制的层次 ---- */
.admin-page .btn{min-height:40px;border-radius:10px;font-size:13.5px;font-weight:650;border-color:#d6ded2;box-shadow:0 1px 2px rgba(24,40,26,.04)}
.admin-page .btn:hover{box-shadow:0 4px 14px rgba(24,40,26,.09)}
.admin-page .btn-pri{background:linear-gradient(180deg,#a6ee78,#92e25e);border-color:#8fd759;color:#173219;box-shadow:0 2px 8px rgba(92,175,54,.22)}
.admin-page .btn-pri:hover{background:linear-gradient(180deg,#b2f186,#9ce86c);border-color:#98de64;box-shadow:0 4px 14px rgba(92,175,54,.3)}
.admin-page .btn-sm{min-height:34px;border-radius:8px;padding:6px 12px;font-size:12.5px}
.admin-page .btn-lg{min-height:48px;font-size:15px}
.admin-page .icon-btn{border-radius:9px}
.admin-page .inp{min-height:42px;border-radius:9px;border-color:#dbe2d7;background:#fdfdfb;padding:9px 13px}
.admin-page .inp:focus,.admin-page .filterbar input:focus,.admin-page .filterbar select:focus{border-color:#6fb0e6;box-shadow:0 0 0 4px rgba(39,135,232,.11),inset 0 1px 2px rgba(21,40,24,.02);background:#fff}
.admin-page select.inp,.admin-page .filterbar select{padding-right:36px}

/* ---- 筛选栏 / 工具条 ---- */
.admin-page .filterbar{padding:14px 16px;background:#fff;border:1px solid #e3e9e0;border-radius:12px}
.admin-page .filterbar input,.admin-page .filterbar select{height:40px;min-height:40px}
.admin-page .toolbar{gap:10px;margin-bottom:14px}

/* ---- 键值行：去盒化，改发丝分隔 ---- */
.admin-page .kv{margin:0;padding:12px 4px;min-height:46px;border:0!important;border-bottom:1px solid #eef1eb!important;border-radius:0;background:transparent;gap:20px;font-size:13px}
.admin-page .kv:last-child{border-bottom:0!important}
.admin-page .kv .k{font-size:12px;font-weight:700;color:#6b766b}
.admin-page .kv>span:last-child{font-size:13px;font-weight:600;color:#242c24}

/* ---- 杂项打磨 ---- */
.admin-page .codebox,.admin-page .log-box{border-radius:12px}
.admin-page .dashboard-actions{margin:18px 0 30px}
.admin-page .table-empty{height:132px!important}

/* ---- 后台登录页 ---- */
.admin-login-shell{background:radial-gradient(1000px 520px at 88% -12%,rgba(155,234,99,.12),transparent 60%),radial-gradient(900px 480px at -10% 110%,rgba(39,135,232,.055),transparent 55%),#f1f4ef}
.admin-login-card{border-radius:16px;box-shadow:0 1px 2px rgba(24,40,26,.05),0 26px 64px rgba(24,40,26,.12)}
.admin-login-icon{border-radius:12px;background:linear-gradient(135deg,#eff8ea,#e0f1d5);box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}

/* ---- 指标卡入场：轻微上浮，克制而有序 ---- */
.admin-page .metric{animation:adm-metric-in .5s cubic-bezier(.16,1,.3,1) backwards}
.admin-page .metric:nth-child(2){animation-delay:.04s}
.admin-page .metric:nth-child(3){animation-delay:.08s}
.admin-page .metric:nth-child(4){animation-delay:.12s}
@keyframes adm-metric-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.admin-page .metric{animation:none}}

/* ---- 悬停层次（仅精细指针设备） ---- */
@media (hover:hover) and (pointer:fine){
  .admin-page .metric:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(24,40,26,.05),0 20px 44px rgba(24,40,26,.1)}
}

/* ---- 响应式：平板 / 手机 ---- */
@media (max-width:1100px){
  .admin-page .adm{padding-right:28px;padding-left:calc(var(--sidebar) + 28px)}
}
@media (max-width:900px){
  .admin-page .adm{padding:24px 20px 72px}
  .admin-page .adm-side{margin:0 0 20px;padding:14px 16px;border:1px solid #e3e9e0;border-radius:14px;background:#fff;box-shadow:0 1px 2px rgba(24,40,26,.04)}
  .admin-page .adm-side .app-brand{padding-bottom:12px}
  .admin-page .adm-side .app-nav{gap:6px}
  .admin-page .adm-side .app-nav a{min-height:38px;padding:0 12px;border-radius:9px}
  .admin-page .adm-side .app-nav a.on{background:#e7f3df;color:#1d5c26}
  .admin-page .adm-side .side-foot{margin-top:14px;padding-top:10px}
  .admin-page .adm>div>.adm-h{min-height:74px;margin-bottom:22px;padding:14px 0;gap:11px}
  .admin-page .metric{min-height:122px;padding:20px}
  .admin-page .metric::before{left:18px;right:18px}
  .admin-page .card{padding:22px 20px}
}
@media (max-width:720px){
  .admin-page .adm{padding:18px 14px 78px}
  .admin-page .adm>div>.adm-h{min-height:64px;margin-bottom:18px;padding:12px 0;gap:10px}
  .admin-page .adm-h h2{font-size:20px}
  .admin-page .adm-h .dim{font-size:11px}
  .admin-title-icon{width:34px;height:34px;flex-basis:34px;border-radius:9px}
  .admin-title-icon svg{width:17px;height:17px}
  .admin-page .metric{min-height:114px;padding:17px 16px}
  .admin-page .metric b{font-size:26px}
  .admin-page .metric span{font-size:11.5px;margin-top:6px}
  .admin-page .metric .metric-icon{width:32px;height:32px;padding:7px;right:13px;top:13px}
  .admin-page .card{padding:20px 16px;border-radius:12px}
  .admin-page .tb thead th{padding:11px 13px}
  .admin-page .tb tbody td{padding:12px 13px}
  .admin-page .kv{gap:14px;padding:11px 2px}
}

/* ==========================================================================
   Fixes & Settings page refinements
   文字异常修复：Logo 模式选择、VIP 徽标居中、登录页返回链接
   站点信息页：分区卡片 + 吸底保存栏
   ========================================================================== */

/* ---- Logo 显示模式：分段控件，任何宽度下都不换行、不撑满整行 ---- */
.logo-mode{display:inline-flex;flex-wrap:nowrap;width:auto;max-width:100%;gap:4px;padding:4px;border:1px solid #d5ddd2;border-radius:10px;background:#f1f4f0}
.logo-mode label{flex:1 1 auto;min-width:0;cursor:pointer}
.logo-mode span{height:38px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 14px;border-radius:7px;color:#6b756b;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.logo-mode span svg{width:16px;height:16px;flex:0 0 16px}
.logo-mode input:checked+span{background:#fff;color:#245f2b;box-shadow:0 2px 8px rgba(30,49,31,.09)}

/* ---- 卡密列表：方案列 VIP 徽标居中于单元格 ---- */
.admin-page .cards-table th:nth-child(3),.admin-page .cards-table td:nth-child(3){text-align:center}
.vip-chip{justify-content:center}

/* ---- 后台登录：返回前台链接不换行；移动端与 Logo 同行 ---- */
.admin-login-back{white-space:nowrap}
@media (max-width:760px){
  .admin-login-brand{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:14px}
  .admin-login-back{margin-top:0}
  .admin-login-logo{min-width:0}
  .admin-login-logo b,.admin-login-logo small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

/* ---- 站点信息设置页：分区卡片 + 吸底保存栏 ---- */
.settings-form .settings-card{margin-bottom:18px}
.settings-form .settings-card .admin-card-title{margin-bottom:20px}
.settings-form .settings-card .field{margin-bottom:16px}
.settings-form .settings-card .row{margin-bottom:16px}
.settings-form .settings-card .row:last-child{margin-bottom:0}
.settings-save{position:sticky;bottom:16px;z-index:25;display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:22px;padding:14px 18px;border:1px solid rgba(212,221,209,.9);border-radius:14px;background:rgba(241,244,239,.88);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 12px 32px rgba(24,40,26,.1)}
.settings-save .btn{min-width:170px}
@media (max-width:720px){
  .settings-save{position:static;margin-top:18px;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none}
  .settings-save .btn{width:100%;min-height:46px}
}

/* ---- 后台登录：输入时左侧图标淡出（聚焦或已有内容）；前台登录/注册图标常驻 ---- */
.admin-login-input>svg{position:absolute;z-index:1;left:14px;top:50%;width:17px;height:17px;color:var(--muted-2);transform:translateY(-50%);pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.admin-page .admin-login-input:focus-within>svg,.admin-page .admin-login-input.is-filled>svg{opacity:0;transform:translateY(-50%) translateX(-5px)}

/* ---- 用户详情：身份头卡 / 用量磁贴 / 操作面板 ---- */
.user-detail-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.user-detail-avatar{width:52px;height:52px;flex:0 0 52px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(135deg,#eaf6e2,#dceecf);border:1px solid #cfe4c2;color:#2c7032;font-size:20px;font-weight:800}
.user-detail-identity{min-width:0;flex:1}
.user-detail-name{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:19px;font-weight:800;letter-spacing:-.01em}
.user-detail-meta{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:7px;color:var(--muted-2);font-size:12px}
.user-detail-meta span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.user-detail-meta svg{width:13px;height:13px;color:#8aa084}
.user-quota-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
/* 配额项与下方「可点击次数」完全同款，仅不可点击 */
.user-quota{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.user-quota span{flex:1;font-size:12.5px;color:var(--muted)}
.user-quota b{font-size:13px;font-weight:800;color:var(--green-strong)}
.user-quota span{display:block;font-size:11.5px;color:var(--muted-2);margin-bottom:5px}
.user-quota b{font-size:16px;font-weight:800;color:#1d241d;font-variant-numeric:tabular-nums}
.user-actions-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.user-action{display:flex;align-items:flex-start;gap:12px;margin:0;padding:15px 16px;border:1px solid #e5ebe2;border-radius:12px;background:#fff}
.user-action-icon{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;border-radius:10px;background:#eaf3fb;color:#2b6ea8}
.user-action-icon svg{width:17px;height:17px}
.user-action-icon.green{background:#e9f6e2;color:#2c7032}
.user-action-icon.purple{background:#f0edfc;color:#6a4fd0}
.user-action-icon.amber{background:#fdf3e0;color:#a06c14}
.user-action-copy{flex:1;min-width:0}
.user-action-copy b{display:block;font-size:13.5px;font-weight:750}
.user-action-copy small{display:block;color:var(--muted-2);font-size:11.5px;margin-top:2px}
.user-action-ctl{margin-top:10px}
.user-action-ctl .lb{font-size:12px;color:var(--muted-2);font-weight:600;margin-bottom:5px}
.user-action-row{display:flex;gap:8px;align-items:center}
.user-action-row .inp{flex:1;min-width:0;min-height:36px;height:36px}
.user-action-row .btn{white-space:nowrap;min-height:36px}
.user-detail-danger{border-top:1px solid #eef1eb;margin-top:16px;padding-top:14px;display:flex;gap:10px;flex-wrap:wrap}
.user-action-check{display:flex;align-items:center;gap:8px;cursor:pointer}
.user-action-check input[type=checkbox]{width:16px;height:16px;flex:0 0 16px;margin:0;cursor:pointer;accent-color:var(--green-strong,#2c7032)}
.user-actions-batch-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.user-actions-batch-bar .btn{white-space:nowrap}
.user-actions-batch-bar .dim{font-size:12px;color:var(--muted-2)}
@media (max-width:900px){
  .user-quota-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:720px){
  .user-actions-grid{grid-template-columns:1fr}
  .user-detail-avatar{width:44px;height:44px;flex-basis:44px;font-size:17px;border-radius:12px}
  .user-detail-name{font-size:17px}
}

/* ==========================================================================
   Front-end text wrap fixes（投递清单）
   按钮文字、批次标签不再换行；推荐投递标识与公司名同行。
   ========================================================================== */

/* ---- 详情操作按钮：永不收缩换行，放不下时整组换行 ---- */
.detail-actions{flex-wrap:wrap}
.detail-actions .btn{flex:0 0 auto;white-space:nowrap}
.entry-btn span{white-space:nowrap}

/* ---- 推荐投递标识：与公司名同一行（名后徽标） ---- */
.route-company-copy{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.route-company-copy b{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.route-company-copy .recommend-badge{margin-left:0;flex:0 0 auto;white-space:nowrap}

/* ==========================================================================
   Front-end auth · 登录/注册单页滑块切换（同后台站点 Logo 模式控件）
   ========================================================================== */
.auth-switch{display:flex;gap:4px;padding:4px;margin-bottom:24px;border:1px solid #d5ddd2;border-radius:10px;background:#f1f4f0}
.auth-switch label{flex:1;min-width:0;cursor:pointer}
.auth-switch input{position:absolute;opacity:0;pointer-events:none}
.auth-switch span{height:40px;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;color:#6b756b;font-size:13.5px;font-weight:700;white-space:nowrap;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}
.auth-switch span svg{width:16px;height:16px;flex:0 0 16px}
.auth-switch input:checked+span{background:#fff;color:#245f2b;box-shadow:0 2px 8px rgba(30,49,31,.09)}
.auth-pane{animation:auth-pane-in .32s cubic-bezier(.16,1,.3,1) both}
.auth-pane-off{display:none!important}
@keyframes auth-pane-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.auth-pane{animation:none}}

/* 邮箱验证注册：验证码输入行与提示 */
.code-row{display:flex;gap:8px;align-items:stretch}.code-row .admin-login-input{flex:1;min-width:0}
.code-row .btn{flex:none;white-space:nowrap}
.code-send-btn{min-width:104px;flex:none;white-space:nowrap}
.code-send-btn:not(:disabled){background:var(--green);border-color:var(--green);color:#173219}
.code-send-btn:not(:disabled):hover{background:#aaf079;border-color:#aaf079}
.code-send-btn:disabled{background:#eef1ec;border-color:var(--line);color:var(--muted-2);cursor:not-allowed;transform:none;box-shadow:none}
.code-send-btn svg{width:14px;height:14px;flex:none}
.code-hint{display:flex;align-items:center;gap:6px;margin-top:7px;font-size:12px;color:var(--muted-2);line-height:1.5;transition:color .2s}
.code-hint::before{content:'';width:14px;height:14px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;background:transparent}
.code-hint.is-ok{color:var(--green-strong);font-weight:650}
.code-hint.is-ok::before{content:'✓';background:var(--green-strong)}
.code-hint.is-err{color:var(--coral)}
.code-hint.is-err::before{content:'✕';background:var(--coral)}
/* 登录/找回底部分隔操作区 */
.auth-alt{display:flex;align-items:center;gap:12px;margin-top:20px}
.auth-alt-line{flex:1;height:1px;background:var(--line);min-width:20px}
.auth-alt-link{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:13px;font-weight:650;line-height:1.4;cursor:pointer;transition:.18s}
.auth-alt-link:hover{color:var(--green-strong);border-color:#b9dda9;background:#f2f9ee}
.auth-alt-link svg{width:14px;height:14px;flex:none}

/* ===== 免费福利：邀请好友赚积分 ===== */
.account-benefit{margin-bottom:18px}
.account-benefit-inner{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.points-balance{display:inline-flex;align-items:center;gap:12px;padding:12px 18px;border:1px solid var(--line);border-radius:14px;background:#fff}
.points-balance-actions{display:flex;flex-direction:column;gap:4px;margin-left:2px;padding-left:14px;border-left:1px solid var(--line)}
.points-balance-actions a{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--green-strong);font-weight:700;text-decoration:none}
.points-balance-actions a:hover{color:#1d5c23}
.points-balance-actions svg{width:13px;height:13px;flex:none}
.account-benefit-btns{display:none}
@media (max-width:640px){
  .points-balance{flex:1 1 100%;justify-content:center}
  .points-balance-actions{display:none}
  .account-benefit-btns{display:flex;gap:10px;flex:1 1 100%}
  .account-benefit-btns .btn{flex:1;padding-left:8px;padding-right:8px}
}
.invite-hero{grid-template-columns:1fr}
.invite-features{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:20px}
.invite-feature{display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:14px;border:1px solid var(--line)}
.invite-feature-icon{width:46px;height:46px;flex:none;border-radius:12px;display:inline-flex;align-items:center;justify-content:center}
.invite-feature-icon svg{width:23px;height:23px}
.invite-feature b{display:block;font-size:22px;line-height:1.25}
.invite-feature small{display:block;font-size:12px;color:var(--muted-2);margin-top:3px}
.invite-feature:nth-child(1){background:#f3f9f0;border-color:#cfe3c8}
.invite-feature:nth-child(1) .invite-feature-icon{background:#deefd8;color:#34733a}
.invite-feature:nth-child(1) b{color:#34733a}
.invite-feature:nth-child(2){background:#fff8ec;border-color:#ecd9b7}
.invite-feature:nth-child(2) .invite-feature-icon{background:#f9e9c9;color:#8a611e}
.invite-feature:nth-child(2) b{color:#8a611e}
.invite-left{display:grid;gap:18px;align-content:start}
.invite-rules{list-style:none;margin:0;padding:0}
.invite-rules li{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px dashed var(--line)}
.invite-rules li:last-child{border-bottom:none;padding-bottom:0}
.invite-rule-icon{width:28px;height:28px;flex:none;border-radius:9px;background:#eef6ea;color:var(--green-strong);display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
.invite-rule-icon svg{width:15px;height:15px}
.invite-rule-body{flex:1;min-width:0}
.invite-rule-body b{display:block;font-size:13.5px;color:var(--ink);margin-bottom:3px}
.invite-rule-desc{display:block;font-size:12.5px;color:var(--muted);line-height:1.65}
.invite-steps{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:0;padding:0;list-style:none}
.invite-step{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fbfcfa;min-width:0}
.invite-step-n{width:28px;height:28px;flex:none;border-radius:50%;background:var(--green);color:#173219;font-weight:800;font-size:13.5px;display:inline-flex;align-items:center;justify-content:center}
.invite-step b{display:block;font-size:13.5px}
.invite-step small{display:block;font-size:12px;color:var(--muted-2);margin-top:2px;line-height:1.5}
.invite-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 18px}
.invite-stat{text-align:center;padding:14px 6px;border:1px solid var(--line);border-radius:11px;background:#fbfcfa}
.invite-stat b{display:block;font-size:21px;color:var(--green-strong);line-height:1.3}
.invite-stat span{display:block;font-size:12px;color:var(--muted-2);margin-top:3px}
.invite-code-row{display:flex;gap:10px;align-items:stretch}
.invite-code{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;letter-spacing:8px;white-space:nowrap;overflow:hidden;color:var(--green-strong);background:#f0f7ec;border:1px dashed #b9dda9;border-radius:11px;padding:12px 8px}
.invite-code-row .btn{flex:none}
.invite-link-row{display:flex;gap:8px;align-items:stretch}
.invite-link-row .btn{flex:none}
.invite-link-box{flex:1;min-width:0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#f6f8f3;border:1px solid var(--line);border-radius:9px;padding:10px 12px;color:var(--muted);line-height:1.7;cursor:pointer}
.invite-link-box:hover{border-color:#b9dda9}
.invite-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
.invite-actions .btn{width:100%;padding-left:6px;padding-right:6px}
/* 邀请/兑换记录列表 */
.invite-table{width:100%;border-collapse:collapse}
.invite-table th{font-size:12px;font-weight:700;color:var(--muted-2);text-align:left;padding:11px 12px;background:#f7f9f5;border-bottom:1px solid var(--line);white-space:nowrap}
.invite-table td{padding:12px;border-bottom:1px solid #eef1ec;font-size:13px;vertical-align:middle}
.invite-table tbody tr:last-child td{border-bottom:none}
.invite-table tbody tr:hover td{background:#f7faf5}
.invite-table .table-empty{padding:40px 14px;text-align:center}
.invite-avatar{width:32px;height:32px;border-radius:50%;background:#e8f6e3;color:var(--green-strong);font-weight:800;font-size:13px;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;margin-right:9px}
.invite-name{font-size:13.5px;color:var(--ink)}
.invite-gain{font-weight:800;color:var(--green-strong);font-size:13.5px}
.invite-card-code{display:inline-block;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12.5px;letter-spacing:.5px;background:#f6f8f3;border:1px solid var(--line);border-radius:6px;padding:3px 8px;color:var(--ink)}
.invite-empty{text-align:center;padding:44px 18px}
.invite-empty>i{width:52px;height:52px;border-radius:50%;background:#f2f6ef;color:var(--muted-2);display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px}
.invite-empty>i svg{width:25px;height:25px}
.invite-empty b{display:block;font-size:15px;margin-bottom:5px}
.invite-empty p{font-size:12.5px;color:var(--muted-2);margin:0 0 16px}
.invite-back{margin-top:16px}
@media (max-width:640px){
  .invite-features{grid-template-columns:1fr}
  .invite-code{font-size:20px;letter-spacing:5px}
  .invite-actions{grid-template-columns:1fr}
  .invite-actions .btn:last-child{grid-column:auto}
  .invite-link-row{flex-direction:column}
  .invite-link-row .btn{width:100%}
  .invite-steps{grid-template-columns:1fr}
}
.points-balance{flex:1 1 100%}
.invite-rules{list-style:none;margin:0;padding:0}
.invite-rules li{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px;color:var(--muted)}
.invite-rules li:last-child{border-bottom:none}
.invite-rules li>i{width:16px;height:16px;flex:none;color:var(--green-strong);margin-top:2px}
.invite-rules b{color:var(--ink)}
.invite-steps{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.invite-step{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fbfcfa}
.invite-step-n{width:26px;height:26px;flex:none;border-radius:50%;background:var(--green);color:#173219;font-weight:800;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.invite-step b{display:block;font-size:13.5px}
.invite-step small{display:block;font-size:12px;color:var(--muted-2);margin-top:2px}
.invite-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 16px}
.invite-stat{text-align:center;padding:12px 6px;border:1px solid var(--line);border-radius:10px;background:#fbfcfa}
.invite-stat b{display:block;font-size:20px;color:var(--green-strong)}
.invite-stat span{font-size:12px;color:var(--muted-2)}
.invite-code-row{display:flex;gap:8px;align-items:stretch}
.invite-code{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;letter-spacing:6px;color:var(--green-strong);background:#f0f7ec;border:1px dashed #b9dda9;border-radius:10px;padding:10px 8px}
.invite-link-box{font-size:12px;word-break:break-all;background:#f6f8f3;border:1px solid var(--line);border-radius:8px;padding:9px 11px;color:var(--muted);line-height:1.6}
.invite-actions{display:grid;gap:8px}
.points-balance{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;background:#fff}
.points-balance-icon{width:38px;height:38px;border-radius:10px;background:#f6e8b8;color:#8a6a10;display:inline-flex;align-items:center;justify-content:center}
.points-balance-icon svg{width:19px;height:19px}
.points-balance b{display:block;font-size:19px;line-height:1.2;color:var(--green-strong)}
.points-balance small{font-size:11px;color:var(--muted-2)}
.points-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 14px}
.points-head h2{font-size:17px;margin:0}
.points-item{position:relative}
.points-item.is-hot{border-color:#e5cf8a}
.points-hot{position:absolute;top:-1px;right:14px;display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;color:#8a6a10;background:linear-gradient(135deg,#f9e9b8,#f0d485);border:1px solid #e2bd5a;border-radius:0 0 8px 8px;padding:3px 9px}
.points-hot svg{width:11px;height:11px}
.points-item-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.points-item-icon{width:42px;height:42px;flex:none;border-radius:11px;background:#eef6ea;color:var(--green-strong);display:inline-flex;align-items:center;justify-content:center}
.points-item-icon svg{width:21px;height:21px}
.points-item-head h3{margin:0;font-size:15px}
.points-item-head small{color:var(--muted-2);font-size:12px}
.points-cost{margin-left:auto;text-align:right;font-size:21px;color:var(--green-strong)}
.points-cost small{display:block;font-size:11px;color:var(--muted-2);font-weight:600}
.points-progress{height:8px;border-radius:99px;background:#eef1ec;overflow:hidden;margin-bottom:7px}
.points-progress i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#b7f28d,#7fd655);transition:width .3s}
.points-progress-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted);margin-bottom:12px;flex-wrap:wrap}
.points-progress-meta b{color:var(--coral)}
.points-coming{border-style:dashed}
.points-coming-inner{display:flex;align-items:center;gap:12px;padding:6px 2px}
.points-coming-icon{width:42px;height:42px;flex:none;border-radius:11px;background:#f4f6f2;color:var(--muted-2);display:inline-flex;align-items:center;justify-content:center}
.points-coming-icon svg{width:21px;height:21px}
.points-coming h3{margin:0;font-size:14.5px}
.points-coming p{margin:2px 0 0;font-size:12px;color:var(--muted-2)}
.points-items{display:grid;gap:18px}
.points-side{display:grid;gap:18px;align-content:start}
.redeem-success{border-color:#b9dda9;background:#fbfef9}
.redeem-code-row{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap}
.redeem-code{flex:1;min-width:220px;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;letter-spacing:2px;color:var(--green-strong);background:#f0f7ec;border:1px dashed #b9dda9;border-radius:10px;padding:13px 10px;word-break:break-all}


/* ===== 邀请页弹窗 ===== */
.invite-modal{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;padding:16px}
.invite-modal.open{display:flex}
.invite-modal-mask{position:absolute;inset:0;background:rgba(20,32,22,.45);backdrop-filter:blur(2px)}
.invite-modal.open .invite-modal-mask{animation:invite-mask-in .22s ease both}
.invite-modal-box{position:relative;background:#fff;border-radius:14px;width:100%;max-width:620px;max-height:82vh;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(20,32,22,.22)}
.invite-modal.open .invite-modal-box{animation:invite-modal-in .28s cubic-bezier(.16,1,.3,1) both}
@keyframes invite-mask-in{from{opacity:0}to{opacity:1}}
@keyframes invite-modal-in{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
.invite-modal-head{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line)}
.invite-modal-head h3{margin:0;font-size:15.5px;flex:1}
.invite-modal-points{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:99px;background:linear-gradient(135deg,#fdf6e3,#f9ecc8);border:1px solid #ecd9a8;font-size:12px;font-weight:700;color:#7a5a10;white-space:nowrap}
.invite-modal-points svg{width:14px;height:14px;color:#c9992e;flex:none}
.invite-modal-points b{color:#8a6a10;font-size:14px}
.invite-modal-close{width:30px;height:30px;border:none;background:#f2f4f0;border-radius:8px;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.invite-modal-close:hover{background:#e8ece4;color:var(--ink)}
.invite-modal-close svg{width:15px;height:15px}
.invite-modal-body{padding:16px 18px 18px;overflow-y:auto}
.invite-modal-body .scroll-x{max-width:100%}

/* 首页企业数据 dashboard 弹窗（需求3） */
.data-dash{display:flex;flex-direction:column;gap:14px}
.data-dash-hero{position:relative;overflow:hidden;border-radius:var(--r);padding:20px 22px;background:linear-gradient(135deg,#eaf7e2 0%,#f4fbf0 52%,#e8f4ff 100%);border:1px solid #d2e7c6;display:flex;align-items:center;gap:18px}
.data-dash-hero:after{content:"";position:absolute;right:-46px;top:-52px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(155,234,99,.42),transparent 68%)}
.data-dash-hero-ico{position:relative;z-index:1;width:54px;height:54px;flex:none;border-radius:15px;display:grid;place-items:center;background:#fff;border:1px solid #cfe6c2;box-shadow:0 6px 16px rgba(36,107,42,.13);color:var(--green-strong)}
.data-dash-hero-ico svg{width:27px;height:27px}
.data-dash-hero-copy{position:relative;z-index:1;min-width:0}
.data-dash-hero-copy .dh-label{display:block;font-size:12px;color:var(--green-strong);font-weight:750;letter-spacing:.02em}
.data-dash-hero-copy .dh-num{display:block;font-size:41px;line-height:1.04;font-weight:850;color:var(--green-strong);font-variant-numeric:tabular-nums;margin:3px 0 0}
.data-dash-hero-copy .dh-sub{font-size:12px;color:var(--muted);margin:3px 0 0}
.data-dash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.data-dash-card{position:relative;overflow:hidden;border-radius:var(--r);border:1px solid var(--line);background:var(--surface-soft);padding:15px 15px 14px}
.data-dash-card:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--dc-accent,var(--green-strong))}
.data-dash-card .dc-ico{position:absolute;right:12px;top:12px;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--dc-soft,rgba(155,234,99,.24));color:var(--dc-accent,var(--green-strong))}
.data-dash-card .dc-ico svg{width:16px;height:16px}
.data-dash-card .dc-wrap{min-width:0}
.data-dash-card .dc-num{display:block;font-size:25px;line-height:1.15;font-weight:850;color:var(--ink);font-variant-numeric:tabular-nums;margin:17px 0 1px;word-break:break-word}
.data-dash-card .dc-num.is-date{font-size:17px;letter-spacing:-.01em}
.data-dash-card .dc-label{display:block;font-size:11.5px;color:var(--muted-2)}
.data-dash-card.dc-green{--dc-accent:var(--green-strong);--dc-soft:rgba(155,234,99,.26)}
.data-dash-card.dc-blue{--dc-accent:var(--blue);--dc-soft:rgba(39,135,232,.14)}
.data-dash-card.dc-purple{--dc-accent:var(--purple);--dc-soft:rgba(104,69,232,.14)}
.data-dash-actions{display:flex;gap:10px;flex-wrap:wrap}
.data-dash-actions .btn{flex:1;min-width:140px;justify-content:center}
@media(max-width:720px){
  .data-dash-hero{padding:16px;gap:14px}
  .data-dash-hero-ico{width:46px;height:46px;border-radius:13px}
  .data-dash-hero-ico svg{width:23px;height:23px}
  .data-dash-hero-copy .dh-num{font-size:33px}
  .data-dash-grid{grid-template-columns:1fr;gap:10px}
  .data-dash-card{display:flex;align-items:center;gap:12px;padding:12px 14px}
  .data-dash-card .dc-ico{position:static;order:-1;flex:none}
  .data-dash-card .dc-wrap{flex:1;min-width:0}
  .data-dash-card .dc-num{margin:0;font-size:22px}
  .data-dash-card .dc-num.is-date{font-size:16px}
}

/* 积分商城弹窗商品卡 */
.invite-shop-item{border:1px solid var(--line);border-radius:12px;padding:14px 15px;margin-bottom:12px;background:#fbfcfa}
.invite-shop-item:last-child{margin-bottom:0}
.invite-shop-head{display:flex;align-items:center;gap:11px;margin-bottom:10px}
.invite-shop-icon{width:38px;height:38px;flex:none;border-radius:10px;background:#eef6ea;color:var(--green-strong);display:inline-flex;align-items:center;justify-content:center}
.invite-shop-icon svg{width:19px;height:19px}
.invite-shop-title{flex:1;min-width:0}
.invite-shop-title b{display:block;font-size:14px}
.invite-shop-title small{display:block;font-size:12px;color:var(--muted-2);margin-top:1px}
.invite-shop-cost{flex:none;text-align:right;font-size:19px;font-weight:800;color:var(--green-strong)}
.invite-shop-cost small{display:block;font-size:11px;color:var(--muted-2);font-weight:600}
.invite-shop-bar{height:7px;border-radius:99px;background:#eef1ec;overflow:hidden;margin-bottom:7px}
.invite-shop-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#b7f28d,#7fd655)}
.invite-shop-meta{font-size:12px;color:var(--muted);margin-bottom:10px}
.invite-shop-meta b{color:var(--coral)}
.invite-shop-meta .ok{color:var(--green-strong);font-weight:650}

/* 弹窗内兑换成功 */
.invite-redeem-ok{text-align:center;padding:22px 10px 8px}
.invite-redeem-ok>i{width:54px;height:54px;border-radius:50%;background:#eef8e9;color:#34733a;display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px}
.invite-redeem-ok>i svg{width:26px;height:26px}
.invite-redeem-ok b{display:block;font-size:16px;margin-bottom:5px}
.invite-redeem-ok p{font-size:12.5px;color:var(--muted);margin:0 0 16px}
.invite-redeem-code-row{display:flex;gap:10px;align-items:stretch;justify-content:center;margin-bottom:16px;flex-wrap:wrap}
.invite-redeem-code-row code{font-size:17px;font-weight:800;letter-spacing:1.5px;color:var(--green-strong);background:#f0f7ec;border:1px dashed #b9dda9;border-radius:10px;padding:11px 14px;word-break:break-all}

/* ===== 后台：积分商城商品管理 ===== */
.invite-item-list{display:grid;gap:8px}
.invite-item-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fbfcfa}
.invite-item-icon{width:36px;height:36px;flex:none;border-radius:9px;background:#eef6ea;color:var(--green-strong);display:inline-flex;align-items:center;justify-content:center}
.invite-item-icon svg{width:18px;height:18px}
.invite-item-info{flex:1;min-width:0}
.invite-item-info b{display:block;font-size:13.5px}
.invite-item-info small{display:block;font-size:12px;color:var(--muted-2);margin-top:2px;line-height:1.5}
.invite-item-del{flex:none}
.invite-item-empty{padding:18px;text-align:center;color:var(--muted-2);font-size:13px;border:1px dashed var(--line);border-radius:10px;background:#fbfcfa}
.invite-sec + .invite-sec{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line)}
.invite-sec-title{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:800;color:var(--ink);margin-bottom:12px}
.invite-sec-title svg{width:15px;height:15px;color:var(--green-strong);flex:none}
.invite-sec-title .dim{font-weight:600;font-size:12px;margin-left:4px}
.invite-add-box{background:#f8faf6;border:1px dashed #d5dccf;border-radius:12px;padding:16px}
.invite-add-box .row + .row{margin-top:4px}
.invite-add-box .field{margin-bottom:0}
.invite-lb-note{font-style:normal;font-weight:500;font-size:11.5px;color:var(--muted-2);margin-left:5px}
.invite-add-foot{margin-top:16px;padding-top:14px;border-top:1px dashed #dde3d8}
.invite-add-foot .field{margin-bottom:0}
.invite-add-btn{margin-top:14px;width:180px;min-height:40px}
.invite-item-row{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.invite-item-row:hover{border-color:#cfe3c8;background:#fbfdf9}
.invite-item-del{flex:none;min-width:76px;justify-content:center}
.invite-item-icon{width:32px;height:32px}
.invite-item-icon svg{width:16px;height:16px}
.invite-item-info b{font-size:13px}
.invite-item-info small{font-size:11.5px}
.invite-add-box .field{margin-bottom:12px}
.invite-add-box .field:last-child{margin-bottom:0}
.invite-item-row{padding:8px 10px}
.invite-item-icon{width:32px;height:32px}
.invite-item-icon svg{width:16px;height:16px}
.invite-item-info b{font-size:13px}
.invite-item-info small{font-size:11.5px}
/* ===== 兑换记录列表（单行紧凑） ===== */
.redeem-list{display:grid;gap:8px}
.redeem-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;transition:border-color .18s,box-shadow .18s;min-width:0}
.redeem-item:hover{border-color:#cfe3c8;box-shadow:0 3px 10px rgba(31,48,30,.05)}
.redeem-item-icon{width:30px;height:30px;flex:none;border-radius:9px;background:linear-gradient(135deg,#eef6ea,#dff0d8);color:#34733a;display:inline-flex;align-items:center;justify-content:center}
.redeem-item-icon svg{width:15px;height:15px}
.redeem-item-name{flex:0 1 34%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;color:var(--ink)}
.redeem-item-code{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:700;letter-spacing:.6px;color:#246b2a;background:#f0f7ec;border:1px solid #dcead5;border-radius:7px;padding:4px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;cursor:pointer}
.redeem-item-code:hover{border-color:#b9dda9}
.redeem-item .btn{flex:none;min-height:30px;padding:4px 11px;font-size:12px}
.redeem-status{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:11.5px;font-weight:700;line-height:1.5;flex:none}
.redeem-status i{width:6px;height:6px;border-radius:50%;display:inline-block;flex:none}
.redeem-status:not(.is-used){background:#e8f6e3;color:#2e7d32;border:1px solid #c5e6b8}
.redeem-status:not(.is-used) i{background:#4caf50;box-shadow:0 0 0 3px rgba(76,175,80,.15)}
.redeem-status.is-used{background:#eef1ec;color:#7c857b;border:1px solid #dfe4da}
.redeem-status.is-used i{background:#9aa398}
.redeem-item.is-used{background:#fafbf8}
.redeem-item.is-used .redeem-item-icon{background:#f0f2ee;color:#9aa398}
.redeem-item.is-used .redeem-item-code{color:#8a938a;background:#f3f5f1;border-color:#e2e6de}
@media (max-width:480px){
  /* 弹窗整体收紧留白，内容区更宽 */
  .invite-modal{padding:8px}
  .invite-modal-box{max-height:90vh;border-radius:12px}
  .invite-modal-head{padding:12px 14px}
  .invite-modal-head h3{font-size:14.5px}
  .invite-modal-points{padding:4px 10px;font-size:11px;gap:4px}
  .invite-modal-points b{font-size:12.5px}
  .invite-modal-body{padding:12px 14px 14px}
  /* 单行兑换记录：窄屏隐藏图标、名称与兑换码弹性截断，保持一行 */
  .redeem-item{gap:8px;padding:8px 10px}
  .redeem-item-icon{display:none}
  .redeem-item-name{flex:1}
  .redeem-item-code{flex:0 1 46%;font-size:11px;letter-spacing:.3px;padding:4px 6px}
  .redeem-item .btn{padding:4px 8px}
  .redeem-status{padding:2px 8px;font-size:11px}
  .redeem-status i{display:none}
  /* 商城商品卡同步收紧 */
  .invite-shop-item{padding:12px}
  .invite-shop-icon{width:34px;height:34px}
  .invite-shop-cost{font-size:17px}
}

/* 后台商品编辑 */
.invite-item-actions{display:flex;gap:8px;flex:none}
.invite-item-edit,.invite-item-del{min-width:64px;justify-content:center}
.invite-item-row.is-editing{border-color:#8fd97a;background:#f0f9ec;box-shadow:0 0 0 2px rgba(127,214,85,.18)}
.invite-add-actions{display:flex;gap:10px;margin-top:14px}
.invite-add-actions .invite-add-btn{width:180px;margin-top:0}

/* ===== 后台：用户画像分步明细 ===== */
.profile-steps{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.profile-step{border:1px solid #e2e8df;border-radius:12px;padding:15px 18px 17px;background:#fbfcfa;min-width:0}
.profile-step-head{display:flex;align-items:center;gap:11px;padding-bottom:11px;margin-bottom:7px;border-bottom:1px dashed #dfe6db}
.profile-step-no{width:30px;height:30px;flex:0 0 30px;display:grid;place-items:center;border-radius:9px;background:linear-gradient(135deg,#eaf3e5,#ddeeda);color:#34733a;font-size:12px;font-weight:800;letter-spacing:.02em}
.profile-step-head b{display:block;font-size:13.5px;font-weight:750;color:#26301f;letter-spacing:-.01em}
.profile-step-head small{display:block;color:var(--muted-2);font-size:11px;margin-top:1px}
.profile-step .kv{min-height:34px;padding:8px 2px}
.profile-step .kv .k{flex:none;min-width:106px}
.profile-step .kv>span:last-child{text-align:left;font-weight:600}
.profile-step .kv>span:last-child b{color:#1f6b2a}
.profile-step-foot{display:flex;align-items:center;gap:6px;margin:14px 2px 0}
.profile-step-foot svg{width:13px;height:13px;color:#8aa084}
@media (max-width:1180px){
  .profile-steps{grid-template-columns:1fr}
}

/* ===== 后台：用户当前投递清单 ===== */
.applied-stats{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.applied-stats .badge{font-size:12px;padding:5px 12px;border-radius:99px}
.applied-stats .dim{margin-left:auto;font-size:12px}
.applied-company b{display:block;font-size:13px;font-weight:700;color:#26301f}
.applied-company small{display:block;margin-top:2px;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7c857b;font-size:11.5px}
.applied-match{display:inline-flex;align-items:center;gap:7px}
.applied-match b{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.applied-match.high b{color:#2e7d32}
.applied-match.mid b{color:#b07a1e}
.applied-match.low b{color:#7c857b}
.applied-match-bar{width:42px;height:5px;border-radius:99px;background:#edf1ea;overflow:hidden;display:inline-block}
.applied-match-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#9fd68b,#4caf50)}
.applied-table{min-width:960px}

/* ===== 后台：状态徽标扩展 ===== */
.admin-page .badge.warn{background:#fdf3d9;border-color:#ecd9a4;color:#8a6d1d}
.admin-page .badge.err{background:#fbe9e6;border-color:#ecc9c2;color:#a4503f}

/* ===== 后台：投递清单空状态 ===== */
.applied-empty{display:flex;align-items:flex-start;gap:12px;padding:22px 20px;border:1px dashed #dbe4d8;border-radius:12px;background:#fbfcfa}
.applied-empty>i{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border-radius:10px;background:#eef4ea;color:#6f8f6a}
.applied-empty>i svg{width:17px;height:17px}
.applied-empty b{display:block;font-size:13.5px;color:#3b443c;margin-bottom:3px}
.applied-empty span{display:block;font-size:12px;line-height:1.6;color:var(--muted-2)}

/* ==========================================================================
   2026.09 投递清单 · 统一结构化卡片
   桌面与移动共用同一套卡片组件：顶部(序号+公司+匹配度) / 事实胶囊 / 命中理由 / 底部操作条。
   取代旧的 10 列表格行，减少留白、跨端一致。
   ========================================================================== */
.route-table{display:flex;flex-direction:column;gap:12px;background:transparent;border:0;overflow:visible}
.route-item{position:relative;margin-bottom:0;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:border-color .16s ease,box-shadow .16s ease}
.route-item:last-child{border-bottom:1px solid var(--line)}
.route-item:hover{border-color:#cfe0c8;box-shadow:0 6px 20px rgba(31,48,30,.06)}

.route-main{display:flex;flex-direction:column;align-items:stretch;gap:10px;min-height:0;padding:14px 16px}

/* 顶部行：序号 + 匹配度(环形核心) + 公司(弹性) + 推荐标签(靠右) */
.route-top{display:flex;align-items:center;gap:12px;min-width:0}
.route-rank{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;width:34px;padding:4px 0;border-radius:8px;background:#f3f6f1}
.route-rank span{font-size:13px;font-weight:800;line-height:1.1;color:var(--muted);font-variant-numeric:tabular-nums}
.route-rank small{font-size:9px;line-height:1.2;margin-top:1px;color:#a5afa4}
.route-item:nth-child(-n+4) .route-rank{background:var(--green)}
.route-item:nth-child(-n+4) .route-rank span,.route-item:nth-child(-n+4) .route-rank small{color:var(--green-strong)}
.route-company{flex:1 1 auto;min-width:0;gap:11px}
.route-company-icon{width:36px;height:36px;flex:0 0 36px;border:1px solid #d3e6cb;border-radius:10px;background:linear-gradient(180deg,#f3faf0,#e8f4e3);color:var(--green-strong);box-shadow:0 1px 2px rgba(31,48,30,.05)}
.route-company-icon svg{width:18px;height:18px}
.route-company-copy b{font-size:16.5px!important;font-weight:800;color:#0f150f;line-height:1.3;letter-spacing:normal}
/* 推荐投递：与序号块/企业图标等高(34px)的绿色药丸，居中后与企业名称同一水平线，间距均匀 */
.route-recommend{flex:0 0 auto;min-height:34px;gap:5px;padding:0 13px;border-radius:999px;background:linear-gradient(180deg,#eaf6ec,#dff0e3);border:1px solid #bfe0c6;color:#1f6b3d;font-size:10.5px;font-weight:800;line-height:1;letter-spacing:.02em;box-shadow:0 1px 2px rgba(31,107,61,.08)}
.route-recommend svg{width:12px;height:12px;flex:0 0 12px}

/* 匹配度 · 核心指标：环形仪表，按分档着色 + 入场动画 */
@property --pct{syntax:'<number>';inherits:true;initial-value:0}
@property --sweep{syntax:'<number>';inherits:true;initial-value:0}
.route-match{flex:0 0 auto;align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;width:auto;min-width:0;margin:0 7px;padding:0;border:0;border-radius:0;background:none;--sweep:var(--pct,0);animation:ring-sweep 1.15s cubic-bezier(.22,.9,.28,1) both;animation-delay:var(--ring-d,0s)}
.route-match.tier-high{--mc:#2f9e57;--mc-light:#7fd08f;--mc-soft:#e7f4e9}
.route-match.tier-mid{--mc:#cf8a15;--mc-light:#eec25a;--mc-soft:#fbf1dc}
.route-match.tier-low{--mc:#828c82;--mc-light:#aeb6ae;--mc-soft:#edf0ed}
.route-match .match-ring{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:50px;height:50px;border-radius:50%;background:conic-gradient(var(--mc-light,#7fd08f) 0%,var(--mc,#2f9e57) calc(var(--sweep,0) * 1%),var(--mc-soft,#e7f4e9) calc(var(--sweep,0) * 1%));animation:ring-pop .55s cubic-bezier(.34,1.56,.64,1) both;animation-delay:var(--ring-d,0s)}
.route-match .match-ring::after{content:"";position:absolute;inset:5px;border-radius:50%;background:#fff}
.route-match .match-ring b{position:relative;z-index:1;font-size:16px;font-weight:800;line-height:1;color:var(--mc,#2f9e57);font-variant-numeric:tabular-nums;animation:ring-num .5s ease-out both;animation-delay:calc(var(--ring-d,0s) + .28s)}
.route-match .match-cap{position:relative;z-index:1;font-size:7px;font-weight:700;line-height:1;color:var(--muted-2);letter-spacing:.01em;text-align:center;white-space:nowrap}
.route-match.tier-high .match-ring{animation:ring-pop .55s cubic-bezier(.34,1.56,.64,1) both,ring-glow 1.9s ease-out both;animation-delay:var(--ring-d,0s),calc(var(--ring-d,0s) + .45s)}
.route-reasons:before{content:none;flex:0 0 auto}

/* 卡片入场交错：前若干条依次点亮环形 */
.route-item:nth-child(1){--ring-d:.04s}
.route-item:nth-child(2){--ring-d:.10s}
.route-item:nth-child(3){--ring-d:.16s}
.route-item:nth-child(4){--ring-d:.22s}
.route-item:nth-child(5){--ring-d:.28s}
.route-item:nth-child(6){--ring-d:.34s}
.route-item:nth-child(7){--ring-d:.40s}
.route-item:nth-child(8){--ring-d:.46s}

@keyframes ring-sweep{from{--sweep:0}to{--sweep:var(--pct,0)}}
@keyframes ring-pop{from{transform:scale(.78);opacity:0}60%{opacity:1}to{transform:scale(1);opacity:1}}
@keyframes ring-num{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
@keyframes ring-glow{0%{box-shadow:0 0 0 0 rgba(47,158,87,.32)}65%{box-shadow:0 0 0 7px rgba(47,158,87,0)}100%{box-shadow:0 0 0 0 rgba(47,158,87,0)}}
@media (prefers-reduced-motion:reduce){
  .route-match,.route-match .match-ring,.route-match .match-ring b{animation:none}
}

/* 事实胶囊：批次 / 城市 / 性质 / 截止，自带小标签 */
.route-facts{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.fact{display:inline-flex;align-items:center;gap:5px;max-width:100%;min-width:0;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:#fafbf9;font-size:11.5px;line-height:1.5}
.fact em{flex:0 0 auto;font-style:normal;font-size:10px;font-weight:700;color:var(--muted-2)}
.fact b{min-width:0;font-weight:650;color:#39423a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fact-deadline small{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:var(--muted-2);white-space:nowrap}
.fact-deadline small svg{width:11px;height:11px}
.fact-deadline.urgent{border-color:#f0c9c2;background:#fff3f1}
.fact-deadline.urgent em,.fact-deadline.urgent b,.fact-deadline.urgent small{color:var(--coral)}
.fact-deadline.expired{border-color:var(--line);background:#f4f5f3}
.fact-deadline.expired em,.fact-deadline.expired b,.fact-deadline.expired small{color:var(--muted-2)}

/* 命中理由 chips */
.route-reasons{display:flex;flex-wrap:wrap;gap:6px}
.route-reasons span{padding:3px 9px;border-radius:999px;font-size:11px}

/* MBTI 推荐依据 chip：与头部紫色 MBTI 徽章同语言，标明「为什么给它打标签」 */
.route-reasons span.mbti-reason{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(180deg,#eef2fd,#e4ebfa);border:1px solid #c6d5ee;color:#1f4e8c;font-weight:600}
.route-reasons span.mbti-reason svg{width:11px;height:11px;color:#1f4e8c;flex:0 0 auto}

/* 底部操作条：官方公告(左) · 状态+收起(右) */
.route-ctrls{display:flex;align-items:center;gap:10px;margin-top:2px;padding-top:11px;border-top:1px solid var(--line)}
.route-entry{display:flex;align-items:center;gap:8px;min-width:0;margin-right:auto}
.route-entry .entry-btn{width:auto;padding:0 12px;font-size:12px}
.route-entry .entry-btn span{display:inline}
.no-entry{font-size:11px;color:var(--muted-2)}
.route-actions{display:flex;align-items:center;gap:8px;width:auto;min-width:0;margin-left:auto;flex:0 0 auto}
.route-actions .status-control{display:block;width:auto;min-width:0}
.route-actions .status-select{width:118px;min-width:118px}

/* 展开详情：卡片内全宽面板 */
.route-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px 20px;margin:0;padding:14px 16px;border:0;border-top:1px solid var(--line);border-radius:0;background:var(--surface-soft)}
.route-detail>div{min-width:0}
.route-detail>div:first-child{grid-column:1/-1}
.route-detail .detail-wide{grid-column:1/-1}
.detail-actions{grid-column:1/-1}

@media (max-width:720px){
  .route-table{gap:10px}
  .route-main{gap:9px;padding:12px 13px}
  .route-top{gap:9px}
  .route-rank{width:30px;padding:3px 0}
  .route-rank span{font-size:12px}
  .route-company{gap:8px}
  .route-company-icon{display:none}
  .route-company b{font-size:14.5px!important}
  .route-match{margin:0 2px}
  .route-match .match-ring{width:44px;height:44px}
  .route-match .match-ring::after{inset:4px}
  .route-match .match-ring b{font-size:15px}
  .route-match .match-cap{font-size:6.5px}
  .route-recommend{min-height:26px;padding:0 9px;font-size:9px}
  .route-recommend svg{width:10px;height:10px;flex:0 0 10px}
  .route-facts{gap:6px}
  .fact{padding:3px 8px;font-size:11px}
  .route-reasons span{font-size:10.5px}
  .route-ctrls{flex-wrap:wrap;gap:8px;padding-top:10px}
  .route-entry .entry-btn{padding:0 11px}
  .route-actions{gap:7px}
  .route-actions .status-select{width:104px;min-width:104px}
  .route-detail{grid-template-columns:1fr;padding:13px}
  .detail-actions .btn{flex:1 1 auto}
}
@media (max-width:480px){
  .route-match .match-ring{width:40px;height:40px}
  .route-match .match-ring b{font-size:14px}
  .route-match .match-cap{display:none}
  .route-actions .status-select{width:96px;min-width:96px}
  .route-ctrls{gap:7px}
}

/* ==== 2026-09-04 推荐方案卡片（首页 pricing-tease）：消除内容挤左 ==== */
.plan-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);padding:24px 26px;gap:18px}
.plan-summary{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;min-width:0}
.plan-summary>span{flex:0 0 auto}
.plan-summary>div{flex:1 1 160px;min-width:0}
.plan-summary>b,.plan-summary>small{display:block}
.plan-summary>b{font-size:16px}
.plan-summary>div>small{color:var(--muted-2);font-size:11px;margin-top:2px}
.plan-summary>strong{font-size:25px;color:var(--purple);white-space:nowrap;flex:0 0 auto;display:inline-flex;align-items:baseline;gap:4px}
.plan-summary>strong small{font-size:12px;color:var(--muted-2);font-weight:500}
.plan-summary>.btn{flex:0 0 auto}
.plan-points{justify-content:flex-end;min-width:0}

/* ==== 移动端：重新评估徽标 / 拥挤按钮 ==== */
/* 1) 重新评估按钮：禁止文字断行；徽标改为按钮外的右上角角标，不挤压文字位置 */
#reevalBtn{white-space:nowrap}
.btn{white-space:nowrap}
.reeval-cell{position:relative;display:inline-flex;overflow:visible}
.reeval-cell .reeval-update-badge{position:absolute;top:-7px;right:-7px;font-size:10px;line-height:1;padding:4px 6px;border-radius:999px;background:var(--green-strong);color:#fff;font-weight:700;letter-spacing:.5px;box-shadow:0 0 0 2px #fff;white-space:nowrap;pointer-events:none}
/* 2) ≤720 头部操作区：栅格单列，重新评估按钮独占一行，其他按钮各占整行 */
@media (max-width:720px){
  .route-title{flex-wrap:wrap;align-items:flex-start;gap:12px}
  .route-title>div:first-child{flex:1 1 100%;min-width:0}
  .header-actions{flex-basis:100%;display:grid;grid-template-columns:1fr;gap:8px;margin-top:4px}
  .header-actions .btn{flex:0 0 auto;width:100%;min-width:0;justify-content:center}
  .reeval-cell{width:100%}
  .reeval-cell .reeval-update-badge{top:-7px;right:10px}
}
/* 3) ≤720 推荐方案卡片：单列、按钮整行；价格变纵排防溢出；点阵列下不再断行 */
@media (max-width:720px){
  .plan-row{grid-template-columns:minmax(0,1fr);gap:14px;padding:20px 18px}
  .plan-summary{justify-content:flex-start;gap:10px 14px;align-items:flex-start}
  .plan-summary>div{min-width:0}
  .plan-summary>.btn{flex:1 1 100%;width:100%;justify-content:center;margin-top:2px}
  /* 价格整段允许收缩；纵向排版防长串单位溢出右侧 */
  .plan-summary>strong{flex:0 1 auto;min-width:0;flex-direction:column;align-items:flex-start;gap:0}
  .plan-summary>strong small{display:block;margin-top:2px;font-size:12px}
  .plan-points{justify-content:flex-start;display:flex;flex-wrap:wrap;gap:8px 14px;row-gap:8px}
}

/* ==== 重新评估确认弹窗（四种状态） ==== */
.reeval-modal .invite-modal-box{overflow:hidden}
.reeval-modal .invite-modal-head{border-bottom:0;padding:18px 20px 6px;align-items:flex-start}
.reeval-modal .invite-modal-head h3{display:flex;align-items:flex-start;gap:12px;font-size:14px}
.reeval-head-text{display:flex;flex-direction:column;gap:2px;line-height:1.3;flex:1 1 auto;min-width:0}
.reeval-eyebrow{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--green-strong);text-transform:uppercase}
.reeval-title{font-size:16px;font-weight:700;color:var(--ink)}
.reeval-ico{width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;flex:none;background:#eef6e9;color:var(--green-strong)}
.reeval-ico svg{width:18px;height:18px}

.reeval-state-draft .reeval-ico{background:#fff5e6;color:#a55f0f}
.reeval-state-draft .reeval-eyebrow{color:#a55f0f}
.reeval-state-outdated .reeval-ico{background:#eaf2fd;color:#1a5fb4}
.reeval-state-outdated .reeval-eyebrow{color:#1a5fb4}
.reeval-state-both .reeval-ico{background:linear-gradient(135deg,#eef6e9 60%,#eaf2fd);color:#0f5132}
.reeval-state-both .reeval-eyebrow{color:#0f5132}
.reeval-state-none .reeval-ico{background:#f1f3ef;color:var(--muted)}
.reeval-state-none .reeval-eyebrow{color:var(--muted)}

.reeval-modal .invite-modal-body{padding:6px 20px 18px}
.reeval-desc{margin:6px 0 14px;font-size:13.5px;line-height:1.75;color:#3a4a3e}
.reeval-list{margin:0 0 14px;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.reeval-list li{display:flex;align-items:flex-start;gap:9px;padding:9px 12px;border-radius:10px;background:#f7faf6;border:1px solid #e3edde;font-size:13px;color:#3a4a3e;line-height:1.55}
.reeval-list li>svg{flex:none;color:var(--green-strong);width:15px;height:15px;margin-top:2px}
.reeval-state-draft .reeval-list li{background:#fff7e8;border-color:#f4dca8;color:#5a3d12}
.reeval-state-draft .reeval-list li>svg{color:#c98217}
.reeval-state-outdated .reeval-list li{background:#eef4fb;border-color:#cddffb;color:#1b4071}
.reeval-state-outdated .reeval-list li>svg{color:#2787e8}

.reeval-quota{display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:10px;background:#fff;border:1px dashed #d8d8d8;font-size:12.5px;color:#4d5b50;margin-bottom:14px;line-height:1.5}
.reeval-quota-ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;background:#f4f6f2;color:var(--green-strong);flex:none}
.reeval-quota-ico svg{width:14px;height:14px}
.reeval-modal .invite-modal-actions{display:flex;gap:10px;padding-top:6px}
.reeval-modal .invite-modal-actions .btn{flex:1;min-width:0}
.reeval-modal .invite-modal-actions .btn:only-child{margin-left:auto;flex:0 0 auto;min-width:140px}
/* 状态图标：仅显示当前状态对应的图标（lucide 转换后 class 会保留在 svg 上） */
.reeval-ico .reeval-ico-item{display:none}
.reeval-state-draft .reeval-ico .ico-draft,
.reeval-state-outdated .reeval-ico .ico-outdated,
.reeval-state-both .reeval-ico .ico-both,
.reeval-state-none .reeval-ico .ico-none{display:block}
/* 四种状态面板切换 */
.reeval-pane{display:none}
.reeval-pane.on{display:block}
.reeval-state-none .reeval-list li{background:#f6f7f5;border-color:#e4e6e1;color:#4d5b50}
.reeval-state-none .reeval-list li>svg{color:var(--muted)}
.reeval-state-both .reeval-list li{background:#f2f8f1;border-color:#dcebd8;color:#274a2f}
.reeval-state-both .reeval-list li>svg{color:#0f5132}
/* 窄屏微调：标题字号与列表间距 */
@media (max-width:480px){
  .reeval-modal .invite-modal-head{padding:16px 16px 4px}
  .reeval-modal .invite-modal-body{padding:4px 16px 16px}
  .reeval-title{font-size:15px}
  .reeval-desc{font-size:13px}
  .reeval-list li{font-size:12.5px;padding:8px 10px}
}

/* ================================================================== *
 * 需求2：画像第五步 工作/实习经历与项目经历 条目编辑器
 * ================================================================== */
.exp-list{display:flex;flex-direction:column;gap:9px;margin:8px 0 2px}
.exp-empty{font-size:12px;color:var(--muted);background:var(--surface-soft);border:1px dashed var(--line-strong);border-radius:9px;padding:10px 12px}
.exp-row{border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);padding:10px 12px}
.exp-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.exp-row-head b{font-size:12px;color:var(--green-strong)}
.exp-del{border:1px solid #f0c6c0;background:#fff;color:var(--coral);font-size:11px;border-radius:7px;padding:3px 9px}
.exp-del:hover{background:#fdf3f1}
.exp-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 10px}
.exp-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.exp-f span{font-size:11px;color:var(--muted);font-weight:650}
.exp-f input,.exp-f textarea{width:100%;padding:7px 10px;border:1px solid var(--line-strong);border-radius:8px;font-size:12.5px;outline:0;background:#fff;color:var(--ink)}
.exp-f input:focus,.exp-f textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(39,135,232,.12)}
.exp-f textarea{resize:vertical;min-height:64px;line-height:1.6}
.exp-wide{grid-column:1/-1}
.exp-add{display:inline-flex;align-items:center;gap:6px;border:1px dashed var(--line-strong);background:#fff;color:var(--muted);border-radius:9px;padding:8px 14px;font-size:12.5px;margin-top:8px}
.exp-add:hover{border-color:var(--green-strong);color:var(--green-strong);background:#f5faf1}
.exp-add span{font-weight:800}
@media (max-width:720px){.exp-grid{grid-template-columns:1fr}}

/* ================================================================== *
 * 需求7：模拟面试官页面
 * ================================================================== */
.interview-page .app-main{padding-bottom:86px}
.iv-wrap{max-width:860px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.iv-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px}
.iv-resume-line{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-bottom:6px}
.iv-resume-title{font-size:16px;font-weight:800}
.iv-sub{font-size:12.5px;color:var(--muted);margin:0 0 4px;line-height:1.75}
.iv-h3{display:flex;align-items:center;gap:8px;font-size:16px;margin:0 0 8px}
.iv-h3 svg{color:var(--green-strong)}
.iv-start-btn{margin-top:10px}
.iv-quiz-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.iv-progress{flex:1;min-width:200px}
.iv-progress span{font-size:12px;font-weight:750;color:var(--green-strong)}
.iv-progress-bar{height:6px;border-radius:99px;background:#dfe5db;overflow:hidden;margin-top:6px}
.iv-progress-bar i{display:block;height:100%;width:20%;background:linear-gradient(90deg,#9bea63,#57c938);border-radius:99px;transition:width .3s ease}
.iv-qdots{display:flex;gap:6px}
.iv-qdot{width:28px;height:28px;border-radius:50%;border:1px solid var(--line-strong);background:#fff;color:var(--muted);font-size:12px;font-weight:700;display:grid;place-items:center;padding:0}
.iv-qdot.on{border-color:var(--green-strong);background:var(--green-strong);color:#fff}
.iv-qdot.done{border-color:#a8d69c;background:#e8f6e3;color:var(--green-strong)}
.iv-question{background:var(--surface-soft);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:12px}
.iv-q-text{font-size:15.5px;font-weight:750;line-height:1.7;margin:6px 0 0}
.iv-q-focus{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--purple);background:#f2edfd;border:1px solid #ddd2f7;border-radius:99px;padding:2px 10px}
.iv-answer{display:block;margin-bottom:12px}
.iv-answer>span{display:block;font-size:12px;color:var(--muted);font-weight:700;margin-bottom:6px}
.iv-answer textarea{width:100%;padding:11px 13px;border:1px solid var(--line-strong);border-radius:10px;font-size:13.5px;line-height:1.7;resize:vertical;outline:0;background:#fff;color:var(--ink)}
.iv-answer textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(39,135,232,.12)}
.iv-quiz-actions{display:flex;gap:8px;flex-wrap:wrap}
.iv-hint{font-size:11.5px;color:var(--muted-2);margin:10px 0 0;line-height:1.7}
.iv-result-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.iv-result-actions{display:flex;gap:8px}
.iv-review-item{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:var(--surface-soft)}
.iv-review-item:last-child{margin-bottom:0}
.iv-review-q{font-size:13px;font-weight:800;color:var(--green-strong);margin-bottom:10px;line-height:1.6}
.iv-answer-origin,.iv-answer-opt{font-size:12.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word;border-radius:9px;padding:10px 12px;margin-bottom:8px}
.iv-answer-origin>span,.iv-answer-opt>span{display:block;font-size:10.5px;font-weight:750;margin-bottom:5px;letter-spacing:.04em}
.iv-answer-origin{background:#fff;border:1px solid var(--line);color:var(--muted)}
.iv-answer-origin>span{color:var(--muted-2)}
.iv-answer-opt{background:#f2f9ee;border:1px solid #cfe0c6;color:#2c3a2b}
.iv-answer-opt>span{color:var(--green-strong)}
.iv-changes{margin-top:4px;border-top:1px dashed #cfe0c6;padding-top:9px}
.iv-changes-title{font-size:11px;font-weight:750;color:var(--green-strong);margin-bottom:6px}
.iv-change{background:#fff;border:1px solid #e2ecdd;border-radius:7px;padding:7px 9px;margin-bottom:6px}
.iv-change:last-child{margin-bottom:0}
.iv-change-row{display:flex;gap:6px;font-size:12px;line-height:1.6}
.iv-change-row b{flex:0 0 22px;color:#9aa794;font-size:10px;font-weight:750;margin-top:1px}
.iv-change-row s{color:#b26a6a;text-decoration:line-through}
.iv-change-row span{color:#2f7a33}
.iv-change-reason{margin-top:3px;padding-left:28px;font-size:11px;color:#6a746a;line-height:1.5}
.iv-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:18px;background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--r-lg);color:var(--muted);font-size:13px}
.iv-loading svg{width:18px;height:18px;color:var(--green-strong)}
.iv-loading [data-lucide].spin{animation:ivSpin 1s linear infinite}
@keyframes ivSpin{to{transform:rotate(360deg)}}

/* ================================================================== *
 * 需求11：模拟面试 · 专业蓝色主题（覆盖上方初版样式）
 * ================================================================== */
.btn-blue{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(37,99,235,.28)}
.btn-blue:hover{background:linear-gradient(135deg,#2f6fe0,#1d4fd8);box-shadow:0 8px 20px rgba(37,99,235,.36)}
.interview-page .app-main{padding-top:4px}
.iv-wrap{gap:16px}
.iv-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#eef4ff 0%,#ffffff 55%);border:1px solid #d5e2fb;border-radius:var(--r-lg);padding:22px 24px}
.iv-hero::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(180deg,#3b82f6,#1d4fd8)}
.iv-resume-title{font-size:18px;font-weight:800;letter-spacing:-.01em}
.iv-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:650;color:#43506b;background:#f1f4f9;border:1px solid #dfe5ee;border-radius:99px;padding:3px 10px;white-space:nowrap}
.iv-chip svg{width:13px;height:13px}
.iv-chip-blue{color:#2258d8;background:#e9f0fe;border-color:#cddcfa}
.iv-chip-amber{color:#a06514;background:#fdf3e3;border-color:#f3ddbe}
.iv-h3{color:#16233c;font-size:17px;letter-spacing:-.01em}
.iv-h3 svg{color:#2563eb}
.iv-start-btn{min-height:44px;padding:10px 22px;font-size:14px;font-weight:750}
.iv-quiz-head{padding:14px 16px;background:#f6f9ff;border:1px solid #dfe9fb;border-radius:12px;margin-bottom:14px}
.iv-progress span{color:#2563eb;font-weight:800}
.iv-progress-bar{background:#dfe7f5}
.iv-progress-bar i{background:linear-gradient(90deg,#60a5fa,#2563eb)}
.iv-qdot{border-color:#c9d6ee;color:#5b6b8c}
.iv-qdot.on{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:0 0 0 4px rgba(37,99,235,.14)}
.iv-qdot.done{border-color:#9ec0f7;background:#e6effe;color:#2563eb}
.iv-question{position:relative;background:#fff;border:1px solid #dbe4f3;border-left:4px solid #2563eb;border-radius:12px;padding:18px 20px;box-shadow:0 6px 18px rgba(23,42,84,.05)}
.iv-q-focus{color:#2258d8;background:#e9f0fe;border-color:#cddcfa}
.iv-q-text{font-size:16.5px;font-weight:750;color:#131f36}
.iv-answer textarea{border-color:#c9d6ee}
.iv-answer textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.14)}
.iv-review-item{border-color:#dbe4f3;background:#fbfcff;padding:16px 18px}
.iv-review-q{display:flex;align-items:flex-start;gap:9px;color:#16233c;font-size:13.5px}
.iv-q-no{flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:#2563eb;color:#fff;font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
.iv-answer-opt{background:#eef4ff;border-color:#cddcfa;color:#1c2b4a}
.iv-answer-opt>span{color:#2563eb}
.iv-changes-title{color:#2563eb}
.iv-result-head{margin-bottom:12px}
.iv-session-meta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.iv-hist-list{display:flex;flex-direction:column;gap:8px}
.iv-hist-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:#fff;border:1px solid #dbe4f3;border-radius:11px;padding:12px 14px}
.iv-hist-item:hover{border-color:#9ec0f7;background:#f6f9ff}
.iv-hist-item svg{width:16px;height:16px;color:#8fa3c8;flex:0 0 16px}
.iv-hist-main{flex:1;min-width:0}
.iv-hist-main b{display:block;font-size:13.5px;color:#16233c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iv-hist-main small{display:block;font-size:11.5px;color:#7b8aa6;margin-top:2px}

/* ================================================================== *
 * 需求4/9：模拟面试处理中弹窗（居中模态，完成后自动关闭）
 * ================================================================== */
/* 入场用「hidden 控布局 + .show 控过渡」两层机制：
   hidden 归零布局（[hidden]{display:none!important}），显示后下一帧再加 .show，
   遮罩淡入、卡片上浮，图形动效也随之从第一帧开始播放（此前只有 tone-* 有动效、且无入场过渡）。 */
.iv-modal-mask { position: fixed; inset: 0; z-index: 300; background: rgba(10, 16, 26, .5); display: flex; align-items: center; justify-content: center; padding: 20px; opacity: 0; transition: opacity .2s ease; }
.iv-modal-mask.show { opacity: 1; }
.iv-modal { width: min(420px, 100%); background: #fff; border-radius: 18px; box-shadow: 0 32px 90px rgba(6, 14, 28, .4); padding: 34px 32px 26px; text-align: center; transform: translateY(12px) scale(.97); transition: transform .24s cubic-bezier(.16, 1, .3, 1); }
.iv-modal-mask.show .iv-modal { transform: none; }
.iv-modal-orb { width: 60px; height: 60px; margin: 0 auto 16px; border-radius: 50%; background: radial-gradient(circle at 32% 30%, #dbeafe, #3b82f6 58%, #1d4fd8); display: grid; place-items: center; box-shadow: 0 0 0 0 rgba(59, 130, 246, .45); animation: ivOrbPulse 1.8s ease-in-out infinite; }
.iv-modal-orb svg { width: 25px; height: 25px; color: #fff; }
/* 光晕 + 轻微缩放：缩放走 transform（合成层，桌面端各内核都稳），避免只靠 box-shadow 插值 */
@keyframes ivOrbPulse { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(59, 130, 246, .45); } 55% { transform: scale(1.05); box-shadow: 0 0 0 16px rgba(59, 130, 246, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); } }
.iv-modal h3 { font-size: 18px; color: #16233c; margin: 0 0 8px; }
.iv-modal p { font-size: 13px; color: #5b6b8c; margin: 0 0 18px; line-height: 1.7; }
.iv-modal-bar { height: 6px; border-radius: 99px; background: #e2e9f6; overflow: hidden; position: relative; }
.iv-modal-bar-i { position: absolute; top: 0; left: -38%; width: 38%; height: 100%; border-radius: 99px; background: linear-gradient(90deg, rgba(96, 165, 250, .3), #2563eb, rgba(96, 165, 250, .3)); animation: ivBarSlide 1.15s cubic-bezier(.45, .05, .55, .95) infinite; }
@keyframes ivBarSlide { 0% { left: -38%; } 100% { left: 100%; } }
.iv-modal small { display: block; margin-top: 12px; font-size: 11px; color: #93a2bd; line-height: 1.7; }

/* ================================================================== *
 * 需求4：重新生成题目确认弹窗
 * ================================================================== */
.iv-modal-confirm { width: min(400px, 100%); padding: 30px 28px 24px; }
.iv-orb-amber { background: radial-gradient(circle at 32% 30%, #fef3c7, #f59e0b 58%, #b45309); box-shadow: 0 0 0 0 rgba(245, 158, 11, .45); animation: ivOrbAmber 1.7s ease-out infinite; }
.iv-orb-amber svg { color: #fff; }
@keyframes ivOrbAmber { 0% { box-shadow: 0 0 0 0 rgba(245, 158, 11, .4); } 70% { box-shadow: 0 0 0 22px rgba(245, 158, 11, 0); } 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); } }
.iv-confirm-actions { display: flex; gap: 10px; justify-content: center; margin-top: 6px; }
.iv-confirm-actions .btn { min-width: 112px; }
/* 需求5：模拟面试选择列表的模拟次数标签 */
.rv-mock-count { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; white-space: nowrap; margin: 7px 0 0; font-size: 10.5px; font-weight: 700; color: #8a94a8; background: #f1f4f9; border: 1px solid #dfe5ee; border-radius: 99px; padding: 2px 9px; width: fit-content; }
.rv-mock-count svg { width: 11px !important; height: 11px !important; flex: 0 0 11px; }
.rv-mock-count.has { color: #2258d8; background: #e9f0fe; border-color: #cddcfa; }

/* ================================================================== *
 * 需求3：后台用户详情 · 模拟面试记录
 * ================================================================== */
.iv-admin-list { display: flex; flex-direction: column; gap: 8px; }
.iv-admin-item { border: 1px solid var(--line, #dce2d9); border-radius: 10px; background: var(--surface-soft, #f9fbf8); overflow: hidden; }
.iv-admin-item > summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 14px; cursor: pointer; list-style: none; }
.iv-admin-item > summary::-webkit-details-marker { display: none; }
.iv-admin-item > summary:hover { background: #f2f7ef; }
.iv-admin-sum-main { min-width: 0; }
.iv-admin-sum-main b { display: block; font-size: 13px; color: var(--ink, #0e0f0c); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.iv-admin-sum-main small { display: block; font-size: 11.5px; color: var(--muted-2, #8a9489); margin-top: 2px; }
.iv-admin-sum-hint { flex: 0 0 auto; font-size: 11.5px; color: var(--muted, #667066); }
.iv-admin-item[open] .iv-admin-sum-hint::after { content: ''; }
.iv-admin-item[open] > summary { border-bottom: 1px dashed var(--line, #dce2d9); }
.iv-admin-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 12px; }
.iv-admin-qa { border: 1px solid var(--line, #dce2d9); border-radius: 10px; padding: 12px 13px; background: #fff; }
.iv-admin-q { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; font-weight: 750; color: var(--ink, #0e0f0c); line-height: 1.6; margin-bottom: 8px; }
.iv-admin-qno { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; background: #246b2a; color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; margin-top: 1px; }
.iv-admin-block { font-size: 12px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; border-radius: 8px; padding: 8px 10px; margin-bottom: 6px; }
.iv-admin-block > span { display: block; font-size: 10.5px; font-weight: 750; margin-bottom: 4px; }
.iv-admin-orig { background: #f6f8f4; border: 1px solid #e4e9e1; color: var(--muted, #667066); }
.iv-admin-opt { background: #f2f9ee; border: 1px solid #cfe0c6; color: #2c3a2b; }
.iv-admin-opt > span { color: var(--green-strong, #246b2a); }
.iv-admin-change { border: 1px solid #e2ecdd; border-radius: 7px; padding: 7px 9px; margin-bottom: 5px; }
.iv-admin-chg-row { display: flex; gap: 6px; font-size: 11.5px; line-height: 1.6; }
.iv-admin-chg-row b { flex: 0 0 20px; color: #9aa794; font-size: 10px; margin-top: 1px; }
.iv-admin-chg-row s { color: #b26a6a; }
.iv-admin-chg-row span { color: #2f7a33; }
.iv-admin-chg-reason { padding-left: 26px; font-size: 11px; color: #6a746a; line-height: 1.5; }

/* ================================================================== *
 * 需求2：个人中心「我的画像」内容限高滚动，卡密板块高度不受影响
 * ================================================================== */
.account-grid { align-items: start; }
.account-profile-card { display: flex; flex-direction: column; max-height: 560px; }
.account-profile-card .account-card-title { flex: 0 0 auto; }
.account-profile-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding-right: 6px; padding-bottom: 10px; scrollbar-width: thin; scrollbar-color: #c3cdbf transparent; }
.account-profile-scroll::-webkit-scrollbar { width: 6px; }
.account-profile-scroll::-webkit-scrollbar-thumb { background: #c3cdbf; border-radius: 99px; }
.account-profile-scroll::-webkit-scrollbar-track { background: transparent; }

/* ===== 需求2：模拟面试官卖点卡（蓝色变体，与 1v1 简历琥珀卡同构） ===== */
.hero-ai-card.blue{background:linear-gradient(120deg,#eaf2fe,#f7fbff);border-color:#c9dcfa;box-shadow:0 10px 26px rgba(26,80,180,.10)}
.hero-ai-card.blue .hero-ai-icon{background:linear-gradient(135deg,#cfe2fb,#8db9f5);border-color:#7fa9ef;color:#12408f;box-shadow:0 4px 12px rgba(26,95,180,.18)}
.hero-ai-card.blue b{color:#12305f}
.hero-ai-card.blue small{color:#4f6d9c}
.vip-selling.blue{border-color:#c9dcfa;background:linear-gradient(150deg,#f3f8ff,#fff 62%)}
.vip-selling.blue .vip-selling-seal{background:linear-gradient(135deg,#cfe2fb,#8db9f5);border-color:#7fa9ef;color:#12408f;box-shadow:0 6px 16px rgba(26,95,180,.20)}
.vip-selling.blue .vsi-icon{background:#e9f1fe;border-color:#c9dcfa;color:#2258d8}
.vip-selling.blue .vip-selling-head h2{color:#12305f}
.vip-selling.blue .vip-selling-head p{color:#4f6d9c}

/* ===== 需求3：已截止 · 仍可尝试投递 —— 过期提示改为醒目红色 ===== */
.fact-deadline.expired{border-color:#f3b6ae;background:#fdecea}
.fact-deadline.expired em{color:#b3402f}
.fact-deadline.expired b{color:#c03628;font-weight:800}
.fact-deadline.expired small{color:#c03628;font-weight:800}
.fact-deadline.expired small svg{color:#d64541}
.route-deadline.expired b,.route-deadline.expired small{color:#c03628}

/* ===== 会员页改版：三卡卖点横排（紧凑）+ 绿色变体 + 权益条 ===== */
.vip-selling.green{border-color:#cfe5c6;background:linear-gradient(150deg,#f3faf0,#fff 62%)}
.vip-selling.green .vip-selling-seal{background:linear-gradient(135deg,#c9ecb8,#8fd06f);border-color:#79c25b;color:#1d4d12;box-shadow:0 6px 16px rgba(60,130,50,.20)}
.vip-selling.green .vsi-icon{background:#eaf7e5;border-color:#cfe5c6;color:#2f7a33}
.vip-selling.green .vip-selling-head h2{color:#1d4d12}
.vip-selling.green .vip-selling-head p{color:#5f7a52}
.selling-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:stretch;margin:0 0 24px}
.selling-trio .vip-selling{display:flex;flex-direction:column;height:100%;margin:0;padding:12px 12px 12px}
.selling-trio .vip-selling-head{padding:0 0 4px;gap:11px;align-items:center}
.selling-trio .vip-selling-seal{width:44px;height:44px;flex:0 0 44px;border-radius:12px;box-shadow:none}
.selling-trio .vip-selling-seal svg{width:21px;height:21px}
.selling-trio .vip-selling-head h2{font-size:15.5px;margin:0 0 2px;letter-spacing:0}
.selling-trio .vip-selling-head p{margin:0;font-size:11.5px;line-height:1.6;max-width:none}
.selling-trio .vip-selling-grid{margin-top:auto;padding:0;grid-template-columns:1fr;gap:7px}
.selling-trio .vip-selling-item{padding:7px 9px;gap:9px}
.selling-trio .vsi-icon{width:30px;height:30px;flex:0 0 30px;border-radius:9px}
.selling-trio .vsi-icon svg{width:14px;height:14px}
.selling-trio .vip-selling-item b{font-size:12px}
.selling-trio .vip-selling-item small{font-size:10.5px;margin-top:1px}
.perk-strip{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin:18px 0 0}
.perk-strip span{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 14px}
.perk-strip svg{width:14px;height:14px;color:var(--green-strong)}
@media (max-width:1080px){.selling-trio{grid-template-columns:1fr}}

/* ===== 修正：绿/蓝卖点卡残留的金色光晕与条目边框，改为各自色系 ===== */
.vip-selling.green::before{background:radial-gradient(circle,rgba(143,208,111,.28),transparent 70%)}
.vip-selling.blue::before{background:radial-gradient(circle,rgba(141,185,245,.28),transparent 70%)}
.vip-selling.green .vip-selling-item{border-color:#cfe5c6;background:rgba(250,253,248,.78)}
.vip-selling.blue .vip-selling-item{border-color:#c9dcfa;background:rgba(248,251,255,.78)}

/* ===== 需求：移动端底部导航可左右滚动（含开通会员/客户端） ===== */
.mobile-app-nav{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#c3cdbf transparent;padding:0 6px}
.mobile-app-nav::-webkit-scrollbar{height:3px}
.mobile-app-nav::-webkit-scrollbar-thumb{background:#c3cdbf;border-radius:99px}
.mobile-app-nav::-webkit-scrollbar-track{background:transparent}
.mobile-app-nav a{flex:0 0 auto;min-width:64px;padding:0 4px}
@media (min-width:721px){.mobile-app-nav{display:none}}

/* ===== 需求：价格卡下方权益条不再换行掉字（整条横向滑动） ===== */
.perk-strip{flex-wrap:nowrap;justify-content:center;justify-content:safe center;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#c3cdbf transparent;padding:2px}
.perk-strip span{flex:0 0 auto;white-space:nowrap}

/* ===== 需求：底部导航自适应不同手机宽度 =====
   宽屏：8 个入口均分铺满整行，不拥挤、不滚动；
   窄屏：逐级压缩字号与间距，仍放不下时才启用左右滑动。 */
.mobile-app-nav{justify-content:stretch}
.mobile-app-nav a{flex:0 0 auto;min-width:72px;padding:0 6px;text-align:center}


/* ===== 修正：已截止提示文字贴右缘——图标槽对齐字形，右侧留呼吸空间 ===== */
.fact-deadline small svg{width:11px;height:11px;flex:0 0 11px}
.fact-deadline.expired{padding-right:10px}
.fact-deadline.expired small{gap:4px}

/* ============================================================
   首页「企业数据更新」大型弹窗 + 最近更新企业列表
   （行复用投递清单 route-item 卡片样式；此处只做弹窗与列表
    作用域内的少量适配，不污染 result.php 布局）
   ============================================================ */
#dataStatsModal{display:none}
#dataStatsModal.open{display:flex}
.dc-modal .invite-modal-mask{background:rgba(12,20,14,.58)}
.dc-modal .invite-modal-box{max-width:min(920px,calc(100vw - 32px));max-height:88vh;border-radius:20px;overflow:hidden}
.dc-head{display:flex;align-items:center;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line);flex:none}
.dc-head-copy{display:flex;align-items:center;gap:10px;flex:1;min-width:0;flex-wrap:wrap}
.dc-head h3{font-size:18px;margin:0;display:flex;align-items:center;gap:9px;font-weight:800;white-space:nowrap}
.dc-head h3 svg{width:20px;height:20px;color:var(--green-strong);flex:0 0 20px}
.dc-head .invite-modal-close{flex:0 0 auto;margin-left:auto}
.dc-head-ver{font-size:12px;color:var(--muted-2);background:var(--surface-soft);border:1px solid var(--line);padding:5px 11px;border-radius:99px;white-space:nowrap}
.dc-body{padding:16px 22px 14px;overflow-y:auto}

/* 顶部统计：左侧大 hero(在招总数) + 右侧两小卡(最近一批更新/数据更新日期) */
.dc-dash{display:grid;grid-template-columns:minmax(250px,1.05fr) 1.55fr;gap:14px;align-items:stretch}
.dc-hero{position:relative;overflow:hidden;border-radius:16px;padding:18px 20px;background:linear-gradient(135deg,#eef9e6,#f7fcf2);border:1px solid #d2e6c7;display:flex;align-items:center;gap:16px;min-width:0}
.dc-hero:after{content:"";position:absolute;right:-42px;top:-54px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(155,234,99,.4),transparent 68%)}
.dc-hero-ico{position:relative;z-index:1;width:54px;height:54px;flex:none;border-radius:15px;display:grid;place-items:center;background:#fff;border:1px solid #cde6c0;color:var(--green-strong);box-shadow:0 6px 16px rgba(36,107,42,.12)}
.dc-hero-ico svg{width:27px;height:27px}
.dc-hero-copy{position:relative;z-index:1;min-width:0}
.dc-hero-copy .dhl{display:block;font-size:12px;color:var(--green-strong);font-weight:750;letter-spacing:.02em}
.dc-hero-copy .dhn{display:block;font-size:40px;line-height:1.04;font-weight:850;color:var(--green-strong);font-variant-numeric:tabular-nums;margin:3px 0 1px}
.dc-hero-copy .dhs{font-size:12px;color:var(--muted);margin:0}
.dc-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.dc-card{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#fff;padding:15px 16px 14px;min-width:0}
.dc-card:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--dc,var(--green-strong))}
.dc-card .dci{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--dci,rgba(155,234,99,.24));color:var(--dc,var(--green-strong));margin-bottom:9px}
.dc-card .dci svg{width:16px;height:16px}
.dc-card .dcw b{display:block;font-size:24px;line-height:1.15;font-weight:850;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dc-card .dcw b.is-date{font-size:16px}
.dc-card .dcw span{display:block;font-size:11.5px;color:var(--muted-2);margin-top:2px}
.dc-card.dc-green2{--dc:#2f9e57;--dci:rgba(47,158,87,.14)}
.dc-card.dc-blue{--dc:var(--blue);--dci:rgba(39,135,232,.14)}

/* 列表头部 */
.dc-list-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0 12px}
.dc-list-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800}
.dc-list-title svg{width:17px;height:17px;color:var(--green-strong)}
.dc-list-title small{font-weight:600;color:var(--muted-2);font-size:12px;margin-left:4px}
.dc-lock-tip{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#8a6a10;background:#fdf6e3;border:1px solid #ecd9a8;padding:6px 11px;border-radius:99px;white-space:nowrap;flex:0 0 auto;max-width:100%}
.dc-lock-tip svg{width:13px;height:13px;color:#c9992e}

/* 列表主体：投递清单同款 route-item 卡片，纵向堆叠 */
.dc-list{display:flex;flex-direction:column;gap:10px;min-height:120px;position:relative}
.dc-empty{padding:52px 10px;text-align:center;color:var(--muted-2)}
.dc-empty svg{width:36px;height:36px;margin-bottom:12px;color:var(--muted-2)}
.dc-empty p{margin:0;font-size:13px}
.dc-empty[hidden]{display:none}

/* 弹窗内 route-item 微量适配：与页面投递清单一致，仅压缩默认间距 */
.dc-item .route-main{padding:13px 16px 6px}
.dc-item:not(.collapsed) .route-main{padding-bottom:18px}
.dc-item .route-top{display:flex;align-items:center;gap:12px;min-width:0}
.dc-item .route-company{flex:1 1 auto;min-width:0}
.dc-item .route-company-copy b,
.dc-item .route-company-name{display:block;font-size:16px;font-weight:800;color:#0f150f;line-height:1.35;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.dc-item .route-company-name:hover{color:var(--green-strong)}
/* 展开后 detail 与上方 facts 分隔线保持间距 */
.dc-item .route-detail{margin-top:2px;padding:12px 16px}

/* 顶行右侧：官方公告 + 前往投递 单行右对齐 */
.dc-acts{flex:0 0 auto;display:flex;align-items:center;gap:8px;margin-left:auto;min-width:0;flex-wrap:wrap;justify-content:flex-end}
.dc-btn{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 13px;border-radius:9px;font-size:12.5px;font-weight:700;text-decoration:none;white-space:nowrap;border:1px solid transparent;cursor:pointer;background:#fff;font-family:inherit}
.dc-btn svg{width:14px;height:14px;flex:0 0 14px}
.dc-btn.dc-ann{background:#fff;border-color:#d9e8f5;color:#2872af}
.dc-btn.dc-ann:hover{border-color:#2787e8;background:#f0f7fd}
.dc-btn.dc-ann.disabled{color:var(--muted-2);border-color:var(--line);background:#f7f9f6;cursor:not-allowed}
.dc-btn.dc-go{background:var(--green);border-color:var(--green);color:#173219}
.dc-btn.dc-go:hover{background:#aaf079;border-color:#aaf079}
/* 详情：有边框胶囊样式，位于事实胶囊行最右（与截止同水平线、前往投递下方居中对齐） */
.dc-toggle{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:28px;padding:0 11px;margin-left:auto;border-radius:999px;border:1px solid var(--line);background:#fafbf9;color:var(--muted);font-size:11.5px;font-weight:700;cursor:pointer;white-space:nowrap;font-family:inherit;flex:0 0 auto}
.dc-toggle svg{width:13px;height:13px;flex:0 0 13px;transition:transform .18s}
.dc-toggle:hover{border-color:var(--blue);color:var(--blue)}
.dc-item.open .dc-toggle{border-color:#bcdda9;background:#eef7e9;color:var(--green-strong)}
.dc-item.open .dc-toggle svg{transform:rotate(180deg)}

/* 占位虚化行（非会员翻到第2页起：骨架行 blur 打底） */
.dc-lock-wrap{position:relative;overflow:hidden;border-radius:14px;min-height:160px}
.dc-ghost-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:9px;min-height:64px}
.dc-ghost-bar{display:block;height:12px;border-radius:6px;background:#e6eae4}
.dc-ghost-bar.w55{width:55%}
.dc-ghost-bar.w85{width:85%}
.dc-ghost-bar.w40{width:40%}
.dc-lock-wrap .dc-ghost-card{filter:blur(5px);opacity:.55;pointer-events:none;user-select:none}
.dc-lock{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.dc-lock-mask{width:100%;height:100%;background:rgba(252,253,250,.86);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:20px}
.dc-lock-mask>svg{width:26px;height:26px;color:var(--purple)}
.dc-lock-mask b{font-size:16px;font-weight:800;color:#173219}
.dc-lock-mask p{font-size:12.5px;color:var(--muted);margin:0 0 4px;max-width:430px}
.dc-lock-mask .btn{min-width:170px;justify-content:center}
.dc-lock-mask .btn svg{width:15px;height:15px}

/* 分页 */
.dc-pager{display:flex;justify-content:center;align-items:center;gap:8px;margin:16px 0 6px;flex-wrap:wrap}
.dc-pg-state{font-size:12px;color:var(--muted-2);margin-right:6px;white-space:nowrap}
.dc-pg-a{flex:0 0 auto;min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 15px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:12.5px;text-decoration:none;cursor:pointer;white-space:nowrap}
.dc-pg-a svg{width:14px;height:14px;flex:0 0 14px}
.dc-pg-a:hover{border-color:var(--blue);color:var(--blue)}
.dc-pg-a.off{background:#f7f9f6;color:var(--muted-2);cursor:pointer}
.dc-pg-a.off:hover{border-color:var(--line);color:var(--green-strong)}

/* 底部操作：固定在弹窗底部、不随内容滚动，始终悬浮可见 */
.dc-foot{display:flex;gap:10px;flex-wrap:wrap;padding:14px 22px;border-top:1px solid var(--line);background:#fff;flex:none}
.dc-foot .btn{flex:1;min-width:140px;justify-content:center}

/* 窄屏适配 */
@media (max-width:720px){
  .dc-modal .invite-modal-box{max-width:calc(100vw - 20px);max-height:92vh;border-radius:14px}
  .dc-body{padding:12px 14px 12px}
  .dc-head{padding:12px 14px;gap:8px}
  .dc-head h3{font-size:15.5px}
  .dc-head-ver{margin-left:0}
  .dc-foot{padding:12px 14px;gap:8px}
  .dc-foot .btn{min-width:0}
  .dc-dash{grid-template-columns:1fr;gap:10px}
  .dc-hero{padding:15px 16px;gap:13px}
  .dc-hero-ico{width:46px;height:46px;border-radius:13px}
  .dc-hero-ico svg{width:23px;height:23px}
  .dc-hero-copy .dhn{font-size:32px}
  .dc-cards{grid-template-columns:1fr 1fr;gap:8px}
  .dc-card{display:flex;align-items:center;gap:11px;padding:11px 13px}
  .dc-card .dci{margin-bottom:0}
  .dc-card .dcw{flex:1;min-width:0}
  .dc-item .route-main{padding:12px 13px 5px}
  .dc-item:not(.collapsed) .route-main{padding-bottom:16px}
  /* 恢复被投递清单窄屏规则隐藏的企业图标 */
  .dc-item .route-company-icon{display:grid}
  /* 按钮与公司名保持同一行、靠右对齐；名称区收缩省略 */
  .dc-item .route-top{flex-wrap:nowrap;gap:8px}
  .dc-item .route-company{flex:1 1 auto;min-width:0}
  .dc-acts{flex:0 0 auto;margin-left:auto;width:auto}
  .dc-btn{min-height:30px;padding:0 10px;font-size:11.5px}
  .dc-pg-a{padding:0 11px}
  .dc-ghost-card .dc-ghost-bar{height:11px}
}

/* ==================================================================
 * 工具箱 / MBTI 匹配 / 定制自荐信 / 限时活动卡 / 清单筛选
 * —— 全部使用站点设计令牌（--green / --blue / --purple / --amber /
 *    --line / --surface / --r 系列），不引入站外色值。
 * ================================================================== */

/* ---------- 工具卡（tools.php） ---------- */
.tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(282px,1fr));gap:16px;margin-bottom:8px}
.tool-card{display:flex;flex-direction:column;gap:14px;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:0 7px 22px rgba(31,48,30,.04);transition:.18s}
.tool-card:hover{border-color:var(--line-strong);box-shadow:0 12px 26px rgba(31,48,30,.07);transform:translateY(-2px)}
.tool-card::before{content:'';position:absolute;left:22px;right:22px;top:0;height:2px;border-radius:0 0 3px 3px;background:linear-gradient(90deg,var(--green),rgba(155,234,99,0));opacity:0;transition:.2s}
.tool-card:hover::before{opacity:1}
.tool-card-ico{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;flex:0 0 46px}
.tool-card-ico svg{width:22px;height:22px}
.tool-card-ico.green{background:rgba(155,234,99,.30);color:var(--green-strong)}
.tool-card-ico.blue{background:rgba(39,135,232,.11);color:var(--blue)}
.tool-card-ico.purple{background:rgba(104,69,232,.11);color:var(--purple)}
.tool-card-copy h2{margin:0 0 6px;font-size:17px}
.tool-card-copy p{margin:0 0 8px;font-size:13px;line-height:1.75;color:var(--muted)}
.tool-cost{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--muted-2);font-weight:600}
.tool-card-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.tool-inline-pick summary{list-style:none;cursor:pointer;display:inline-flex}
.tool-inline-pick summary::-webkit-details-marker{display:none}
.tool-pick-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.tool-pick-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);text-decoration:none;color:inherit;transition:.15s}
.tool-pick-item:hover{border-color:rgba(36,107,42,.22);background:#f7fbf4}
.tool-pick-ico{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:rgba(155,234,99,.22);color:var(--green-strong);flex:0 0 32px}
.tool-pick-ico svg{width:15px;height:15px}
.tool-pick-copy{flex:1;min-width:0}
.tool-pick-copy b{display:block;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tool-pick-copy small{color:var(--muted-2);font-size:11.5px}
.tool-pick-meta{font-size:10.5px;font-weight:700;color:var(--muted-2);background:var(--bg-soft);border-radius:99px;padding:3px 9px;white-space:nowrap}
.tool-pick-meta.has{color:var(--green-strong);background:#eef6ea}
.tool-pick-item > svg:last-child{width:14px;height:14px;color:var(--muted-2);flex:0 0 14px}
.tool-section{display:flex;flex-direction:column;gap:16px}
.tool-notice{margin:0}
.tool-note{margin:2px 0 0}
.tool-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tool-loading-bar{height:5px;border-radius:99px;background:var(--bg-soft);overflow:hidden;margin-top:8px}
.tool-loading-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--green-strong),var(--green));transition:width .5s ease}

/* ---------- MBTI / 自荐信 卡片壳 ---------- */
.mbti-quiz-card,.mbti-result-card,.cover-letter-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:0 7px 22px rgba(31,48,30,.04)}
.mbti-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.mbti-type{display:flex;align-items:center;gap:13px}
.mbti-type-code{display:grid;place-items:center;min-width:56px;height:56px;padding:0 10px;border-radius:15px;background:rgba(39,135,232,.11);color:var(--blue);font-size:21px;font-weight:900;letter-spacing:1px}
.mbti-type-code.dim{color:var(--muted-2);background:var(--bg-soft)}
.mbti-type-code.green{background:rgba(155,234,99,.30);color:var(--green-strong)}
.mbti-type-code svg{width:24px;height:24px}
.mbti-type b{display:block;font-size:16px}
.mbti-type small{color:var(--muted-2);font-size:12px}
.mbti-body{display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:start}
@media (max-width:820px){.mbti-body{grid-template-columns:1fr}}
.mbti-radar-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px}
.mbti-analysis h3{display:flex;align-items:center;gap:7px;margin:0 0 10px;font-size:15px}
.mbti-analysis h3 svg{width:16px;height:16px;color:var(--green-strong)}
.mbti-analysis-text p{margin:0 0 10px;font-size:13.5px;line-height:1.85;color:var(--muted)}
.mbti-match-line{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);background:#f5f9f2;border:1px solid rgba(36,107,42,.14);border-radius:var(--r);padding:9px 13px;margin-top:4px}
.mbti-match-line svg{width:14px;height:14px;color:var(--green-strong);flex:0 0 14px}

/* ---------- MBTI 答题 ---------- */
.mbti-lead{margin:0 0 14px;font-size:13px;line-height:1.8;color:var(--muted)}
.mbti-quiz-form{display:flex;flex-direction:column}
.mbti-progress-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 0 13px;margin-bottom:6px;background:linear-gradient(180deg,var(--surface) 72%,rgba(255,255,255,0));border-bottom:1px solid var(--line)}
.mbti-progress-bar .mbti-progress-track{flex:1;height:6px;border-radius:99px;background:var(--bg-soft);overflow:hidden}
.mbti-progress-bar .mbti-progress-track i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--green-strong),var(--green));transition:width .28s ease}
.mbti-progress-bar .mbti-progress-text{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.mbti-progress-bar .mbti-progress-text b{color:var(--green-strong)}
.mbti-questions{list-style:none;margin:0;padding:0;counter-reset:mbtiq;display:flex;flex-direction:column}
.mbti-q{padding:14px 0;border-bottom:1px dashed var(--line);counter-increment:mbtiq}
.mbti-q:last-child{border-bottom:none}
.mbti-q.is-answered .mbti-q-text::before{background:rgba(155,234,99,.34);border-color:rgba(36,107,42,.30);color:var(--green-strong)}
.mbti-q-text{margin:0 0 9px;font-size:13.5px;font-weight:700;display:flex;gap:9px;align-items:flex-start}
.mbti-q-text::before{content:counter(mbtiq);flex:0 0 22px;height:22px;display:grid;place-items:center;border-radius:7px;background:var(--bg-soft);border:1px solid var(--line);color:var(--muted);font-size:11.5px;font-weight:800;margin-top:1px}
.mbti-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media (max-width:640px){.mbti-opts{grid-template-columns:1fr}}
.mbti-opt{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;font-size:12.5px;line-height:1.6;transition:.15s;background:var(--surface);position:relative}
.mbti-opt:hover{border-color:rgba(36,107,42,.24);background:#f8fcf5}
.mbti-opt input{position:absolute;opacity:0;pointer-events:none}
.mbti-opt .mbti-opt-dot{flex:0 0 15px;width:15px;height:15px;margin-top:2px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--surface);transition:.15s}
.mbti-opt:has(input:checked){border-color:rgba(36,107,42,.34);background:#f2f9ee}
.mbti-opt:has(input:checked) .mbti-opt-dot{border-color:var(--green-strong);background:var(--green-strong);box-shadow:inset 0 0 0 3px var(--surface)}
.mbti-opt:has(input:checked) span:last-child{font-weight:650}
.mbti-submit-zone{margin-top:18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:16px;border-top:1px solid var(--line)}
.mbti-submit-zone small{color:var(--muted-2);font-size:12px}
.mbti-progress{margin-top:14px;font-size:12.5px;font-weight:700;color:var(--muted)}

/* ---------- MBTI 答题：维度分组与图文说明 ---------- */
.mbti-group{margin-bottom:18px;border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;background:var(--surface-soft)}
.mbti-group-head{display:flex;align-items:center;gap:12px}
.mbti-group-ico{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:rgba(155,234,99,.30);color:var(--green-strong);flex:0 0 38px}
.mbti-group-ico svg{width:19px;height:19px}
.mbti-group-title b{display:block;font-size:14.5px}
.mbti-group-title small{color:var(--muted-2);font-size:11.5px}
.mbti-group-intro{margin:9px 0 4px;font-size:12.5px;line-height:1.8;color:var(--muted);background:var(--surface);border-left:3px solid rgba(155,234,99,.55);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:9px 12px}
.mbti-group .mbti-questions{margin-top:6px}
.mbti-group .mbti-q{padding:13px 0}
.mbti-group .mbti-q-text::before{background:var(--surface);border-color:var(--line)}

/* ---------- MBTI 结果：关键词、倾向条、类型档案（精致化重排） ---------- */
.mbti-result-card{padding:26px 28px}
.mbti-result-card .mbti-head{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:16px}
.mbti-keywords{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 16px}
.mbti-keyword{display:inline-flex;align-items:center;padding:4px 11px;border-radius:99px;background:rgba(39,135,232,.10);border:1px solid rgba(39,135,232,.24);color:#1f6ec4;font-size:11.5px;font-weight:750}
.mbti-sec-title{display:flex;align-items:center;gap:8px;font-size:14.5px;font-weight:800;letter-spacing:.01em;margin:0 0 14px}
.mbti-sec-title::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--line),rgba(220,226,217,0))}
.mbti-sec-title svg{width:16px;height:16px;color:var(--green-strong);flex:0 0 16px}
.mbti-body{gap:26px}
.mbti-tendency h3,.mbti-analysis h3{display:flex;align-items:center;gap:7px;margin:0 0 12px;font-size:15px}
.mbti-tendency h3 svg,.mbti-analysis h3 svg{width:16px;height:16px;color:var(--green-strong)}
.mbti-tendency{min-width:0}
.mbti-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.mbti-bar-label{flex:0 0 96px;font-size:11.5px;color:var(--muted-2);display:flex;align-items:baseline;gap:5px;white-space:nowrap}
.mbti-bar-label.right{justify-content:flex-end;text-align:right}
.mbti-bar-label b{font-size:12px;font-weight:800;color:var(--muted-2)}
.mbti-bar-label.on{color:var(--green-strong);font-weight:750}
.mbti-bar-label.on b{color:var(--green-strong)}
.mbti-bar-track{flex:1;height:8px;border-radius:99px;background:var(--bg-soft);border:1px solid var(--line);overflow:hidden}
.mbti-bar-track i{display:block;height:100%;background:linear-gradient(90deg,var(--green-strong),var(--green));border-radius:99px}
.mbti-tendency-note{margin:10px 0 0;font-size:11.5px;line-height:1.7;color:var(--muted-2)}
.mbti-analysis{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.mbti-analysis-text{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.mbti-analysis-text p{font-size:13.5px;line-height:1.95;color:var(--ink)}
.mbti-profile{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}
@media (max-width:820px){.mbti-profile{grid-template-columns:1fr}}
.mbti-profile-item{display:flex;gap:10px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;position:relative;overflow:hidden}
.mbti-profile-item::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green);opacity:.55}
.mbti-profile-item.blue::before{background:var(--blue);opacity:.45}
.mbti-profile-item.amber::before{background:var(--amber);opacity:.5}
.mbti-profile-item.purple::before{background:var(--purple);opacity:.45}
.mbti-profile-ico{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;flex:0 0 30px}
.mbti-profile-ico svg{width:15px;height:15px}
.mbti-profile-ico.green{background:rgba(155,234,99,.30);color:var(--green-strong)}
.mbti-profile-ico.blue{background:rgba(39,135,232,.11);color:var(--blue)}
.mbti-profile-ico.amber{background:rgba(201,130,23,.13);color:var(--amber)}
.mbti-profile-ico.purple{background:rgba(104,69,232,.11);color:var(--purple)}
.mbti-profile-item b{display:block;font-size:13px;margin-bottom:3px}
.mbti-profile-item p{margin:0;font-size:12.5px;line-height:1.75;color:var(--muted)}
.mbti-careers{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;padding:12px 16px;background:var(--surface-soft);border-radius:var(--r)}
.mbti-careers-label{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:750;color:var(--green-strong)}
.mbti-careers-label svg{width:14px;height:14px}
.mbti-career{display:inline-flex;padding:4px 11px;border-radius:99px;background:rgba(155,234,99,.24);border:1px solid rgba(36,107,42,.18);color:var(--green-strong);font-size:11.5px;font-weight:700}
.mbti-match-line{margin-top:16px}

/* ---------- 定制自荐信 ---------- */
.cover-form{display:flex;flex-direction:column;gap:14px}
.cover-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.cover-mode{display:flex;padding:13px 14px;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;gap:10px;transition:.15s;background:var(--surface);position:relative}
.cover-mode:hover{border-color:rgba(36,107,42,.24);background:#f8fcf5}
.cover-mode input{position:absolute;opacity:0;pointer-events:none}
.cover-mode .cover-mode-dot{flex:0 0 15px;width:15px;height:15px;margin-top:3px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--surface);transition:.15s}
.cover-mode:has(input:checked){border-color:rgba(36,107,42,.34);background:#f2f9ee}
.cover-mode:has(input:checked) .cover-mode-dot{border-color:var(--green-strong);background:var(--green-strong);box-shadow:inset 0 0 0 3px var(--surface)}
.cover-mode:has(input:disabled){opacity:.55;cursor:not-allowed;background:var(--surface-soft)}
.cover-mode.is-locked .cover-mode-copy small{color:var(--amber)}
.cover-mode-copy b{display:block;font-size:13.5px}
.cover-mode-copy small{color:var(--muted-2);font-size:11.5px;line-height:1.5;display:block;margin-top:2px}
.cover-field .lb{display:block;font-size:12.5px;font-weight:700;margin-bottom:6px;color:var(--muted)}
.cover-field select,.cover-field input[type="text"]{width:100%;max-width:460px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);font-size:13.5px;background:var(--surface);color:inherit}
.cover-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cover-item{border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.cover-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:12px 14px}
.cover-item summary::-webkit-details-marker{display:none}
.cover-item summary:hover{background:var(--surface-soft)}
.cover-item-main{flex:1;min-width:0}
.cover-item-main b{display:block;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cover-item-main small{color:var(--muted-2);font-size:11.5px}
.cover-item-ops{display:flex;align-items:center;gap:4px}
.cover-item-chev{width:16px;height:16px;color:var(--muted-2);flex:0 0 16px;transition:transform .2s}
.cover-item[open] .cover-item-chev{transform:rotate(180deg)}
.cover-letter-body{padding:2px 16px 16px;display:none;flex-direction:column;gap:10px}
.cover-item[open] .cover-letter-body,.cover-letter-card .cover-letter-body{display:flex}
.cover-letter-body p{margin:0;font-size:13.5px;line-height:1.9;color:var(--ink);white-space:pre-wrap}
.cover-letter-card{padding:0}
.cover-letter-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 10px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.cover-letter-head b{font-size:15px}
.cover-letter-head small{display:block;color:var(--muted-2);font-size:12px;margin-top:2px}
.cover-letter-actions{display:flex;gap:4px}
.cover-letter-card .cover-letter-body{padding:16px 20px 20px}

/* 定制自荐信弹窗：概况板块（复用 resume.css 的 rv-modal 体系） */
.cover-brief{margin-top:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-soft);padding:14px 16px}
.cover-brief-head{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:800;margin-bottom:10px}
.cover-brief-head svg{width:15px;height:15px;color:var(--green-strong)}
.cover-brief-item{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-top:1px dashed var(--line)}
.cover-brief-item:first-of-type{border-top:none}
.cover-brief-label{display:inline-flex;align-items:center;gap:5px;flex:0 0 96px;font-size:12px;font-weight:750;color:var(--green-strong)}
.cover-brief-label svg{width:13.5px;height:13.5px}
.cover-brief-item p{margin:0;font-size:12.5px;line-height:1.7;color:var(--muted);min-width:0}
.cover-brief-item input{width:100%;max-width:420px;padding:8px 11px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:13px;background:var(--surface);color:inherit}
.cover-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.rv-mode-card.is-disabled{opacity:.55;cursor:not-allowed}
.rv-mode-card.is-disabled .rv-mode-copy small{color:var(--amber)}
.rv-pick-item.selected{border-color:rgba(36,107,42,.35);background:#f2f9ee}

/* 自荐信编辑器与打印导出 */
.cover-toolbar{display:flex;align-items:center;gap:4px;padding:8px 10px;margin-bottom:10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-soft)}
.cover-toolbar button{display:grid;place-items:center;width:30px;height:30px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:.15s}
.cover-toolbar button:hover{background:var(--surface);border-color:var(--line);color:var(--ink)}
.cover-toolbar button svg{width:15px;height:15px}
.cover-wordcount{margin-left:6px;font-size:11.5px;color:var(--muted-2);white-space:nowrap}
.cover-save-state{font-size:11.5px;color:var(--green-strong);white-space:nowrap}
.cover-editor{min-height:300px;max-height:620px;overflow-y:auto;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);font-size:13.5px;line-height:1.95;color:var(--ink)}
.cover-editor.is-editing{outline:none;border-color:rgba(36,107,42,.35)}
.cover-editor:focus{box-shadow:0 0 0 3px rgba(155,234,99,.22)}
.cover-editor p{margin:0 0 10px}
.cover-editor ul,.cover-editor ol{margin:0 0 10px;padding-left:22px}
@media print {
  body *{visibility:hidden !important}
  .cover-letter-card,.cover-letter-card *{visibility:visible !important}
  .cover-letter-card{position:absolute;left:0;top:0;width:100%;border:none;box-shadow:none}
  .cover-letter-actions,.cover-toolbar,.cover-letter-head .icon-btn,.cover-save-state{display:none !important}
  .cover-letter-body{display:block !important;max-height:none;overflow:visible}
  .cover-editor{border:none;min-height:auto;max-height:none}
}

/* ---------- 定价页：限时活动卡（品牌绿系） ---------- */
.promo-card{display:flex;align-items:center;gap:22px;flex-wrap:wrap;position:relative;margin-bottom:20px;padding:20px 24px;border-radius:var(--r-lg);border:1px solid rgba(36,107,42,.20);background:linear-gradient(116deg,#f2fae9 0%,#e9f7dd 52%,#dff3cf 100%);box-shadow:0 6px 22px rgba(36,107,42,.07);overflow:hidden}
.promo-card::before{content:'';position:absolute;inset:-52px auto auto -52px;width:214px;height:214px;border-radius:50%;background:rgba(155,234,99,.24);pointer-events:none}
.promo-flag{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;background:var(--green-strong);color:#fff;font-size:12px;font-weight:800;letter-spacing:.06em;flex:0 0 auto}
.promo-flag svg{width:14px;height:14px;flex:0 0 14px}
.promo-main{flex:1 1 380px;min-width:250px}
.promo-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.promo-name{font-size:20px;font-weight:900;color:var(--ink)}
.promo-price-row{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:8px}
.promo-price{font-size:26px;font-weight:900;color:var(--green-strong);line-height:1}
.promo-original{color:var(--muted-2);font-size:13px}
.promo-unit{color:var(--muted);font-size:13px;font-weight:700}
.promo-limit{display:inline-flex;align-items:center;padding:3px 9px;border-radius:99px;background:rgba(155,234,99,.34);border:1px solid rgba(36,107,42,.22);color:var(--green-strong);font-size:10.5px;font-weight:800;white-space:nowrap}
.promo-tagline{margin:0 0 10px;font-size:13px;color:var(--muted)}
.promo-features{list-style:none;margin:0;padding:0;display:flex;gap:16px;flex-wrap:wrap}
.promo-features li{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);font-weight:600}
.promo-features svg{width:13px;height:13px;color:var(--green-strong);flex:0 0 13px}
.promo-cta{flex:0 0 auto;display:flex;flex-direction:column;gap:7px;align-items:stretch;min-width:172px}
.promo-cta small{text-align:center;color:var(--muted-2);font-size:11.5px}
.promo-btn{background:var(--green-strong);border-color:var(--green-strong);color:#fff}
.promo-btn:hover{background:#1c5822;border-color:#1c5822;color:#fff}
.promo-done{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:default;opacity:.8}
.promo-done svg{width:15px;height:15px}
.price-card .promo-limit{margin-left:8px;transform:translateY(-2px)}
.price-card.price-soldout{opacity:.75}
.promo-soldout{filter:saturate(.6)}

/* ---------- 清单四卡快速筛选（可选中暗示） ---------- */
.quick-kpis .quick-card{cursor:pointer;position:relative;transition:box-shadow .16s ease,border-color .16s ease,transform .16s ease,background-color .16s ease}
.quick-kpis .quick-card:hover{transform:translateY(-2px);border-color:var(--line-strong)}
.quick-kpis .quick-card::after{content:'';position:absolute;top:14px;right:14px;width:17px;height:17px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--surface);transition:.15s}
.quick-kpis .quick-card:hover::after{border-color:rgba(36,107,42,.45)}
.quick-kpis .quick-card.on{background:#f2f9ee;border-color:rgba(36,107,42,.34);box-shadow:0 0 0 2px rgba(155,234,99,.30)}
.quick-kpis .quick-card.on::after{border-color:var(--green-strong);background:var(--green-strong) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/11px 11px no-repeat}
.route-patching .route-table,.route-patching .quick-kpis{opacity:.55;pointer-events:none}

/* ---------- MBTI 推荐标签（与「推荐投递」完全同款，仅配色不同） ---------- */
/* MBTI 推荐标签：与「推荐投递」(.route-recommend) 完全同款结构，仅把绿色系换成蓝色系 */
.recommend-badge.mbti-badge{background:linear-gradient(180deg,#eaf0fb,#dfe8f7);border-color:#bfcfe6;color:#1f4e8c;box-shadow:0 1px 2px rgba(31,78,140,.08)}
.recommend-badge.mbti-badge svg{color:#1f4e8c}

/* ---------- 翻页禁用态（筛选后单页仍显示翻页） ---------- */
.pager .pager-off{display:inline-flex;align-items:center;gap:4px;padding:7px 12px;border-radius:9px;color:var(--muted-2);font-size:13px;cursor:default}
.pager .pager-off svg{width:14px;height:14px}

/* ---------- 邀请排行榜（仅前三，昵称打码，金银铜配色） ---------- */
.invite-board{margin:2px 0 16px;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;background:var(--surface-soft)}
.invite-board-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.invite-board-head span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:750}
.invite-board-head svg{width:14px;height:14px;color:var(--green-strong)}
.invite-board-head small{color:var(--muted-2);font-size:11px}
.invite-board-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.invite-board-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:calc(var(--r) - 4px);background:var(--surface);border:1px solid var(--line)}
.invite-board-medal{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;font-size:11px;font-weight:900;color:#fff;flex:0 0 20px}
.invite-board-name{flex:1;min-width:0;font-size:13px;font-weight:700;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.invite-board-count{font-size:11.5px;color:var(--muted);white-space:nowrap}
.invite-board-count b{font-size:14px;font-weight:900}
.invite-board-row.rank-1{border-color:rgba(203,158,50,.42);background:linear-gradient(96deg,rgba(203,158,50,.10),rgba(203,158,50,.02))}
.invite-board-row.rank-1 .invite-board-medal{background:#cb9e32}
.invite-board-row.rank-1 .invite-board-count b{color:#a87c14}
.invite-board-row.rank-2{border-color:rgba(148,162,175,.45);background:linear-gradient(96deg,rgba(148,162,175,.12),rgba(148,162,175,.02))}
.invite-board-row.rank-2 .invite-board-medal{background:#94a2af}
.invite-board-row.rank-2 .invite-board-count b{color:#6f7f8d}
.invite-board-row.rank-3{border-color:rgba(184,122,74,.42);background:linear-gradient(96deg,rgba(184,122,74,.11),rgba(184,122,74,.02))}
.invite-board-row.rank-3 .invite-board-medal{background:#b87a4a}
.invite-board-row.rank-3 .invite-board-count b{color:#965c31}

/* ---------- 后台：MBTI 结果卡 ---------- */
.mbti-admin-code{display:grid;place-items:center;min-width:56px;height:56px;padding:0 10px;border-radius:15px;background:rgba(39,135,232,.11);color:var(--blue);font-size:20px;font-weight:900;letter-spacing:1px}
.mbti-admin-analysis{border-top:1px dashed var(--line);padding-top:12px}
.mbti-admin-analysis p{margin:0 0 8px;font-size:12.5px;line-height:1.8;color:var(--muted)}

/* ---------- 后台用量明细弹窗（.adm-modal 体系） ---------- */
.adm-modal-mask{position:fixed;inset:0;z-index:90;background:rgba(14,20,14,.5);display:grid;place-items:center;padding:20px}
.adm-modal{width:min(960px,100%);max-height:86vh;display:flex;flex-direction:column;background:#fff;border-radius:16px;box-shadow:0 24px 60px rgba(10,20,10,.25);overflow:hidden}
.adm-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--surface-soft)}
.adm-modal-head h3{margin:0;font-size:16px}
.adm-modal-body{padding:18px 20px;overflow-y:auto}
.adm-modal-body .card{box-shadow:none;margin:0}
.user-quota-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.user-quota-link{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;text-align:left;font:inherit;transition:.15s}
.user-quota-link:hover{border-color:rgba(36,107,42,.30);background:#f7fbf4}
.user-quota-link span{flex:1;font-size:12.5px;color:var(--muted)}
.user-quota-link b{font-size:13px;font-weight:800;color:var(--green-strong)}
.user-quota-link svg{width:14px;height:14px;color:var(--muted-2)}

/* ---------- 局部刷新过场 ---------- */
main.app-main.is-nav-swapping, .adm.is-nav-swapping{opacity:.72;transition:opacity .12s ease}
main.app-main, .adm{transition:opacity .18s ease}

/* 翻页按钮文字不换行 */
.pager a em, .pager .pager-off em{font-style:normal;white-space:nowrap}

/* 历史记录内的编辑器：比详情卡更紧凑 */
.cover-item .cover-editor{min-height:200px;max-height:420px}
.cover-item .cover-toolbar{margin-bottom:8px}
.cover-editor.is-readonly{background:var(--surface-soft)}

/* ================================================================== *
 * 2026-09-14 界面修复批次 A：工具箱边距 / MBTI / 免费福利 / 自荐信
 * ================================================================== */

/* —— 需求3：工具箱页左右边距与「我的简历 / 学习资料」对齐（1390 居中，与 .rv-* 同宽） —— */
.tools-page .route-header,
.tools-page .tools-grid,
.tools-page .tool-section{width:100%;max-width:1390px;margin-left:auto;margin-right:auto}
.resource-workspace{width:min(1390px,calc(100% - 44px))}

/* —— 需求5：MBTI「适配岗位方向」标题不再被换行 —— */
.mbti-careers-label{white-space:nowrap;flex:0 0 auto}

/* —— 需求6：四维倾向改为中心对称双段条：左段=左极占比、右段=右极占比，中点即 50/50 基准 —— */
.mbti-bar-track{position:relative;flex:1;height:12px;border-radius:99px;background:var(--bg-soft);border:1px solid var(--line);overflow:hidden;display:flex}
.mbti-bar-track .mbti-bar-seg{display:block;height:100%;background:#e4e9df;transition:width .35s cubic-bezier(.4,0,.2,1)}
.mbti-bar-track .mbti-bar-seg.l.on{background:linear-gradient(90deg,var(--green),var(--green-strong))}
.mbti-bar-track .mbti-bar-seg.r.on{background:linear-gradient(270deg,var(--green),var(--green-strong))}
.mbti-bar-mid{position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:rgba(255,255,255,.95);box-shadow:0 0 0 1px rgba(15,23,42,.10);pointer-events:none}
.mbti-bar-label.on b{font-size:12.5px}

/* —— 需求12：免费福利「邀请排行榜」标题与说明均不换行 —— */
.invite-board-head>span,.invite-board-head>small{white-space:nowrap}

/* —— 需求10：自荐信/邮件标题不溢出；「已保存 时间」放保存按钮左侧且不顶飞按钮 —— */
.cover-letter-head>div:first-child{min-width:0}
.cover-letter-head b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cover-letter-title{min-width:0;flex:1 1 auto}
.cover-subject{display:flex;align-items:center;gap:5px;margin-top:3px;font-size:12px;color:var(--muted);min-width:0}
.cover-subject span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cover-subject svg{width:13px;height:13px;flex:0 0 13px;color:var(--blue)}
.cover-toolbar{flex-wrap:wrap;row-gap:6px}
.cover-toolbar-spacer{flex:1 1 8px;min-width:0}
.cover-save-state{max-width:150px;overflow:hidden;text-overflow:ellipsis;text-align:right}
.cover-item-ops .icon-btn.ops-go:hover,.cover-letter-actions .icon-btn.ops-go:hover{color:var(--blue);border-color:rgba(39,135,232,.4)}
.mbti-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* —— 需求2：局部刷新时不再整块变暗（屏闪来源之一），只锁交互 —— */
.route-patching .quick-kpis{opacity:1;pointer-events:none}
.route-patching .route-table{opacity:.82;pointer-events:none}
.tool-card-ico.amber{background:rgba(245,158,11,.14);color:var(--amber)}

/* ================================================================== *
 * 2026-09-14 界面修复批次 B：清单卡片稳定性 / 自荐信工具栏 / 邀请间距
 * ================================================================== */

/* —— 需求1：快速筛选卡不再做位移动画。
 * 悬浮时 translateY(-2px) 会让卡片脱离光标 2px，光标停在卡片下沿时 hover 会在
 * 「命中→移出→再命中」之间来回切换，表现为反复跳动；筛选卡是状态开关，位移无必要。 —— */
.quick-kpis .quick-card:hover{transform:none}
.quick-kpis .quick-card{transition:box-shadow .16s ease,border-color .16s ease,background-color .16s ease}

/* —— 需求1：局部刷新期间不再整块变暗、不再禁用指针。
 * 变暗＝用户看到的"一直在加载"；pointer-events:none 会把飞行中的点击吞掉，
 * 造成"点了没反应，要反复点"。并发请求已按"最后一次生效"处理，无需锁交互。 —— */
body.route-patching .quick-kpis,
body.route-patching .route-table{opacity:1;pointer-events:auto}
.quick-card .mini-bars i{transition:none}

/* —— 需求3：保存修改按钮不再是 30×30 图标尺寸（原规则 .cover-toolbar button 会把它压成
 * 30px 宽，导致「保存修改」四个字溢出按钮外＝出框）。按钮紧跟图标组之后、尺寸自适应。 —— */
.cover-toolbar button[data-letter-save]{display:inline-flex;align-items:center;gap:6px;width:auto;height:32px;padding:0 13px;flex:0 0 auto;margin-left:4px;background:#fff;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-sm);font-size:12.5px;font-weight:650;white-space:nowrap}
.cover-toolbar button[data-letter-save] svg{width:14px;height:14px}
.cover-toolbar button[data-letter-save]:hover{background:var(--surface);border-color:var(--line-strong);color:var(--ink)}
.cover-toolbar button[data-letter-save]:active{transform:translateY(1px)}
.cover-toolbar .cover-save-state{margin-left:2px;max-width:180px}

/* —— 需求4：邀请按钮组与下方「我的邀请码」之间留出间距 —— */
.invite-actions{margin-top:0;margin-bottom:20px}
.invite-panel .invite-board{margin-bottom:16px}
.mbti-type-code.amber{background:rgba(245,158,11,.15);color:#b45309}

/* ================================================================== *
 * 2026-09-14 界面修复批次 C：保存按钮居右 / 工具箱栅格卡片 / 圆环不重播
 * ================================================================== */

/* —— 需求5：保存修改按钮居右、有轮廓；「已保存 时间」位于按钮左侧 —— */
.cover-toolbar .cover-toolbar-spacer{flex:1 1 8px;min-width:0}
.cover-toolbar button[data-letter-save]{margin-left:0}
.cover-toolbar .cover-save-state{margin-left:0;margin-right:2px;text-align:right}

/* —— 需求6：工具箱改为栅格卡片 + 大圆角轻卡片 —— */
.tools-page .tools-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:12px}
.tool-card{border-radius:24px;padding:26px 24px;gap:16px;background:linear-gradient(180deg,#ffffff 0%,#fbfdf9 100%);border:1px solid var(--line);box-shadow:0 10px 30px rgba(31,48,30,.045)}
.tool-card:hover{border-color:var(--line-strong);box-shadow:0 16px 34px rgba(31,48,30,.085)}
.tool-card::before{left:24px;right:24px;height:3px}
.tool-card-ico{width:52px;height:52px;border-radius:16px;flex:0 0 52px}
.tool-card-ico svg{width:24px;height:24px}
.tool-card-copy h2{margin:0 0 8px;font-size:18.5px;letter-spacing:.01em}
.tool-card-copy p{margin:0 0 10px;font-size:13.5px;line-height:1.8}
.tool-card-foot{gap:10px}
.tool-card-foot .btn{width:100%;border-radius:14px;min-height:44px}
.tools-page .route-header{margin-bottom:22px}
.tools-page .tool-section{gap:20px}
@media (max-width:640px){
  .tool-card{border-radius:20px;padding:20px 18px}
  .tools-page .tools-grid{gap:14px}
}

/* —— 清单条目：已渲染过的卡片不重播匹配度圆环（筛选/分页只更新内容） —— */
.route-table .route-item.ring-settled .match-ring,
.route-table .route-item.ring-settled .match-ring b{animation:none}

/* ==================================================================
 * 工具箱 · 定制过程弹窗 / 重写 / MBTI 结果页（追加，勿删）
 * ================================================================== */

/* ---- 生成中弹窗：定制自荐信=绿，投递邮件=琥珀（不使用蓝色） ---- */
.iv-modal-orb.tone-green { background: radial-gradient(circle at 32% 30%, #e6f7d9, var(--green-strong) 62%, #1c5c23); box-shadow: 0 0 0 0 rgba(36, 107, 42, .45); animation: ivOrbPulseGreen 1.8s ease-in-out infinite; }
.iv-modal-orb.tone-amber { background: radial-gradient(circle at 32% 30%, #fdeccd, #e08b1a 62%, #a8640c); box-shadow: 0 0 0 0 rgba(224, 139, 26, .42); animation: ivOrbPulseAmber 1.8s ease-in-out infinite; }
@keyframes ivOrbPulseGreen { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(36, 107, 42, .45); } 55% { transform: scale(1.05); box-shadow: 0 0 0 16px rgba(36, 107, 42, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(36, 107, 42, 0); } }
@keyframes ivOrbPulseAmber { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(224, 139, 26, .42); } 55% { transform: scale(1.05); box-shadow: 0 0 0 16px rgba(224, 139, 26, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(224, 139, 26, 0); } }
.iv-modal-bar-i.tone-green { background: linear-gradient(90deg, rgba(155, 234, 99, .35), var(--green-strong), rgba(155, 234, 99, .35)); }
.iv-modal-bar-i.tone-amber { background: linear-gradient(90deg, rgba(245, 158, 11, .35), #d98214, rgba(245, 158, 11, .35)); }
.iv-modal-mask.tone-green { background: rgba(14, 30, 16, .48); }
.iv-modal-mask.tone-amber { background: rgba(30, 20, 6, .48); }
@media (prefers-reduced-motion: reduce) { .iv-modal-orb.tone-green, .iv-modal-orb.tone-amber { animation: ivOrbBreathe 2.4s ease-in-out infinite; } .iv-modal-bar-i { animation-duration: 2.2s; } }
.rv-title-badge-amber { background: #fdf1dc; border-color: #f3ddb4; color: #b3730c; }

/* ---- 生成前概况：字数输入 ---- */
.cover-brief-words { display: flex; flex-direction: column; gap: 7px; min-width: 0; width: 100%; max-width: 420px; }
.cover-brief-words input[type="number"] { max-width: 180px; }
.cover-words-quick { display: flex; flex-wrap: wrap; gap: 6px; }
.cover-words-quick button { border: 1px solid var(--line-strong); background: var(--surface); color: var(--muted); font-size: 11.5px; font-weight: 700; padding: 5px 10px; border-radius: 99px; cursor: pointer; transition: .15s; }
.cover-words-quick button:hover { border-color: var(--green-strong); color: var(--green-strong); background: #f2f9ee; }
.cover-words-quick button.on { border-color: var(--green-strong); background: var(--green-strong); color: #fff; }
.cover-words-hint { font-size: 11px; color: var(--muted-2); line-height: 1.6; }

/* ---- 重写弹窗 ---- */
.rw-modal { width: min(680px, 100%); }
.rw-section { margin-bottom: 16px; }
.rw-sec-title { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 800; color: var(--ink); margin-bottom: 9px; }
.rw-sec-title svg { width: 14px; height: 14px; color: var(--green-strong); }
.rw-sec-title em { font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--muted-2); background: var(--surface-soft); border: 1px solid var(--line); border-radius: 99px; padding: 1px 7px; margin-left: 2px; white-space: nowrap; flex: 0 0 auto; }
.rw-dir-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: 8px; }
.rw-dir { position: relative; display: block; cursor: pointer; }
.rw-dir input { position: absolute; opacity: 0; width: 0; height: 0; }
.rw-dir-box { display: block; border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; background: var(--surface); transition: .15s; }
.rw-dir-box b { display: block; font-size: 13px; font-weight: 750; color: var(--ink); }
.rw-dir-box small { display: block; margin-top: 3px; font-size: 11.5px; line-height: 1.6; color: var(--muted); }
.rw-dir:hover .rw-dir-box { border-color: #b9d8a8; background: #f8fcf4; }
.rw-dir input:checked + .rw-dir-box { border-color: var(--green-strong); background: #f2f9ee; box-shadow: inset 0 0 0 1px rgba(36, 107, 42, .12); }
.rw-dir input:checked + .rw-dir-box b { color: var(--green-strong); }
.rw-dir input:focus-visible + .rw-dir-box { outline: 2px solid var(--green-strong); outline-offset: 2px; }
.rw-words { display: flex; flex-direction: column; gap: 7px; }
.rw-words input[type="number"] { width: 100%; max-width: 180px; padding: 8px 11px; border: 1px solid var(--line); border-radius: var(--r-sm); font-size: 13px; background: var(--surface); color: inherit; }
#rewriteCustom { width: 100%; padding: 9px 11px; border: 1px solid var(--line); border-radius: var(--r-sm); font-size: 12.5px; line-height: 1.7; background: var(--surface); color: inherit; resize: vertical; }
.rw-quota-line { display: flex; align-items: center; gap: 6px; margin: 0 0 12px; font-size: 12px; color: var(--muted); }
.rw-quota-line svg { width: 14px; height: 14px; color: var(--green-strong); }
.rw-quota-line b { color: var(--ink); }
.letter-rewrite-btn:hover { color: var(--green-strong); border-color: #b9d8a8; background: #f2f9ee; }

/* ---- MBTI 人物分析：◆ 分段 ---- */
.mbti-sec-title small { display: block; font-size: 11px; font-weight: 600; color: var(--muted-2); margin-top: 2px; }
.mbti-analysis-block { position: relative; padding: 12px 0 12px 16px; border-top: 1px dashed var(--line); }
.mbti-analysis-block:first-child { border-top: none; padding-top: 2px; }
.mbti-analysis-block::before { content: ''; position: absolute; left: 0; top: 16px; bottom: 14px; width: 3px; border-radius: 99px; background: linear-gradient(180deg, var(--green-strong), rgba(155, 234, 99, .25)); }
.mbti-analysis-block h4 { display: flex; align-items: center; gap: 5px; margin: 0 0 6px; font-size: 13.5px; font-weight: 800; color: var(--green-strong); letter-spacing: .01em; }
.mbti-analysis-block h4 svg { width: 14px; height: 14px; opacity: .75; }
.mbti-analysis-block p { margin: 0; font-size: 13px; line-height: 1.95; color: var(--ink); }
.mbti-analysis-plain { margin: 0 0 8px; font-size: 13px; line-height: 1.95; color: var(--ink); }

/* ---- MBTI 结尾引导 CTA ---- */
.mbti-cta { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-top: 20px; padding: 18px 20px; border-radius: 18px; border: 1px solid rgba(36, 107, 42, .18); background: linear-gradient(120deg, #f3faf0 0%, #ffffff 62%); }
.mbti-cta-copy { flex: 1; min-width: 220px; }
.mbti-cta-kicker { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .08em; color: var(--green-strong); background: rgba(155, 234, 99, .28); border-radius: 99px; padding: 2px 9px; margin-bottom: 7px; }
.mbti-cta-copy b { display: block; font-size: 15px; font-weight: 800; color: var(--ink); }
.mbti-cta-copy b em { font-style: normal; color: var(--green-strong); font-size: 19px; padding: 0 2px; }
.mbti-cta-copy p { margin: 5px 0 0; font-size: 12.5px; line-height: 1.75; color: var(--muted); }
.mbti-cta-btn { flex: 0 0 auto; min-height: 48px; padding: 0 20px; border-radius: 14px; gap: 8px; font-size: 14px; box-shadow: 0 8px 20px rgba(36, 107, 42, .18); }
.mbti-cta-btn svg { width: 16px; height: 16px; }
.mbti-cta-btn svg:last-child { transition: transform .18s ease; }
.mbti-cta-btn:hover svg:last-child { transform: translateX(3px); }
@media (max-width: 640px) { .mbti-cta { flex-direction: column; align-items: stretch; } .mbti-cta-btn { width: 100%; justify-content: center; } }

/* ---- MBTI 推荐企业 + 匹配依据一览 ---- */
.mbti-rec-list { margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--line); }
.mbti-rec-list .mbti-sec-title { margin-bottom: 10px; }
.mbti-rec-items { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.mbti-rec-items li {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  padding: 9px 12px; border-radius: 12px;
  background: linear-gradient(180deg, #f7f9fd, #ffffff);
  border: 1px solid var(--line);
}
.mbti-rec-items li b { font-size: 13.5px; font-weight: 700; color: var(--ink); }
.mbti-rec-items li em {
  font-style: normal; font-size: 12px; color: #1f4e8c;
  background: rgba(31, 78, 140, .08); border-radius: 99px; padding: 2px 9px;
}
@media (max-width: 640px) { .mbti-rec-items li { flex-direction: column; gap: 5px; } }

/* ---- 雷达图入场 ---- */
.mbti-radar-shape { transform-box: fill-box; transform-origin: center; animation: mbtiRadarIn .55s cubic-bezier(.2, .8, .3, 1) both; }
@keyframes mbtiRadarIn { from { transform: scale(.72); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .mbti-radar-shape { animation: none; } }

/* ---- 后台：用量合计行 ---- */
.user-quota-sum { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 4px; padding: 9px 12px; border-radius: 10px; background: var(--surface-soft); border: 1px solid var(--line); font-size: 12px; color: var(--muted); }
.user-quota-sum b { color: var(--ink); font-size: 13.5px; font-weight: 800; }
.user-quota-sum .eq { margin-left: auto; color: var(--green-strong); font-weight: 750; }
.user-quota-sum .eq b { color: var(--green-strong); }

/* ==================================================================
 * 工具箱首页：能力概览条 + 卡片（覆盖旧的平铺样式）
 * ================================================================== */

/* ---- 能力概览条 ---- */
.tools-hero { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; margin-bottom: 20px; padding: 24px 26px; border-radius: 22px; border: 1px solid var(--line); background: linear-gradient(120deg, #ffffff 0%, #f4f9f0 58%, #eef6e8 100%); box-shadow: 0 12px 30px rgba(31, 48, 30, .05); }
.tools-hero-main { flex: 1 1 320px; min-width: 0; }
.tools-hero-kicker { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--green-strong); background: rgba(155, 234, 99, .3); border-radius: 99px; padding: 3px 10px; margin-bottom: 10px; }
.tools-hero-main h2 { margin: 0 0 8px; font-size: 22px; font-weight: 800; letter-spacing: -.01em; color: var(--ink); }
.tools-hero-main p { margin: 0; font-size: 13px; line-height: 1.85; color: var(--muted); max-width: 52ch; }
.tools-hero-stats { display: flex; gap: 10px; flex-wrap: wrap; }
.tools-stat { min-width: 92px; padding: 12px 16px; border-radius: 16px; background: rgba(255, 255, 255, .82); border: 1px solid var(--line); text-align: center; }
.tools-stat b { display: block; font-size: 21px; font-weight: 800; line-height: 1.2; color: var(--green-strong); font-variant-numeric: tabular-nums; }
.tools-stat span { display: block; margin-top: 3px; font-size: 11px; color: var(--muted-2); white-space: nowrap; }
@media (max-width: 720px) { .tools-hero { padding: 20px; gap: 18px; } .tools-hero-stats { width: 100%; } .tools-stat { flex: 1 1 40%; min-width: 0; } }

/* ---- 卡片网格 ---- */
.tools-page .tools-grid { grid-template-columns: repeat(auto-fit, minmax(288px, 1fr)); gap: 20px; margin-bottom: 12px; }

/* ---- 卡片本体：层级更清楚，去掉廉价感 ---- */
.tools-page .tool-card { position: relative; overflow: hidden; display: flex; flex-direction: column; gap: 0; padding: 0; border-radius: 22px; border: 1px solid var(--line); background: linear-gradient(180deg, #ffffff 0%, #fcfdfa 100%); box-shadow: 0 10px 26px rgba(31, 48, 30, .045); transition: box-shadow .22s ease, transform .22s ease, border-color .22s ease; }
.tools-page .tool-card:hover { transform: translateY(-3px); border-color: var(--line-strong); box-shadow: 0 20px 42px rgba(31, 48, 30, .1); }
/* 顶部彩条：按卡片色调 */
.tools-page .tool-card::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; opacity: .85; }
.tools-page .tool-card-purple::before { background: linear-gradient(90deg, var(--purple), rgba(104, 69, 232, .15)); }
.tools-page .tool-card-blue::before   { background: linear-gradient(90deg, var(--blue), rgba(39, 135, 232, .15)); }
.tools-page .tool-card-green::before  { background: linear-gradient(90deg, var(--green-strong), rgba(155, 234, 99, .2)); }
.tools-page .tool-card-amber::before  { background: linear-gradient(90deg, var(--amber), rgba(245, 158, 11, .15)); }

/* 序号水印 */
.tool-card-seq { position: absolute; top: 14px; right: 18px; font-size: 30px; font-weight: 800; line-height: 1; color: var(--ink); opacity: .05; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.tools-page .tool-card:hover .tool-card-seq { opacity: .09; }

/* 图标：更大、带柔光底 */
.tools-page .tool-card-ico { width: 54px; height: 54px; border-radius: 17px; flex: 0 0 54px; margin: 24px 0 0 24px; transition: transform .22s ease; }
.tools-page .tool-card-ico svg { width: 25px; height: 25px; }
.tools-page .tool-card:hover .tool-card-ico { transform: scale(1.05); }
.tools-page .tool-card-ico.purple { background: linear-gradient(135deg, #f2edfd, #e4d9fa); color: var(--purple); box-shadow: inset 0 0 0 1px rgba(104, 69, 232, .08); }
.tools-page .tool-card-ico.blue   { background: linear-gradient(135deg, #e9f2fd, #d5e6f7); color: #2a6d9f; box-shadow: inset 0 0 0 1px rgba(39, 135, 232, .08); }
.tools-page .tool-card-ico.green  { background: linear-gradient(135deg, #ecf8e4, #ddefd2); color: var(--green-strong); box-shadow: inset 0 0 0 1px rgba(36, 107, 42, .08); }
.tools-page .tool-card-ico.amber  { background: linear-gradient(135deg, #fdf1dc, #f7e3bd); color: #b3730c; box-shadow: inset 0 0 0 1px rgba(245, 158, 11, .1); }

/* 文案区 */
.tools-page .tool-card-copy { padding: 16px 24px 0; flex: 1; }
.tools-page .tool-card-copy h2 { margin: 0 0 9px; font-size: 18.5px; font-weight: 800; letter-spacing: .01em; color: var(--ink); }
.tools-page .tool-card-copy p { margin: 0; font-size: 13px; line-height: 1.9; color: var(--muted); }

/* 底部：消耗标签 + 主行动按钮 */
.tools-page .tool-card-foot { margin-top: 18px; padding: 14px 24px 22px; display: flex; flex-direction: column; gap: 11px; border-top: 1px dashed var(--line); }
.tools-page .tool-card-foot .tool-cost { font-size: 11.5px; color: var(--muted-2); }
.tools-page .tool-card-foot .tool-cost svg { width: 13px; height: 13px; }
.tools-page .tool-card-btn { width: 100%; min-height: 46px; border-radius: 14px; font-size: 14px; justify-content: center; gap: 8px; }
.tools-page .tool-card-btn svg { width: 16px; height: 16px; }
.tools-page .tool-card-btn svg:last-child { width: 15px; height: 15px; margin-left: 2px; transition: transform .2s ease; }
.tools-page .tool-card-btn:hover svg:last-child { transform: translateX(4px); }
@media (max-width: 520px) { .tools-page .tool-card-ico { margin-left: 20px; } .tools-page .tool-card-copy { padding-left: 20px; padding-right: 20px; } .tools-page .tool-card-foot { padding-left: 20px; padding-right: 20px; } }
@media (prefers-reduced-motion: reduce) { .tools-page .tool-card { transition: none; } .tools-page .tool-card:hover { transform: none; } }

/* ---- MBTI 人物分析：标题行 + 重新生成入口 ---- */
.mbti-sec-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.mbti-sec-head .mbti-sec-title { margin-bottom: 10px; }
.mbti-refresh-btn { flex: 0 0 auto; white-space: nowrap; }
@media (max-width: 560px) { .mbti-sec-head { flex-direction: column; align-items: stretch; } .mbti-refresh-btn { width: 100%; justify-content: center; } }

/* ==================================================================
 * 顶部页面头部（大厂审美） / 确认弹窗 / 字数平行排版 / MBTI 细节
 * ================================================================== */

/* ---- 通用页面头部：渐变底 + 主副标题 + 右侧数据/装饰 ---- */
.page-hero { position: relative; overflow: hidden; border-radius: 22px; border: 1px solid var(--line); background: linear-gradient(120deg, #ffffff 0%, #f4f9f0 55%, #eaf5e4 100%); box-shadow: 0 12px 30px rgba(31, 48, 30, .05); padding: 26px 28px; margin-bottom: 20px; }
.page-hero::after { content: ''; position: absolute; right: -60px; top: -70px; width: 240px; height: 240px; border-radius: 50%; background: radial-gradient(circle, rgba(155, 234, 99, .22), rgba(155, 234, 99, 0) 70%); pointer-events: none; }
.page-hero-inner { position: relative; z-index: 1; display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.page-hero-copy { flex: 1 1 340px; min-width: 0; }
.page-hero .page-kicker { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--green-strong); background: rgba(155, 234, 99, .3); border-radius: 99px; padding: 3px 10px; margin-bottom: 10px; }
.page-hero h1 { margin: 0 0 8px; font-size: 26px; font-weight: 800; letter-spacing: -.01em; color: var(--ink); }
.page-hero p { margin: 0; font-size: 13px; line-height: 1.85; color: var(--muted); max-width: 60ch; }
.page-hero-side { display: flex; gap: 10px; flex-wrap: wrap; }
.page-hero-stat { min-width: 96px; padding: 12px 16px; border-radius: 16px; background: rgba(255, 255, 255, .84); border: 1px solid var(--line); text-align: center; }
.page-hero-stat b { display: block; font-size: 21px; font-weight: 800; line-height: 1.2; color: var(--green-strong); font-variant-numeric: tabular-nums; }
.page-hero-stat span { display: block; margin-top: 3px; font-size: 11px; color: var(--muted-2); white-space: nowrap; }
@media (max-width: 720px) { .page-hero { padding: 20px 18px; } .page-hero h1 { font-size: 22px; } .page-hero-side { width: 100%; } .page-hero-stat { flex: 1 1 40%; min-width: 0; } }

/* ---- 站内确认弹窗 ---- */
.confirm-modal { width: min(440px, 100%); }
.confirm-body { display: flex; align-items: flex-start; gap: 12px; padding: 6px 0 4px; }
.confirm-body > svg { width: 22px; height: 22px; flex: 0 0 22px; color: var(--amber); margin-top: 1px; }
.confirm-body p { margin: 0; font-size: 13.5px; line-height: 1.85; color: var(--ink); }
.confirm-ok-btn { background: var(--coral); border-color: var(--coral); color: #fff; }
.confirm-ok-btn:hover { filter: brightness(.95); }

/* ---- 字数：输入框与预设档位平行，标签单独一行 ---- */
.words-row { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; }
.words-row input[type="number"] { flex: 0 0 130px; width: 130px; max-width: 130px; padding: 8px 11px; border: 1px solid var(--line); border-radius: var(--r-sm); font-size: 13px; background: var(--surface); color: inherit; }
.words-row .cover-words-quick { flex: 1; justify-content: flex-start; }
.cover-words-quick { display: flex; flex-wrap: wrap; gap: 6px; }
@media (max-width: 520px) { .words-row { flex-wrap: wrap; } .words-row input[type="number"] { flex: 1 1 100%; width: 100%; max-width: none; } }

/* 重写/概况分区标题：整行不折行，徽标不换行 */
.rw-sec-title { display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; white-space: nowrap; }
.rw-sec-title em { white-space: nowrap; flex: 0 0 auto; }
.rw-section { min-width: 0; }

/* ---- MBTI 紫色 tone（生成中弹窗） ---- */
.iv-modal-orb.tone-purple { background: radial-gradient(circle at 32% 30%, #f0ecfd, var(--purple) 62%, #4a2fa8); box-shadow: 0 0 0 0 rgba(104, 69, 232, .42); animation: ivOrbPulsePurple 1.8s ease-in-out infinite; }
@keyframes ivOrbPulsePurple { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(104, 69, 232, .42); } 55% { transform: scale(1.05); box-shadow: 0 0 0 16px rgba(104, 69, 232, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(104, 69, 232, 0); } }
.iv-modal-bar-i.tone-purple { background: linear-gradient(90deg, rgba(152, 122, 245, .35), var(--purple), rgba(152, 122, 245, .35)); }
.iv-modal-mask.tone-purple { background: rgba(20, 14, 38, .48); }
@media (prefers-reduced-motion: reduce) { .iv-modal-orb.tone-purple { animation: ivOrbBreathe 2.4s ease-in-out infinite; } }

/* ---- MBTI 四维倾向：收紧间距，去掉下方多余留白 ---- */
.mbti-tendency h3 { margin: 0 0 10px; }
.mbti-bar-row { margin-bottom: 10px; }
.mbti-bar-row:last-of-type { margin-bottom: 0; }
.mbti-tendency-note { margin: 8px 0 0; }
.mbti-tendency { padding-bottom: 2px; }
@media (max-width: 820px) { .mbti-tendency { padding-bottom: 0; } .mbti-tendency-note { margin: 6px 0 0; } }

/* ---- 雷达图：容器居中（含手机端） ---- */
.mbti-radar-wrap { display: flex; align-items: center; justify-content: center; }
.mbti-radar { display: block; margin: 0 auto; }
@media (max-width: 820px) { .mbti-tendency:first-child { display: flex; flex-direction: column; align-items: center; } .mbti-radar-wrap { width: 100%; } }

/* ---- 适配岗位方向：标签换行，标题独占一行 ---- */
.mbti-careers { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 14px; padding: 12px 16px; background: var(--surface-soft); border-radius: var(--r); }
.mbti-careers-label { flex: 0 0 100%; width: 100%; margin-bottom: 2px; }
.mbti-career { white-space: nowrap; }

/* ---- 邀请四步：卡片等高 + 内容更饱满 ---- */
.invite-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; }
.invite-step { display: flex; flex-direction: column; gap: 6px; height: 100%; min-height: 118px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); transition: border-color .18s ease, box-shadow .18s ease; }
.invite-step:hover { border-color: #b9d8a8; box-shadow: 0 10px 24px rgba(31, 48, 30, .07); }
.invite-step-n { display: grid; place-items: center; width: 28px; height: 28px; flex: 0 0 28px; border-radius: 9px; background: linear-gradient(135deg, #ecf8e4, #ddefd2); color: var(--green-strong); font-size: 13px; font-weight: 800; }
.invite-step > span:last-child { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.invite-step b { display: block; font-size: 13.5px; font-weight: 750; color: var(--ink); }
.invite-step small { display: block; font-size: 11.5px; line-height: 1.7; color: var(--muted); }
.invite-step .invite-step-tip { display: block; margin-top: auto; padding-top: 8px; border-top: 1px dashed var(--line); font-size: 11px; color: var(--muted-2); }
.invite-left, .invite-panel { align-self: start; }
.invite-layout, .account-workspace .invite-left { align-items: stretch; }

/* ---- VIP 尊享功能：每项带一行说明 ---- */
.vip-feats li { align-items: flex-start; flex-wrap: wrap; gap: 7px; }
.vip-feats li > span { flex: 0 0 100%; padding-left: 21px; margin-top: 1px; font-size: 11px; line-height: 1.6; color: #8a7a4a; }

/* ==================================================================
 * 开通会员：一张横向大卡（取代原三张宣传卡）
 * ================================================================== */
.vip-megacard { position: relative; overflow: hidden; border-radius: 24px; border: 1px solid var(--line); background: linear-gradient(135deg, #ffffff 0%, #f6faf1 48%, #eaf5e4 100%); box-shadow: 0 18px 44px rgba(31, 48, 30, .07); padding: 28px 30px; margin-bottom: 22px; }
.vip-megacard::after { content: ; position: absolute; right: -80px; bottom: -90px; width: 300px; height: 300px; border-radius: 50%; background: radial-gradient(circle, rgba(155, 234, 99, .2), rgba(155, 234, 99, 0) 70%); pointer-events: none; }
.vip-megacard-head { position: relative; z-index: 1; display: flex; align-items: center; gap: 20px; flex-wrap: wrap; padding-bottom: 20px; border-bottom: 1px dashed var(--line); }
.vip-megacard-seal { display: grid; place-items: center; width: 54px; height: 54px; flex: 0 0 54px; border-radius: 17px; background: linear-gradient(135deg, #fdf3d8, #f0dcaa); color: #a8791a; box-shadow: inset 0 0 0 1px rgba(245, 158, 11, .16); }
.vip-megacard-seal svg { width: 26px; height: 26px; }
.vip-megacard-title { flex: 1 1 340px; min-width: 0; }
.vip-megacard-kicker { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .1em; color: var(--green-strong); background: rgba(155, 234, 99, .3); border-radius: 99px; padding: 3px 10px; margin-bottom: 8px; }
.vip-megacard-title h2 { margin: 0 0 7px; font-size: 22px; font-weight: 800; letter-spacing: -.01em; color: var(--ink); }
.vip-megacard-title p { margin: 0; font-size: 13px; line-height: 1.85; color: var(--muted); max-width: 62ch; }
.vip-megacard-stats { display: flex; gap: 10px; flex-wrap: wrap; }
.vms { min-width: 84px; padding: 10px 14px; border-radius: 15px; background: rgba(255, 255, 255, .86); border: 1px solid var(--line); text-align: center; }
.vms b { display: block; font-size: 19px; font-weight: 800; line-height: 1.2; color: var(--green-strong); font-variant-numeric: tabular-nums; }
.vms span { display: block; margin-top: 2px; font-size: 11px; color: var(--muted-2); white-space: nowrap; }

.vip-megacard-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 20px 0 18px; }
.vmc-col { display: flex; flex-direction: column; gap: 10px; padding: 18px 16px; border-radius: 18px; background: #fff; border: 1px solid var(--line); box-shadow: 0 8px 22px rgba(31, 48, 30, .04); }
.vmc-col header { display: flex; align-items: center; gap: 10px; padding-bottom: 10px; border-bottom: 1px dashed var(--line); }
.vmc-ico { display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 38px; border-radius: 12px; }
.vmc-ico svg { width: 19px; height: 19px; }
.vmc-col header b { display: block; font-size: 14px; font-weight: 800; color: var(--ink); }
.vmc-col header small { display: block; margin-top: 2px; font-size: 11px; color: var(--muted-2); }
.vmc-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.vmc-col li { display: flex; align-items: flex-start; gap: 9px; }
.vmc-col li > svg { width: 15px; height: 15px; flex: 0 0 15px; margin-top: 2px; color: var(--green-strong); }
.vmc-col li b { display: block; font-size: 12.5px; font-weight: 700; color: var(--ink); line-height: 1.5; }
.vmc-col li em { display: block; font-style: normal; margin-top: 2px; font-size: 11px; line-height: 1.6; color: var(--muted); }
.vmc-green .vmc-ico { background: linear-gradient(135deg, #ecf8e4, #ddefd2); color: var(--green-strong); }
.vmc-amber .vmc-ico { background: linear-gradient(135deg, #fdf1dc, #f7e3bd); color: #b3730c; }
.vmc-amber li > svg { color: #b3730c; }
.vmc-purple .vmc-ico { background: linear-gradient(135deg, #f2edfd, #e4d9fa); color: var(--purple); }
.vmc-purple li > svg { color: var(--purple); }

.vip-megacard-foot { position: relative; z-index: 1; display: flex; gap: 16px; flex-wrap: wrap; padding-top: 14px; border-top: 1px dashed var(--line); }
.vmf-item { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); white-space: nowrap; }
.vmf-item svg { width: 14px; height: 14px; color: var(--green-strong); }
@media (max-width: 980px) { .vip-megacard-grid { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .vip-megacard { padding: 20px 18px; border-radius: 20px; } .vip-megacard-title h2 { font-size: 19px; } .vip-megacard-stats { width: 100%; } .vms { flex: 1 1 30%; min-width: 0; } }

/* ---- 页面头部下方的操作按钮行 ---- */
.page-hero-actions { position: relative; z-index: 1; display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--line); }
@media (max-width: 520px) { .page-hero-actions .btn { flex: 1 1 100%; justify-content: center; } }

/* ==================================================================
 * 工具箱：头部与内容同宽、2×2 大卡片、头部右方返回、面试 tab
 * ================================================================== */

/* 页面头部与下方内容共用同一宽度，保证左右边缘对齐 */
.tools-page .page-hero,
.tools-page .tools-grid,
.tools-page .tool-section { width: 100%; max-width: 1390px; margin-left: auto; margin-right: auto; }
.tools-page .page-hero { margin-bottom: 18px; }

/* 头部右方的返回按钮：靠右、与下方卡片右缘齐平 */
.page-hero-back { justify-content: flex-end; margin-top: 14px; padding-top: 12px; }

/* ---- 2×2 大卡片 ---- */
.tools-page .tools-grid-2x2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
@media (max-width: 900px) { .tools-page .tools-grid-2x2 { grid-template-columns: 1fr; } }

.tool-card-lg { padding: 0; gap: 0; }
.tool-card-lg .tool-card-top { display: flex; align-items: center; gap: 14px; padding: 26px 26px 0; }
.tool-card-lg .tool-card-ico { margin: 0; width: 56px; height: 56px; flex: 0 0 56px; border-radius: 18px; }
.tool-card-lg .tool-card-ico svg { width: 26px; height: 26px; }
.tool-card-heading { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; min-width: 0; }
.tool-card-heading h2 { margin: 0; font-size: 19px; font-weight: 800; letter-spacing: .01em; }
.tool-card-tag { font-size: 10.5px; font-weight: 750; color: var(--muted-2); background: var(--surface-soft); border: 1px solid var(--line); border-radius: 99px; padding: 2px 9px; white-space: nowrap; }
.tool-card-lg .tool-card-copy { padding: 16px 26px 0; }
.tool-card-lg .tool-card-copy p { margin: 0; font-size: 13.5px; line-height: 1.9; color: var(--muted); }
.tool-card-points { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.tool-card-points li { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; line-height: 1.65; color: var(--ink); }
.tool-card-points svg { width: 15px; height: 15px; flex: 0 0 15px; margin-top: 2px; color: var(--green-strong); }
.tool-card-lg .tool-card-foot { margin-top: 20px; padding: 16px 26px 24px; border-top: 1px dashed var(--line); display: flex; flex-direction: column; gap: 12px; }
.tool-card-lg .tool-card-btn { width: 100%; min-height: 48px; border-radius: 15px; font-size: 14.5px; }
@media (max-width: 520px) {
  .tool-card-lg .tool-card-top { padding: 20px 18px 0; }
  .tool-card-lg .tool-card-copy { padding: 14px 18px 0; }
  .tool-card-lg .tool-card-foot { padding: 14px 18px 20px; }
}

/* ---- 模拟面试 tab ---- */
.interview-intro-card { padding: 22px 24px; border-radius: 20px; border: 1px solid var(--line); background: #fff; box-shadow: 0 10px 26px rgba(31, 48, 30, .05); }
.interview-intro-card .mbti-lead { margin: 14px 0 0; }
.mbti-type-code.purple { background: linear-gradient(135deg, #f2edfd, #e4d9fa); color: var(--purple); }
.interview-history-card { padding: 20px 22px; border-radius: 20px; }
.interview-history-card .cover-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.interview-history-card .cover-item-title { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 750; }
.interview-history-card .cover-item-title svg { width: 15px; height: 15px; color: var(--green-strong); }
.iv-hist-qa { padding: 12px 0; border-top: 1px dashed var(--line); }
.iv-hist-qa:first-child { border-top: none; }
.iv-hist-q { margin: 0 0 8px; font-size: 13px; line-height: 1.8; color: var(--ink); }
.iv-hist-q b { display: inline-block; margin-right: 8px; padding: 1px 8px; border-radius: 99px; background: var(--surface-soft); border: 1px solid var(--line); font-size: 11px; color: var(--green-strong); }
.iv-hist-a { margin: 0 0 8px; padding-left: 12px; border-left: 2px solid var(--line-strong); font-size: 12.5px; line-height: 1.85; color: var(--muted); white-space: pre-wrap; }
.iv-hist-rv { display: flex; align-items: flex-start; gap: 7px; margin: 0; font-size: 12.5px; line-height: 1.85; color: var(--ink); }
.iv-hist-rv svg { width: 15px; height: 15px; flex: 0 0 15px; margin-top: 3px; color: var(--green-strong); }

/* ---- 四维倾向：每个维度带一句解读，填满竖向空间 ---- */
.mbti-bar-hint { margin: 6px 0 14px; font-size: 11.5px; line-height: 1.75; color: var(--muted); padding-left: 2px; }
.mbti-bar-hint:last-of-type { margin-bottom: 4px; }
.mbti-tendency-note { margin: 10px 0 0; }
@media (max-width: 820px) { .mbti-bar-hint { margin-bottom: 12px; } }

/* ==================================================================
 * 活动卡（多张） + 后台管理 + 卡片宽度对齐
 * ================================================================== */

/* ---- 前台：活动卡容器与价格卡/权益说明卡同宽对齐 ---- */
.pricing-page .promo-wrap,
.pricing-page .pricing-grid,
.pricing-page .pricing-howto,
.pricing-page .vip-megacard { width: 100%; max-width: 1180px; margin-left: auto; margin-right: auto; }
.promo-wrap { display: flex; flex-direction: column; gap: 14px; margin-bottom: 20px; }
.promo-wrap .promo-card { margin-bottom: 0; }
.promo-window { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--green-strong); background: rgba(255, 255, 255, .8); border: 1px solid rgba(36, 107, 42, .18); border-radius: 99px; padding: 2px 9px; white-space: nowrap; }
.promo-window svg { width: 12px; height: 12px; }
.promo-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

/* ---- 后台：活动卡列表 ---- */
.promo-admin-list { display: flex; flex-direction: column; gap: 14px; margin-bottom: 12px; }
.promo-admin-empty { margin: 0 0 12px; }
.promo-admin-item { padding: 16px 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface-soft); }
.promo-admin-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.promo-admin-name { flex: 1 1 240px; min-width: 0; font-weight: 700; }
.promo-admin-del { flex: 0 0 auto; }
.promo-admin-item .row2, .promo-admin-item .row3, .promo-admin-item .row4 { gap: 8px; }
.promo-admin-item .field { margin-bottom: 10px; }

/* 后台通用多列（row4 之前缺失） */
.row4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.row3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 980px) { .row4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .row3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .row4, .row3 { grid-template-columns: 1fr; } }

/* ---- 需求⑤ 个人中心：卡密激活与我的画像两卡等高 ---- */
.account-grid { align-items: stretch; }
.account-card { height: 100%; }
/* 画像卡原来封顶 560px，比右侧卡密激活卡矮一截；抬高上限让两卡在同一行等高，
   内部滚动区负责消化超长内容（画像字段多时不会把页面撑长）。 */
.account-profile-card { display: flex; flex-direction: column; max-height: 720px; }
.account-profile-card .account-card-title { flex: 0 0 auto; }
.account-profile-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
@media (max-width: 900px) { .account-profile-card { max-height: 640px; } }

/* ---- 四维倾向：每维度一套配色 + 加载生长动效 ---- */
.mbti-bar-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.mbti-bar-row:last-of-type { margin-bottom: 0; }
.mbti-bar-label { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; font-size: 11.5px; font-weight: 700; color: var(--muted-2); white-space: nowrap; transition: color .2s ease; }
.mbti-bar-label b { font-size: 12.5px; font-variant-numeric: tabular-nums; }
.mbti-bar-label.on { color: var(--tendency-ink, var(--green-strong)); }
.mbti-bar-track { position: relative; flex: 1; height: 12px; border-radius: 99px; background: var(--bg-soft); border: 1px solid var(--line); overflow: hidden; display: flex; }
.mbti-bar-track .mbti-bar-seg { display: block; height: 100%; background: #e4e9df; transition: width .8s cubic-bezier(.22, .8, .28, 1), background .3s ease; }
.mbti-bar-track .mbti-bar-seg.l.on { background: linear-gradient(90deg, color-mix(in srgb, var(--tendency) 55%, #fff), var(--tendency)); }
.mbti-bar-track .mbti-bar-seg.r.on { background: linear-gradient(270deg, color-mix(in srgb, var(--tendency) 55%, #fff), var(--tendency)); }
.mbti-bar-track .mbti-bar-mid { position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: var(--line-strong); opacity: .55; }

.mbti-bar-row.t-ei, .mbti-bar-hint.t-ei { --tendency: #2f8f3c; --tendency-ink: #246b2a; }
.mbti-bar-row.t-sn, .mbti-bar-hint.t-sn { --tendency: #d98a12; --tendency-ink: #a86a0b; }
.mbti-bar-row.t-tf, .mbti-bar-hint.t-tf { --tendency: #6b46c1; --tendency-ink: #5737a3; }
.mbti-bar-row.t-jp, .mbti-bar-hint.t-jp { --tendency: #0f8a86; --tendency-ink: #0c6f6c; }

.mbti-bar-hint { margin: 5px 0 12px; padding-left: 2px; font-size: 11.5px; line-height: 1.75; color: var(--muted); border-left: 2px solid var(--tendency, var(--line-strong)); padding-left: 8px; }
.mbti-bar-hint:last-of-type { margin-bottom: 2px; }
.mbti-tendency h3 { margin: 0 0 12px; }

/* 顶部维度小标题跟着配色 */
@media (prefers-reduced-motion: reduce) {
  .mbti-bar-track .mbti-bar-seg { transition: none; }
}

/* ==================================================================
 * 模拟面试 tab / 投递清单工具栏
 * ================================================================== */

/* ---- 需求② 生成面试题按钮与上方内容拉开间距 ---- */
.interview-start-actions { margin-top: 20px; padding-top: 16px; border-top: 1px dashed var(--line); }
.interview-start-actions .btn { min-height: 48px; border-radius: 15px; font-size: 14.5px; }

/* ---- 面试记录列表 ---- */
.interview-history-card .cover-item { border: 1px solid var(--line); border-radius: 14px; background: var(--surface); overflow: hidden; }
.interview-history-card .cover-item > summary { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 14px; cursor: pointer; list-style: none; }
.interview-history-card .cover-item > summary::-webkit-details-marker { display: none; }
.interview-history-card .cover-item[open] > summary { border-bottom: 1px dashed var(--line); background: var(--surface-soft); }
.interview-history-card .cover-item-title { flex: 1 1 auto; min-width: 0; }
.interview-history-card .cover-item-meta { flex: 0 0 auto; font-size: 11.5px; color: var(--muted-2); }
.interview-history-card .cover-item-body { padding: 6px 14px 14px; }
.iv-hist-qa + .iv-hist-qa { border-top: 1px dashed var(--line); }

/* 紫色徽章（模拟面试弹窗标题） */
.rv-title-badge-purple { background: #f1edfd; border-color: #e2d9fa; color: var(--purple); }

/* ---- 需求③ 清单统计卡 6 张 ---- */
.route-kpis.quick-kpis { grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 1180px) { .route-kpis.quick-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .route-kpis.quick-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }




/* ==================================================================
 * 活动卡 · 尊贵主题（持续动效）
 * ================================================================== */
.promo-card--royal {
  position: relative; overflow: hidden;
  border: 1px solid var(--promo-line, rgba(178, 138, 30, .38));
  border-radius: 20px;
  padding: 22px 38px 22px 26px;   /* 右侧 38px：给倒计时与类型徽标留足间距 */
  background:
    radial-gradient(120% 140% at 8% -10%, var(--promo-glow-a, rgba(255, 236, 179, .95)) 0%, transparent 58%),
    linear-gradient(118deg, var(--promo-bg-a, #fffaf0) 0%, var(--promo-bg-b, #fdf1d6) 52%, var(--promo-bg-c, #f8e4b8) 100%);
  box-shadow: 0 14px 34px var(--promo-shadow, rgba(178, 138, 30, .16)), inset 0 1px 0 rgba(255, 255, 255, .6);
}
.promo-card--royal::before {
  content: ''; position: absolute; inset: -60px auto auto -60px; width: 250px; height: 250px; border-radius: 50%;
  background: var(--promo-orb, rgba(255, 214, 122, .34)); pointer-events: none;
  animation: promoOrb 7s ease-in-out infinite;
}
.promo-card--royal .promo-flag {
  position: relative; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 800; letter-spacing: .06em; white-space: nowrap;
  padding: 4px 12px; border-radius: 99px;
  color: #fff;
  background: linear-gradient(100deg, var(--promo-flag-a, #c8961e), var(--promo-flag-b, #efcb76), var(--promo-flag-a, #c8961e));
  background-size: 220% 100%;
  box-shadow: 0 6px 16px var(--promo-shadow, rgba(178, 138, 30, .3));
  animation: promoFlag 3.4s linear infinite;
}
.promo-card--royal .promo-flag svg { width: 13px; height: 13px; }
/* 斜向光带：持续扫过，营造“限量”质感 */
.promo-shine {
  position: absolute; top: -60%; bottom: -60%; left: -35%; width: 26%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent);
  transform: rotate(16deg); pointer-events: none; z-index: 1;
  animation: promoShine 4.6s ease-in-out infinite;
}
@keyframes promoShine { 0% { left: -35%; opacity: 0; } 12% { opacity: .9; } 88% { opacity: .9; } 100% { left: 118%; opacity: 0; } }
@keyframes promoFlag { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } }
@keyframes promoOrb { 0%, 100% { transform: translate(0, 0) scale(1); opacity: .85; } 50% { transform: translate(14px, 10px) scale(1.06); opacity: 1; } }

.promo-card--royal .promo-main, .promo-card--royal .promo-cta { position: relative; z-index: 2; }
.promo-card--royal .promo-name { font-size: 20px; font-weight: 800; letter-spacing: -.01em; color: var(--promo-ink, #6b4d0d); }
.promo-card--royal .promo-price { font-size: 34px; font-weight: 800; color: var(--promo-price, #b8860b); font-variant-numeric: tabular-nums; }
.promo-card--royal .promo-unit { color: var(--promo-ink, #6b4d0d); opacity: .8; }
.promo-card--royal .promo-original { color: var(--promo-ink, #6b4d0d); opacity: .55; }
.promo-card--royal .promo-tagline { color: var(--promo-ink, #6b4d0d); opacity: .88; }
.promo-card--royal .promo-features li { color: var(--promo-ink, #6b4d0d); }
.promo-card--royal .promo-features svg { color: var(--promo-price, #b8860b); }
.promo-card--royal .promo-window { background: rgba(255, 255, 255, .78); border-color: var(--promo-line, rgba(178, 138, 30, .3)); color: var(--promo-price, #b8860b); font-variant-numeric: tabular-nums; }
.promo-card--royal .promo-window { margin-right: 6px; }
.promo-card--royal .promo-limit { background: rgba(255, 255, 255, .7); border-color: var(--promo-line, rgba(178, 138, 30, .3)); color: var(--promo-ink, #6b4d0d); }
.promo-card--royal .promo-btn {
  border: 0; color: #3a2a05;
  background: linear-gradient(100deg, var(--promo-btn-a, #f4d98a), var(--promo-btn-b, #e0b44f));
  box-shadow: 0 10px 24px var(--promo-shadow, rgba(178, 138, 30, .32));
  animation: promoBtn 2.6s ease-in-out infinite;
}
@keyframes promoBtn {
  0%, 100% { box-shadow: 0 10px 24px var(--promo-shadow, rgba(178, 138, 30, .32)); transform: translateY(0); }
  50% { box-shadow: 0 14px 30px var(--promo-shadow, rgba(178, 138, 30, .46)); transform: translateY(-2px); }
}

/* 两套主题：活动限时=赤金，新用户限时=紫金 */
.promo-card--royal.royal-gold {
  --promo-bg-a: #fffaf0; --promo-bg-b: #fdf1d6; --promo-bg-c: #f7e2b4;
  --promo-glow-a: rgba(255, 236, 179, .95); --promo-orb: rgba(255, 214, 122, .36);
  --promo-line: rgba(178, 138, 30, .38); --promo-shadow: rgba(178, 138, 30, .18);
  --promo-ink: #6b4d0d; --promo-price: #b8860b;
  --promo-flag-a: #c8961e; --promo-flag-b: #f0cd7c;
  --promo-btn-a: #f6dd93; --promo-btn-b: #dfb04a;
}
.promo-card--royal.royal-violet {
  --promo-bg-a: #fdfbff; --promo-bg-b: #f4ecff; --promo-bg-c: #e7d9fb;
  --promo-glow-a: rgba(233, 219, 255, .95); --promo-orb: rgba(186, 150, 253, .34);
  --promo-line: rgba(104, 69, 232, .32); --promo-shadow: rgba(104, 69, 232, .18);
  --promo-ink: #402a7a; --promo-price: #6b46c1;
  --promo-flag-a: #6b46c1; --promo-flag-b: #b79cf5;
  --promo-btn-a: #cbb2fb; --promo-btn-b: #8d6ae0;
}
.promo-card--royal.royal-violet .promo-btn { color: #fff; }



/* ---- 后台：活动卡 / 商品 的行式摘要 + 编辑弹窗 ---- */
.promo-admin-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.promo-admin-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-soft); }
.promo-admin-summary { flex: 1 1 220px; min-width: 0; }
.promo-admin-summary b { display: block; font-size: 13.5px; font-weight: 750; }
.promo-admin-summary small { display: block; margin-top: 3px; font-size: 11.5px; line-height: 1.6; color: var(--muted); }
.promo-admin-ops { display: flex; gap: 6px; flex: 0 0 auto; }
.promo-edit-modal { width: min(760px, 100%); }
.promo-edit-form .row2, .promo-edit-form .row3, .promo-edit-form .row4 { gap: 8px; }
.promo-edit-form .field { margin-bottom: 10px; }
.invite-sec-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.invite-sec-add { margin-left: auto; }
@media (max-width: 640px) { .promo-admin-ops { width: 100%; } .promo-admin-ops .btn { flex: 1 1 auto; justify-content: center; } }

/* ---- 需求① 工具栏：与统计卡对齐、筛选面板恢复卡片边框、搜索框丝滑让位 ---- */
.route-toolbar { margin-top: 12px; background: transparent; border: 0; box-shadow: none; padding: 0; }
.route-toolbar form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* 筛选面板展开后是独立卡片：白底 + 边框 + 圆角 + 内边距 */
.route-toolbar .filter-panel {
  background: #fff;
  border: 1px solid var(--line-strong);
  border-top: 1px solid var(--line-strong);
  border-radius: var(--r);
  padding: 16px;
  margin-top: 6px;
  box-shadow: 0 10px 26px rgba(31, 48, 30, .06);
}
/* 计数芯片恢复原样式（上轮误覆盖导致数字变小变灰） */
.route-result-count { flex: 0 0 auto; }
.route-result-count strong { font-size: 29px; line-height: 1; color: var(--green-strong); }
.route-result-count span { font-size: 13px; font-weight: 800; color: var(--ink); }

/* ---- 需求⑤ 可投递状态设置 ---- */
.route-statusbar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  max-width: 1390px; margin: 0 auto 12px; padding: 12px 14px;
  background: var(--surface-soft); border: 1px solid var(--line); border-radius: var(--r);
}
.route-status-label { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 800; color: var(--green-strong); }
.route-status-label svg { width: 15px; height: 15px; }
.route-status-set { min-width: 160px; height: 38px; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; color: var(--ink); padding: 0 9px; outline: 0; font-size: 12.5px; }
.route-status-set:focus { border-color: var(--green-strong); box-shadow: 0 0 0 3px rgba(36, 107, 42, .1); }
.route-status-tip { font-size: 11px; color: var(--muted-2); }
@media (max-width: 720px) { .route-statusbar { align-items: flex-start; flex-direction: column; gap: 8px; } .route-status-tip { display: none; } }

/* ---- 需求② 模拟面试：概况里的消耗提示与上方卡片拉开间距 ---- */
.iv-quota-line { margin: 14px 0 4px; }

/* ---- 弹窗打开时的滚动锁：滚动条宽度恒定，避免背景左右晃动 ---- */
html { scrollbar-gutter: stable; }
body.rv-modal-open { overflow: hidden; }

/* ==================================================================
 * 公共弹层（rv-modal / rv-title-badge）：从 resume.css 迁入。
 * 后台页只加载 style.css，后台的活动卡 / 积分商城弹窗依赖这套样式；
 * 缺失时遮罩会以普通块渲染在文档流里，表现为「没有弹窗」。
 * ================================================================== */
/* ---------- AI 定制弹层 ---------- */
.rv-modal-mask { position: fixed; inset: 0; z-index: 200; background: rgba(15, 22, 16, .44); display: flex; align-items: center; justify-content: center; padding: 18px; opacity: 0; transition: opacity .18s ease; }
.rv-modal-mask.show { opacity: 1; }
.rv-modal { position: relative; width: min(640px, 100%); max-height: min(82vh, 700px); background: #fff; border-radius: var(--r-lg); box-shadow: 0 30px 80px rgba(10, 20, 12, .35); display: flex; flex-direction: column; overflow: visible; transform: translateY(10px) scale(.985); transition: transform .2s ease; }
.rv-modal-mask.show .rv-modal { transform: none; }
.rv-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 20px 12px; border-bottom: 1px solid var(--line); }
.rv-modal-head h3 { display: flex; align-items: center; gap: 8px; font-size: 17px; margin: 0 0 3px; }
.rv-modal-head h3 svg { color: var(--purple); }
.rv-modal-head p { margin: 0; font-size: 12px; color: var(--muted); }
.rv-modal-body { padding: 14px 20px 18px; overflow-y: auto; }
.rv-pick-search { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line-strong); border-radius: 9px; padding: 8px 11px; margin-bottom: 10px; }
.rv-pick-search svg { width: 15px; color: var(--muted-2); }
.rv-pick-search input { border: 0; outline: 0; width: 100%; font-size: 13px; background: transparent; }
.rv-pick-list { list-style: none; margin: 0; padding: 0; max-height: 340px; overflow-y: auto; border: 1px solid var(--line); border-radius: 10px; }
.rv-pick-list li { border-bottom: 1px solid #eef1ec; }
.rv-pick-list li:last-child { border-bottom: 0; }
.rv-pick-item { width: 100%; display: flex; align-items: center; gap: 11px; padding: 10px 12px; background: transparent; border: 0; text-align: left; }
.rv-pick-item:hover { background: #f4f8f2; }
.rv-pick-item.selected { background: #eef8e9; box-shadow: inset 3px 0 0 var(--green-strong); }
.rv-pick-ico { width: 32px; height: 32px; flex: 0 0 32px; border-radius: 8px; background: #eef5ea; color: var(--green-strong); display: grid; place-items: center; }
.rv-pick-ico svg { width: 16px; }
.rv-pick-copy { flex: 1; min-width: 0; }
.rv-pick-copy b, .rv-pick-copy small { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rv-pick-copy b { font-size: 13px; }
.rv-pick-copy small { font-size: 11px; color: var(--muted); margin-top: 2px; }
.rv-pick-item em { font-style: normal; font-size: 15px; font-weight: 800; color: var(--purple); font-variant-numeric: tabular-nums; }
.rv-pick-item em small { font-size: 9px; color: var(--muted-2); font-weight: 600; }
.rv-pick-generic { width: 100%; margin-top: 10px; display: flex; align-items: center; gap: 11px; padding: 11px 12px; border: 1px dashed var(--line-strong); border-radius: 10px; background: var(--surface-soft); text-align: left; }
.rv-pick-generic:hover { border-color: var(--green-strong); background: #f2f9ee; }
.rv-pick-generic > svg { color: var(--green-strong); width: 17px; flex: 0 0 17px; }
.rv-pick-generic b, .rv-pick-generic small { display: block; }
.rv-pick-generic b { font-size: 13px; }
.rv-pick-generic small { font-size: 11px; color: var(--muted); margin-top: 2px; }
.rv-quota-line { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--muted); margin: 12px 2px 0; }
.rv-quota-line svg { width: 13px; }
.rv-quota-line b { color: var(--coral); }
.rv-pick-pager { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 10px; }
.rv-pick-pager .btn { min-height: 34px; padding: 5px 12px; font-size: 12px; }
.rv-pick-pager .btn:disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }
.rv-pick-pageinfo { font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.rv-modal-empty { text-align: center; padding: 26px 10px; color: var(--muted); font-size: 13px; }
.rv-modal-empty svg { width: 30px; height: 30px; color: var(--muted-2); margin-bottom: 8px; }
.rv-modal-empty a { color: var(--blue); font-weight: 700; }
body.rv-modal-open { overflow: hidden; }

.rv-title-badge { width: 32px; height: 32px; flex: 0 0 32px; border-radius: 50%; display: inline-grid; place-items: center; background: #e8f6e3; border: 1px solid #d2ebca; color: var(--green-strong); }
.rv-title-badge svg { width: 17px; height: 17px; }
.rv-title-badge-blue { background: #e9f2fd; border-color: #d5e6f7; color: #2a6d9f; }
.rv-title-badge-purple { background: #f1edfd; border-color: #e2d9fa; color: var(--purple); }

.rv-title-badge-amber { background: #fdf3dd; border-color: #f6e3bb; color: #b3730c; }
.rv-title-badge-green { background: #e8f6e3; border-color: #d2ebca; color: var(--green-strong); }

/* ---- 公司选择弹窗：搜索框右侧一行的清单页同款下拉 ---- */
.rv-pick-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; margin-bottom: 10px; }
.rv-pick-toolbar .rv-pick-search { flex: 1 1 180px; margin-bottom: 0; min-width: 150px; }
.pick-filters { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.pick-filter { display: inline-flex; align-items: center; gap: 5px; }
.pick-filter > span { font-size: 11px; color: var(--muted-2); white-space: nowrap; }
/* 下拉外观与清单页筛选面板一致：38 高、边框、圆角、白底 */
.pick-filter select { height: 38px; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink); padding: 0 9px; outline: 0; font-size: 12px; max-width: 130px; }
.pick-filter select:focus { border-color: var(--green-strong); box-shadow: 0 0 0 3px rgba(36, 107, 42, .1); }
.pick-reset { height: 38px; padding: 0 12px; font-size: 12px; border-radius: 8px; }
@media (max-width: 720px) {
  .rv-pick-toolbar { flex-wrap: wrap; }
  .rv-pick-toolbar .rv-pick-search { flex: 1 1 100%; }
  .pick-filters { width: 100%; }
  .pick-filter { flex: 1 1 auto; }
  .pick-filter select { max-width: none; width: 100%; }
}

/* ---- 需求9：弹窗视觉统一改版（从 resume.css 迁入，覆盖上面基础版；
 *      已去掉 backdrop-filter —— 遮罩模糊会随过渡造成背景晃动） ---- */
/* 需求9：弹窗视觉统一改版（覆盖上方初版） */
.rv-modal-mask { background: rgba(14, 20, 15, .5); }
.rv-modal { width: min(660px, 100%); border-radius: 18px; box-shadow: 0 32px 90px rgba(8, 16, 9, .38); overflow: hidden; }
.rv-modal-head { position: relative; padding: 22px 24px 16px; border-bottom: 1px solid var(--line); background: linear-gradient(180deg, #fbfdf9, #fff); }
.rv-modal-head::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: linear-gradient(90deg, var(--green), rgba(155, 234, 99, 0) 60%); }
.rv-modal-head h3 { font-size: 18px; letter-spacing: -.01em; }
.rv-modal-head h3 svg { width: 19px; height: 19px; }
.rv-modal-head p { font-size: 12.5px; margin-top: 5px; line-height: 1.7; }
.rv-modal-body { padding: 18px 24px 24px; }
.rv-modal-head .icon-btn { width: 36px; height: 36px; min-width: 36px; flex: 0 0 auto; border-radius: 10px; }
.rv-modal-head .icon-btn:hover { background: #f0f4ec; color: var(--ink); }

/* ---- 需求② 筛选面板改为气泡悬浮：展开时不推挤下方企业清单 ---- */
.route-toolbar form { position: relative; }
.route-toolbar .filter-panel {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  z-index: 60;
  margin-top: 0;
  background: #fff;
  border: 1px solid var(--line-strong);
  border-radius: var(--r);
  padding: 16px;
  box-shadow: 0 18px 44px rgba(31, 48, 30, .14);
  animation: filterPop .18s ease;
}
@keyframes filterPop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (max-width: 720px) {
  .route-toolbar .filter-panel { left: -6px; right: -6px; }
}

/* ---- 公司选择弹窗：筛选改为「按钮 + 气泡面板」（与清单页同款交互） ---- */
.rv-pick-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; margin-bottom: 10px; }
.rv-pick-toolbar .rv-pick-search { flex: 1 1 auto; margin-bottom: 0; min-width: 150px; }
.pick-toggle { position: relative; flex: 0 0 auto; height: 40px; padding: 0 14px; border-radius: 8px; font-size: 12.5px; }
.pick-toggle.open { border-color: var(--green-strong); color: var(--green-strong); background: #f2f9ee; }
.pick-count { font-size: 10px; margin-left: 5px; padding: 2px 5px; border-radius: 4px; background: #e5f7dd; color: var(--green-strong); }
/* 面板 fixed 定位：展开时由 JS 按筛选按钮位置计算 top/left，不依赖 DOM 层级 */
.pick-panel {
  position: fixed;
  z-index: 260;
  width: min(430px, calc(100vw - 48px));
  padding: 16px;
  background: #fff;
  border: 1px solid var(--line-strong);
  border-radius: 14px;
  box-shadow: 0 18px 44px rgba(31, 48, 30, .16);
  animation: pickPop .16s ease;
}
@keyframes pickPop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.pick-filters { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.pick-filter { display: inline-flex; flex-direction: column; gap: 5px; min-width: 0; flex: 1 1 110px; }
.pick-filter > span { font-size: 11px; color: var(--muted-2); white-space: nowrap; }
.pick-filter select { width: 100%; height: 38px; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink); padding: 0 9px; outline: 0; font-size: 12px; }
.pick-filter select:focus { border-color: var(--green-strong); box-shadow: 0 0 0 3px rgba(36, 107, 42, .1); }
.pick-reset { height: 38px; padding: 0 12px; font-size: 12px; border-radius: 8px; flex: 0 0 auto; align-self: flex-end; }
@media (max-width: 560px) { .pick-filter { flex: 1 1 100%; } }

/* ---- 投递状态扩展：笔试中/测评中/面试中/已发Offer 的下拉配色 ---- */
.status-select.status-written { border-color: #d9c9a8; background: #fdf8ec; color: #8a6a1c; }
.status-select.status-assess { border-color: #d5d0f0; background: #f3f0fc; color: #5a49a8; }
.status-select.status-interview { border-color: #bcd8ea; background: #eef6fc; color: #2a6d9f; }
.status-select.status-offer { border-color: #c9e6c5; background: #eef8ea; color: #246b2a; }

/* ---- 公司选择弹窗：投递状态下拉（与清单页筛选面板同款外观） ---- */
.pick-status-filter { display: inline-flex; flex-direction: column; gap: 4px; flex: 0 0 auto; }
.pick-status-filter > span { font-size: 11px; color: var(--muted-2); white-space: nowrap; }
.pick-status-filter select { height: 40px; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink); padding: 0 9px; outline: 0; font-size: 12.5px; min-width: 130px; }
.pick-status-filter select:focus { border-color: var(--green-strong); box-shadow: 0 0 0 3px rgba(36, 107, 42, .1); }

/* ---- MBTI 雷达入场动效：由 JS 逐帧驱动（tools.php），不受系统减少动画设置影响 ---- */
.mbti-radar-shape { transform-box: view-box; transform-origin: 50% 44%; will-change: transform, opacity; }

/* ---- 活动卡倒计时徽标：内边距与相邻元素间距（解决“紧贴、没有空间”） ---- */
.promo-card--royal .promo-title-row { gap: 12px; row-gap: 8px; }
.promo-card--royal .promo-window { padding: 3px 17px; margin-right: 12px; }
.promo-card--royal .promo-limit { margin-right: 4px; }
@media (max-width: 720px) {
  .promo-card--royal .promo-title-row { gap: 8px; row-gap: 7px; }
  .promo-card--royal .promo-window { margin-right: 10px; padding: 3px 17px; }
}

/* ---- 定价页：网格按屏幕降级，保证卡片宽度与上方会员权益卡一致且无横向溢出 ---- */
.pricing-grid.g3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 900px) {
  .pricing-grid.g3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .pricing-grid.g3 { grid-template-columns: minmax(0, 1fr); }
  /* 手机端：活动卡与价格卡撑满容器（与上方权益卡同宽），左右留白由容器统一提供 */
  .promo-wrap, .pricing-grid { width: 100%; }
  .promo-wrap .promo-card, .pricing-grid .price-card { width: 100%; margin-left: 0; margin-right: 0; }
}

/* ==================================================================
 * 定价页移动端：活动卡 / 价格卡 / 会员权益卡 左右留白完全一致
 * （同一规则 + !important 锁定，避免被历史规则覆盖导致有的卡片贴边）
 * ================================================================== */
@media (max-width: 720px) {
  .pricing-page .vip-megacard,
  .pricing-page .promo-wrap,
  .pricing-page .pricing-grid,
  .pricing-page .pricing-howto,
  .pricing-page .perk-strip {
    width: auto !important;
    max-width: none !important;
    margin-left: 14px !important;
    margin-right: 14px !important;
  }
}
/* 手机端价格卡：特点列表完整展示（不被压缩、不裁剪） */
@media (max-width: 720px) {
  .pricing-grid .price-card { height: auto; min-height: 0; }
  .pricing-grid .price-card ul { flex: 0 0 auto; overflow: visible; }
  .pricing-grid .price-card li { padding: 7px 0; line-height: 1.65; white-space: normal; }
}
/* 徽标内的图标与文字垂直居中：svg 视为块级并固定尺寸，消除基线偏移 */
.promo-window svg,
.promo-flag svg,
.promo-limit svg,
.vip-megacard-notes svg,
.vip-megacard-stats svg {
  display: block;
  flex: 0 0 auto;
  align-self: center;
}
.promo-window,
.promo-flag,
.promo-limit {
  align-items: center;
  line-height: 1.25;
}

/* ---- 过程弹窗图形动效兜底 ----
   基础类与各 tone-* 均已各自带 1.8s「光晕 + 轻微缩放」动画（见上方各段），此处只保留降级规则。
   reduced-motion（电脑端关闭系统「动画效果」时浏览器会上报该偏好）下不再整个停掉动画，
   改为纯透明度呼吸：无位移动效、不引起不适，但保住「正在处理」的可见反馈——
   否则会出现「进度条在走、圆形图形完全静止」的观感，看起来就像动效没加载。 */
@keyframes ivOrbBreathe { 0%, 100% { opacity: 1; } 50% { opacity: .6; } }
@media (prefers-reduced-motion: reduce) { .iv-modal-orb { animation: ivOrbBreathe 2.4s ease-in-out infinite; } }
