:root{--bg: #f6f7f9;--surface: #ffffff;--border: #e2e5ea;--text: #1a1d23;--text-muted: #666d7a;--primary: #2563eb;--primary-hover: #1d4ed8;--danger: #dc2626;--success: #16a34a;--warning: #d97706;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1);--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 .5rem;line-height:1.25}h1{font-size:1.5rem}h2{font-size:1.15rem}h3{font-size:1rem}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}.sidebar{background:#111827;color:#cbd5e1;padding:1rem .75rem;display:flex;flex-direction:column;gap:1.25rem}.sidebar-brand{color:#fff;font-weight:600;font-size:1rem;padding:.5rem .75rem 0}.sidebar-brand small{display:block;font-weight:400;font-size:.75rem;color:#94a3b8}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-section{margin-top:.75rem;padding:0 .75rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.sidebar-link{display:block;padding:.45rem .75rem;border-radius:6px;color:#cbd5e1;font-size:.875rem}.sidebar-link:hover{background:#1f2937;color:#fff;text-decoration:none}.sidebar-link.active{background:var(--primary);color:#fff}.sidebar-footer{margin-top:auto;padding:.75rem;border-top:1px solid #1f2937;font-size:.8rem}.sidebar-footer .name{color:#fff;font-weight:500}.sidebar-footer .role{color:#94a3b8;font-size:.75rem}.main{display:flex;flex-direction:column;min-width:0}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.content{padding:1.5rem;flex:1;min-width:0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.page-header p{margin:0;color:var(--text-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-body{padding:1.15rem}.card-header{padding:.9rem 1.15rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:.75rem}.card+.card{margin-top:1rem}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.stat{padding:1.15rem}.stat .value{font-size:1.75rem;font-weight:600}.stat .label{color:var(--text-muted);font-size:.8rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.875rem}th,td{padding:.65rem .85rem;text-align:left;border-bottom:1px solid var(--border)}th{font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:#fbfcfd}tbody tr:hover{background:#fafbfc}tbody tr:last-child td{border-bottom:none}td.numeric,th.numeric{text-align:right;font-variant-numeric:tabular-nums}.field{margin-bottom:.9rem}.field label{display:block;margin-bottom:.3rem;font-weight:500;font-size:.8rem}.field .hint{color:var(--text-muted);font-size:.75rem;margin-top:.25rem}.field .error{color:var(--danger);font-size:.75rem;margin-top:.25rem}input[type=text],input[type=email],input[type=password],input[type=date],input[type=search],input[type=url],input[type=file],select,textarea{width:100%;padding:.5rem .65rem;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid rgba(37,99,235,.25);border-color:var(--primary)}input:disabled,select:disabled,textarea:disabled{background:#f3f4f6;color:var(--text-muted)}textarea{min-height:96px;resize:vertical}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;align-items:end}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:#f3f4f6;text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-sm{padding:.3rem .6rem;font-size:.8rem}.btn-link{border:none;background:none;color:var(--primary);padding:0}.btn-row{display:flex;gap:.5rem;flex-wrap:wrap}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:500;color:#fff;white-space:nowrap}.badge-soft{background:#eef2f7;color:var(--text-muted)}.alert{padding:.7rem .9rem;border-radius:6px;margin-bottom:1rem;font-size:.875rem;border:1px solid transparent}.alert-error{background:#fef2f2;color:#991b1b;border-color:#fecaca}.alert-success{background:#f0fdf4;color:#166534;border-color:#bbf7d0}.alert-info{background:#eff6ff;color:#1e40af;border-color:#bfdbfe}.empty{padding:2.5rem 1rem;text-align:center;color:var(--text-muted)}.muted{color:var(--text-muted)}.small{font-size:.8rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 40px #0f172a33}.modal-header{padding:1rem 1.15rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-body{padding:1.15rem}.modal-footer{padding:.9rem 1.15rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:#111827}.auth-card{width:100%;max-width:380px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.15rem;border-top:1px solid var(--border);font-size:.85rem}.timeline{list-style:none;margin:0;padding:0}.timeline li{padding:.6rem 0 .6rem 1rem;border-left:2px solid var(--border);position:relative}.timeline li:before{content:"";position:absolute;left:-5px;top:.95rem;width:8px;height:8px;border-radius:50%;background:var(--primary)}.perm-matrix td:first-child{width:45%}.perm-matrix input[type=checkbox]{width:auto}@media(max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{flex-direction:row;flex-wrap:wrap;align-items:center}.sidebar-nav{flex-direction:row;flex-wrap:wrap}.sidebar-section{display:none}.sidebar-footer{margin:0;border:none}}.items-table td{vertical-align:top}.items-table textarea{width:100%;min-height:3.2rem;resize:vertical;font:inherit}.item-row.item-customer{background:var(--customer-tint, #f0f7ff)}.badge-customer{background:#1d4ed8;color:#fff}.visibility-toggle{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer}.bulk-bar{align-items:center;gap:.5rem;padding:.5rem .75rem;margin-top:.5rem;border:1px solid var(--border, #e2e8f0);border-radius:6px;background:var(--surface-2, #f8fafc)}.skipped-reason{margin-top:.3rem;color:#92400e}.items-table{table-layout:fixed}.doc-preview{padding:1rem 1.25rem;border:1px solid var(--border, #e2e8f0);border-radius:6px;background:var(--surface, #fff)}.doc-title{margin:0}.doc-subtitle{margin-bottom:1rem}.doc-section h4{margin:1rem 0 .35rem}.doc-section ul{margin:0;padding-left:1.2rem}.doc-section li{margin-bottom:.3rem}.hint{color:var(--text-muted);font-size:.75rem}.report{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.report .card+.card{margin-top:0}.report-summary{font-size:.95rem;line-height:1.65;max-width:72ch;margin:.9rem 1.15rem 1.15rem;padding:.9rem 1.1rem;background:#f8fafc;border-left:3px solid var(--primary);border-radius:0 var(--radius) var(--radius) 0}.report-summary p{margin:0 0 .75rem}.report-summary p:last-child{margin-bottom:0}.report .card>.muted.small{padding:.9rem 1.15rem 0;margin:0}.report .alert{margin:.9rem 1.15rem}.kpi-card{border-left:3px solid var(--border)}.kpi-card .stat .value{font-variant-numeric:tabular-nums}.report-list{margin:0;padding:1.15rem;display:flex;flex-direction:column;gap:.5rem;list-style:none}.report-list li{position:relative;padding-left:1.05rem}.report-list li:before{content:"";position:absolute;left:0;top:.48rem;width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.report-list-primary li:before{background:var(--primary)}.report-list-warn li:before{background:var(--warning)}th .dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:.35rem;vertical-align:middle}.report-focus{margin-top:.35rem;font-size:.8rem;font-style:italic;color:var(--text-muted);max-width:48ch}.delta{display:block;margin-top:.3rem;font-size:.72rem;color:var(--text-muted)}tr.row-selected>td{background:#eff6ff}.platform-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem 1.25rem;padding:1.15rem}.platform-facts .label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.2rem}.month-bars{display:grid;grid-template-columns:repeat(12,1fr);gap:.35rem;align-items:end;padding:1.15rem;min-height:170px}.month-bar{display:flex;flex-direction:column;align-items:center;gap:.3rem}.month-bar-track{width:100%;height:92px;display:flex;align-items:flex-end;background:#f4f5f7;border-radius:3px;overflow:hidden}.month-bar-fill{width:100%;background:var(--primary);border-radius:3px 3px 0 0;min-height:2px}.month-bar:hover .month-bar-fill{background:var(--primary-hover)}.month-bar-count{font-size:.7rem;font-weight:600;color:var(--text);min-height:.9rem}.month-bar-label{font-size:.65rem;color:var(--text-muted)}.activity{list-style:none;margin:0;padding:.4rem 0}.activity li{display:grid;grid-template-columns:9.5rem 1fr 9rem;gap:.75rem;padding:.55rem 1.15rem;border-top:1px solid var(--border);align-items:baseline}.activity li:first-child{border-top:none}.activity-when{font-size:.75rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.activity-what{font-size:.85rem}.activity-who{font-size:.75rem;color:var(--text-muted);text-align:right}@media(max-width:720px){.activity li{grid-template-columns:1fr;gap:.15rem}.activity-who{text-align:left}}
