/* Additions on top of the original site's styles.css (kept verbatim). */
.account-slot .badge{padding:2px 7px}
.pricing-controls .rule-note{font-size:12px;color:#657184;line-height:1.75}
.pricing-controls small{font-size:12px}
.pokemon-results[hidden]{display:none}
.search-field .pokemon-search-status{margin:0}
.valuation .price.range{font-size:clamp(26px,3.4vw,44px)}
.valuation .notes{margin:0 0 18px;padding-left:18px;color:#bdc9d9;font-size:13px;line-height:1.7}
.evidence td .note-text{display:block;font-size:13px;line-height:1.7}
.stub{padding:28px;margin:0 0 24px}
.stub h2{margin:6px 0 12px}
.stub ul{font-size:14px;line-height:1.9;color:#515e73}
.data-flag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:4px;background:#eef0f5;color:#656d7b;margin-left:6px}
.report-grid label{font-size:13px}
.report-result{font-size:13px}
.report-result.error{color:#9a2937}
.report-result.ok{color:#286354}
.forex input{width:194px}

/* ---- admin additions ---- */
.login-panel{max-width:560px;margin:60px auto}
.admin-view .page-heading{min-height:0;margin-bottom:22px}
.admin-view .admin-section+.admin-section{margin-top:20px}
.badge.flag{background:#fde8e6;color:#9a2937}
.badge.pending{background:#fff0d5;color:#885b12}
.badge.approved{background:#e4f2ef;color:#286354}
.badge.rejected,.badge.revoked{background:#eef0f5;color:#656d7b}
.admin-toolbar{margin:4px 0 18px}
.admin-toolbar .grow{flex:1;min-width:220px}
.status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.status-tabs button{background:#fff;border:1px solid #d5deea;border-radius:8px;padding:9px 16px;color:#52627a;font-size:13px}
.status-tabs button[aria-selected="true"]{background:#20334b;color:#fff;border-color:#20334b}
.admin-view table td{padding:13px 12px;font-size:13px}
.admin-view table td:first-child{min-width:140px}
.admin-view table td:last-child{min-width:180px;max-width:360px}
.admin-view .data-preview td{padding:8px 10px}
.row-ok{color:#286354}.row-bad{color:#9a2937}
.admin-msg{font-size:13px;margin:10px 0;min-height:20px}
.admin-msg.ok{color:#286354}.admin-msg.error{color:#9a2937;white-space:pre-wrap}
.lead{border-bottom:1px solid #e1e5eb;padding:16px 0;display:grid;grid-template-columns:1fr auto;gap:8px 18px}
.lead h3{font-size:15px;margin:0}
.lead p{font-size:13px;color:#5d687a;margin:4px 0;overflow-wrap:anywhere}
.lead small{color:#748095;font-size:12px}
.lead .actions{display:flex;align-items:flex-start}
.lead .actions button,.small-button{padding:8px 13px;border:1px solid #ccd7bc;border-radius:7px;background:#eff4e4;color:#304921;font-size:13px}
.danger-button{padding:10px 18px;border:1px solid #c9a3a8;border-radius:7px;background:#fff;color:#9a2937;font-size:14px}
.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.settings-grid label{font-size:13px}
.chip-list{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.chip-list button{border:1px solid var(--line);background:#ecf2db;border-radius:5px;padding:6px 11px;font-size:13px}
.chip-list button:hover{background:#f6dede;text-decoration:line-through}
.individual-row{display:grid;grid-template-columns:1.1fr 1.6fr .8fr .9fr;gap:10px;padding:16px;border:1px solid #e0e5ed;border-radius:10px;background:#f7f9fc;margin-bottom:12px}
.individual-row label{font-size:12px;gap:4px}
.individual-row .row-tools{display:flex;align-items:end;justify-content:flex-end}
.sticky-save{position:sticky;bottom:0;background:#fff;border-top:1px solid #e1e5eb;padding:14px 0 4px;margin-top:20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.batch-line{font-size:13px;padding:6px 0}
.batch-line small{color:#748095;margin-left:6px}
.review-card .meta{font-size:12px;color:#748095;margin-top:8px}
.review-card .spec{font-size:13px;color:#515e73;margin:6px 0}
.review-card .review-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-top:12px}
.review-card .review-actions label{font-size:12px;min-width:180px}
.member-row .role-badge{margin-left:8px}
@media(max-width:900px){.settings-grid{grid-template-columns:1fr 1fr}.individual-row{grid-template-columns:1fr 1fr}.lead{grid-template-columns:1fr}}

/* ---- login ---- */
.auth-page{background:#f4f6fa;min-height:100vh}
html:has(.auth-page){background:#f4f6fa}
.login-panel h1{font-size:32px;letter-spacing:-.8px}
.oauth-buttons{display:flex;flex-direction:column;gap:12px;margin:24px 0 8px}
.oauth-button{display:flex;align-items:center;gap:12px;height:44px;padding:0 14px;border-radius:7px;text-decoration:none;font:500 15px/1 Roboto,Inter,"Noto Sans TC",system-ui,sans-serif;border:1px solid transparent;transition:filter .15s}
.oauth-button:hover{filter:brightness(.94)}
.oauth-button .oauth-logo{display:grid;place-items:center;width:24px;height:24px;flex:none}
.oauth-button>span:last-child{flex:1;text-align:center;padding-right:36px}
.oauth-google{background:#fff;color:#1f1f1f;border-color:#747775}
.oauth-line{background:#06c755;color:#fff}
.oauth-line .oauth-logo{border-right:1px solid rgba(0,0,0,.08);width:34px;padding-right:10px;margin-right:2px}
.oauth-line:hover{filter:none;background:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1)),#06c755}
.oauth-facebook{background:#0866ff;color:#fff}
.oauth-button[aria-disabled="true"]{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
.oauth-hint{font-size:12px;color:#8a5a14;margin:-6px 0 4px}
.login-foot{margin-top:18px;font-size:12px;line-height:1.8}
.account-slot .avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;border:1px solid #dce1e8;background:#eef0f5}
.account-slot .avatar.initial{display:inline-grid;place-items:center;font-size:12px;font-weight:700;color:#465d2d;background:#edf3df}
.link-button{border:0;background:none;padding:0;font:inherit;font-size:inherit;color:inherit;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.account-slot form{display:inline;margin:0}
.id-box{font:13px/1.6 ui-monospace,monospace;background:#f5f7fa;border:1px solid #e1e5eb;border-radius:8px;padding:10px 12px;overflow-wrap:anywhere}
/* costume reasoning in the valuation panel */
.costume-reason{margin:10px 0 4px;padding:10px 12px;border-radius:8px;background:rgba(255,255,255,.08);font-size:13px;line-height:1.5}
.costume-reason b{font-weight:700}
.costume-reason small{display:block;opacity:.75;margin-top:4px}
.costume-chip{display:inline-block;padding:1px 7px;border-radius:999px;background:#f4c542;color:#1d2433;font-size:11px;font-weight:700;vertical-align:1px}
.costume-reason details{margin-top:6px}
.costume-reason summary{cursor:pointer;opacity:.85}
.costume-reason ol{margin:6px 0 0 18px;padding:0}
.costume-defaults{font-size:12px;color:#7a6a3a;margin-left:4px}
.costume-preview{width:100%;border-collapse:collapse;font-size:13px;margin-top:10px}
.costume-preview th,.costume-preview td{border-bottom:1px solid #e6e9ef;padding:6px 8px;text-align:left}
.costume-preview td.num{text-align:right;font-variant-numeric:tabular-nums}
.costume-reason details{border-top:0;padding:4px 0 0}.costume-reason summary{font-weight:500;font-size:13px}

/* ---- 起源＋特招 breakdown ---- */
.og-chip{background:#7ad3ff}
.og-formula{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:14px}
.og-formula span{display:inline-flex;flex-direction:column;align-items:center;padding:4px 8px;border-radius:6px;background:rgba(255,255,255,.1);min-width:54px}
.og-formula span b{font-size:15px}
.og-formula span small{display:block;margin:0;font-size:11px;opacity:.8}
.origin-table input{width:100%}
.origin-table td,.origin-table th{padding:4px 6px;vertical-align:middle}

/* ---- 背卡目錄 ---- */
.background-card .background-pokemon{list-style:none;padding-left:0}
.background-card .background-pokemon li{display:flex;align-items:center;gap:6px;font-size:13px;line-height:1.5;padding:2px 0}
.background-card .background-pokemon img{width:32px;height:32px;flex:none;image-rendering:pixelated}
.background-catalog .admin-inline{display:flex;gap:12px;margin-top:20px}
.background-catalog .admin-inline button{padding:10px 15px;background:#fff;border:1px solid #dce2eb;border-radius:7px;font-size:13px}

/* ---- 價格試算：背卡 × 寶可夢 提醒 ---- */
.bg-check{grid-column:1/-1;margin:-4px 0 0;padding:11px 14px;border-radius:8px;font-size:13px;line-height:1.7;border-left:3px solid #c45a66;background:#fde8e6;color:#7d2430}
.bg-check[hidden]{display:none}
.bg-check p{margin:0;font-size:13px}
.bg-check .bg-check-msg{font-weight:700}
.bg-check.info{border-left-color:#8a96a8;background:#eef0f5;color:#4f5b6d}
.bg-check-actions{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:4px!important}
.bg-check .text-button{padding:0;color:inherit;text-decoration:underline;text-underline-offset:3px;font-size:13px}
.bg-check a{font-size:13px}

/* QA 2026-10-02: 390px overflow fixes */
.admin-view code{overflow-wrap:anywhere;word-break:break-all}
@media(max-width:760px){.forex input{width:100%}.forex label{min-width:0}#costume-preview{overflow-x:auto}.costume-preview{min-width:420px}}
/* 2026-10-02 owner decisions: not-yet-released result */
.price.unreleased{font-size:34px;letter-spacing:0;color:#c9d3e0}
/* 申請加入 (ported from the original styles.css) */
.join-view header{max-width:1080px;gap:20px;justify-content:space-between}.join-header-link{font-size:14px}
.join-layout{max-width:1080px;margin:auto;display:grid;grid-template-columns:1fr 1.05fr;gap:64px;align-items:start;padding:48px 24px}
.join-intro h1{font-size:42px;line-height:1.3;margin:20px 0}.join-intro p{font-size:16px;line-height:1.9;color:#53677d}
.join-intro ol{list-style:none;padding:0;display:grid;gap:25px;margin-top:36px}.join-intro li{display:flex;gap:20px;align-items:flex-start;font-size:16px}
.join-intro li>b{font-size:20px;color:#637d2a}.join-intro small{display:block;font-size:14px;color:#637389;margin-top:7px}
.join-panel{padding:30px}.join-panel h2{font-size:24px}.join-panel label{display:grid;gap:9px;font-size:14px;margin:20px 0}
.join-panel input:not([type=checkbox]),.join-panel textarea{width:100%;font-size:16px;border:1px solid #ccd6e2;border-radius:8px;padding:12px;font-family:inherit}
.join-panel .check-line{display:flex;align-items:flex-start;line-height:1.7}.join-panel .primary-button{display:inline-block;padding:13px 20px;border:0}
.join-panel p{font-size:14px;line-height:1.8}.join-panel a{font-size:14px}.join-panel [hidden]{display:none!important}.join-footnote{color:#637389}
.join-panel #join-status,.join-code{padding:18px;border-radius:9px;background:#edf3df;line-height:1.8}.join-code b{font:600 22px ui-monospace,monospace;letter-spacing:2px}.join-code small{display:block;color:#53677d}
.join-check{margin:8px 0 14px}.join-check label{margin:12px 0}.application-reason{white-space:pre-wrap;overflow-wrap:anywhere}.login-join{margin-top:16px;font-size:14px}
@media(max-width:760px){.join-layout{grid-template-columns:1fr;gap:24px;padding:26px 16px}.join-intro h1{font-size:32px}.join-intro ol{gap:14px;margin-top:20px}.join-panel{padding:22px}}
/* admin dialogs, bulk review, role controls (2026-10-02) */
.admin-dialog{border:0;border-radius:14px;padding:26px;max-width:640px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(20,30,50,.35)}
.admin-dialog::backdrop{background:rgba(20,30,50,.45)}.admin-dialog h2{margin:0 0 12px}.admin-dialog label{display:grid;gap:6px;margin:10px 0;font-size:13px}
.admin-dialog .edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px}.admin-dialog .edit-grid .full{grid-column:1/-1}
.bulk-bar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;padding:12px 14px;margin:10px 0;border:1px solid var(--line);border-radius:10px;background:#f8f9fb}
.bulk-bar label{font-size:13px}.bulk-bar .grow{flex:1;min-width:200px}.review-card .pick{display:flex;align-items:center;gap:8px;font-size:13px;color:#566276;margin-bottom:6px}
.review-card .pick input{width:18px;min-height:18px;height:18px}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.row-actions button{font-size:12px;padding:4px 9px}
.nav-count{margin-left:auto;background:#e1ef76;color:#1b263b;border-radius:10px;padding:0 7px;font-size:11px}.nav-count:empty{display:none}
.history-changes{margin:4px 0 0;padding-left:18px;font-size:12px;color:#566276}.history-json{max-height:420px;overflow:auto;background:#0f1a2b;color:#d8e2f0;padding:14px;border-radius:8px;font-size:12px}
.role-note{font-size:12px;color:#677181}.readonly-note{background:#fff5df;border:1px solid #f0d9a8;color:#7a5a17;padding:10px 14px;border-radius:9px;font-size:13px}
@media(max-width:760px){.admin-dialog .edit-grid{grid-template-columns:1fr}}

.login-panel .admin-inline .primary-button{background:#202b3e;color:#fff;border-color:#202b3e;min-height:44px;padding:10px 23px}

/* 全國圖鑑: form / costume / special-move counts */
.dex-extras { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0 2px; }
.dex-extras span { font-size: 11px; line-height: 1.6; padding: 0 6px; border-radius: 999px; background: #eef2e3; color: #3d4a1f; }
.move-count { display: block; margin-top: 4px; font-size: 12px; }

/* 快速查看: recent / preset / popular groups */
.quick-picks { flex-wrap: wrap; row-gap: 8px; }
.quick-picks > span.qp-group { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-right: 6px; color: inherit; font-size: inherit; }
.quick-picks .qp-label { font-size: 11px; color: #6b7280; margin-right: 2px; }
.quick-picks .qp-recent .qp-label { color: #3d6b1f; font-weight: 600; }
.presets.quick-picks button.qp-clear { margin-left: auto; font-size: 12px; border: 0; padding: 4px 6px; text-decoration: underline; }
.presets.quick-picks button.qp-clear:hover { background: none; color: var(--ink); }

/* ---- 市場資料 ---- */
.market-context{margin:10px 0 4px;padding:10px 12px;border-radius:8px;background:rgba(255,255,255,.06);font-size:13px}
.mk-chip{background:#9be38f}
.mk-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.mk-box{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:6px;background:rgba(255,255,255,.08)}
.mk-box span{font-size:12px;opacity:.85}
.mk-box b{font-size:18px}
.mk-box small{font-size:11px;opacity:.8;line-height:1.4}
.mk-box.mk-ask{border-left:3px solid #f4c542}.mk-box.mk-sold{border-left:3px solid #9be38f}
.mk-link{margin-top:8px}
.market-table td.market-title{max-width:420px}
.market-table td.market-title a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.market-table small{display:block}
.tabs.mk-tabs,.mk-tabs{display:flex;gap:6px;margin:10px 0}
.mk-tabs button.active,.mk-filter button.active{background:#1d2433;color:#fff}
.pager{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.pager span{margin:0 8px;font-size:13px}
.mk-filter{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:10px 0}
.mk-filter label{display:flex;flex-direction:column;font-size:13px}
@media (max-width:640px){.mk-grid{grid-template-columns:1fr}}
button.mk-link{background:none;border:0;border-top:1px solid #3b4557;width:100%;font:inherit;color:#f1f5fa;margin-top:10px;text-align:left}
.market-table td:first-child{min-width:96px}.market-table td:last-child{min-width:50px}.market-table td{padding:10px 10px}
.mk-stats>div{display:flex;flex-direction:column;gap:2px;padding:10px;border:1px solid #e6e9ef;border-radius:8px}
.mk-stats b{font-size:18px}
tr.row-excluded td{opacity:.5;text-decoration:line-through}
tr.row-excluded td:last-child{opacity:1;text-decoration:none}
.evidence-tabs{margin:16px 0 4px}.evidence-tabs button{border:1px solid #d8dee7;background:#fff;border-radius:50px;padding:7px 14px}

/* variant prices (背卡 / 形態 / 尺寸 / 招式) listed apart from the plain main number */
.variant-prices{margin:10px 0 4px;padding:10px 12px;border-radius:8px;background:rgba(255,255,255,.06);font-size:13px}
.vr-chip{background:#f4c542;color:#1d2433}
.vr-group{margin-top:10px}
.vr-title{font-weight:600;font-size:13px;margin-bottom:6px}.vr-title small{font-weight:400;opacity:.75;margin-left:4px}
.vr-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.vr-item{width:100%;text-align:left;display:flex;flex-direction:column;gap:1px;padding:7px 9px;border-radius:6px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:inherit;cursor:pointer;font:inherit}
.vr-item:hover:not([disabled]){border-color:#f4c542;background:rgba(244,197,66,.12)}
.vr-item[disabled]{cursor:default;opacity:.8}
.vr-name{font-size:12px;opacity:.9}.vr-item b{font-size:16px}.vr-item small{font-size:11px;opacity:.75;line-height:1.35}
.vr-more summary{cursor:pointer;font-size:12px;opacity:.8;margin:6px 0}
@media (max-width:640px){.vr-list{grid-template-columns:1fr}}

.site-legal{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;border-top:0;margin:0 auto;padding:6px 16px 28px;font-size:13px;color:var(--muted)}.site-legal a{color:var(--muted)}
.legal-page{max-width:820px;margin:40px auto;padding:30px 34px}.legal-page h1{font-size:30px;letter-spacing:-.6px}.legal-page h2{font-size:18px;margin:28px 0 8px}.legal-page p,.legal-page li{font-size:15px;line-height:1.9;color:#33405a}.legal-page ul{padding-left:22px;margin:6px 0}.legal-page .legal-meta{color:var(--muted);font-size:13px}
.bg-show{flex-direction:row;gap:8px;font-size:14px;margin:12px 0 0}.bg-show input{width:auto;min-height:0}
@media(max-width:760px){.legal-page{margin:16px;padding:22px 20px}}
/* round 2 admin: 需補件, revisions, 背卡人工確認 */
.badge.needs_info{background:#fff1d6;color:#7a520d}
.evidence-note.needs-info{background:#fff8e6;border-radius:6px;padding:6px 8px}
.rev-history{border-top:1px solid var(--line);margin-top:8px;padding:8px 0 0}
.rev-history ol{margin:6px 0 0;padding-left:18px;font-size:13px}
.rev-history li small{display:block;color:var(--muted)}
.reason-list{border:0;padding:0;margin:8px 0;display:grid;gap:4px}
.bq-card .spec{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px}
.bq-actions{flex-wrap:wrap}
.bq-card label.grow{flex:1;min-width:220px}
.nature-sold{background:#e3eefb;color:#1f4f86}.nature-ask{background:#fff1d6;color:#7a520d}
.nav-count:empty{display:none}
/* ---- review fixes 2026-10-02: 價格設定分頁、背卡定價、固定儲存列、欄位錯誤 ---- */
.pricing-version{font-size:13px;color:var(--muted)}
.pricing-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:18px 0 0;overflow-x:auto;scrollbar-width:thin}
.pricing-tabs button{border:0;background:none;padding:12px 16px;font-size:14px;color:#586276;border-bottom:3px solid transparent;white-space:nowrap;min-height:44px}
.pricing-tabs button[aria-selected=true]{color:var(--ink);font-weight:700;border-bottom-color:var(--navy)}
.tab-dot{color:#b3261e;margin-left:4px;font-size:10px;vertical-align:top}
#ppanel>.admin-panel:first-child{margin-top:16px}
.pricing-savebar{position:sticky;bottom:0;z-index:20;display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:20px 0 0;box-shadow:0 -4px 18px #15233b14}
.pricing-savebar.dirty{border-color:#d1a336;background:#fffaf0}
.savebar-state{font-size:14px}
.savebar-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.pricing-savebar .admin-msg{margin:0;font-size:13px;flex:1 1 220px}
.field-error{display:block;color:#b3261e;font-size:12px;margin-top:2px}
.field-error:empty{display:none}
[aria-invalid=true]{border-color:#b3261e!important;background:#fff6f5!important}
.field-errors{margin:6px 0;padding-left:18px;color:#b3261e;font-size:13px}
.bgp-scope{background:#f6f8fb;border-radius:10px;padding:12px 16px;margin-bottom:16px}
.bgp-order{margin:6px 0;padding-left:20px;font-size:13px;line-height:1.8}
.bgp-defaults{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 16px}
.bgp-defaults>div{border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.bgp-defaults small{display:block;color:var(--muted);font-size:12px;margin:2px 0 8px}
.bgp-defaults>p{grid-column:1/-1;margin:0}
.bgp-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bgp-unresolved .readonly-note ul{margin:6px 0;padding-left:20px}
.bgp-layout{display:grid;grid-template-columns:minmax(260px,360px) minmax(0,1fr);gap:20px;align-items:start}
.bgp-list-col{position:sticky;top:12px}
.bgp-search{margin-bottom:8px}
.bgp-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.bgp-filters button{border:1px solid var(--line);background:#fff;border-radius:30px;padding:5px 11px;font-size:12px;min-height:34px}
.bgp-filters button[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}
.bgp-list{max-height:62vh;overflow-y:auto;border:1px solid var(--line);border-radius:10px;padding:4px}
.bgp-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 10px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff;padding:8px;align-items:center}
.bgp-item:hover{background:#f6f8fb}.bgp-item.current{background:#eef3ff;box-shadow:inset 3px 0 0 #4674ce}
.bgp-item img,.bgp-noimg{width:44px;height:44px;border-radius:8px;object-fit:cover;background:#eef0f5;grid-row:span 2}
.bgp-noimg{display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted)}.bgp-noimg.big{width:84px;height:84px}
.bgp-item-text b{display:block;font-size:13px;overflow-wrap:anywhere}.bgp-item-text small{display:block;font-size:11px;color:var(--muted)}
.bgp-tags{display:flex;flex-wrap:wrap;gap:4px}.bgp-tags .badge{font-size:11px;padding:2px 6px}
.bgp-card{display:flex;gap:14px;align-items:flex-start}.bgp-card img{border-radius:10px;object-fit:cover;flex:none}.bgp-card h3{margin:0!important}.bgp-card p{margin:2px 0}
.bgp-effective{background:#f6f8fb;border-radius:8px;padding:8px 12px;font-size:13px}
.bgp-empty{border:1px dashed #c9d0db;border-radius:12px;padding:30px;text-align:center;color:var(--muted)}
.bgp-rules{display:grid;gap:12px;margin:12px 0}
.bgp-rule{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff}
.bgp-rule.disabled{opacity:.65}.bgp-rule.has-error{border-color:#b3261e}
.bgp-rule-head{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.bgp-rule-head b{font-size:14px;margin-right:4px;overflow-wrap:anywhere}
.bgp-vals{font-size:13px;margin:6px 0}
.bgp-editor{border-top:1px solid var(--line);margin-top:10px;padding-top:12px;display:grid;gap:12px}
.bgp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.bgp-grid .span2,.bgp-pv-form .span2{grid-column:span 2}
.bgp-modes{display:flex!important;flex-wrap:wrap;gap:6px 18px;align-items:center;background:#f6f8fb;border-radius:10px;padding:10px 12px!important}
.bgp-modes legend{font-weight:700;font-size:13px;padding:0;float:left;width:100%}
.bgp-modes .muted{width:100%;margin:0}
.bgp-shinymode{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:13px}
.bgp-shinymode [data-ratio]{flex-direction:row;align-items:center;gap:6px;flex-wrap:wrap}.bgp-shinymode [data-ratio] input{width:110px}
.bgp-values{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bgp-vals-edit{border:1px solid var(--line)!important;border-radius:10px;padding:10px 12px!important;display:grid;gap:8px}
.bgp-vals-edit legend{font-weight:700;font-size:13px;padding:0 4px}
.check-line{flex-direction:row!important;align-items:center;gap:8px}.check-line input{width:auto;min-height:0}
.bgp-adv summary{font-size:13px}
.bgp-pv-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.bgp-pv-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.bgp-pv-col{border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0}.bgp-pv-col h3{margin:0 0 6px!important;font-size:15px!important}
.bgp-pv-price{font:600 22px/1.4 ui-monospace,monospace;margin:4px 0 8px}
.bgp-trace{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;font-size:12px;margin:0}
.bgp-trace dt{color:var(--muted)}.bgp-trace dd{margin:0;overflow-wrap:anywhere}.bgp-trace ol,.bgp-trace ul{margin:0;padding-left:18px}
.bgp-compat{font-size:13px;border-radius:8px;padding:8px 12px}.bgp-compat.ok{background:#e4f2ef}.bgp-compat.warn{background:#fff0d5}
.bgp-changed{font-weight:700;color:#8a4b00}
.panel-sub{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:12px 0}
@media(max-width:1000px){.bgp-layout{grid-template-columns:1fr}.bgp-list-col{position:static}.bgp-list{max-height:42vh}.bgp-pv-form{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.bgp-defaults,.bgp-values,.bgp-pv-grid{grid-template-columns:1fr}.bgp-grid{grid-template-columns:1fr 1fr}.pricing-savebar{padding:10px 12px;gap:8px}.savebar-actions{margin-left:0;width:100%}.savebar-actions button{flex:1}}
@media(max-width:480px){.bgp-grid,.bgp-pv-form{grid-template-columns:1fr}.bgp-grid .span2,.bgp-pv-form .span2{grid-column:auto}.settings-grid{grid-template-columns:1fr}}
.check-line input{padding:0!important;margin:0;height:18px;width:18px!important;flex:none}
.bgp-modes .check-line,.bgp-shinymode .check-line{min-height:36px}
.pricing-savebar .admin-msg:empty{display:none}
/* review fixes 2026-10-02: 手機底部導覽 查價／圖鑑／回報／我的（管理員後台在右上帳號列） */
.bottom-nav{display:none}
@media(max-width:760px){
  .public-view .bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px #15233b12}
  .bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:52px;font-size:12px;text-decoration:none;color:#586276;border-radius:10px}
  .bottom-nav a span{font-size:17px;line-height:1.1}
  .bottom-nav a[aria-current=page]{color:var(--ink);font-weight:700;background:#eef3d8}
  .public-view{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .share-link{color:#c9d3e2!important}
}
.share-link{display:block;margin-top:8px;color:#b9c5d8;text-decoration:underline;font-size:13px;min-height:40px}
.notice-action{font-weight:700;text-decoration:underline}
@media(max-width:760px){.public-view .sticky-save{bottom:calc(60px + env(safe-area-inset-bottom))}}
.rv-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:14px;margin:10px 0}
.rv-cols>div{border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0}
.rv-cols h4{margin:0 0 6px;font-size:13px;color:var(--muted)}
.rv-fields dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 12px;margin:0;font-size:13px}
.rv-fields dt{color:var(--muted)}.rv-fields dd{margin:0;overflow-wrap:anywhere}
.rv-source a{overflow-wrap:anywhere}
@media(max-width:900px){.rv-cols{grid-template-columns:1fr}}
/* 未確認組合 badge (front end + admin 背卡定價 preview) */
.uc-badge{display:inline-block;font-size:12px;font-weight:700;line-height:1.5;padding:1px 8px;border-radius:999px;background:#fff0d5;color:#7a4b00;border:1px solid #e8b75c;white-space:nowrap;cursor:help;vertical-align:middle}
.bgp-pv-price .uc-badge{margin-left:6px}
.ld-badge{background:#e8f1ff;color:#1d4e89;border-color:#9dbbe6}
.bgp-compat.uc{background:#fff0d5}
.bg-check.uc{border-left-color:#e0a63a;background:#fff0d5;color:#5f3d00}
.build-stale{position:sticky;top:0;z-index:1000;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:center;padding:10px 14px;background:#fff0d5;color:#5f3d00;border-bottom:2px solid #e0a63a;font-size:14px;font-weight:600}
.build-stale .primary-button{padding:6px 14px;font-size:14px}

/* ---- membership phase 1 (2026-10-03): 我的帳號 / 註冊申請 / 會員名單 ---- */
.account-view .join-header-link{margin-left:auto}
.account-badges{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px}.account-badges .badge,.state-badge{font-size:14px;padding:4px 12px}
.account-panel h2{font-size:22px;margin-top:0}.account-panel h3{font-size:17px;margin:26px 0 8px}
.account-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin:16px 0;padding:16px;border:1px solid #e1e5eb;border-radius:9px;background:#fafbfc}
.account-facts div{min-width:0}.account-facts .wide{grid-column:1/-1}.account-facts dt{font-size:12px;color:#637389}.account-facts dd{margin:2px 0 0;font-size:14px;overflow-wrap:anywhere}
.account-callout{padding:14px 16px;border-radius:9px;background:#fff6e2;border:1px solid #f1dfb4;margin:14px 0}.account-callout p{margin:6px 0}
.account-flash{padding:10px 14px;border-radius:8px;background:#e4f2ef}
.account-history{margin:18px 0}.account-history ol{padding-left:20px;font-size:14px;line-height:1.7}.account-history li{margin:6px 0}
.account-logins{padding-left:20px;font-size:14px}.oauth-buttons.compact{max-width:320px;margin:12px 0 6px}
.join-panel .kv{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;margin:18px 0}.join-panel .kv>span:first-child{color:#637389;flex-basis:100%}
.field-error{color:#9a2937;font-size:13px}.join-panel [aria-invalid=true]{border-color:#c4505d!important}
.join-panel button[disabled]{opacity:.6;cursor:progress}
.member-stats,.app-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.chip{border:1px solid #d5dce6;background:#fff;border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;min-height:36px}.chip b{margin-left:4px}
.chip.on{background:#202b3e;color:#fff;border-color:#202b3e}
.member-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.member-toolbar label{display:grid;gap:4px;font-size:12px}.member-toolbar .grow{flex:1 1 220px}
.member-card{display:grid!important;grid-template-columns:1fr auto;gap:8px 16px;align-items:start}
.member-card .member-main{min-width:0}.member-card .member-main small{display:block;margin-top:4px;overflow-wrap:anywhere}
.member-badges{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 2px}.member-badges .role-badge{margin-left:0}
.member-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.member-detail{grid-column:1/-1;border-top:1px dashed #d5dce6;padding-top:12px}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px}.detail-grid h3{font-size:14px;margin:4px 0 8px}
.detail-grid ul{padding-left:18px;margin:0 0 8px;font-size:13px}.detail-grid code{overflow-wrap:anywhere}
.timeline{list-style:none;padding:0;margin:0;font-size:13px;display:grid;gap:8px}.timeline li{border-left:3px solid #d5dce6;padding-left:10px}
.mini-app{font-size:13px;border:1px solid #e1e5eb;border-radius:8px;padding:8px 10px;margin-bottom:8px}.mini-app p{margin:4px 0}
.prov-on,.prov-off{width:auto!important;padding:0 8px;border-radius:4px}.prov-on{background:#e4f2ef;color:#286354}.prov-off{background:#fff0d5;color:#885b12}
.app-card .app-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.app-card .app-head h3{margin:0}
.app-card form label{display:grid;gap:6px;font-size:13px;margin:10px 0}.app-card textarea{width:100%}
.secondary-button.danger{color:#9a2937;border-color:#e8c3c8}
.state-form label{display:grid;gap:6px;font-size:13px}.state-form textarea{width:100%}
@media(max-width:760px){.account-facts{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr}.member-card{grid-template-columns:1fr}.member-actions{justify-content:flex-start}}
/* ---- membership phase 2 (2026-10-03): 會員中心 / 收藏 / 帳號選單 / 公開頁 ---- */
.chip.active{background:#202b3e;color:#fff;border-color:#202b3e}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}
.plan-pill,.state-pill{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;white-space:nowrap}
.plan-pill{background:#eef4d4;color:#3d5414;border:1px solid #d6e3a3}
.state-pill{background:#e4f2ef;color:#286354}
.account-menu{position:relative;border:0;padding:0}
.account-menu>summary{list-style:none;display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:500;flex-wrap:wrap;padding:4px 6px;border-radius:10px}
.account-menu>summary::-webkit-details-marker{display:none}
.account-menu>summary:hover{background:#eef1f5}
.account-menu>summary::after{content:'▾';font-size:11px;color:var(--muted)}
.account-menu .acct-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-menu-list{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px #15233b22;padding:6px;display:flex;flex-direction:column}
.account-menu-list a,.account-menu-list .link-button{display:block;text-align:left;width:100%;padding:10px 12px;border-radius:8px;text-decoration:none;font-size:14px;color:var(--ink);min-height:40px}
.account-menu-list a:hover,.account-menu-list .link-button:hover{background:#f2f4f7}
.account-menu-list form{margin:0;border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
.me-tabs{display:flex;gap:6px;margin:6px 0 18px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.me-tabs a{flex:none;text-decoration:none;padding:9px 16px;border-radius:999px;border:1px solid #d5dce6;background:#fff;font-size:14px;color:#47546a;min-height:40px;display:flex;align-items:center}
.me-tabs a.active{background:#202b3e;border-color:#202b3e;color:#fff;font-weight:600}
.me-panel{margin-bottom:28px}
.me-panel.tab-reports>.page-heading h1{display:none}
.me-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.me-card{padding:20px;display:flex;flex-direction:column;gap:4px;min-width:0}
.me-card strong{font-size:28px;line-height:1.3}
.me-card strong small{font-size:15px;color:var(--muted);font-weight:500}
.me-card p{color:var(--muted);font-size:13px;margin:4px 0}
.me-card a{font-size:13px;font-weight:600;margin-top:auto}
.me-alert{background:#eef4fb;border:1px solid #cfdcee;border-radius:10px;padding:12px 14px;font-size:14px;margin:14px 0}
.me-alert.warn{background:#fff6e6;border-color:#f0d9a8}
.fav-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.fav-head h2{margin:0 0 4px}
.fav-list{display:grid;gap:12px}
.fav-card{padding:18px 20px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 18px;align-items:start}
.fav-card h3{display:inline;font-size:17px;margin:0 8px 0 0;overflow-wrap:anywhere}
.fav-spec{font-size:14px;margin:6px 0 2px;overflow-wrap:anywhere}
.fav-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.fav-actions .primary-button,.fav-actions .secondary-button{min-height:40px;display:inline-flex;align-items:center;text-decoration:none}
.fav-edit{grid-column:1/-1;display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px}
.fav-edit label{flex:1 1 200px}
.text-button.danger,.secondary-button.danger{color:#9a2937}
.secondary-button.danger{background:#fff;border-color:#e3b5bd}
.form-error{color:#9a2937;font-size:13px;min-height:0;margin:6px 0 0}
.form-error:empty{display:none}
.plan-card{padding:24px}
.plan-card h2{font-size:30px;margin:4px 0}
.plain-list{padding-left:20px;line-height:1.9;font-size:14px}
.settings-block{padding:22px 24px;margin-bottom:14px}
.settings-block h2{margin:0 0 10px}
.settings-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.settings-form label{flex:1 1 240px}
.settings-form.stack{flex-direction:column;align-items:stretch}
.settings-form textarea{width:100%;border:1px solid #dce1e8;border-radius:7px;padding:10px;font:inherit;background:#f8f9fb}
.settings-form .check-line{flex-direction:row;align-items:flex-start;gap:8px}
.settings-form .check-line input{width:auto;min-height:0;margin-top:5px}
.link-list{list-style:none;padding:0;margin:0 0 12px}
.link-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.link-list li small{display:block;color:var(--muted);font-size:12px}
.bind-row{display:flex;gap:10px;flex-wrap:wrap}
.bind-row .secondary-button{text-decoration:none;background:#fff;color:var(--ink)}
.settings-block .secondary-button{background:#fff;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;min-height:42px}
.danger-zone{border-color:#efd3d8}
.fav-add{color:var(--lime)!important}
.fav-note{font-size:13px;color:#d8e0ec;margin:6px 0 0}
.fav-note a{color:var(--lime)}
@media(max-width:1000px){.me-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.me-cards{gap:10px}.me-card{padding:14px}.me-card strong{font-size:23px}.fav-head{flex-direction:column}.fav-card{grid-template-columns:1fr;padding:16px}.fav-actions{justify-content:flex-start}.settings-block{padding:18px}.account-menu .acct-name{max-width:110px}.account-menu-list{right:auto;left:0}.public-view .account-slot .plan-pill{display:none}}
/* public pages (/, /about, /guide) */
.public-page{background:#f2f4f7}
.public-header{max-width:1200px;margin:auto;height:auto;min-height:84px;padding:14px 4%;display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.public-header nav{gap:22px}
.public-header nav a[aria-current]{color:var(--ink);font-weight:700}
.public-header nav a:first-child{font-weight:400;color:#586276}
.public-actions{margin-left:auto;display:flex;gap:10px}
.public-actions a{text-decoration:none;min-height:42px;display:inline-flex;align-items:center;padding:8px 18px}
.public-actions .secondary-button{background:#fff;color:var(--ink)}
.public-main{max-width:1100px;padding:30px 4% 10px}
.public-hero{padding:34px 0 26px;max-width:820px}
.public-hero h1{font-size:clamp(30px,4.4vw,48px)}
.public-hero .lead{font-size:17px;color:#4b586c;line-height:1.8}
.public-cta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:20px 0 8px}
.public-cta a{text-decoration:none}
.public-cta .primary-button,.public-cta .secondary-button{min-height:46px;display:inline-flex;align-items:center;padding:10px 22px}
.public-cta .secondary-button{background:#fff;color:var(--ink)}
.text-link{font-weight:600;font-size:14px}
.public-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:10px 0 18px}
.public-cards article{padding:22px}
.public-cards h2{margin-bottom:8px}
.public-cards p{color:#53606f;line-height:1.8}
.public-section,.public-article{padding:26px 28px;margin:0 0 18px}
.public-article{max-width:860px}
.public-article h2{margin:26px 0 8px}
.public-article p,.public-article li{font-size:15px;line-height:1.85;color:#3f4b5e}
.public-steps{counter-reset:s;list-style:none;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.public-steps li{counter-increment:s;border:1px solid var(--line);border-radius:12px;padding:16px;background:#fbfcfd}
.public-steps li::before{content:counter(s);display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--navy);color:var(--lime);font-weight:700;font-size:14px;margin-bottom:8px}
.public-steps b{display:block;font-size:15px}
.public-steps span{display:block;color:var(--muted);font-size:13px;line-height:1.7;margin-top:4px}
.public-article .public-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
.public-list{padding-left:22px}
.public-dl{display:grid;gap:10px;margin:10px 0}
.public-dl div{display:grid;grid-template-columns:130px 1fr;gap:12px;border-bottom:1px solid var(--line);padding:8px 0}
.public-dl dt{font-weight:700}
.public-dl dd{margin:0;color:#4b586c;font-size:14px;line-height:1.8}
.public-footer{max-width:1100px;margin:20px auto 0;padding:22px 4% 30px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:12px}
@media(max-width:800px){.public-cards{grid-template-columns:1fr}.public-steps,.public-article .public-steps{grid-template-columns:1fr}}
@media(max-width:600px){.public-header{gap:12px}.public-header nav{order:3;width:100%;gap:18px;margin:0}.public-actions a{padding:6px 12px;font-size:13px;min-height:38px}.public-hero{padding-top:14px}.public-hero .lead{font-size:15px}.public-section,.public-article{padding:20px}.public-dl div{grid-template-columns:1fr;gap:2px}}
.settings-form.stack label{flex:none}
@media(max-width:600px){.me-tabs{flex-wrap:wrap;overflow:visible}.me-tabs a{padding:7px 13px;font-size:13px;min-height:38px}}

/* ---- membership phase 3: Plus grants ---- */
.plan-pill.is-plus{background:#fff1c9;color:#6b4a00;border-color:#f0cf73}
.plan-card.is-plus{border-color:#f0cf73}
.plan-history{padding:20px 24px;margin-top:14px}
.plan-history h3{margin:0 0 8px}
.plan-history small{color:var(--muted)}
.grant-panel .submit-row{margin:6px 0}
.grant-timeline li{margin-bottom:8px}
.grant-timeline details{margin-top:4px}
.grant-row .member-main small{display:block;overflow-wrap:anywhere}
.admin-dialog select,.admin-dialog input[type=date]{width:100%;min-height:38px}
.admin-dialog label small{display:block;font-weight:400;margin-top:2px}

/* 價格提醒 (membership phase 4) — on-site only */
.alert-badge,.alert-dot{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#c2410c;color:#fff;font-size:11px;font-weight:700;line-height:1;vertical-align:middle}
.alert-badge[hidden],.alert-dot[hidden]{display:none}
.me-tabs a .alert-badge{margin-left:6px}
.me-card strong .alert-badge{font-size:12px;height:22px;position:relative;top:-4px}
.me-card.has-unread{border-color:#f3c7a8;box-shadow:0 0 0 2px #fde6d6}
.me-cards.has5{grid-template-columns:repeat(5,minmax(0,1fr))}
.al-how{font-size:14px;color:#47546a;background:#f6f8fb;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:12px 0}
.al-section{margin-top:22px}
.al-section h3{margin:0 0 10px;font-size:17px}
.al-sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.al-events{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.al-event{padding:14px 18px}
.al-event.is-new{border-color:#f3c7a8;background:#fffaf6}
.al-ev-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.al-ev-top .muted{margin-left:auto;font-size:13px}
.al-ev-cond{margin:6px 0;font-size:14px}
.al-ba{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0}
.al-ba div{background:#f6f8fb;border-radius:8px;padding:8px 12px;min-width:0}
.al-ba dt{font-size:12px;color:var(--muted)}
.al-ba dd{margin:2px 0 0;font-size:16px;font-weight:700;overflow-wrap:anywhere}
.al-ba dd small{display:block;font-size:12px;font-weight:400;color:var(--muted)}
.al-basis{font-size:12.5px;margin:6px 0 0;overflow-wrap:anywhere}
.al-card.is-off{opacity:.78}
.al-cond{font-size:14px;margin:4px 0}
.al-note{font-size:12.5px}
.al-state{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;white-space:nowrap;background:#eef1f5;color:#47546a}
.al-state.ok{background:#e4f2ef;color:#286354}.al-state.met{background:#fdecdc;color:#9a3d0b}.al-state.warn{background:#fff1d6;color:#7a5200}
.al-form{padding:18px 20px;display:grid;grid-template-columns:2fr 1.2fr 1fr 1.4fr auto;gap:12px;align-items:end;margin:10px 0}
.al-form h3,.al-form .al-form-note,.al-form .form-error{grid-column:1/-1;margin:0}
.al-form select{width:100%}
.al-th{display:flex;align-items:center;gap:6px}.al-th input{flex:1;min-width:0}
.al-unit{font-weight:700;color:#47546a;white-space:nowrap}
.al-form-note{font-size:12.5px}
#al-msg.ok{color:#286354}
.alert-add{color:#ffd29a!important}
@media(max-width:1180px){.me-cards.has5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1000px){.me-cards.has5{grid-template-columns:repeat(2,minmax(0,1fr))}.al-form{grid-template-columns:1fr 1fr}.al-form label:first-of-type{grid-column:1/-1}}
@media(max-width:600px){.al-form{grid-template-columns:1fr}.al-ba{grid-template-columns:1fr}.al-event{padding:12px 14px}}
.account-menu>summary{position:relative}
.account-menu .alert-dot{position:absolute;top:-4px;left:18px;min-width:17px;height:17px;padding:0 4px;font-size:10px;box-shadow:0 0 0 2px #fff;z-index:1}
@media(min-width:900px){.account-menu>summary{flex-wrap:nowrap}}

/* ==================================================================================================================
   UI polish v1 (2026-10-03) — design tokens + component refinements for every page that loads app.css
   (member app, admin, public pages, login / register / account). Appended last so it refines the rules above
   without editing them; calculator-only refinements live at the end of calc.css (loaded after this file).
   No external fonts: system stacks only (CSP). Colours checked for WCAG AA on their real backgrounds.
   ================================================================================================================== */
:root{
  --font-sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang TC","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;
  --font-num:"SF Pro Display",-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,"PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;
  --font-mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;
  --c-bg:#f3f5f8;--c-surface:#fff;--c-surface-2:#f7f8fb;--c-surface-3:#eef1f5;
  --c-ink:#1c2638;--c-ink-2:#3a4659;--c-muted:#5b6678;
  --c-line:#e2e6ec;--c-line-2:#cfd6e0;--c-line-3:#a9b4c4;
  --c-navy:#1b263b;--c-navy-2:#24324b;--c-navy-3:#2e3d58;
  --c-lime:#e1ef76;--c-lime-2:#d4e45e;--c-lime-soft:#eef4d6;--c-lime-ink:#3b4f12;
  --c-focus:#2f62cf;--c-danger:#9a2937;--c-ok:#1f6b4f;--c-warn:#7a520d;
  --r-xs:6px;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--r-pill:999px;
  --sh-1:0 1px 2px rgba(17,26,43,.04),0 1px 3px rgba(17,26,43,.05);
  --sh-2:0 1px 2px rgba(17,26,43,.05),0 10px 24px -10px rgba(17,26,43,.16);
  --sh-3:0 20px 48px -12px rgba(17,26,43,.28),0 4px 12px -4px rgba(17,26,43,.10);
  --sh-dark:0 24px 48px -22px rgba(10,17,32,.65),0 2px 6px -2px rgba(10,17,32,.25);
  --dur:.16s;--ease:cubic-bezier(.2,.7,.2,1);
  --header-h:70px;
  /* the original rules read these names */
  --ink:var(--c-ink);--muted:var(--c-muted);--line:var(--c-line);--navy:var(--c-navy);--lime:var(--c-lime);
  font-family:var(--font-sans);color:var(--c-ink);background:var(--c-bg);line-height:1.65;
}
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-kerning:normal;letter-spacing:.01em}
::selection{background:#dfe9a6;color:var(--c-navy)}
h1,h2,h3{text-wrap:balance}
h1{letter-spacing:-.01em;line-height:1.3;font-weight:800}
h2{letter-spacing:0;line-height:1.4;font-weight:750}
h3{line-height:1.45}
p,li{text-wrap:pretty}
code,kbd,pre{font-family:var(--font-mono)}
.eyebrow{letter-spacing:.14em;font-weight:700;color:var(--c-muted)}
.muted{color:var(--c-muted)}
.paged-site,.public-page,.auth-page,html:has(.auth-page){background:var(--c-bg)}

/* ---- focus: one visible ring everywhere; lime on the dark navy surfaces ---- */
:focus-visible,
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,textarea:focus-visible,
.paged-site a:focus-visible,.paged-site button:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible,.paged-site input:focus-visible{outline-offset:1px}
.admin-sidebar :focus-visible,.paged-site .valuation :focus-visible,.paged-site .calc-side :focus-visible{outline-color:var(--c-lime)}

/* ---- site header (member app) ---- */
.public-view>header{height:auto;min-height:var(--header-h);padding-top:10px;padding-bottom:10px;gap:28px;border-bottom:0;
  background:var(--c-surface);box-shadow:0 0 0 100vmax var(--c-surface),0 1px 0 100vmax var(--c-line);clip-path:inset(0 -100vmax -1px)}
@media(min-width:1101px){
  .public-view>header{position:sticky;top:0;z-index:50}
  html:has(.public-view){scroll-padding-top:calc(var(--header-h) + 16px)}
}
.brand{letter-spacing:0}
.brand small{letter-spacing:.16em;color:var(--c-muted);font-weight:700}
.logo{background:linear-gradient(150deg,#26344f 0%,#151e30 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 6px 14px -8px rgba(12,20,36,.6);line-height:1.1}
.public-view header nav{gap:2px;align-items:center}
.public-view header nav a{padding:8px 13px;border-radius:var(--r-pill);font-size:14px;font-weight:500;color:var(--c-ink-2);transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}
.public-view header nav a:first-child{color:var(--c-ink-2);font-weight:500}
.public-view header nav a:hover{background:var(--c-surface-3);color:var(--c-ink)}
.public-view header nav a[aria-current="page"],.public-view header nav a[aria-current="page"]:first-child{background:var(--c-navy);color:var(--c-lime);font-weight:700}
.account-menu>summary{padding:5px 8px;border:1px solid transparent;transition:background-color var(--dur),border-color var(--dur)}
.account-menu>summary:hover,.account-menu[open]>summary{background:var(--c-surface-2);border-color:var(--c-line)}
.account-menu-list{border-radius:var(--r-lg);box-shadow:var(--sh-3);padding:6px;border-color:var(--c-line)}
.account-menu-list a,.account-menu-list .link-button{border-radius:var(--r-sm);font-weight:500}
.account-menu-list a:hover,.account-menu-list .link-button:hover{background:var(--c-surface-3)}
.account-slot .avatar.initial{color:var(--c-lime-ink);background:var(--c-lime-soft)}
.plan-pill{background:var(--c-lime-soft);color:var(--c-lime-ink);border-color:#d3e09c}

/* ---- page headings ---- */
.paged-site .page-heading{min-height:0;margin-bottom:22px}
.paged-site .page-heading h1{font-size:30px;letter-spacing:-.01em;margin:6px 0 4px}
.paged-site .page-heading p{color:var(--c-muted);font-size:15px;line-height:1.7}
.paged-site main{padding-top:30px}

/* ---- surfaces ---- */
.panel,.paged-site .panel{border-color:var(--c-line);border-radius:var(--r-xl);box-shadow:var(--sh-1);background:var(--c-surface)}
.admin-panel h2,.panel h2{letter-spacing:0}
details{border-top-color:var(--c-line)}

/* ---- buttons ---- */
.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:9px 20px;border-radius:var(--r-md);font-size:14px;font-weight:600;line-height:1.3;letter-spacing:.02em;text-decoration:none;cursor:pointer;
  transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform .08s}
.primary-button{background:var(--c-navy);border:1px solid var(--c-navy);color:#fff;box-shadow:0 1px 2px rgba(17,26,43,.2),inset 0 1px 0 rgba(255,255,255,.07)}
.primary-button:hover{background:var(--c-navy-2);border-color:var(--c-navy-2)}
.secondary-button{background:var(--c-surface);border:1px solid var(--c-line-2);color:var(--c-ink);box-shadow:var(--sh-1)}
.secondary-button:hover{background:var(--c-surface-2);border-color:var(--c-line-3)}
.primary-button:active,.secondary-button:active{transform:translateY(1px)}
.primary-button:disabled,.secondary-button:disabled{opacity:.55;cursor:not-allowed;transform:none}
.secondary-button.danger{color:var(--c-danger);border-color:#e3b5bd}
.secondary-button.danger:hover{background:#fdf3f4;border-color:#d38f9a}
.danger-button{border-radius:var(--r-md);font-weight:600}
.small-button,.lead .actions button{border-radius:var(--r-sm);font-weight:600}
.text-link{color:var(--c-ink);text-underline-offset:4px}
.text-button{border-radius:var(--r-xs)}

/* ---- form controls ---- */
select,input,textarea{transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur)}
select,input,textarea{border-color:var(--c-line-2);border-radius:var(--r-md);background-color:var(--c-surface)}
select:hover,input:hover,textarea:hover{border-color:var(--c-line-3)}
input::placeholder,textarea::placeholder{color:#6f7a8b;opacity:1}
label{color:var(--c-ink-2)}
input[type=checkbox],input[type=radio]{accent-color:var(--c-navy)}

/* ---- chips, pills, badges ---- */
.badge{border-radius:var(--r-xs);font-weight:600;letter-spacing:.02em;line-height:1.5}
.count-pill{background:var(--c-surface-3);color:var(--c-ink-2);font-weight:600}
.chip-row .chip,.member-stats .chip,.app-tabs .chip{transition:background-color var(--dur),border-color var(--dur)}
.me-tabs{gap:6px}
.me-tabs a{border-color:var(--c-line-2);color:var(--c-ink-2);font-weight:500;transition:background-color var(--dur),border-color var(--dur),color var(--dur)}
.me-tabs a:hover{border-color:var(--c-line-3);background:var(--c-surface-2)}
.me-tabs a.active{background:var(--c-navy);border-color:var(--c-navy);color:var(--c-lime);font-weight:700}

/* ---- tables ---- */
table{font-variant-numeric:tabular-nums}
th{background:var(--c-surface-2);color:var(--c-muted);font-weight:600;letter-spacing:.03em;border-bottom:1px solid var(--c-line)}
td{border-bottom-color:var(--c-line)}
tbody tr{transition:background-color var(--dur)}
tbody tr:hover>td{background:#fafbfd}
.table-wrap{border-radius:var(--r-md)}

/* ---- numbers: one proportional-lining, tabular number face for prices and counts ---- */
.snapshot strong,.total strong,td .numeric,.me-card strong,.admin-stats strong,.al-ba dd,.dex-summary b,.related-grid strong,.mk-box b,.mk-stats b,.bgp-pv-price,.join-code b{font-family:var(--font-num);font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.01em}
.me-card strong,.admin-view .admin-stats strong{font-weight:750}

/* ---- empty states ---- */
.empty{border:1px dashed var(--c-line-2);border-radius:var(--r-lg);background:var(--c-surface-2);padding:32px 22px;max-width:none}
.empty h2,.empty h3{font-size:17px}
.empty p{color:var(--c-muted)}
.empty button{border-radius:var(--r-md);font-weight:600}
.bgp-empty{background:var(--c-surface-2);border-color:var(--c-line-2)}

/* ---- notices ---- */
.me-alert,.readonly-note,.account-callout,.al-how{border-radius:var(--r-lg)}
.me-alert{background:#eef4fc;border-color:#cddcf1;color:#203552}

/* ---- member center ---- */
.me-cards{gap:14px}
.me-card{padding:20px 20px 18px;transition:box-shadow var(--dur) var(--ease),border-color var(--dur)}
.me-card:hover{box-shadow:var(--sh-2);border-color:var(--c-line-2)}
.me-card .eyebrow{font-size:11px}
.me-card a{color:var(--c-ink);text-underline-offset:4px}
.fav-card,.al-event,.al-card{transition:box-shadow var(--dur) var(--ease),border-color var(--dur)}
.fav-card:hover,.al-card:hover{border-color:var(--c-line-2);box-shadow:var(--sh-2)}
.al-ba div{background:var(--c-surface-2);border:1px solid var(--c-line);border-radius:var(--r-md)}
.settings-block{border-radius:var(--r-xl)}

/* ---- 全國圖鑑 / 背卡目錄 cards ---- */
.dex-card,.background-card,.related-grid article,.quick-card{transition:box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}
.dex-card{border-radius:var(--r-lg);border-color:var(--c-line)}
.dex-card:hover,.background-card:hover{border-color:var(--c-line-2);box-shadow:var(--sh-2);transform:translateY(-1px)}
.dex-card-top>span:first-child{font-family:var(--font-num);font-variant-numeric:tabular-nums;color:var(--c-muted)}
.dex-card-bottom small,.dex-identity span{color:var(--c-muted)}
.dex-card-bottom button{color:#2f5a49}
.dex-summary b{color:var(--c-navy)}
.background-card{border-radius:var(--r-lg)}
.background-card>img{background:linear-gradient(180deg,#eef1f6,#e6eaf1)}

/* ---- footer ---- */
.paged-site main>footer{border-top-color:var(--c-line);color:var(--c-muted);align-items:center;row-gap:8px}
.footer-sponsor a,a.footer-sponsor{display:inline-flex;align-items:center;gap:4px;padding:3px 11px;border-radius:var(--r-pill);background:var(--c-lime-soft);border:1px solid #d3e09c;color:var(--c-lime-ink)!important;font-weight:600;text-decoration:none;transition:background-color var(--dur)}
.footer-sponsor a:hover,a.footer-sponsor:hover{background:#e4edbb}
.site-legal{color:var(--c-muted);align-items:center}
.site-legal a,.public-footer a,.paged-site main>footer a{color:var(--c-ink-2)}

/* ---- mobile bottom nav ---- */
@media(max-width:760px){
  .public-view .bottom-nav{background:rgba(255,255,255,.97);border-top:1px solid var(--c-line);box-shadow:0 -8px 24px -12px rgba(17,26,43,.22);padding:6px 6px calc(6px + env(safe-area-inset-bottom));gap:2px}
  /* styles.css「nav a:nth-child(2){display:none}」(old header rule) also hid 圖鑑 here, leaving an empty slot */
  .bottom-nav a,.bottom-nav a:nth-child(2){display:flex}
  .bottom-nav a{min-height:52px;gap:3px;font-size:12px;font-weight:500;color:var(--c-muted);border-radius:var(--r-md);transition:color var(--dur)}
  .bottom-nav a span{display:grid;place-items:center;width:48px;height:28px;border-radius:var(--r-pill);font-size:16px;line-height:1;transition:background-color var(--dur) var(--ease),color var(--dur)}
  .bottom-nav a[aria-current=page]{background:none;color:var(--c-ink);font-weight:700}
  .bottom-nav a[aria-current=page] span{background:var(--c-navy);color:var(--c-lime)}
  .paged-site main{padding-top:16px}
  .paged-site .page-heading h1{font-size:25px}
}

/* ---- public pages: header, hero, cards ---- */
.public-page{background:radial-gradient(900px 420px at 92% -6%,rgba(225,239,118,.30),transparent 62%),radial-gradient(700px 380px at -8% 4%,rgba(70,104,170,.08),transparent 60%),var(--c-bg);background-repeat:no-repeat;background-color:var(--c-bg)}
.public-header{min-height:76px}
.public-header nav{gap:4px}
.public-header nav a,.public-header nav a:first-child{padding:8px 12px;border-radius:var(--r-pill);color:var(--c-ink-2);font-weight:500;text-decoration:none}
.public-header nav a:hover{background:rgba(255,255,255,.7)}
.public-header nav a[aria-current]{background:var(--c-navy);color:var(--c-lime);font-weight:700}
.public-hero{max-width:none;padding:40px 0 34px}
.public-hero h1{font-size:clamp(30px,4.2vw,50px);line-height:1.22;letter-spacing:-.015em;margin:14px 0 16px;word-break:keep-all;overflow-wrap:anywhere}
.public-hero .lead{font-size:17px;color:var(--c-ink-2);line-height:1.85;border:0;padding:0;display:block;max-width:36em}
.public-hero .eyebrow{justify-self:start;width:max-content;max-width:100%;display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 10px;border-radius:var(--r-pill);background:var(--c-surface);border:1px solid var(--c-line);box-shadow:var(--sh-1);color:var(--c-ink-2);font-size:11px}
.public-hero .eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c-lime-2);box-shadow:0 0 0 3px rgba(212,228,94,.3)}
.public-cta{gap:12px;margin:26px 0 10px}
.public-cta .primary-button,.public-cta .secondary-button{min-height:48px;padding:11px 24px;font-size:15px}
.public-hero .public-cta .primary-button{background:var(--c-lime);border-color:var(--c-lime-2);color:var(--c-navy);box-shadow:0 1px 2px rgba(17,26,43,.15),0 8px 20px -10px rgba(120,140,20,.6)}
.public-hero .public-cta .primary-button:hover{background:var(--c-lime-2)}
.public-actions{gap:8px}
@media(min-width:601px){.public-actions a{min-height:40px;padding:8px 16px}}
/* hero illustration (decorative, aria-hidden; no real prices on public pages) */
.hero-visual{display:none}
@media(min-width:960px){
  .public-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.9fr);column-gap:48px;align-items:center}
  .public-hero>*{grid-column:1}
  .public-hero>.hero-visual{display:block;grid-column:2;grid-row:1/span 5}
}
.hv-card{position:relative;border-radius:22px;padding:22px 22px 18px;color:#eef3fa;background:radial-gradient(120% 80% at 100% 0%,rgba(225,239,118,.14),transparent 55%),linear-gradient(160deg,#22304a 0%,#151e31 100%);box-shadow:var(--sh-dark);border:1px solid #2c3a55;transform:rotate(-1.2deg)}
.hv-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#b9c5d8;letter-spacing:.06em}
.hv-pill{padding:2px 9px;border-radius:6px;background:#3a2f5c;border:1px solid #6f5ea8;color:#ddd1f7;font-weight:700;letter-spacing:0}
.hv-title{margin-top:16px;font-size:19px;font-weight:700}
.hv-price{display:flex;align-items:center;gap:10px;margin:12px 0 8px;font:700 18px/1 var(--font-num);color:#dfe9a6}
.hv-bar{display:inline-block;height:34px;width:170px;border-radius:10px;background:linear-gradient(90deg,rgba(225,239,118,.9),rgba(225,239,118,.25))}
.hv-range{display:flex;align-items:center;gap:8px;font-size:13px;color:#c9b8ea;font-weight:600}
.hv-range .hv-bar{height:10px;width:120px;border-radius:6px;background:linear-gradient(90deg,rgba(201,184,234,.75),rgba(201,184,234,.2))}
.hv-chips{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:16px 0 0}
.hv-chips li{font-size:12px;padding:3px 10px;border-radius:var(--r-pill);background:#2b3a56;color:#dde5f0;border:1px solid #3b4b68}
.hv-lock{display:flex;align-items:center;gap:8px;margin-top:16px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.06);border:1px dashed #4a5a77;font-size:13px;color:#d5deea}
.hv-note{display:flex;align-items:center;gap:8px;width:max-content;max-width:100%;margin:-12px 0 0 auto;position:relative;transform:rotate(1.5deg);padding:9px 14px;border-radius:12px;background:var(--c-surface);border:1px solid var(--c-line);box-shadow:var(--sh-2);font-size:13px;font-weight:600;color:var(--c-ink-2)}
.hv-note::before{content:"✓";display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--c-lime-soft);color:var(--c-lime-ink);font-size:12px}
.public-cards{gap:16px;margin:8px 0 20px}
.public-cards article{position:relative;overflow:hidden;padding:24px 24px 22px}
.public-cards article::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--c-navy),var(--c-lime-2))}
.public-cards h2{font-size:18px}
.public-cards p,.public-article p,.public-article li{color:var(--c-ink-2)}
.public-section,.public-article{padding:28px 30px}
.public-steps{gap:12px}
.public-steps li{border-radius:var(--r-lg);background:var(--c-surface-2);border-color:var(--c-line);padding:18px}
.public-steps li::before{width:30px;height:30px;font-family:var(--font-num);margin-bottom:10px;box-shadow:0 4px 10px -6px rgba(12,20,36,.6)}
.public-steps span{color:var(--c-muted)}
.public-dl dd{color:var(--c-ink-2)}
.public-footer{color:var(--c-muted)}
@media(max-width:600px){
  .public-header{min-height:0;padding-top:12px;padding-bottom:10px}
  .public-header nav{justify-content:flex-start;gap:4px;margin-left:-10px}
  .public-hero{padding:24px 0 22px}
  .public-hero h1{font-size:29px;line-height:1.3}
  .public-hero .lead{font-size:15.5px;line-height:1.8}
  .public-cta .primary-button,.public-cta .secondary-button{flex:1 1 40%;padding:10px 14px}
  .public-cta .text-link{flex-basis:100%}
  .public-section,.public-article{padding:22px 20px}
  .public-cards article{padding:20px}
}

/* ---- login / register / account ---- */
.auth-page,.join-view{background:radial-gradient(800px 380px at 90% -8%,rgba(225,239,118,.26),transparent 62%),var(--c-bg);background-repeat:no-repeat;background-color:var(--c-bg);min-height:100vh}
html:has(.join-view){background:var(--c-bg)}
.login-panel{border-radius:22px;box-shadow:var(--sh-2);padding:34px 36px}
.login-panel h1{font-size:30px;letter-spacing:-.01em;margin:10px 0 8px}
.login-panel .eyebrow{color:var(--c-muted)}
.oauth-button{border-radius:var(--r-md);min-height:46px;font-weight:600}
.login-join a{font-weight:600}
.join-view header{border-bottom:0}
.join-intro h1{letter-spacing:-.015em;line-height:1.25}
.join-intro p{color:var(--c-ink-2)}
.join-intro li>b{display:inline-grid;place-items:center;min-width:42px;height:42px;padding:0 6px;border-radius:12px;background:var(--c-navy);color:var(--c-lime);font:700 15px/1 var(--font-num);box-shadow:0 6px 14px -8px rgba(12,20,36,.6)}
.join-intro small{color:var(--c-muted)}
.join-panel{border-radius:22px;box-shadow:var(--sh-2)}
.join-panel input:not([type=checkbox]),.join-panel textarea{border-color:var(--c-line-2);border-radius:var(--r-md)}
.join-panel .primary-button{display:inline-flex;padding:12px 24px;border-radius:var(--r-md)}
.join-panel #join-status,.join-code{background:var(--c-lime-soft)}
.account-facts{background:var(--c-surface-2);border-color:var(--c-line);border-radius:var(--r-lg)}
.account-facts dt,.join-panel .kv>span:first-child{color:var(--c-muted)}
.account-flash{border-radius:var(--r-md)}
@media(max-width:760px){.login-panel{padding:26px 22px;margin:28px 16px;border-radius:18px}.login-panel h1{font-size:26px}.join-panel{border-radius:18px}}

/* ---- legal pages ---- */
.legal-page{border-radius:var(--r-xl)}
.legal-page p,.legal-page li{color:var(--c-ink-2)}

/* ---- admin ---- */
.admin-view>header{border-bottom-color:var(--c-line);box-shadow:0 1px 0 rgba(17,26,43,.02)}
.admin-view>header .brand{display:inline-flex;align-items:center;gap:10px}
.admin-view>header .brand .logo{font-size:17px;padding:6px 5px 6px 9px;border-radius:10px}
.admin-view>header .brand .logo span{font-size:15px}
.admin-view>header .brand small{display:block;font-size:10px;font-weight:700;letter-spacing:.16em;margin-top:2px;color:var(--c-muted)}
.admin-view .back-to-site{color:var(--c-muted);padding:6px 10px;border-radius:var(--r-pill)}
.admin-view .back-to-site:hover{background:var(--c-surface-3);color:var(--c-ink)}
.admin-view .admin-sidebar{background:linear-gradient(180deg,#1b263b 0%,#162034 100%)}
.admin-tabs .nav-group{color:#9eadc2;letter-spacing:.12em}
.admin-view .admin-tabs a{transition:background-color var(--dur),color var(--dur);color:#d3dbe7}
.admin-view .admin-tabs a:hover{background:#26364f}
.admin-view .admin-tabs a[aria-current="page"]{background:var(--c-lime);color:var(--c-navy)}
.sidebar-title small,.sidebar-external{color:#a9b7ca}
.nav-count{font-weight:700;font-variant-numeric:tabular-nums}
.admin-view .admin-stats>div{border-top:0;position:relative;overflow:hidden;color:var(--c-muted)}
.admin-view .admin-stats>div::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--c-navy),var(--c-lime-2))}
.admin-view .admin-stats strong{color:var(--c-navy)}
.admin-view .admin-panel>p{color:var(--c-muted)}
.quick-card{border-color:var(--c-line);border-radius:var(--r-lg)}
.quick-card:hover{border-color:#b9c49a;box-shadow:var(--sh-2);transform:translateY(-1px)}
.quick-icon{background:var(--c-lime-soft);color:var(--c-lime-ink)}
.quick-card p,.workflow-note small{color:var(--c-muted)}
.quick-arrow{color:#5c6e2c}
.workflow-note{border-radius:var(--r-lg);background:#eaeef4}
.status-tabs button,.import-mode-tabs button{border-radius:var(--r-pill);transition:background-color var(--dur),border-color var(--dur)}
.status-tabs button[aria-selected="true"],.import-mode-tabs button[aria-selected="true"]{background:var(--c-navy);border-color:var(--c-navy)}
.admin-dialog{border-radius:var(--r-xl);box-shadow:var(--sh-3)}
.admin-dialog::backdrop{background:rgba(17,26,43,.5)}
.pricing-savebar{border-radius:var(--r-lg)}
.pricing-tabs button[aria-selected=true]{border-bottom-color:var(--c-navy)}
.bgp-rule,.bgp-pv-col,.bgp-defaults>div,.rv-cols>div,.panel-sub,.individual-row,.admin-view .override-row{border-radius:var(--r-lg)}
.history-json{font-family:var(--font-mono)}
@media(max-width:760px){.admin-view>header .brand small{display:none}}

.background-card button{border:1px solid var(--c-line-2);border-radius:var(--r-md);background:var(--c-surface);color:var(--c-ink);font-weight:600;box-shadow:var(--sh-1);transition:background-color var(--dur),border-color var(--dur),color var(--dur)}
.background-card button:hover{background:var(--c-navy);border-color:var(--c-navy);color:#fff}
.background-catalog .admin-inline button,.admin-view .import-actions button,.list-pagination button{border-radius:var(--r-md);border-color:var(--c-line-2)}

/* ---- motion ---- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .dex-card:hover,.background-card:hover,.quick-card:hover,.primary-button:active,.secondary-button:active{transform:none}
  .hv-card,.hv-note{transform:none}
}

/* ---- mobile admin entry fix (2026-10-03) ----
   The full-bleed header background moved to ::before: a clip-path on the header itself cut off the account menu
   (會員中心…管理員後台・登出) at the header's bottom edge. On phones the menu opens leftward from the avatar. */
.public-view>header{clip-path:none;box-shadow:none;position:relative}
@media(min-width:1101px){.public-view>header{position:sticky}}
.public-view>header::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--c-surface);
  box-shadow:0 0 0 100vmax var(--c-surface),0 1px 0 100vmax var(--c-line);clip-path:inset(0 -100vmax -1px)}
@media(max-width:600px){.account-menu-list{left:auto;right:0;max-width:calc(100vw - 24px)}}
.account-menu-list a[href="/admin"]{font-weight:700;color:var(--c-navy)}
.me-staff{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:16px 0;padding:18px 20px;
  border-left:4px solid var(--c-lime-2)}
.me-staff h2{margin:2px 0 4px;font-size:18px}.me-staff p{margin:0;color:var(--c-muted);font-size:14px}
.me-logout{margin:18px 0 0}
@media(max-width:600px){.me-staff .primary-button{width:100%;justify-content:center;text-align:center}}
/* 註冊申請自動審核 (2026-10-03) */
.auto-review-settings{margin:0 0 14px}
.auto-review-settings summary{cursor:pointer;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ar-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px 14px;align-items:end;margin-top:10px}
.ar-form label{display:grid;gap:6px;font-size:13px}
.ar-form .check-line{display:flex;gap:8px;align-items:center;grid-column:1/-1;font-size:14px}
.ar-form .check-line input{width:auto}
.ar-form button,.ar-form [role=status],.ar-form p{grid-column:1/-1;justify-self:start;margin:0}
/* 自動審核開關 (2026-10-04) */
.ar-switch-card{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 0 12px;padding:16px 18px;border-left:4px solid #2f9e5b}
.ar-switch-card.is-off{border-left-color:#d08a1a;background:#fffaf0}
.ar-switch-text{flex:1 1 320px;min-width:0}
.ar-switch-text p{margin:6px 0 0;font-size:14px;line-height:1.6}
.ar-switch-text p.muted{font-size:13px}
.ar-switch-text small{display:block;margin-top:6px}
.ar-switch-title{font-size:16px}
.ar-switch{display:inline-flex;gap:10px;align-items:center;background:none;border:0;padding:6px;cursor:pointer;font:inherit;font-weight:700}
.ar-switch-track{position:relative;width:56px;height:30px;border-radius:999px;background:#c9ced8;transition:background .15s}
.ar-switch-knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .15s}
.ar-switch[aria-checked="true"] .ar-switch-track{background:#2f9e5b}
.ar-switch[aria-checked="true"] .ar-switch-knob{transform:translateX(26px)}
.ar-switch:focus-visible{outline:2px solid #2563eb;outline-offset:2px;border-radius:8px}
.ar-switch:disabled{opacity:.6;cursor:wait}
.ar-switch-text .ar-switch-msg{margin:8px 0 0}
.ar-switch-msg:empty{display:none}
.app-card .auto-held{margin-top:10px;padding:12px 14px;background:#fff6e6;border:1px solid #f0d9a8}
.app-card .auto-held ul{margin:6px 0;padding-left:20px;font-size:13px;line-height:1.7}
.app-card .auto-badge{background:#e4f2ef;color:#286354}
.revert-box{margin-top:10px}
.revert-box>summary{list-style:none;display:inline-flex;align-items:center;cursor:pointer;min-height:40px}
.revert-box>summary::-webkit-details-marker{display:none}
.revert-form{margin-top:8px;padding:12px 14px;border:1px solid #efd3d8;border-radius:10px;background:#fffafa}
.revert-form select{width:100%}

/* ---- 會員等級 Lv.1–20 (2026-10-03): 會員中心 level card, 我的回報 XP tags, 後台 #levels ---- */
.level-card{display:grid;grid-template-columns:96px minmax(0,1fr);gap:20px;padding:22px 24px;margin:0 0 18px;align-items:start}
.level-badge{width:96px;height:96px;display:block}
.level-main h2{font-size:24px;margin:4px 0 10px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.level-main h2>span:first-child{font-weight:700}
.xp-bar{height:12px;border-radius:999px;background:#e7ebf1;overflow:hidden;max-width:560px}
.xp-bar>span{display:block;height:100%;background:linear-gradient(90deg,#9cc23a,#e1ef76);border-radius:999px;min-width:4px}
.xp-line{margin:8px 0 4px;font-size:14px}
.level-gate{font-size:13px;color:var(--c-warn,#7a520d);background:#fff7e3;border-radius:8px;padding:6px 10px;display:inline-block;margin:6px 0}
.level-usage{font-size:13px;color:var(--c-muted,#5b6678)}
.level-usage small{font-size:12px}
.level-events{font-size:13px;color:var(--c-ok,#1f6b4f)}
.level-notices{background:var(--c-lime-soft,#eef4d6);border-radius:8px;padding:6px 12px;margin:8px 0}
.level-notices p{margin:4px 0}
.level-disclaimer{font-size:12px;color:var(--c-muted,#5b6678);border-left:2px solid #c9d2df;padding-left:8px;margin:10px 0 4px}
.level-more{padding:10px 0 4px;margin-top:8px}
.level-table{display:grid;gap:2px;margin:10px 0}
.lt-row{display:grid;grid-template-columns:40px 56px minmax(0,1fr) 92px;gap:6px 10px;align-items:center;padding:4px 6px;border-radius:8px;font-size:13px}
.lt-row small{grid-column:3/-1;color:var(--c-muted,#5b6678);font-size:12px;margin-top:-4px}
.lt-row small:empty{display:none}
.lt-row.is-me{background:var(--c-lime-soft,#eef4d6)}
.lt-row .num{text-align:right;font-variant-numeric:tabular-nums}
.small{font-size:12px}
.xp-tag{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:1px 9px;background:#eef0f5;color:#46516a;margin:0}
.xp-tag.xp-awarded{background:#e4f2ef;color:#1f6b4f}
.xp-tag.xp-estimated{background:#eef4d6;color:#3b4f12}
.xp-tag.xp-penalty,.xp-tag.xp-reversed{background:#fbe9ec;color:#9a2937}
.xp-details{padding:4px 0;border-top:0}
.xp-details p{margin:4px 0;font-size:12px}
.lv-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;background:#f1f3f7;border-radius:999px;padding:1px 8px 1px 2px;vertical-align:middle;white-space:nowrap}
.lv-chip img{width:20px;height:20px}
.lv-members .lv-chip img{width:24px;height:24px}
.rv-xp{border-top:1px dashed #d5dbe4;margin-top:10px;padding-top:6px}
.rv-xp .check-line{margin:8px 0}
.rv-conf{max-width:280px;font-size:13px}
.evidence-note.warn{background:#fff3f4;border-radius:8px;padding:8px 10px;color:#7d2230}
.evidence-note.warn .danger-button{margin-left:8px}
/* admin #levels */
.lv-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 12px}
.lv-tabs a{padding:8px 13px;border-radius:999px;text-decoration:none;font-size:13px;border:1px solid var(--c-line,#e2e6ec);background:#fff}
.lv-tabs a.active{background:var(--c-navy,#1b263b);color:#fff;border-color:var(--c-navy,#1b263b)}
.lv-savebar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--c-line,#e2e6ec);border-radius:12px;padding:10px 14px;font-size:13px}
.lv-savebar>span:first-child{margin-right:auto}
.lv-dirty{color:var(--c-warn,#7a520d);font-weight:600}
.lv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px 16px;margin:8px 0 18px}
.lv-field{display:flex;flex-direction:column;gap:4px;font-size:13px;min-width:0}
.lv-field.wide{grid-column:1/-1}
.lv-field small{color:var(--c-muted,#5b6678);font-size:11px}
.lv-field.lv-check{flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px}
.lv-field.lv-check input{width:18px;min-height:18px;height:18px;flex:none}
.lv-field.lv-check small{width:100%}
.lv-field.has-error input{border-color:var(--c-danger,#9a2937);background:#fff6f7}
.field-error{color:var(--c-danger,#9a2937);font-style:normal;font-size:12px}
.lv-table-wrap{overflow-x:auto}
.lv-table{min-width:760px}
.lv-table td{padding:8px 8px;vertical-align:middle}
.lv-table td:first-child{min-width:110px}
.lv-table td:last-child{min-width:110px}
.lv-table input{min-height:38px;padding:6px 8px}
.lv-badge-cell img{display:block}
.lv-badge-cell small{font-size:11px}
.lv-badge-actions{display:flex;gap:4px}
.lv-badge-actions label{display:inline;cursor:pointer;color:#385c97}
.lv-event{border:1px solid var(--c-line,#e2e6ec)!important;border-radius:12px;padding:12px 14px!important;margin:10px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 14px}
.lv-event legend{font-weight:700;padding:0 6px}
.lv-gates{display:grid;gap:6px}
.lv-gate-row{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:12px;align-items:center;border-bottom:1px solid var(--c-line,#e2e6ec);padding:6px 0}
.lv-search{display:flex;gap:8px;max-width:520px;margin:8px 0 14px}
.lv-member{padding:18px;margin:16px 0}
.lv-member h3{display:flex;align-items:center;gap:10px;margin:0 0 6px}
.lv-adjust{display:grid;grid-template-columns:200px minmax(0,1fr) auto;gap:10px;align-items:end;margin:12px 0 4px}
.lv-plan{background:#f8f9fb;border-radius:12px;padding:12px 14px;margin-top:12px}
.lv-history{list-style:none;padding:0;margin:0}
.lv-history li{display:grid;grid-template-columns:200px minmax(0,1fr) auto;gap:12px;align-items:start;border-bottom:1px solid var(--c-line,#e2e6ec);padding:12px 0}
.lv-history li.is-current{background:#fbfcf3}
.lv-history details{padding:0;border-top:0}
.lv-diff{font:12px/1.6 ui-monospace,monospace;overflow-wrap:anywhere;padding-left:18px;margin:6px 0}
td.num,.num{font-variant-numeric:tabular-nums}
td.neg{color:var(--c-danger,#9a2937)}
@media(max-width:600px){
  .level-card{grid-template-columns:64px minmax(0,1fr);gap:12px;padding:16px}
  .level-badge{width:64px;height:64px}
  .level-main h2{font-size:20px}
  .lt-row{grid-template-columns:32px 48px minmax(0,1fr) 78px;gap:4px 6px}
  .lt-row img{width:32px;height:32px}
  .lv-gate-row,.lv-adjust,.lv-history li{grid-template-columns:1fr}
  .lv-savebar{gap:8px}
  .lv-savebar>span:first-child{width:100%}
}
.lv-table td:first-child{width:120px;min-width:110px}
.lv-table td:nth-child(3) input{min-width:132px}
.lv-table td:nth-child(n+4) input{min-width:84px}
.level-table{max-width:760px}

/* 會員等級 badge next to the name in the site header (2026-10-03) */
.account-menu .acct-level{display:inline-flex;align-items:center;gap:3px;flex:none;padding:1px 7px 1px 2px;border-radius:999px;background:var(--c-surface-2,#f2f4f7);border:1px solid var(--c-line,#dce1e8);font-size:11px;line-height:1;white-space:nowrap;color:var(--c-navy,#18263b)}
.account-menu .acct-level img{width:22px;height:22px;display:block;flex:none}
.account-menu .acct-level b{font-weight:700;font-variant-numeric:tabular-nums}
.account-menu-list .acct-level-row{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-bottom:4px;border-bottom:1px solid var(--line);border-radius:var(--r-sm,8px) var(--r-sm,8px) 0 0}
.account-menu-list .acct-level-row img{width:32px;height:32px;flex:none}
.account-menu-list .acct-level-row span{display:grid;gap:1px;min-width:0}
.account-menu-list .acct-level-row b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-menu-list .acct-level-row small{font-size:12px;color:var(--muted);font-weight:400}
@media(max-width:420px){.account-menu .acct-level{padding:0;background:none;border:0}.account-menu .acct-level b{display:none}.account-menu .acct-level img{width:22px;height:22px}}
.lv-grant{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.lv-grant h4{margin:0 0 6px}
.lv-grant-panel .lv-adjust{flex-wrap:wrap}

/* 「☕ 贊助」 pill in the top bar (2026-10-03): warm accent, icon-only on phones; footer link stays */
.hdr-sponsor{display:inline-flex;align-items:center;gap:5px;flex:none;order:1;padding:5px 12px 5px 10px;min-height:32px;border-radius:999px;background:#fff3d6;border:1px solid #f0c25e;color:#7a4700;font-size:13px;font-weight:700;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color .15s,box-shadow .15s}
.hdr-sponsor:hover,.hdr-sponsor:focus-visible{background:#ffe7ad;box-shadow:0 2px 8px #c98a0a33;color:#5e3600}
.hdr-sponsor>span[aria-hidden]{font-size:15px}
/* site header: sponsor sits right after the account area (order:1; the phone nav row is order:3) */
.join-view header .hdr-sponsor,.account-view header .hdr-sponsor{order:0;margin-left:auto}
@media(min-width:601px) and (max-width:1000px),(min-width:1280px) and (max-width:1440px){.public-view .hdr-sponsor{padding:0;width:34px;min-height:34px;justify-content:center}.public-view .hdr-sponsor .hdr-sponsor-t{display:none}}
/* make room for the pill without changing the layout: tighter gaps at laptop widths, account + pill share the brand row on tablets/phones */
/* brand never wraps (「價值研究所」 on one line); 1280–1440: one row, subtitle hidden, tighter gaps (nav may scroll as a last
   resort for very long names); 1001–1279: two rows — brand + account/贊助 on top, the nav on its own row (as ≤1100 already intends) */
body.public-view>header .brand,body.public-view>header .brand>span{white-space:nowrap}
body.public-view>header .brand{flex:none}
@media(min-width:1280px) and (max-width:1440px){body.public-view>header{gap:18px}body.public-view>header .brand small{display:none}body.public-view header nav{min-width:0;overflow-x:auto;scrollbar-width:none}body.public-view header nav::-webkit-scrollbar{display:none}body.public-view header nav a{padding-left:8px;padding-right:8px}.account-menu .acct-name{max-width:120px}}
@media(min-width:1001px) and (max-width:1279px){body.public-view>header{flex-wrap:wrap;row-gap:4px;gap:4px 18px}body.public-view header nav{order:3;width:100%;margin:0;overflow-x:auto;justify-content:flex-start;scrollbar-width:none}body.public-view .account-slot{width:auto;margin-left:auto}}
@media(min-width:761px) and (max-width:1000px){.public-view .account-slot{width:auto;margin-left:auto}}
@media(max-width:600px){body.public-view>header{column-gap:6px}body.public-view .account-menu>summary{gap:4px;padding-left:4px;padding-right:4px}}
@media(max-width:420px){body.public-view>header .brand small{letter-spacing:.4px}}
.join-view header .hdr-sponsor+.join-header-link,.account-view header .hdr-sponsor+.join-header-link{margin-left:0}
.public-actions{align-items:center}
.public-actions a.hdr-sponsor{min-height:32px;padding:5px 12px 5px 10px;margin-left:0}
.account-menu-list a.menu-sponsor{color:#7a4700;font-weight:600}
@media(max-width:600px){.hdr-sponsor{padding:0;width:34px;min-height:34px;justify-content:center}.hdr-sponsor .hdr-sponsor-t{display:none}.public-actions a.hdr-sponsor{padding:0;min-height:34px}}
@media(max-width:380px){body.public-view>header .brand small{letter-spacing:0}body.public-view .account-menu>summary::after{display:none}body.public-view .hdr-sponsor{width:30px;min-height:30px}body.public-view .hdr-sponsor>span[aria-hidden]{font-size:14px}}
.member-detail .lv-grant button.primary-button{background:var(--c-navy,#18263b);color:#fff;border-color:var(--c-navy,#18263b);min-height:40px;padding:8px 16px}
/* 站主規格 v3 (2026-10-03): simplified level card, 貢獻紀錄, XP reasons, 申覆, plan comparison */
.level-actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0 4px}
.level-more-body{display:grid;gap:8px;padding:8px 0 0}.level-more-body h3{font-size:15px;margin:10px 0 4px}
.xp-explain{list-style:none;padding:0;margin:6px 0;display:grid;gap:2px;font-size:13px}
.xp-explain li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--line);padding:3px 0}
.xp-explain li small{color:var(--muted)}.xp-explain li.note{color:var(--muted)}.xp-explain li.sum{font-weight:700;border-bottom:0}
.contrib-list{display:grid;gap:10px;margin:12px 0}.contrib-row{padding:12px 16px}
.contrib-top{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.contrib-xp{font-weight:800;min-width:72px}
.contrib-xp.pos{color:#2b7a3d}.contrib-xp.neg{color:#b3261e}
.appeal-box{margin-top:6px}.appeal-box textarea{width:100%}
.report-result.warn{background:#fff7e0;border:1px solid #e8c766;border-radius:10px;padding:10px 12px}
.plan-compare{width:100%;border-collapse:collapse;font-size:14px;margin:8px 0}
.plan-compare th,.plan-compare td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.plan-compare thead th{background:#f4f6f9}.plan-compare .is-current{background:#eef6e6}
.plan-compare small{color:var(--muted);display:block}.plan-tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:20px;background:#e9edf3;color:#45526a;margin-left:4px}
.plan-tag.soon{background:#fff1d6;color:#8a5a00}
.plan-compare-wrap{overflow-x:auto}
.fav-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0}
.fav-compare{overflow-x:auto}.fav-compare table{border-collapse:collapse;font-size:13px;min-width:100%}.fav-compare th,.fav-compare td{border:1px solid var(--line);padding:6px 8px;vertical-align:top}
.fav-hist{font-size:13px}.fav-hist table{border-collapse:collapse}.fav-hist td,.fav-hist th{padding:3px 8px;border-bottom:1px solid var(--line)}
/* 背卡目錄：同名背卡／待辨識背卡 (2026-10-03 §6) */
.background-card h3 .bg-card-en{display:block;font-size:12px;font-weight:400;color:var(--muted,#667)}
.background-card .bg-card-meta{margin:2px 0;font-size:13px}
.background-card .bg-card-note{font-size:12px}
.unident-bg{margin-top:18px;border:1px dashed #d8b45a;border-radius:10px;padding:10px 14px;background:#fffaf0}
.unident-bg summary{cursor:pointer}
.unident-list{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:6px}
.unident-list li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.unident-list small{color:#7a6a3a}

/* 後台導覽四組 + 各類待辦 (owner spec 2026-10-03 §7) */
.admin-tabs .nav-overview{margin-bottom:4px}
@media(max-width:760px){.admin-view .admin-tabs .nav-group{display:block;grid-column:1/-1;padding:8px 2px 0;font-size:11px;color:#9eadc2}}
.todo-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:0 0 22px}
.todo-group{padding:16px 18px}
.todo-group h3{margin:0 0 8px;font-size:14px;color:var(--c-navy)}
.todo-group ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.todo-group li a{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 8px;border-radius:8px;color:inherit;text-decoration:none}
.todo-group li a:hover{background:var(--c-surface-3)}
.todo-group li small{display:block;padding:0 8px;color:var(--c-muted);font-size:11px}
.todo-group .todo-n{background:var(--c-lime);color:var(--c-navy);border-radius:999px;padding:1px 9px;font-variant-numeric:tabular-nums}
.todo-group .todo-zero{color:var(--c-muted);font-weight:600;font-variant-numeric:tabular-nums}
.bgp-shared{background:#eef6ff;border:1px solid #cfe0f5;border-radius:10px;padding:8px 12px;font-size:13px}

/* 站主規格 v3 §五 (2026-10-03): Free／Plus comparison table, favorites compare / history / CSV, alert keep chooser */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.plan-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px 16px; margin: 8px 0 16px; }
.plan-facts dt { font-size: .8rem; color: var(--muted, #667); }
.plan-facts dd { margin: 0; font-weight: 600; }
.plan-compare { width: 100%; border-collapse: collapse; font-size: .92rem; }
.plan-compare th, .plan-compare td { padding: 8px 10px; border-bottom: 1px solid var(--line, #e3e6ea); text-align: left; vertical-align: top; }
.plan-compare thead th { white-space: nowrap; }
.plan-compare tbody th { font-weight: 500; }
.plan-compare .is-current { background: rgba(255, 196, 0, .10); }
.plan-used { display: inline-block; margin-top: 2px; color: var(--muted, #667); }
.plan-used.over { color: #b45309; font-weight: 600; }
.plan-notes li { margin: 4px 0; }
.plan-sponsor { margin-top: 12px; }
.fav-tools { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fav-gate { font-size: .85rem; }
.fav-rules { margin: 4px 0 10px; font-size: .88rem; }
.fav-cmp-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 8px 0; }
.fav-cmp, .fav-hist { width: 100%; border-collapse: collapse; font-size: .9rem; }
.fav-cmp th, .fav-cmp td, .fav-hist th, .fav-hist td { padding: 6px 8px; border-bottom: 1px solid var(--line, #e3e6ea); text-align: left; vertical-align: top; }
.fav-cmp-pick { display: inline-flex; align-items: center; gap: 4px; font-size: .88rem; }
.fav-hist-box { margin-top: 8px; grid-column: 1 / -1; }
.al-keep { display: grid; gap: 6px; padding: 10px 12px; border: 1px dashed var(--line, #d6d9de); border-radius: 10px; margin: 8px 0 12px; }
.al-keep .check-row { display: flex; gap: 6px; align-items: center; }
.al-keep button { justify-self: start; }
.pl-form input[type="number"] { width: 6.5em; }
.pl-form .field-error { display: block; color: #b91c1c; }
@media (max-width: 560px) { .plan-compare { font-size: .84rem; } .plan-compare th, .plan-compare td { padding: 6px; } }
.plan-compare { table-layout: fixed; min-width: 0 !important; }
.plan-compare thead th:first-child, .plan-compare tbody th { width: 36%; }
.plan-compare td, .plan-compare th { overflow-wrap: anywhere; white-space: normal; }
@media (max-width: 560px) { .plan-compare thead th { white-space: normal; } .plan-compare thead th:first-child, .plan-compare tbody th { width: 34%; } }

/* 遊戲資料（選填，2026-10-03） */
.game-form label { display: grid; gap: 4px; }
.game-form .field-error { color: #b91c1c; }
.game-form .submit-row { display: flex; gap: 10px; align-items: center; }
.game-profile .kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px; margin: 0 0 4px; }
.game-profile .kv dt { color: var(--c-muted, #667); }
.game-profile .kv dd { margin: 0; }

/* 註冊申請簡化 + 邀請碼 (2026-10-03) */
.join-step-now { margin: 6px 0 4px; padding: 10px 12px; border-radius: 10px; background: var(--c-lime-soft, #f1f7e3); font-size: 14px; }
.join-step-now > b:first-child { color: var(--c-navy, #1b2a41); margin-right: 4px; }
.join-panel fieldset.purpose-field { border: 0; padding: 0; margin: 20px 0; min-width: 0; }
.join-panel fieldset.purpose-field legend { font-size: 14px; margin-bottom: 9px; padding: 0; }
.purpose-choices { display: grid; gap: 8px; }
.join-panel label.purpose-choice { display: flex; flex-direction: row; justify-content: flex-start; text-align: left; align-items: center; gap: 10px; margin: 0; padding: 12px 14px; border: 1px solid var(--c-line-2, #ccd6e2); border-radius: var(--r-md, 10px); font-size: 15px; cursor: pointer; background: #fff; }
.join-panel label.purpose-choice input[type=radio] { width: 18px; height: 18px; margin: 0; padding: 0; border: 0; border-radius: 50%; flex: none; accent-color: var(--c-navy, #1b2a41); }
.join-panel label.purpose-choice:has(input:checked) { border-color: var(--c-navy, #1b2a41); box-shadow: 0 0 0 1px var(--c-navy, #1b2a41) inset; font-weight: 600; }
.join-panel label.purpose-choice:has(input:focus-visible) { outline: 2px solid var(--c-navy, #1b2a41); outline-offset: 2px; }
.join-panel fieldset[aria-invalid=true] .purpose-choice { border-color: #c4505d; }
.join-panel label.purpose-note { margin: 10px 0 0; }
@supports selector(:has(*)) { .join-panel label.purpose-note { display: none; } .purpose-field:has(input[value="other"]:checked) label.purpose-note { display: grid; } }
.join-panel label.invite-field input { text-transform: uppercase; letter-spacing: 1px; }
.join-panel label.invite-field input::placeholder { text-transform: none; letter-spacing: 0; }
.admin-msg.warn { background: #fff6e0; color: #7a5300; }
/* 後台 › 邀請碼 */
.inv-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px 14px; align-items: end; }
.inv-form label { display: grid; gap: 4px; font-size: 13px; }
.inv-form .field-error { color: #b91c1c; font-size: 12px; }
.inv-new-code { margin: 12px 0; padding: 12px 14px; border-radius: 10px; background: #edf6e4; }
.inv-new-code code { font: 700 20px ui-monospace, monospace; letter-spacing: 2px; }
.inv-row { display: grid; grid-template-columns: 1fr auto; gap: 8px 12px; padding: 12px 0; border-top: 1px solid var(--c-line, #e3e6ea); }
.inv-row .inv-hint { font: 600 16px ui-monospace, monospace; letter-spacing: 1px; }
.inv-row .inv-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: start; }
.inv-row details { grid-column: 1 / -1; }
.inv-uses { margin: 6px 0 0; padding-left: 18px; font-size: 13px; }
@media (max-width: 560px) { .inv-row { grid-template-columns: 1fr; } }
.purpose-help { display: block; margin: -4px 0 8px; font-size: 13px; }
/* 已停用背卡 (2026-10-03) */
.badge.off{background:#e3e6ea;color:#4a5361}
.bgp-status{margin-top:8px;padding:8px 10px;border:1px solid #d9dee5;border-radius:10px;font-size:13px}
.bgp-status.off{background:#f3f4f6}
.bgp-status-act{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin-top:6px}
.bgp-status-act input{flex:1 1 200px;min-width:0}
/* 會員抽獎 (2026-10-03) */
.rf-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px 14px; }
.rf-grid label, .rf-form > label { display: grid; gap: 5px; font-size: 13px; }
.rf-wide { grid-column: 1 / -1; }
.rf-form textarea { width: 100%; font: inherit; }
.rf-filters { border: 1px solid #d9dee5; border-radius: 10px; padding: 12px 14px; margin: 14px 0; min-width: 0; }
.rf-filters legend { font-weight: 700; padding: 0 4px; }
.rf-fixed { margin: 0 0 10px; }
.rf-check { display: flex !important; flex-direction: row !important; justify-content: flex-start; text-align: left; align-items: center; gap: 8px; margin-top: 10px; font-size: 14px; }
.rf-check input { width: auto !important; height: auto; margin: 0; flex: none; }
.rf-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.rf-preview-head { margin: 14px 0 8px; }
.rf-count { font-size: 22px; }
.rf-table { max-height: 460px; overflow: auto; }
.rf-cards { display: grid; gap: 8px; }
.rf-card { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid #d9dee5; border-radius: 10px; color: inherit; text-decoration: none; }
.rf-card:hover { border-color: var(--c-navy, #1b2a41); }
.rf-draw { margin: 12px 0; padding: 12px 14px; border-radius: 10px; background: #f3f6ea; }
.rf-replaced td { opacity: .6; }
.rf-replaced td b { text-decoration: line-through; }
.rf-fc { white-space: nowrap; font-variant-numeric: tabular-nums; }
.rf-ops { min-width: 150px; }
.rf-ops button { margin: 0 4px 4px 0; padding: 4px 10px; font-size: 13px; }
.rf-redraw summary { cursor: pointer; font-size: 13px; }
.rf-redraw-form { display: grid; gap: 6px; margin-top: 6px; }
.rf-proof { display: grid; grid-template-columns: max-content 1fr; gap: 6px 12px; font-size: 13px; }
.rf-proof code { word-break: break-all; }
.rf-checks { margin: 6px 0 0; padding-left: 18px; font-size: 13px; }
@media (max-width: 560px) { .rf-proof { grid-template-columns: 1fr; } .rf-proof dd { margin: 0 0 6px; } }
@media (max-width: 640px) {
  .rf-winners table { min-width: 0; width: 100%; }
  .rf-winners thead { display: none; }
  .rf-winners tr { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; padding: 12px 0; border-bottom: 1px solid #e3e7ec; }
  .rf-winners td { border: 0; padding: 0; min-width: 0; word-break: break-word; }
  .rf-winners td[data-label]::before { content: attr(data-label); display: block; font-size: 11px; color: #6b7480; }
  .rf-winners td.rf-ops { grid-column: 1 / -1; }
}

/* ===================== 全站公告列 + 公告中心 + 公告管理 (2026-10-03, spec/2026-10-03-announcements.md) =====================
   The bar sits in normal flow between the header and <main>, so it can never cover the search box, prices or the nav;
   [hidden] = no bar, no space. Dark navy bar + neon-lime accents (site palette); type = icon + text label + colour. */
.ann-slot{container-type:inline-size;container-name:annbar;position:relative;z-index:1}
.ann-slot[hidden]{display:none!important}
.ann-bar{background:var(--c-navy,#1b263b);color:#f3f6fb;font-size:14px;line-height:1.45}
.ann-row{--ann-accent:#8b9ab3;display:flex;align-items:center;gap:10px;min-height:44px;padding:5px max(16px,calc((100% - 1240px)/2));box-shadow:inset 4px 0 0 var(--ann-accent)}
.ann-row+.ann-row{border-top:1px solid rgba(255,255,255,.09)}
.ann-slide{display:contents}
.ann-chip{flex:none;display:inline-flex;align-items:center;gap:5px;padding:2px 9px 2px 7px;border-radius:999px;font-size:12.5px;font-weight:700;white-space:nowrap;background:#3a4a66;color:#e8edf6}
.ann-ico{font-size:13px;line-height:1}
.ann-pri{margin-left:3px;padding:0 6px;border-radius:999px;background:rgba(0,0,0,.28);font-size:11.5px;font-weight:800;letter-spacing:.02em}
.ann-text{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.ann-title{font-weight:700;color:#fff}
.ann-sep{margin:0 2px;color:#8f9cb3}
.ann-sum{color:#dfe5ef}
.ann-actions{flex:none;display:inline-flex;align-items:center;gap:12px;white-space:nowrap;font-size:13px}
.ann-bar a{color:var(--c-lime,#e1ef76);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.ann-bar a:hover{text-decoration-thickness:2px}
.ann-bar a.ann-cta{display:inline-flex;align-items:center;min-height:28px;padding:0 11px;border-radius:999px;background:var(--c-lime,#e1ef76);color:#1b263b;text-decoration:none;font-weight:700}
.ann-bar a.ann-count{color:#b8c3d6}
.ann-nav{order:9;flex:none;display:inline-flex;align-items:center;gap:2px}
.ann-pos{min-width:34px;text-align:center;font-size:12px;color:#b8c3d6;font-variant-numeric:tabular-nums}
.ann-bar button{appearance:none;border:0;background:transparent;color:#f3f6fb;cursor:pointer;border-radius:999px;display:inline-grid;place-items:center;font:inherit;padding:0}
.ann-nav button{width:30px;height:30px;font-size:16px;line-height:1}
.ann-nav .ann-pause{font-size:10px}
.ann-bar button:hover{background:rgba(255,255,255,.12)}
.ann-x{order:10;flex:none;width:32px;height:32px;font-size:20px!important;line-height:1}
.ann-x-gap{order:10;flex:none;width:0}
.ann-bar :focus-visible{outline:2px solid var(--c-lime,#e1ef76)!important;outline-offset:2px!important}
/* types */
.ann-t-general{--ann-accent:#8b9ab3}
.ann-t-feature{--ann-accent:#e1ef76}
.ann-t-feature .ann-chip{background:#e1ef76;color:#1b263b}
.ann-t-event{--ann-accent:#6aa1ff}
.ann-t-event .ann-chip{background:#9cc2ff;color:#0f2552}
.ann-bar .ann-t-maintenance{--ann-accent:#ff8a3d;background:#3b2114}
.ann-t-maintenance .ann-chip{background:#ff9f43;color:#2a1200}
.ann-bar .ann-t-maintenance a{color:#ffd2a8}
.ann-bar .ann-t-maintenance a.ann-cta{background:#ff9f43;color:#2a1200}
.ann-bar .ann-pinned:not(.ann-t-maintenance){background:#2a2140}
.ann-bar .ann-pinned .ann-pri{background:#c62f3a;color:#fff}
/* desktop marquee: only the text moves; links / buttons stay put and clickable */
.ann-row.is-marquee .ann-text{text-overflow:clip;-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);mask-image:linear-gradient(90deg,#000 92%,transparent)}
.ann-row.is-marquee .ann-move{display:inline-block;animation:ann-marquee var(--ann-dur,10s) linear infinite alternate}
.ann-bar.is-paused .ann-move{animation-play-state:paused}
@keyframes ann-marquee{0%,12%{transform:translateX(0)}88%,100%{transform:translateX(var(--ann-dist,0))}}
@media (prefers-reduced-motion:reduce){.ann-row .ann-move{animation:none!important;transform:none!important}}
/* narrow bar (phones, admin mobile preview): two-line summary, actions + controls on a slim second row */
@container annbar (max-width:640px){
  .ann-bar{font-size:13.5px}
  .ann-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"chip text text x" "act act nav nav";align-items:start;gap:4px 8px;padding:7px 10px 6px 14px;min-height:0}
  .ann-chip{grid-area:chip;margin-top:1px;font-size:12px;padding:1px 8px 1px 6px}
  .ann-text{grid-area:text;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
  .ann-row.is-marquee .ann-move{animation:none;display:inline}
  .ann-actions{grid-area:act;align-self:center;gap:12px;flex-wrap:wrap;white-space:normal}
  .ann-nav{grid-area:nav;justify-self:end;align-self:center}
  .ann-nav button{width:32px;height:32px}
  .ann-x,.ann-x-gap{grid-area:x;margin:-4px -4px 0 0}
  .ann-x{width:36px;height:36px}
}
/* 公告中心 */
.ann-center{max-width:900px;margin:0 auto;padding:8px 4% 64px}
.ann-center-head h1{margin:6px 0}
.ann-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}
.ann-filter a{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--c-line-2,#cfd6e0);background:#fff;color:var(--c-ink,#1c2638);text-decoration:none;font-size:14px}
.ann-filter a:nth-child(n),.ann-pager a:nth-child(n){display:inline-flex} /* beat styles.css mobile 「nav a:nth-child(2){display:none}」 */
.ann-filter a[aria-current="true"]{background:var(--c-navy,#1b263b);border-color:var(--c-navy,#1b263b);color:var(--c-lime,#e1ef76);font-weight:700}
.ann-list{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.ann-card{--ann-accent:#8b9ab3;padding:20px 24px;border-left:4px solid var(--ann-accent)!important}
.ann-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.ann-card .ann-chip{background:#e9edf3;color:#2e3a4e}
.ann-card.ann-t-feature .ann-chip{background:var(--c-lime-soft,#eef4d6);color:var(--c-lime-ink,#3b4f12)}
.ann-card.ann-t-event .ann-chip{background:#e3edff;color:#1f4fae}
.ann-card.ann-t-maintenance .ann-chip{background:#ffe9d6;color:#8a3b00}
.ann-card .ann-pri{background:#c62f3a;color:#fff}
.ann-status{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:12.5px;font-weight:700;background:#eef1f5;color:#5b6678}
.ann-status-live{background:#e3f4ec;color:#1f6b4f}
.ann-card-title{font-size:20px;line-height:1.4;margin:10px 0 4px}
h1.ann-card-title{font-size:26px}
.ann-card-title a{color:inherit;text-decoration:none}.ann-card-title a:hover{text-decoration:underline}
.ann-card-meta{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 10px;font-size:13px;color:var(--c-muted,#5b6678)}
.ann-body{line-height:1.8}.ann-body p{margin:0 0 10px}.ann-body ul,.ann-body ol{margin:0 0 10px;padding-left:1.4em}.ann-body h3{font-size:16px;margin:14px 0 6px}
.ann-card-cta{margin:12px 0 0}.ann-card-link{margin:10px 0 0;font-size:13px}
.ann-back{margin:4px 0 14px;font-size:14px}
.ann-empty{padding:28px;text-align:center}
.ann-pager{display:flex;justify-content:space-between;align-items:center;margin-top:20px}
/* 後台 › 公告管理 */
.an-steps{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px;padding:0;list-style:none;font-size:13px}
.an-steps li{padding:4px 12px;border-radius:999px;background:var(--c-surface-3,#eef1f5);color:var(--c-ink-2,#3a4659)}
.an-steps li.is-on{background:var(--c-navy,#1b263b);color:var(--c-lime,#e1ef76);font-weight:700}
.an-steps li.is-done{background:var(--c-lime-soft,#eef4d6);color:var(--c-lime-ink,#3b4f12)}
.an-editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:20px;align-items:start}
@media(max-width:1180px){.an-editor{grid-template-columns:1fr}}
.an-form{display:grid;gap:14px}
.an-form label,.an-form fieldset{display:grid;gap:4px;font-size:14px;font-weight:600}
.an-form fieldset{border:1px solid var(--c-line,#e2e6ec);border-radius:10px;padding:10px 12px;margin:0}
.an-form legend{padding:0 4px}
.an-form input[type=text],.an-form input:not([type]),.an-form input[type=url],.an-form input[type=datetime-local],.an-form select,.an-form textarea{font:inherit;font-weight:400}
.an-form textarea{min-height:150px;font-family:inherit}
.an-row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.an-count{font-weight:400;font-size:12px;color:var(--c-muted,#5b6678);justify-self:end}
.an-count.is-over{color:var(--c-warn,#7a520d);font-weight:700}
.an-help{font-weight:400;font-size:12.5px;color:var(--c-muted,#5b6678)}
.an-checks{display:flex;flex-wrap:wrap;gap:6px 14px;font-weight:400}
.an-form .an-checks label{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:6px;font-weight:400}
.an-inline,.an-form .an-inline,.admin-dialog .an-inline{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:8px;font-weight:400!important}
.admin-dialog .an-inline input{width:18px;height:18px;margin:0;flex:none}
.an-tz{display:inline-block;margin-left:6px;padding:0 7px;border-radius:999px;background:var(--c-lime-soft,#eef4d6);color:var(--c-lime-ink,#3b4f12);font-size:11.5px;font-weight:700}
.an-preview{position:sticky;top:90px;display:grid;gap:12px}
.an-frame{border:1px solid var(--c-line-2,#cfd6e0);border-radius:12px;overflow:hidden;background:var(--c-bg,#f3f5f8)}
.an-dpv{display:grid;gap:8px;margin:0 0 16px}
.an-desktop{overflow-x:auto}.an-desk-inner{min-width:760px}
.an-form input[type=checkbox],.an-form input[type=radio]{width:18px;height:18px;min-height:0;min-width:0;padding:0;margin:0;flex:none;box-shadow:none}
.an-mobile{width:390px;max-width:100%;margin:0 auto}
.an-mock-head{display:flex;align-items:center;gap:14px;height:56px;padding:0 20px;background:#fff;border-bottom:1px solid var(--c-line,#e2e6ec);font-size:14px;color:var(--c-ink-2,#3a4659)}
.an-mock-head b{color:var(--c-ink,#1c2638)}
.an-mock-head span{padding:4px 10px;border-radius:999px}
.an-mock-head span.on{background:var(--c-navy,#1b263b);color:var(--c-lime,#e1ef76)}
.an-mock-body{padding:16px 20px 20px}
.an-mock-search{background:#fff;border:1px solid var(--c-line,#e2e6ec);border-radius:12px;padding:12px 14px;color:var(--c-muted,#5b6678);font-size:14px}
.an-mock-search i{display:block;margin-top:8px;height:40px;border:1px solid var(--c-line-2,#cfd6e0);border-radius:10px;background:#fbfcfd}
.an-mobile .an-mock-head{height:50px;padding:0 12px;gap:8px}
.an-mobile .an-mock-body{padding:12px}
.an-center-preview{padding:16px 18px;background:#fff;border:1px solid var(--c-line,#e2e6ec);border-radius:12px}
.an-warn{margin:0;padding:10px 14px 10px 30px;border-radius:10px;background:#fff7e6;border:1px solid #f1d9a6;color:#5f3d00;font-size:13.5px}
.an-warn:empty{display:none}
.an-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.an-log{margin:0;padding-left:18px;font-size:13px;display:grid;gap:6px}
.an-log small{color:var(--c-muted,#5b6678)}
.an-table td{vertical-align:top}
.an-table .ann-chip{background:#e9edf3;color:#2e3a4e}
.an-table .ann-t-feature .ann-chip{background:var(--c-lime-soft,#eef4d6);color:var(--c-lime-ink,#3b4f12)}
.an-table .ann-t-event .ann-chip{background:#e3edff;color:#1f4fae}
.an-table .ann-t-maintenance .ann-chip{background:#ffe9d6;color:#8a3b00}
.an-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.an-filters button[aria-pressed="true"]{background:var(--c-navy,#1b263b);color:var(--c-lime,#e1ef76);border-color:var(--c-navy,#1b263b)}
.an-order button{min-width:30px;padding:2px 6px}
.an-st{display:inline-block;white-space:nowrap;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:700;background:#eef1f5;color:#5b6678}
.an-st-live{background:#e3f4ec;color:#1f6b4f}.an-st-scheduled{background:#e3edff;color:#1f4fae}.an-st-draft{background:#fff4d6;color:#7a520d}.an-st-unpublished{background:#fde8ea;color:#9a2937}
.an-confirm dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:8px 0 12px;font-size:14px}.an-confirm dt{color:var(--c-muted,#5b6678)}.an-confirm dd{margin:0;font-weight:600}

/* ── 問題價格回報 (price issues, 2026-10-03) ───────────────────── */
.issue-add{color:#ffc9b8!important}
.pi-dialog{max-width:560px}
.pi-dialog fieldset{border:0;padding:0;margin:12px 0 0;min-width:0}
.pi-dialog legend{font-size:13px;padding:0;margin-bottom:6px}
.pi-dialog textarea{width:100%;resize:vertical;font:inherit}
.pi-dialog small.muted{font-size:12.5px}
.pi-spec{border:1px solid var(--c-line);border-radius:var(--r-lg,12px);background:var(--c-surface-2,#f6f7fa);padding:10px 14px;font-size:14px;line-height:1.6}
.pi-spec>b,.pi-spec>span,.pi-spec>small{display:block}
.pi-spec>b{color:var(--c-navy);font-size:15px}
.pi-spec>small{color:var(--c-muted);font-size:12.5px;margin-top:4px}
.pi-spec dl{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:6px 0 0}
.pi-spec dt{color:var(--c-muted);white-space:nowrap}.pi-spec dd{margin:0;min-width:0;overflow-wrap:anywhere}
.pi-range{display:flex;align-items:center;gap:8px}
.pi-range label{flex:1;margin:0!important}
.pi-range input{width:100%;min-height:40px}
.pi-reason{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;line-height:1.65}
.pi-links{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0;font-size:14px}
.pi-links a{overflow-wrap:anywhere}
.pi-card .admin-note.ok{background:#e9f5ee;color:#17603a}
.pi-card.st-pending{box-shadow:inset 4px 0 0 #9aa6b8}
.pi-card.st-approved{box-shadow:inset 4px 0 0 #3f9a68}
.pi-card.st-rejected{box-shadow:inset 4px 0 0 #c98a92}
/* 已修正 → XP (2026-10-04) */
.pi-tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center;flex-shrink:0}
.pi-xp{font-size:14px;font-weight:800;padding:4px 10px;border-radius:20px;white-space:nowrap;background:#fff4d6;color:#7a4e00;border:1px solid #edd08a}
.pi-xp-note{margin:6px 0 0;font-size:13.5px;color:var(--c-muted);overflow-wrap:anywhere}
/* admin list */
.tabs.pi-status{display:flex;gap:4px;border-bottom:1px solid var(--c-line);margin:4px 0 12px;overflow-x:auto}
.tabs.pi-status button{border:0;background:none;padding:10px 14px;min-height:44px;font-size:14.5px;color:var(--c-muted);border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap;cursor:pointer}
.tabs.pi-status button.active{color:var(--c-ink);font-weight:700;border-bottom-color:var(--c-navy)}
.tabs.pi-status .tab-n,.pi-mine .tab-n{display:inline-block;margin-left:6px;font-size:12px;background:#edf0f5;border-radius:20px;padding:1px 8px;color:#4d576a}
.pi-filters form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.pi-filters label{display:grid;gap:4px;font-size:13px;min-width:150px;flex:1 1 150px}
.pi-filters .grow{flex:2 1 220px}
.pi-groups{display:grid;gap:12px}
.pi-group{padding:14px 18px}
.pi-group.is-open{box-shadow:inset 4px 0 0 var(--c-lime-2,#d4e45e),var(--sh-1)}
.pi-g-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.pi-g-head h3{margin:0;font-size:16.5px;line-height:1.4}
.pi-g-badges{display:flex;gap:6px;flex-wrap:wrap;flex:none}
.pi-g-meta{color:var(--c-muted);font-size:13.5px;margin:6px 0;line-height:1.6}
.pi-g-meta b{color:var(--c-ink)}
.pi-g-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
/* admin detail */
.pi-detail{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.pi-detail>*{min-width:0}
.pi-detail>.panel{margin:0}
.pi-detail .table-wrap,#pi-preview-out{overflow-x:auto;max-width:100%}
.pi-report,.pi-g-meta,.pi-res,.pi-reply{overflow-wrap:anywhere}
.pi-flash{margin:0;padding:10px 14px;border-radius:var(--r-md,8px);background:#e9f5ee}
.pi-report{border:1px solid var(--c-line);border-radius:var(--r-lg,12px);padding:12px 14px;margin:10px 0;background:var(--c-surface)}
.pi-report.is-main{border-color:#b9c49a;box-shadow:inset 4px 0 0 var(--c-lime-2,#d4e45e)}
.pi-report header{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13.5px;color:var(--c-muted)}
.pi-r-price{font-size:14px;margin:6px 0}
.pi-res,.pi-reply{font-size:13.5px;margin:6px 0;padding:8px 10px;border-radius:8px;background:var(--c-surface-2,#f6f7fa)}
.pi-sizes table{width:100%;font-size:14px}
.pi-sizes td,.pi-sizes th{padding:7px 10px;vertical-align:top}
.pi-sizes .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pi-steps{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--c-muted);line-height:1.6}
.pi-existing{font-size:13.5px;padding:8px 12px;border-radius:8px;background:#fff8e6;margin:8px 0}
.pi-fix-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:4px 14px}
.pi-fix-grid label{display:grid;gap:4px;font-size:13px;margin:6px 0}
.pi-fix-grid input,.pi-fix-grid select{min-height:38px;width:100%}
.pi-fix fieldset{border:1px solid var(--c-line);border-radius:var(--r-md,8px);padding:8px 12px;margin:10px 0}
.pi-fix legend{font-size:13px;font-weight:600;padding:0 4px}
.pi-sizemode .check-line{display:flex;align-items:flex-start!important;gap:8px;margin:6px 0;font-size:14px;line-height:1.5}
.pi-sizemode .check-line input{margin-top:3px}
.pi-hint{font-size:12.5px;color:var(--c-muted);margin:2px 0 0}
.pi-change{width:100%;font-size:14px;margin:8px 0}
.pi-change td,.pi-change th{padding:6px 10px}
.pi-change .up{color:#17603a;font-weight:700}.pi-change .down{color:#9a2937;font-weight:700}
.pi-warn{margin:8px 0;padding:10px 12px 10px 30px;border-radius:8px;background:#fff6e0;color:#7a5300;font-size:13.5px;line-height:1.6}
.pi-log{list-style:none;padding:0;margin:0;font-size:13px;color:var(--c-muted)}
.pi-log li{padding:5px 0;border-top:1px solid var(--c-line)}
.pi-log li:first-child{border-top:0}
.pi-reply-form textarea{width:100%;font:inherit}
@media (max-width:640px){
  .pi-dialog{width:100%;max-width:none;margin:auto 0 0;border-radius:18px 18px 0 0;padding:20px 16px calc(16px + env(safe-area-inset-bottom));max-height:92dvh;overflow:auto}
  .pi-dialog .submit-row{position:sticky;bottom:calc(-16px - env(safe-area-inset-bottom));background:var(--c-surface,#fff);padding:10px 0;margin-bottom:0}
  .pi-dialog .submit-row button{flex:1;min-height:46px}
  .pi-g-head{flex-direction:column}
  .pi-group{padding:12px 14px}
  .pi-sizes table,.pi-change{font-size:13px}
  .pi-filters label{min-width:0;flex-basis:100%}
}
