:root{font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;color:#1f2933;background:#e7f1fc;font-size:14px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 96% 96%,transparent 0 160px,rgba(57,100,158,.05) 161px 162px,transparent 163px 225px,rgba(57,100,158,.035) 226px 227px,transparent 228px),#e7f1fc}button{font:inherit;cursor:pointer;border:1px solid #cbd2d9;background:#fff;border-radius:4px;padding:4px 10px}button.primary{background:#1f6feb;color:#fff;border-color:#1f6feb}button.danger{color:#b42318;border-color:#f0b4ae}button.link{border:none;background:none;color:#1f6feb;padding:0 4px}button:disabled{opacity:.6;cursor:default}input,select{font:inherit;padding:4px 6px;border:1px solid #cbd2d9;border-radius:4px;background:#fff}.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at 16% 20%,transparent 0 110px,rgba(78,132,201,.09) 111px 112px,transparent 113px 180px,rgba(78,132,201,.05) 181px 182px,transparent 183px),linear-gradient(135deg,#e0edfc,#eff7ff 55%,#dfedfc)}.card{background:#f5faff;border:1px solid #d4e3f3;border-radius:8px;padding:16px;box-shadow:0 2px 8px #18315306}.login{width:360px;max-width:100%;display:flex;flex-direction:column;gap:16px;padding:28px;border-top:3px solid #3f77b8;box-shadow:0 16px 48px #204c831a}.login input{padding:9px 10px;border-color:#c2d5ea}.login button.primary{padding:10px}.login h1{font-size:20px;margin:0 0 8px}.login label{display:flex;flex-direction:column;gap:4px}.topbar{display:flex;align-items:center;gap:24px;padding:14px 20px;color:#f0f5ff;background-color:#142c4d;background-image:radial-gradient(circle at 87% -36px,transparent 0 96px,rgba(167,201,247,.12) 97px 98px,transparent 99px 148px,rgba(167,201,247,.07) 149px 150px,transparent 151px),linear-gradient(125deg,transparent 67%,rgba(145,186,238,.055) 67% 77%,transparent 77%);border-bottom:1px solid #233e61;box-shadow:0 3px 12px #142c4d1f}.topbar .user{color:#d8e4f5}.topbar button.link{color:#bed8ff}.topbar>nav>.tab{color:#f0f5ff}.topbar>nav>.tab.active{background:#2d5280;color:#fff}.brand{font-weight:600}.topbar nav{display:flex;gap:4px;flex:1}.tab{border:none;background:none;padding:6px 12px}.tab.active{background:#e8f0fe;color:#1f6feb;border-radius:4px}main{padding:16px}.split{display:grid;grid-template-columns:minmax(320px,1fr) 2fr;gap:16px;align-items:start}.stack{display:flex;flex-direction:column;gap:16px}.muted{color:#7b8794}.small{font-size:12px}.empty{color:#7b8794;padding:24px;text-align:center;border:1px dashed #cbd2d9;border-radius:4px}.error{background:#fef3f2;color:#b42318;padding:8px;border-radius:4px;margin-bottom:8px}.ok{background:#ecfdf3;color:#027a48;padding:8px;border-radius:4px;margin-bottom:8px}.ok-text{color:#027a48}.error-text{color:#b42318}.tree,.tree ul,.list{list-style:none;padding-left:16px;margin:0}.tree{padding-left:0}.node{border:none;background:none;padding:3px 6px;text-align:left}.node.selected{background:#e8f0fe}.tree-row{display:flex;align-items:center;gap:2px}.twisty{border:none;background:none;width:22px;padding:2px 0;color:#475467;font-size:11px}.twisty-spacer{display:inline-block;width:22px}.tree-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}li.current-step{font-weight:600}.inactive{opacity:.55}.badge{font-size:11px;padding:1px 5px;border-radius:3px;background:#e4e7eb}.badge.t-GROUP{background:#fde2e1}.badge.t-COMPANY{background:#e1effe}.badge.t-DEPARTMENT{background:#def7ec}.badge.t-PROJECT{background:#fdf6b2}.badge.t-STORE{background:#ede4fb}.tag{font-size:11px;margin-left:4px;padding:0 4px;border-radius:3px;background:#f4f6f8;color:#7b8794;border:1px solid #e4e7eb}.kv{display:grid;grid-template-columns:80px 1fr;gap:4px 8px}.kv dt{color:#7b8794}.kv dd{margin:0}.form{display:flex;flex-direction:column;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid #e4e7eb}.form h3{margin:0;font-size:14px}.form label{display:flex;flex-direction:column;gap:4px}.form label.inline,label.inline{flex-direction:row;align-items:center;gap:4px;display:inline-flex}.row{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:6px 8px;border-bottom:1px solid #eef0f2;text-align:left}.table th{background:#eaf3fd}.table tr.selected{background:#e8f0fe}.table tbody tr{cursor:pointer}.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.perm-grid fieldset{border:1px solid #e4e7eb;border-radius:4px;display:flex;flex-direction:column;gap:4px}.assignments li{margin-bottom:4px}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.warn{background:#fffaeb;color:#b54708;padding:8px;border-radius:4px;margin-bottom:8px}.notice{background:#eff8ff;color:#175cd3;padding:8px;border-radius:4px;margin:8px 0}.status{font-size:12px;padding:1px 6px;border-radius:10px;background:#f2f4f7;white-space:nowrap}.status.s-DRAFT{background:#f2f4f7}.status.s-PENDING{background:#fffaeb;color:#b54708}.status.s-REJECTED{background:#fef3f2;color:#b42318}.status.s-APPROVED{background:#eff8ff;color:#175cd3}.status.s-DISBURSED,.status.s-PAID{background:#ecfdf3;color:#027a48}.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.section{margin-top:16px;padding-top:12px;border-top:1px solid #e4e7eb}.section h3{margin:0 0 8px;font-size:14px}.table.compact td,.table.compact th{padding:4px 6px;font-size:13px}.table.static tbody tr{cursor:default}.lines{margin:4px 0 12px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}textarea{font:inherit;padding:4px 6px;border:1px solid #cbd2d9;border-radius:4px;background:#fff}.mainnav{position:relative}.nav-bar{list-style:none;margin:0;padding:0;display:flex;flex:1;justify-content:space-around;gap:4px;flex-wrap:wrap}.nav-group{position:relative}.nav-parent{border:none;background:none;color:#edf3fc;padding:9px 16px;border-radius:6px;white-space:nowrap;transition:background-color .12s ease}.nav-parent .caret{margin-left:6px;font-size:10px;color:#adc5e4}.nav-parent.active{background:#2c5080;color:#fff}.nav-group.open>.nav-parent{background:#244568}.nav-group.open>.nav-parent.active{background:#335d90}.nav-parent:focus-visible,.nav-dropdown .tab:focus-visible{outline:2px solid #1f6feb;outline-offset:1px}.nav-dropdown{display:none;position:absolute;top:100%;left:0;z-index:30;min-width:168px;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid #e4e7eb;border-radius:6px;box-shadow:0 8px 24px #0f172a1f}.nav-group.open>.nav-dropdown{display:block}.nav-dropdown .tab{display:block;width:100%;text-align:left;padding:8px 12px;border-radius:4px;white-space:nowrap}.nav-dropdown .tab:hover{background:#eff5fd}.nav-dropdown .tab.active{background:#e8f0fe;color:#1f6feb;font-weight:600}@media(max-width:760px){.topbar{flex-wrap:wrap;gap:8px;padding:8px}.topbar nav{order:3;flex-basis:100%}.nav-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.nav-group{position:static}.nav-parent{width:100%;padding:10px 8px}.nav-dropdown{left:0;right:0;min-width:0}.nav-dropdown .tab{padding:12px;white-space:normal}main{padding:8px}.split{grid-template-columns:1fr}}.hscroll{overflow-x:auto;max-width:100%}.picklist{border:1px solid #e4e7eb;border-radius:4px;max-height:220px;overflow:auto;padding:4px 8px;min-width:240px;background:#fff}.picklist label{display:flex;gap:6px;align-items:flex-start;padding:2px 0}.filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;align-items:start}.filters>label,.filters>div{display:flex;flex-direction:column;gap:4px}.matrix th,.matrix td{white-space:nowrap}.matrix th.org{white-space:normal;min-width:140px;vertical-align:bottom}.matrix tr.total td,.matrix td.total{font-weight:600;background:#f8fafc}.matrix tr.breakdown td{color:#52606d}.matrix td:first-child,.matrix th:first-child{position:sticky;left:0;background:#fff}.pager{display:flex;gap:8px;align-items:center;margin:8px 0;flex-wrap:wrap}.book-badge{margin-left:12px;padding:2px 10px;border-radius:12px;border:1px solid #3b6496;background:#a7c9f71f;color:#dbe9ff;font-size:12px;font-weight:500;cursor:pointer}.book-badge[data-mode=SIMPLE]{border-color:#4f8fc9}.book-badge:hover{background:#a7c9f738}.mode-badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:3px;font-size:12px;border:1px solid #c2d7ee;background:#eaf3fd;color:#1f4e85}.mode-badge.m-SIMPLE{background:#eef8f3;border-color:#bfe3cf;color:#1d6b45}.book-option{display:flex;align-items:center;gap:6px;width:100%;margin:6px 0;padding:10px 12px;text-align:left;background:#fff;border:1px solid #d4e3f3;border-radius:6px;cursor:pointer}.book-option:hover{border-color:#7fa9d8;background:#f5faff}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:12px 0}.stat-card{background:#fff;border:1px solid #d4e3f3;border-radius:6px;padding:12px}.stat-card h3{margin:0 0 8px;font-size:14px;color:#1f3a5f}.big-num{font-size:28px;font-weight:600;color:#1f4e85}.table-scroll{overflow-x:auto}.total-row td{font-weight:600;border-top:2px solid #c2d7ee}.inline-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.detail .kv{grid-template-columns:120px 1fr}.perm-group{margin:8px 0}.perm-group h4{margin:6px 0}.card.inset{background:#f8fafc;border:1px solid #e4e7eb;padding:8px 10px;margin:8px 0;box-shadow:none}.service-badge{margin-left:10px;font-size:12px;font-weight:400;padding:2px 8px;border-radius:10px;background:#bed8ff29;color:#d8e4f5}.sub-state{font-size:12px;padding:1px 6px;border-radius:3px;white-space:nowrap}.sub-state.s-USABLE{background:#def7ec;color:#03543f}.sub-state.s-SUSPENDED{background:#fde2e1;color:#9b1c1c}.sub-state.s-EXPIRED{background:#fdf6b2;color:#723b13}.sub-state.s-NOT_STARTED{background:#e1effe;color:#1e429f}.sub-state.s-INACTIVE{background:#e4e7eb;color:#3e4c59}.sub-panel{margin-top:16px;display:flex;flex-direction:column;gap:12px}.sub-panel dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:0}.sub-panel dt{color:#52606d}.sub-panel dd{margin:0}.sub-actions{display:flex;flex-wrap:wrap;gap:8px}.preview{background:#fffbeb;border:1px solid #f5d88a;border-radius:4px;padding:8px 12px}.preview ul{margin:4px 0 0;padding-left:18px}
