:root{font-family:Inter,Segoe UI,Microsoft YaHei,Arial,sans-serif;color:#202833;background:#eef2f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--panel: #ffffff;--line: #d7dee6;--muted: #667085;--text: #202833;--accent: #0f766e;--accent-strong: #0b5c56;--blue: #1f5fbf;--danger: #b42318}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}.app-shell{min-height:100vh;display:grid;grid-template-columns:232px 1fr}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:#eef2f5}.login-panel{width:min(100%,380px);display:grid;gap:14px;border:1px solid var(--line);border-radius:8px;padding:24px;background:#fff;box-shadow:0 16px 40px #1018281f}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:6px}.login-brand strong,.login-brand span{display:block}.login-brand strong{font-size:17px}.login-brand span{color:var(--muted);font-size:12px;margin-top:2px}.login-button{width:100%;margin-top:4px}.sidebar{position:relative;background:#18212c;color:#f8fafc;padding:18px 14px 78px;border-right:1px solid #111827}.brand-block{display:flex;align-items:center;gap:10px;padding:8px 8px 20px}.brand-block strong,.brand-block span{display:block}.brand-block strong{font-size:15px}.brand-block span{color:#b8c4d1;font-size:12px;margin-top:2px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border-radius:8px;background:#0f766e}.nav-list{display:grid;gap:4px}.nav-item{width:100%;height:40px;display:flex;align-items:center;gap:10px;border:0;border-radius:6px;padding:0 10px;color:#d7dee6;background:transparent;text-align:left}.nav-item:hover,.nav-item.active{background:#253244;color:#fff}.nav-item.active{box-shadow:inset 3px 0 #16a394}.sidebar-footer{position:absolute;left:14px;right:14px;bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #2c3848;padding-top:12px}.sidebar-footer strong,.sidebar-footer span{display:block}.sidebar-footer strong{max-width:140px;overflow:hidden;color:#fff;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer span{color:#b8c4d1;font-size:12px;margin-top:2px}.logout-button{width:34px;height:34px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #344054;border-radius:6px;color:#d7dee6;background:transparent}.logout-button:hover{color:#fff;background:#253244}.main{min-width:0;padding:20px 24px 40px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.topbar h1{margin:0;font-size:24px;line-height:1.2}.topbar p,.panel__header p,.inline-note{color:var(--muted);margin:6px 0 0;font-size:13px}.file-chip{max-width:520px;border:1px solid var(--line);background:#f8fafc;border-radius:6px;padding:8px 10px;color:#344054;font-size:12px;overflow-wrap:anywhere}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px;box-shadow:0 1px 2px #1018280a}.panel+.panel{margin-top:16px}.panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.panel__header h2{margin:0;font-size:18px;line-height:1.25}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}.metric{border:1px solid var(--line);border-radius:8px;padding:14px;background:#fbfcfe}.metric__label,.metric small{display:block;color:var(--muted);font-size:12px}.metric strong{display:block;margin-top:6px;font-size:24px}.split-grid,.resource-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.plain-box{border:1px solid var(--line);border-radius:8px;padding:14px;background:#fbfcfe}.plain-box h3,.resource-grid h3{margin:0 0 10px;font-size:14px}pre{margin:0;white-space:pre-wrap;color:#344054}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px}label{display:grid;gap:6px;color:#344054;font-size:13px}input,select{width:100%;height:38px;border:1px solid #c8d1dc;border-radius:6px;padding:0 10px;color:var(--text);background:#fff}input:focus,select:focus{outline:2px solid rgba(15,118,110,.2);border-color:var(--accent)}.checkbox-row{display:flex;align-items:center;gap:8px;padding-top:22px}.checkbox-row input{width:16px;height:16px}.actions,.inline-form{display:flex;align-items:center;gap:12px;margin-top:16px}.inline-form input{max-width:520px}.primary-button,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:6px;color:#fff;background:var(--accent)}.primary-button{height:38px;padding:0 14px}.primary-button:hover,.icon-button:hover{background:var(--accent-strong)}.icon-button{width:38px;height:38px}.result-path{color:#475467;font-size:13px;overflow-wrap:anywhere}.error-text{color:var(--danger);background:#fff4f2;border:1px solid #ffdad5;border-radius:6px;padding:10px 12px;margin:14px 0 0;overflow-wrap:anywhere}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:8px}.data-table{width:100%;min-width:780px;border-collapse:collapse;font-size:13px}.data-table th,.data-table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.data-table th{background:#f4f7fa;color:#344054;font-weight:600;white-space:nowrap}.data-table tr:last-child td{border-bottom:0}.th-button{width:100%;min-height:22px;display:flex;align-items:center;justify-content:space-between;gap:6px;border:0;padding:0;background:transparent;color:inherit;text-align:left}.sort-mark{min-width:12px;color:var(--accent)}.empty-cell{color:var(--muted);text-align:center}@media (max-width: 980px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:10;padding:10px}.brand-block{padding:4px 4px 10px}.nav-list{grid-template-columns:repeat(3,minmax(0,1fr))}.sidebar-footer{position:static;margin-top:10px}.nav-item{justify-content:center}.main{padding:16px}.topbar,.panel__header,.actions,.inline-form{align-items:stretch;flex-direction:column}.metric-grid,.form-grid,.split-grid,.resource-grid{grid-template-columns:1fr}}
