:root{font-family:Inter,"Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;color:#f1f5f9;background:#0c1220;color-scheme:dark;--bg:#0c1220;--panel:#141e30;--border:#28354a;--muted:#a3b0c4;--accent:#72e1bb;--danger:#ff9aab;--radius:14px}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.6}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:wait}button,a,input,select,textarea{transition:background-color .16s,border-color .16s,color .16s}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.sprite{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.muted{color:var(--muted)}.small{font-size:12px;color:var(--muted)}.mono{font-family:Consolas,monospace;font-variant-numeric:tabular-nums}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.3;letter-spacing:-.025em}h3{font-size:16px;margin-bottom:4px}.eyebrow{font-size:11px;letter-spacing:.16em;color:var(--accent);font-weight:700}.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:800;line-height:1.3}.brand-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--accent);color:#09251e;box-shadow:0 4px 18px #54e7b71a}.brand-icon svg{width:25px;height:25px}.brand-sub{display:block;font-size:11px;color:#a4b7c6;font-weight:400;letter-spacing:.15em;margin-top:5px}
.login-layout{min-height:100vh;display:grid;grid-template-columns:1.12fr 1fr}.login-story{padding:44px clamp(30px,6vw,96px);display:flex;flex-direction:column;background:radial-gradient(ellipse at 0 100%,#1b504244,transparent 65%),linear-gradient(130deg,#142337,#101b2c);border-right:1px solid var(--border)}.story-content{margin:auto 0;padding:62px 0}.story-content h1{font-size:clamp(40px,4.5vw,66px);line-height:1.15;margin:22px 0}.story-content>p{color:#b3c1d3;font-size:16px;line-height:1.9}.story-features{display:grid;gap:22px;margin-top:40px}.story-features>div{display:flex;align-items:center;gap:16px}.story-features svg{background:#72e1bb0b;border:1px solid #72e1bb24;padding:10px;box-sizing:content-box;border-radius:12px;color:var(--accent)}.story-features span{font-weight:600}.story-features strong{display:block;color:var(--muted);font-weight:400;font-size:12px;margin-top:3px}.story-footer{display:flex;justify-content:space-between;gap:16px;color:#a3b0c4;font-size:12px}.story-footer span{color:#8496ad}.login-area{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:36px}.login-card{width:100%;max-width:390px}.login-badge{display:inline-flex;gap:7px;align-items:center;font-size:12px;color:var(--accent);margin-bottom:22px}.login-badge svg{width:17px;height:17px}.login-card h2{font-size:28px;margin-bottom:9px}.login-card .muted{margin-bottom:32px}.login-card label{display:block;color:#dce5f3;font-size:13px;margin-bottom:9px}.login-card input{width:100%;height:52px}.login-submit{width:100%;height:50px;justify-content:space-between!important}.field-error{color:var(--danger);font-size:12px;min-height:24px;margin:8px 0}.login-note{display:flex;align-items:flex-start;gap:12px;color:var(--muted);margin-top:30px;padding-top:23px;border-top:1px solid var(--border);font-size:12px}.login-note p{margin:0}.login-note svg{width:18px;height:18px}.login-caption{font-size:10px;color:#a3b0c4;letter-spacing:.15em;margin-top:60px}
.console{display:grid;grid-template-columns:222px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#10192a;border-right:1px solid var(--border);padding:30px 20px;display:flex;flex-direction:column}.sidebar .brand{padding:0 3px}.nav-label{font-size:11px;color:#a3b0c4;margin:47px 14px 13px;letter-spacing:.12em}.sidebar nav{display:grid;gap:8px}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:9px;color:#a3b0c4;min-height:46px;position:relative}.sidebar nav a:hover{background:#ffffff07;color:#e7effb}.sidebar nav a.active{background:#72e1bb12;color:var(--accent);font-weight:600}.sidebar nav a.active:before{content:"";position:absolute;left:-20px;width:3px;height:23px;border-radius:0 3px 3px 0;background:var(--accent)}.nav-count{margin-left:auto;font-size:11px;border:1px solid #ffffff15;padding:0 6px;border-radius:5px}.sidebar-footer{margin-top:auto;padding:20px 4px 0;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px;color:#a3b0c4;font-size:11px}.sidebar-footer .small{margin-left:auto}.dot{width:6px;height:6px;display:inline-block;background:var(--accent);border-radius:50%}.workspace{min-width:0;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 36px;border-bottom:1px solid var(--border);background:#0e1626}.breadcrumb{color:var(--muted);font-size:12px}.breadcrumb span{margin:0 14px;color:#52617a}.breadcrumb strong{color:#dce4f1;font-weight:500}.top-actions{display:flex;align-items:center;gap:20px}.admin-status{font-size:12px;display:flex;align-items:center;gap:8px;color:#dce4f1}.admin-status svg{color:var(--accent);width:17px}.icon-button{border:1px solid var(--border);color:var(--muted);border-radius:9px;width:40px;height:40px;display:grid;place-items:center;background:transparent}.icon-button:hover{background:#ffffff0a;color:#fff}main{padding:32px 36px 40px;width:100%;max-width:1600px;margin:0 auto;flex:1}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:27px}.page-heading h1{font-size:28px;margin:6px 0 9px}.page-heading p{font-size:13px;margin-bottom:0}.page-actions{display:flex;align-items:center;gap:16px}.updated{font-size:11px;color:var(--muted);white-space:nowrap}.primary,.secondary,.danger{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;border-radius:8px;padding:9px 16px;white-space:nowrap;font-size:13px;font-weight:600}.primary{background:var(--accent);border:1px solid var(--accent);color:#09291e}.primary:hover{background:#96efcf;border-color:#96efcf}.secondary{background:#172236;border:1px solid #35445b;color:#dbe5f3}.secondary:hover{background:#23334a;border-color:#53647c}.danger{background:#fa698714;border:1px solid #fa69873c;color:var(--danger)}.danger:hover{background:#fa698726}.primary svg,.secondary svg,.danger svg{width:16px;height:16px}.text-button{color:var(--accent);border:0;padding:9px 8px;background:none;min-height:36px;font-size:12px;white-space:nowrap}.text-button:hover{background:#72e1bb12;border-radius:6px}.text-button.danger-text{color:var(--danger)}.text-button.neutral{color:#bbcbdf}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.stat-card{padding:22px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(145deg,#18253a,#141e30)}.stat-top{display:flex;align-items:center;justify-content:space-between;color:#c0ccde;font-size:12px}.stat-icon{width:35px;height:35px;display:grid;place-items:center;background:#72e1bb0d;color:var(--accent);border-radius:10px}.stat-icon.blue{background:#7da9ff10;color:#8cb7ff}.stat-icon.amber{background:#ffd58b0d;color:#ffd58b}.stat-number{font-size:32px;font-weight:700;line-height:1.3;margin:13px 0 10px;font-variant-numeric:tabular-nums;letter-spacing:-.04em}.stat-footer{font-size:11px;color:var(--muted)}.stat-footer b{color:#e8effc;font-weight:500}.dashboard-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-bottom:20px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-head{padding:21px 24px 17px;display:flex;align-items:center;justify-content:space-between;gap:14px}.panel-head p{margin:4px 0 0;font-size:11px;color:var(--muted)}.panel-body{padding:0 24px 24px}.status-summary{display:grid;gap:13px;padding:0 24px 24px}.summary-row{display:grid;grid-template-columns:70px 1fr 35px;gap:16px;align-items:center;font-size:12px;color:var(--muted)}.summary-row strong{text-align:right;color:#e9f0fb;font-weight:500}.bar-track{height:6px;background:#25324a;border-radius:3px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:3px;min-width:0}.bar-fill.amber{background:#efc477}.bar-fill.gray{background:#71829c}.bar-fill.red{background:#e1889c}.policy-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;border-top:1px solid var(--border);padding:18px 24px}.policy-list small{display:block;font-size:11px;color:var(--muted)}.policy-list strong{font-size:13px;font-weight:600}.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}.data-table th{color:#a9b8cd;font-size:11px;font-weight:500;background:#0f182a99;padding:13px 22px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:16px 22px;border-bottom:1px solid #ffffff07;white-space:nowrap;vertical-align:middle;color:#d7e1f1}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#ffffff02}.data-table .sub{display:block;color:var(--muted);font-size:11px;margin-top:4px}.user-cell{display:flex;gap:10px;align-items:center}.avatar{width:33px;height:33px;border-radius:9px;background:#8399ff13;color:#b5c4ff;display:grid;place-items:center;font-weight:600}.user-name{font-weight:600;color:#ecf1fa;max-width:240px;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:5px;padding:3px 8px;font-size:10px;font-weight:500;background:#8ca0bf14;color:#bccadd;border:1px solid #8ca0bf1a}.badge.green{background:#72e1bb0c;color:#8eeac6;border-color:#72e1bb22}.badge.red{background:#fa69870e;color:#ffa4b6;border-color:#fa698722}.badge.amber{background:#ffc9780b;color:#f3cb8c;border-color:#ffc97822}.badge.blue{background:#80adff0c;color:#9abaff;border-color:#80adff22}.badge .dot{width:5px;height:5px}.actions{display:flex;align-items:center;gap:6px}.empty-state{text-align:center;padding:58px 20px;color:var(--muted)}.empty-state svg{width:32px;height:32px;margin-bottom:12px;color:#7990ac}.empty-state strong{display:block;color:#d6e1f2;font-size:14px;margin-bottom:5px}.empty-state p{font-size:12px;margin:0}.filter-bar{display:flex;align-items:flex-end;gap:12px;padding:21px 24px;border-bottom:1px solid var(--border);flex-wrap:wrap}.filter-bar label,.field label{display:block;color:#bfccdf;font-size:11px;margin-bottom:7px}.filter-bar input{width:250px}.filter-bar .field{min-width:160px}.filter-spacer{flex:1}.result-count{font-size:12px;color:var(--muted);padding:9px 0;align-self:flex-end}.result-count b{color:#ecf3ff;font-weight:600;margin:0 4px}input,select,textarea{background:#0e1727;border:1px solid #35435b;border-radius:8px;color:#eef4fe;padding:10px 12px;outline:none;max-width:100%}input::placeholder,textarea::placeholder{color:#94a4bb}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=number]{width:110px}.pager{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--border);gap:16px;color:var(--muted);font-size:11px}.pager-right{display:flex;align-items:center;gap:12px}.pager button{min-height:36px;padding:6px 12px;font-size:11px}.pager select{padding:6px 10px;min-height:36px}.section-note{display:flex;align-items:flex-start;gap:10px;margin-bottom:20px;padding:14px 18px;border:1px solid #72e1bb22;border-radius:10px;background:#72e1bb06;color:#b1c4d4;font-size:12px}.section-note svg{color:var(--accent);width:17px;height:17px;margin-top:1px}.generate-panel{margin-bottom:20px}.generate-panel .panel-head{padding-bottom:5px}.generate-form{display:flex;align-items:flex-end;gap:16px;padding:12px 24px 23px;flex-wrap:wrap}.preset-days{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.preset-days button{padding:8px 11px;font-size:12px;min-height:38px}.generate-form .primary{margin-left:auto}.log-detail{white-space:normal!important;min-width:220px;max-width:550px;color:#aebed3!important;overflow-wrap:anywhere}.activity-list{display:grid;padding:0 24px 16px}.activity-item{display:flex;gap:12px;padding:15px 0;border-bottom:1px solid #ffffff07}.activity-item:last-child{border:0}.activity-dot{width:7px;height:7px;background:#7f94b3;border-radius:50%;margin-top:7px;flex:none}.activity-body{min-width:0;flex:1}.activity-body strong{font-size:12px;font-weight:500}.activity-body p{font-size:11px;color:var(--muted);margin:4px 0 0;overflow-wrap:anywhere}.activity-time{font-size:10px;color:var(--muted);white-space:nowrap;margin-top:2px}.workspace-footer{border-top:1px solid var(--border);padding:18px 36px;color:#a3b0c4;font-size:10px;display:flex;justify-content:space-between;letter-spacing:.04em}
.error-banner{padding:13px 18px;margin-bottom:18px;border:1px solid #fa69873a;border-radius:10px;background:#fa698712;color:#ffb9c7;font-size:12px}.loading-state{padding:100px 20px;text-align:center;color:var(--muted)}.spinner{width:24px;height:24px;border:2px solid #ffffff18;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block;margin-bottom:12px}@keyframes spin{to{transform:rotate(360deg)}}
dialog{color:#eef4fc;background:#141e30;border:1px solid #38475e;border-radius:16px;padding:0;width:min(780px,calc(100vw - 32px));max-height:90vh;overflow:auto;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#060c18b8;backdrop-filter:blur(3px)}.dialog-head{padding:22px 26px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);gap:20px}.dialog-head h2{font-size:20px;margin:0}.dialog-head p{margin:4px 0 0;font-size:12px;color:var(--muted)}.dialog-body{padding:24px 26px}.dialog-body h3{font-size:14px;margin:22px 0 12px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding-bottom:21px;border-bottom:1px solid var(--border)}.detail-grid small{display:block;font-size:11px;color:var(--muted);margin-bottom:7px}.detail-grid strong{font-size:13px;font-weight:500;overflow-wrap:anywhere}.edit-form{display:grid;grid-template-columns:1fr 1fr auto;gap:14px;align-items:end;margin:18px 0 22px}.edit-form input{width:100%}.detail-actions{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 4px}.dialog-table{border:1px solid var(--border);border-radius:10px;overflow:hidden}.dialog-table th,.dialog-table td{padding:12px 14px;font-size:11px}.detail-card-title{display:flex;justify-content:space-between;align-items:center;gap:10px}.confirm-dialog{width:min(420px,calc(100vw - 32px))}.confirm-dialog .dialog-body{padding:28px}.confirm-dialog h2{font-size:20px;margin-bottom:12px}.confirm-dialog p{color:var(--muted);font-size:13px;white-space:pre-line}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.codes-box{width:100%;font-family:Consolas,monospace;resize:vertical;min-height:200px;line-height:1.8}.codes-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:13px 22px;background:#23374a;color:#f3f7fe;border:1px solid #44617b;border-radius:10px;box-shadow:0 10px 30px #0005;font-size:13px;z-index:20;white-space:pre-line}
@media(min-width:1500px){main{padding:40px 48px}.console{grid-template-columns:240px 1fr}}
@media(max-width:1150px){main{padding:28px 24px}.console{grid-template-columns:194px 1fr}.sidebar{padding:26px 14px}.sidebar nav a.active:before{left:-14px}.sidebar .brand{font-size:18px}.topbar{padding:0 24px}.stats{gap:12px}.stat-card{padding:18px}.dashboard-grid{grid-template-columns:1fr}.updated{display:none}.data-table th,.data-table td{padding-left:18px;padding-right:18px}.workspace-footer{padding:16px 24px}}
@media(max-width:800px){.console{display:block}.sidebar{height:auto;position:static;border-right:0;border-bottom:1px solid var(--border);padding:18px 16px 12px}.sidebar .brand{font-size:17px}.sidebar .brand-sub{display:inline;font-size:11px;letter-spacing:0;margin:0 0 0 9px}.sidebar .brand-icon{width:31px;height:31px;border-radius:8px}.sidebar nav{display:flex;margin-top:20px;gap:4px;justify-content:space-between}.sidebar nav a{flex:1;justify-content:center;font-size:12px;padding:10px 6px;gap:6px;min-height:44px}.sidebar nav a svg{width:16px;height:16px}.sidebar nav a.active:before,.nav-label,.sidebar-footer,.nav-count{display:none}.topbar{height:58px}.page-heading h1{font-size:24px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.page-actions{gap:0}.page-heading{align-items:flex-start}.page-heading .secondary{padding:8px 12px}.login-layout{grid-template-columns:1fr}.login-story{padding:24px 28px;background:#101d30}.story-content,.story-footer{display:none}.login-area{padding:50px 28px}.login-card{max-width:440px}.login-caption{margin-top:40px}.edit-form{grid-template-columns:1fr 1fr}.edit-form button{grid-column:1/-1}.detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){body{font-size:13px}main{padding:24px 16px}.topbar{padding:0 16px}.sidebar nav a{font-size:10px;flex-direction:column;gap:4px;padding:8px 2px}.sidebar nav a svg{width:18px;height:18px}.page-heading{gap:10px}.page-heading h1{font-size:23px}.page-heading p{max-width:215px;font-size:11px}.page-actions .secondary{font-size:11px;padding:7px 10px;min-height:37px}.page-actions svg{display:none}.stat-card{padding:17px}.stat-number{font-size:28px}.stat-footer{font-size:10px}.panel-head{padding:18px}.filter-bar{padding:18px;gap:10px}.filter-bar .field{width:100%;min-width:0}.filter-bar input,.filter-bar select{width:100%}.filter-spacer{display:none}.filter-bar button{flex:1}.result-count{width:100%}.pager{padding:14px 16px;flex-wrap:wrap;justify-content:center}.pager-right{width:100%;justify-content:center}.generate-form{padding:12px 18px 20px;gap:14px}.generate-form .primary{width:100%}.policy-list{padding:18px;gap:8px}.policy-list small{font-size:10px}.activity-list{padding-inline:18px}.activity-time{font-size:9px}.workspace-footer{padding:16px}.dialog-body,.dialog-head{padding:20px}.edit-form{grid-template-columns:1fr}.detail-grid{gap:16px}.detail-actions button{flex:1}.dialog-head .icon-button{width:36px;height:36px}.summary-row{gap:10px}.login-card h2{font-size:26px}}
.password-reset-form{display:grid;gap:16px;margin-top:20px}.password-reset-form input{width:100%;min-height:44px}.password-reset-form input[aria-invalid=true]{border-color:var(--danger)}.password-reset-form .password-visibility{justify-self:start;min-height:44px}.password-reset-form .field-error{margin:0}.password-reset-form .field-error:empty{display:none}.password-reset-form .confirm-actions{margin-top:0}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
