:root{color-scheme:light;--bg: #f4f6f9;--card: #ffffff;--card-alt: #f8fafc;--text: #1c2430;--muted: #6b7685;--border: #e2e6ec;--accent: #2f6fed;--accent-hover: #2559c7;--secondary: #64748b;--button-bg: #2f6fed;--button-hover-bg: #2559c7;--ok: #1a8f5b;--ok-bg: #e6f6ee;--err: #d63f3f;--err-bg: #fbeaea;--pending: #a3792f;--pending-bg: #fbf1e2;--sidebar-bg: #161b2c;--sidebar-text: #c4c9d8;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05);--shadow-md: 0 8px 24px rgba(16, 24, 40, .08);--shadow-lg: 0 20px 60px rgba(16, 24, 40, .18);--radius: 10px}:root[data-theme=dark]{color-scheme:dark;--bg: #10131c;--card: #171b28;--card-alt: #1d2333;--text: #e7eaf2;--muted: #9099ac;--border: #2a3145;--accent: #5b8def;--accent-hover: #78a2f2;--secondary: #64748b;--button-bg: #5b8def;--button-hover-bg: #78a2f2;--ok: #3fce8f;--ok-bg: rgba(63, 206, 143, .14);--err: #ef6a6a;--err-bg: rgba(239, 106, 106, .14);--pending: #e0ab55;--pending-bg: rgba(224, 171, 85, .14);--sidebar-bg: #0c0f18;--sidebar-text: #aab1c6;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .5)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;transition:background .15s ease,color .15s ease}.full-page-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted)}.login-split{min-height:100vh;display:grid;grid-template-columns:minmax(360px,480px) 1fr}.login-form-side{display:flex;flex-direction:column;padding:2rem 1.5rem;background:var(--bg)}.login-form-wrap{flex:1;display:flex;align-items:center;justify-content:center}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:1rem}.login-card h1{margin:0;font-size:1.5rem;text-align:center}.login-logo{display:block;max-width:200px;height:auto;margin:0 auto .5rem}.login-card .muted{text-align:center;margin:0}.login-footnote{font-size:.78rem;margin-top:.25rem!important}.app-footer{text-align:center;padding:1rem 1.5rem;font-size:.78rem;color:var(--muted)}.password-input-row{position:relative;display:flex;width:100%}.password-input-row input{flex:1;min-width:0;padding-right:2.5rem}.password-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:transparent;color:var(--muted);width:32px;height:32px;padding:0;border-radius:6px}.password-toggle:hover{background:var(--card-alt);color:var(--text)}.login-banner-side{position:relative;overflow:hidden;background:var(--sidebar-bg)}.login-banner-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.login-banner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;background:linear-gradient(180deg,#0b142d26,#0b142dbf);padding:3rem}.login-banner-copy{max-width:480px;color:#fff}.login-banner-copy h2{margin:0 0 .6rem;font-size:1.8rem;line-height:1.25}.login-banner-copy p{margin:0;color:#ffffffd9;font-size:.98rem;line-height:1.5}@media (max-width: 900px){.login-split{grid-template-columns:1fr}.login-banner-side{display:none}}.app-shell{display:flex;min-height:100vh}.sidebar-backdrop{display:none}.sidebar{width:230px;flex-shrink:0;background:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;padding:1.25rem 0;position:sticky;top:0;height:100vh;overflow-y:auto;transition:width .15s ease}.sidebar .brand{font-weight:700;font-size:1.15rem;letter-spacing:.02em;color:#fff;padding:0 1.25rem 1.25rem;white-space:nowrap}.brand-short{display:none}.brand-logo-full{max-width:100%;max-height:40px;width:auto;height:auto}.brand-logo-icon{width:36px;height:36px;object-fit:contain;border-radius:8px}.sidebar nav{display:flex;flex-direction:column;gap:.15rem;flex:1}.sidebar nav a{display:flex;align-items:center;gap:.75rem;padding:.7rem 1.25rem;color:var(--sidebar-text);text-decoration:none;font-weight:500;font-size:.92rem;border-left:3px solid transparent;transition:background .12s ease,color .12s ease;white-space:nowrap;position:relative}.sidebar nav a:hover{background:#ffffff0f;color:#fff}.sidebar nav a.active{background:#5b8def2e;color:#fff;border-left-color:var(--accent)}.nav-icon{flex-shrink:0}.nav-label{overflow:hidden;text-overflow:ellipsis}.sidebar-collapse-toggle{display:flex;align-items:center;gap:.75rem;background:transparent;color:var(--sidebar-text);border:none;border-top:1px solid rgba(255,255,255,.08);padding:.85rem 1.25rem;margin-top:.5rem;font-size:.85rem;font-weight:600;white-space:nowrap}.sidebar-collapse-toggle:hover{background:#ffffff0f;color:#fff}.collapse-icon{flex-shrink:0;transition:transform .15s ease}.app-shell.sidebar-collapsed .sidebar{width:68px}.app-shell.sidebar-collapsed .brand{padding:0 0 1.25rem;display:flex;justify-content:center}.app-shell.sidebar-collapsed .brand-full{display:none}.app-shell.sidebar-collapsed .brand-short{display:block}.app-shell.sidebar-collapsed .nav-label{display:none}.app-shell.sidebar-collapsed .sidebar nav a{justify-content:center;padding:.75rem 0}.app-shell.sidebar-collapsed .sidebar-collapse-toggle{justify-content:center;padding:.85rem 0}.app-shell.sidebar-collapsed .collapse-icon{transform:rotate(180deg)}.sidebar-tooltip{position:fixed;transform:translateY(-50%);background:var(--card);color:var(--text);border:1px solid var(--border);padding:.4rem .7rem;border-radius:6px;font-size:.8rem;font-weight:600;white-space:nowrap;box-shadow:var(--shadow-md);z-index:60;pointer-events:none}.main-col{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:15}.topbar-right{display:flex;align-items:center;gap:.5rem;margin-left:auto}.icon-btn{background:transparent;color:var(--text);border:1px solid transparent;border-radius:8px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;padding:0;font-size:1.1rem}.icon-btn:hover{background:var(--card-alt)}.hamburger{display:none;flex-direction:column;gap:4px}.hamburger span{display:block;width:18px;height:2px;background:var(--text);border-radius:2px}.theme-toggle{font-size:1.05rem}.impersonation-badge{background:var(--pending-bg);color:var(--pending);border:1px solid var(--pending);border-radius:999px;padding:.4rem .9rem;font-size:.78rem;font-weight:700;white-space:nowrap}.impersonation-badge:hover{background:var(--pending);color:#fff}.profile-menu{position:relative;display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:600;padding:.3rem .5rem;border-radius:999px}.profile-menu:hover{background:var(--card-alt)}.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0}.profile-dropdown{position:absolute;top:44px;right:0;background:var(--card);border:1px solid var(--border);border-radius:10px;min-width:180px;box-shadow:var(--shadow-md);display:flex;flex-direction:column;overflow:hidden;z-index:20}.profile-dropdown a,.profile-dropdown button{padding:.65rem .95rem;text-align:left;background:none;color:var(--text);border:none;border-radius:0;font-weight:500;text-decoration:none;font-size:.88rem}.profile-dropdown a:hover,.profile-dropdown button:hover{background:var(--card-alt)}.row-actions-trigger{font-size:1.1rem;line-height:1;font-weight:700;color:var(--muted);background:transparent}.row-actions-trigger:hover{background:var(--card-alt);color:var(--text)}.row-actions-dropdown{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:8px;min-width:150px;box-shadow:var(--shadow-md);display:flex;flex-direction:column;overflow:hidden;z-index:25;animation:fadeIn .1s ease}.row-actions-dropdown button{padding:.6rem .9rem;text-align:left;background:none;color:var(--text);border:none;border-radius:0;font-weight:500;font-size:.85rem;width:100%}.row-actions-dropdown button:hover{background:var(--card-alt)}.row-actions-dropdown button.danger{color:var(--err);background:none}.row-actions-dropdown button.danger:hover{background:var(--err-bg)}.content{flex:1;padding:1.75rem 2rem 3rem;max-width:1200px;width:100%;margin:0 auto}.main-col>.app-footer{position:sticky;bottom:0;background:var(--card);border-top:1px solid var(--border);padding:.75rem 1.5rem;z-index:15}h1{margin-top:0;font-size:1.4rem}h2{font-size:1.1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1.75rem;margin-bottom:1.5rem;box-shadow:var(--shadow-sm)}.muted{color:var(--muted)}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.page-header h1{margin:0}.upload-form{display:flex;flex-direction:column;gap:1rem;max-width:420px}.field{display:flex;flex-direction:column;gap:.35rem}.field.inline{flex-direction:column}.field input,.field select{padding:.55rem .7rem;border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:.9rem;background:var(--card);color:var(--text)}.field input:disabled,.field select:disabled{background:var(--card-alt);color:var(--muted);cursor:not-allowed}.field input:focus,.field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #5b8def2e}button{cursor:pointer;border:none;border-radius:8px;padding:.55rem 1rem;background:var(--button-bg);color:#fff;font-weight:600;font-size:.85rem;transition:background .12s ease,transform .05s ease}button:hover{background:var(--button-hover-bg)}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed;transform:none}button.danger{background:var(--err)}button.danger:hover{background:#c23333}button.secondary{background:var(--card-alt);color:var(--secondary);border:1px solid var(--secondary)}button.secondary:hover{background:var(--secondary);color:#fff}.banner{margin-top:1rem;padding:.75rem 1rem;border-radius:8px;font-size:.9rem}.banner.success{background:var(--ok-bg);color:var(--ok)}.banner.error{background:var(--err-bg);color:var(--err)}.table-wrap{overflow-x:auto;border-radius:8px;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;margin-top:1rem;font-size:.9rem}thead th{position:sticky;top:0;background:var(--card-alt);z-index:1}th,td{text-align:left;padding:.65rem .85rem;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}tbody tr:hover{background:var(--card-alt)}.error-cell{white-space:normal;max-width:240px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:.85rem}.pill{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.72rem;font-weight:700;margin-right:.35rem;text-transform:capitalize}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.err{background:var(--err-bg);color:var(--err)}.pill.pending{background:var(--pending-bg);color:var(--pending)}.actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.actions a{color:var(--accent);font-weight:600;text-decoration:none}.actions a:hover{text-decoration:underline}.actions button{padding:.4rem .7rem;font-size:.8rem}td.actions{flex-wrap:nowrap}.filter-row{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap}.pagination{display:flex;align-items:center;gap:1rem;margin-top:1rem;flex-wrap:wrap}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin:1rem 0}.detail-grid strong{display:block;font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.25rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--card);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.25rem;box-shadow:var(--shadow-sm)}.stat-card.ok{border-left-color:var(--ok)}.stat-card.err{border-left-color:var(--err)}.stat-card.pending{border-left-color:var(--pending)}.stat-value{font-size:1.9rem;font-weight:700}.stat-label{color:var(--muted);font-size:.85rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0d1480;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem;animation:fadeIn .12s ease}.modal{background:var(--card);border-radius:var(--radius);padding:1.75rem;width:100%;max-width:440px;display:flex;flex-direction:column;gap:1rem;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:slideUp .15s ease}.modal h2{margin:0}.confirm-modal{max-width:400px}.confirm-modal-message{margin:0;color:var(--muted);line-height:1.5}.confirm-modal-danger h2{color:var(--err)}.modal-wide{max-width:640px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.palette-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem}.palette-field{display:flex;flex-direction:column;gap:.3rem}.palette-input-row{display:flex;align-items:center;gap:.5rem}.palette-input-row input[type=color]{width:44px;height:38px;padding:2px;border:1px solid var(--border);border-radius:6px;background:var(--card);cursor:pointer}.palette-hex-input{flex:1;font-family:ui-monospace,Consolas,monospace;text-transform:uppercase}.palette-hint{font-size:.78rem}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem;position:sticky;bottom:0;background:var(--card);padding-top:.25rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.checkbox-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem}.checkbox-row{display:flex;align-items:center;gap:.5rem;font-weight:500;font-size:.88rem}.result-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:2.5rem 2rem;max-width:520px;margin:1.5rem auto 0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem}.result-card h1{margin:.25rem 0 0}.result-card-wide{max-width:720px}.result-icon{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700}.result-icon.result-ok{background:var(--ok-bg);color:var(--ok)}.result-icon.result-err{background:var(--err-bg);color:var(--err)}.result-icon.result-pending{background:var(--pending-bg);color:var(--pending)}.result-meta{width:100%;display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;text-align:left;background:var(--card-alt);border:1px solid var(--border);border-radius:8px;padding:1.1rem 1.25rem;margin:.5rem 0}.result-meta strong{display:block;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.2rem}.result-actions{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;margin-top:.5rem;width:100%}@media (max-width: 900px){.hamburger{display:flex}.sidebar{position:fixed;left:0;top:0;height:100vh;transform:translate(-100%);transition:transform .2s ease;z-index:40;box-shadow:var(--shadow-lg)}.app-shell.sidebar-open .sidebar{transform:translate(0)}.app-shell.sidebar-open .sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0d1473;z-index:35}.content{padding:1.25rem 1rem 2.5rem}.card{padding:1.15rem 1.25rem}.profile-name{display:none}.app-shell.sidebar-collapsed .sidebar{width:230px}.app-shell.sidebar-collapsed .brand{padding:0 1.25rem 1.25rem;justify-content:flex-start}.app-shell.sidebar-collapsed .brand-full{display:block}.app-shell.sidebar-collapsed .brand-short{display:none}.app-shell.sidebar-collapsed .nav-label{display:inline}.app-shell.sidebar-collapsed .sidebar nav a{justify-content:flex-start;padding:.7rem 1.25rem}.sidebar-collapse-toggle{display:none}}@media (max-width: 640px){.login-card{padding:1.75rem}.page-header{flex-direction:column;align-items:stretch}.page-header button{align-self:flex-start}.stat-grid{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:1fr 1fr}.checkbox-grid,.field-grid{grid-template-columns:1fr}.modal{padding:1.25rem;max-width:100%}th,td{padding:.5rem .6rem;font-size:.82rem}.topbar{padding:.65rem 1rem}.impersonation-badge-full{display:none}.impersonation-badge{padding:.35rem .65rem;font-size:.72rem}.result-card{padding:1.75rem 1.25rem}.result-meta{grid-template-columns:1fr}.result-actions{flex-direction:column}.result-actions button{width:100%}}@media (max-width: 420px){.stat-grid,.detail-grid{grid-template-columns:1fr}}
