:root{--bg:#f5f7fb;--surface:#fff;--surface-alt:#f8fafc;--text:#172033;--muted:#7b8799;--line:#e7ebf1;--primary:#2563eb;--primary-hover:#1d4ed8;--success:#059669;--warning:#bb7513;--danger:#dc2626;--shadow:0 14px 36px rgba(15,23,42,.045)}
*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background:var(--bg)}body{font-family:"Microsoft YaHei UI","PingFang SC",Inter,"Segoe UI",Arial,sans-serif;color:var(--text);font-size:13px;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}.eyebrow{font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#6f98da;margin-bottom:9px}.muted,p.muted{color:var(--muted)}.subtle-link{font-weight:650;color:var(--primary)}.mono,code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.brand{display:flex;align-items:center;gap:12px;color:#172033;text-decoration:none}.brand-logo{width:39px;height:39px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(140deg,#38bdf8,#2563eb 65%,#7c3aed);font-size:21px;font-weight:900;box-shadow:0 9px 20px rgba(37,99,235,.19)}.brand b{font-size:14px;display:block;line-height:1.3}.brand small{font-size:9px;color:#95a0b0;letter-spacing:.75px;display:block;margin-top:3px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:37px;border-radius:9px;border:1px solid transparent;padding:0 15px;font-weight:750;font-size:12px;white-space:nowrap;gap:7px;text-decoration:none;line-height:1.2}.btn.primary{background:var(--primary);color:#fff;box-shadow:0 5px 16px rgba(37,99,235,.16)}.btn.primary:hover{background:var(--primary-hover)}.btn.outline{background:#fff;border-color:#dbe3ee;color:#475569}.btn.outline:hover{background:#f6f9ff}.btn.small{min-height:29px;padding:0 10px;font-size:11px;border-radius:7px}.btn.full{width:100%;height:43px;font-size:13px}.message{padding:12px 15px;margin:0 0 18px;background:#f0fdf4;border:1px solid #c6f6da;border-radius:11px;color:#065f46;font-size:12px;line-height:1.8}.message.bad{background:#fff1f2;border-color:#fecdd3;color:#be123c}.message.warn{background:#fffbeb;border-color:#fde68a;color:#9a6708}.pill{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:10px;font-weight:750;background:#eff6ff;color:var(--primary);white-space:nowrap}.pill.ok{background:#eafaf1;color:#047857}.pill.warning{background:#fff7e9;color:#ae711b}.pill.danger{background:#fff1f2;color:#be123c}
.auth-layout{min-height:100vh;display:flex;align-items:center;flex-direction:column;padding:28px 20px 30px;background:radial-gradient(ellipse 620px 320px at 50% -100px,rgba(37,99,235,.085),transparent),var(--bg)}.auth-header{width:100%;max-width:920px;display:flex;align-items:center;justify-content:space-between;margin:0 auto 65px}.auth-card{width:100%;max-width:428px;padding:36px;border:1px solid var(--line);border-radius:19px;background:var(--surface);box-shadow:0 24px 80px rgba(40,63,113,.075)}.auth-card h1{font-size:23px;font-weight:800;line-height:1.32;margin:0 0 9px}.auth-card>p{margin:0 0 27px;line-height:1.85;font-size:12px}.form-stack{display:grid;gap:16px}.form-stack label{display:grid;gap:8px;font-weight:700;color:#344054;font-size:11px}.form-stack input,.form-stack select,.form-stack textarea{width:100%;min-width:0;border:1px solid #dce3ec;padding:10px 12px;border-radius:9px;outline:none;background:#fff;color:#172033;font-size:12px}.form-stack textarea{resize:vertical;line-height:1.55}.form-stack input:focus,.form-stack select:focus,.form-stack textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.10)}.form-stack input{height:43px}.form-footer{text-align:center;font-size:12px;color:var(--muted);margin-top:22px}.form-footer a{font-weight:750}.auth-foot{color:#a2aaba;font-size:10px;margin-top:auto;padding-top:50px}.profile-card{display:flex;gap:13px;padding:15px 14px;border-radius:11px;background:var(--surface-alt);border:1px solid var(--line);margin:0 0 22px}.profile-logo{width:43px;height:43px;border-radius:12px;display:grid;place-items:center;font-weight:800;background:#dbeafe;color:var(--primary)}.profile-card h3{margin:1px 0 3px;font-size:15px}.profile-card p{margin:0 0 8px;color:var(--muted);font-size:11px}.info-row{display:flex;justify-content:space-between;gap:12px;padding:13px 1px;border-bottom:1px solid var(--line);font-size:11px;color:var(--muted);align-items:center}.info-row code{font-size:10px;color:#334155;word-break:break-all;text-align:right}.button-row{display:flex;gap:10px;margin-top:23px;align-items:center;flex-wrap:wrap}.button-row form{display:inline}
.admin-layout{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}.side{background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:18px 13px 13px;z-index:5}.side .brand{padding:5px 8px 18px;border-bottom:1px solid #eef2f6}.side-workspace{font-size:11px;font-weight:800;margin:15px 6px 8px;padding:13px 9px;border:1px solid #edf1f5;border-radius:9px;display:flex;align-items:center;justify-content:space-between;background:#fafcff}.side-workspace span{font-size:9px;font-weight:700;color:#7a9ad6}.side-nav{display:grid;align-content:start;gap:4px;overflow-y:auto}.nav-label{color:#9aa6b5;font-size:10px;font-weight:800;margin:22px 10px 8px}.nav-item{display:flex;gap:11px;align-items:center;padding:11px 13px;border-radius:9px;color:#526174;font-size:12px;font-weight:750}.nav-item:hover{background:#f5f8ff;color:var(--primary)}.nav-item.active{color:#1d4ed8;background:#eef5ff;border:1px solid #dceafe;padding:10px 12px}.nav-dot{width:7px;height:7px;border-radius:99px;background:#cbd5e1;flex-shrink:0}.nav-item.active .nav-dot{background:var(--primary);box-shadow:0 0 0 3px #dbeafe}.side-bottom{margin-top:auto;border-top:1px solid var(--line);padding:13px 6px 2px;display:flex;align-items:center;justify-content:space-between;gap:8px}.side-bottom .identity{min-width:0}.side-bottom .identity b{font-size:11px;display:block}.side-bottom .identity small{display:block;font-size:9px;color:#94a3b8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:120px;margin-top:4px}.side-bottom>a{font-size:10px;font-weight:750;white-space:nowrap}.admin-main{display:flex;min-width:0;flex-direction:column}.admin-top{height:66px;display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.95);border-bottom:1px solid var(--line);padding:0 26px;position:sticky;top:0;z-index:4}.top-title{font-size:12px;color:#94a3b8}.top-title span{margin:0 10px;color:#c9d1df}.top-title b{color:#253248;font-size:13px}.top-right{display:flex;align-items:center;gap:10px;color:#77859a;font-size:10px;font-weight:700}.top-right a{border-left:1px solid var(--line);padding-left:14px}.dot.green{width:6px;height:6px;border-radius:50%;background:#0fba83;box-shadow:0 0 0 3px #d1fae5}.content{padding:28px 26px 40px;min-width:0;flex:1}.page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 20px}.page-head h1{font-size:24px;font-weight:800;margin:0 0 8px;letter-spacing:-.5px}.page-head p{color:var(--muted);font-size:11px;margin:0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:15px;padding:20px}.stat>span{color:#7d8aa0;font-size:11px;font-weight:700}.stat strong{font-size:29px;display:block;line-height:1.2;margin:14px 0 7px}.stat small{color:#9ba6b6;font-size:10px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);padding:0;margin-top:16px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 18px;border-bottom:1px solid #f0f2f6}.panel-head h2{font-size:14px;margin:0}.panel-head small,.panel-head>.muted{font-size:10px}.feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:17px}.feature{border:1px solid var(--line);border-radius:12px;padding:15px}.feature-icon{width:32px;height:32px;border-radius:9px;background:#eef5ff;color:var(--primary);display:grid;place-items:center;font-size:10px;font-weight:800;margin-bottom:13px}.feature b{font-size:12px}.feature p{font-size:10px;color:var(--muted);line-height:1.85;margin:8px 0 11px}.table-wrap{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:11px}th{text-align:left;font-weight:700;color:#8693a5;background:#fbfcff;white-space:nowrap}th,td{padding:13px 17px;border-bottom:1px solid #f0f2f6;vertical-align:middle}td b{color:#263348;font-size:11px}tr:last-child td{border-bottom:0}.subline{display:block;color:#9aa7b9;font-size:9px;margin-top:6px;overflow-wrap:anywhere}.wrap-url{max-width:330px;overflow-wrap:anywhere;font-size:10px;color:#66788d}.table-actions{display:flex;flex-wrap:wrap;gap:6px}.inline-form{display:inline-flex}.admin-footer{text-align:center;color:#a8b0be;font-size:10px;padding:12px 10px 24px}.secret-alert{border-radius:12px;border:1px solid #bfdbfe;background:#eff6ff;padding:15px 17px;color:#1d4ed8;margin-bottom:15px}.secret-alert strong{display:block;font-size:12px;margin-bottom:10px}.secret-alert>div{margin:7px 0;color:#385578;font-size:11px}.secret-alert code{font-size:11px;line-height:1.7}.secret-break{overflow-wrap:anywhere}.secret-alert small{font-size:10px;color:#64748b}.api-lines{padding:5px 20px 10px}.api-lines>div{padding:14px 0;border-bottom:1px solid #f0f2f6}.api-lines>div:last-child{border:0}.api-lines code{color:#1d4ed8;overflow-wrap:anywhere;font-size:11px}.api-lines p{font-size:11px;color:#8090a3;line-height:1.7;margin:6px 0 0}.modal{border:none;padding:0;border-radius:17px;width:min(92vw,500px);max-height:90vh;box-shadow:0 40px 120px rgba(15,23,42,.25);overflow:auto}.modal::backdrop{background:rgba(15,23,42,.55)}.modal-head{display:flex;justify-content:space-between;gap:12px;align-items:start;padding:21px 24px 15px;border-bottom:1px solid var(--line)}.modal-head h2{font-size:16px;margin:0 0 7px}.modal-head p{font-size:10px;color:#8996aa;margin:0}.dialog-close{border:0;background:#f5f7fb;color:#64748b;font-size:21px;line-height:1;width:29px;height:29px;border-radius:7px}.modal>.form-stack{padding:22px 24px}.modal-foot{display:flex;justify-content:flex-end;gap:9px;margin-top:6px}.field-help{font-size:10px;line-height:1.65;margin:0;color:#98a3b3}
@media(max-width:1000px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:750px){.admin-layout{display:block}.side{position:relative;height:auto;padding:12px}.side .brand{padding:5px 4px 11px}.side-workspace,.nav-label,.side-bottom{display:none}.side-nav{display:flex;overflow-x:auto;padding:9px 0 0;gap:3px}.nav-item{white-space:nowrap;padding:9px 10px;font-size:11px}.nav-item.active{padding:8px 9px}.admin-top{height:48px;padding:0 14px}.content{padding:19px 13px}.page-head h1{font-size:20px}.page-head{align-items:flex-start}.feature-grid{grid-template-columns:1fr}.panel-head{padding:14px}.stats-grid{gap:8px}.stat{padding:16px}.stat strong{font-size:25px}.auth-header{margin-bottom:48px}.auth-card{padding:26px 21px}.auth-layout{padding:20px 15px 27px}}

/* ===============================================================
   Passport UI v2.1 - Shell-inspired identity & management interface.
   Scoped redesign: no backend, database or API behavior is modified.
   =============================================================== */
:root{
  --bg:#f5f7fb;--surface:#ffffff;--surface-alt:#f8fafc;
  --text:#172033;--muted:#78869a;--line:#e6ebf2;
  --primary:#2563eb;--primary-hover:#1d4ed8;
  --shadow:0 12px 34px rgba(15,23,42,.055);
}
html{scrollbar-gutter:stable}
body{font-family:"Microsoft YaHei UI","PingFang SC","Segoe UI",Inter,Arial,sans-serif;font-size:14px;line-height:1.52}
a,button{-webkit-tap-highlight-color:transparent}
a.btn,a.btn:link,a.btn:visited,a.btn:hover,a.btn:focus{text-decoration:none}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}
.btn{min-height:40px;padding:0 17px;border-radius:10px;font-size:12px;font-weight:760;gap:8px;transition:background .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease}
.btn.primary{background:linear-gradient(115deg,#2874f0,#205dd9);border:1px solid #2460dc;box-shadow:0 6px 16px rgba(37,99,235,.19)}
.btn.primary:hover{background:linear-gradient(115deg,#2563eb,#194bb2);box-shadow:0 9px 21px rgba(37,99,235,.24)}
.btn.outline{border:1px solid #d9e2ee;background:#fff;color:#475569}
.btn.outline:hover{color:#1d4ed8;border-color:#bed2f7;background:#f8fbff}
.btn.small{min-height:32px;padding:0 11px;font-size:11px;border-radius:8px}
.eyebrow{font-size:11px;color:#3575d8;font-weight:850;letter-spacing:1.55px}
.message{margin:0 0 20px;padding:13px 16px;font-size:12px;border-radius:12px}
.pill{padding:5px 10px;font-size:10px;font-weight:760}

/* ---------- Wide Shell login structure ---------- */
body.is-passport{background:#edf3fb;overflow-x:hidden}
.auth-shell{width:100%;min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);background:#f8fbff}
.auth-hero{position:relative;isolation:isolate;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;overflow:hidden;padding:clamp(28px,3.2vw,53px) clamp(30px,4.1vw,75px) 30px;background:linear-gradient(140deg,#072a65 0%,#0c49a4 45%,#1269dc 100%);color:#fff}
.auth-hero:before{content:"";position:absolute;inset:-20%;z-index:-2;background:radial-gradient(circle at 77% 24%,rgba(36,198,255,.30),transparent 34%),radial-gradient(circle at 19% 86%,rgba(3,10,56,.53),transparent 42%)}
.auth-hero:after{content:"";position:absolute;right:-24%;top:18%;width:680px;height:680px;border:1px solid rgba(255,255,255,.10);border-radius:50%;z-index:-1;box-shadow:0 0 0 82px rgba(255,255,255,.027),0 0 0 168px rgba(255,255,255,.022),0 0 0 248px rgba(255,255,255,.019)}
.auth-hero-brand{display:flex;align-items:center;gap:13px;align-self:flex-start;position:relative;z-index:1;color:#fff;text-decoration:none}
.auth-hero-brand:hover{color:#fff}
.auth-hero-brand img{width:49px;height:49px;border-radius:13px;box-shadow:0 10px 32px rgba(4,16,55,.23)}
.auth-hero-brand b{display:block;font-size:19px;letter-spacing:.25px;line-height:1.3}
.auth-hero-brand small{display:block;margin-top:3px;font-size:11px;letter-spacing:1.15px;color:#a8d8ff}
.auth-hero-center{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;justify-content:center;padding:32px 0 10px;min-height:0}
.auth-hero-eyebrow{display:flex;align-items:center;gap:11px;color:#b9e3ff;font-size:11px;font-weight:850;letter-spacing:2.1px}
.auth-hero-eyebrow i{display:block;width:8px;height:8px;border-radius:50%;background:#60f5d2;box-shadow:0 0 0 5px rgba(96,245,210,.12)}
.auth-hero-center>h1{margin:22px 0 20px;font-size:clamp(39px,3.7vw,67px);line-height:1.20;letter-spacing:-1.7px;font-weight:840;text-wrap:balance}
.auth-hero-center>p{font-size:clamp(13px,1vw,15px);line-height:2.03;max-width:570px;margin:0;color:#c9dffd}
.auth-feature-tags{display:flex;gap:12px;flex-wrap:wrap;margin-top:27px}
.auth-feature-tags span{border:1px solid rgba(221,240,255,.18);background:rgba(255,255,255,.09);padding:8px 12px;border-radius:9px;color:#e9f6ff;font-size:11px;font-weight:690}
.auth-feature-tags b{color:#79f5d5;margin-right:6px;font-size:12px}
.auth-visual{position:relative;isolation:isolate;height:180px;width:min(100%,525px);margin-top:30px;display:flex;align-items:center;justify-content:center}
.auth-visual:before{content:"";position:absolute;width:365px;height:150px;border-radius:50%;background:radial-gradient(ellipse,rgba(54,179,255,.21),transparent 67%);filter:blur(12px)}
.visual-center{position:relative;z-index:2;width:92px;height:92px;padding:10px;border:1px solid rgba(255,255,255,.40);border-radius:24px;background:rgba(255,255,255,.16);box-shadow:0 25px 54px rgba(0,17,84,.31)}
.visual-center img{width:100%;height:100%;border-radius:16px}
.visual-ring{position:absolute;border:1px solid rgba(204,230,255,.24);border-radius:50%;height:142px;width:342px;transform:rotate(-13deg)}
.visual-ring-b{height:198px;width:460px;opacity:.48;transform:rotate(17deg)}
.visual-node{position:absolute;z-index:2;display:flex;align-items:center;gap:7px;border:1px solid rgba(255,255,255,.23);background:rgba(255,255,255,.11);backdrop-filter:blur(10px);border-radius:11px;padding:9px 12px;font-size:10px;color:#ecf7ff;letter-spacing:1.05px;font-weight:700;box-shadow:0 10px 21px rgba(0,23,79,.12)}
.visual-node span{display:grid;place-items:center;height:22px;width:22px;background:rgba(255,255,255,.19);border-radius:7px;font-size:9px}
.node-one{top:10px;left:3%}.node-two{bottom:6px;left:16%}.node-three{right:2%;top:48%}
.auth-hero-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;color:#a7c7f0;font-size:11px;position:relative;z-index:1}
.auth-hero-footer span:last-child{font-size:10px;letter-spacing:1px}
.auth-panel{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:0;min-height:100vh;min-height:100dvh;padding:72px clamp(30px,4vw,84px);background:linear-gradient(146deg,#fff,#f7faff 75%,#f1f6ff)}
.auth-panel:before{position:absolute;content:"";top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,#2563eb,#63cdfb);opacity:.90}
.auth-panel-inner{width:min(100%,495px);margin:auto 0;position:relative}
.auth-mobile-head{display:none}
.auth-title{margin:0 0 32px;text-align:left}
.auth-title .eyebrow{margin:0 0 11px;font-size:11px;color:#2a6ade;letter-spacing:1.65px}
.auth-title h2{margin:0 0 12px;line-height:1.3;color:#192b46;font-size:clamp(29px,2.2vw,36px);font-weight:840;letter-spacing:-.85px}
.auth-title p{font-size:13px;line-height:1.95;color:#7b899c;margin:0}
.auth-panel .form-stack{display:grid;gap:21px}
.auth-panel .form-stack label{display:grid;gap:9px;color:#35445b;font-size:13px;font-weight:780}
.auth-panel .form-stack input{width:100%;height:51px;min-width:0;padding:0 16px;color:#24334b;background:#fff;border:1px solid #dbe4ef;border-radius:11px;outline:0;font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}
.auth-panel .form-stack input::placeholder{color:#a1adbd;font-weight:450}
.auth-panel .form-stack input:focus{border-color:#4a8af6;box-shadow:0 0 0 4px rgba(37,99,235,.09)}
.auth-panel .form-stack .btn.full{margin-top:3px;height:53px;font-size:15px;border-radius:11px;justify-content:center;gap:12px}
.auth-panel .form-stack .btn.full span{font-size:19px;font-weight:500}
.auth-switch{margin:23px 0 0;text-align:center;font-size:13px;color:#8794a5}
.auth-switch a{color:#2563eb;font-weight:790;margin-left:4px}
.auth-security-note{margin:35px 0 0;padding:19px 0 0;border-top:1px solid #e9eef5;color:#9aa8b9;text-align:center;font-size:11px}
.auth-lock{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:#e8faf1;color:#03986e;font-weight:900;font-size:11px;margin-right:3px}
.auth-separator{padding:0 7px;color:#bfcedc}
.auth-panel-footer{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;font-size:11px;color:#a6b1c1;padding-top:32px}
.auth-panel-footer a{color:#6a819f}
.auth-panel .message{width:100%;margin-bottom:24px;font-size:12px}
.auth-panel .profile-card{padding:20px;background:#fff;border:1px solid #e6ecf4;border-radius:15px;box-shadow:0 8px 23px rgba(15,35,70,.035);gap:14px;margin:0 0 18px}
.auth-panel .profile-logo{width:52px;height:52px;flex:0 0 52px;border-radius:14px;font-size:17px}
.auth-panel .profile-details{min-width:0}
.auth-panel .profile-card h3{font-size:17px;margin:0 0 4px}
.auth-panel .profile-card p{font-size:12px;overflow-wrap:anywhere;margin:0 0 9px}
.auth-panel .account-details{border:1px solid #e6ecf4;background:#fff;padding:0 18px;border-radius:14px}
.auth-panel .info-row{padding:17px 0;font-size:12px}
.auth-panel .info-row:last-child{border:0}
.auth-panel .info-row code{font-size:11px;color:#40516a}
.auth-panel .button-row{margin-top:22px;gap:10px}
.auth-panel .button-row .btn{min-height:43px}

/* ---------- Shell sidebar / workbench ---------- */
body.is-admin{background:#f5f7fb}
.admin-layout{min-height:100vh;display:grid;grid-template-columns:254px minmax(0,1fr)}
.side{position:sticky;top:0;height:100vh;overflow:visible;z-index:35;background:#fff;border-right:1px solid #e7ecf3;padding:20px 15px 16px;display:flex;flex-direction:column;box-shadow:3px 0 19px rgba(18,38,70,.012)}
.side .brand{display:flex;align-items:center;gap:12px;padding:3px 6px 20px;border-bottom:1px solid #edf1f6;min-width:0;color:#172033}
.side .brand-logo{width:45px;height:45px;border-radius:13px;object-fit:contain;background:transparent;box-shadow:0 6px 17px rgba(27,81,193,.12)}
.side .brand b{font-size:16px;line-height:1.35;white-space:nowrap}
.side .brand small{font-size:10px;margin-top:4px;letter-spacing:1.05px;color:#95a4b7}
.side-workspace{padding:11px 10px;display:flex;align-items:center;gap:10px;margin:19px 0 10px;background:linear-gradient(110deg,#f8faff,#f4f7fc);border:1px solid #e8eef7;border-radius:11px}
.workspace-icon{width:36px;height:36px;flex:0 0 36px;border-radius:11px;background:#e9f1ff;color:#2768dd;display:grid;place-items:center}
.workspace-icon svg{width:19px;height:19px}
.workspace-text{min-width:0;display:grid;gap:3px;flex:1}
.workspace-text strong{font-size:11px;font-weight:800;color:#293c58;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workspace-text small{font-size:10px;font-weight:500;color:#97a4b8;white-space:nowrap}
.workspace-status{font-size:9px!important;letter-spacing:.5px;padding:4px 6px;background:#e3edff;color:#376cd0;border-radius:5px;white-space:nowrap}
.side-section-name{color:#9caabe;display:flex;justify-content:space-between;padding:16px 11px 8px;font-weight:800;font-size:10px;letter-spacing:.25px}
.side-section-name span{font-size:9px;font-weight:800;letter-spacing:.9px;color:#bec9d7}
.side-nav.shell-nav{display:flex;flex-direction:column;align-content:start;align-items:stretch;gap:7px;min-height:0;flex:1;overflow:visible;padding:4px 0 12px}
.nav-group{position:relative;flex:0 0 auto;min-width:0;z-index:0}
.nav-group.is-open{z-index:65}
.nav-group .nav-group-toggle{display:flex;align-items:center;width:100%;height:49px;gap:12px;border:1px solid transparent;border-radius:11px;background:transparent;color:#536377;white-space:nowrap;text-align:left;padding:0 10px;font-size:13px;font-weight:750;cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}
.nav-group .nav-group-toggle:hover{color:#245dd6;background:#f5f8ff}
.nav-group.is-current>.nav-group-toggle{background:#eff5ff;color:#235cce;border-color:#e1ebfc}
.nav-group.is-open>.nav-group-toggle{background:#eaf2ff;color:#1c56c4;border-color:#d6e5ff;box-shadow:inset 3px 0 0 #3477f8}
.nav-group-icon{width:34px;height:34px;flex:0 0 34px;border-radius:9px;display:grid;place-items:center;background:#f0f4f9;color:#738399}
.nav-group-icon svg{width:19px;height:19px}
.nav-group.is-current .nav-group-icon,.nav-group.is-open .nav-group-icon{background:#dbeafe;color:#2563eb}
.nav-group-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.nav-chevron{height:15px;width:15px;flex:0 0 15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.58;transition:transform .18s}
.nav-group.is-open .nav-chevron{transform:rotate(90deg);opacity:1}
.nav-group-children{--flyout-top:-8px;--flyout-arrow-top:25px;position:absolute;left:calc(100% + 12px);top:var(--flyout-top);z-index:75;width:248px;display:none;flex-direction:column;padding:11px;gap:7px;border:1px solid #e1e8f2;border-radius:15px;background:#fff;box-shadow:0 18px 50px rgba(24,45,78,.18),0 4px 14px rgba(24,45,78,.06);pointer-events:none;opacity:0;visibility:hidden;transform:translateX(-8px);transition:opacity .15s,transform .15s}
.nav-group.is-open .nav-group-children{display:flex;visibility:visible;opacity:1;pointer-events:auto;transform:none}
.nav-group-children:before{position:absolute;content:"";left:-17px;top:0;width:17px;height:100%}
.nav-group-children:after{content:"";position:absolute;left:-6px;top:var(--flyout-arrow-top);height:11px;width:11px;transform:rotate(45deg);background:#fff;border-left:1px solid #e1e8f2;border-bottom:1px solid #e1e8f2}
.nav-flyout-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 13px;border-bottom:1px solid #edf1f7}
.nav-flyout-heading strong{font-size:13px;font-weight:800;color:#273950}
.nav-flyout-heading span{font-size:9px;letter-spacing:.75px;color:#9eabba;font-weight:650}
.nav-flyout-items{display:grid;gap:4px;max-height:calc(100vh - 140px);overflow-y:auto}
.nav-sub-link{display:flex;align-items:center;gap:11px;padding:0 12px;min-height:40px;white-space:nowrap;border-radius:9px;font-size:12px;font-weight:690;color:#51627a;text-decoration:none}
.nav-sub-link:hover{background:#f0f5ff;color:#225cca}
.nav-sub-link.active{background:#edf4ff;color:#225cca;box-shadow:inset 0 0 0 1px #dfebff;font-weight:810}
.nav-sub-dot{display:block;width:7px;height:7px;border-radius:50%;background:#c5d2e4;flex:0 0 7px}
.nav-sub-link.active .nav-sub-dot{background:#2d70e8;box-shadow:0 0 0 4px #dfeaff}
.nav-sub-link:hover .nav-sub-dot{background:#7ba9f4}
.side-help{padding:13px;display:flex;align-items:center;gap:10px;background:#f5f9ff;border:1px solid #e5edfa;border-radius:12px;margin-top:auto}
.side-help .help-icon{width:32px;height:32px;flex:0 0 32px;background:#e5f0ff;border-radius:9px;display:grid;place-items:center;color:#2563eb}
.side-help .help-icon svg{width:17px;height:17px}
.side-help b{font-size:11px;color:#3a5071}
.side-help p{font-size:9px;margin:4px 0 0;color:#92a2b7;white-space:nowrap}
.side-bottom{margin-top:12px;padding:16px 6px 0;border-top:1px solid #e9eef5;display:flex;align-items:center;gap:10px}
.side-bottom .user-avatar{height:35px;width:35px;flex:0 0 35px;display:grid;place-items:center;border-radius:11px;font-size:14px;font-weight:800;color:#2260cb;background:#eaf1ff}
.side-bottom .identity{flex:1;min-width:0}
.side-bottom .identity b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.side-bottom .identity small{display:block;font-size:10px;margin-top:2px;color:#9ca9ba;white-space:nowrap}
.side-account-link{height:30px;width:30px;border-radius:8px;display:grid;place-items:center;color:#6b7d96;background:#f5f7fb}
.side-account-link:hover{color:#2563eb;background:#e9f2ff}
.side-account-link svg{width:16px;height:16px}
.nav-backdrop,.mobile-menu-toggle{display:none}
.admin-main{display:flex;flex-direction:column;min-width:0;min-height:100vh;overflow:visible}
.admin-top{height:76px;flex:0 0 76px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 clamp(22px,2vw,38px);position:sticky;top:0;background:rgba(255,255,255,.95);backdrop-filter:blur(15px);border-bottom:1px solid #e8edf4;z-index:20}
.admin-top-left{display:flex;align-items:center;min-width:0;gap:12px}
.top-title{display:flex;flex-direction:column;gap:3px;min-width:0}
.top-title .breadcrumb{font-size:11px;color:#93a2b4;font-weight:670;white-space:nowrap}
.top-title .breadcrumb em{font-style:normal;color:#c4d0df;margin:0 8px}
.top-title strong{font-size:17px;font-weight:820;color:#26374f}
.top-right{display:flex;align-items:center;gap:21px;font-size:11px;color:#667790;font-weight:760;white-space:nowrap}
.top-right a{font-size:11px;color:#62748e}
.top-right a:hover{color:#2563eb}
.top-right .top-website{display:flex;align-items:center;gap:7px;background:#f8faff;border:1px solid #e7edf7;padding:8px 11px;border-radius:9px}
.top-right .top-website svg{width:14px;height:14px}
.status-indicator{display:flex;align-items:center;gap:8px;font-size:11px;color:#718296}
.status-indicator i{height:8px;width:8px;background:#10b981;border-radius:50%;box-shadow:0 0 0 4px #d9f8e9}
.content{flex:1;min-width:0;width:100%;padding:31px clamp(22px,2.1vw,39px) 45px}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 22px}
.page-head h1{font-size:27px;letter-spacing:-.55px;margin:0 0 8px;font-weight:850;color:#1e2d42}
.page-head p{font-size:12px;color:#8998ab;line-height:1.6}
.page-head .eyebrow{font-size:10px;letter-spacing:1.3px;color:#6a93d8;margin-bottom:9px}
.button-plus{font-size:18px;font-weight:500;line-height:1}
.admin-footer{padding:12px 20px 25px;font-size:11px;color:#a1abba}

/* ---------- Overview ---------- */
.overview-hero{position:relative;overflow:hidden;min-height:212px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(110deg,#eef5ff,#f9fcff 65%,#eaf4ff);border:1px solid #dfeafa;border-radius:17px;padding:28px 38px;margin-bottom:18px}
.overview-hero:before{content:"";position:absolute;right:-56px;bottom:-205px;width:530px;height:530px;border:1px solid rgba(65,124,221,.095);border-radius:50%;box-shadow:0 0 0 60px rgba(74,133,225,.038),0 0 0 125px rgba(74,133,225,.025)}
.overview-hero-content{position:relative;z-index:1;max-width:670px}
.hero-kicker{color:#2e69c8;display:flex;align-items:center;gap:10px;font-weight:820;font-size:10px;letter-spacing:1.4px}
.hero-kicker-dot{background:#2875e6;height:7px;width:7px;display:block;border-radius:50%;box-shadow:0 0 0 4px #d5e7ff}
.overview-hero h2{font-size:25px;line-height:1.45;font-weight:840;color:#1c355c;margin:14px 0 9px;letter-spacing:-.45px}
.overview-hero p{font-size:12px;line-height:1.95;color:#6b819e;max-width:580px;margin:0}
.hero-meta{display:flex;flex-wrap:wrap;gap:17px;margin-top:18px}
.hero-meta span{display:flex;align-items:center;gap:6px;color:#6688b7;font-weight:740;font-size:11px}
.hero-meta svg{width:15px;height:15px;color:#417dd7}
.hero-illustration{position:relative;width:240px;height:160px;flex:0 0 240px;display:grid;place-items:center}
.hero-mark{height:96px;width:96px;border-radius:24px;box-shadow:0 12px 35px rgba(33,89,196,.15);background:#fff;padding:11px;z-index:2;transform:rotate(-8deg)}
.hero-mark img{height:100%;width:100%;border-radius:18px}
.orbit{position:absolute;border:1px solid rgba(44,120,217,.17);height:128px;width:215px;transform:rotate(28deg);border-radius:50%}
.orbit-two{height:160px;width:253px;transform:rotate(-30deg)}
.hero-spark{position:absolute;border-radius:50%;height:13px;width:13px;background:#60c8ee;box-shadow:0 0 0 8px #daeffd;z-index:1}
.spark-a{right:13px;top:27px}.spark-b{left:4px;bottom:25px;background:#8da9ef;box-shadow:0 0 0 7px #e0e9fa;height:10px;width:10px}
.stats-grid{gap:16px;grid-template-columns:repeat(4,minmax(0,1fr))}
.stat{position:relative;overflow:hidden;border-radius:15px;box-shadow:var(--shadow);padding:22px 21px 20px;background:#fff;border:1px solid #e7ecf3;min-width:0}
.stat:after{position:absolute;content:"";height:90px;width:90px;right:-37px;top:-35px;border-radius:50%;background:#f6f9ff;z-index:0}
.stat-head{display:flex;align-items:start;justify-content:space-between;gap:8px}
.stat .stat-head>span:first-child{font-size:12px;font-weight:760;color:#77889c;position:relative;z-index:1}
.stat .stat-icon{position:relative;z-index:1;display:grid;place-items:center;width:39px;height:39px;flex:0 0 39px;border-radius:11px}
.stat .stat-icon svg{width:19px;height:19px}
.icon-blue{color:#2563eb;background:#eaf1ff}.icon-violet{color:#7c60e9;background:#f1edff}.icon-amber{color:#d9942e;background:#fff4e4}.icon-green{color:#059669;background:#e7fbf2}
.stat strong{font-size:32px;font-weight:850;letter-spacing:-.8px;margin:3px 0 7px;line-height:1.25}
.stat small{font-size:11px;color:#9ba9bb}
.panel{margin-top:18px;background:#fff;border:1px solid #e7ecf3;border-radius:16px;box-shadow:var(--shadow);overflow:hidden}
.panel-head{padding:19px 21px;min-height:60px;border-bottom:1px solid #edf0f5;align-items:center}
.panel-head h2{font-size:15px;font-weight:810;color:#283850;margin:0}
.panel-head .muted,.panel-head small{font-size:11px;color:#94a1b2}
.feature-grid{gap:16px;padding:19px}
.feature{padding:21px;border-radius:13px;background:#fff;border:1px solid #e7ebf3;display:flex;flex-direction:column;align-items:flex-start;min-height:188px}
.feature-icon{width:41px;height:41px;font-size:12px;border-radius:12px;margin-bottom:17px;background:#eaf2ff;color:#2765d1;font-weight:850}
.feature:nth-child(2) .feature-icon{background:#edfbf5;color:#079667}
.feature:nth-child(3) .feature-icon{background:#fff5e8;color:#ce8a27}
.feature b{font-size:13px;font-weight:820;color:#2a3b54}
.feature p{font-size:11px;line-height:1.9;color:#8592a7;flex:1;margin:8px 0 15px}
.table-wrap{width:100%;overflow-x:auto}
table{width:100%;font-size:12px;border-collapse:collapse}
th{background:#f9fbfe;color:#8190a5;font-size:11px;font-weight:760}
th,td{padding:15px 19px;border-bottom:1px solid #eef1f5;line-height:1.6;vertical-align:middle}
td b{font-size:12px;color:#25364c}
tbody tr:hover{background:#fafcff}
.subline{font-size:10px;color:#9aa8bc;line-height:1.6;margin-top:5px}
.wrap-url{font-size:11px;color:#687b94;max-width:390px}
.table-actions{gap:8px;align-items:center}
.inline-form{display:inline-flex}
.secret-alert{background:#eff6ff;border:1px solid #bfdbfe;padding:17px 20px;border-radius:12px;font-size:12px}
.secret-alert strong{font-size:14px}
.api-lines{padding:7px 23px 14px}
.api-lines>div{padding:17px 0}
.api-lines code{font-size:12px;overflow-wrap:anywhere}
.api-lines p{font-size:12px;color:#8594a7}
.modal{border-radius:19px;width:min(94vw,600px);max-height:min(89dvh,880px);box-shadow:0 40px 130px rgba(20,35,70,.26)}
.modal::backdrop{background:rgba(16,30,58,.56);backdrop-filter:blur(3px)}
.modal-head{padding:23px 28px 18px}
.modal-head h2{font-size:18px}
.modal-head p{font-size:11px;margin:0;color:#8695a9}
.modal>.form-stack{padding:23px 28px 27px;gap:17px}
.modal .form-stack label{font-size:12px;gap:8px}
.modal .form-stack input,.modal .form-stack select{height:44px;font-size:13px;padding:0 13px}
.modal .form-stack textarea{font-size:13px;padding:12px;line-height:1.7}
.modal .dialog-close{width:32px;height:32px;font-size:22px}
.modal .modal-foot{margin-top:9px}
.field-help{font-size:11px;line-height:1.8}

/* ---------- Responsive behavior ---------- */
@media(max-width:1430px){
  .auth-hero{padding-left:clamp(32px,3.9vw,65px);padding-right:clamp(32px,3.9vw,65px)}
  .auth-hero-center>h1{font-size:clamp(38px,3.9vw,56px)}
  .stat{padding:18px 17px}
  .overview-hero{padding:25px 29px}
}
@media(max-width:1120px){
  .admin-layout{grid-template-columns:232px minmax(0,1fr)}
  .side{padding-left:12px;padding-right:12px}
  .side .brand b{font-size:14px}
  .workspace-status{display:none}
  .content{padding:25px 22px 36px}
  .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .auth-visual{height:145px}
  .visual-ring-b{width:360px}
  .auth-panel{padding:55px 35px}
}
@media(max-width:860px){
  .auth-shell{display:block;min-height:100dvh}
  .auth-hero{display:none}
  .auth-panel{min-height:100dvh;padding:19px clamp(15px,4vw,35px) 23px;justify-content:flex-start}
  .auth-panel:before{height:4px}
  .auth-mobile-head{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;max-width:720px;margin:9px auto 40px}
  .auth-mobile-brand{display:flex;align-items:center;gap:11px;color:#203753;text-decoration:none}
  .auth-mobile-brand img{border-radius:12px;height:42px;width:42px}
  .auth-mobile-brand b{display:block;font-size:16px}
  .auth-mobile-brand small{display:block;font-size:9px;letter-spacing:.75px;color:#97a4b8;margin-top:3px}
  .auth-mobile-back{font-size:11px;font-weight:720;white-space:nowrap}
  .auth-panel-inner{width:min(100%,540px);margin:0 auto;background:#fff;padding:36px 36px 30px;border:1px solid #e6edf6;border-radius:18px;box-shadow:0 17px 50px rgba(24,49,87,.07)}
  .auth-panel-footer{width:min(100%,540px);margin:15px auto 0}
  .auth-title{margin-bottom:26px}
  .auth-title h2{font-size:29px}
  .auth-title p{font-size:12px}
}
@media(max-width:760px){
  .admin-layout{display:block;min-height:100vh}
  .side{position:fixed;left:0;top:0;bottom:0;height:100dvh;width:min(295px,84vw);padding:18px 14px;transform:translateX(-105%);transition:transform .22s ease;z-index:100;overflow-x:visible;overflow-y:auto;overscroll-behavior:contain;box-shadow:14px 0 46px rgba(15,25,50,.13)}
  .admin-layout.menu-open .side{transform:translateX(0)}
  .nav-backdrop{display:block;position:fixed;inset:0;background:rgba(15,31,61,.45);z-index:90;opacity:0;pointer-events:none;transition:opacity .22s ease}
  .admin-layout.menu-open .nav-backdrop{opacity:1;pointer-events:auto}
  .side-workspace{display:flex;margin:18px 0 11px}
  .side-section-name{display:flex}
  .side-nav.shell-nav{display:flex;overflow:visible;gap:5px;padding:6px 0 18px;flex:0 0 auto}
  .nav-group .nav-group-toggle{height:47px;width:100%;font-size:12px;padding:0 9px}
  .nav-group-icon{height:32px;width:32px;flex-basis:32px}
  .nav-group-children{position:static;left:auto;top:auto;width:100%;padding:4px 0 5px 31px;border:0;border-radius:0;box-shadow:none;opacity:1;visibility:visible;transform:none;background:transparent;gap:0}
  .nav-group.is-open .nav-group-children{display:flex}
  .nav-group-children:before,.nav-group-children:after{display:none}
  .nav-flyout-heading{display:none}
  .nav-flyout-items{display:flex;flex-direction:column;overflow:visible;max-height:none;gap:2px}
  .nav-sub-link{min-height:39px;padding:0 12px;font-size:12px}
  .side-help{margin-top:auto}
  .side-bottom{display:flex}
  .admin-main{min-height:100vh;overflow:visible}
  .admin-top{height:63px;flex-basis:63px;position:sticky;padding:0 15px}
  .mobile-menu-toggle{display:grid;place-items:center;width:37px;height:37px;flex:0 0 37px;border:1px solid #e3eaf4;border-radius:9px;background:#fff;color:#425a7c}
  .mobile-menu-toggle svg{width:20px;height:20px}
  .top-title .breadcrumb{font-size:9px}
  .top-title strong{font-size:15px}
  .top-right{gap:9px}
  .top-right .status-indicator,.top-account{display:none}
  .top-right .top-website{font-size:10px;padding:8px 9px}
  .content{padding:21px 14px 35px}
  .page-head{align-items:start;gap:12px;flex-wrap:wrap}
  .page-head h1{font-size:24px}
  .page-head .btn{min-height:38px}
  .overview-hero{min-height:185px;padding:23px}
  .overview-hero h2{font-size:22px}
  .overview-hero .hero-illustration{width:145px;flex-basis:145px;opacity:.63}
  .hero-illustration .orbit{width:140px}
  .hero-illustration .orbit-two{width:180px}
  .hero-meta{gap:9px}
  .hero-meta span{font-size:10px}
  .feature-grid{grid-template-columns:1fr 1fr;gap:10px;padding:13px}
  .feature{padding:17px;min-height:165px}
  .stats-grid{gap:10px}
  .stat{padding:17px}
  .stat strong{font-size:28px}
  .panel-head{padding:16px}
  th,td{padding:12px 14px}
}
@media(max-width:540px){
  .auth-panel{padding:10px 13px 18px}
  .auth-mobile-head{margin:9px 0 25px}
  .auth-mobile-brand b{font-size:14px}
  .auth-mobile-brand img{height:38px;width:38px}
  .auth-mobile-brand small{font-size:9px}
  .auth-mobile-back{font-size:10px}
  .auth-panel-inner{padding:26px 21px 24px;border-radius:16px}
  .auth-title h2{font-size:26px}
  .auth-title p{font-size:11px;line-height:1.8}
  .auth-panel .form-stack{gap:18px}
  .auth-panel .form-stack label{font-size:12px}
  .auth-panel .form-stack input{height:49px;font-size:13px}
  .auth-panel .form-stack .btn.full{height:49px;font-size:14px}
  .auth-switch{font-size:12px}
  .auth-security-note{font-size:10px}
  .auth-panel-footer{font-size:10px;padding:0 4px}
  .overview-hero{padding:21px;display:block}
  .overview-hero h2{font-size:21px}
  .overview-hero .hero-illustration{display:none}
  .hero-meta{gap:10px 15px}
  .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat{padding:14px 13px}
  .stat .stat-head>span:first-child{font-size:11px}
  .stat .stat-icon{width:32px;height:32px;flex-basis:32px;border-radius:9px}
  .stat .stat-icon svg{width:17px;height:17px}
  .stat strong{font-size:27px;margin:5px 0}
  .stat small{font-size:10px}
  .feature-grid{grid-template-columns:1fr}
  .feature{min-height:0}
  .modal{max-height:93dvh;width:calc(100vw - 20px)}
  .modal-head{padding:19px 19px 15px}
  .modal>.form-stack{padding:20px 19px}
  .page-head .eyebrow{font-size:9px;letter-spacing:.8px}
  .page-head h1{font-size:22px}
  .panel-head h2{font-size:14px}
  .page-head>.btn{width:100%}
  .top-right .top-website{gap:4px}
}
@media(max-width:360px){
  .auth-mobile-brand small{display:none}
  .auth-panel-inner{padding:22px 15px}
  .stat{padding:12px 10px}
  .stat .stat-head>span:first-child{font-size:10px}
}
@media(prefers-reduced-motion:reduce){
  .side,.nav-backdrop,.nav-group-children,.nav-chevron,.btn{transition:none!important}
}
@media(max-width:760px){body.nav-lock{overflow:hidden}}
/* Match the framed Shell sign-in surface on desktop without compressing mobile inputs. */
@media(min-width:861px){
  .auth-panel{padding-left:clamp(20px,3vw,70px);padding-right:clamp(20px,3vw,70px)}
  .auth-panel-inner{width:min(100%,540px);border:1px solid #e5ecf5;border-radius:20px;background:rgba(255,255,255,.96);padding:37px clamp(25px,2.4vw,39px) 31px;box-shadow:0 24px 72px rgba(28,56,105,.085)}
  .auth-panel-footer{width:min(100%,540px)}
}
@media(min-width:861px) and (max-width:1120px){
  .auth-panel-inner{padding:30px 25px 25px}
  .auth-title h2{font-size:29px}
}

/* V2.2: requested left / right profile actions, provider management dialogs. */
.profile-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;flex-wrap:wrap}
.profile-actions form{display:inline-flex;flex:0 0 auto;margin:0}
.profile-actions .admin-action{margin-left:auto}
.provider-actions{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;white-space:nowrap}
.providers-table td:last-child{min-width:235px}
.btn.danger-outline{border:1px solid #f3cbd0;background:#fff;color:#bd3044}
.btn.danger-outline:hover{background:#fff1f2;border-color:#f4a6ae}
.btn.danger-solid{color:#fff;background:#d9364c;border-color:#d9364c}
.btn.danger-solid:hover{background:#b42337;border-color:#b42337}
.provider-check{display:flex!important;align-items:center;gap:9px!important;font-weight:650!important}
.provider-check input[type="checkbox"]{height:16px!important;width:16px!important;min-width:16px!important;accent-color:#2563eb;padding:0!important;box-shadow:none!important;flex:0 0 16px}
.delete-warning{border:1px solid #fecdd3;background:#fff7f7;border-radius:12px;padding:16px 17px;color:#933040;line-height:1.8}
.delete-warning strong{font-size:14px;overflow-wrap:anywhere}
.delete-warning p{font-size:12px;color:#925467;margin:7px 0 0;line-height:1.75}
.modal-confirm{width:min(94vw,520px)}
@media(max-width:540px){
  .provider-actions{gap:5px}
  .providers-table td:last-child{min-width:223px}
  .profile-actions{gap:9px}
  .profile-actions .btn{padding:0 12px;font-size:11px}
}
/* Keep provider dialog actions reachable on narrow/short screens. */
#provider-edit-dialog .modal-foot,
#provider-dialog .modal-foot{position:sticky;bottom:0;z-index:2;background:#fff;padding:12px 0 2px}
@media(max-width:540px){
  #provider-edit-dialog>.form-stack{gap:12px;padding-top:15px;padding-bottom:18px}
  #provider-edit-dialog .modal-head{padding-top:17px;padding-bottom:12px}
  #provider-edit-dialog textarea[name="public_config"]{height:87px;min-height:75px}
  #provider-edit-dialog textarea[name="secret"]{height:70px;min-height:65px}
  #provider-edit-dialog .field-help{line-height:1.55}
}
/* 2026-10 unified provider, template and site configuration */
.integration-choices{display:flex;flex-wrap:wrap;gap:10px;padding:15px 20px 20px}
.integration-editor{padding:20px;max-width:1120px}
.integration-editor h3{font-size:15px;color:var(--text,#202f47);margin:18px 0 4px}
.integration-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px}
.integration-grid label{min-width:0}
.integration-editor input,.integration-editor textarea,.integration-editor select{max-width:100%;box-sizing:border-box}
.integration-editor textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.55}
.integration-editor .modal-foot{justify-content:flex-end;margin-top:18px}
.integration-doc{padding:8px 22px 22px;line-height:1.7;overflow-wrap:anywhere}
.integration-doc code{word-break:break-all}
.integration-value-form{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:7px}
.integration-value-form input{min-width:145px;max-width:320px;flex:1}
.integration-choices .btn{max-width:100%}
@media (max-width:730px){.integration-grid{grid-template-columns:1fr}.integration-editor{padding:15px}.integration-choices{padding:12px;gap:8px}.integration-value-form input{min-width:120px}}
.passport-qr{margin-top:22px;border-top:1px solid rgba(120,137,169,.18);padding-top:18px}
.passport-qr-result:not(:empty){padding:15px 0;text-align:center}
.passport-qr-result img{width:220px;height:220px;max-width:90%;object-fit:contain;background:white;padding:6px;border-radius:15px;box-shadow:0 3px 18px rgba(0,0,0,.07)}
.passport-qr-result p{font-size:13px;line-height:1.6;color:#64748b}
.integration-test-grid{padding:2px 15px 15px;align-items:start}
.integration-test-grid .integration-editor{padding:8px 15px 20px}
.integration-test-grid label{min-width:0}
@media(max-width:730px){.integration-test-grid{grid-template-columns:1fr}}
/* Mobile verification / registration: compact code boxes, progressive unlock. */
.passport-phone-code{display:flex;gap:11px;align-items:flex-end;min-width:0}
.passport-phone-code label{flex:1;min-width:0}
.passport-phone-code button{height:51px;min-width:112px;flex-shrink:0;border-radius:11px;white-space:nowrap}
.passport-phone-status{min-height:18px;color:#60738d;font-size:12px;line-height:1.6;margin:-9px 0 0}
.passport-otp-section{display:grid;gap:9px;min-width:0}
.passport-field-title{color:#35445b;font-size:13px;font-weight:780}
.passport-otp-boxes{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;min-width:0}
.auth-panel .form-stack .passport-otp-boxes .passport-otp-digit{height:54px;min-width:0;width:100%;padding:0;text-align:center;font-size:23px;font-weight:780;border-radius:12px;font-variant-numeric:tabular-nums}
.auth-panel .form-stack .passport-otp-boxes .passport-otp-digit:disabled{background:#f3f6fb;color:#afbdd0;border-color:#e6ebf3;cursor:not-allowed;box-shadow:none}
.auth-panel .form-stack .passport-otp-boxes .passport-otp-digit:not(:disabled){background:#fff;border-color:#cad8ed}
.auth-panel .form-stack .passport-otp-boxes .passport-otp-digit:focus{border-color:#3b82f6;box-shadow:0 0 0 4px rgba(59,130,246,.11)}
.passport-otp-hint{font-size:11px;line-height:1.6;color:#8899af}
.passport-password-field{display:grid;gap:9px}
.passport-label-line{display:inline-flex;align-items:center;gap:4px}.passport-label-optional{font-size:11px;font-weight:500;color:#93a2b7}
.passport-password-meter{display:grid;gap:9px;padding:12px 13px;border:1px solid #e8edf6;border-radius:11px;background:#f9fbff}
.passport-password-progress{height:6px;border-radius:20px;background:#e2eaf5;overflow:hidden}
.passport-password-progress>span{display:block;height:100%;width:0;border-radius:20px;background:linear-gradient(90deg,#f5ad5b,#ef8e3c);transition:width .18s ease,background .18s ease}
.passport-password-meter[data-strength="ready"] .passport-password-progress>span{background:linear-gradient(90deg,#448af5,#21bb9e)}
.passport-password-strength{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap;color:#74869c;font-size:11px}
.passport-password-strength b{font-size:12px;color:#647892}
.passport-password-meter[data-strength="ready"] .passport-password-strength b{color:#16806f}
.passport-password-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 8px;font-size:11px;line-height:1.5;color:#92a0b3}
.passport-password-rules span{white-space:nowrap}
.passport-password-rules span.is-met{color:#16866f;font-weight:650}
@media(max-width:440px){
  .passport-phone-code{gap:8px}
  .passport-phone-code button{min-width:97px;padding:0 9px;font-size:11px}
  .passport-otp-boxes{gap:5px}
  .auth-panel .form-stack .passport-otp-boxes .passport-otp-digit{height:48px;font-size:21px;border-radius:9px}
  .passport-password-meter{padding:11px 10px}
  .passport-password-rules{font-size:10px;gap:7px 5px}
}
.passport-confirm{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px;background:#f5f7fb}
.passport-confirm-card{max-width:460px;padding:32px;border-radius:22px;background:white;box-shadow:0 8px 35px rgba(30,53,88,.08);line-height:1.7}
.passport-confirm-card h1{font-size:24px}

/* 2026-10-16 V3 — consistent, modal-first integration center. */
.integration-headerbar{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #e3eaf4;background:linear-gradient(110deg,#fff,#f9fbff);padding:18px 21px;border-radius:16px;box-shadow:0 7px 26px rgba(20,49,90,.025)}
.integration-headerbar strong{font-size:15px;color:#253751;font-weight:830}.integration-headerbar p{margin:7px 0 0;color:#8091a9;font-size:11px;line-height:1.65}.integration-headerbar .btn{min-height:38px}
.integration-filterbar{display:flex;flex-wrap:wrap;gap:9px;margin:15px 0 0}.integration-filter{appearance:none;border:1px solid #e1e7f1;background:#fff;border-radius:10px;padding:10px 14px;cursor:pointer;color:#6d7e96;font-size:12px;font-weight:720;display:inline-flex;gap:8px;align-items:center;transition:background .16s,border-color .16s,color .16s}.integration-filter.active{background:#eef5ff;border-color:#aacaff;color:#2563eb}.integration-filter b{padding:2px 6px;border-radius:7px;background:#f2f5fa;color:#8995a8;font-size:10px}.integration-filter.active b{background:#dceafe;color:#2563eb}
.integration-list thead th{background:#f9fbfe;font-size:11px;white-space:nowrap}.integration-list td{padding:16px 17px}.integration-list tbody tr:hover{background:#fbfdff}.integration-list .align-right{text-align:right}.integration-list th:last-child,.integration-list td:last-child{text-align:right}.integration-list .table-actions{justify-content:flex-end;align-items:center;gap:7px;flex-wrap:nowrap}.integration-list code{font-size:11px;color:#4e6280;overflow-wrap:anywhere;white-space:normal}.integration-provider-badge{display:inline-flex;align-items:center;border:1px solid #e4eaf4;border-radius:8px;padding:5px 9px;background:#f8fafc;color:#64748b;font-size:11px;font-weight:750;white-space:nowrap}.integration-provider-badge.kind-wechat_official{background:#ebfcf4;border-color:#c4efda;color:#108359}.integration-provider-badge.kind-wechat_pay{background:#f0f6ff;border-color:#d7e8ff;color:#2863ac}.integration-provider-badge.kind-aliyun_sms{background:#fff8e9;border-color:#f9e5b8;color:#a8791a}.integration-provider-badge.kind-aliyun_email{background:#f7f3ff;border-color:#e6dafa;color:#7357b2}
.integration-empty{padding:38px 20px!important;text-align:center!important;color:#8b99ae!important;font-size:12px}.integration-template-id{word-break:break-all}.integration-note-row{display:flex;flex-wrap:wrap;gap:9px 20px;padding:17px 6px 5px;font-size:11px;color:#899ab1}.integration-note-row span:before{content:'✓';display:inline-grid;place-items:center;margin-right:6px;width:16px;height:16px;border-radius:50%;background:#e9f2ff;color:#2664c6;font-size:10px}
.integration-modal{width:min(94vw,710px);max-height:min(93dvh,940px)}.integration-modal-wide{width:min(94vw,880px)}.integration-modal>.integration-dialog-form{padding:23px 27px 27px;gap:17px}.integration-dialog-form{display:grid;gap:17px}.integration-dialog-form label{display:grid;gap:8px;min-width:0;font-weight:720;font-size:12px;color:#475971}.integration-dialog-form input,.integration-dialog-form select,.integration-dialog-form textarea{min-width:0;width:100%;background:#fff;border:1px solid #dfe6f0;border-radius:10px;padding:10px 12px;font-size:12px;color:#27364b;outline:none;line-height:1.45;box-sizing:border-box}.integration-dialog-form input,.integration-dialog-form select{min-height:44px}.integration-dialog-form textarea{resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;line-height:1.65}.integration-dialog-form input:focus,.integration-dialog-form select:focus,.integration-dialog-form textarea:focus{border-color:#6ba4f5;box-shadow:0 0 0 3px rgba(59,130,246,.09)}.integration-dialog-form input:read-only{background:#f6f8fc;color:#7a879b}.integration-dialog-form .provider-check{display:inline-flex!important;align-items:center!important;gap:9px}.integration-dialog-form .provider-check input{min-height:auto!important;height:16px!important;width:16px!important}.integration-dialog-form .modal-foot{margin-top:6px;padding-top:12px;border-top:1px solid #eff2f7}
.integration-kind-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:22px 26px 26px}.integration-kind-option{text-align:left;display:grid;grid-template-columns:42px 1fr;column-gap:13px;row-gap:3px;border:1px solid #e5ebf3;border-radius:13px;padding:16px;background:#fff;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}.integration-kind-option:hover{transform:translateY(-2px);border-color:#b6d3fc;box-shadow:0 9px 22px rgba(34,73,120,.075)}.integration-kind-icon{grid-row:span 2;width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#eef5ff;font-weight:830;font-size:17px;color:#2664d2}.integration-kind-option:nth-child(1) .integration-kind-icon{color:#12a574;background:#e8fbf2}.integration-kind-option:nth-child(3) .integration-kind-icon{color:#af7b16;background:#fff8e5}.integration-kind-option b{font-size:13px;color:#273b56;align-self:end}.integration-kind-option small{color:#90a0b2;font-size:10px;line-height:1.6}
.integration-section-title{display:flex;align-items:center;gap:10px;margin:6px 0 4px;font-size:13px;color:#2b415f}.integration-section-title>span{width:23px;height:23px;border-radius:7px;display:grid;place-items:center;background:#eaf2ff;color:#356cc9;font-size:10px}.integration-section-title b{font-size:13px}.integration-section-title small{font-size:10px;font-weight:500;color:#9aa7b8}.integration-kind-fieldset{min-width:0;margin:0;padding:0;border:0}.integration-kind-fieldset:not(.is-active){display:none}.integration-kind-fieldset legend{padding:0;width:100%;margin:0 0 14px}.integration-kind-fieldset .integration-secret-title{margin:20px 0 14px;border-top:1px solid #eff2f7;padding-top:16px}
.integration-secret-field{display:grid;gap:7px;min-width:0}.integration-secret-input{display:flex;align-items:stretch;gap:7px}.integration-secret-input input{flex:1;min-width:0}.integration-secret-input textarea{flex:1;min-width:0}.integration-secret-input .btn{font-size:10px;min-height:40px;white-space:normal;max-width:110px;flex-shrink:0}.integration-clear-secret{display:inline-flex!important;align-items:center!important;gap:7px!important;color:#a2aaba!important;font-size:10px!important;font-weight:500!important}.integration-clear-secret input{width:14px!important;height:14px!important;min-height:0!important}.integration-callout{border:1px solid #dae8fb;background:#f8fbff;border-radius:12px;padding:13px 15px;font-size:11px;color:#59718f;line-height:1.75}.integration-callout>b{font-size:12px;color:#2b578d}.integration-callout p{margin:7px 0}.integration-callout code{overflow-wrap:anywhere;color:#265ea5}.integration-callback-url{background:#fff;border:1px solid #dce6f5;border-radius:8px;padding:10px;margin:10px 0;font-size:11px;color:#345d93;overflow-wrap:anywhere}
.integration-provider-select{display:flex;align-items:center;gap:10px;flex:0 0 auto}.integration-provider-select span{font-size:11px;color:#8a99ac}.integration-provider-select select{max-width:270px;border:1px solid #e0e6ee;border-radius:9px;background:#fff;padding:9px 12px;font-size:12px;color:#304761;min-width:180px}.integration-toolbar{display:flex;justify-content:space-between;align-items:center;gap:13px;margin:17px 0 0;flex-wrap:wrap}.integration-inline-hint{font-size:11px;color:#8999ad;line-height:1.7;max-width:700px}.integration-inline-actions{display:flex;gap:9px;flex-wrap:wrap}.integration-mini-notice{margin:14px 3px;padding:11px 13px;border:1px solid #f6e6be;background:#fffcf5;border-radius:11px;color:#a08143;font-size:11px;line-height:1.75}
.integration-guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px;margin:7px 0 13px}.integration-guide-grid>div{display:grid;gap:4px;padding:11px;border:1px solid #edf1f8;border-radius:10px;background:#fbfcff;min-width:0}.integration-guide-grid span{font-size:11px;color:#8291a5}.integration-guide-grid code{font-size:11px;color:#3567af;overflow-wrap:anywhere}.integration-doc>p{font-size:11px;color:#7c8da2}
/* Visual WeChat menu editor, aligned with familiar official-account workflows. */
.wechat-menu-workspace{display:grid;grid-template-columns:315px minmax(0,1fr);gap:30px;padding:24px 27px 27px;align-items:start}.wechat-phone{width:100%;height:530px;border:8px solid #29384a;border-radius:30px;overflow:hidden;background:#ededed;box-shadow:0 12px 28px rgba(27,50,89,.12);position:relative;display:flex;flex-direction:column}.wechat-phone-top{height:59px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;background:#f6f6f6;border-bottom:1px solid #dedede;padding:0 19px;color:#303840;font-size:17px}.wechat-phone-top strong{font-size:14px;font-weight:700}.wechat-phone-conversation{display:grid;place-items:center;background:#ebe9e5;flex:1}.wechat-chat-placeholder{text-align:center;color:#a4a09b;font-size:12px;line-height:2.3}.wechat-chat-placeholder small{font-size:10px;line-height:1.65;display:block;max-width:200px}.wechat-phone-bottom{display:flex;height:56px;background:#fafafa;flex-shrink:0;border-top:1px solid #ddd;align-items:stretch}.wechat-keyboard-icon{width:42px;border-right:1px solid #e0e0e0;display:grid;place-items:center;color:#888;font-size:19px}.wechat-preview-nav{flex:1;display:flex;min-width:0}.wechat-preview-action{font-size:11px;border:0;border-right:1px solid #e9e9e9;min-width:0;flex:1;background:transparent;color:#41474e;padding:8px 2px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wechat-preview-action.selected{color:#13a37e;background:#e9faf2}.wechat-submenu-popup{position:absolute;bottom:60px;left:42px;right:8px;display:flex;flex-direction:column;gap:0;background:white;border:1px solid #e4e4e4;border-radius:10px;box-shadow:0 5px 19px rgba(0,0,0,.1);max-height:255px;overflow:auto}.wechat-submenu-popup>div{padding:14px 10px;font-size:11px;text-align:center;border-bottom:1px solid #f0f0f0}.wechat-submenu-popup>div:last-child{border-bottom:0}
.wechat-menu-inspector{min-width:0}.wechat-menu-inspector-heading{display:flex;justify-content:space-between;gap:8px;padding:3px 0 14px}.wechat-menu-inspector-heading b{font-size:13px;color:#344764}.wechat-menu-inspector-heading span{font-size:10px}.wechat-menu-tree{display:grid;gap:11px}.wechat-tree-parent{background:#fbfcff;border:1px solid #e2e9f3;border-radius:13px;padding:11px 13px}.wechat-tree-row,.wechat-tree-child{display:flex;align-items:center;gap:11px;min-width:0}.wechat-tree-row{padding:3px 0 11px}.wechat-menu-number{flex:0 0 24px;width:24px;height:24px;background:#e9f3ff;border-radius:7px;color:#3c6ec6;display:grid;place-items:center;font-size:10px;font-weight:800}.wechat-tree-label{display:grid;gap:4px;min-width:0;flex:1}.wechat-tree-label b{font-size:11px;color:#33465f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wechat-tree-label small{font-size:9px;color:#95a1b0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wechat-tree-controls{display:flex;gap:5px;flex-shrink:0}.wechat-icon-action{min-width:26px;height:25px;border:1px solid #dfe7f2;background:#fff;border-radius:6px;font-size:10px;font-weight:750;cursor:pointer;color:#6b7b92}.wechat-icon-action:hover:not(:disabled){color:#206dd1;border-color:#a8ccfd}.wechat-icon-action:disabled{opacity:.3;cursor:default}.wechat-tree-child{border-top:1px dashed #e3e8f0;padding:10px 0 9px 10px}.wechat-child-bullet{width:24px;flex:0 0 24px;text-align:center;color:#9facc0;font-size:17px}.wechat-add-child{background:#fff;color:#4775ae;border:1px dashed #c4d9f3;border-radius:8px;min-height:31px;width:100%;font-size:11px;cursor:pointer;margin-top:7px}.wechat-add-child:hover{background:#eff7ff}.wechat-menu-empty{padding:22px;border:1px dashed #dae4f1;border-radius:12px;text-align:center;color:#a2adba;font-size:11px}.wechat-menu-inspector>.field-help{margin:14px 1px 0}.wechat-menu-feedback{font-size:11px;color:#b1842f;line-height:1.5;margin:10px 0}.wechat-menu-footer{padding:17px 25px;display:flex;justify-content:space-between;align-items:center;gap:13px;flex-wrap:wrap;border-top:1px solid #edf1f6}.wechat-menu-footer>div:first-child{display:grid;gap:7px}.wechat-menu-footer strong{font-size:12px;color:#465974}.wechat-menu-footer small{font-size:10px;color:#9aabba}.wechat-menu-footer form{display:flex;gap:9px}.integration-menu-other-actions{margin:15px 0}
/* User account-linked WeChat identities. */
.passport-linked-accounts{margin:17px 0;background:#fff;border:1px solid #e7edf5;border-radius:14px;padding:16px}.passport-linked-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.passport-linked-heading h3{font-size:14px;margin:0 0 6px;color:#304765}.passport-linked-heading p{font-size:11px;color:#8f9daf;line-height:1.65;margin:0}.passport-linked-count{font-size:10px;color:#8395ab;white-space:nowrap;background:#f4f8fe;padding:7px 9px;border-radius:7px}.passport-binding-item{display:flex;align-items:center;gap:10px;padding:13px 0;border-top:1px solid #f1f3f7}.passport-binding-item:first-of-type{border-top:0}.passport-wechat-avatar{width:35px;height:35px;flex:0 0 35px;display:grid;place-items:center;border-radius:10px;background:#e6faf0;color:#149562;font-size:15px;font-weight:800}.passport-binding-info{min-width:0;display:grid;gap:4px;flex:1}.passport-binding-info strong{font-size:12px;color:#30445e}.passport-binding-info small{font-size:10px;color:#91a0b3;overflow-wrap:anywhere}.passport-binding-label{width:max-content;border-radius:6px;background:#f1f5fa;color:#92a2b7;padding:3px 6px;font-size:9px}.passport-binding-label.bound{background:#e6faf1;color:#138a60}.passport-binding-empty{font-size:11px;color:#98a5b6;line-height:1.8;padding:14px;text-align:center;background:#fafcff;border-radius:10px}.passport-account-dialog{width:min(94vw,475px)}.passport-account-modal-body{padding:19px 24px 24px!important;display:grid;gap:15px}.passport-account-guidance{font-size:12px;color:#7588a2;line-height:1.8;margin:0}.passport-bind-qr-wrap{display:grid;place-items:center;min-height:243px;background:#f7faff;border:1px dashed #cbdcf0;border-radius:14px;padding:12px}.passport-bind-qr-wrap img{width:213px;height:213px;max-width:100%;object-fit:contain;background:#fff;padding:5px;border-radius:7px}.passport-bind-qr-placeholder{font-size:12px;color:#8b9ab0;text-align:center}.passport-bind-message{font-size:11px;line-height:1.8;color:#5280ab;min-height:19px;margin:0}.passport-bind-message.is-error{color:#be304e}.passport-unbind-code{display:flex;align-items:end;gap:8px}.passport-unbind-code label{flex:1;min-width:0}.passport-unbind-code .btn{height:44px;white-space:nowrap}
@media(max-width:1050px){.integration-list .table-actions{flex-wrap:wrap}.wechat-menu-workspace{grid-template-columns:270px minmax(0,1fr);gap:20px;padding:20px}.wechat-phone{height:470px}.wechat-menu-footer{padding:16px 20px}}
@media(max-width:730px){.integration-headerbar{padding:15px;align-items:stretch;flex-direction:column}.integration-headerbar .btn{align-self:flex-start}.integration-provider-select{justify-content:space-between}.integration-provider-select select{flex:1;min-width:0;max-width:none}.integration-filterbar{gap:6px}.integration-filter{padding:8px 9px;font-size:10px}.integration-list td{padding:13px 12px}.integration-list th{padding:12px}.integration-list .table-actions{justify-content:flex-end;min-width:125px}.integration-kind-grid{grid-template-columns:1fr;padding:17px;gap:9px}.integration-modal>.integration-dialog-form{padding:18px 16px 20px}.integration-kind-grid .integration-kind-option{padding:12px}.integration-kind-grid .integration-kind-icon{width:36px;height:36px}.integration-guide-grid{grid-template-columns:1fr}.wechat-menu-workspace{grid-template-columns:1fr;padding:18px}.wechat-phone{max-width:310px;justify-self:center;min-height:455px;height:480px}.wechat-menu-inspector{width:100%}.wechat-menu-footer{align-items:stretch}.wechat-menu-footer form{width:100%;justify-content:flex-end}.integration-secret-input{flex-wrap:wrap}.integration-secret-input .btn{max-width:none}.integration-headerbar p{font-size:11px}}

/* Hidden on managed panels must win against modal and grid display rules. */
.integration-modal [hidden], .integration-kind-fieldset[hidden], .passport-account-dialog [hidden],
.integration-template-library[hidden], .passport-bind-qr-wrap[hidden], .integration-editor [hidden] {display:none!important;}
.integration-template-picker {display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.integration-template-library {max-height:280px;overflow-y:auto;display:grid;gap:8px;}
.integration-template-library button {text-align:left;background:var(--card-bg,#fff);border:1px solid #e0e7f1;border-radius:12px;padding:12px;display:grid;gap:3px;cursor:pointer;}
.integration-template-library button:hover {border-color:#3b82f6;background:#f5f9ff;}
.integration-template-library button small {color:#718096;}

#admin-wechat-content{padding:22px 25px 25px}
#admin-wechat-unbind-form{padding:21px 24px}
@media(max-width:730px){#admin-wechat-content,#admin-wechat-unbind-form{padding:18px 17px}}

/* 2026-10-16: one consistent toolbar and aligned dynamic template editor. */
.integration-toolbar{gap:14px;align-items:center;flex-wrap:wrap}
.integration-toolbar>.integration-inline-hint{min-width:180px;flex:1}
.integration-toolbar>.integration-inline-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.integration-toolbar>.integration-inline-actions .btn{min-height:36px;white-space:nowrap}
.tpl-modal .integration-dialog-form{display:grid;gap:17px}
.tpl-two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;align-items:start}
.tpl-two-column>label{display:grid;grid-template-rows:auto minmax(44px,auto);gap:8px;min-width:0;margin:0}
.tpl-two-column input{width:100%;min-width:0;box-sizing:border-box}
.tpl-chooser-row>label>small{display:block;margin-top:0;line-height:1.5}
.tpl-mapping-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:4px 0 0}
.tpl-mapping-head b{display:block;font-size:13px;color:#20324e}
.tpl-mapping-head small{display:block;margin-top:5px;color:#7389a7;line-height:1.5;font-size:11px}
.tpl-mapping-rows{display:grid;gap:9px}
.tpl-map-row{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) auto;align-items:end;gap:11px;border:1px solid #e5ecf7;border-radius:11px;padding:11px 12px;background:#f8fafd}
.tpl-map-row label{display:grid;gap:6px;min-width:0;color:#667b96;font-size:11px;font-weight:600}
.tpl-map-row input{width:100%;min-width:0;box-sizing:border-box;min-height:42px}
.tpl-map-row button{height:42px;min-height:42px;align-self:end}
.tpl-preview{border:1px solid #cee6d9;background:#f3fbf7;color:#2c7060;white-space:pre-wrap;line-height:1.65;padding:12px 14px;border-radius:11px;font-size:12px;overflow-wrap:anywhere}
.tpl-preview.has-warning{background:#fff9f1;border-color:#f2d8ae;color:#8c6021}
.tpl-json-advanced{border:1px solid #e1eaf6;border-radius:10px;background:#f9fbfe;padding:12px}
.tpl-json-advanced summary{color:#536b8b;cursor:pointer;font-weight:650;font-size:12px}
.tpl-json-advanced textarea{width:100%;resize:vertical;margin-top:12px;min-height:120px;box-sizing:border-box;font-family:ui-monospace,monospace}
@media(max-width:730px){.tpl-two-column{grid-template-columns:1fr;gap:12px}.tpl-map-row{grid-template-columns:1fr auto}.tpl-map-row label:first-child{grid-column:1/-1}.tpl-mapping-head{align-items:flex-start}.tpl-map-row button{grid-column:2;grid-row:2}.integration-toolbar>.integration-inline-actions{justify-content:flex-start}}

/* HF2: styled user search + unmistakable administrator badge. */
.passport-user-search{padding:20px 24px;background:linear-gradient(110deg,#f8fbff 0%,#fff 100%);border-bottom:1px solid #edf1f7;display:grid;gap:12px}
.passport-search-heading{display:flex;justify-content:space-between;align-items:center;gap:8px 15px;flex-wrap:wrap}
.passport-search-title{font-size:12px;font-weight:800;color:#344867;letter-spacing:.1px}
.passport-search-hint{font-size:11px;color:#91a0b4}
.passport-user-search-controls{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
.passport-search-field{position:relative;min-width:220px;flex:1 1 350px;display:flex;align-items:center}
.passport-search-field svg{position:absolute;left:14px;width:17px;height:17px;color:#9aaac0;pointer-events:none}
.passport-search-field input{height:43px;min-width:0;width:100%;appearance:none;padding:0 14px 0 42px;line-height:1.3;border:1px solid #d9e3f0;border-radius:10px;background:#fff;color:#293a51;font-size:13px;box-shadow:0 2px 5px rgba(20,50,95,.025);outline:none;transition:border-color .16s,box-shadow .16s}
.passport-search-field input:focus{border-color:#76a9f5;box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.passport-user-search-controls>.btn{height:43px;min-width:87px;padding:0 17px;align-self:stretch}
.passport-user-identity{display:flex;align-items:center;gap:8px;min-width:0}
.passport-user-identity b{overflow-wrap:anywhere}
.passport-admin-badge{flex:0 0 24px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:linear-gradient(135deg,#567ce6,#3065cb);border:1px solid rgba(29,78,216,.2);color:#fff;font-size:12px;line-height:1;font-weight:850;box-shadow:0 3px 8px rgba(37,99,235,.19)}
.passport-role-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:7px;background:#f3f6fa;color:#6f8094;font-size:11px;font-weight:700;white-space:nowrap}
.passport-role-pill.is-admin{color:#355ec7;background:#ebf2ff;border:1px solid #dce8ff;padding:4px 8px}
.passport-users-panel .table-wrap{margin:0}
.passport-users-panel .table-actions{justify-content:flex-end;gap:8px}
@media(max-width:700px){.passport-users-panel .panel-head{flex-wrap:wrap;align-items:flex-start}.passport-users-panel .panel-head h2{white-space:nowrap}.passport-user-search{padding:15px 16px}.passport-search-hint{font-size:10px}.passport-search-field{min-width:100%;flex-basis:100%}.passport-user-search-controls>.btn{flex:1;min-width:0}.passport-user-identity{gap:6px}}

/* HF2: per-app grant controls, separate multi-select dialog. */
.app-list-panel .panel-head>div{display:grid;gap:6px}
.app-list-panel .panel-head small{display:block;font-size:11px;line-height:1.5;color:#93a1b5}
.app-list-table th{white-space:nowrap;color:#7b8ba2}
.app-list-table td{padding-top:17px;padding-bottom:17px}
.app-list-table th:last-child,.app-list-table td:last-child{text-align:right}
.app-name-cell{display:flex;align-items:center;gap:11px;min-width:160px;text-align:left}
.app-name-cell>div{min-width:0}
.app-name-cell b{display:block;font-size:12px;overflow-wrap:anywhere}
.app-name-cell .subline{font-size:10px;margin-top:6px;overflow-wrap:anywhere}
.app-initial{width:36px;height:36px;border-radius:11px;flex:0 0 36px;display:grid;place-items:center;background:#eaf1ff;color:#3569c4;font-weight:850;font-size:14px}
.app-grant-count{display:inline-flex;align-items:center;padding:6px 10px;border-radius:8px;font-weight:730;font-size:11px;white-space:nowrap}
.app-grant-count.has-grants{background:#edf8f2;color:#138457}
.app-grant-count.is-empty{background:#fff7ed;color:#a76c22}
.app-row-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap;align-items:center}
.app-row-actions .btn{min-height:34px;font-size:11px}
.app-grant-trigger{color:#205aca;background:#edf4ff;border:1px solid #cadeff;box-shadow:none}
.app-grant-trigger:hover{background:#e1eeff;border-color:#a7c4f9}
.app-list-empty{text-align:center;padding:26px;color:#8da0b8;font-size:12px;line-height:1.8}
.app-grants-dialog{width:min(94vw,740px)}
.app-grants-form{display:grid;gap:16px;padding:20px 27px 25px!important}
.app-grants-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 13px;background:#f7faff;border:1px solid #edf2f9;border-radius:10px}
.app-grants-count{color:#687c98;font-size:12px;font-weight:670}
.app-grants-count strong{color:#1d5cce;font-size:15px}
.app-grants-tools{display:flex;gap:6px}
.app-grants-tools button{font-size:11px;color:#416bab;border:0;border-radius:7px;background:#eaf2ff;padding:7px 12px;font-weight:750;cursor:pointer}
.app-grants-tools button:hover{background:#dfeeff}
.app-grants-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;max-height:min(46vh,425px);overflow:auto;align-content:start;padding:2px 2px 5px}
.app-capability-option{position:relative;display:flex!important;align-items:center;min-width:0;min-height:72px;gap:12px;padding:13px!important;border-radius:12px;border:1px solid #e4eaf3;background:#fff;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}
.app-capability-option:hover{border-color:#9dbbf3;background:#f9fbff}
.app-capability-option:has(input:checked){background:#f2f7ff;border-color:#79a7f0;box-shadow:inset 0 0 0 1px rgba(60,115,215,.07)}
.app-capability-option:focus-within{outline:2px solid rgba(37,99,235,.2);outline-offset:1px}
.app-capability-option input[type=checkbox]{flex:0 0 19px;width:19px!important;height:19px!important;min-height:19px!important;accent-color:#2563eb;cursor:pointer;margin:0}
.app-capability-main{display:grid;gap:5px;flex:1;min-width:0;text-align:left}
.app-capability-main b{font-size:12px;color:#2c415e;line-height:1.3}
.app-capability-main small{font-size:10px;color:#8a9aad;font-weight:560;overflow-wrap:anywhere}
.app-capability-indicator{min-width:48px;height:22px;display:grid;place-items:center;background:#e2edff;color:#3266bd;font-size:10px;font-weight:750;border-radius:6px;opacity:0;flex:0 0 auto}
.app-capability-option:has(input:checked) .app-capability-indicator{opacity:1}
.app-grants-hint{padding:12px 14px;border-radius:9px;background:#f7f9fc;border:1px solid #edf1f7;color:#8594a8;font-size:11px;line-height:1.8;margin:0}
.app-grants-form .modal-foot{border-top:1px solid #eef2f7;padding-top:16px;margin-top:1px}
@media(max-width:780px){.app-row-actions{min-width:190px}.app-grants-form{padding:17px 17px 20px!important}.app-grants-grid{grid-template-columns:1fr;max-height:50vh;gap:8px}.app-capability-option{min-height:65px}.app-list-panel .panel-head{align-items:flex-start;flex-wrap:wrap}}
.passport-admin-otp{border:1px solid #dbe6f9;border-radius:12px;background:#f5f9ff;padding:14px;margin:12px 0;display:grid;gap:9px}
.passport-admin-otp[hidden]{display:none}
.passport-admin-otp p{margin:0;font-size:12px;color:#65768b}
.passport-otp-grid{display:grid;grid-template-columns:minmax(90px,1fr) minmax(100px,1.1fr) auto;gap:9px;align-items:end}
.passport-otp-grid input,.passport-otp-grid select{min-width:0;min-height:41px;border:1px solid #dce4ef;border-radius:9px;padding:0 10px;background:white}
.integration-secret-reveals{display:grid;gap:10px;margin:12px 0}
.integration-secret-reveal-item{border:1px solid #e2e9f4;border-radius:11px;padding:10px 12px;background:#f8faff}
.integration-secret-reveal-item label{display:block;font-size:12px;font-weight:650;margin-bottom:7px;color:#475972}
.integration-secret-reveal-item .reveal-actions{display:flex;gap:8px;align-items:center}
.integration-secret-reveal-item textarea{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;resize:vertical;min-height:44px;flex:1;min-width:0;border:1px solid #d7e1f0;border-radius:8px;padding:8px;color:#182b45}
@media(max-width:600px){.passport-otp-grid{grid-template-columns:1fr 1fr}.passport-otp-grid button{grid-column:1/-1}.integration-secret-reveal-item .reveal-actions{flex-direction:column;align-items:stretch}}

/* HF2: narrow screens show actual cards, never squash a user's name or URL into one-character-wide columns. */
@media(max-width:700px){
 .passport-users-panel .table-wrap,.app-list-panel .table-wrap{overflow:visible}
 .passport-users-panel .integration-list,.app-list-panel .app-list-table{display:block;width:100%;min-width:0}
 .passport-users-panel thead,.app-list-panel thead{display:none}
 .passport-users-panel tbody,.app-list-panel tbody{display:grid;gap:11px;padding:13px;background:#f9fbfe}
 .passport-users-panel tbody tr,.app-list-panel tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:13px;row-gap:12px;padding:14px;border:1px solid #e5ebf4;background:#fff;border-radius:12px;box-shadow:0 3px 12px rgba(26,56,92,.035)}
 .passport-users-panel tbody td,.app-list-panel tbody td{display:block!important;min-width:0;max-width:100%;border:0!important;padding:0!important;font-size:12px;text-align:left!important;overflow-wrap:anywhere}
 .passport-users-panel tbody td::before,.app-list-panel tbody td::before{content:attr(data-label);display:block;font-size:10px;line-height:1.4;font-weight:760;color:#90a0b4;margin-bottom:6px}
 .passport-users-panel tbody td:first-child,.app-list-panel tbody td:first-child{grid-column:1/-1;border-bottom:1px solid #eef2f7!important;padding-bottom:11px!important}
 .passport-users-panel tbody td:first-child::before,.app-list-panel tbody td:first-child::before{display:none}
 .passport-users-panel tbody td:nth-child(2),.app-list-panel tbody td:nth-child(2){grid-column:1/-1}
 .passport-users-panel tbody td:last-child,.app-list-panel tbody td:last-child{grid-column:1/-1;border-top:1px solid #eef2f7!important;padding-top:11px!important}
 .passport-users-panel tbody td:last-child .table-actions,.app-list-panel tbody td:last-child .table-actions{min-width:0;justify-content:flex-start;flex-wrap:wrap;gap:8px}
 .app-list-panel tbody .app-name-cell,.passport-users-panel tbody .passport-user-identity{min-width:0}
 .app-list-panel tbody .wrap-url{max-width:100%;font-size:11px;line-height:1.65}
 .passport-users-panel tbody td .subline{font-size:10px}
}

/* 2026-10-16 — calm, consistent rhythm for account, verification and template dialogs. */
.auth-panel .profile-card{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.auth-panel .account-details{display:grid;gap:0;margin:0 0 20px;padding:1px 18px;box-shadow:0 8px 22px rgba(30,63,110,.025)}
.auth-panel .account-details + .account-details{margin-top:16px}
.auth-panel .account-details .info-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;min-height:57px;padding:16px 0}
.auth-panel .account-details .info-row:not(:last-child){border-bottom:1px solid #edf1f7}
.auth-panel .account-details .info-row>span:first-child{font-weight:710;color:#8393a8}
.auth-panel .account-details .info-row>code{max-width:100%;overflow-wrap:anywhere;user-select:all}
.passport-profile-name{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:7px}
.passport-profile-name h3{margin:0!important;max-width:100%;overflow-wrap:anywhere;min-width:0}
.passport-profile-name .btn{min-height:28px;padding:5px 9px;font-size:10px}
.auth-panel .passport-linked-accounts{margin:20px 0 0;padding:19px}
.auth-panel .passport-linked-heading{margin-bottom:15px;gap:13px}
.auth-panel .passport-linked-heading h3{margin:0 0 7px}
.auth-panel .passport-binding-item{min-height:70px}
.auth-panel .passport-binding-item>.btn{flex-shrink:0}
.auth-panel .profile-actions{margin-top:23px}
.auth-panel .auth-title{margin-bottom:27px}
.auth-panel .auth-title h2{margin-top:0}
.auth-panel .passport-profile-modal .form-stack{gap:16px}
body.is-passport .modal{max-width:calc(100vw - 28px)}
body.is-passport dialog::backdrop,body.is-admin dialog::backdrop{background:rgba(14,34,65,.45);backdrop-filter:blur(4px)}
.profile-edit-dialog{width:min(94vw,760px)}
.profile-edit-dialog .integration-dialog-form{display:grid!important;gap:18px}
.profile-modal-section{display:grid;gap:16px;padding:17px 18px;background:#fff;border:1px solid #e5ebf5;border-radius:13px}
.profile-modal-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.profile-modal-section-head strong{font-size:13px;font-weight:820;color:#233b5a}
.profile-modal-section-head small{font-size:11px;line-height:1.6;color:#8a9bb0}
.profile-modal-section .integration-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.profile-modal-section label{min-width:0;display:grid;gap:8px;color:#41536d;font-size:12px;font-weight:730}
.profile-modal-section :is(input,select){width:100%;min-width:0;box-sizing:border-box;min-height:45px;padding:9px 12px;border:1px solid #dbe4f0;border-radius:10px;background:#fff;color:#23374f;font-size:13px;outline:0}
.profile-modal-section :is(input,select):focus{border-color:#70a0eb;box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.profile-modal-section :is(input,select).profile-readonly{background:#f5f8fc;color:#6d7f96;cursor:default}
.profile-modal-section .profile-verify-item{display:grid;gap:8px;align-content:end;min-width:0}
.profile-verify-item>.btn{justify-self:start;white-space:normal;min-height:35px}
.profile-verified-panel{border-color:#d9e5fb;background:#f8fbff}
.profile-verify-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.profile-verify-actions .passport-bind-message{flex:1;min-width:150px;font-size:12px}
.profile-edit-dialog .modal-foot{margin-top:0;padding-top:17px;border-top:1px solid #edf1f6}
.profile-modal-section-head>.pill{color:#3264bc;background:#eaf2ff}
.passport-account-modal-body .passport-bind-message{font-size:12px;text-align:center}
.passport-account-modal-body .passport-bind-qr-wrap{margin:5px 0 1px}
#passport-qr-image[hidden],#passport-qr-placeholder[hidden]{display:none!important}
#passport-qr-retry{min-width:132px}
#passport-qr-dialog .modal-foot{justify-content:flex-end}
.template-test-variables{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;padding:15px;background:#f7faff;border-radius:12px;border:1px solid #e5ecf7}
.template-test-field{display:grid!important;gap:8px;min-width:0;font-size:12px;font-weight:760;color:#435a79}
.template-test-field input{min-width:0;min-height:44px;width:100%;padding:9px 12px;border:1px solid #dbe5f2;border-radius:9px;outline:0;background:#fff;color:#243b59;font-size:13px}
.template-test-field input:focus{border-color:#77a3ed;box-shadow:0 0 0 3px rgba(40,105,210,.09)}
#template-test-dialog .tpl-mapping-head{margin-bottom:-2px}
#template-test-advanced{margin-top:0}
#template-test-advanced textarea{margin-top:9px;max-width:100%;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
#template-test-dialog .integration-callout{line-height:1.75}
#template-test-dialog .tpl-preview{white-space:pre-line;margin:0;line-height:1.7}
.passport-otp-grid{align-items:end;row-gap:12px}
.passport-otp-grid :is(input,select){height:44px;min-height:44px;font-size:13px;outline:0}
.passport-otp-grid :is(input,select):focus{border-color:#70a0eb;box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.passport-otp-grid button{min-height:44px;height:44px;white-space:nowrap}
#admin-wechat-unbind-dialog .integration-dialog-form{gap:16px}
#admin-wechat-admin-otp>strong{color:#2c4c77;font-size:13px}
body.is-admin .page-head{margin-bottom:24px}
body.is-admin .integration-headerbar{margin-bottom:20px}
body.is-admin .integration-toolbar{margin-top:16px;margin-bottom:16px}
body.is-admin .integration-dialog-form :is(input,textarea,select){max-width:100%;box-sizing:border-box}
body.is-admin .integration-dialog-form>label{min-width:0}
body.is-admin .integration-list td:last-child .table-actions{justify-content:flex-end}
body.is-admin .integration-dialog-form{overflow-wrap:anywhere}
.ajax-form-message{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);max-width:min(92vw,540px);z-index:10005;padding:12px 18px;line-height:1.6;border:1px solid #bcd6f7;background:#eef5ff;color:#1b5eb3;border-radius:12px;box-shadow:0 11px 32px rgba(25,60,111,.12);font-size:13px;text-align:center;pointer-events:none}
.ajax-form-message.is-error{background:#fff5f6;color:#b03247;border-color:#f4cdd4}
.passport-secret-once .integration-dialog-form{display:grid;gap:16px}
.passport-secret-once .passport-once-line{display:flex;gap:10px;align-items:center;margin-top:8px}
.passport-once-line textarea{min-width:0;flex:1;min-height:46px;padding:9px;border:1px solid #dce5f0;border-radius:9px;color:#1d3554;font-size:12px}
.passport-once-line .btn{flex-shrink:0}
@media(max-width:700px){
 .profile-edit-dialog .integration-dialog-form{gap:13px;padding:15px!important}
 .profile-modal-section{gap:13px;padding:14px}
 .profile-modal-section .integration-grid{grid-template-columns:1fr;gap:12px}
 .template-test-variables{grid-template-columns:1fr;padding:11px;gap:11px}
 .auth-panel .account-details{padding:0 13px}
 .auth-panel .account-details .info-row{align-items:flex-start;gap:8px;padding:14px 0}
 .auth-panel .passport-linked-accounts{padding:14px}
 .auth-panel .passport-linked-heading{flex-wrap:wrap}
 .auth-panel .passport-binding-item{gap:8px}
 .auth-panel .passport-binding-item>.btn{min-width:auto;padding-left:11px;padding-right:11px}
 .passport-secret-once .passport-once-line{flex-direction:column;align-items:stretch}
 .ajax-form-message{bottom:14px;font-size:12px}
}

/* 2026-10-16 HF2: all notices must appear *above* currently open modal content.
   JS portals the notice INSIDE the active top-layer dialog; z-index alone cannot
   put a normal body element above a modal <dialog>. */
.ajax-form-message{top:max(16px,env(safe-area-inset-top));bottom:auto;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:min(92vw,640px);max-height:min(42dvh,250px);overflow:auto;box-sizing:border-box;z-index:2147483647;box-shadow:0 15px 50px rgba(17,42,81,.20);font-size:13px;line-height:1.65;font-weight:650;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:auto}
.ajax-form-message[hidden]{display:none!important}
dialog[open]>.ajax-form-message{z-index:2147483647}
.passport-account-switch,.passport-overview-links{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px}
.passport-account-switch .btn,.passport-overview-links .btn{min-height:40px}
@media(max-width:760px){.ajax-form-message{top:max(10px,env(safe-area-inset-top));max-width:calc(100vw - 26px);font-size:12px}.passport-account-switch{gap:8px}}

/* V3 step-up account editor: first verify, then edit. Hidden stages stay hidden even with display:grid rules. */
.profile-edit-dialog #admin-profile-gate[hidden],.profile-edit-dialog #admin-profile-form[hidden]{display:none!important}
.profile-edit-dialog .profile-gate{padding:20px 24px 25px;display:grid;gap:16px}
.profile-edit-dialog .profile-gate-form{display:grid;gap:16px}
.profile-edit-dialog .profile-gate-description{margin:0;color:#687d98;font-size:12px;line-height:1.8}
.profile-edit-dialog .profile-gate-form label{min-width:0;display:grid;gap:9px;color:#41536d;font-size:12px;font-weight:730}
.profile-edit-dialog .profile-gate-form :is(input,select){width:100%;min-width:0;min-height:45px;padding:9px 12px;border:1px solid #dbe4f0;border-radius:10px;background:#fff;font-size:13px;box-sizing:border-box}
.profile-edit-dialog .profile-verify-actions{justify-content:flex-start;gap:10px}
.profile-edit-dialog .profile-verify-actions .btn{min-height:42px}
.profile-edit-dialog .profile-contact-tip{color:#8491a7;line-height:1.7;font-size:11px}
.profile-edit-dialog .profile-edit-validity{padding:10px 13px;background:#ecf9f3;border:1px solid #cde9db;border-radius:9px;color:#15794d;font-size:12px}
.profile-edit-dialog .passport-bind-message{margin:0;line-height:1.7}
.profile-edit-dialog .profile-gate>.modal-foot{padding-top:15px;border-top:1px solid #edf1f6;display:flex;justify-content:flex-end}
.profile-edit-dialog .modal-head{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid #edf1f6}
/* Equalize baseline and label/input placement in two-column template parameter editor. */
#template-test-dialog .template-test-variables{align-items:stretch;grid-auto-flow:row}
#template-test-dialog .template-test-field{display:grid!important;grid-template-rows:minmax(34px,auto) 44px minmax(23px,auto);align-content:start;row-gap:7px}
#template-test-dialog .template-test-field .template-test-field-title{display:flex;align-items:flex-end;line-height:1.5;overflow-wrap:anywhere}
#template-test-dialog .template-test-field input{height:44px;min-height:44px;align-self:start}
#template-test-dialog .template-test-field .template-test-hint{align-self:start;font-size:10px;color:#8a9aae;line-height:1.7}
#template-test-dialog .template-test-field .template-test-hint:empty{visibility:hidden}
/* Search-on-demand for recipient bound to the selected OA; never render the entire audience. */
.template-user-search{position:relative;display:grid;gap:8px;min-width:0}
.template-user-search>span{font-size:12px;font-weight:720;color:#475971}
.template-user-search input[type=search]{width:100%;min-height:46px;border:1px solid #dfe6f0;border-radius:10px;background:#fff;padding:10px 13px;color:#27364b;font-size:13px;box-sizing:border-box}
.template-user-results{position:absolute;top:calc(100% - 19px);left:0;right:0;z-index:20;max-height:240px;overflow-y:auto;overscroll-behavior:contain;background:#fff;border:1px solid #d7e1ef;border-radius:12px;box-shadow:0 16px 32px rgba(29,55,97,.15);padding:6px}
.template-user-results[hidden]{display:none!important}
.template-user-results button{display:grid;gap:3px;width:100%;border:0;border-radius:8px;background:#fff;color:#27405f;text-align:left;padding:11px 12px;cursor:pointer;font-size:12px}
.template-user-results button:hover,.template-user-results button[aria-selected=true]{background:#eaf2ff;color:#1d57af}
.template-user-results small{font-size:10px;color:#7e8da4}
.template-user-feedback{font-size:11px;color:#8190a4;min-height:17px;line-height:1.5}
.template-user-feedback.has-error{color:#bd3e52}
@media(max-width:700px){
  #template-test-dialog .template-test-field{grid-template-rows:auto 44px auto}
  #template-test-dialog .template-test-field .template-test-hint:empty{display:none}
  .profile-edit-dialog .profile-gate{padding:14px}
  .profile-edit-dialog .profile-verify-actions .btn{flex:1;min-width:0}
}
