:root{--navy: #1e3a6f;--navy-soft: #2a4a86;--ink: #243244;--ink-muted: #6b7b8f;--line: #d8dde3;--line-soft: #e8ecf1;--bg: #ffffff;--bg-page: #fafbfc;--bg-panel: #ffffff;--bg-hover: #f4f7fb;--bg-head: #f7f9fc;--accent: #3b82c4;--danger: #c2410c;--radius: 6px;--shadow-card: 0 1px 2px rgba(30, 58, 111, .04), 0 8px 24px rgba(30, 58, 111, .06);--shadow-modal: 0 20px 60px rgba(30, 58, 111, .18);--sidebar-w: 158px;--header-h: 90px;--footer-h: 44px}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg-page);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;min-width:1000px}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}input{font-family:inherit}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--header-h) 1fr var(--footer-h);grid-template-areas:"header header" "sidebar main" "footer  footer";height:100vh;overflow:hidden}.app-header{grid-area:header;position:relative;display:flex;align-items:center;justify-content:center;padding:0 40px;border-bottom:1px solid var(--line-soft);background:var(--bg)}.app-logo{position:absolute;left:28px;top:50%;transform:translateY(-50%);width:68px;height:68px;object-fit:contain}.app-title{height:58px;object-fit:contain}.app-footer{grid-area:footer;display:flex;align-items:center;justify-content:center;color:var(--ink-muted);font-size:12px;background:var(--bg-page);border-top:1px solid var(--line-soft)}.app-sidebar{grid-area:sidebar;display:flex;flex-direction:column;padding:28px 0 20px;background:var(--bg-page);border-right:1px solid var(--line-soft);min-height:0;overflow:hidden}.nav-list{display:flex;flex-direction:column;gap:4px;padding:0 16px;flex:1 1 auto;min-height:0;overflow-y:auto}.nav-item{text-align:left;padding:8px 14px;border-radius:var(--radius);color:var(--ink);font-size:14px;letter-spacing:1px;transition:background .12s ease,color .12s ease}.nav-item:hover{background:var(--bg-hover);color:var(--navy)}.nav-item.is-active{background:var(--navy);color:#fff}.nav-user{margin-top:auto;display:flex;align-items:center;gap:8px;padding:12px 22px 0;color:var(--ink-muted);flex-shrink:0}.nav-user-icon{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%;color:var(--ink-muted)}.nav-user-name{font-size:13px;color:var(--ink);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-logout{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;color:var(--ink-muted);transition:color .12s ease,background .12s ease}.nav-logout:hover{color:var(--navy);background:var(--bg-hover)}.app-main-centered{align-items:center;justify-content:flex-start;padding-top:80px}.passwd-panel{width:100%;display:flex;justify-content:center}.passwd-form{display:flex;flex-direction:column;gap:14px;width:340px}.passwd-field{display:grid;grid-template-columns:56px 1fr;align-items:center;gap:10px}.passwd-label{text-align:right;font-size:13px;color:var(--ink)}.passwd-field input{padding:6px 10px;border:1px solid var(--line);border-radius:4px;background:#fff;font-size:13px;transition:border-color .12s ease,box-shadow .12s ease}.passwd-field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1e3a6f14}.passwd-message{padding-left:66px;font-size:12px}.passwd-message.is-ok{color:var(--accent)}.passwd-message.is-err{color:var(--danger)}.passwd-actions{display:flex;justify-content:center;padding-left:56px;padding-top:4px}.passwd-actions .btn-primary{padding:5px 18px;font-size:13px}.admin-placeholder{color:var(--ink-muted);font-size:13px;padding:40px}.gates-panel{width:100%;max-width:800px;display:flex;flex-direction:column;gap:18px}.gates-add{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:nowrap}.gates-add-field{display:inline-flex;align-items:center;gap:8px}.gates-add-label{font-size:13px;color:var(--ink)}.gates-add-field input{padding:6px 10px;border:1px solid var(--line);border-radius:4px;background:#fff;font-size:13px;width:130px;transition:border-color .12s ease,box-shadow .12s ease}.gates-add-field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1e3a6f14}.gates-add-btn{padding:5px 18px;font-size:13px}.gates-error{text-align:center;font-size:12px;color:var(--danger)}.gates-table-wrap{display:flex;justify-content:center;padding-top:20px}.gates-table{min-width:420px}.gates-table th,.gates-table td{padding-left:28px;padding-right:28px}.modal-card-sm{width:min(440px,calc(100% - 80px));min-height:0;padding:48px 48px 40px}.login-shell{display:flex;flex-direction:column;height:100vh;background:var(--bg-page)}.login-shell>.app-header{flex:0 0 var(--header-h)}.login-shell>.app-footer{flex:0 0 var(--footer-h)}.login-main{flex:1 1 auto;display:flex;align-items:center;justify-content:center;min-height:0}.login-form{display:flex;flex-direction:column;gap:14px;width:340px;transform:translateY(-6%)}.login-field{display:grid;grid-template-columns:56px 1fr;align-items:center;gap:10px}.login-label{text-align:right;font-size:13px;color:var(--ink)}.login-field input{padding:6px 10px;border:1px solid var(--line);border-radius:4px;background:#fff;font-size:13px;transition:border-color .12s ease,box-shadow .12s ease}.login-field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1e3a6f14}.login-error{padding-left:66px;font-size:12px;color:var(--danger)}.login-actions{display:flex;justify-content:center;padding-left:56px;padding-top:4px}.login-actions .btn-primary{padding:5px 18px;font-size:13px}.app-main{grid-area:main;padding:28px 44px 40px;display:flex;flex-direction:column;gap:24px;overflow-y:auto;min-height:0}.panel-pending{padding:18px 24px;margin-bottom:4px}.panel{background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:14px 20px;box-shadow:var(--shadow-card)}.data-table{width:100%;border-collapse:collapse;table-layout:auto}.data-table th,.data-table td{padding:10px 12px;text-align:left;font-weight:400;white-space:nowrap}.data-table thead th{color:var(--ink-muted);font-size:12px;border-bottom:1px solid var(--line-soft);background:transparent}.data-table tbody tr{border-bottom:1px solid var(--line-soft);transition:background .1s ease}.data-table tbody tr:last-child{border-bottom:none}.data-table tbody tr:hover{background:var(--bg-hover)}.col-action{width:80px;text-align:right}.empty-row{text-align:center;color:var(--ink-muted);padding:20px 0!important}.btn-ghost{display:inline-block;padding:4px 14px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--ink);font-size:12px;transition:border-color .12s ease,color .12s ease,background .12s ease}.btn-ghost:hover{border-color:var(--navy);color:var(--navy);background:#fff}.btn-primary{padding:8px 30px;border:1px solid var(--line);border-radius:var(--radius);background:#eef1f5;color:var(--ink);font-size:14px;transition:background .12s ease,border-color .12s ease,color .12s ease}.btn-primary:hover{background:var(--navy);border-color:var(--navy);color:#fff}.search-bar{display:flex;align-items:center;gap:18px;width:66%;margin:16px auto -10px}.search-input{position:relative;flex:1 1 auto}.search-input input{width:100%;padding:8px 38px 8px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:13px;color:var(--ink);transition:border-color .12s ease,box-shadow .12s ease}.search-input input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1e3a6f14}.search-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--ink-muted);pointer-events:none}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#fff}.seg-item{padding:6px 16px;font-size:13px;color:var(--ink-muted);border-right:1px solid var(--line-soft);transition:background .12s ease,color .12s ease}.seg-item:last-child{border-right:none}.seg-item:hover{color:var(--navy)}.seg-item.is-active{background:var(--navy);color:#fff}.state-pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;line-height:1.6}.state-in{background:#3b82c41f;color:var(--accent)}.state-out{background:#6b7b8f24;color:var(--ink-muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e3a6f2e;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:flex;align-items:center;justify-content:center;z-index:50;animation:fade-in .14s ease-out}.modal-card{position:relative;width:min(760px,calc(100% - 80px));min-height:440px;background:#fff;border-radius:10px;border:1px solid var(--line);box-shadow:var(--shadow-modal);padding:56px 60px 48px;animation:card-in .18s ease-out}.modal-close{position:absolute;top:16px;right:18px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-muted);border-radius:50%;transition:color .12s ease,background .12s ease}.modal-close:hover{color:var(--navy);background:var(--bg-hover)}.modal-body{display:flex;flex-direction:column;gap:24px;padding-top:28px;max-width:540px;margin:0 auto}.field{display:grid;grid-template-columns:96px 1fr;align-items:center;gap:18px}.field-label{text-align:right;color:var(--ink);font-size:15px}.field input{padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;font-size:14px;transition:border-color .12s ease,box-shadow .12s ease}.modal-card:not(.modal-card-sm) .field input{font-size:30px;padding:10px 14px}.field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1e3a6f14}.modal-actions{display:flex;justify-content:center;padding-top:32px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-in{0%{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:none}}.pw-wrap{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:4px;background:#fff;transition:border-color .12s ease,box-shadow .12s ease}.pw-wrap:focus-within{border-color:var(--navy);box-shadow:0 0 0 3px #1e3a6f14}.pw-wrap .pw-input{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;padding:6px 10px;font:inherit;color:inherit;box-shadow:none}.modal-card:not(.modal-card-sm) .field .pw-wrap .pw-input{font-size:30px;padding:10px 14px}.pw-eye{display:inline-flex;align-items:center;justify-content:center;padding:0 10px;color:var(--ink-muted);cursor:pointer;border-left:1px solid var(--line-soft)}.pw-eye:hover{color:var(--navy)}.pw-text{display:inline-flex;align-items:center;gap:8px}.pw-text-value{font-variant-numeric:tabular-nums;letter-spacing:.04em}.pw-eye-inline{padding:2px 4px;border-left:none}
