:root{--green:#165d3b;--green2:#227b50;--green3:#eaf5ef;--ink:#17251e;--muted:#67776e;--line:#e2e9e5;--bg:#f4f7f5;--white:#fff;--danger:#b42318;--warning:#b54708;--shadow:0 8px 30px rgba(20,55,38,.08);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;padding:7vw;background:radial-gradient(circle at 15% 25%,#d8f0e2 0,transparent 36%),linear-gradient(135deg,#f8fbf9,#edf5f0)}.login-brand{display:flex;align-items:center;gap:22px}.login-brand h1{font-size:48px;margin:0}.login-brand p{font-size:20px;color:var(--muted);margin:5px 0}.brand-mark{width:82px;height:82px;border-radius:25px;display:grid;place-items:center;background:var(--green);color:white;font-size:36px;font-weight:800;box-shadow:var(--shadow)}.brand-mark.small{width:44px;height:44px;border-radius:14px;font-size:18px}.login-card{max-width:470px;width:100%;justify-self:end;background:white;border:1px solid var(--line);border-radius:24px;padding:38px;box-shadow:var(--shadow)}.eyebrow{font-size:13px;font-weight:800;color:var(--green2);letter-spacing:.12em}.login-card h2{font-size:30px;margin:9px 0 4px}.login-card label,.form-grid label{display:grid;gap:8px;font-size:14px;font-weight:700;margin-top:18px}.login-card input,.form-grid input,.form-grid select,.form-grid textarea,.filters input,.filters select{width:100%;border:1px solid #ced9d2;background:#fff;border-radius:10px;padding:11px 12px;outline:none}.login-card input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.filters input:focus,.filters select:focus{border-color:var(--green2);box-shadow:0 0 0 3px rgba(34,123,80,.12)}.primary,.secondary,.danger,.ghost{border-radius:10px;padding:10px 16px;border:1px solid transparent;font-weight:700}.primary{background:var(--green);color:#fff}.primary:hover{background:#10492e}.secondary{background:#fff;border-color:#cdd8d1;color:var(--ink)}.secondary:hover{background:#f7faf8}.danger{background:#fff3f2;border-color:#fecdca;color:var(--danger)}.ghost{background:transparent;color:var(--green)}.wide{width:100%;margin-top:24px}.form-error{color:var(--danger);min-height:24px;margin-top:12px}.app-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#103d29;color:#d9eee2;padding:22px 14px;display:flex;flex-direction:column}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 8px 22px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand div:last-child{display:grid}.sidebar-brand span{font-size:12px;color:#9ec9b0;margin-top:3px}.sidebar nav{display:grid;gap:4px;padding:18px 0;overflow:auto}.sidebar nav button{display:flex;align-items:center;gap:11px;position:relative;background:transparent;border:0;color:#cbe4d5;text-align:left;padding:11px 12px;border-radius:10px}.sidebar nav button:hover,.sidebar nav button.active{background:rgba(255,255,255,.11);color:white}.sidebar nav button span{width:26px;height:26px;border-radius:8px;background:rgba(255,255,255,.1);display:grid;place-items:center;font-size:11px;font-weight:800}.badge{margin-left:auto;background:#ef4444;color:white;border-radius:99px;font-size:11px;padding:2px 7px}.sidebar-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:16px 8px 0;display:flex;justify-content:space-between;gap:8px;font-size:13px}.sidebar-foot button{border:0;background:transparent;color:#b8d8c6}.main{min-width:0}.topbar{height:86px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:10}.topbar h1{font-size:22px;margin:0}.topbar p{margin:4px 0 0;font-size:13px;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:10px}.health{font-size:12px;padding:7px 11px;border-radius:99px;background:#eff8f3;color:var(--green)}.content{padding:24px 28px 48px;max-width:1600px;margin:0 auto}.loading,.empty{background:white;border:1px dashed #ccd8d0;border-radius:16px;padding:48px;text-align:center;color:var(--muted)}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:14px;margin-bottom:20px}.metric{background:white;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 3px 14px rgba(20,55,38,.03)}.metric .label{color:var(--muted);font-size:13px}.metric strong{display:block;font-size:28px;margin-top:7px}.metric.warn strong{color:var(--warning)}.metric.danger strong{color:var(--danger)}.panel{background:white;border:1px solid var(--line);border-radius:16px;margin-bottom:18px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 18px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:17px;margin:0}.panel-body{padding:18px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.filters{display:flex;flex-wrap:wrap;align-items:end;gap:10px;padding:14px 18px;background:#fbfcfb;border-bottom:1px solid var(--line)}.filters label{display:grid;gap:5px;font-size:12px;color:var(--muted);min-width:135px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{background:#f8faf9;color:#5f6f66;font-weight:700;text-align:left;white-space:nowrap}.data-table th,.data-table td{padding:12px 14px;border-bottom:1px solid #edf1ee;vertical-align:top}.data-table tr:hover td{background:#fbfdfc}.data-table td.actions{white-space:nowrap}.tag{display:inline-flex;align-items:center;border-radius:99px;padding:4px 8px;font-size:11px;font-weight:700;background:#eef3f0;color:#4a5c52}.tag.green{background:#e9f7ef;color:#137044}.tag.orange{background:#fff4e5;color:#9a5700}.tag.red{background:#fff0ef;color:#b42318}.tag.blue{background:#edf4ff;color:#2459a9}.pen-grid{display:grid;grid-template-columns:repeat(8,minmax(105px,1fr));gap:9px}.pen-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:white}.pen-card strong{display:block}.pen-card .count{font-size:21px;margin:7px 0}.pen-card small{color:var(--muted)}.progress{height:6px;background:#edf2ef;border-radius:99px;overflow:hidden;margin-top:9px}.progress i{display:block;height:100%;background:var(--green2)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px}.form-grid .full{grid-column:1/-1}.check-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.check-list label{display:flex!important;align-items:center;gap:8px;margin:0!important;font-weight:500}.check-list input{width:auto}.pagination{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:14px 18px}.toast{position:fixed;right:22px;top:20px;z-index:1000;background:#17251e;color:white;border-radius:11px;padding:12px 16px;box-shadow:var(--shadow);transform:translateY(-80px);opacity:0;transition:.25s;max-width:420px}.toast.show{transform:translateY(0);opacity:1}.toast.error{background:#8f1d16}dialog{border:0;border-radius:18px;padding:0;max-width:min(760px,92vw);width:100%;box-shadow:0 28px 90px rgba(0,0,0,.24)}dialog::backdrop{background:rgba(13,28,19,.48)}.modal-card{margin:0}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:19px}.icon-btn{border:0;background:transparent;font-size:22px}.modal-card>#modalBody{padding:18px 20px;max-height:68vh;overflow:auto}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line)}.codebox{white-space:pre-wrap;background:#f5f8f6;border:1px solid var(--line);border-radius:10px;padding:12px;font:12px ui-monospace,SFMono-Regular,Consolas,monospace;max-height:280px;overflow:auto}.chart-bars{display:grid;gap:10px}.bar-row{display:grid;grid-template-columns:130px 1fr 50px;align-items:center;gap:10px;font-size:13px}.bar{height:10px;background:#edf2ef;border-radius:99px;overflow:hidden}.bar i{height:100%;display:block;background:var(--green2)}.mobile-only{display:none}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(3,1fr)}.pen-grid{grid-template-columns:repeat(5,1fr)}.grid-3{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.login-shell{grid-template-columns:1fr;padding:24px}.login-brand{display:none}.login-card{justify-self:center}.app-shell{display:block}.sidebar{position:fixed;left:-270px;z-index:50;width:250px;transition:.2s}.sidebar.open{left:0}.topbar{padding:0 14px;height:74px}.content{padding:16px 12px 40px}.mobile-only{display:block}.health{display:none}.metric-grid{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-3{grid-template-columns:1fr}.pen-grid{grid-template-columns:repeat(3,1fr)}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.top-actions .secondary{display:none}}
.action-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.amount-in{color:var(--green2);font-weight:700}.amount-out{color:var(--danger);font-weight:700}

.mobile-preview-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:760px){.top-actions .mobile-preview-link{display:inline-flex}.top-actions #refreshBtn{display:none}}
.permission-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px}.permission-heading span{font-size:13px;color:var(--muted)}.permission-catalog{display:grid;gap:12px}.permission-group{border:1px solid var(--line);border-radius:12px;padding:12px;margin:0}.permission-group legend{padding:0 7px;font-weight:800;color:var(--green)}.permission-options{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:8px}.permission-options label{display:flex!important;align-items:center;gap:8px;margin:0!important;font-weight:500}.permission-options input{width:auto}.permission-options em{font-style:normal;font-size:10px;color:var(--danger);background:#fff0ef;border-radius:99px;padding:2px 6px;margin-left:6px}.admin-pen-grid{display:grid;grid-template-columns:repeat(8,minmax(72px,1fr));gap:10px}.admin-pen-tile{border:1px solid var(--line);border-radius:12px;padding:7px;background:#fff}.admin-pen-tile>button:first-child{display:grid;width:100%;border:0;background:transparent;font-size:20px;font-weight:800;color:var(--ink);padding:5px}.admin-pen-tile small{font-size:11px;color:var(--muted)}.admin-pen-tile span{font-size:11px;color:var(--muted);margin-top:3px}.admin-pen-tile.occupied{border-color:#86c7a6;background:#f0faf5}.mini-delete{width:100%;padding:5px 6px;margin-top:5px;font-size:11px}.report-metrics{padding:18px;margin:0}.action-row{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:1100px){.admin-pen-grid{grid-template-columns:repeat(6,1fr)}.permission-options{grid-template-columns:1fr}}
@media(max-width:760px){.admin-pen-grid{grid-template-columns:repeat(4,1fr)}.permission-heading{display:grid}}

.capability-options label{align-items:flex-start!important;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fbfdfc}.capability-options label:has(input:checked){border-color:#76b998;background:#eef8f2}.capability-options span{display:grid;gap:3px}.capability-options strong{font-size:14px}.capability-options small{display:block;color:var(--muted);font-size:12px;line-height:1.45}.business-capability-group{background:#fff}.business-capability-group legend{font-size:15px}
.delete-warning{border:1px solid #f5b7b1;background:#fff7f6;color:#7a271a;border-radius:12px;padding:14px;line-height:1.55}.delete-impact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.delete-impact-item{border:1px solid var(--line);background:#fafcfb;border-radius:10px;padding:11px}.delete-impact-item span{display:block;color:var(--muted);font-size:12px}.delete-impact-item strong{display:block;font-size:20px;margin-top:4px}.delete-confirm-fields{display:grid;gap:10px}.danger-solid{background:var(--danger);color:#fff;border-color:var(--danger)}.danger-solid:hover{background:#8f1d16}.modal-actions button{min-height:42px}
@media(max-width:760px){dialog{max-width:calc(100vw - 20px);max-height:calc(100vh - 24px)}.modal-card>#modalBody{max-height:calc(100vh - 170px);padding:14px}.modal-actions{position:sticky;bottom:0;background:#fff;display:grid;grid-template-columns:1fr 1fr;padding:12px 14px}.modal-actions:has(button:only-child){grid-template-columns:1fr}.delete-impact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.table-wrap{overflow:visible}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table thead{display:none}.data-table tr{border:1px solid var(--line);border-radius:12px;margin:10px 0;padding:10px;background:#fff}.data-table td{border:0;padding:6px 4px;white-space:normal!important}.data-table td:nth-child(n+5):not(.actions){display:none}.data-table td.actions{display:flex;flex-wrap:wrap;gap:7px;padding-top:10px;border-top:1px solid var(--line)}.data-table td.actions button{flex:1 1 120px;min-height:42px}.filters label{min-width:calc(50% - 6px);flex:1}.pagination{justify-content:center;flex-wrap:wrap}.pagination span{order:-1;width:100%;text-align:center}}
.danger-notice{border:1px solid #f5b7b1;background:#fff7f6;color:#7a271a;border-radius:12px;padding:14px;line-height:1.55}.danger-notice p{margin:6px 0 0}.delete-impact-row{border:1px solid var(--line);background:#fafcfb;border-radius:10px;padding:11px;min-width:0}.delete-impact-row span{display:block;color:var(--muted);font-size:12px;overflow-wrap:anywhere}.delete-impact-row strong{display:block;font-size:20px;margin-top:4px;overflow-wrap:anywhere}.modal-actions .danger:last-child{background:var(--danger);color:#fff;border-color:var(--danger)}
.file-picker{display:flex;align-items:center;gap:10px;min-height:42px}.file-input-hidden{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none}.ai-term-filters{padding:14px 18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media(max-width:600px){.topbar button,.panel-head button,.action-row button,.pagination button{min-height:44px;min-width:44px}.topbar{gap:8px;flex-wrap:wrap;height:auto;min-height:74px;padding-top:8px;padding-bottom:8px}.top-actions{width:100%;justify-content:flex-end}.ai-term-filters label{min-width:100%}.file-picker{align-items:flex-start;flex-direction:column}}
.ai-subnav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px;padding:8px;background:var(--panel,#fff);border:1px solid var(--line,#dce7df);border-radius:14px;position:sticky;top:8px;z-index:5}
.ai-subnav button{min-height:44px;padding:10px 18px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--muted,#587064);font-weight:700;cursor:pointer}
.ai-subnav button.active{background:#e9f6ef;color:#126d43;border-color:#b8dfca}
.ai-section.hidden{display:none!important}
@media(max-width:600px){.ai-subnav{display:grid;grid-template-columns:1fr 1fr;position:static}.ai-subnav button{width:100%;padding:10px 8px}.ai-term-filters{grid-template-columns:1fr}.panel-head{align-items:flex-start;gap:10px}.panel-head .action-row{width:100%}.panel-head .action-row button{flex:1;min-height:44px}}
.security-thumb{width:36px;height:36px;object-fit:cover;border-radius:8px;border:1px solid #d6e2dc;margin-right:4px;vertical-align:middle;cursor:pointer;background:#f4f7f5}
.data-table.compact td,.data-table.compact th{padding:8px 10px;vertical-align:middle}

.record-detail-section{margin-bottom:16px}.record-detail-section h3{margin:0 0 10px;font-size:16px}.record-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.record-detail-grid>div{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fbfdfc}.record-detail-grid span{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}.record-detail-grid strong{font-size:14px;word-break:break-word}.record-debug summary{cursor:pointer;color:var(--green);font-weight:700;margin:10px 0}.empty.compact{padding:18px}.danger-text{color:var(--danger);font-weight:700}.security-photo-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.security-photo-list .security-thumb{width:72px;height:72px}.notice strong{font-weight:800}
@media(max-width:760px){.record-detail-grid{grid-template-columns:1fr}}
