:root{--ink:#18231e;--muted:#68736d;--line:#dde3df;--paper:#f5f7f5;--white:#fff;--green:#2f6b52;--green-soft:#e5f0e9;--nav:#14241d;--amber:#a66a13;--red:#b33d3d}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background:var(--paper);letter-spacing:0;font-family:Arial,Microsoft YaHei,sans-serif}button,input,select{font:inherit}button{color:inherit}.app-shell{grid-template-columns:228px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#edf4f0;background:var(--nav);flex-direction:column;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;padding:0 8px 24px;display:flex}.brand-mark{width:34px;height:34px;color:var(--nav);background:#b9dfc8;border-radius:7px;place-items:center;font-weight:800;display:grid}.brand div,.operator div,.sidebar-status div{flex-direction:column;display:flex}.brand strong{font-size:16px}.brand span:last-child,.sidebar-status span,.operator small{color:#9dafaa;margin-top:2px;font-size:11px}nav{gap:4px;display:grid}.nav-item{color:#b8c7c0;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;grid-template-columns:20px 1fr auto;align-items:center;gap:10px;width:100%;min-height:42px;padding:0 11px;display:grid}.nav-item:hover,.nav-item.active{color:#fff;background:#263a31}.nav-item em{color:#2b1717;text-align:center;background:#f2aaaa;border-radius:10px;min-width:20px;padding:2px 6px;font-size:11px;font-style:normal}.sidebar-status{border-top:1px solid #31443b;align-items:center;gap:10px;margin-top:auto;padding:14px 10px 0;font-size:12px;display:flex}.status-dot{background:#72d39a;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #72d39a1f}.workspace{min-width:0}.topbar{border-bottom:1px solid var(--line);background:#ffffffeb;justify-content:space-between;align-items:center;height:64px;padding:0 28px;display:flex}.search{width:min(390px,48vw);color:var(--muted);align-items:center;gap:9px;display:flex}.search input{background:0 0;border:0;outline:0;width:100%}.topbar-actions,.operator{align-items:center;display:flex}.topbar-actions{gap:18px}.icon-button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;place-items:center;width:36px;height:36px;display:grid;position:relative}.notification-dot{background:#c14646;border:1px solid #fff;border-radius:50%;width:6px;height:6px;position:absolute;top:7px;right:7px}.operator{gap:9px}.operator>span{color:#fff;background:var(--green);border-radius:50%;place-items:center;width:34px;height:34px;display:grid}.operator strong{font-size:13px}.content{width:min(1260px,100%);margin:0 auto;padding:28px}.page-heading,.panel-heading{justify-content:space-between;align-items:center;display:flex}.page-heading h1{margin:0;font-size:24px}.page-heading p,.panel-heading p{color:var(--muted);margin:5px 0 0;font-size:12px}.secondary-button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:8px;height:36px;padding:0 13px;display:inline-flex}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:22px 0 12px;display:grid}.metric,.panel{border:1px solid var(--line);background:var(--white);border-radius:7px}.metric{flex-direction:column;justify-content:center;min-height:126px;padding:18px;display:flex}.metric>span{color:var(--muted);font-size:12px}.metric strong{margin:10px 0 7px;font-size:25px}.metric small{color:var(--green)}.dashboard-grid{grid-template-columns:minmax(0,1.6fr) minmax(270px,.8fr);gap:12px;display:grid}.panel{padding:18px}.panel h2{margin:0;font-size:15px}.panel select{border:1px solid var(--line);background:#fff;border-radius:5px;height:32px;padding:0 8px}.chart{border-bottom:1px solid var(--line);background-image:repeating-linear-gradient(#0000 0 49px,#edf0ee 50px);grid-template-columns:repeat(7,1fr);align-items:end;gap:15px;height:230px;margin-top:20px;padding-top:14px;display:grid}.bar-group{text-align:center;grid-template-rows:1fr 24px;align-items:end;gap:6px;height:100%;display:grid}.bar-track{justify-content:center;align-items:end;gap:4px;height:100%;display:flex}.bar{background:var(--green);border-radius:3px 3px 0 0;width:13px;min-height:6px}.bar.risk{background:#d59b4a;width:6px}.bar-group small,.legend{color:var(--muted);font-size:10px}.legend{justify-content:flex-end;gap:16px;padding-top:14px;display:flex}.legend span{align-items:center;gap:6px;display:flex}.legend i{border-radius:2px;width:8px;height:8px}.legend-chat{background:var(--green)}.legend-risk{background:#d59b4a}.capabilities{margin-top:15px;display:grid}.capabilities div{border-bottom:1px solid #edf0ee;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;min-height:49px;font-size:12px;display:grid}.capabilities svg{color:var(--green)}.capabilities strong{font-size:12px}.alerts-panel{grid-column:1/-1}.text-button{color:var(--green);cursor:pointer;background:0 0;border:0;align-items:center;font-size:12px;display:inline-flex}.alert-list{border-top:1px solid var(--line);margin-top:12px}.alert-row{cursor:pointer;text-align:left;background:#fff;border:0;border-bottom:1px solid #edf0ee;grid-template-columns:34px minmax(0,1fr) 90px 18px;align-items:center;gap:12px;width:100%;min-height:66px;padding:10px 4px;display:grid}.alert-row:hover{background:#fafcfb}.risk-badge{border-radius:4px;place-items:center;width:28px;height:24px;font-size:11px;display:grid}.level-高{color:var(--red);background:#f9e5e5}.level-中{color:var(--amber);background:#faeddb}.level-低{color:var(--green);background:var(--green-soft)}.alert-copy{flex-direction:column;gap:5px;min-width:0;display:flex}.alert-copy strong{font-size:13px}.alert-copy small,.alert-row time{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}@media (max-width:900px){.app-shell{grid-template-columns:76px minmax(0,1fr)}.brand div,.nav-item span,.nav-item em,.sidebar-status div{display:none}.brand,.nav-item,.sidebar-status{justify-content:center}.nav-item{grid-template-columns:20px}.metrics{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.alerts-panel{grid-column:auto}}@media (max-width:620px){.app-shell{display:block}.sidebar{display:none}.topbar{padding:0 16px}.operator div{display:none}.content{padding:20px 14px}.metrics{grid-template-columns:1fr 1fr}.metric{min-height:108px;padding:14px}.metric strong{font-size:21px}.overview-panel{overflow-x:auto}.chart{min-width:520px}.alert-row{grid-template-columns:30px minmax(0,1fr) 16px}.alert-row time{display:none}}.topbar-status{align-items:center;gap:10px;min-width:0;display:flex}.topbar-status strong{font-size:13px;display:block}.topbar-status small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;display:block;overflow:hidden}.topbar-status .status-dot{background:var(--green);box-shadow:0 0 0 4px #2f6b521f}.status-dot.offline{background:var(--red);box-shadow:0 0 0 4px #b33d3d1f}.status-dot.progress{background:var(--amber);box-shadow:0 0 0 4px #a66a131f}.env-tag{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:5px 10px;font-size:12px}.nav-item:disabled{cursor:not-allowed;opacity:.38}.nav-item:disabled:hover{color:#b8c7c0;background:0 0}a.nav-item{text-decoration:none}.error-banner{color:var(--red);background:#b33d3d0f;border:1px solid #b33d3d47;border-radius:8px;align-items:flex-start;gap:11px;padding:13px 16px;display:flex}.error-banner.warning{color:var(--amber);background:#a66a1312;border-color:#a66a134d}.error-banner strong{font-size:14px;display:block}.error-banner small{color:var(--muted);margin-top:3px;font-size:12px;display:block}.empty-state{color:var(--muted);text-align:center;justify-items:center;gap:7px;padding:40px 24px;display:grid}.empty-state strong{color:var(--ink);font-size:15px}.empty-state small{max-width:420px;font-size:12px;line-height:1.6}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13px}.data-table th{border-bottom:1px solid var(--line);color:var(--muted);text-align:left;white-space:nowrap;padding:9px 12px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:13px 12px}.data-table tr:last-child td{border-bottom:0}.cell-sub{color:var(--muted);margin-top:2px;font-size:11px;display:block}.proof-ref{background:var(--paper);border-radius:4px;padding:2px 6px;font-family:Consolas,Menlo,monospace;font-size:11px}.type-badge{color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:11px;display:inline-block}.scope-list{flex-wrap:wrap;gap:4px;max-width:260px;display:flex}.scope-chip{border:1px solid var(--line);background:var(--white);border-radius:4px;padding:2px 7px;font-family:Consolas,Menlo,monospace;font-size:11px}.grant-status{white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:11px;display:inline-block}.grant-status.status-active{color:var(--green);background:var(--green-soft)}.grant-status.status-expiring_soon{color:var(--amber);background:#a66a131f}.grant-status.status-expired,.grant-status.status-revoked{color:var(--red);background:#b33d3d1a}.danger-button{color:var(--red);background:var(--white);cursor:pointer;border:1px solid #b33d3d52;border-radius:6px;padding:5px 12px;font-size:12px}.danger-button:hover{background:#b33d3d14}.module-grid{gap:2px;display:grid}.module-row{border-bottom:1px solid var(--line);grid-template-columns:16px 1fr auto;align-items:center;gap:10px;padding:9px 4px;display:grid}.module-row:last-child{border-bottom:0}.module-name{font-size:13px}.module-status{color:var(--muted);font-size:12px}.module-status.tone-progress{color:var(--amber)}.alert-row.static{cursor:default}.footnote{color:var(--muted);align-items:center;gap:6px;margin:4px 0 0;font-size:12px;display:flex}.grant-status.status-subject_revoked{color:var(--amber);cursor:help;background:#a66a131f}.review-panel .panel-heading h2{align-items:center;gap:7px;display:flex}.alert-copy strong .type-badge{margin-left:7px;font-weight:400}.data-table .nowrap{white-space:nowrap}.data-table code{font-family:Consolas,Menlo,monospace;font-size:11px}.cell-sub .grant-status{margin-left:6px}.btn-primary{color:#fff;background:var(--green);cursor:pointer;border:0;border-radius:6px;align-items:center;gap:8px;height:36px;padding:0 16px;font-size:13px;display:inline-flex}.btn-primary:disabled{cursor:not-allowed;opacity:.6}.generator-form{gap:14px;margin-top:16px;display:grid}.generator-field{color:var(--muted);gap:6px;font-size:12px;display:grid}.generator-field textarea,.generator-field input{border:1px solid var(--line);background:var(--white);border-radius:6px;outline:0;padding:9px 11px;font-size:13px}.generator-field textarea:focus,.generator-field input:focus{border-color:var(--green)}.generator-field textarea{resize:vertical}.generator-field-count input{width:120px}.generator-actions{align-items:center;gap:12px;display:flex}.error-text{color:var(--red);font-size:12px}.ok-text{color:var(--green);font-size:12px}.character-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:16px;display:grid}.character-card{border:1px solid var(--line);background:var(--white);border-radius:8px;flex-direction:column;gap:10px;padding:14px;display:flex}.character-card-head{align-items:center;gap:12px;display:flex}.character-card-head strong{font-size:14px;display:block}.character-avatar{object-fit:cover;background:var(--green-soft);border-radius:8px;flex-shrink:0;width:52px;height:52px}.character-avatar-empty{color:var(--green);place-items:center;font-size:20px;font-weight:700;display:grid}.character-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 14px;margin:0;display:grid}.character-fields div{gap:6px;font-size:12px;display:flex}.character-fields dt{color:var(--muted);flex-shrink:0}.character-fields dd{text-overflow:ellipsis;white-space:normal;word-break:break-all;margin:0;line-height:1.5;overflow:hidden}.character-personality{color:var(--ink);margin:0;font-size:12px;line-height:1.6}.character-personality strong{color:var(--muted)}.back-link{color:var(--green);align-items:center;gap:4px;margin-bottom:6px;font-size:13px;text-decoration:none;display:inline-flex}.metric-text{white-space:nowrap;font-size:13px;font-weight:600;line-height:1.3}.user-character-link{color:inherit;text-decoration:none;display:block}.character-card-tags{gap:6px;margin:8px 0;display:flex}.character-avatar-lg{border-radius:12px;width:72px;height:72px;font-size:26px}.chat-list{flex-direction:column;gap:10px;display:flex}.chat-row{display:flex}.chat-row-assistant{justify-content:flex-start}.chat-row-user{justify-content:flex-end}.chat-bubble{background:var(--white);border:1px solid var(--line);border-radius:12px;max-width:82%;padding:10px 12px}.chat-row-user .chat-bubble{background:var(--green-soft);border-color:#0000}.chat-meta{color:var(--muted);margin-bottom:4px;font-size:11px;display:block}.chat-image{border-radius:8px;max-width:220px;margin-bottom:6px;display:block}.chat-bubble p{white-space:pre-wrap;word-break:break-word;margin:0;font-size:13px;line-height:1.6}.chat-pagination{justify-content:center;gap:16px;margin-top:12px;display:flex}.chat-pagination a{color:var(--green);font-size:13px;text-decoration:none}.prompt-mode-form{align-items:center;gap:12px;padding:4px 16px 16px;display:flex}.prompt-mode-form select{border:1px solid var(--line);background:var(--white);color:var(--ink);border-radius:6px;padding:7px 10px}.character-actions{gap:12px;padding:4px 16px 16px;display:flex}.deleted-characters{border:1px dashed var(--red);border-radius:10px;margin:0 16px 16px;padding:10px 14px}.deleted-characters summary{cursor:pointer;color:var(--red);font-size:13px;font-weight:600}.deleted-characters .character-grid{margin-top:10px}.btn-load-chat{background:var(--green);color:#fff;border-radius:8px;margin-top:12px;padding:8px 18px;font-size:13px;font-weight:600;text-decoration:none;display:inline-block}.memory-list{flex-direction:column;gap:8px;padding:8px 0;display:flex}.memory-item{border-left:3px solid var(--green-soft);background:var(--paper);border-radius:6px;padding:6px 10px}.memory-item p{margin:0 0 4px;font-size:13px;line-height:1.6}.model-config-form{flex-direction:column;gap:16px;display:flex}.model-config-form .panel{padding:18px}.config-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:14px;display:grid}.config-field{flex-direction:column;gap:6px;display:flex}.config-field span{color:var(--muted);font-size:12px}.config-field input,.config-field select{border:1px solid var(--line);background:var(--white);height:32px;color:var(--ink);border-radius:5px;padding:0 8px;font-size:13px}.model-config-actions{align-items:center;gap:12px;padding:0 4px;display:flex}.avatar-zoomable{cursor:zoom-in}
