:root{--bg:#f4f5f7;--sidebar:#0f2d22;--sidebar-text:#cfe3d8;--accent:#1a7a4a;--accent-dark:#14603a;--text:#1c2420;--muted:#64716b;--border:#e2e7e4;--card:#ffffff;--danger:#b3342c;--ok:#1a7a4a;--degraded:#b3541e;--radius:10px}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text)}.layout{display:flex;min-height:100vh}.sidebar{width:232px;background:var(--sidebar);color:var(--sidebar-text);display:flex;flex-direction:column;padding:20px 0;flex-shrink:0}.sidebar .brand{padding:0 20px 18px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:12px}.sidebar .brand h1{margin:0;font-size:17px;color:#fff;letter-spacing:.2px}.sidebar .brand p{margin:3px 0 0;font-size:12px;color:var(--sidebar-text);opacity:.75}.sidebar nav a{display:block;padding:11px 20px;color:var(--sidebar-text);text-decoration:none;font-size:14px;border-left:3px solid transparent}.sidebar nav a:hover{background:rgba(255,255,255,.06)}.sidebar nav a.active{background:rgba(255,255,255,.1);border-left-color:var(--accent);color:#fff}.sidebar .sidebar-footer{margin-top:auto;padding:12px 20px;font-size:12px;opacity:.6}.main{flex:1 1;display:flex;flex-direction:column;min-width:0}.topbar{background:var(--card);border-bottom:1px solid var(--border);padding:12px 28px;display:flex;align-items:center;gap:14px}.topbar .spacer{flex:1 1}.health-badge{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;background:#b8c2bc}.dot.ok{background:var(--ok)}.dot.degraded{background:var(--degraded)}.locale-switch{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.locale-switch button{border:none;background:var(--card);padding:6px 12px;font-size:12px;cursor:pointer;color:var(--muted)}.locale-switch button.active{background:var(--accent);color:#fff}.content{padding:28px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.page-head h2{margin:0 0 4px;font-size:20px}.page-head p{margin:0 0 20px;color:var(--muted);font-size:13.5px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:28px;text-align:center;color:var(--muted);cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:22px;font-size:14px}.dropzone.dragging,.dropzone:hover{border-color:var(--accent);background:rgba(26,122,74,.04);color:var(--accent)}.dropzone input{display:none}.dropzone .hint{display:block;margin-top:6px;font-size:12px;opacity:.8}.btn{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:7px 14px;font-size:13px;cursor:pointer}.btn:hover{color:var(--accent)}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-dark)}.btn.primary:disabled{opacity:.6;cursor:default}.btn.danger{color:var(--danger)}.btn.danger:hover{border-color:var(--danger);background:rgba(179,52,44,.05)}.btn.small{padding:4px 10px;font-size:12px}table.data{width:100%;border-collapse:collapse;font-size:13.5px}table.data th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.4px}table.data td,table.data th{padding:10px 12px;border-bottom:1px solid var(--border)}table.data td{vertical-align:middle}table.data tr:last-child td{border-bottom:none}table.data .file-cell{display:flex;align-items:center;gap:12px}table.data .file-name{font-weight:500}table.data .thumb{width:40px;height:40px;border-radius:6px;object-fit:cover;border:1px solid var(--border);background:var(--bg)}.actions{display:flex;gap:8px;justify-content:flex-end}.empty-state{text-align:center;padding:48px 0;color:var(--muted)}.error-banner{background:rgba(179,52,44,.08);border:1px solid rgba(179,52,44,.3);color:var(--danger);padding:12px 16px;margin-bottom:18px;display:flex;align-items:center;gap:12px;justify-content:space-between}.error-banner,.toast{border-radius:8px;font-size:13.5px}.toast{position:fixed;bottom:24px;right:24px;background:var(--text);color:#fff;padding:10px 18px;box-shadow:0 4px 16px rgba(0,0,0,.2)}