*{box-sizing:border-box}html{font-size:14px}body{margin:0;color:#1f2329;background:#f5f7fa;font:14px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Arial,sans-serif}a{color:#165dff;text-decoration:none}a:hover{text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1{font-size:26px;line-height:1.3;margin-bottom:6px}h2{font-size:18px}h3{font-size:16px}.muted,.page-head p,.section-sub{color:#86909c}.brand{display:flex;align-items:center;gap:10px;color:#1f2329;font-weight:700;font-size:16px}.brand-center{justify-content:center;margin-bottom:20px}.brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#07c160;color:white;font-weight:800}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 16px;border:1px solid transparent;border-radius:9px;font-weight:600;white-space:nowrap}.btn-primary{background:#07c160;color:white}.btn-primary:hover{background:#06ad56}.btn-secondary{background:white;border-color:#d9dde5;color:#1f2329}.btn-sm{height:32px;padding:0 12px;font-size:13px}.btn-lg{height:48px;padding:0 22px}.btn-block{width:100%}.link-button{border:0;background:none;padding:0;color:#165dff;font:inherit}.danger-text{color:#f53f3f}.icon-button{border:0;background:transparent;font-size:22px;line-height:1}.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px}.alert-success{background:#e8ffea;color:#168c45}.alert-error{background:#fff1f0;color:#b42318}.alert-warning{background:#fff7e8;color:#8b5a00}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:#f2f3f5;color:#4e5969;font-size:12px;font-weight:600}.badge-active{background:#e8ffea;color:#168c45}.badge-invalid,.badge-restricted,.badge-suspended{background:#fff1f0;color:#b42318}.badge-unverified,.badge-warning{background:#fff7e8;color:#8b5a00}.auth-body{min-height:100vh;display:grid;place-items:center;padding:32px 16px;background:linear-gradient(180deg,#f3fff8 0,#f5f7fa 45%)}.auth-shell{width:100%;max-width:460px}.auth-card{background:white;border:1px solid #eaedf2;border-radius:18px;padding:30px;box-shadow:0 16px 50px rgba(31,35,41,.07)}.auth-card-wide{max-width:620px;margin:auto}.auth-card h1{text-align:center}.auth-card>.muted{text-align:center;margin-bottom:24px}.form-stack{display:grid;gap:16px}.form-stack label,.form-grid label{display:grid;gap:6px;font-weight:600}.form-stack small,.form-grid small{font-weight:400;color:#86909c}.form-stack input,.form-stack select,.form-stack textarea,.form-grid input,.form-grid select,.form-grid textarea,.inline-form input,.inline-form select,.filter-bar input,.inline-secret input,.mini-feature-form input,.mini-feature-form select{width:100%;border:1px solid #d9dde5;background:#fff;border-radius:8px;padding:9px 11px;outline:0;min-height:40px}.form-stack input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.inline-form input:focus{border-color:#07c160;box-shadow:0 0 0 3px rgba(7,193,96,.1)}textarea{min-height:96px;resize:vertical}.auth-links{display:flex;justify-content:space-between;gap:12px;margin-top:18px}.step-pill{width:max-content;margin:0 auto 10px;padding:3px 9px;border-radius:999px;background:#e8fff0;color:#07883f;font-size:12px}.step-pill.dark{background:#1f2329;color:white}.workspace-list{display:grid;gap:10px;margin:20px 0}.workspace-row{display:flex;align-items:center;justify-content:space-between;border:1px solid #e5e6eb;border-radius:10px;padding:12px}.workspace-row div{display:grid}.workspace-row small{color:#86909c}.marketing-nav{height:70px;background:white;border-bottom:1px solid #edf0f3;padding:0 max(24px,calc((100% - 1180px)/2));display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.marketing-nav nav{display:flex;align-items:center;gap:24px}.hero{max-width:1180px;margin:auto;padding:90px 24px;display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}.hero h1{font-size:48px;letter-spacing:-1px;max-width:720px}.hero p{font-size:18px;color:#4e5969;max-width:650px}.eyebrow{color:#07883f;font-weight:700;margin-bottom:14px}.hero-actions{display:flex;gap:12px;margin-top:28px}.hero-card{background:white;border:1px solid #e5e6eb;border-radius:20px;padding:24px;box-shadow:0 24px 70px rgba(31,35,41,.10)}.demo-title{font-weight:700;margin-bottom:16px}.demo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.demo-grid div{background:#f7f8fa;padding:16px;border-radius:12px;display:grid}.demo-grid b{font-size:26px}.demo-grid span{color:#86909c}.demo-progress{margin-top:18px;position:relative;background:#f2f3f5;border-radius:8px;padding:13px;overflow:hidden;display:flex;justify-content:space-between}.demo-progress i{position:absolute;left:0;bottom:0;height:4px;background:#07c160}.marketing-section{padding:80px 24px;max-width:1180px;margin:auto}.marketing-section.alt{max-width:none;background:white;text-align:center}.marketing-section>h2{text-align:center;font-size:32px}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:38px}.feature-card{background:white;border:1px solid #e5e6eb;border-radius:16px;padding:22px}.feature-card p{color:#86909c;margin-bottom:0}.plan-cards{max-width:1000px;margin:30px auto 0;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.plan-cards div{border:1px solid #e5e6eb;border-radius:14px;padding:24px;display:grid;gap:5px}.plan-cards .featured{border-color:#07c160;box-shadow:0 0 0 2px rgba(7,193,96,.08)}.console-shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:230px;background:white;border-right:1px solid #eaedf2;display:flex;flex-direction:column;z-index:30}.sidebar-brand{height:70px;display:flex;align-items:center;gap:10px;padding:0 20px;border-bottom:1px solid #f0f1f3}.sidebar-brand div{display:grid}.sidebar-brand small{font-size:12px;color:#86909c;max-width:145px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-nav{display:grid;padding:14px 10px;gap:3px}.side-nav a{color:#4e5969;padding:9px 12px;border-radius:8px}.side-nav a:hover,.side-nav a.active{background:#eafff2;color:#07883f;font-weight:600}.nav-sep{height:1px;background:#edf0f3;margin:8px 10px}.sidebar-bottom{margin-top:auto;padding:14px 20px;border-top:1px solid #edf0f3;display:grid;gap:10px}.user-mini{display:grid}.user-mini span{font-size:12px;color:#86909c}.main{grid-column:2;min-width:0}.topbar{height:60px;position:sticky;top:0;z-index:20;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);border-bottom:1px solid #eaedf2;padding:0 26px;display:flex;align-items:center;justify-content:space-between}.topbar-title{font-weight:700}.topbar-user{color:#86909c;font-size:13px}.content{padding:26px;max-width:1500px;margin:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.page-head p{margin-bottom:0}.breadcrumb{font-size:13px;color:#86909c;margin-bottom:8px}.panel{background:white;border:1px solid #e5e6eb;border-radius:14px;padding:20px;margin-bottom:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:15px}.panel-head h2{margin-bottom:0}.panel-head>span{color:#86909c;font-size:13px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stat-grid.small{margin-bottom:0}.stat-card{background:white;border:1px solid #e5e6eb;border-radius:14px;padding:18px;display:grid}.stat-card span{color:#86909c}.stat-card strong{font-size:28px;margin-top:6px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:18px}.project-card{display:block;background:white;border:1px solid #e5e6eb;border-radius:14px;padding:18px;color:#1f2329;transition:.15s}.project-card:hover{border-color:#b6e8ca;box-shadow:0 8px 30px rgba(31,35,41,.05);transform:translateY(-1px)}.project-card-top{display:flex;justify-content:space-between;gap:10px}.project-card h3{margin-bottom:8px}.project-card p{color:#86909c;min-height:22px}.project-card small{color:#86909c}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:14px 0}.mini-stats span{font-size:12px;color:#86909c;display:grid}.mini-stats b{font-size:14px;color:#1f2329}.notice-list{display:grid;gap:9px}.notice-item{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:9px;background:#f7f8fa}.notice-item>span{width:8px;height:8px;border-radius:50%;background:#86909c}.notice-item.warning>span{background:#ff8f1f}.notice-item.danger>span{background:#f53f3f}.notice-item.success>span{background:#07c160}.usage-row{display:grid;gap:7px;margin:13px 0}.usage-row>div:first-child{display:flex;justify-content:space-between}.progress{height:8px;background:#f0f1f3;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;background:#07c160;border-radius:999px}.progress.warning i{background:#ff8f1f}.progress.danger i{background:#f53f3f}.progress.compact{width:120px;height:6px;margin-bottom:4px}.empty-state{text-align:center;padding:48px 20px}.empty-inline{padding:14px;color:#86909c;text-align:center}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.span-2{grid-column:span 2}.form-actions{display:flex;justify-content:flex-end}.inline-form,.filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.inline-form input,.inline-form select{width:auto;min-width:180px}.filter-bar{margin-bottom:14px}.filter-bar input{max-width:420px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:780px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid #edf0f3;vertical-align:middle}th{font-size:12px;color:#86909c;font-weight:600;background:#fafbfc}td small{display:block;color:#86909c}.qr-thumb{width:58px;height:58px;object-fit:contain;border-radius:6px;background:white}.row-actions{display:flex;align-items:center;gap:12px}.inline-secret{display:flex;gap:6px}.inline-secret input{width:140px;min-height:30px;padding:4px 8px}.subnav{display:flex;gap:18px;background:white;border:1px solid #e5e6eb;border-radius:12px;padding:10px 15px;margin-bottom:18px;overflow:auto}.subnav a{white-space:nowrap;color:#4e5969}.capacity-row{margin:14px 0}.capacity-row>div:first-child{display:flex;justify-content:space-between;margin-bottom:6px}.current-qr{display:flex;align-items:center;gap:16px;background:#f7f8fa;border-radius:10px;padding:12px}.current-qr img{width:120px;height:120px;object-fit:contain}.danger-zone{display:flex;align-items:center;justify-content:space-between;gap:18px;border-color:#ffd6d2}.danger-zone p{margin-bottom:0;color:#86909c}.trend-list{display:grid;gap:10px}.trend-row{display:grid;grid-template-columns:90px 1fr 80px;align-items:center;gap:12px}.trend-bar{height:10px;background:#f0f1f3;border-radius:999px;overflow:hidden}.trend-bar i{display:block;height:100%;background:#07c160;border-radius:999px}.detail-list{display:grid;gap:8px}.detail-list>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #f0f1f3;padding:6px 0}.list-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid #edf0f3}.list-row div{display:grid}.list-row small{color:#86909c}.compact-form{margin-top:18px}.mini-feature-form{display:grid;grid-template-columns:1fr 90px 100px;gap:7px;margin-top:16px}.mini-feature-form .btn{grid-column:1/-1}.truncate{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.platform-sidebar{background:#171a1f;border-right-color:#2a2e35;color:#fff}.platform-sidebar .sidebar-brand{border-bottom-color:#2a2e35}.platform-sidebar .side-nav a{color:#bdc3cc}.platform-sidebar .side-nav a:hover{background:#252a31;color:#fff}.platform-sidebar .sidebar-bottom{border-top-color:#2a2e35}.platform-sidebar .link-button,.platform-sidebar a{color:#bdc3cc}.scan-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:#f5f7fa}.scan-card{position:relative;width:100%;max-width:430px;background:white;border-radius:18px;padding:28px 22px;text-align:center;box-shadow:0 10px 36px rgba(31,35,41,.07)}.scan-logo{width:52px;height:52px;object-fit:contain;border-radius:12px}.scan-brand{color:#86909c;margin:8px 0 14px}.status-pill{display:inline-flex;padding:4px 10px;border-radius:999px;background:#e8ffea;color:#07883f;font-size:12px;font-weight:700}.status-pill.danger{background:#fff1f0;color:#b42318}.scan-card h1{font-size:23px;margin-top:14px}.scan-card h2{font-size:17px}.scan-sub,.scan-help,.scan-note{color:#86909c}.group-qr{width:260px;height:260px;max-width:100%;margin:18px auto;background:#fff;padding:8px;border:1px solid #edf0f3;border-radius:12px}.group-qr img{width:100%;height:100%;object-fit:contain}.scan-note{font-size:12px;background:#f7f8fa;padding:9px;border-radius:8px}.state-card{padding:50px 24px}.scan-icon{font-size:44px;color:#07c160}.error-page{min-height:100vh;display:grid;place-items:center}.error-card{width:min(440px,calc(100% - 32px));background:white;border-radius:16px;padding:32px;text-align:center}.error-code{font-size:48px;font-weight:800;color:#07c160}.mobile-only{display:none}@media(max-width:1000px){.project-grid{grid-template-columns:repeat(2,1fr)}.stat-grid{grid-template-columns:repeat(2,1fr)}.hero{grid-template-columns:1fr;gap:36px}.feature-grid{grid-template-columns:repeat(2,1fr)}.plan-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.marketing-nav{padding:0 16px}.marketing-nav nav>a:not(.btn){display:none}.hero{padding:56px 18px}.hero h1{font-size:36px}.marketing-section{padding:55px 18px}.feature-grid,.project-grid,.grid-2,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.plan-cards{grid-template-columns:1fr 1fr}.console-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s;box-shadow:0 10px 40px rgba(0,0,0,.15)}.sidebar.open{transform:translateX(0)}.main{display:block}.mobile-only{display:inline-flex}.topbar{padding:0 16px}.topbar-user{display:none}.content{padding:16px}.page-head{align-items:flex-start}.stat-grid{grid-template-columns:1fr 1fr}.stat-card{padding:14px}.stat-card strong{font-size:23px}.panel{padding:15px}.inline-form{align-items:stretch}.inline-form input,.inline-form select{width:100%}.danger-zone{align-items:flex-start;flex-direction:column}.mini-stats{grid-template-columns:1fr 1fr}.trend-row{grid-template-columns:70px 1fr 55px}.auth-card{padding:22px}.group-qr{width:240px;height:240px}}@media(max-width:480px){.stat-grid,.demo-grid,.plan-cards{grid-template-columns:1fr}.feature-grid{grid-template-columns:1fr}.hero h1{font-size:31px}.page-head{flex-direction:column}.page-head>.btn{width:100%}.auth-links{flex-wrap:wrap}}.btn-danger{background:#f53f3f;color:#fff}.tiny-link{display:block;font-size:11px;text-align:center;margin-top:3px}.locked-feature{display:flex;align-items:center;min-height:40px;padding:8px 10px;border-radius:8px;background:#f7f8fa;color:#86909c;font-weight:400}.modal-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(17,24,39,.48);display:grid;place-items:center;padding:18px}.modal-backdrop[hidden]{display:none}.modal-card{width:min(430px,100%);background:#fff;border-radius:16px;padding:22px;box-shadow:0 24px 80px rgba(0,0,0,.25)}.modal-card h3{margin-bottom:8px}.modal-card p{color:#4e5969;white-space:pre-wrap}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.step-pill.inline{margin:0 0 6px}.setup-panel{border-color:#b9efd0;background:linear-gradient(135deg,#fbfffc,#f0fff6)}.setup-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.setup-steps a{display:flex;align-items:center;gap:8px;padding:11px;border:1px solid #dce4df;border-radius:10px;background:#fff;color:#4e5969}.setup-steps a.done{color:#07883f;border-color:#b9efd0}.setup-steps span{font-size:18px}@media(max-width:768px){.setup-steps{grid-template-columns:1fr 1fr}}.scan-footer{margin-top:18px;padding-top:14px;border-top:1px solid #edf0f3;color:#86909c;font-size:12px}.compact-inline{margin-top:8px}

.wechat-login-card{max-width:460px}
.wechat-login-box{text-align:center}
.wechat-login-qr{width:250px;height:250px;max-width:100%;image-rendering:pixelated;border:1px solid #e5e6eb;border-radius:16px;padding:12px;background:#fff}
.wechat-login-state{font-weight:700;margin:12px 0;color:#07c160}
.legacy-login,.legacy-bind{margin-top:18px;text-align:left}
.legacy-login summary,.legacy-bind summary{cursor:pointer;color:#646a73}

.payment-card{text-align:center;max-width:460px}
.payment-amount{font-size:36px;font-weight:800;margin:18px 0;color:#1f2329}
.payment-status{margin-top:16px;font-weight:700;color:#07c160}

/* V2.3.0 verification, dashboard, localized uploads, payment status and WeChat domain verification */
.file-picker{position:relative;display:flex;align-items:center;gap:10px;min-height:42px;border:1px solid #d9dde5;border-radius:9px;background:#fff;padding:5px 8px;overflow:hidden}.file-picker input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:2}.file-picker-button{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 11px;border-radius:7px;background:#f2f3f5;color:#1f2329;font-weight:600}.file-picker-name{min-width:0;color:#86909c;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-picker.has-file .file-picker-name{color:#1f2329}.file-picker:focus-within{border-color:#07c160;box-shadow:0 0 0 3px rgba(7,193,96,.1)}
.topbar-user{display:flex;align-items:center;gap:10px}.topbar-verification{font-size:12px;padding:2px 8px;border-radius:999px;background:#fff7e8;color:#8b5a00}.nav-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#ff7d00;margin-left:6px;vertical-align:1px}
.verification-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;background:#f2f3f5;color:#4e5969}.verification-verified{background:#e8ffea;color:#168c45}.verification-pending,.verification-unverified{background:#fff7e8;color:#8b5a00}.verification-rejected{background:#fff1f0;color:#b42318}.verification-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.verification-option{margin-bottom:0}.verification-option-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.verification-option-head h2,.verification-option-head p{margin-bottom:0}.verification-option-icon,.verification-modal-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:#e8fff0;color:#07883f;font-size:18px;font-weight:800}.verification-rules{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;padding:13px 14px;border-radius:10px;background:#f7f8fa;margin-bottom:16px}.verification-rules span{color:#86909c}.verification-rules strong{font-weight:600;text-align:right}.verification-form{margin-top:14px}.check-row{grid-template-columns:18px 1fr!important;align-items:start;gap:9px!important;font-weight:400!important}.check-row input{width:auto!important;min-height:0!important;margin-top:4px}.verification-success{display:flex;align-items:center;gap:16px;border-color:#b9efd0;background:#fbfffc}.verification-success-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:#07c160;color:#fff;font-size:28px;font-weight:700}.verification-success h2,.verification-success p{margin-bottom:4px}.verification-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.verification-summary-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:14px}.verification-summary-grid>div{display:grid;gap:3px;padding:12px;border-radius:10px;background:#f7f8fa}.verification-summary-grid span{font-size:12px;color:#86909c}.verification-summary-grid strong{word-break:break-word}.verification-expedite{display:flex;gap:8px;align-items:center;margin-top:15px;padding:12px 14px;border-radius:10px;background:#fff7e8;color:#8b5a00}.verification-expedite-inline{display:block;padding:10px 12px;border-radius:8px;background:#fff7e8;color:#8b5a00}.verification-policy-note{padding:12px 14px;border-radius:10px;background:#f7f8fa;color:#4e5969}
.verification-gate-modal{z-index:100}.verification-gate-card{width:min(560px,100%)}.verification-gate-card>.verification-modal-icon{margin:0 auto 12px}.verification-gate-card>h3,.verification-gate-card>p{text-align:center}.verification-modal-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.verification-modal-options a{display:grid;gap:4px;padding:15px;border:1px solid #e5e6eb;border-radius:12px;color:#1f2329;background:#fff}.verification-modal-options a:hover{border-color:#07c160;background:#fbfffc}.verification-modal-options span{color:#86909c;font-size:12px}
.filter-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filter-tabs a{padding:7px 12px;border:1px solid #e5e6eb;border-radius:999px;background:#fff;color:#4e5969}.filter-tabs a.active{border-color:#07c160;background:#eafff2;color:#07883f;font-weight:600}.verification-review-list{display:grid;gap:14px}.verification-review-card{border:1px solid #e5e6eb;border-radius:13px;padding:16px}.verification-review-title{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.verification-review-title h3{margin-bottom:3px}.verification-review-title p{margin-bottom:0;color:#86909c}.verification-review-actions{display:flex;gap:10px;align-items:flex-end;margin-top:14px;padding-top:14px;border-top:1px solid #edf0f3}.review-form{display:flex;gap:10px;align-items:flex-end}.reject-form{flex:1}.reject-form textarea{min-height:72px}.verification-auto-note{color:#86909c}.compact-alert{margin:12px 0 0}.verification-pending{border-color:#ffd591}
.dashboard-usage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dashboard-usage-item{padding:12px;border:1px solid #edf0f3;border-radius:10px}.dashboard-usage-item .usage-row{margin:0}.usage-meta{display:flex;justify-content:space-between;gap:10px;margin-top:6px;color:#86909c;font-size:12px}.quick-actions{display:flex;gap:10px;flex-wrap:wrap}.quick-actions .btn{height:36px}.resource-level{font-size:12px;font-weight:600}.resource-level.warning{color:#d46b08}.resource-level.danger{color:#b42318}.resource-level.ok{color:#168c45}
@media(max-width:900px){.verification-choice-grid{grid-template-columns:1fr}.verification-summary-grid,.verification-summary-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.verification-review-title{display:grid}.verification-review-actions,.review-form{align-items:stretch;flex-direction:column}.reject-form{width:100%}.dashboard-usage-grid{grid-template-columns:1fr}}
@media(max-width:560px){.verification-summary-grid,.verification-summary-grid.compact,.verification-modal-options{grid-template-columns:1fr}.verification-expedite{align-items:flex-start;flex-direction:column}.topbar-verification{display:none}.file-picker{align-items:flex-start;flex-direction:column}.file-picker-button{width:100%}.file-picker-name{width:100%}}
.setup-steps{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1100px){.setup-steps{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:768px){.setup-steps{grid-template-columns:1fr 1fr}}
/* V2.3.0 payment confirmation and WeChat OAuth-domain verification */
.success-text{color:#168c45!important}.payment-qr-stage{display:grid;justify-items:center;gap:4px}.payment-tip{max-width:360px;margin:4px auto 0;padding:10px 12px;border-radius:10px;background:#f7f8fa;color:#4e5969;font-size:12px}.payment-result-panel{margin:18px 0;padding:22px 16px;border:1px solid #b9efd0;border-radius:14px;background:#f0fff6}.payment-result-panel[hidden]{display:none}.payment-result-icon{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 10px;border-radius:50%;background:#07c160;color:#fff;font-size:30px;font-weight:800}.payment-result-panel strong{display:block;font-size:18px;margin-bottom:5px}.payment-result-panel p{margin-bottom:0}.wechat-actions{display:grid;gap:10px;min-width:260px}.wechat-verify-file-form{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:8px;align-items:center}.compact-file-picker{min-width:180px;min-height:36px;padding:3px 6px}.compact-file-picker .file-picker-button{height:28px;font-size:12px}.compact-file-picker .file-picker-name{font-size:12px}@media(max-width:768px){.wechat-verify-file-form{grid-template-columns:1fr}.wechat-verify-file-form .btn{width:100%}.wechat-actions{min-width:220px}}

/* V2.3.0 account login, shared service account and fixed input-error notices */
.global-error-notice{position:fixed;z-index:3000;top:14px;left:50%;transform:translateX(-50%);width:min(680px,calc(100% - 28px));pointer-events:none}.global-error-notice[hidden]{display:none}.global-error-content{display:flex;align-items:flex-start;gap:12px;padding:13px 14px;border:1px solid #ffccc7;border-radius:12px;background:#fff1f0;color:#b42318;box-shadow:0 10px 32px rgba(180,35,24,.18);pointer-events:auto;font-weight:600}.global-error-content [data-global-error-message]{flex:1;white-space:pre-wrap;word-break:break-word}.global-error-close{border:0;background:transparent;color:#b42318;font-size:22px;line-height:1;cursor:pointer;padding:0 2px}.verification-choice-card{display:block;color:inherit;border:1px solid #e5e6eb;border-radius:14px;padding:18px;background:#fff;transition:.15s ease}.verification-choice-card:hover{border-color:#07c160;box-shadow:0 8px 28px rgba(7,193,96,.09)}.plan-feature-highlight{display:flex;justify-content:space-between;gap:12px;padding:9px 11px;margin:8px 0 12px;border-radius:9px;background:#f0fff6;color:#168c45}.shared-wechat-card{border-color:#b9efd0;background:linear-gradient(135deg,#fff,#f4fff8)}.danger-zone{border-color:#ffccc7;background:#fffafa}.auth-divider{display:flex;align-items:center;gap:10px;margin:20px 0;color:#86909c}.auth-divider:before,.auth-divider:after{content:"";height:1px;flex:1;background:#e5e6eb}.account-login-box h2{font-size:18px}

/* Social live-code unified detail */
.livecode-entry-card{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:18px;padding:18px;border:1px solid #e5e6eb;border-radius:12px;background:#fafbfc}.livecode-entry-card>div:first-child{min-width:0}.livecode-entry-card h3{font-size:14px;word-break:break-all;margin-bottom:6px}.livecode-entry-card .eyebrow{display:block;margin-bottom:5px}.livecode-entry-qr{display:grid;justify-items:center;gap:10px;flex:0 0 auto}.qr-preview{width:150px;height:150px;object-fit:contain;background:#fff;border:1px solid #edf0f3;border-radius:10px;padding:6px}.success-text{color:#168c45}@media(max-width:768px){.livecode-entry-card{align-items:flex-start;flex-direction:column}.livecode-entry-qr{width:100%}.setup-steps{grid-template-columns:1fr 1fr}}@media(max-width:480px){.setup-steps{grid-template-columns:1fr}.qr-preview{width:180px;height:180px}}

/* V2.3.0 UI alignment hotfix: unified text, controls, buttons and cards */
:root{--ui-border:#e5e6eb;--ui-border-input:#d9dde5;--ui-radius-card:12px;--ui-radius-control:9px;--ui-control-height:40px;--ui-text:#1f2329;--ui-muted:#86909c;--ui-surface:#fff;--ui-soft:#f7f8fa;--ui-green:#07c160;--ui-green-dark:#06ad56}
.console-body .content,.auth-body{color:var(--ui-text)}
.console-body .page-head{align-items:center;margin-bottom:20px}.console-body .page-head>div{min-width:0}.console-body .page-head h1{margin:0 0 4px;font-size:24px;line-height:32px;font-weight:700}.console-body .page-head p{margin:0;font-size:13px;line-height:20px;color:var(--ui-muted)}
.console-body .panel,.console-body .stat-card,.console-body .project-card,.console-body .verification-choice-card,.console-body .verification-review-card,.console-body .dashboard-usage-item,.auth-body .auth-card{border-color:var(--ui-border);border-radius:var(--ui-radius-card)}
.console-body .panel{padding:20px}.console-body .panel-head{align-items:flex-start;gap:16px;margin-bottom:16px}.console-body .panel-head>div{min-width:0}.console-body .panel-head h2,.console-body .panel-head h3{margin:0;font-size:17px;line-height:24px;font-weight:700}.console-body .panel-head p{margin:4px 0 0;font-size:13px;line-height:20px;color:var(--ui-muted)}.console-body .panel-head>span{line-height:24px}
.console-body .form-grid{column-gap:16px;row-gap:18px;align-items:start}.console-body .form-stack{gap:18px}.console-body .form-grid label,.console-body .form-stack label,.auth-body .form-stack label{gap:7px;line-height:20px;font-weight:600}.console-body .form-grid small,.console-body .form-stack small,.auth-body .form-stack small{display:block;margin:0;color:var(--ui-muted);font-size:12px;line-height:18px;font-weight:400}
.console-body .form-grid input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),.console-body .form-grid select,.console-body .inline-form input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),.console-body .inline-form select,.console-body .filter-bar input:not([type="file"]),.console-body .mini-feature-form input:not([type="file"]),.console-body .mini-feature-form select,.auth-body .form-stack input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),.auth-body .form-stack select{height:var(--ui-control-height);min-height:var(--ui-control-height);padding:0 12px;border:1px solid var(--ui-border-input);border-radius:var(--ui-radius-control);background:var(--ui-surface);line-height:20px;outline:0;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
.console-body .form-grid textarea,.console-body .form-stack textarea,.auth-body .form-stack textarea{min-height:96px;padding:10px 12px;border:1px solid var(--ui-border-input);border-radius:var(--ui-radius-control);background:var(--ui-surface);line-height:20px;outline:0;resize:vertical;transition:border-color .15s ease,box-shadow .15s ease}
.console-body .form-grid input:focus,.console-body .form-grid select:focus,.console-body .form-grid textarea:focus,.console-body .form-stack input:focus,.console-body .form-stack select:focus,.console-body .form-stack textarea:focus,.console-body .inline-form input:focus,.console-body .inline-form select:focus,.console-body .filter-bar input:focus,.auth-body .form-stack input:focus,.auth-body .form-stack select:focus,.auth-body .form-stack textarea:focus{border-color:var(--ui-green);box-shadow:0 0 0 3px rgba(7,193,96,.10)}
.console-body .inline-secret input{height:32px!important;min-height:32px!important;padding:0 8px!important}.console-body .check-row input{height:auto!important;min-height:0!important;padding:0!important}
.btn{height:var(--ui-control-height);min-height:var(--ui-control-height);padding:0 16px;border-radius:var(--ui-radius-control);font-size:14px;line-height:1;font-weight:600}.btn-sm{height:34px;min-height:34px;padding:0 12px;font-size:13px}.btn-lg{height:48px;min-height:48px}.btn-primary{background:var(--ui-green)}.btn-primary:hover{background:var(--ui-green-dark)}.btn-secondary{border-color:var(--ui-border-input);background:#fff}.btn:focus-visible,.icon-button:focus-visible,.link-button:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(7,193,96,.12)}
.icon-button{display:inline-grid;place-items:center;width:36px;height:36px;min-width:36px;padding:0;border-radius:8px;color:#4e5969;font-size:20px;line-height:1}.icon-button:hover{background:#f2f3f5;color:var(--ui-text)}
.console-body .form-actions{align-items:center;justify-content:flex-end;gap:10px;padding-top:2px}.console-body .inline-form,.console-body .filter-bar{gap:10px}.console-body .row-actions{gap:10px;flex-wrap:wrap}.console-body .quick-actions{align-items:center;gap:10px}
.console-body .file-picker{min-height:var(--ui-control-height);border-color:var(--ui-border-input);border-radius:var(--ui-radius-control);padding:4px 7px}.console-body .file-picker-button{height:30px;border-radius:7px}.console-body .current-qr{border:1px solid #edf0f3;border-radius:var(--ui-radius-card)}
.console-body .empty-state{padding:46px 20px}.console-body .empty-state h3{margin-bottom:6px}.console-body .empty-state p{margin-bottom:18px;color:var(--ui-muted)}
.console-body table th{height:44px;padding:10px 12px;font-size:12px;line-height:18px}.console-body table td{padding:12px;line-height:20px}.console-body .badge{min-height:22px;line-height:18px}.console-body .subnav{border-radius:var(--ui-radius-card)}
.console-body .project-card{padding:18px}.console-body .project-card-top{align-items:flex-start}.console-body .project-card h3{line-height:24px}.console-body .stat-card{padding:18px}.console-body .stat-card span{font-size:13px;line-height:20px}.console-body .stat-card strong{line-height:1.25}
.auth-body .auth-card{padding:28px}.auth-body .auth-card h1{font-size:24px;line-height:32px;margin-bottom:6px}.auth-body .auth-card>.muted{font-size:13px;line-height:20px}
@media(max-width:768px){.console-body .page-head{align-items:flex-start}.console-body .panel{padding:16px}.console-body .panel-head{gap:12px}.console-body .form-grid{row-gap:16px}.console-body .form-actions{justify-content:stretch}.console-body .form-actions .btn{width:100%}}
.console-body .quick-actions .btn{height:34px;min-height:34px}

/* V2.4.0 WeChat profile authorization and scan-user identity UI */
.scan-consent-card{max-width:460px}.scan-consent-card .scan-icon{margin-top:6px}.consent-purpose{display:grid;gap:10px;margin:20px 0;text-align:left}.consent-purpose>div{display:grid;grid-template-columns:88px 1fr;gap:12px;padding:11px 12px;border:1px solid #edf0f3;border-radius:10px;background:#fafbfc}.consent-purpose strong{font-size:13px;color:#1f2329}.consent-purpose span{font-size:13px;color:#4e5969}.scan-consent-button{width:100%;justify-content:center;margin:4px 0 14px}.wechat-user-cell{display:flex;align-items:center;gap:10px;min-width:160px}.wechat-user-cell.compact{min-width:130px}.wechat-user-cell>div{display:grid;gap:2px}.wechat-user-cell small{color:#86909c;font-size:11px}.wechat-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;flex:0 0 42px;background:#f2f3f5;border:1px solid #edf0f3}.wechat-user-cell.compact .wechat-avatar{width:34px;height:34px;flex-basis:34px}.wechat-avatar-placeholder{display:grid;place-items:center;color:#07a94f;font-weight:700;background:#eafff2}.scan-user-tip{margin:0 0 14px;padding:10px 12px;border-radius:9px;background:#f7f8fa;color:#86909c;font-size:12px}.scan-user-table{min-width:880px}.btn-ghost{background:transparent;color:#4e5969;border:1px solid transparent}.btn-ghost:hover{background:#f7f8fa}
@media(max-width:480px){.consent-purpose>div{grid-template-columns:1fr;gap:3px}.scan-consent-card{padding:24px 18px}}
/* V2.4.0 authorization UI hotfix 2 */
.scan-consent-card{max-width:400px;padding:34px 26px 28px;border:1px solid #edf0f3;border-radius:22px;background:rgba(255,255,255,.97);box-shadow:0 14px 42px rgba(31,35,41,.045);transform:translateY(-7vh)}
.scan-consent-copy{width:100%;max-width:340px;margin:0 auto}
.scan-consent-card h1{margin:0 0 18px;font-size:24px;line-height:1.35;font-weight:700;letter-spacing:.01em;color:#1f2329;text-align:center}
.scan-consent-lead{margin:0 0 10px;color:#4e5969;font-size:15px;line-height:1.9;text-align:left}
.scan-consent-next{margin:0 0 24px;color:#86909c;font-size:14px;line-height:1.75;text-align:left}
.scan-consent-card .scan-consent-button{width:100%;height:50px;margin:0;border-radius:12px;font-size:16px;font-weight:600;justify-content:center}
@media(max-width:480px){.scan-consent-card{max-width:calc(100% - 8px);padding:30px 22px 24px;transform:translateY(-5vh)}.scan-consent-copy{max-width:330px}.scan-consent-card h1{font-size:23px;margin-bottom:16px}.scan-consent-lead{font-size:15px;line-height:1.85}.scan-consent-next{font-size:13px;margin-bottom:22px}}
@media(max-height:650px){.scan-consent-card{transform:none}}


/* V2.5.0 intelligent routing */
.pool-group-card{margin-top:16px;border:1px solid #e5e6eb;border-radius:12px;overflow:hidden;background:#fff}.pool-group-card+.pool-group-card{margin-top:18px}.pool-group-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;background:#fafbfc;border-bottom:1px solid #edf0f3}.pool-group-head>div{display:grid;gap:2px}.pool-group-head strong{font-size:15px}.pool-group-head small{color:#86909c}.pool-disabled{opacity:.7}.compact-empty{padding:24px 16px}.weight-ratio{display:block;color:#86909c;font-size:11px}.routing-level{display:inline-flex;width:max-content;padding:2px 7px;border-radius:999px;background:#eafff2;color:#168c45;font-size:11px;font-weight:700}.routing-strategy-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.strategy-option{display:flex;gap:10px;padding:14px;border:1px solid #e5e6eb;border-radius:11px;background:#fff;cursor:pointer}.strategy-option:has(input:checked){border-color:#07c160;box-shadow:0 0 0 2px rgba(7,193,96,.08);background:#fbfffc}.strategy-option input{margin-top:4px}.strategy-option span{display:grid;gap:3px}.strategy-option small{color:#86909c;font-weight:400}.routing-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end}.routing-chain{display:grid;justify-items:center;margin:24px 0}.routing-node{width:min(100%,560px);display:grid;gap:4px;padding:14px 16px;border:1px solid #dfe4ea;border-radius:12px;background:#fff}.routing-node>span{font-size:12px;color:#168c45;font-weight:700}.routing-node>small{color:#86909c}.routing-node.disabled{opacity:.55}.routing-node.final{background:#fafbfc}.routing-arrow{padding:9px 0;color:#86909c;font-size:12px}.routing-node-actions{display:flex;gap:12px;margin-top:6px}.routing-admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding-top:18px;border-top:1px solid #edf0f3}.routing-admin-grid h3,.routing-simulator h3{margin-bottom:8px}.fallback-settings{display:grid;gap:10px}.fallback-edit{grid-template-columns:minmax(160px,1fr) 100px auto}.routing-simulator{margin-top:20px;padding:16px;border:1px solid #e5e6eb;border-radius:12px;background:#fafbfc}.routing-simulator>.inline-form{margin-top:10px}.simulation-result{margin-top:16px}.simulation-summary{display:flex;flex-wrap:wrap;gap:10px 18px;margin-bottom:12px}.simulation-summary span{color:#4e5969}.simulation-summary .danger-text{color:#f53f3f}.simulation-summary .success-text{color:#168c45}
@media(max-width:768px){.routing-strategy-form,.routing-admin-grid{grid-template-columns:1fr}.routing-form-actions{justify-content:stretch}.routing-form-actions .btn{width:100%}.pool-group-head{align-items:flex-start;flex-direction:column}.pool-group-head .btn{width:100%}.fallback-edit{grid-template-columns:1fr}.simulation-summary{display:grid;gap:5px}.subnav{overflow-x:auto;white-space:nowrap}}

/* V2.5.1 visitor risk controls */
.risk-action{position:relative;display:inline-block}.risk-action>summary{list-style:none;cursor:pointer}.risk-action>summary::-webkit-details-marker{display:none}
.risk-inline-form{position:absolute;right:0;z-index:30;min-width:310px;padding:14px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.12);display:grid;gap:9px}
.risk-inline-form label{display:grid;gap:4px;font-size:12px}.risk-inline-form input,.risk-inline-form select{width:100%}
.badge-danger{background:#fee2e2;color:#991b1b}.row-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
@media(max-width:720px){.risk-inline-form{position:fixed;left:16px;right:16px;bottom:16px;min-width:0;max-height:80vh;overflow:auto}}

/* V2.5.1 UI refinement: unified user cell / risk modal / table actions */
.user-cell{display:flex;align-items:center;gap:8px;min-width:150px}
.user-cell-compact{min-width:130px}
.user-cell-meta{display:grid;min-width:0}
.user-cell strong,.user-cell-meta strong{display:block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-cell small,.user-cell-meta small{display:block;color:#86909c;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-avatar{width:28px;height:28px;min-width:28px;border-radius:50%;object-fit:cover;background:#f2f3f5;border:1px solid #eaedf2}
.user-cell-compact .user-avatar{width:26px;height:26px;min-width:26px}
.user-avatar-placeholder{display:inline-grid;place-items:center;background:#e8fff0;color:#07883f;font-weight:700}
.btn-danger-ghost{height:32px;padding:0 12px;border:1px solid #ffd1d1;background:#fff;color:#d92d20;border-radius:8px;font-weight:600}
.btn-danger-ghost:hover{background:#fff1f0;border-color:#ffb3b3}
.risk-table th,.risk-table td{vertical-align:middle}.table-actions-col{width:86px;white-space:nowrap}
.risk-table td:last-child{white-space:nowrap}
.modal-open{overflow:hidden}
.risk-modal{z-index:80;padding:20px;align-items:center;justify-content:center}
.risk-modal:not([hidden]){display:flex}
.risk-modal-card{width:min(620px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:0}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 24px 14px;border-bottom:1px solid #edf0f3}
.modal-head h3{margin:0 0 5px;font-size:19px}.modal-head p{margin:0}.modal-head .eyebrow{margin-bottom:4px;font-size:12px}
.modal-close{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;color:#86909c}.modal-close:hover{background:#f2f3f5;color:#1f2329}
.risk-modal-form{padding:20px 24px 22px}
.risk-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.risk-form-grid label{align-content:start}
.risk-boundary-note{margin-top:16px;padding:10px 12px;border-radius:8px;background:#f7f8fa;color:#646a73;font-size:12px;line-height:1.6}
.risk-modal .modal-actions{margin-top:20px;padding-top:16px;border-top:1px solid #edf0f3;justify-content:flex-end}
.row-actions{min-width:112px}
@media(max-width:720px){
  .user-cell{min-width:150px}.user-cell strong,.user-cell-meta strong{max-width:145px}
  .risk-modal{padding:0;align-items:flex-end}.risk-modal-card{width:100%;max-height:90vh;border-radius:16px 16px 0 0}
  .modal-head{padding:18px 18px 12px}.risk-modal-form{padding:16px 18px 20px}
  .risk-form-grid{grid-template-columns:1fr}.risk-form-grid .span-2{grid-column:auto}
  .risk-modal .modal-actions{position:sticky;bottom:-20px;background:#fff;margin-left:-18px;margin-right:-18px;padding:14px 18px 20px}
}

/* V2.5.1 UI3 hotfix: compact visitor avatars and deterministic risk modal */
.scan-user-table .user-avatar,.risk-table .user-avatar,#assignments .user-avatar{
  width:22px!important;height:22px!important;min-width:22px!important;max-width:22px!important;min-height:22px!important;max-height:22px!important;
  flex:0 0 22px!important;border-radius:50%;object-fit:cover
}
.scan-user-table .user-cell,.risk-table .user-cell,#assignments .user-cell{gap:7px;min-width:0}
.risk-modal{z-index:1200!important}
.risk-modal[hidden]{display:none!important}
.risk-modal:not([hidden]){display:flex!important}

/* V2.5.1 UI4 */
.user-cell .user-avatar,.scan-user-table .user-avatar,.risk-table .user-avatar,#assignments .user-avatar,.risk-user-avatar{width:26px!important;height:26px!important;min-width:26px!important;max-width:26px!important;min-height:26px!important;max-height:26px!important;flex:0 0 26px!important;border-radius:50%;object-fit:cover}.risk-form-page{max-width:760px;margin-left:auto;margin-right:auto}.risk-form-user{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:18px;margin-bottom:20px;border-bottom:1px solid #edf0f3}.risk-server-form{grid-template-columns:repeat(2,minmax(0,1fr))}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}@media(max-width:720px){.risk-server-form{grid-template-columns:1fr}.risk-server-form .span-2{grid-column:auto}.risk-form-user{align-items:flex-start;flex-direction:column}}

/* V2.5.1 UI5 */
.user-cell .user-avatar,.scan-user-table .user-avatar,.risk-table .user-avatar,#assignments .user-avatar,.risk-user-avatar{width:30px!important;height:30px!important;min-width:30px!important;max-width:30px!important;min-height:30px!important;max-height:30px!important;flex:0 0 30px!important}.scan-user-table .user-cell{gap:8px}.filter-bar select[name="group_id"]{min-width:180px;max-width:280px}

/* V2.5.1 UI7 */
.inline-actions{display:flex;align-items:center;gap:12px;white-space:nowrap}.inline-actions form{margin:0}.danger-link{color:#d92d20!important}.danger-link:hover{color:#b42318!important;text-decoration:underline}

/* V2.5.1 UI8 */
.project-card{position:relative}.project-card-top{gap:12px}.project-card-top h3{min-width:0;flex:1}.project-card-main-link{color:inherit;text-decoration:none}.project-card-main-link:hover{color:var(--primary,#0aa968)}.project-card-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.project-edit-btn{padding:5px 10px!important;line-height:1.2}.project-edit-form{max-width:760px;margin-left:auto;margin-right:auto}

/* V2.5.1 UI9 */
.project-card-clickable{cursor:pointer;transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease}
.project-card-clickable:hover{box-shadow:0 8px 24px rgba(16,24,40,.08);border-color:#d0d5dd}
.project-card-clickable:focus-visible{outline:2px solid #12b76a;outline-offset:2px}
.project-card-actions,.project-card-main-link{position:relative;z-index:2}

/* V2.6.0 活码海报 */
.poster-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.poster-card{border:1px solid #e4e7ec;border-radius:14px;overflow:hidden;background:#fff}.poster-thumb{height:250px;background:#f2f4f7;display:flex;align-items:center;justify-content:center;color:#667085;text-decoration:none}.poster-thumb img{width:100%;height:100%;object-fit:contain}.poster-card-body{padding:14px}.poster-card-body h3{margin:0 0 10px}.poster-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}.poster-stats span{font-size:12px;color:#667085}.poster-stats b{display:block;font-size:17px;color:#101828}.poster-create-quick{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.poster-create-card{margin:0}.poster-template-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.poster-template-card{border:1px solid #e4e7ec;border-radius:12px;padding:10px}.template-preview{aspect-ratio:3/4;background:linear-gradient(160deg,#ecfdf3,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:8px;margin-bottom:10px}.template-preview span,.template-preview i{font-size:12px;color:#667085}.poster-editor{margin:-24px}.poster-editor-top{height:64px;padding:0 18px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #e4e7ec;background:#fff}.poster-name-input{max-width:280px;font-weight:700}.save-state{margin-left:auto;color:#667085;font-size:13px}.poster-editor-layout{height:calc(100vh - 128px);min-height:650px;display:grid;grid-template-columns:170px minmax(400px,1fr) 280px}.poster-tools,.poster-properties{background:#fff;padding:16px;border-right:1px solid #e4e7ec;overflow:auto}.poster-properties{border-right:0;border-left:1px solid #e4e7ec}.poster-tools>button{display:block;width:100%;padding:12px;margin-bottom:8px;border:1px solid #e4e7ec;border-radius:9px;background:#fff;text-align:left;cursor:pointer}.poster-help,.poster-safety{margin-top:22px;padding:12px;border-radius:10px;background:#f6fef9;font-size:12px;color:#475467}.poster-stage-wrap{background:#eef1f4;display:flex;flex-direction:column;min-width:0}.poster-stage{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;padding:40px}.poster-canvas{position:relative;background:#fff center/cover no-repeat;box-shadow:0 10px 35px rgba(16,24,40,.14);flex:0 0 auto;overflow:hidden}.poster-element{position:absolute;box-sizing:border-box;cursor:move}.poster-element.selected{outline:2px solid #12b76a;outline-offset:2px}.poster-qr img,.poster-image img{width:100%;height:100%;object-fit:fill;display:block}.poster-qr span{position:absolute;top:100%;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:12px;background:#fff;padding:2px 5px}.poster-text{white-space:pre-wrap;line-height:1.25;overflow:hidden}.poster-zoom{height:44px;display:flex;align-items:center;justify-content:center;gap:12px}.poster-zoom button{border:1px solid #d0d5dd;background:#fff;border-radius:6px}.poster-properties label{display:block;margin-bottom:14px}.poster-generate-result{position:fixed;inset:0;background:rgba(16,24,40,.55);z-index:1400;display:flex;align-items:center;justify-content:center}.poster-generate-result[hidden]{display:none}.poster-generate-result .modal-card{width:min(520px,calc(100vw - 32px));background:#fff;padding:26px;border-radius:16px}.poster-generate-result .modal-actions{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:900px){.poster-grid{grid-template-columns:repeat(2,1fr)}.poster-template-grid{grid-template-columns:repeat(2,1fr)}.poster-editor{margin:-16px}.poster-editor-layout{grid-template-columns:1fr;height:auto}.poster-tools{display:flex;gap:8px;border-right:0;border-bottom:1px solid #e4e7ec}.poster-tools>button{width:auto;margin:0}.poster-help{display:none}.poster-stage{min-height:520px;padding:20px}.poster-properties{border-left:0;border-top:1px solid #e4e7ec}.poster-editor-top{flex-wrap:wrap;height:auto;padding:10px}.save-state{margin-left:0}.poster-name-input{max-width:180px}}
@media(max-width:640px){.poster-grid,.poster-create-quick,.poster-template-grid{grid-template-columns:1fr}.poster-thumb{height:320px}}

/* V2.6.1 platform poster templates */
.poster-template-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.poster-template-admin-card{display:grid;grid-template-columns:120px 1fr;gap:14px;border:1px solid #e4e7ec;border-radius:14px;padding:12px}.poster-template-admin-cover{width:120px;aspect-ratio:638/1024;background:#f2f4f7;border-radius:9px;display:flex;align-items:center;justify-content:center;overflow:hidden;color:#667085;font-size:12px}.poster-template-admin-cover img,.platform-template-preview img{width:100%;height:100%;object-fit:cover}.platform-template-preview{width:200px;aspect-ratio:638/1024;border:1px solid #e4e7ec;border-radius:10px;overflow:hidden;margin:10px 0 18px}.poster-template-card .template-preview{aspect-ratio:638/1024}.poster-template-card>p{font-size:12px;color:#667085;min-height:36px}
@media(max-width:900px){.poster-template-admin-grid{grid-template-columns:1fr}}

/* V2.6.1 Hotfix 2 */
.poster-upload-entry form{display:flex;align-items:end;justify-content:space-between;gap:24px}.poster-upload-entry h2{margin:0 0 8px}.poster-upload-entry p{margin:0;color:#667085}.poster-upload-entry-actions{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.poster-upload-entry-actions label{margin:0}.template-preview-missing{background:#f2f4f7!important;color:#667085}.template-preview-missing em{display:block;margin-top:auto;padding:8px 10px;border-radius:8px;background:rgba(255,255,255,.88);font-style:normal;font-size:12px;color:#b42318}.poster-template-card button:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:760px){.poster-upload-entry form{align-items:stretch;flex-direction:column}.poster-upload-entry-actions{align-items:stretch;flex-direction:column}}

/* V2.6.2 Hotfix 2 */
.poster-qr{transform-origin:center center}.poster-qr img{width:100%;height:100%;display:block;object-fit:contain}.poster-qr>span{display:none!important}.poster-rotation-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
/* V2.6.3-r9 account layout and immutable login identity */
.account-page{grid-template-columns:minmax(0,520px) minmax(0,520px);justify-content:start;align-items:start}.account-page>.panel{width:100%}.account-page .locked-feature{min-height:40px}.account-page .locked-feature small{display:block;margin-top:4px}@media(max-width:768px){.account-page{grid-template-columns:1fr}}

/* V2.6.4 compact account form */
.account-page .panel.form-stack{gap:12px;padding:16px}.account-page .panel.form-stack h2,.account-page .panel.form-stack h3{margin-bottom:0}

.scan-tech-footer{position:absolute;top:100%;left:0;right:0;margin-top:14px;text-align:center;color:#168c45;font-size:12px}.scan-tech-footer a{color:#168c45}.scan-tech-footer a:hover{color:#07883f}
