:root{
  --bg:#f5f7fb;--panel:#fff;--line:#e2e8f0;--line-dark:#cbd5e1;--text:#0f172a;--muted:#64748b;
  --brand:#2563eb;--brand-dark:#1d4ed8;--nav:#0b1220;--nav-2:#111827;--green-bg:#dcfce7;--red-bg:#fee2e2;--yellow-bg:#fef3c7;
  --shadow:0 14px 42px rgba(15,23,42,.075);--radius:18px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.55}a{color:var(--brand);text-decoration:none;font-weight:800}a:hover{text-decoration:underline}code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:2px 7px;color:#0f172a;white-space:nowrap}
.console-shell{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}
.console-sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,var(--nav),var(--nav-2));color:#fff;padding:20px 14px;display:flex;flex-direction:column;gap:18px;box-shadow:8px 0 28px rgba(15,23,42,.16);z-index:10}.console-brand{display:flex;gap:12px;align-items:center;padding:8px 8px 18px;border-bottom:1px solid rgba(255,255,255,.11)}.brand-mark{width:44px;height:44px;border-radius:14px;background:#2563eb;display:grid;place-items:center;font-weight:950;letter-spacing:-.04em;box-shadow:0 10px 24px rgba(37,99,235,.38)}.console-brand strong{display:block;font-size:18px;line-height:1.15}.console-brand span{display:block;color:#94a3b8;font-size:12px;margin-top:4px}.console-nav{display:flex;flex-direction:column;gap:12px}.nav-group{display:flex;flex-direction:column;gap:6px}.nav-label{color:#64748b;font-size:10px;font-weight:950;letter-spacing:.16em;text-transform:uppercase;padding:0 12px;margin-top:2px}.console-nav a{display:grid;grid-template-columns:42px 1fr;align-items:center;color:#cbd5e1;border-radius:14px;padding:10px 10px;text-decoration:none}.console-nav a span{display:grid;place-items:center;width:34px;height:28px;border-radius:10px;background:rgba(255,255,255,.06);font-size:12px;color:#93c5fd}.console-nav a strong{font-size:14px}.console-nav a small{display:block;font-size:11px;color:#94a3b8;font-weight:650;margin-top:1px}.console-nav a:hover,.console-nav a.active{background:rgba(255,255,255,.10);color:#fff;text-decoration:none}.console-nav a.active span{background:#2563eb;color:#fff}.console-nav a.active small{color:#bfdbfe}.sidebar-status{margin-top:auto;border-top:1px solid rgba(255,255,255,.11);padding:14px 10px 2px;color:#94a3b8}.sidebar-status span{display:block;font-size:12px}.sidebar-status strong{display:block;color:#fff;margin-top:4px}.console-main{min-width:0}.console-topbar{min-height:72px;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:16px 30px;position:sticky;top:0;z-index:8}.console-topbar h1{margin:2px 0 0;font-size:20px;letter-spacing:-.03em}.eyebrow,.section-kicker{display:block;color:var(--muted);font-size:11px;font-weight:950;letter-spacing:.16em;text-transform:uppercase}.topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.topbar-actions a{color:#334155;background:#f8fafc;border:1px solid var(--line);border-radius:999px;padding:8px 12px;text-decoration:none;font-size:13px}.topbar-actions a:hover{background:#eff6ff;color:var(--brand)}.console-content{max-width:1680px;margin:0 auto;padding:26px 30px 58px}.notice{background:#ecfdf5;border:1px solid #bbf7d0;border-radius:14px;padding:13px 16px;margin-bottom:18px;color:#166534;font-weight:800}.hero-card{background:radial-gradient(circle at top right,#dbeafe,transparent 34%),linear-gradient(135deg,#fff,#f8fafc);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:24px 28px;margin-bottom:18px;display:flex;justify-content:space-between;gap:24px;align-items:center}.hero-card.slim{padding:22px 26px}.hero-card.compact-hero{padding:26px}.hero-card h1,.hero-card h2{font-size:30px;letter-spacing:-.04em;margin:6px 0 8px}.hero-card p{max-width:940px;color:#475569;margin:0}.hero-actions{display:flex;gap:10px;align-items:center;white-space:nowrap}.button,button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--brand);color:#fff;border:0;border-radius:12px;padding:10px 16px;font-weight:950;text-decoration:none;cursor:pointer;min-height:40px;font-size:14px}.button:hover,button:hover{background:var(--brand-dark);text-decoration:none}.button.secondary,.secondary-btn{background:#fff;color:#334155;border:1px solid var(--line-dark)}.button.secondary:hover,.secondary-btn:hover{background:#f8fafc;color:var(--brand)}button.small,.small{padding:6px 10px;min-height:auto;font-size:13px;border-radius:10px}button.danger,.danger{background:#dc2626;color:#fff}.danger:hover{background:#b91c1c;color:#fff}.text-link{font-weight:900;color:#1d4ed8}.subnav{display:flex;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px;margin:0 0 18px;box-shadow:0 8px 22px rgba(15,23,42,.045)}.subnav a{display:inline-flex;align-items:center;border-radius:12px;padding:8px 12px;background:#f8fafc;color:#334155;text-decoration:none;font-weight:900}.subnav a:hover{background:#eff6ff;color:#1d4ed8}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 10px 28px rgba(15,23,42,.052)}.kpi-card.link-card{display:block;color:var(--text);text-decoration:none}.kpi-card.link-card:hover{border-color:#bfdbfe;transform:translateY(-1px)}.kpi-card span{display:block;color:var(--muted);font-weight:900}.kpi-card strong{display:block;font-size:34px;line-height:1.1;margin:8px 0;letter-spacing:-.04em}.kpi-card small{color:var(--muted)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:18px;box-shadow:var(--shadow)}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.card h2,.card h3{margin:0}.card h2{font-size:22px;letter-spacing:-.02em}.card h3{font-size:19px;letter-spacing:-.02em}.muted{color:var(--muted)}.no-margin{margin:4px 0 0}.tiny{font-size:12px}.tag{display:inline-flex;align-items:center;border-radius:999px;background:#eff6ff;color:#1d4ed8;padding:6px 10px;font-size:12px;font-weight:950;white-space:nowrap}.tag.soft{background:#f1f5f9;color:#475569}.module-grid{display:grid;gap:18px}.module-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid{display:grid;gap:18px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid.two{grid-template-columns:1.06fr .94fr}.detail-grid{grid-template-columns:minmax(330px,420px) 1fr}.policy-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.policy-grid div{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:14px}.policy-grid p{margin:6px 0 0;color:var(--muted)}.flow-grid,.rule-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.flow-card,.rule-grid div{display:block;background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:15px;color:#0f172a;text-decoration:none}.flow-card:hover{border-color:#bfdbfe;background:#eff6ff;text-decoration:none}.flow-card b{display:inline-flex;align-items:center;justify-content:center;width:34px;height:26px;border-radius:999px;background:#dbeafe;color:#1d4ed8;margin-bottom:10px}.flow-card strong,.rule-grid strong{display:block;font-size:16px}.flow-card span,.rule-grid span{display:block;color:var(--muted);font-size:13px;margin-top:4px}.rule-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid{display:grid;gap:13px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-form{margin-top:14px}.stack{display:flex;flex-direction:column;gap:12px}.inline-form{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:12px}.inline-form input,.inline-form select{min-width:150px;flex:1}.inset-form{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:16px;margin-top:12px}label{font-weight:850;color:#1e293b}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line-dark);border-radius:12px;font-size:14px;background:#fff;color:#0f172a;margin-top:7px}input:focus,select:focus,textarea:focus{outline:3px solid rgba(37,99,235,.14);border-color:#60a5fa}.check{display:flex;gap:10px;align-items:center}.check input{width:auto;margin:0}.field-check{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px 13px;margin-top:0}.form-actions{align-self:end}.danger-zone{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line-dark)}.inline-details{position:relative}.inline-details summary{list-style:none;cursor:pointer;background:#f8fafc;border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-weight:950;color:#334155;white-space:nowrap}.inline-details summary::-webkit-details-marker{display:none}.inline-details[open] summary{background:#eff6ff;color:#1d4ed8}.inline-details[open] .inset-form,.inline-details[open] .inline-form{position:absolute;right:0;top:40px;z-index:20;min-width:420px;box-shadow:0 18px 42px rgba(15,23,42,.12)}.table-scroll{overflow:auto;border-radius:12px}.data-table{width:100%;border-collapse:collapse;font-size:13px;min-width:760px}.data-table th,.data-table td{border-bottom:1px solid var(--line);padding:11px 10px;text-align:left;vertical-align:middle}.data-table th{color:#475569;font-size:11px;text-transform:uppercase;letter-spacing:.04em;background:#fafafa;font-weight:950}.data-table.compact th,.data-table.compact td{padding:9px 9px}.data-table.nowrap th,.data-table.nowrap td{white-space:nowrap}.data-table .name-cell{white-space:normal;min-width:110px;max-width:240px}.note-cell{white-space:normal;max-width:260px}.url-cell{max-width:440px}.url-cell code,.json-cell code{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.json-cell{max-width:320px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:nowrap}.actions form{display:inline-flex}.truncate{max-width:420px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ua{max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:950;white-space:nowrap}.pill.active{background:var(--green-bg);color:#166534}.pill.paused{background:var(--red-bg);color:#991b1b}.pill.blocked,.pill.degraded,.pill.rate_limited,.pill.enumeration_blocked,.pill.paused_qr,.pill.paused_store,.pill.paused_batch,.pill.paused_target,.pill.target_invalid{background:var(--red-bg);color:#991b1b}.pill.warn,.pill.non_wechat_hint{background:var(--yellow-bg);color:#92400e}.pill.safe_page{background:#e0f2fe;color:#075985}.checklist{display:flex;flex-direction:column;gap:10px;margin:14px 0}.check-row{display:flex;gap:12px;align-items:flex-start;background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:11px}.check-row strong{display:block}.check-row small{display:block;color:var(--muted);margin-top:2px}.check-dot{width:28px;height:28px;border-radius:999px;display:grid;place-items:center;font-weight:950;flex:none}.check-dot.ok{background:var(--green-bg);color:#166534}.check-dot.warn{background:var(--yellow-bg);color:#92400e}.mini-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.mini-stats.one{grid-template-columns:1fr}.mini-stats div{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:12px}.mini-stats span{display:block;color:var(--muted);font-size:12px;font-weight:850}.mini-stats strong{display:block;font-size:23px;margin-top:4px}.event-list{display:flex;flex-direction:column;gap:10px}.event-row{display:flex;gap:12px;align-items:flex-start;background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:10px}.event-row strong{display:block}.event-row small{display:block;color:var(--muted);margin-top:2px}.qr-panel{position:relative}.big-code{font-size:14px;padding:12px 14px;border-radius:12px;background:#f1f5f9;display:block;word-break:break-all;margin:14px 0}.qr-wrap{display:flex;justify-content:center;margin:14px 0}.qr{width:300px;max-width:100%;border:1px solid var(--line);border-radius:16px;padding:18px;background:#fff}.qr-actions{display:flex;justify-content:center;margin:12px 0}.public{display:grid;min-height:100vh;place-items:center;background:#f8fafc}.public-card,.center-card{width:min(720px,calc(100% - 36px));background:#fff;border:1px solid var(--line);border-radius:22px;padding:36px;text-align:center;box-shadow:0 16px 40px rgba(15,23,42,.10)}.public-page{max-width:720px}.center-card{margin-top:12vh}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metrics div{border:1px solid var(--line);border-radius:14px;padding:18px;background:#f8fafc}.metrics span{display:block;color:var(--muted);margin-bottom:10px}.metrics strong{font-size:34px;letter-spacing:-.04em}.copy-box{font-family:"SFMono-Regular",Consolas,monospace;background:#f8fafc;border:1px solid var(--line-dark);border-radius:14px;padding:14px 16px;word-break:break-all;color:#334155}.button-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:16px}.hint{display:inline-flex;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:999px;padding:9px 14px;font-weight:900;margin-top:14px}.step-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:20px}.step-card{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:14px;text-align:left;display:flex;gap:10px}.step-num{width:30px;height:30px;border-radius:999px;background:#2563eb;color:#fff;display:grid;place-items:center;font-weight:950;flex:none}.status-text{font-size:13px;color:var(--muted);margin-top:14px}
/* === LiveQR 微信打开引导页升级 === */
.wechat-gate-body{background:radial-gradient(circle at top,#eff6ff,transparent 32%),#f8fafc;padding:24px}.wechat-gate-card{width:min(760px,calc(100% - 28px));background:#fff;border:1px solid #dbe4ef;border-radius:28px;padding:46px 44px;text-align:center;box-shadow:0 28px 80px rgba(15,23,42,.12)}.wechat-gate-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#ecfdf5;color:#166534;font-weight:900;padding:8px 14px;margin-bottom:18px}.wechat-gate-card h1{font-size:44px;line-height:1.12;letter-spacing:-.05em;margin:0 0 18px;color:#0f172a}.wechat-gate-lead{font-size:20px;line-height:1.75;color:#334155;margin:0 auto 22px;max-width:620px}.wechat-gate-target{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px auto 16px;color:#64748b}.wechat-gate-target strong{color:#0f172a}.wechat-link-box{margin:18px auto 18px;max-width:640px;background:#f8fafc;border:1px solid #dbe4ef;border-radius:16px;padding:14px 16px;color:#334155;word-break:break-all;text-align:left;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace}.wechat-link-box.selectable{user-select:text}.wechat-gate-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:22px 0 14px}.button.ghost{background:#f8fafc;color:#475569;border:1px solid #dbe4ef}.button.ghost:hover{background:#f1f5f9;color:#0f172a}.wechat-status{display:inline-flex;align-items:center;justify-content:center;min-height:38px;border-radius:999px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;padding:9px 15px;font-weight:800;margin:6px auto 20px}.wechat-status.ok{background:#ecfdf5;color:#166534;border-color:#bbf7d0}.wechat-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px auto 18px;max-width:680px;text-align:left}.wechat-steps div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px;display:flex;gap:11px;align-items:flex-start}.wechat-steps b{display:grid;place-items:center;flex:0 0 auto;width:26px;height:26px;border-radius:999px;background:#2563eb;color:#fff;font-size:13px}.wechat-steps span{font-weight:800;color:#334155;line-height:1.45}.wechat-meta{margin-top:18px}
@media (max-width:1180px){.console-shell{grid-template-columns:235px minmax(0,1fr)}.module-grid.two,.dashboard-grid.two,.flow-grid,.rule-grid,.policy-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-details[open] .inset-form,.inline-details[open] .inline-form{position:static;min-width:0;box-shadow:none}}@media (max-width:860px){.console-shell{grid-template-columns:1fr}.console-sidebar{position:relative;height:auto}.console-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-status{display:none}.console-topbar{position:relative}.hero-card{flex-direction:column;align-items:flex-start}.hero-actions{white-space:normal;flex-wrap:wrap}.detail-grid{grid-template-columns:1fr}}@media (max-width:700px){.console-content{padding:18px 14px 40px}.console-topbar{height:auto;flex-direction:column;align-items:flex-start;gap:12px;padding:16px}.topbar-actions{flex-wrap:wrap}.kpi-grid,.metrics,.mini-stats,.step-grid{grid-template-columns:1fr}.form-grid.two{grid-template-columns:1fr}.card-head{flex-direction:column;align-items:flex-start}.inline-form{flex-direction:column;align-items:stretch}.console-sidebar{padding:16px}.console-nav{grid-template-columns:1fr}.console-nav a{grid-template-columns:42px 1fr}.hero-card h1,.hero-card h2{font-size:26px}.card{padding:18px}.wechat-gate-card{padding:34px 22px;border-radius:22px}.wechat-gate-card h1{font-size:34px}.wechat-gate-lead{font-size:17px}.wechat-gate-actions{flex-direction:column}.wechat-gate-actions .button,.wechat-gate-actions button{width:100%}.wechat-steps{grid-template-columns:1fr}.wechat-status{border-radius:14px;line-height:1.5}.wechat-gate-target{flex-direction:column;gap:4px}.wechat-link-box{font-size:13px}}
/* === LiveQR 微信打开引导页升级 === */
.wechat-gate-body{background:radial-gradient(circle at top,#eff6ff,transparent 32%),#f8fafc;padding:24px}.wechat-gate-card{width:min(760px,calc(100% - 28px));background:#fff;border:1px solid #dbe4ef;border-radius:28px;padding:46px 44px;text-align:center;box-shadow:0 28px 80px rgba(15,23,42,.12)}.wechat-gate-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#ecfdf5;color:#166534;font-weight:900;padding:8px 14px;margin-bottom:18px}.wechat-gate-card h1{font-size:44px;line-height:1.12;letter-spacing:-.05em;margin:0 0 18px;color:#0f172a}.wechat-gate-lead{font-size:20px;line-height:1.75;color:#334155;margin:0 auto 22px;max-width:620px}.wechat-gate-target{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px auto 16px;color:#64748b}.wechat-gate-target strong{color:#0f172a}.wechat-link-box{margin:18px auto 18px;max-width:640px;background:#f8fafc;border:1px solid #dbe4ef;border-radius:16px;padding:14px 16px;color:#334155;word-break:break-all;text-align:left;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace}.wechat-link-box.selectable{user-select:text}.wechat-gate-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:22px 0 14px}.button.ghost{background:#f8fafc;color:#475569;border:1px solid #dbe4ef}.button.ghost:hover{background:#f1f5f9;color:#0f172a}.wechat-status{display:inline-flex;align-items:center;justify-content:center;min-height:38px;border-radius:999px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;padding:9px 15px;font-weight:800;margin:6px auto 20px}.wechat-status.ok{background:#ecfdf5;color:#166534;border-color:#bbf7d0}.wechat-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px auto 18px;max-width:680px;text-align:left}.wechat-steps div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px;display:flex;gap:11px;align-items:flex-start}.wechat-steps b{display:grid;place-items:center;flex:0 0 auto;width:26px;height:26px;border-radius:999px;background:#2563eb;color:#fff;font-size:13px}.wechat-steps span{font-weight:800;color:#334155;line-height:1.45}.wechat-meta{margin-top:18px}@media (max-width:760px){.wechat-gate-card{padding:34px 22px;border-radius:22px}.wechat-gate-card h1{font-size:34px}.wechat-gate-lead{font-size:17px}.wechat-gate-actions{flex-direction:column}.wechat-gate-actions .button,.wechat-gate-actions button{width:100%}.wechat-steps{grid-template-columns:1fr}.wechat-status{border-radius:14px;line-height:1.5}.wechat-gate-target{flex-direction:column;gap:4px}.wechat-link-box{font-size:13px}}
/* === LiveQR 管理员账号页 === */
.grid-span{grid-column:1/-1}button:disabled{opacity:.45;cursor:not-allowed}.admin-role-note{font-size:12px;color:var(--muted)}
/* LiveQR Stage 1 extension */
.login-card{max-width:560px;margin:10vh auto}.stack-form{display:grid;gap:18px}.stack-form label{display:grid;gap:8px;font-weight:700}.filter-bar{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:12px;align-items:end}.pager{display:flex;gap:12px;margin-top:20px}.table-wrap{overflow:auto}.truncate{display:inline-block;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.button.tiny{padding:8px 12px;border-radius:10px}.notice.danger{background:#fff1f2;border-color:#fecdd3;color:#9f1239}@media(max-width:900px){.filter-bar{grid-template-columns:1fr}.grid-2{grid-template-columns:1fr!important}}
/* LiveQR Stage 2 extension */
.badge.ok{background:#dcfce7;color:#166534}.badge.fail{background:#fee2e2;color:#991b1b}.badge.warn{background:#fef3c7;color:#92400e}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.metric-card{background:white;border:1px solid var(--line,#dbe3ef);border-radius:22px;padding:24px}.metric-card span{display:block;color:#64748b;font-weight:700}.metric-card strong{font-size:44px}@media(max-width:1000px){.grid-4{grid-template-columns:1fr 1fr}}@media(max-width:640px){.grid-4{grid-template-columns:1fr}}
/* LiveQR Stage 3 extension */
.badge.not_configured{background:#e2e8f0;color:#334155}.badge.failed,.badge.fail{background:#fee2e2;color:#991b1b}.badge.ok{background:#dcfce7;color:#166534}

/* === LiveQR session and sidebar layout hotfix ===
   Fixes long admin sidebar overflow after staged ops modules are installed.
   This does not change data, routes, risk controls, or login logic. */
.console-sidebar{
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:rgba(148,163,184,.45) transparent;
}
.console-sidebar::-webkit-scrollbar{width:8px}
.console-sidebar::-webkit-scrollbar-thumb{background:rgba(148,163,184,.35);border-radius:999px}
.console-nav{padding-bottom:18px}
.console-main{min-height:100vh;background:var(--bg)}
.console-content{min-height:calc(100vh - 72px)}
.sidebar-status{background:linear-gradient(180deg,rgba(11,18,32,0),rgba(11,18,32,.98) 18%)}
@media (min-width:861px){
  .console-sidebar{max-height:100vh;height:100vh}
}

/* LiveQR target and landing editor extension */
.filters-row{display:grid;grid-template-columns:1fr 160px 180px auto;gap:12px;align-items:end}.mini-list{display:grid;gap:8px}.mini-list a,.mini-list span{display:block}.metric-big{font-size:44px;font-weight:900;margin:8px 0}.chip{display:inline-flex;align-items:center;border-radius:999px;background:#eef6ff;color:#2458d8;padding:8px 12px;font-weight:800}.landing-public-card{max-width:900px}.public-badge{display:inline-flex;border-radius:999px;background:#eaf5ff;color:#2458d8;font-weight:900;padding:8px 14px;margin-bottom:14px;letter-spacing:.08em}.lead-text{font-size:22px;line-height:1.6;color:#334155}.landing-body-text{white-space:pre-line;text-align:left;background:#f8fafc;border:1px solid #dbe5f2;border-radius:18px;padding:22px;margin:20px 0;font-size:18px;line-height:1.8;color:#1e293b}.landing-footer-note{margin-top:18px}.url-cell code{white-space:nowrap}@media(max-width:900px){.filters-row{grid-template-columns:1fr}.grid-2{grid-template-columns:1fr!important}}

/* LiveQR branding settings extension */
.brand-preview-card,
.preview-sidebar-block {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
  border: 1px solid var(--border, #dbe4f0);
  border-radius: 22px;
  background: rgba(255,255,255,.72);
}
.brand-preview-card strong,
.preview-sidebar-block strong { display:block; font-size: 18px; }
.brand-preview-card span,
.preview-sidebar-block span { display:block; color: var(--muted, #66768f); font-size: 14px; margin-top:4px; }
.preview-mark { flex: 0 0 auto; }
.branding-form small { display:block; margin-top:8px; color: var(--muted, #66768f); font-size: 13px; }
.soft-line { border:0; border-top:1px dashed var(--border, #dbe4f0); margin: 18px 0; }
.slim-head { margin-top: 4px; }
.branding-preview-grid { display:grid; grid-template-columns: minmax(260px, 360px) 1fr; gap:18px; }
.preview-hero-block { border:1px solid var(--border, #dbe4f0); border-radius:24px; padding:24px; background:linear-gradient(135deg,#fff,#eef6ff); }
.preview-hero-block h2 { margin: 8px 0; font-size: 30px; }
.preview-hero-block p { margin:0; color: var(--muted, #66768f); line-height: 1.8; }
.console-brand .brand-mark { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width: 900px) { .branding-preview-grid { grid-template-columns: 1fr; } }
/* LiveQR plain admin usability patch */
.simple-console .console-sidebar{width:300px;}
.simple-console .console-main{margin-left:300px;}
.simple-nav .nav-label{font-size:12px;letter-spacing:.04em;color:#7b8ba7;margin:18px 10px 8px;font-weight:800;}
.simple-nav a{grid-template-columns:44px 1fr;gap:10px;align-items:center;padding:12px 14px;border-radius:16px;margin:6px 8px;}
.simple-nav a span{display:flex;align-items:center;justify-content:center;background:rgba(56,111,255,.12);color:#77aaff;border-radius:12px;min-width:38px;height:38px;font-weight:900;font-size:14px;}
.simple-nav a strong{font-size:16px;line-height:1.15;}
.simple-nav a small{font-size:12px;color:#9bacc8;line-height:1.3;margin-top:3px;}
.simple-nav a.active{background:rgba(255,255,255,.11);}
.simple-nav a.active span{background:#2f67ff;color:#fff;}
.nav-more{margin:12px 8px;border-top:1px solid rgba(255,255,255,.08);padding-top:12px;}
.nav-more summary{cursor:pointer;color:#cbd8ee;font-weight:800;padding:10px 14px;}
.simple-topbar .topbar-actions a{font-size:14px;}
.simple-hero h2{font-size:32px;}
.simple-kpis .kpi-card strong{font-size:40px;}
.simple-guide .flow-card span{font-size:14px;}
.cleanup-index{display:flex;gap:10px;flex-wrap:wrap;position:sticky;top:0;z-index:2;}
.cleanup-index a{display:inline-flex;padding:10px 14px;border-radius:999px;background:#f3f7ff;color:#1c4ed8;text-decoration:none;font-weight:800;}
.cleanup-help .mini-help{background:#f8fbff;border:1px solid #dce7f6;border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:8px;}
.cleanup-help .mini-help strong{font-size:18px;}
.cleanup-help .mini-help span{color:#657590;line-height:1.6;}
.cleanup-list{display:flex;flex-direction:column;gap:16px;}
.cleanup-item{border:1px solid #dce6f5;border-radius:20px;background:#fff;padding:18px;display:grid;gap:14px;}
.cleanup-form{display:grid;gap:12px;}
.item-title{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.item-title strong{font-size:18px;}
.cleanup-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end;}
.cleanup-grid label{display:flex;flex-direction:column;gap:6px;font-weight:800;color:#0f172a;}
.cleanup-grid label.wide{grid-column:span 2;}
.cleanup-grid input,.cleanup-grid select,.cleanup-table input,.cleanup-table select{width:100%;min-height:40px;border:1px solid #cbd8e8;border-radius:12px;padding:8px 10px;background:#fff;font-size:14px;}
.cleanup-grid .checkline{flex-direction:row;align-items:center;gap:8px;}
.cleanup-grid .checkline input{width:auto;min-height:auto;}
.cleanup-meta{display:flex;gap:10px;flex-wrap:wrap;color:#657590;font-weight:700;align-self:center;}
.cleanup-actions{display:flex;gap:8px;align-items:center;}
.button.tiny{padding:8px 12px;min-height:34px;font-size:13px;border-radius:12px;}
.button.danger{background:#dc2626;color:#fff;border-color:#dc2626;}
.cleanup-table td form{display:inline-block;margin-right:6px;}
.cleanup-table input{min-width:140px;}
.cleanup-table select{min-width:110px;}
@media (max-width: 1100px){.simple-console .console-sidebar{width:250px}.simple-console .console-main{margin-left:250px}.cleanup-grid{grid-template-columns:1fr}.cleanup-grid label.wide{grid-column:auto}}
