/* 后台页面：保持原木极简视觉，以深色文字和细线突出管理操作。 */
.admin-body { min-height:100vh; }
.admin-body main { overflow:visible; }
.portal-view[hidden],.login-view[hidden],.staff-identity-view[hidden],.dashboard[hidden] { display:none; }
.portal-view,.login-view { min-height:100vh; width:min(1180px,calc(100% - 40px)); margin:auto; display:grid; grid-template-columns:1fr 480px; align-items:center; gap:100px; }
.admin-brand { display:flex; flex-direction:column; width:max-content; }
.admin-brand strong { font-size:32px; letter-spacing:.13em; }
.admin-brand small { margin-top:9px; color:var(--muted); }
.portal-view>.admin-brand strong,.login-view>.admin-brand strong { font-size:clamp(50px,7vw,92px); }
.portal-card { padding:44px; background:rgba(255,253,248,.9); border:1px solid var(--ink); box-shadow:var(--shadow); }
.portal-card h1 { margin-bottom:14px; font-size:46px; }
.portal-card>p:not(.kicker) { color:var(--muted); line-height:1.7; }
.portal-options { margin-top:28px; display:grid; gap:12px; }
.portal-options>a,.portal-options>button { width:100%; min-height:86px; padding:16px 18px; display:grid; grid-template-columns:32px minmax(0,1fr) 22px; align-items:center; gap:13px; color:var(--ink); border:1px solid var(--line); background:var(--surface); text-align:left; }
.portal-options>a:hover,.portal-options>button:hover { border-color:var(--ink); background:var(--soft); }
.portal-options i:first-child { font-size:25px; }
.portal-options span { display:grid; gap:5px; }
.portal-options b { font-size:18px; }
.portal-options small { color:var(--muted); line-height:1.45; }
.login-card { padding:44px; background:rgba(255,253,248,.9); border:1px solid var(--ink); box-shadow:var(--shadow); }
.login-card h1 { margin-bottom:14px; font-size:50px; }
.login-card>p:not(.kicker) { color:var(--muted); line-height:1.7; }
.login-card label,.settings-form label { margin-top:28px; display:grid; gap:8px; }
.login-card input,.settings-form input,.admin-filters input,.admin-filters select,.admin-row input { width:100%; min-height:46px; padding:10px 12px; color:var(--ink); background:var(--surface); border:1px solid var(--line); outline:0; }
.login-card input:focus,.settings-form input:focus,.admin-row input:focus { border-color:var(--ink); }
.admin-primary { min-height:46px; padding:0 18px; display:inline-flex; align-items:center; justify-content:center; gap:9px; color:#fff; background:var(--ink); border:1px solid var(--ink); }
.login-card .admin-primary { width:100%; margin-top:18px; }
.login-back { width:max-content; margin-bottom:28px; display:inline-flex; align-items:center; gap:7px; color:var(--muted); border:0; border-bottom:1px solid var(--line); background:transparent; }
.form-message { display:block; margin-top:10px; min-height:20px; color:var(--danger); }
.form-message.success { color:var(--olive); }
.admin-header { min-height:86px; padding:14px max(26px,calc((100vw - 1420px)/2)); display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--ink); background:rgba(247,244,237,.96); }
.admin-header>div { display:flex; align-items:center; gap:20px; }
.admin-header a { border-bottom:1px solid var(--ink); }
.admin-header button { border:0; color:var(--danger); background:none; }
.admin-shell { width:min(1420px,calc(100% - 52px)); margin:auto; display:grid; grid-template-columns:190px minmax(0,1fr); gap:42px; }
.admin-nav { position:sticky; top:0; height:100vh; padding:44px 0; display:flex; flex-direction:column; gap:8px; border-right:1px solid var(--line); }
.admin-nav a { padding:11px 16px; }
.admin-nav a:hover { background:var(--soft); }
.admin-content { min-width:0; padding-bottom:100px; }
.admin-section { padding:64px 0; border-bottom:1px solid var(--ink); }
/* 后台会持续累积内容的区域统一在小模块内滚动，避免把整页无限撑长。 */
.admin-scroll-module { overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable; scrollbar-width:thin; scrollbar-color:#a89378 transparent; -webkit-overflow-scrolling:touch; }
.admin-scroll-module::-webkit-scrollbar { width:10px; height:10px; }
.admin-scroll-module::-webkit-scrollbar-thumb { border:2px solid transparent; border-radius:999px; background:#a89378; background-clip:padding-box; }
.admin-scroll-module::-webkit-scrollbar-track { background:rgba(128,91,55,.06); }
.admin-scroll-module:focus-visible { outline:2px solid var(--olive); outline-offset:3px; }
.admin-title { margin-bottom:28px; display:flex; justify-content:space-between; align-items:flex-end; gap:30px; }
.admin-title h1,.admin-title h2 { margin-bottom:10px; }
.admin-title h1 { font-size:58px; }
.admin-title>span,.admin-title p:last-child { color:var(--muted); }
.stat-grid { display:grid; grid-template-columns:repeat(4,1fr); border:1px solid var(--line); }
.stat-grid article { padding:24px; border-right:1px solid var(--line); }
.stat-grid article:last-child { border-right:0; }
.stat-grid span { display:block; color:var(--muted); }
.stat-grid strong { display:block; margin-top:12px; font-size:44px; }
.analytics-stat-grid { display:grid; grid-template-columns:repeat(5,1fr); border:1px solid var(--line); background:rgba(255,253,248,.75); }
.analytics-stat-grid article { min-width:0; padding:20px; border-right:1px solid var(--line); }
.analytics-stat-grid article:last-child { border-right:0; }
.analytics-stat-grid span,.analytics-stat-grid small { display:block; color:var(--muted); }
.analytics-stat-grid strong { display:block; margin:8px 0 5px; font-size:34px; }
.analytics-columns { margin-top:20px; display:grid; grid-template-columns:1fr 1fr 1fr; border:1px solid var(--line); background:rgba(255,253,248,.75); }
.analytics-columns>article { min-width:0; border-right:1px solid var(--line); }
.analytics-columns>article:last-child { border-right:0; }
.analytics-columns h3 { margin:0; padding:15px; border-bottom:1px solid var(--line); }
.analytics-source-head,.analytics-source-row { min-height:42px; padding:0 15px; display:grid; grid-template-columns:1fr 60px 60px; align-items:center; gap:8px; border-bottom:1px solid var(--line); }
.analytics-source-head { color:var(--muted); font-size:12px; }
.analytics-source-row span { text-align:center; }
.analytics-ranking-row { min-height:42px; padding:0 15px; display:grid; grid-template-columns:24px 1fr 42px; align-items:center; gap:8px; border-bottom:1px solid var(--line); }
.analytics-ranking-row span,.analytics-ranking-row em { color:var(--muted); font-style:normal; }
.analytics-ranking-row b { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.analytics-empty { min-height:128px; display:grid; place-items:center; color:var(--muted); }
#analyticsSources,#analyticsSearches,#analyticsProducts { max-height:252px; }
.announcement-admin-title { align-items:flex-end; }
.announcement-admin-layout { display:grid; grid-template-columns:minmax(340px,.72fr) minmax(0,1.45fr); gap:24px; align-items:start; }
.announcement-form { padding:26px; border:1px solid var(--ink); background:rgba(255,253,248,.78); }
.announcement-form h3 { margin-bottom:20px; font-size:24px; }
.announcement-form>label:not(.announcement-file):not(.announcement-remove-media),.announcement-link-fields label { margin-top:16px; display:grid; gap:7px; }
.announcement-form input,.announcement-form textarea { width:100%; padding:11px 12px; color:var(--ink); border:1px solid var(--line); background:var(--surface); outline:0; }
.announcement-form input { min-height:44px; }
.announcement-form textarea { resize:vertical; line-height:1.65; }
.announcement-form input:focus,.announcement-form textarea:focus { border-color:var(--ink); }
.announcement-file { min-height:116px; margin-top:18px; display:grid; place-items:center; border:1px dashed var(--ink); background:rgba(247,244,237,.7); cursor:pointer; }
.announcement-file input { display:none; }
.announcement-file>span { padding:18px; display:grid; justify-items:center; gap:5px; text-align:center; }
.announcement-file i { font-size:28px; }
.announcement-file small { max-width:300px; color:var(--muted); overflow-wrap:anywhere; }
.announcement-current-media { margin:12px 0 0; color:var(--muted); font-size:12px; }
.announcement-remove-media { margin-top:10px; display:flex; align-items:center; gap:8px; color:var(--danger); font-size:13px; }
.announcement-remove-media[hidden] { display:none; }
.announcement-remove-media input { width:auto; min-height:0; }
.announcement-link-fields { display:grid; grid-template-columns:1.4fr .6fr; gap:10px; }
.announcement-form-actions { margin-top:20px; display:flex; gap:10px; }
.announcement-form-actions>button:last-child { min-height:46px; padding:0 16px; border:1px solid var(--ink); background:transparent; }
.announcement-admin-records,.announcement-deleted-panel { border:1px solid var(--line); background:rgba(255,253,248,.72); }
.announcement-record-heading { min-height:62px; padding:14px 18px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.announcement-record-heading h3,.announcement-record-heading p { margin:0; }
.announcement-record-heading p,.announcement-record-heading>span { margin-top:4px; color:var(--muted); font-size:12px; }
#announcementActiveList { max-height:430px; }
.admin-announcement-row { padding:16px; display:grid; grid-template-columns:minmax(130px,1fr) minmax(120px,1fr) 80px auto; gap:14px; align-items:center; border-bottom:1px solid var(--line); }
.admin-announcement-row:last-child { border-bottom:0; }
.admin-announcement-row>div { min-width:0; }
.admin-announcement-main { grid-column:1/-1; padding-bottom:10px; border-bottom:1px solid var(--line); }
.admin-announcement-row b,.admin-announcement-row small { display:block; }
.admin-announcement-row small { margin-top:5px; color:var(--muted); }
.admin-announcement-main p { margin:6px 0 0; color:var(--muted); overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.admin-announcement-views b { font-size:28px; }
.admin-announcement-actions { display:flex; gap:6px; }
.admin-announcement-actions button,.admin-announcement-deleted button { min-height:36px; padding:0 9px; display:inline-flex; align-items:center; gap:5px; border:1px solid var(--ink); background:transparent; }
.admin-announcement-actions button:last-child { color:var(--danger); border-color:rgba(153,66,54,.45); }
.announcement-deleted-panel { margin-top:24px; }
#announcementDeletedList { max-height:260px; }
.admin-announcement-deleted { min-height:64px; padding:10px 16px; display:grid; grid-template-columns:minmax(240px,1fr) 150px 90px; gap:16px; align-items:center; border-bottom:1px solid var(--line); }
.admin-announcement-deleted:last-child { border-bottom:0; }
.admin-announcement-deleted b,.admin-announcement-deleted small { display:block; }
.admin-announcement-deleted small { margin-top:5px; color:var(--muted); }
.admin-announcement-deleted>span { color:var(--danger); font-variant-numeric:tabular-nums; }
.admin-announcement-deleted button { color:var(--olive); border-color:rgba(111,117,79,.5); }
.settings-form { max-width:630px; padding:28px; background:rgba(255,253,248,.75); border:1px solid var(--line); }
.settings-form label { margin-top:0; }
.settings-form .admin-primary { margin-top:16px; }
.import-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.mode-card { padding:20px; display:flex; gap:14px; border:1px solid var(--line); background:rgba(255,253,248,.65); cursor:pointer; }
.mode-card:has(input:checked) { border-color:var(--ink); }
.mode-card span { display:grid; gap:6px; }
.mode-card small { color:var(--muted); line-height:1.5; }
.file-drop { min-height:170px; margin:18px 0; display:grid; place-content:center; justify-items:center; gap:8px; border:1px dashed var(--ink); background:rgba(255,253,248,.5); cursor:pointer; }
.file-drop input { display:none; }
.file-drop i { font-size:42px; }
.file-drop span { color:var(--muted); }
.import-preview { margin-top:30px; border-top:1px solid var(--ink); }
.preview-stats { display:grid; grid-template-columns:repeat(4,1fr); border-left:1px solid var(--line); }
.preview-stats div { padding:17px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.preview-stats b { display:block; font-size:28px; }
.preview-stats span { color:var(--muted); font-size:12px; }
.preview-columns { display:grid; grid-template-columns:repeat(3,1fr); border-left:1px solid var(--line); }
.preview-columns article { min-width:0; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.preview-columns h3 { margin:0; padding:15px; border-bottom:1px solid var(--line); }
.preview-columns article>div { max-height:240px; overflow:auto; }
.preview-item { padding:11px 15px; border-bottom:1px solid var(--line); }
.preview-item:last-child { border-bottom:0; }
.preview-item b,.preview-item small { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.preview-item small { margin-top:4px; color:var(--muted); }
.preview-actions { padding-top:20px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.preview-actions p { margin:0; color:var(--muted); }
.order-admin-title { align-items:flex-end; }
.order-admin-actions { display:flex; align-items:center; gap:16px; }
.order-admin-actions span { color:var(--muted); white-space:nowrap; }
.admin-order-table { max-height:520px; border:1px solid var(--ink); background:rgba(255,253,248,.75); }
.admin-order-table-inner { min-width:1600px; }
.admin-order-head,.admin-order-row { display:grid; grid-template-columns:175px 150px 125px minmax(270px,1.3fr) 75px 115px minmax(260px,1.1fr) 205px 180px; gap:12px; align-items:center; }
.admin-order-head { position:sticky; z-index:2; top:0; min-height:48px; padding:0 15px; color:var(--muted); border-bottom:1px solid var(--line); background:var(--surface); font-size:13px; }
.admin-order-head>span:last-child,.admin-order-row>div:last-child { position:sticky; right:0; z-index:1; background:var(--surface); box-shadow:-10px 0 16px rgba(37,31,23,.06); }
.admin-order-head>span:last-child { align-self:stretch; display:flex; align-items:center; }
.admin-order-date { position:sticky; z-index:1; top:48px; min-height:42px; padding:0 15px; display:flex; align-items:center; justify-content:space-between; color:#60472f; border-bottom:1px solid rgba(128,91,55,.28); background:#eee2d0; }
.admin-order-date span { font-size:12px; }
.admin-order-date-group+.admin-order-date-group { border-top:1px solid var(--ink); }
.admin-order-row { min-height:70px; padding:10px 15px; border-bottom:1px solid var(--line); }
.admin-order-row:last-child { border-bottom:0; }
.admin-order-time,.admin-order-customer,.admin-order-owner { min-width:0; }
.admin-order-time b,.admin-order-time small,.admin-order-customer b,.admin-order-customer small,.admin-order-owner b,.admin-order-owner small { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.admin-order-time small,.admin-order-customer small,.admin-order-owner small { margin-top:5px; color:var(--muted); }
.admin-order-items,.admin-order-address { min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.admin-order-location { min-width:0; }
.admin-order-location b,.admin-order-location small { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.admin-order-location small { margin-top:5px; color:var(--muted); }
.order-outcome { display:grid; gap:7px; }
.order-outcome>b { color:var(--olive); font-size:12px; }
.order-outcome>span { display:flex; gap:6px; }
.order-outcome button { min-height:32px; padding:0 9px; border:1px solid var(--line); background:transparent; font-size:12px; }
.order-outcome button[data-order-outcome="已开单"] { color:var(--olive); border-color:rgba(111,117,79,.5); }
.order-outcome button[data-order-outcome="未开单"] { color:var(--danger); border-color:rgba(153,66,54,.42); }
.order-outcome button:hover { color:#fff; background:var(--ink); }
.order-outcome button:disabled { cursor:not-allowed; opacity:.42; }
.admin-order-row.is-restored,.admin-order-row.is-restored b,.admin-order-row.is-restored small { color:var(--danger); }
.admin-order-row.is-restored .order-outcome>b { color:var(--danger); }
.admin-order-empty { min-height:150px; display:grid; place-items:center; color:var(--muted); }
.deleted-admin-title { align-items:flex-end; }
.deleted-admin-title>span { color:var(--muted); white-space:nowrap; }
.admin-deleted-table { max-height:400px; border:1px solid var(--ink); background:rgba(255,253,248,.75); }
.admin-deleted-table-inner { min-width:1320px; }
.admin-deleted-head,.admin-deleted-row { display:grid; grid-template-columns:175px 150px 125px minmax(260px,1.2fr) minmax(250px,1fr) 190px 80px; gap:12px; align-items:center; }
.admin-deleted-head { position:sticky; z-index:2; top:0; min-height:48px; padding:0 15px; color:var(--muted); border-bottom:1px solid var(--line); background:var(--surface); font-size:13px; }
.admin-deleted-head>span:last-child,.admin-deleted-row>div:last-child { position:sticky; right:0; z-index:1; background:var(--surface); box-shadow:-10px 0 16px rgba(37,31,23,.06); }
.admin-deleted-head>span:last-child { align-self:stretch; display:flex; align-items:center; }
.admin-deleted-row { min-height:72px; padding:10px 15px; border-bottom:1px solid var(--line); }
.admin-deleted-row:last-child { border-bottom:0; }
.admin-deleted-time b,.admin-deleted-time small { display:block; }
.admin-deleted-time small { margin-top:5px; color:var(--muted); }
.order-restore { min-height:36px; padding:0 10px; display:inline-flex; align-items:center; justify-content:center; gap:5px; color:var(--olive); border:1px solid rgba(111,117,79,.5); background:transparent; }
.order-restore:hover { color:#fff; background:var(--olive); }
.order-restore:disabled { cursor:not-allowed; opacity:.5; }
.ip-admin-title { align-items:flex-end; }
.ip-stat-grid { margin-bottom:22px; display:grid; grid-template-columns:repeat(4,1fr); border:1px solid var(--line); background:rgba(255,253,248,.75); }
.ip-stat-grid article { min-width:0; padding:20px; border-right:1px solid var(--line); }
.ip-stat-grid article:last-child { border-right:0; }
.ip-stat-grid span { display:block; color:var(--muted); }
.ip-stat-grid strong { margin-top:8px; display:block; overflow:hidden; font-size:26px; white-space:nowrap; text-overflow:ellipsis; }
.ip-stat-grid article:last-child strong { font-size:16px; line-height:1.5; white-space:normal; }
.ip-tree-card { max-height:480px; padding:26px 30px; border:1px solid var(--ink); background:rgba(255,253,248,.75); }
.ip-tree-root,.ip-tree-root ul { margin:0; padding:0; list-style:none; }
.ip-tree-root ul { position:relative; margin-left:22px; padding-left:28px; }
.ip-tree-root ul::before { content:""; position:absolute; top:0; bottom:18px; left:7px; border-left:1px solid var(--line); }
.ip-tree-root li { position:relative; margin:10px 0; }
.ip-tree-root ul>li::before { content:""; position:absolute; top:20px; left:-21px; width:21px; border-top:1px solid var(--line); }
.ip-tree-node { min-height:40px; padding:8px 12px; display:flex; align-items:center; justify-content:space-between; gap:20px; border:1px solid var(--line); background:var(--surface); }
summary.ip-tree-node { cursor:pointer; }
.ip-tree-node span { overflow-wrap:anywhere; }
.ip-tree-node b { color:var(--olive); font-size:12px; white-space:nowrap; }
.ip-tree-leaf { color:#fff; border-color:var(--ink); background:var(--ink); }
.ip-tree-leaf b { color:#f3dfb8; }
.product-admin-title { align-items:flex-end; }
.admin-filters { display:flex; gap:10px; }
.admin-filters label { display:grid; gap:6px; color:var(--muted); font-size:12px; }
.admin-filters input { min-width:240px; }
.admin-product-table { max-height:520px; border:1px solid var(--ink); background:rgba(255,253,248,.75); }
.admin-product-head,.admin-row { min-width:1180px; display:grid; grid-template-columns:minmax(240px,1.15fr) 155px 110px 90px minmax(340px,1.35fr) 76px; gap:12px; align-items:center; }
.admin-product-head { position:sticky; z-index:2; top:0; min-height:48px; padding:0 15px; color:var(--muted); border-bottom:1px solid var(--line); background:var(--surface); font-size:13px; }
#adminProductList { overflow:visible; }
.admin-row { min-height:76px; padding:10px 15px; border-bottom:1px solid var(--line); }
.admin-row:last-child { border-bottom:0; }
.admin-row-name { min-width:0; }
.admin-row-name b,.admin-row-name small { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.admin-row-name small { margin-top:5px; color:var(--muted); }
.admin-row label { display:flex; align-items:center; gap:7px; font-size:13px; }
.admin-description-field { position:relative; min-width:0; }
.admin-description-field textarea { width:100%; min-height:74px; padding:9px 40px 9px 10px; resize:vertical; color:var(--ink); border:1px solid var(--line); background:var(--surface); line-height:1.5; }
.admin-description-field small { position:absolute; right:7px; bottom:6px; color:var(--muted); font-size:10px; }
.admin-row button { min-height:40px; border:1px solid var(--ink); background:transparent; }
.admin-row button:hover { color:#fff; background:var(--ink); }
.staff-editor-grid { max-height:620px; padding-right:4px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.staff-editor-card { position:relative; padding:24px; display:grid; grid-template-columns:1fr 1fr; gap:18px; overflow:hidden; border:1px solid var(--line); background:rgba(255,253,248,.78); }
.staff-editor-number { position:absolute; top:-13px; right:10px; color:rgba(128,91,55,.1); font-size:86px; line-height:1; pointer-events:none; }
.staff-editor-card label { position:relative; z-index:1; display:grid; gap:8px; }
.staff-editor-card label:last-child { grid-column:1/-1; }
.staff-editor-card input,.staff-editor-card textarea { width:100%; padding:11px 12px; color:var(--ink); border:1px solid var(--line); background:var(--surface); outline:0; }
.staff-editor-card textarea { min-height:210px; resize:vertical; line-height:1.7; }
.staff-editor-card input:focus,.staff-editor-card textarea:focus { border-color:var(--ink); }
.staff-save-bar { margin-top:18px; padding:18px 20px; display:flex; align-items:center; justify-content:space-between; gap:18px; border:1px solid var(--line); background:var(--wood-wash); }
.staff-save-bar p { margin:0; color:var(--muted); }
.staff-order-tabs { margin-bottom:16px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.staff-order-tabs button { min-height:54px; padding:8px 12px; display:flex; align-items:center; justify-content:space-between; gap:8px; color:var(--muted); border:1px solid var(--line); background:var(--surface); }
.staff-order-tabs button b { min-width:25px; height:25px; display:grid; place-items:center; color:var(--ink); border-radius:50%; background:var(--soft); font-size:12px; }
.staff-order-tabs button.is-active { color:#fff; border-color:var(--ink); background:var(--ink); }
.staff-order-tabs button.is-active b { background:#fff; }
.image-management-title { align-items:flex-end; }
.image-management-title>span { color:var(--muted); font-size:13px; }
.image-manager-layout { display:grid; grid-template-columns:minmax(270px,340px) minmax(0,1fr); gap:20px; align-items:start; }
.image-manager-selector,.image-preview-panel { border:1px solid var(--ink); background:rgba(255,253,248,.78); }
.image-mode-tabs { padding:12px; display:grid; grid-template-columns:1fr 1fr; gap:8px; border-bottom:1px solid var(--line); }
.image-mode-tabs button { min-height:46px; display:flex; align-items:center; justify-content:center; gap:7px; color:var(--muted); border:1px solid var(--line); background:var(--surface); }
.image-mode-tabs button.is-active { color:#fff; border-color:var(--ink); background:var(--ink); }
.image-target-search { padding:12px; display:grid; gap:7px; color:var(--muted); border-bottom:1px solid var(--line); font-size:12px; }
.image-target-search[hidden] { display:none; }
.image-target-search input { width:100%; padding:10px 11px; border:1px solid var(--line); background:var(--surface); }
.image-target-list { max-height:460px; display:grid; align-content:start; }
.image-target-item { width:100%; min-height:70px; padding:10px 12px; display:grid; grid-template-columns:54px minmax(0,1fr) 16px; align-items:center; gap:11px; color:var(--ink); border:0; border-bottom:1px solid var(--line); background:transparent; text-align:left; }
.image-target-item:last-child { border-bottom:0; }
.image-target-item:hover,.image-target-item.is-active { background:var(--wood-wash); }
.image-target-item.is-active { box-shadow:inset 4px 0 0 var(--wood-dark); }
.image-target-item img { width:54px; height:48px; object-fit:cover; border:1px solid var(--line); background:var(--soft); }
.image-target-item span { min-width:0; display:grid; gap:4px; }
.image-target-item b,.image-target-item small { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.image-target-item small { color:var(--muted); font-size:11px; }
.image-target-item>i { color:var(--muted); }
.image-preview-panel { padding:20px; display:grid; gap:16px; }
.image-preview-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }
.image-preview-heading small,.image-preview-heading span { color:var(--muted); font-size:11px; }
.image-preview-heading h3 { margin:5px 0 0; font-size:22px; }
.image-preview-heading>span { max-width:190px; padding:6px 9px; border:1px solid var(--line); background:var(--wood-wash); text-align:center; }
.image-frontend-preview { min-height:250px; padding:22px; display:grid; place-items:center; overflow:hidden; border:1px solid var(--line); background:var(--soft); }
.image-preview-product-card { width:min(520px,100%); padding:15px; display:grid; grid-template-columns:150px minmax(0,1fr); gap:16px; align-items:center; border:1px solid var(--line); background:var(--surface); box-shadow:0 12px 28px rgba(37,31,23,.1); }
.image-preview-product-card img { width:150px; height:132px; object-fit:cover; background:var(--wood-wash); }
.image-preview-product-card div { min-width:0; }
.image-preview-product-card small { color:var(--olive); }
.image-preview-product-card h4 { margin:7px 0; overflow:hidden; font-size:21px; white-space:nowrap; text-overflow:ellipsis; }
.image-preview-product-card p { margin:0 0 14px; color:var(--muted); }
.image-preview-product-card strong { color:var(--wood-dark); font-size:22px; }
.image-preview-home { width:min(620px,100%); min-height:220px; padding:18px; display:grid; grid-template-columns:minmax(0,1fr) 46%; gap:18px; align-items:center; border:1px solid var(--line); background:var(--surface); box-shadow:0 12px 28px rgba(37,31,23,.1); }
.image-preview-home img { width:100%; height:190px; object-fit:cover; }
.image-preview-home small { color:var(--olive); letter-spacing:.08em; }
.image-preview-home h4 { margin:8px 0; font-size:24px; line-height:1.25; }
.image-preview-home p { margin:0; color:var(--muted); line-height:1.6; }
.image-preview-warehouse { grid-template-columns:minmax(0,1fr) 52%; }
.image-file-picker { display:block; cursor:pointer; }
.image-file-picker input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.image-file-picker>span { min-height:72px; padding:14px 16px; display:grid; grid-template-columns:38px minmax(0,1fr); align-items:center; gap:2px 12px; border:1px dashed var(--wood-dark); background:var(--wood-wash); }
.image-file-picker i { grid-row:1/3; width:38px; height:38px; display:grid; place-items:center; color:#fff; border-radius:50%; background:var(--wood-dark); font-size:20px; }
.image-file-picker b { align-self:end; }
.image-file-picker small { align-self:start; overflow:hidden; color:var(--muted); white-space:nowrap; text-overflow:ellipsis; }
.image-preview-actions { display:flex; justify-content:flex-end; gap:10px; }
.image-preview-actions button { min-height:46px; padding:0 18px; border:1px solid var(--ink); background:transparent; }
.image-preview-actions .admin-primary { color:#fff; background:var(--ink); }
.image-preview-actions button:disabled { cursor:not-allowed; opacity:.45; }
@media (max-width:950px) {
  .portal-view,.login-view { grid-template-columns:1fr; gap:30px; padding:50px 0; }
  .portal-view>.admin-brand strong,.login-view>.admin-brand strong { font-size:60px; }
  .admin-shell { grid-template-columns:1fr; }
  .admin-nav { position:static; height:auto; padding:18px 0; flex-direction:row; overflow:auto; border-right:0; border-bottom:1px solid var(--line); }
  .stat-grid { grid-template-columns:repeat(2,1fr); }
  .analytics-stat-grid { grid-template-columns:repeat(2,1fr); }
  .analytics-stat-grid article { border-bottom:1px solid var(--line); }
  .analytics-columns { grid-template-columns:1fr; }
  .announcement-admin-title { align-items:stretch; flex-direction:column; }
  .announcement-admin-layout { grid-template-columns:1fr; }
  .announcement-admin-records { overflow:auto; }
  .analytics-columns>article { border-right:0; border-bottom:1px solid var(--line); }
  .preview-columns { grid-template-columns:1fr; }
  .order-admin-title { align-items:stretch; flex-direction:column; }
  .deleted-admin-title { align-items:stretch; flex-direction:column; }
  .ip-admin-title { align-items:stretch; flex-direction:column; }
  .product-admin-title { align-items:stretch; flex-direction:column; }
  .staff-settings-title { align-items:stretch; flex-direction:column; }
  .staff-editor-grid { grid-template-columns:1fr; }
  .staff-order-tabs { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .image-management-title { align-items:stretch; flex-direction:column; }
  .image-manager-layout { grid-template-columns:1fr; }
  .image-target-list { max-height:330px; }
}
@media (max-width:680px) {
  .admin-header { padding:14px 16px; }
  .admin-header .admin-brand small,.admin-header a { display:none; }
  .admin-shell { width:calc(100% - 32px); }
  .admin-title h1 { font-size:46px; }
  .stat-grid,.import-grid,.preview-stats { grid-template-columns:1fr 1fr; }
  .ip-stat-grid { grid-template-columns:1fr 1fr; }
  .ip-stat-grid article:nth-child(2) { border-right:0; }
  .ip-stat-grid article:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .ip-tree-card { padding:18px 14px; }
  .announcement-form { padding:22px 18px; }
  .announcement-link-fields { grid-template-columns:1fr; }
  .announcement-record-heading { align-items:flex-start; flex-direction:column; }
  .announcement-deleted-panel { overflow:auto; }
  .admin-announcement-deleted { min-width:620px; }
  .admin-filters { flex-direction:column; }
  .order-admin-actions { align-items:stretch; flex-direction:column; }
  .admin-filters input { min-width:0; }
  .admin-product-head { display:none; }
  .analytics-stat-grid { grid-template-columns:1fr 1fr; }
  .portal-card,.login-card { padding:28px 22px; }
  .portal-card h1,.login-card h1 { font-size:39px; }
  .staff-editor-card { padding:20px 16px; grid-template-columns:1fr; }
  .staff-editor-card label:last-child { grid-column:auto; }
  .staff-save-bar { align-items:stretch; flex-direction:column; }
  .staff-order-tabs { grid-template-columns:1fr 1fr; }
  .image-preview-panel { padding:16px; }
  .image-preview-heading { flex-direction:column; }
  .image-preview-heading>span { max-width:none; }
  .image-frontend-preview { min-height:220px; padding:12px; }
  .image-preview-product-card { grid-template-columns:100px minmax(0,1fr); gap:12px; }
  .image-preview-product-card img { width:100px; height:100px; }
  .image-preview-home { grid-template-columns:1fr; }
  .image-preview-home img { height:170px; }
  .image-preview-actions { flex-direction:column; }
  .image-preview-actions button { width:100%; }
}

/* 安全操作记录：用时间线展示角色、结果、对象和脱敏网段。 */
.security-audit-list { max-height:430px; display:grid; border:1px solid var(--line); border-radius:14px; background:#fff; }
.security-audit-row { display:grid; grid-template-columns:170px minmax(0,1fr) 130px; gap:18px; align-items:start; padding:15px 18px; border-bottom:1px solid var(--line); }
.security-audit-row:last-child { border-bottom:0; }
.security-audit-row time,.security-audit-row code { font-size:12px; color:var(--muted); }
.security-audit-row code { text-align:right; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; }
.security-audit-row div { display:grid; gap:3px; }
.security-audit-row b { font-size:14px; }
.security-audit-row span,.security-audit-row small { color:var(--muted); font-size:12px; }
.security-audit-row.is-failure { background:#fff7f5; }
.security-audit-row.is-failure b { color:#a23b2b; }

@media (max-width:720px) {
  #analyticsSources,#analyticsSearches,#analyticsProducts { max-height:220px; }
  .security-audit-list,#announcementActiveList,.ip-tree-card,.admin-order-table,.admin-product-table,.image-target-list { max-height:58vh; }
  #announcementDeletedList,.admin-deleted-table { max-height:46vh; }
  .staff-editor-grid { max-height:62vh; }
  .security-audit-row { grid-template-columns:1fr; gap:6px; }
  .security-audit-row code { text-align:left; }
}

/* 员工登录后的本人选择。 */
.staff-identity-view { min-height:100vh; width:min(1080px,calc(100% - 40px)); margin:auto; display:grid; grid-template-columns:1fr 540px; align-items:center; gap:90px; }
.staff-identity-view>.admin-brand strong { font-size:clamp(50px,7vw,92px); }
.staff-identity-card { padding:42px; border:1px solid var(--ink); background:rgba(255,253,248,.96); box-shadow:var(--shadow); }
.staff-identity-card h1 { margin:5px 0 12px; font-size:42px; }
.staff-identity-card>p:not(.kicker) { color:var(--muted); line-height:1.7; }
.staff-identity-options { margin:26px 0 18px; display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.staff-identity-option { min-height:92px; padding:16px; display:flex; align-items:center; gap:13px; color:var(--ink); border:1px solid var(--line); background:var(--surface); text-align:left; }
.staff-identity-option:hover,.staff-identity-option:focus-visible { border-color:var(--ink); background:var(--soft); }
.staff-identity-option i { width:38px; height:38px; display:grid; place-items:center; color:#fff; border-radius:50%; background:var(--ink); font-size:20px; }
.staff-identity-option span { display:grid; gap:3px; }
.staff-identity-option b { font-size:18px; }
.staff-identity-option small { color:var(--muted); }
.current-staff-badge { padding:7px 11px; color:#285f1e; border:1px solid #8bcf70; border-radius:999px; background:#efffe9; font-size:13px; font-weight:700; }
.staff-admin-body .staff-order-tabs { grid-template-columns:repeat(2,minmax(0,1fr)); }

/* 本人新订单无声提醒：右下角弹窗短暂提示，底部荧光状态条持续到查看。 */
.staff-new-order-popup[hidden],.staff-new-order-bar[hidden] { display:none; }
.staff-new-order-popup { position:fixed; right:24px; bottom:112px; z-index:80; width:min(360px,calc(100% - 32px)); padding:17px 18px; display:grid; grid-template-columns:42px minmax(0,1fr) auto; align-items:center; gap:12px; color:#082b00; border:2px solid #32ef00; border-radius:16px; background:#dfffce; box-shadow:0 16px 45px rgba(44,255,0,.28); }
.staff-new-order-popup>i { width:42px; height:42px; display:grid; place-items:center; border-radius:50%; background:#48ff13; font-size:23px; }
.staff-new-order-popup div { display:grid; gap:3px; }
.staff-new-order-popup span { color:#35612c; font-size:12px; }
.staff-new-order-popup button,.staff-new-order-bar button { padding:9px 13px; color:#fff; border:0; border-radius:999px; background:#123d0a; font-weight:700; }
.staff-new-order-bar { position:fixed; left:50%; bottom:16px; z-index:79; width:min(860px,calc(100% - 32px)); min-height:74px; padding:12px 18px; display:grid; grid-template-columns:22px minmax(0,1fr) auto; align-items:center; gap:14px; color:#072c00; border:2px solid #33ff00; border-radius:18px; background:#91ff62; box-shadow:0 0 18px rgba(43,255,0,.75),0 16px 45px rgba(24,93,6,.28); transform:translateX(-50%); animation:staff-order-glow 1.35s ease-in-out infinite alternate; }
.staff-new-order-dot { width:16px; height:16px; border-radius:50%; background:#0f6f00; box-shadow:0 0 0 6px rgba(255,255,255,.45); }
.staff-new-order-bar div { display:grid; gap:2px; }
.staff-new-order-bar b { font-size:17px; }
.staff-new-order-bar small { color:#25581a; }
@keyframes staff-order-glow {
  from { background:#86ff54; box-shadow:0 0 12px rgba(43,255,0,.55),0 12px 35px rgba(24,93,6,.22); }
  to { background:#c4ff9e; box-shadow:0 0 32px rgba(43,255,0,.95),0 18px 48px rgba(24,93,6,.35); }
}
@media (prefers-reduced-motion:reduce) {
  .staff-new-order-bar { animation:none; }
}
@media (max-width:760px) {
  .staff-identity-view { grid-template-columns:1fr; gap:28px; padding:36px 0; }
  .staff-identity-view>.admin-brand strong { font-size:48px; }
  .staff-identity-card { padding:28px 20px; }
  .staff-identity-options { grid-template-columns:1fr; }
  .current-staff-badge { display:none; }
  .staff-new-order-popup { right:16px; bottom:116px; }
  .staff-new-order-bar { bottom:10px; grid-template-columns:18px minmax(0,1fr); }
  .staff-new-order-bar button { grid-column:1/-1; width:100%; }
}
