:root{--paper:#f3f5f8;--surface:#fff;--ink:#172033;--ink-2:#4a5468;--ink-3:#6b7486;--line:#dce1e8;--line-strong:#c3cad5;--primary:#1f4e8c;--primary-hover:#183f72;--primary-soft:#e7eef8;--limit:#9a5a00;--limit-soft:#fdf2e1;--danger:#b42318;--danger-soft:#fdecea;--ok:#1d6f48;--ok-soft:#e5f4ec;--pending:#6b7486;--pending-hatch:repeating-linear-gradient(135deg, transparent 0 6px, #6b74861f 6px 7px);--font:"Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-kpi:30px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--radius-sm:4px;--radius:8px;--focus:0 0 0 3px #1f4e8c59;--sidebar-w:232px}*,:before,:after{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);font-family:var(--font);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:var(--fs-xl)}h2{font-size:var(--fs-lg)}h3{font-size:var(--fs-md)}button,input,select{font:inherit;color:inherit}:focus-visible{box-shadow:var(--focus);outline:none}.shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);min-height:100vh;display:grid}.sidebar{gap:var(--s5);height:100vh;padding:var(--s5) var(--s3);background:var(--surface);border-right:1px solid var(--line);flex-direction:column;display:flex;position:sticky;top:0}.brand{padding:0 var(--s2);flex-direction:column;gap:2px;display:flex}.brand-mark{letter-spacing:.06em;color:var(--primary);font-size:22px;font-weight:700}.brand-name{font-size:var(--fs-xs);color:var(--ink-3)}nav[aria-label=Розділи]{flex-direction:column;gap:2px;display:flex}.nav-item{align-items:center;gap:var(--s3);min-height:40px;padding:var(--s2) var(--s3);border-radius:var(--radius-sm);color:var(--ink-2);text-align:left;cursor:pointer;background:0 0;border:0;transition:background-color .15s,color .15s;display:flex}.nav-item:hover{background:var(--paper);color:var(--ink)}.nav-item[aria-current=page]{background:var(--primary-soft);color:var(--primary);box-shadow:inset 3px 0 0 var(--primary);font-weight:600}.source-card{gap:var(--s1);padding:var(--s3);border:1px dashed var(--line-strong);border-radius:var(--radius);font-size:var(--fs-sm);flex-direction:column;margin-top:auto;display:flex}.source-card .btn{margin-top:var(--s2)}.source-label,.source-note{font-size:var(--fs-xs);color:var(--ink-3)}.main{min-width:0;padding:var(--s5) var(--s6) var(--s6)}.page{gap:var(--s4);flex-direction:column;max-width:1440px;display:flex}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--s4);display:flex}.page-sub{margin:var(--s1) 0 0;color:var(--ink-2)}.btn{min-height:36px;padding:0 var(--s4);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-quiet{background:var(--surface);border-color:var(--line-strong);color:var(--ink-2)}.btn-quiet:not(:disabled):hover{border-color:var(--ink-3);color:var(--ink)}.btn-sm{min-height:30px;padding:0 var(--s3);font-size:var(--fs-sm)}.link{color:var(--primary);cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.link:hover{text-decoration:underline}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s4);min-width:0}.panel-head{justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s3);display:flex}.panel-meta{font-size:var(--fs-xs);color:var(--ink-3)}.panel-note{margin:0 0 var(--s3);font-size:var(--fs-sm);color:var(--ink-2)}.panel-pending{background-image:var(--pending-hatch);background-color:var(--surface)}.empty{color:var(--ink-3);font-size:var(--fs-sm);margin:0}.tag{padding:2px var(--s2);font-size:var(--fs-xs);white-space:nowrap;border-radius:999px;font-weight:600;display:inline-block}.tag-pending{background:var(--paper);color:var(--pending);border:1px dashed var(--pending)}.tag-limit{background:var(--limit-soft);color:var(--limit)}.callout{padding:var(--s3) var(--s4);border-radius:var(--radius);font-size:var(--fs-sm);margin:0}.callout-limit{background:var(--limit-soft);color:var(--limit)}.callout-danger{background:var(--danger-soft);color:var(--danger)}.kpi-row{gap:var(--s3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.kpi{padding:var(--s4);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:2px;min-width:0;display:flex}.kpi-label{font-size:var(--fs-sm);color:var(--ink-2)}.kpi-value{font-size:var(--fs-kpi);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:600;line-height:1.15}.kpi-note{font-size:var(--fs-xs);color:var(--ink-3)}.kpi-warn{border-color:color-mix(in srgb, var(--limit) 40%, var(--line));box-shadow:inset 0 3px 0 var(--limit)}.kpi-pending{background-image:var(--pending-hatch);border-style:dashed;border-color:var(--line-strong)}.kpi-pending .kpi-value{font-size:var(--fs-xl);color:var(--pending);padding:6px 0 4px}.table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.table th,.table td{padding:var(--s2) var(--s2);border-bottom:1px solid var(--line);text-align:left;vertical-align:baseline}.table thead th{color:var(--ink-3);font-weight:600;font-size:var(--fs-xs);border-bottom-color:var(--line-strong)}.table tfoot th,.table tfoot td{border-bottom:0;border-top:1px solid var(--line-strong);font-weight:600}.table tbody tr:last-child td{border-bottom:0}.num{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right!important}.cell-id{margin-left:var(--s2);font-size:var(--fs-xs);color:var(--ink-3)}.facts{gap:var(--s3);margin:var(--s4) 0 0;padding-top:var(--s3);border-top:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.facts dt{font-size:var(--fs-xs);color:var(--ink-3)}.facts dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-weight:600}.pending-text{color:var(--pending);font-style:italic;font-weight:400!important}.structure-grid{gap:var(--s4);grid-template-columns:minmax(300px,380px) minmax(0,1fr);align-items:start;display:grid}.tree-panel{top:var(--s5);max-height:calc(100vh - 120px);padding:var(--s4) var(--s2);position:sticky;overflow:auto}.tree-panel .panel-head{padding:0 var(--s2)}.tree{margin:0;padding:0;list-style:none}.tree-row{align-items:center;gap:var(--s1);min-height:36px;padding-right:var(--s2);border-radius:var(--radius-sm);display:flex}.tree-row:hover{background:var(--paper)}.tree-row.is-selected{background:var(--primary-soft)}.tree-row.is-selected .tree-name{color:var(--primary);font-weight:600}.tree-toggle,.tree-toggle-spacer{flex:none;width:24px;height:24px}.tree-toggle{border-radius:var(--radius-sm);color:var(--ink-3);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.tree-toggle svg{transition:transform .15s}.tree-toggle svg.is-open{transform:rotate(90deg)}.tree-label{min-width:0;padding:var(--s1) 0;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;display:flex}.tree-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tree-type{font-size:var(--fs-xs);color:var(--ink-3)}.tree-qty{font-size:var(--fs-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}.tree-inst{text-align:right;font-variant-numeric:tabular-nums;min-width:32px;font-weight:600}.detail{gap:var(--s4);flex-direction:column;min-width:0;display:flex}.detail-head{justify-content:space-between;align-items:flex-end;gap:var(--s4);display:flex}.detail-title{font-size:24px}.detail-sub{color:var(--ink-3);font-size:var(--fs-sm);margin:2px 0 0}.crumbs{gap:var(--s1);margin-bottom:var(--s1);flex-wrap:wrap;min-height:20px;display:flex}.crumbs button{color:var(--ink-3);font-size:var(--fs-sm);cursor:pointer;background:0 0;border:0;padding:0}.crumbs button:hover{color:var(--primary)}.crumbs button:after{content:"/";margin-left:var(--s1);color:var(--line-strong)}.detail-grid,.results-grid{gap:var(--s4);grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;display:grid}.scenario legend+*{clear:both}.training-grid{gap:var(--s4);grid-template-columns:300px minmax(0,1fr);align-items:start;display:grid}.scenario{top:var(--s5);position:sticky}.scenario fieldset{gap:var(--s3);border:0;flex-direction:column;margin:0;padding:0;display:flex}.scenario fieldset+fieldset{margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--line)}.scenario legend{float:left;width:100%;margin-bottom:var(--s1);font-size:var(--fs-sm);color:var(--ink-2);padding:0;font-weight:600}.field{gap:var(--s1);flex-direction:column;display:flex}.field label{font-size:var(--fs-sm);font-weight:500}.field select,.field input{width:100%;min-height:36px;padding:0 var(--s3);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface)}.field select:disabled,.field input:disabled{background:var(--paper) var(--pending-hatch);color:var(--ink-3);cursor:not-allowed}.field input::placeholder{color:var(--ink-3)}.field-hint{font-size:var(--fs-xs);color:var(--ink-3)}.field-error{font-size:var(--fs-xs);color:var(--danger);font-weight:600}.field.has-error input{border-color:var(--danger)}.stepper{grid-template-columns:36px 1fr 36px;display:grid}.stepper input{text-align:center;font-weight:600;font-size:var(--fs-lg);font-variant-numeric:tabular-nums;border-radius:0}.stepper button{border:1px solid var(--line-strong);background:var(--paper);font-size:var(--fs-lg);cursor:pointer}.stepper button:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm);border-right:0}.stepper button:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:0}.stepper button:hover{background:var(--primary-soft);color:var(--primary)}.results{gap:var(--s4);flex-direction:column;min-width:0;display:flex}.status{padding:var(--s3) var(--s4);border-radius:var(--radius);font-size:var(--fs-sm);border:1px solid;flex-direction:column;gap:2px;display:flex}.status strong{font-size:var(--fs-lg)}.status-ok{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.status-limit{background:var(--limit-soft);border-color:var(--limit);color:var(--limit)}.status-danger{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.gantt{gap:var(--s3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.gantt li{column-gap:var(--s3);grid-template-rows:auto auto;grid-template-columns:88px minmax(0,1fr);align-items:center;row-gap:2px;display:grid}.gantt-label{font-size:var(--fs-sm);color:var(--ink-2);grid-row:span 2}.gantt-track{background:var(--paper);border-radius:var(--radius-sm);height:18px;display:block}.gantt-bar{background:var(--primary-soft);border-radius:var(--radius-sm);gap:2px;height:100%;padding:3px;display:flex}.gantt-stream{background:var(--primary);border-radius:2px;flex:1}.gantt-value{font-size:var(--fs-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}.cost-list{column-gap:var(--s5);font-size:var(--fs-sm);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.cost-list li{justify-content:space-between;gap:var(--s3);padding:var(--s2) 0;border-bottom:1px solid var(--line);display:flex}.cost-sub{color:var(--ink-2)}.assumptions{font-size:var(--fs-sm);margin:0;padding:0;list-style:none}.assumptions li{gap:var(--s2);padding:var(--s2) 0;border-bottom:1px solid var(--line);display:flex}.assumptions li:last-child{border-bottom:0}.assumptions .cell-id{width:52px;color:var(--limit);flex:none;margin:0;font-weight:600}@media (width<=1280px){.main{padding:var(--s4) var(--s5) var(--s5)}.kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=1080px){.results-grid,.detail-grid,.cost-list{grid-template-columns:minmax(0,1fr)}}@media (width<=900px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{height:auto;padding:var(--s3) var(--s4);border-right:0;border-bottom:1px solid var(--line);flex-flow:wrap;align-items:center;position:static}nav[aria-label=Розділи]{flex-direction:row}.source-card{margin:0 0 0 auto}.source-card .btn,.source-card .source-note{display:none}.main{padding:var(--s4)}.structure-grid,.training-grid{grid-template-columns:minmax(0,1fr)}.tree-panel,.scenario{max-height:none;position:static}.detail-head{flex-direction:column;align-items:stretch}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
