:root{--brand: #1a5f8a;--brand-dark: #124763;--bg: #f2f4f7;--card: #ffffff;--text: #1f2937;--muted: #6b7280;--border: #e2e6ec;--ok: #157347;--danger: #b02a37}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Microsoft YaHei,PingFang SC,Hiragino Sans GB,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px}h1{font-size:1.3rem;margin:0 0 .5rem}h2{font-size:1.05rem;margin:0 0 .5rem}.layout{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--brand);color:#fff;padding:.6rem 1.2rem;display:flex;align-items:center;justify-content:space-between}.brand{font-weight:600;font-size:1.05rem}.topbar-right{display:flex;align-items:center;gap:1rem}.username{opacity:.9}.body{display:flex;flex:1}.sidebar{width:200px;background:var(--card);border-right:1px solid var(--border);padding:1rem 0;display:flex;flex-direction:column}.sidebar a{padding:.55rem 1.2rem;color:var(--text);text-decoration:none}.sidebar a:hover{background:var(--bg)}.sidebar a.active{background:#e8f0f6;color:var(--brand-dark);font-weight:600;border-right:3px solid var(--brand)}.content{flex:1;padding:1.5rem;min-width:0}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1.2rem 1.4rem}.form-card{max-width:460px}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:340px;display:flex;flex-direction:column;gap:.4rem}.login-lang{align-self:flex-end}label{display:block;margin-bottom:.7rem;font-weight:500}label input,label select{display:block;width:100%;margin-top:.25rem;padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff}label input[type=checkbox]{display:inline-block;width:auto;margin:.3rem 0 0}.inline-check,.inline-select{display:inline-flex;align-items:center;gap:.4rem;font-weight:400;margin:0}.inline-check input,.inline-select select{width:auto;margin:0}.hint{display:block;font-weight:400;color:var(--muted);font-size:.85rem;margin-top:.2rem}.edit-form{border:1px solid var(--border);border-radius:8px;background:#fafbfc;padding:1rem;margin-bottom:1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem 1rem;align-items:start}.edit-form h2{grid-column:1 / -1;margin:0}.form-actions{display:flex;gap:.6rem;grid-column:1 / -1}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:6px;padding:.45rem .9rem}button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover{background:var(--brand-dark)}button:disabled{opacity:.6;cursor:default}.link-btn{border:none;background:none;color:var(--brand);padding:.15rem .3rem}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--danger)}.topbar .link-btn{color:#fff}.lang-switch button{padding:.2rem .55rem;border-radius:0}.lang-switch button:first-child{border-radius:6px 0 0 6px}.lang-switch button:last-child{border-radius:0 6px 6px 0;border-left:none}.lang-switch button.active{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff}table{width:100%;border-collapse:collapse;margin-top:.6rem}th,td{text-align:left;padding:.5rem .7rem;border-bottom:1px solid var(--border)}th{font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.row-inactive td{color:var(--muted)}.actions-cell{white-space:nowrap}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.8rem;flex-wrap:wrap}.page-head-actions{display:flex;align-items:center;gap:1rem}.badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.8rem}.badge-ok{background:#d9f0e5;color:var(--ok)}.badge-off{background:#eceef1;color:var(--muted)}.error{color:var(--danger)}.table-scroll{overflow-x:auto}.nowrap{white-space:nowrap}.record-form .computed-panel{grid-column:1 / -1;background:#e8f0f6;border-radius:6px;padding:.6rem .9rem}.computed-panel h3{margin:0 0 .3rem;font-size:.9rem;color:var(--brand-dark)}.computed-values{display:flex;gap:2rem;flex-wrap:wrap}.success{color:var(--ok)}.muted{color:var(--muted)}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;margin-bottom:1rem}.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:.9rem 1.1rem;display:flex;flex-direction:column;gap:.15rem}.kpi-value{font-size:1.6rem;font-weight:600;color:var(--brand-dark)}.kpi-label{color:var(--muted);font-size:.85rem}.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;margin-bottom:1rem}@media (max-width: 900px){.chart-grid{grid-template-columns:1fr}}.chart-card{min-width:0}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:.4rem}.chart-head h2{margin:0}.chart-head select{font-size:.85rem;padding:.25rem .4rem;border:1px solid var(--border);border-radius:6px}.section-title{margin:1.2rem 0 .8rem;padding-top:.8rem;border-top:2px solid var(--border)}.warn-note{margin-top:.5rem;color:#8a5a1a;font-size:.88rem}.warn-note ul{margin:.3rem 0 0;padding-left:1.2rem}.warn-note .link-btn{color:#8a5a1a;padding:0}.warn-inline{color:#8a5a1a;cursor:help}.import-controls{display:flex;align-items:center;gap:.8rem;margin:.8rem 0;flex-wrap:wrap}.import-report h3{margin:.8rem 0 .3rem}.import-report ul{margin:.2rem 0 .6rem;padding-left:1.3rem}.import-commit{margin-top:1rem;align-items:center}.record-count{font-size:.85rem;font-weight:400}.bell-wrap{position:relative}.bell-btn{font-size:1.05rem;position:relative}.bell-badge{position:absolute;top:-4px;right:-6px;background:var(--danger);color:#fff;border-radius:999px;font-size:.65rem;padding:0 .3rem;min-width:1rem;text-align:center}.bell-panel{position:absolute;right:0;top:2.2rem;width:360px;max-height:420px;overflow-y:auto;background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 24px #00000026;padding:.8rem 1rem;z-index:50}.bell-panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}.bell-panel ul{list-style:none;margin:0;padding:0}.bell-panel li{padding:.45rem 0;border-bottom:1px solid var(--border)}.bell-panel li.read{opacity:.55}.bell-panel .bell-line{display:block;font-size:.85rem}.bell-panel .link-btn{color:var(--brand)}.login-logo{width:180px;max-width:100%;display:block;margin:0 auto .6rem}.topbar-logo{height:30px;display:block}
