:root{--brand:#ea0a2a;--brand-hover:#c00822;--brand-text:#b00820;--brand-tint:#fef1f3;--brand-line:#f59aa6;--ink:#101820;--text:#0f172a;--muted:#475569;--quiet:#64748b;--line:#e2e8f0;--line-strong:#cbd5e1;--bg:#f8fafc;--surface:#fff;--subtle:#f1f5f9;--ok-bg:#d1fae5;--ok-text:#065f46;--warn-bg:#fef3c7;--warn-text:#92400e;--bad-bg:#fee2e2;--bad-text:#991b1b;--info-bg:#e0f2fe;--info-text:#075985;--radius:10px;--font:"Fira Sans", system-ui, sans-serif;--mono:"Fira Code", ui-monospace, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand-text)}a:hover{color:var(--brand-hover)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}h1{margin:0;font-size:24px;line-height:1.25}h2{margin:0;font-size:17px}h3{margin:0;font-size:15px}.mono{font-family:var(--mono);font-size:13.5px}.muted{color:var(--muted)}.quiet{color:var(--quiet);font-size:13px}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.boot{height:100%;color:var(--muted);place-items:center;display:grid}.boot-error{color:var(--bad-text);padding:24px}.shell{min-height:100%;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:0 0 256px;gap:2px;height:100vh;padding:20px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{flex-direction:column;gap:6px;padding:4px 12px 16px;display:flex}.brand small{letter-spacing:.08em;color:var(--brand-text);font-size:12px;font-weight:700}.usercard{border-radius:var(--radius);background:var(--bg);border:1px solid var(--line);margin:0 4px 10px;padding:10px 12px;font-size:13px}.usercard b{font-size:14px;display:block}.nav-body{flex-direction:column;flex:1;gap:2px;display:flex}.nav-group{flex-direction:column;gap:2px;padding-top:8px;display:flex}.nav-group-title{letter-spacing:.04em;text-transform:uppercase;color:var(--ink);align-items:center;gap:6px;padding:6px 12px 0;font-size:12px;font-weight:700;display:flex}.nav-group-unit{color:var(--quiet);padding:0 12px 2px;font-size:12px}.nav-group.locked{opacity:.6}.nav-group.locked .nav-group-title{color:var(--quiet)}.nav-link{min-height:44px;color:var(--ink);border-radius:8px;align-items:center;gap:8px;padding:0 12px;text-decoration:none;transition:background-color .15s;display:flex}.nav-link:hover{background:var(--brand-tint);color:var(--ink)}.nav-link.active{background:var(--brand-tint);color:var(--brand-text);box-shadow:inset 3px 0 0 var(--brand);font-weight:600}.nav-link.disabled{color:var(--quiet);cursor:not-allowed}.nav-link.disabled:hover{background:0 0}.nav-search{border:1px solid var(--line);background:var(--bg);color:var(--muted);margin:0 4px 6px}.nav-foot{color:var(--quiet);flex-direction:column;gap:8px;margin-top:auto;padding:12px 8px 0;font-size:12px;display:flex}.main{flex-direction:column;flex:auto;gap:18px;min-width:0;padding:24px 28px 48px;display:flex}.pagehead{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.pagehead p{color:var(--muted);margin:4px 0 0}.btn.menu-toggle{display:none}@media (width<=900px){.shell{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--line);flex-basis:auto;height:auto;position:static}.sidebar.collapsed .nav-body{display:none}.btn.menu-toggle{display:inline-flex}.main{padding:16px}.demobar select{width:100%!important}.pagehead h1{font-size:21px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:14px;padding:18px;display:flex}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:12.5px;font-weight:700}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.btn{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;white-space:nowrap;min-height:44px;color:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:hover{background:var(--subtle);color:var(--ink)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--brand-hover);color:#fff}.btn-outline{border-color:var(--brand-line);color:var(--brand-text)}.btn-sm{min-height:36px;padding:0 12px;font-size:14px}.btn-icon{width:40px;min-height:40px;padding:0}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>label,.field>.label{color:var(--ink);font-size:13.5px;font-weight:500}.field .hint{color:var(--quiet);font-size:12.5px}.req:after{content:" *";color:var(--brand-text)}.input,.select,.textarea{border:1px solid var(--line-strong);background:var(--surface);border-radius:8px;width:100%;min-height:44px;padding:0 12px}.textarea{resize:vertical;min-height:80px;padding:10px 12px}.input:hover,.select:hover,.textarea:hover{border-color:#94a3b8}.input.invalid,.select.invalid{border-color:#dc2626;box-shadow:0 0 0 2px #fecaca}.input-suffix{align-items:stretch;display:flex}.input-suffix .input{border-radius:8px 0 0 8px}.input-suffix span{border:1px solid var(--line-strong);background:var(--subtle);color:var(--muted);white-space:nowrap;border-left:none;border-radius:0 8px 8px 0;align-items:center;padding:0 12px;font-size:14px;display:flex}.cell{border:1px solid var(--line-strong);background:var(--surface);border-radius:6px;width:100%;min-height:40px;padding:0 8px}.cell.num{text-align:right}.check{cursor:pointer;align-items:center;gap:8px;min-height:40px;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--brand);cursor:pointer}.seg{border:1px solid var(--line-strong);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{background:var(--surface);cursor:pointer;border:none;min-height:40px;padding:0 14px}.seg button+button{border-left:1px solid var(--line-strong)}.seg button[aria-pressed=true]{background:var(--brand-tint);color:var(--brand-text);font-weight:600}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow-x:auto}table.t{border-collapse:collapse;width:100%;font-size:14px}.t th{background:var(--subtle);text-align:left;color:#334155;white-space:nowrap;padding:9px 10px;font-size:13px;font-weight:600;position:sticky;top:0}.t td{border-top:1px solid var(--line);vertical-align:top;padding:8px 10px}.t tbody tr:hover>td{background:#fcfcfd}.t tr.sel>td{background:var(--brand-tint)}.t tr.sub>td{border-top:1px dashed var(--line);background:#fffbfb}.t .tight{white-space:nowrap;width:1%}.empty{text-align:center;color:var(--muted);padding:28px}.hscroll{scrollbar-width:none;border:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;background:var(--surface);border-bottom:none;overflow-x:auto}.hscroll::-webkit-scrollbar{display:none}.hbar{z-index:5;background:var(--subtle);border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);height:18px;position:sticky;bottom:0;overflow:auto hidden;box-shadow:0 -4px 10px #1018200f}.hbar::-webkit-scrollbar{height:14px}.hbar::-webkit-scrollbar-thumb{border:3px solid var(--subtle);background:#94a3b8;border-radius:8px}.badge{white-space:nowrap;background:var(--subtle);color:#334155;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:12.5px;font-weight:600;display:inline-flex}.badge.ok{background:var(--ok-bg);color:var(--ok-text)}.badge.warn{background:var(--warn-bg);color:var(--warn-text)}.badge.bad{background:var(--bad-bg);color:var(--bad-text)}.badge.info{background:var(--info-bg);color:var(--info-text)}.badge.brand{background:var(--brand-tint);color:var(--brand-text)}.code{font-family:var(--mono);color:var(--ink);white-space:nowrap;font-size:13.5px;font-weight:600}.alert{border-radius:var(--radius);border:1px solid;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.alert ul{margin:4px 0 0;padding-left:18px}.alert.bad{color:var(--bad-text);background:#fef2f2;border-color:#fecaca}.alert.warn{color:var(--warn-text);background:#fffbeb;border-color:#fde68a}.alert.ok{color:var(--ok-text);background:#ecfdf5;border-color:#a7f3d0}.alert.info{color:var(--info-text);background:#f0f9ff;border-color:#bae6fd}.kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.kpi .k{color:var(--muted);font-size:12.5px}.kpi .v{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.kpi .v.small{font-size:16px}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;display:flex}.tabs button{cursor:pointer;min-height:44px;color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;padding:0 14px;font-weight:500}.tabs button[aria-selected=true]{color:var(--brand-text);border-bottom-color:var(--brand);font-weight:600}.tabs .count{background:var(--subtle);border-radius:999px;margin-left:6px;padding:1px 7px;font-size:12px}.panel{position:sticky;top:16px}.split{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:18px;display:grid}@media (width<=1200px){.split{grid-template-columns:1fr}.panel{position:static}}.codeparts{flex-wrap:wrap;align-items:flex-start;gap:6px;display:flex}.codeparts span{background:var(--subtle);border-radius:8px;flex-direction:column;padding:6px 10px;display:flex}.codeparts b{font-family:var(--mono);font-size:15px}.codeparts i{color:var(--quiet);font-size:11.5px;font-style:normal}.sow-cell{resize:none;white-space:nowrap;text-overflow:ellipsis;border:1px solid var(--line-strong);border-radius:6px;width:100%;height:40px;min-height:40px;padding:9px 8px;line-height:1.45;transition:height .15s,box-shadow .15s;display:block;overflow:hidden}.sow-cell:focus{field-sizing:content;white-space:pre-wrap;z-index:2;border-color:var(--brand);height:auto;min-height:120px;position:relative;overflow:auto;box-shadow:0 6px 20px #10182024}.login{background:linear-gradient(180deg, #fff 0%, var(--bg) 100%);place-items:center;min-height:100%;padding:24px 16px;display:grid}.login .card{gap:18px;width:100%;max-width:420px;padding:28px}.toast{z-index:50;max-width:420px;position:fixed;bottom:20px;right:20px}.demobar{border:1px solid var(--brand-line);background:var(--brand-tint);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:10px;margin:-8px 0 0;padding:8px 12px;display:flex}.drawer-backdrop{z-index:60;background:#10182059;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--surface);flex-direction:column;gap:14px;width:min(560px,100%);height:100%;padding:20px;display:flex;overflow-y:auto;box-shadow:-10px 0 30px #1018202e}.steps{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.steps li{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:12px 14px}.steps li.done{background:#f6fef9;border-color:#a7f3d0}.steps p{color:var(--muted);margin:6px 0 10px;font-size:14px}.step-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.step-no{background:var(--brand);color:#fff;border-radius:999px;place-items:center;width:24px;height:24px;font-size:13px;font-weight:700;display:inline-grid}.steps li.done .step-no{background:var(--ok-text)}.welcome{flex-direction:column;gap:22px;max-width:1100px;margin:0 auto;padding:32px 16px 48px;display:flex}.welcome-head{flex-wrap:wrap;align-items:flex-start;gap:20px;display:flex}.welcome-head>div{flex:420px}.welcome-head h1{font-size:26px}.welcome-head p{margin:6px 0 0}.role-cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.role-card{text-align:left;border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:12px;flex-direction:column;align-items:flex-start;gap:4px;min-height:96px;padding:14px 16px;transition:border-color .15s,box-shadow .15s;display:flex}.role-card:hover:not(:disabled){border-color:var(--brand);box-shadow:0 4px 14px #ea0a2a1f}.role-card b{font-size:16px}.role-go{color:var(--brand-text);margin-top:auto;font-size:14px;font-weight:600}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
