:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#070b0b;color:#e7f2ea;font-synthesis:none;text-rendering:geometricPrecision}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 20% 0%,rgba(139,225,89,.16),transparent 28rem),radial-gradient(circle at 84% 8%,rgba(38,213,218,.14),transparent 30rem),linear-gradient(135deg,#050707,#0b1110 52%,#071012)}button,input,select,textarea{font:inherit}button{border:1px solid #2c4646;background:#111b1b;color:#e7f2ea;min-height:38px;border-radius:8px;padding:0 14px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:700}button:hover{border-color:#8bdc58;box-shadow:0 0 0 1px #8bdc582e}button:disabled{opacity:.6;cursor:wait}.primary{background:linear-gradient(135deg,#5fb832,#178d8f);color:#06100d;border-color:#7fe35c;text-shadow:0 1px 0 rgba(255,255,255,.24)}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,#07100ff0,#050808fa),#07100f;color:#e7f2ea;padding:24px 18px;display:flex;flex-direction:column;gap:26px}.brand{display:flex;gap:12px;align-items:center}.brand-emblem{width:42px;height:42px;flex:0 0 auto;object-fit:cover;border:1px solid rgba(139,220,88,.36);border-radius:8px;box-shadow:0 0 24px #5bb8342e}.brand strong{display:block;font-size:18px;color:#d6f3bf}.brand span,.sidebar-note,.topbar p,.key-panel span,.crime-heading span,.research-row span,.scenario-row span,.import-panel p{color:#91aaa1;font-size:13px;line-height:1.4}.sidebar .brand span,.sidebar-note{color:#96b0a5}.sidebar nav{display:grid;gap:8px}.tab{width:100%;justify-content:flex-start;border-color:transparent;background:transparent;color:#b7cbc3}.tab svg{width:18px;height:18px}.tab.active,.tab:hover{background:#5cb03729;color:#efffe7;border-color:#8bdc584d}.sidebar-note{margin-top:auto;padding:14px;border:1px solid #27413c;background:#0d1817cc;border-radius:8px;display:flex;gap:10px}main{min-width:0;padding:24px}.topbar{display:grid;grid-template-columns:minmax(260px,1fr) minmax(420px,560px);gap:22px;align-items:start;margin-bottom:22px}.family-hero{position:relative;min-height:230px;overflow:hidden;border:1px solid #25423e;border-radius:8px;background:#07100f;box-shadow:0 24px 80px #00000059}.family-hero img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center center;filter:saturate(1.04) contrast(1.04) brightness(.68)}.family-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#030606e0,#03060673 48%,#030606a8),linear-gradient(0deg,rgba(3,6,6,.9),transparent 58%)}.family-hero-copy{position:absolute;left:22px;right:22px;bottom:18px;z-index:1;max-width:700px}h1,h2,p{margin-top:0}h1{font-size:30px;line-height:1.1;margin-bottom:8px;color:#edf9df;text-shadow:0 2px 16px rgba(0,0,0,.8)}.key-panel,.workspace,.side-panel,.crime-card,.empty-workspace{background:#0b1212eb;border:1px solid #25413d;border-radius:8px;box-shadow:0 18px 60px #00000038}.key-panel{padding:14px}.key-panel label,.toolbar label,.chance-input span{display:block;color:#9ec6b3;font-size:12px;font-weight:800;text-transform:uppercase;margin-bottom:7px}.key-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;margin-bottom:8px}input,select,textarea{width:100%;border:1px solid #2c4646;border-radius:8px;min-height:38px;padding:8px 10px;color:#e7f2ea;background:#07100f}input::placeholder,textarea::placeholder{color:#668077}.api-key-input{-webkit-text-security:disc;font-family:Cascadia Code,SFMono-Regular,Consolas,monospace;letter-spacing:1px}textarea{min-height:280px;resize:vertical;font-family:Cascadia Code,SFMono-Regular,Consolas,monospace;font-size:13px}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px}.main-stack{display:grid;gap:14px}.summary-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mini-metric,.metric{background:#0b1212f0;border:1px solid #25413d;border-radius:8px;padding:14px}.mini-metric span,.metric span{display:block;color:#91aaa1;font-size:12px;font-weight:800;text-transform:uppercase}.mini-metric strong,.metric strong{display:block;font-size:24px;margin-top:4px;color:#d9f8bf}.section-title{font-size:17px;margin:6px 0 0}.crime-card{padding:16px}.crime-heading{display:flex;justify-content:space-between;gap:12px;margin-bottom:14px}.crime-heading h2{font-size:20px;margin-bottom:5px}.badge{display:inline-flex;align-items:center;white-space:nowrap;height:28px;border-radius:999px;padding:0 10px;font-size:12px;font-weight:800}.badge.supported{background:#6bd14a2e;color:#a9f28a}.badge.unsupported{background:#7d938d29;color:#b4c4bd}.badge.research{background:#dbb74d29;color:#f0d47d}.role-table{border:1px solid #233b37;border-radius:8px;overflow:hidden}.role-row{display:grid;grid-template-columns:1fr 1.2fr 110px 1.2fr;gap:10px;padding:10px 12px;border-bottom:1px solid #1e312f;align-items:center;font-size:14px}.role-row:last-child{border-bottom:0}.role-row span{color:#b5cac2}.warn{color:#f1c15f!important;font-weight:800}.performance-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.warning-line{margin-top:14px;display:flex;gap:8px;align-items:center;color:#f3d38a;background:#57360d61;border:1px solid rgba(226,179,79,.48);border-radius:8px;padding:10px 12px;font-weight:700}.weight-guidance{margin-top:10px;display:grid;gap:8px;padding:12px;border:1px solid rgba(77,148,130,.46);border-radius:8px;background:#0a201d8a}.weight-guidance>strong{color:#d8f8c8}.weight-guidance>p{margin:0;color:#9db8af;font-size:13px}.weight-guidance>div{display:flex;flex-wrap:wrap;gap:8px}.research-row .weight-guidance{grid-column:1 / -1;margin-top:0}.priority-chip{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:999px;border:1px solid rgba(160,188,178,.24);color:#d7eae2;background:#869c9524;font-size:12px;font-weight:800}.priority-chip.critical{border-color:#f2575775;background:#75202061;color:#ffc1b7}.priority-chip.high{border-color:#f1c15f75;background:#5c3f0f6b;color:#ffe3a0}.priority-chip.medium{border-color:#5dbd976b;background:#1246396b;color:#bff5db}.priority-chip.low{color:#b7cac3}.side-panel{padding:14px;align-self:start;display:grid;gap:10px}.research-row,.scenario-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #233b37;border-radius:8px;padding:12px}.research-row strong,.scenario-row strong{display:block;line-height:1.25}.research-row span,.scenario-row span{display:block;margin-top:3px}.research-row p{grid-column:1 / -1;margin:0;color:#a9c1b8;font-size:13px}.workspace{padding:18px}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:16px}.toolbar label{min-width:260px}.calculator-layout,.research-grid,.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,420px);gap:18px}.calculator-layout{grid-template-columns:minmax(420px,1fr) minmax(500px,620px);align-items:start}.editor-panel,.result-panel,.import-panel{border:1px solid #233b37;border-radius:8px;padding:16px}.chance-input{display:grid;grid-template-columns:1fr 120px;gap:12px;align-items:center;margin-bottom:10px}.chance-input span{margin:0}.chance-input strong{display:block}.chance-input small{display:block;margin-top:4px;color:#91aaa1;font-size:12px;font-weight:700;line-height:1.35;text-transform:none}.result-hero{display:grid;gap:4px;justify-items:start;margin-bottom:18px}.result-hero svg{color:#8bdc58}.result-hero strong{font-size:42px;line-height:1}.distribution{display:grid;gap:8px}.distribution-row{display:flex;gap:16px;justify-content:space-between;border-top:1px solid #233b37;padding-top:8px}.distribution-row strong{flex:0 0 auto}.distribution-label{display:grid;min-width:0;gap:3px}.distribution-label small{color:#91aaa1;font-size:11px;font-weight:700}.distribution-label em{max-width:520px;color:#cfe6d8;font-size:12px;font-style:normal;line-height:1.35}.ending-row{border-top:1px solid #233b37;padding-top:8px}.ending-row summary{display:flex;gap:16px;align-items:start;justify-content:space-between;cursor:pointer;list-style:none}.ending-row summary::-webkit-details-marker{display:none}.ending-row summary:before{content:"+";flex:0 0 auto;color:#8bdc58;font-weight:900}.ending-row[open] summary:before{content:"-"}.ending-row strong{flex:0 0 auto}.ending-row p{margin:8px 0 0 20px;color:#d5eadf;font-size:13px;line-height:1.45}.ending-row .ending-outcome{color:#9db8af}.unmapped-ending-row{align-items:start;color:#b8c9c2}.unmapped-ending-row .distribution-label>span{color:#e4efe9}.unmapped-ending-row small{color:#d0a84c}.research-list,.scenario-list{display:grid;gap:10px}.config-header{margin-bottom:16px}.config-header h2{margin-bottom:6px}.config-header p{color:#9db8af}.config-list{display:grid;gap:10px}.config-crime{border:1px solid #233b37;border-radius:8px;overflow:hidden;background:#071110b8}.config-crime-toggle{width:100%;min-height:58px;justify-content:space-between;border:0;border-radius:0;background:transparent;padding:12px 14px;text-align:left}.config-crime-toggle strong,.config-role-row strong{display:block}.config-crime-toggle small,.config-role-row small{display:block;margin-top:4px;color:#91aaa1;font-size:12px;line-height:1.35}.config-role-list{display:grid;border-top:1px solid #233b37}.config-role-row{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:14px;align-items:center;padding:12px 14px;border-bottom:1px solid #1e312f}.config-role-row:last-child{border-bottom:0}.empty-state,.empty-workspace{padding:24px;color:#91aaa1}.empty-workspace{display:grid;justify-items:start;max-width:720px}.empty-workspace h2{margin:12px 0 8px}@media (max-width: 980px){.app-shell,.topbar,.content-grid,.calculator-layout,.research-grid,.admin-grid{grid-template-columns:1fr}.sidebar{min-height:auto}.sidebar nav{grid-template-columns:repeat(2,1fr)}.summary-strip,.performance-row{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){main{padding:16px}.key-row,.role-row,.chance-input,.config-role-row,.summary-strip,.performance-row{grid-template-columns:1fr}.toolbar{display:grid;align-items:stretch}}
