:root{--ink:#1d3048;--muted:#71839a;--line:#dfe7f0;--panel:#fff;--wash:#f4f7fb;--blue:#3972bd;--blue-dark:#285b9e;--green:#208b69;--red:#c4515b;--shadow:0 22px 60px rgba(44,72,108,.12);--radius:20px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Microsoft YaHei","Segoe UI",sans-serif;color:var(--ink);background:linear-gradient(135deg,#f7faff 0%,#edf3fa 100%)}body{overflow-x:hidden}a{color:inherit;text-decoration:none}.page{min-height:100vh;position:relative;overflow:hidden}.page:before,.page:after{content:"";position:absolute;border-radius:999px;filter:blur(2px);opacity:.55;pointer-events:none}.page:before{width:360px;height:360px;background:#d9e9ff;right:-110px;top:-120px}.page:after{width:260px;height:260px;background:#d9f3eb;left:-120px;bottom:-80px}.auth-shell{width:min(1080px,calc(100% - 40px));min-height:100vh;margin:auto;display:grid;grid-template-columns:1fr 1.05fr;align-items:center;gap:48px;position:relative;z-index:1}.brand-side{padding:28px}.brand-mark{width:66px;height:66px;border-radius:21px;background:linear-gradient(135deg,#4f86cd,#295d9f);display:grid;place-items:center;color:#fff;font-size:30px;font-weight:800;box-shadow:0 14px 28px rgba(57,114,189,.28);margin-bottom:25px}.brand-side h1{font-size:clamp(32px,4vw,54px);letter-spacing:-2px;margin:0 0 18px;line-height:1.15}.brand-side p{color:var(--muted);font-size:17px;line-height:1.9;margin:0;max-width:410px}.feature-list{display:grid;gap:13px;margin-top:30px;color:#506781;font-size:14px}.feature-list span{display:flex;align-items:center;gap:10px}.feature-list i{width:8px;height:8px;border-radius:50%;background:#4a8ed3;box-shadow:0 0 0 5px #e2effc}.auth-card{background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.9);border-radius:28px;box-shadow:var(--shadow);padding:42px;backdrop-filter:blur(14px);animation:rise .55s ease both}.auth-card h2{font-size:28px;margin:0 0 8px}.auth-card .sub{color:var(--muted);font-size:14px;margin:0 0 28px}.form-grid{display:grid;gap:17px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:grid;gap:8px}.field label{font-size:13px;color:#526b86;font-weight:600}.field input,.field select{width:100%;height:48px;border:1px solid #d9e3ee;border-radius:13px;padding:0 15px;font-size:15px;color:var(--ink);background:#fbfdff;outline:none;transition:.2s box-shadow,.2s border-color,.2s transform}.field input:focus,.field select:focus{border-color:#6e9dd5;box-shadow:0 0 0 4px #e6f0fc;transform:translateY(-1px)}.primary{height:50px;border:0;border-radius:13px;background:linear-gradient(135deg,var(--blue),#4b82ca);color:#fff;font-weight:700;font-size:15px;cursor:pointer;box-shadow:0 10px 22px rgba(57,114,189,.25);transition:.2s transform,.2s box-shadow}.primary:hover{transform:translateY(-2px);box-shadow:0 15px 28px rgba(57,114,189,.3)}.ghost{height:46px;border:1px solid #cddceb;border-radius:12px;background:#fff;color:#3d6d9e;cursor:pointer}.auth-foot{text-align:center;color:var(--muted);font-size:13px;margin-top:23px}.auth-foot a{color:var(--blue);font-weight:700}.notice{min-height:20px;font-size:13px;color:var(--red);margin-top:2px}.qr-button{display:flex;justify-content:flex-end;margin-top:-7px}.qr-modal{display:none;position:fixed;inset:0;background:rgba(22,43,70,.42);z-index:10;place-items:center}.qr-modal.show{display:grid}.qr-box{width:min(340px,calc(100% - 40px));background:#fff;border-radius:22px;padding:28px;text-align:center;box-shadow:var(--shadow)}.qr-code{height:175px;width:175px;margin:18px auto;border-radius:12px;background:repeating-linear-gradient(45deg,#1c2d42 0 5px,#fff 5px 10px),repeating-linear-gradient(-45deg,transparent 0 7px,#1c2d42 7px 11px);border:12px solid #fff;box-shadow:0 0 0 1px var(--line)}
/* admin */.app-shell{min-height:100vh;display:grid;grid-template-columns:248px 1fr;background:var(--wash)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:27px 18px;display:flex;flex-direction:column;gap:28px}.side-brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:17px}.side-brand .brand-mark{width:38px;height:38px;border-radius:12px;font-size:17px;margin:0}.side-nav{display:grid;gap:7px}.side-nav a{padding:13px 14px;border-radius:12px;color:#71839a;font-size:14px}.side-nav a.active,.side-nav a:hover{background:#edf4fd;color:var(--blue);font-weight:700}.side-bottom{margin-top:auto;color:#91a0b2;font-size:12px;line-height:1.7;padding:14px}.main{padding:30px clamp(20px,4vw,54px);max-width:1500px;width:100%}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:27px}.eyebrow{font-size:13px;color:var(--blue);font-weight:700;letter-spacing:1px}.topbar h1{font-size:30px;margin:7px 0 6px;letter-spacing:-.5px}.topbar p{margin:0;color:var(--muted);font-size:14px}.user-chip{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);padding:8px 12px;border-radius:999px;font-size:13px}.avatar{width:30px;height:30px;border-radius:50%;background:#e2effc;color:var(--blue);display:grid;place-items:center;font-weight:800}.logout{border:0;background:none;color:var(--muted);cursor:pointer}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}.stat-card,.content-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 25px rgba(48,78,115,.05)}.stat-card{padding:20px 22px}.stat-card small{color:var(--muted);font-size:13px}.stat-card strong{display:block;font-size:27px;margin-top:8px}.content-card{padding:24px;margin-bottom:18px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px}.card-head h2{font-size:18px;margin:0}.card-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.btn{height:40px;border-radius:10px;padding:0 16px;border:0;cursor:pointer;font-weight:700;font-size:13px}.btn-blue{background:var(--blue);color:#fff}.btn-soft{background:#edf4fd;color:var(--blue)}.btn-danger{background:#fcebed;color:var(--red)}.table-shell{border:1px solid var(--line);border-radius:14px;overflow:hidden;min-height:280px;display:flex;flex-direction:column}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{background:#f6f9fc;color:#6d8198;text-align:left;padding:13px 14px;font-weight:700;border-bottom:1px solid var(--line)}.data-table td{padding:14px;border-bottom:1px solid #edf2f7;color:#435b74;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.empty-state{flex:1;min-height:240px;display:grid;place-items:center;color:#9aabbd;font-size:14px}.status{display:inline-flex;align-items:center;gap:6px}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:#b8c6d5}.status.online:before{background:var(--green);box-shadow:0 0 0 4px #e1f4ed}.status.offline:before{background:var(--red);box-shadow:0 0 0 4px #fbe5e8}.table-actions{display:flex;gap:7px;flex-wrap:wrap}.settings-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.settings-grid .wide{grid-column:span 2}.form-actions{display:flex;align-items:end;gap:10px}.modal{display:none;position:fixed;inset:0;background:rgba(24,45,70,.36);z-index:20;place-items:center;padding:20px}.modal.show{display:grid}.modal-card{background:#fff;border-radius:20px;padding:26px;width:min(530px,100%);box-shadow:var(--shadow)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal-head h3{margin:0}.close{border:0;background:#f2f5f8;border-radius:50%;width:30px;height:30px;cursor:pointer}.toast{position:fixed;right:24px;bottom:24px;background:#20364f;color:#fff;padding:12px 16px;border-radius:12px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);transition:.25s;z-index:30;font-size:13px}.toast.show{opacity:1;transform:none}@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media(max-width:900px){.auth-shell{grid-template-columns:1fr;max-width:580px;gap:8px;padding:36px 0}.brand-side{padding:0 12px 8px}.brand-side h1{font-size:36px}.feature-list{display:none}.app-shell{grid-template-columns:1fr}.sidebar{position:relative;border-right:0;border-bottom:1px solid var(--line);padding:14px 18px;gap:14px}.side-nav{display:flex;overflow:auto}.side-nav a{white-space:nowrap;padding:9px 12px}.side-bottom{display:none}.main{padding:22px 16px}.settings-grid{grid-template-columns:1fr 1fr}.table-shell{overflow:auto}.data-table{min-width:760px}}
@media(max-width:560px){.auth-card{padding:27px 20px;border-radius:21px}.form-row{grid-template-columns:1fr}.topbar{display:block}.user-chip{margin-top:16px;width:max-content}.stats{grid-template-columns:1fr}.content-card{padding:17px}.settings-grid{grid-template-columns:1fr}.settings-grid .wide{grid-column:span 1}.card-head{align-items:flex-start;flex-direction:column}.auth-shell{width:calc(100% - 28px)}}
/* Interaction additions keep the existing page geometry and color palette. */
[hidden]{display:none!important}
button:disabled{cursor:wait;opacity:.65;transform:none;box-shadow:none}
.btn,.ghost{transition:background .2s,transform .15s,box-shadow .2s}
.btn:hover,.ghost:hover{box-shadow:0 4px 12px rgba(45,78,118,.12)}
.btn:active,.ghost:active{transform:translateY(1px)}
.modal-card{max-height:90vh;overflow:auto;animation:rise .2s ease}
[data-email-code]{padding:0 16px}
.notice{line-height:1.7}
.email-code-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.email-code-row .ghost{height:48px;white-space:nowrap}.email-code-row input{min-width:0}@media(max-width:560px){.email-code-row{grid-template-columns:minmax(0,1fr) auto;gap:8px}.email-code-row .ghost{padding:0 10px;font-size:12px}}
/* Framework cards and inline communication notice */
.framework-list{display:grid;gap:12px}
.framework-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;background:#fff;border:1px solid var(--line);border-radius:14px;color:#435b74}
.framework-card-main{min-width:0;flex:1}
.framework-card-title{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:15px}
.framework-card-title strong{color:var(--ink);overflow-wrap:anywhere}
.framework-card-meta{display:flex;gap:10px;margin-top:9px;color:var(--muted);font-size:12px}
.framework-card-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.framework-card-actions .btn{min-width:66px}
.framework-toast{position:static;display:block;margin:14px 0 0;min-height:0;text-align:center;font-size:15px;font-weight:700}
@media(max-width:560px){.framework-card{display:block;padding:16px}.framework-card-title{align-items:flex-start;flex-direction:column;gap:9px;font-size:16px}.framework-card-meta{justify-content:space-between}.framework-card-actions{margin-top:14px;justify-content:stretch}.framework-card-actions .btn{flex:1;min-width:0;height:42px}.framework-toast{font-size:16px;padding:15px 14px;margin-top:12px}}