html,body,#root{min-height:100%;margin:0;padding:0}.login-shell{min-height:100vh;padding:max(2rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(2rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));background:radial-gradient(circle at top right, color-mix(in srgb, var(--accent) 18%, transparent), transparent 45%), var(--bg);place-items:center;display:grid}.login-card{border:1px solid var(--border);background:var(--surface);width:min(100%,28rem);box-shadow:0 18px 48px color-mix(in srgb, var(--text) 8%, transparent);border-radius:1rem;padding:2rem}.login-brand h1{margin:.25rem 0 .5rem;font-size:1.6rem}.login-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.8rem}.login-subtitle{color:var(--muted);margin:0}.login-form{gap:.9rem;margin-top:1.25rem;display:grid}.login-form label{gap:.35rem;font-size:.9rem;display:grid}.login-submit{width:100%;margin-top:.25rem}.login-azure-btn{border:1px solid var(--border);color:#1f1f1f;cursor:pointer;background:#fff;border-radius:.65rem;justify-content:center;align-items:center;gap:.65rem;width:100%;margin-top:1.25rem;padding:.75rem 1rem;font-weight:600;display:inline-flex}.login-azure-icon{color:#fff;background:linear-gradient(135deg,#f35325,#81bc06,#05a6f0,#ffba08);border-radius:.2rem;place-items:center;width:1.35rem;height:1.35rem;font-size:.62rem;font-weight:700;display:inline-grid}.login-divider{color:var(--muted);grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;margin:1rem 0 .25rem;font-size:.85rem;display:grid}.login-divider:before,.login-divider:after{content:"";background:var(--border);height:1px}.login-error{color:var(--danger,#c0392b);margin:0;font-size:.9rem}.login-demo-hint{border-top:1px solid var(--border);color:var(--muted);margin-top:1.5rem;padding-top:1rem;font-size:.82rem}.login-demo-hint ul{gap:.35rem;margin:.5rem 0 0;padding:0;list-style:none;display:grid}.login-demo-hint li{gap:.1rem;display:grid}.login-demo-link{width:fit-content;color:var(--accent);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-weight:600}.login-demo-link:hover{text-decoration:underline}.login-install-row{justify-content:center;margin-top:1.25rem;display:flex}.pwa-install-btn{border:1px solid var(--border);background:var(--panel-2,transparent);color:var(--accent);font:inherit;cursor:pointer;border-radius:.65rem;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1.1rem;font-weight:600;display:inline-flex}.pwa-install-btn:hover{border-color:var(--accent)}.login-browser-wait{border:1px solid var(--border);background:color-mix(in srgb, var(--accent) 8%, transparent);border-radius:.75rem;gap:.35rem;margin-top:1.25rem;padding:1rem 1.1rem;display:grid}.login-browser-wait-title{margin:0;font-weight:700}.login-browser-wait-body{color:var(--muted);margin:0 0 .5rem;font-size:.9rem}html[data-theme=light],html:not([data-theme]){--bg:#f4f5f8;--panel:#fff;--panel-2:#f0f2f6;--border:#d8dce6;--text:#1a1d26;--muted:#5c6478;--accent:#2563eb;--accent-dim:#dbeafe;--ok:#15803d;--warn:#b45309;--err:#b91c1c;--chip:#e8ecf4;--overlay:#0f172a73;--primary-fg:#fff}html[data-theme=dark]{--bg:#0f1115;--panel:#161922;--panel-2:#1d212c;--border:#2a2f3d;--text:#e6e8ee;--muted:#8a91a3;--accent:#4ea1ff;--accent-dim:#2a4d7a;--ok:#4ade80;--warn:#fbbf24;--err:#f87171;--chip:#232838;--overlay:#000000b3;--primary-fg:#0a0d14}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,SF Pro Text,Helvetica,sans-serif;font-size:13px;line-height:1.5}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{--sidebar-width:240px;--sidebar-width-collapsed:68px;min-height:100vh;display:flex}.app-shell.sidebar-collapsed{--sidebar-width:var(--sidebar-width-collapsed)}.sidebar-backdrop{z-index:90;background:var(--overlay);display:none;position:fixed;inset:0}.sidebar-backdrop.visible{display:block}.app-sidebar{width:var(--sidebar-width);background:var(--panel);border-right:1px solid var(--border);z-index:100;flex-direction:column;flex-shrink:0;padding:0;transition:width .2s,transform .2s;display:flex;overflow:hidden}.sidebar-top{border-bottom:1px solid var(--border);flex-shrink:0;align-items:flex-start;gap:6px;padding:14px 10px 14px 12px;display:flex}.sidebar-brand{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.sidebar-brand-logo{background:linear-gradient(135deg, var(--accent-dim), var(--accent));width:40px;height:40px;color:var(--primary-fg);letter-spacing:.04em;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.sidebar-brand-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.sidebar-brand-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.sidebar-brand-sub{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.sidebar-toggle{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-top:4px;padding:0;transition:color .15s,background .15s;display:inline-flex}.sidebar-toggle:hover{color:var(--text);background:var(--panel-2)}.app-sidebar.collapsed .sidebar-top{flex-direction:column;align-items:center;gap:8px;padding:12px 8px}.app-sidebar.collapsed .sidebar-brand{flex:none;justify-content:center}.app-sidebar.collapsed .sidebar-toggle{margin-top:0}.sidebar-nav{flex-direction:column;flex:1;gap:2px;min-height:0;padding:12px 10px 0;display:flex;overflow-y:auto}.sidebar-footer{border-top:1px solid var(--border);flex-shrink:0;margin-top:auto;padding:10px}.sidebar-sign-out{color:var(--muted)}.sidebar-sign-out:hover{color:var(--err);background:#f8717114}html[data-theme=light] .sidebar-sign-out:hover,html:not([data-theme]) .sidebar-sign-out:hover{background:#b91c1c14}.sidebar-nav-icon{flex-shrink:0}.sidebar-sign-out .sidebar-nav-icon{opacity:.85}.app-sidebar.collapsed .sidebar-sign-out{justify-content:center}.app-sidebar.collapsed .sidebar-sign-out .sidebar-nav-icon{margin:0}.sidebar-nav-item{text-align:left;width:100%;color:var(--muted);background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;font-weight:500;display:flex}.sidebar-sign-out .sidebar-nav-label{font-weight:500}.app-sidebar.collapsed .sidebar-nav-item{justify-content:center;padding:10px 8px}.sidebar-nav-label.hidden{display:none}.sidebar-nav-abbr{text-align:center;width:1.25rem;font-size:12px;font-weight:700}.sidebar-nav-item:hover{color:var(--text);background:var(--panel-2)}.sidebar-nav-item.active{color:var(--text);background:var(--accent-dim);font-weight:600}html[data-theme=light] .sidebar-nav-item.active,html:not([data-theme]) .sidebar-nav-item.active{color:var(--accent)}.app-main-column{flex-direction:column;flex:1;min-width:0;display:flex}.app-header{border-bottom:1px solid var(--border);background:var(--panel);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:0 16px;display:flex}.mobile-menu-btn{flex-shrink:0;display:none}.header-right{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:10px;margin-left:auto;display:flex}.header-sync{color:var(--muted);white-space:nowrap;padding-right:4px;font-size:11px;display:none}@media (width>=1100px){.header-sync{display:inline}}.icon-btn{background:var(--panel-2);border:1px solid var(--border);width:36px;height:36px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.messages-btn{position:relative}.message-badge{background:var(--err);color:#fff;text-align:center;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:700;line-height:18px;position:absolute;top:-4px;right:-4px}.user-switcher{flex-direction:column;align-items:flex-end;gap:2px;margin-left:8px;display:flex}.user-display-name{color:var(--text);font-size:12px;font-weight:600}.user-select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;max-width:160px;padding:6px 10px;font-family:inherit;font-size:12px}.user-role{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:10px}.theme-toggle{display:none}.role-dashboard{margin-bottom:32px}.dashboard-hero h2{font-size:26px}.dashboard-stats{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:28px;padding:20px 22px}.dashboard-stat-hero{border-bottom:1px solid var(--border);align-items:baseline;gap:10px;margin-bottom:18px;padding-bottom:18px;display:flex}.dashboard-stat-hero-value{letter-spacing:-.02em;color:var(--text);font-size:36px;font-weight:700;line-height:1}.dashboard-stat-hero-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:15px;font-weight:600}.dashboard-stat-hero-detail{width:100%;color:var(--text);text-transform:none;letter-spacing:normal;margin-top:4px;font-size:13px;font-weight:500;display:block}.dashboard-stat-hero:has(.dashboard-stat-hero-detail){flex-wrap:wrap;align-items:baseline}.dashboard-stat-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.dashboard-stat-badge{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:4px;min-width:0;padding:14px 16px;display:flex}.dashboard-stat-badge-value{color:var(--accent);font-size:22px;font-weight:700;line-height:1.1}html[data-theme=dark] .dashboard-stat-badge-value{color:var(--text)}.dashboard-stat-badge-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px;font-weight:600}.dashboard-stat-badge-detail{color:var(--muted);margin-top:2px;font-size:10px;line-height:1.35}.dashboard-stat-note{color:var(--muted);align-items:center;gap:8px;margin:14px 0 0;font-size:12px;display:flex}.dashboard-stat-pill{min-width:22px;height:22px;color:var(--warn);background:#fbbf2433;border-radius:11px;justify-content:center;align-items:center;padding:0 7px;font-size:11px;font-weight:700;display:inline-flex}.dashboard-insights{border-top:1px solid var(--border);margin-top:18px;padding-top:16px}.dashboard-insights-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:10px;font-size:11px;font-weight:600}.dashboard-insights-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.dashboard-insights-list li{color:var(--text);grid-template-columns:120px 1fr;gap:12px;font-size:12px;line-height:1.45;display:grid}@media (width<=599px){.dashboard-insights-list li{grid-template-columns:1fr;gap:2px}}.dashboard-insight-label{color:var(--muted);font-weight:500}.dashboard-insight-action .dashboard-insight-label{color:var(--warn)}.dashboard-quick-links{border-top:1px solid var(--border);flex-wrap:wrap;gap:10px;margin-top:16px;padding-top:14px;display:flex}.dashboard-quick-link{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 14px;font-size:12px;font-weight:500}.dashboard-quick-link:hover{border-color:var(--accent)}.dashboard-quick-link.primary{background:var(--accent);color:var(--primary-fg);border-color:var(--accent)}.dashboard-client-preview{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.dashboard-client-list{flex-direction:column;gap:6px;margin:0 0 10px;padding:0;list-style:none;display:flex}.dashboard-client-row{text-align:left;background:var(--panel-2);border:1px solid var(--border);cursor:pointer;border-radius:6px;flex-direction:column;gap:2px;width:100%;padding:10px 12px;display:flex}.dashboard-client-row:hover:not(:disabled){border-color:var(--accent)}.dashboard-client-row:disabled{cursor:default;opacity:.85}.dashboard-client-name{color:var(--text);font-size:13px;font-weight:600}.dashboard-client-meta{color:var(--muted);font-size:11px}.dashboard-file-section{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.dashboard-empty-files{color:var(--muted);margin:0;padding:8px 0;font-size:13px}.dashboard-file-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.dashboard-file-item{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.dashboard-file-item.dashboard-file-fail{border-color:#f8717159}.dashboard-file-item.dashboard-file-pending{border-color:#fbbf2459}.dashboard-file-item-main{flex:1;min-width:0}.dashboard-file-item-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.dashboard-file-name{color:var(--text);word-break:break-all;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:13px;font-weight:600}.dashboard-file-client{color:var(--accent);margin-bottom:2px;font-size:11px;font-weight:500}.dashboard-file-meta{color:var(--muted);font-size:11px;line-height:1.4}.dashboard-file-followup{border-radius:4px;margin-top:8px;padding:8px 10px;font-size:12px;line-height:1.4}.dashboard-file-followup.followup-error{color:var(--err);background:#f871711a}.dashboard-file-followup.followup-warn{color:var(--warn);background:#fbbf241f}.dashboard-file-followup.followup-info{background:var(--chip);color:var(--muted)}html[data-theme=light] .dashboard-file-followup.followup-error,html:not([data-theme]) .dashboard-file-followup.followup-error{background:#b91c1c14}.dashboard-file-item-actions{flex-shrink:0}.dashboard-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.dashboard-card{text-align:left;background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:column;gap:8px;padding:22px 20px;transition:border-color .15s,transform .15s,box-shadow .15s;display:flex}.dashboard-card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}html[data-theme=dark] .dashboard-card:hover{box-shadow:0 4px 16px #00000059}.dashboard-card-label{color:var(--text);font-size:17px;font-weight:600}.dashboard-card-desc{color:var(--muted);font-size:12px;line-height:1.45}.messages-drawer-overlay{z-index:200;background:var(--overlay);justify-content:flex-end;display:flex;position:fixed;inset:0}.messages-drawer{background:var(--panel);border-left:1px solid var(--border);flex-direction:column;width:min(400px,100vw);height:100%;display:flex;box-shadow:-8px 0 24px #0000001f}.messages-drawer-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.messages-drawer-head h3{margin:0;font-size:15px;font-weight:600}.messages-drawer-body{flex:1;padding:8px;overflow-y:auto}.message-item{text-align:left;border:1px solid var(--border);background:var(--panel-2);cursor:pointer;border-radius:6px;width:100%;margin-bottom:8px;padding:12px 14px;display:block}.message-item:disabled{cursor:default;opacity:.85}.message-item:not(:disabled):hover{border-color:var(--accent)}.message-item-top{text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;margin-bottom:6px;font-size:10px;display:flex}.message-kind{color:var(--accent);font-weight:600}.message-when{color:var(--muted)}.message-title{margin-bottom:4px;font-size:13px;font-weight:600}.message-body{color:var(--muted);font-size:12px;line-height:1.4}.message-approval .message-kind{color:var(--warn)}.hub-placeholder .empty-state{padding:48px 24px}.audit-filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.audit-filter-btn{background:var(--panel);border:1px solid var(--border);color:var(--muted);border-radius:6px;align-items:center;gap:8px;padding:8px 14px;font-size:12px;font-weight:500;display:inline-flex}.audit-filter-btn:hover{border-color:var(--accent);color:var(--text)}.audit-filter-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--text)}.audit-filter-count{background:var(--chip);color:var(--muted);border-radius:8px;padding:1px 6px;font-size:10px}.audit-panel .panel-body{max-height:70vh;overflow-y:auto}.audit-timeline{margin:0;padding:0;list-style:none}.audit-row{border-bottom:1px solid var(--border);padding:14px 18px}.audit-row:last-child{border-bottom:none}.audit-row.audit-error{background:#f871710a}html[data-theme=light] .audit-row.audit-error,html:not([data-theme]) .audit-row.audit-error{background:#b91c1c0a}.audit-row-badges{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.audit-cat{text-transform:uppercase;letter-spacing:.05em;background:var(--chip);border:1px solid var(--border);color:var(--muted);border-radius:3px;padding:2px 8px;font-size:10px;font-weight:700}.audit-cat-entity{color:var(--accent);border-color:var(--accent-dim)}.audit-cat-user{color:var(--ok)}.audit-cat-system{color:var(--warn)}.audit-event-type{color:var(--muted);font-size:11px;font-weight:500}.audit-summary{color:var(--text);margin-bottom:4px;font-size:13px;font-weight:600}.audit-detail{color:var(--muted);margin-bottom:6px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;line-height:1.4}.audit-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;font-size:11px;display:flex}.audit-meta-sep{opacity:.5}.banner-error{color:var(--err);margin-bottom:16px}.app-main{box-sizing:border-box;flex:1;width:100%;max-width:1400px;margin:0 auto;padding:16px}@media (width>=768px){.app-main{padding:24px}}@media (width<=899px){.app-sidebar{width:min(280px,85vw);height:100vh;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:8px 0 24px #00000026}.app-sidebar.mobile-open{transform:translate(0)}.app-sidebar.collapsed{width:min(280px,85vw)}.app-shell.sidebar-collapsed{--sidebar-width:0}.app-sidebar .sidebar-toggle{display:none}.mobile-menu-btn{display:inline-flex}}@media (width>=900px){.sidebar-backdrop.visible{display:none!important}}@media (width<=599px){.header-sync{display:none!important}.user-role{display:none}.user-select{max-width:130px}.page-title{flex-direction:column;gap:12px;align-items:flex-start!important}.tile-grid,.dashboard-grid{grid-template-columns:1fr}.dashboard-stat-grid{grid-template-columns:repeat(2,1fr)}.dashboard-stat-hero-value{font-size:28px}.mapping-grid,.rules-grid{grid-template-columns:1fr}.breadcrumb{font-size:12px}}.breadcrumb{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:24px;font-size:13px;display:flex}.breadcrumb a{color:var(--accent);cursor:pointer;border-radius:3px;padding:4px 10px;text-decoration:none;transition:background .1s}.breadcrumb a:hover{background:var(--panel-2)}.breadcrumb .sep{color:var(--muted)}.breadcrumb .current{color:var(--text);padding:4px 10px;font-weight:500}.page-title{justify-content:space-between;align-items:baseline;margin-bottom:20px;display:flex}.page-title h2{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.page-title .subtitle{color:var(--muted);margin-top:4px;font-size:13px}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-bottom:24px;display:grid}.tile{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:24px 20px;transition:all .15s;position:relative}.tile:hover{border-color:var(--accent);background:var(--panel-2);transform:translateY(-1px)}.tile .tile-badge{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:10px;font-size:10px;font-weight:600}.tile .tile-name{margin-bottom:4px;font-size:16px;font-weight:600}.tile .tile-meta{color:var(--muted);border-top:1px solid var(--border);margin-top:12px;padding-top:12px;font-size:12px}.tile.add-tile{color:var(--muted);text-align:center;border-style:dashed;justify-content:center;align-items:center;min-height:130px;display:flex}.tile.add-tile:hover{color:var(--accent)}.tile.add-tile .plus{margin-bottom:6px;font-size:24px}.tile-edit-btn{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);cursor:pointer;opacity:0;border-radius:3px;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;line-height:1;transition:opacity .15s;display:flex;position:absolute;top:8px;right:8px}.tile:hover .tile-edit-btn{opacity:1}.tile-edit-btn:hover{color:var(--text);border-color:var(--accent)}button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;padding:8px 16px;font-family:inherit;font-size:12px;font-weight:500;transition:all .1s}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:var(--primary-fg);border-color:var(--accent)}button.primary:hover{filter:brightness(1.1)}button.danger{color:var(--err);border-color:#f871714d}button.danger:hover{border-color:var(--err);background:#f871711a}button:disabled{opacity:.4;cursor:not-allowed}.theme-toggle{min-width:88px;padding:8px 12px;font-size:12px}.modal-overlay{background:var(--overlay);z-index:100;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--panel);border:1px solid var(--border);border-radius:6px;flex-direction:column;width:100%;max-width:960px;max-height:90vh;display:flex;overflow:hidden}.modal-head{border-bottom:1px solid var(--border);background:var(--panel-2);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.modal-head h3{margin:0;font-size:15px;font-weight:600}.modal-head .close-x{cursor:pointer;color:var(--muted);padding:2px 8px;font-size:18px}.modal-head .close-x:hover{color:var(--err)}.modal-body{flex:1;padding:24px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border);background:var(--panel-2);justify-content:space-between;align-items:center;gap:10px;padding:14px 24px;display:flex}.modal label.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.modal input.text-field,.modal select.text-field{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);border-radius:4px;padding:12px 14px;font-family:inherit;font-size:14px}.modal input.text-field:focus,.modal select.text-field:focus{border-color:var(--accent);outline:none}.step-indicator{color:var(--muted);gap:8px;font-size:12px;display:flex}.step-indicator span{background:var(--panel);border:1px solid var(--border);border-radius:3px;padding:3px 10px}.step-indicator span.active{background:var(--accent-dim);color:var(--text);border-color:var(--accent)}.step-indicator span.done{color:var(--ok);border-color:var(--ok)}.dropzone{box-sizing:border-box;border:2px dashed var(--border);text-align:center;background:var(--panel-2);cursor:pointer;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:120px;padding:60px 24px;transition:all .15s;display:flex}.dropzone.hover{border-color:var(--accent);background:var(--accent-dim)}.dropzone p{max-width:100%;margin:6px 0}.dropzone .big{font-size:15px;font-weight:500}.dropzone .small{color:var(--muted);font-size:12px}.dropzone input{display:none}.upload-validation-hint{border-top:1px solid var(--border);color:var(--muted);margin:14px 0 0;padding-top:14px;font-size:12px;line-height:1.5}.upload-validation-hint .link-btn{vertical-align:baseline;padding:0;font-size:12px}.validation-rules-overlay{z-index:110}.validation-rules-modal{max-width:720px}.validation-rules-intro{color:var(--muted);margin:0 0 16px;font-size:13px;line-height:1.45}.mapping-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.mapping-panel{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;overflow:hidden}.mapping-panel-header{border-bottom:1px solid var(--border);background:var(--panel);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);justify-content:space-between;padding:10px 14px;font-size:11px;font-weight:600;display:flex}.mapping-panel-body{max-height:50vh;padding:10px;overflow-y:auto}.header-chip{background:var(--chip);border:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:8px 12px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;display:flex}.header-chip:hover{border-color:var(--accent)}.header-chip.dragging{opacity:.4}.header-chip.mapped{opacity:.45;border-style:dashed}.header-chip .sample{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:180px;margin-left:8px;font-size:11px;overflow:hidden}.slot{border:1px dashed var(--border);background:var(--panel);border-radius:4px;margin-bottom:8px;padding:10px 12px;transition:all .15s}.slot.drag-over{border-color:var(--accent);background:var(--accent-dim)}.slot.filled{border-style:solid;border-color:var(--accent)}.slot .slot-label{margin-bottom:2px;font-size:12px;font-weight:600}.slot .slot-label .required{color:var(--err);margin-left:4px}.slot .slot-hint{color:var(--muted);font-size:11px;font-style:italic}.slot .slot-value{background:var(--bg);border:1px solid var(--border);border-radius:3px;justify-content:space-between;align-items:center;margin-top:6px;padding:6px 10px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;display:flex}.slot .clear{cursor:pointer;color:var(--muted);padding:0 4px}.slot .clear:hover{color:var(--err)}.validation-table{border-collapse:collapse;width:100%;font-size:12px}.validation-table th,.validation-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 14px}.validation-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;background:var(--panel-2);font-size:11px;font-weight:600}.badge{text-transform:uppercase;border-radius:3px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge.pass{color:var(--ok);background:#4ade8026}.badge.fail{color:var(--err);background:#f8717126}.badge.warn{color:var(--warn);background:#fbbf2426}.badge.pending{color:var(--warn);background:#fbbf2433}.check-detail{color:var(--muted);font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:11px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:6px;margin-bottom:20px;overflow:hidden}.panel-header{border-bottom:1px solid var(--border);background:var(--panel-2);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);justify-content:space-between;align-items:center;padding:12px 16px;font-size:12px;font-weight:600;display:flex}.panel-body{padding:16px}.empty-state{text-align:center;color:var(--muted);padding:40px 20px}.file-row{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:10px 12px;font-size:12px;display:flex}.file-row .file-name{font-family:ui-monospace,SF Mono,Consolas,monospace}.file-row .file-meta{color:var(--muted);font-size:11px}.file-row .file-status{align-items:center;gap:6px;display:flex}.file-row .file-status .badge{font-size:10px}.history-row{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;margin-bottom:6px;overflow:hidden}.history-row-main{justify-content:space-between;align-items:center;padding:10px 12px;font-size:12px;display:flex}.history-row .file-name{font-family:ui-monospace,SF Mono,Consolas,monospace}.history-row .file-meta{color:var(--muted);margin-top:2px;font-size:11px}.history-row .file-status{align-items:center;gap:6px;display:flex}.history-row .file-status .badge{font-size:10px}.history-row-detail{background:var(--bg);border-top:1px solid var(--border);padding:12px 16px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:11px}.mapping-line{grid-template-columns:160px 24px 1fr;padding:3px 0;display:grid}.mapping-line .mk{color:var(--text);font-weight:600}.mapping-line .ma{color:var(--muted)}.mapping-line .mv{color:var(--accent)}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:4px 8px;font-family:inherit;font-size:11px}.link-btn:hover{background:var(--panel)}.rules-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.rule-card{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:12px 14px;font-size:12px}.rule-card .rule-name{margin-bottom:4px;font-weight:600}.rule-card .rule-desc{color:var(--muted);font-size:11px}.rule-card .rule-tag{background:var(--chip);border:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-radius:3px;margin-right:6px;padding:1px 6px;font-size:10px;display:inline-block}.inbox-row{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:12px 14px;display:flex}.inbox-row .inbox-info .name{font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;font-weight:600}.inbox-row .inbox-info .meta{color:var(--muted);margin-top:2px;font-size:11px}.inbox-row .inbox-actions{gap:6px;display:flex}.template-row{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;margin-bottom:6px;padding:10px 14px}.template-row .tmpl-head{justify-content:space-between;align-items:center;display:flex}.template-row .tmpl-name{font-size:13px;font-weight:600}.template-row .tmpl-meta{color:var(--muted);margin-top:2px;font-size:11px}.template-row .tmpl-actions{gap:6px;display:flex}.template-row .tmpl-detail{border-top:1px solid var(--border);margin-top:10px;padding-top:10px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:11px;display:none}.template-row.expanded .tmpl-detail{display:block}.template-bar{background:var(--bg);border:1px solid var(--border);border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:14px;padding:10px 14px;font-size:12px;display:flex}.template-bar select{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:3px;padding:4px 8px;font-family:inherit}.pwa-install-overlay{z-index:300;background:var(--overlay);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.pwa-install-dialog{background:var(--panel);border:1px solid var(--border);border-radius:10px;width:100%;max-width:420px;overflow:hidden;box-shadow:0 18px 48px #00000040}.pwa-install-dialog-head{border-bottom:1px solid var(--border);background:var(--panel-2);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.pwa-install-dialog-head h3{color:var(--text);margin:0;font-size:15px;font-weight:600}.pwa-install-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:16px;line-height:1}.pwa-install-close:hover{color:var(--err)}.pwa-install-steps{color:var(--text);flex-direction:column;gap:8px;margin:0;padding:16px 18px 18px 34px;font-size:13px;line-height:1.5;display:flex}@media (display-mode:standalone),(display-mode:minimal-ui){.app-header{padding-top:env(safe-area-inset-top);padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));min-height:calc(56px + env(safe-area-inset-top))}.app-sidebar{padding-top:env(safe-area-inset-top)}.app-main{padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));padding-bottom:max(16px, env(safe-area-inset-bottom))}}@media (display-mode:standalone) and (width>=768px),(display-mode:minimal-ui) and (width>=768px){.app-main{padding-left:max(24px, env(safe-area-inset-left));padding-right:max(24px, env(safe-area-inset-right));padding-bottom:max(24px, env(safe-area-inset-bottom))}}.filesapp{background:var(--bg);min-height:100dvh;color:var(--text);flex-direction:column;display:flex}.filesapp-header{z-index:10;padding:12px 16px;padding-top:max(12px, env(safe-area-inset-top));padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:12px;display:flex;position:sticky;top:0}.filesapp-brand{align-items:center;gap:10px;min-width:0;display:flex}.filesapp-logo{background:#123a72;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex;overflow:hidden}.filesapp-logo img{width:100%;height:100%;display:block}.filesapp-title{flex-direction:column;min-width:0;line-height:1.25;display:flex}.filesapp-title strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.filesapp-title span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.filesapp-header-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.filesapp-main{box-sizing:border-box;width:100%;max-width:720px;padding:16px;padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));padding-bottom:max(24px, env(safe-area-inset-bottom));flex:1;margin:0 auto}.filesapp-scope{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.filesapp-scope label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px;font-weight:600}.filesapp-scope select{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:10px 12px;font-family:inherit;font-size:14px}.filesapp-file{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;display:flex}.filesapp-file-main{flex:1;min-width:0}.filesapp-file-name{word-break:break-all;font-size:13px;font-weight:600}.filesapp-file-meta{color:var(--muted);margin-top:2px;font-size:11px}.filesapp-file-actions{flex-shrink:0;gap:6px;display:flex}.filesapp-error{color:var(--err);margin:0 0 12px;font-size:13px}.filesapp-muted{color:var(--muted)}
