:root{--color-bg:#f3f6fb;--color-surface:#fff;--color-surface-subtle:#f8fafc;--color-surface-muted:#eef2f7;--color-border:#d7e0ea;--color-border-strong:#b8c5d6;--color-text:#1f2937;--color-text-muted:#5f6b7a;--color-primary:#2f7d32;--color-primary-strong:#236327;--color-primary-soft:#e9f4ea;--color-focus:#2f7d3259;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 8px 24px #0f172a14;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--sans:"Inter", "Segoe UI", Roboto, Arial, sans-serif;font:15px/1.5 var(--sans);color:var(--color-text);background:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--color-bg);color:var(--color-text);margin:0}h1,h2,h3,h4,h5,h6{color:var(--color-text);margin:0}button,input,select,textarea{font:inherit}button,[type=button],[type=submit]{border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);transition:all .2s}button:hover,[type=button]:hover,[type=submit]:hover{border-color:var(--color-primary)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--color-focus);outline-offset:1px}.app{background:var(--color-bg);flex-direction:column;min-height:100dvh;display:flex}.app__content{flex-direction:column;flex:1;gap:.85rem;min-height:0;padding:1rem 1.4rem 1.25rem;display:flex}.app__view{flex-direction:column;flex:1;min-height:0;display:flex}.app__view>*{flex:1;min-height:0}.app__placeholder{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-height:420px;box-shadow:var(--shadow-sm);place-items:center;margin-top:.75rem;display:grid}.app__placeholder h2{color:var(--color-text-muted);margin:0;font-size:1.3rem;font-weight:600}.app-header{color:#f8fafc;background:linear-gradient(#12243d,#172f4e);border-bottom:1px solid #28486f;justify-content:space-between;align-items:center;padding:.85rem 1.4rem;display:flex;box-shadow:0 8px 20px #0f172a29}.app-header__title{letter-spacing:.01em;color:#fff;margin:0;font-size:1.02rem;font-weight:600}.app-header__profile-btn{color:#f8fafc;cursor:pointer;background-color:#ffffff14;border:1px solid #3f5f87;border-radius:50%;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;display:inline-flex}.app-header__profile-btn:hover{background-color:#ffffff29}.app-header__profile-icon{font-size:1.05rem;line-height:1}.top-nav{flex-flow:wrap;align-items:center;gap:.75rem;display:flex}.top-nav__button{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);cursor:pointer;padding:.56rem 1rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-block}.top-nav__button:hover{background-color:var(--color-surface-subtle);border-color:var(--color-primary)}.top-nav__button--active{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.run-dispatch{background:linear-gradient(180deg, var(--color-surface) 0%, var(--color-surface-subtle) 100%);border:1px solid var(--color-border);box-shadow:var(--shadow-md);border-radius:14px;margin-top:.35rem;padding:1.5rem}.run-dispatch__header{border-bottom:1px solid var(--color-border);margin-bottom:1.25rem;padding-bottom:.85rem}.run-dispatch__header h2{letter-spacing:.01em;color:var(--color-text);margin:0;font-size:1.35rem;line-height:1.22}.run-dispatch__header p{color:var(--color-text-muted);margin:.4rem 0 0;font-size:.83rem}.run-dispatch__grid{gap:1rem;display:grid}.run-dispatch__top-row{grid-template-columns:repeat(3,minmax(220px,1fr));gap:.75rem;display:grid}.run-dispatch__top-row--single{grid-template-columns:minmax(220px,320px)}.run-dispatch__section{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:12px;padding:1rem}.run-dispatch__section-header{margin-bottom:.65rem}.run-dispatch__section-header h3{letter-spacing:.02em;text-transform:uppercase;color:var(--color-text);margin:0;font-size:.92rem;font-weight:700}.run-dispatch__section-header p{color:var(--color-text-muted);margin:.25rem 0 0;font-size:.75rem}.run-dispatch__bottom-row{justify-content:flex-end;align-items:center;display:flex}.dispatch-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:.95rem;transition:border-color .2s,box-shadow .2s,transform .2s}.dispatch-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.dispatch-card--wide{grid-column:1/2}.dispatch-card--compact{max-width:320px}.dispatch-card h3{letter-spacing:.03em;text-transform:uppercase;color:var(--color-text);margin:0 0 .45rem;font-size:.8rem;font-weight:600}.dispatch-card__hint{display:none}.dispatch-card__field{gap:.35rem;margin-bottom:.75rem;display:grid}.dispatch-card__field label{color:var(--color-text-muted);font-size:.79rem}.dispatch-card__field select{border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);height:2rem;color:var(--color-text);padding:0 .55rem;font-size:.9rem}.dispatch-card__select{border:1px solid var(--color-border-strong);background:var(--color-surface);width:100%;height:2.1rem;color:var(--color-text);border-radius:8px;padding:0 .55rem;font-size:.84rem}.dispatch-card__select:focus,.dispatch-card__file-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus);outline:none}.dispatch-card h4{color:var(--color-text);margin:0 0 .55rem;font-size:.92rem}.dispatch-columns{grid-template-columns:repeat(2,minmax(220px,1fr));gap:1rem;display:grid}.dispatch-card__file-input{border:1px dashed var(--color-border-strong);background:var(--color-surface-subtle);height:2.1rem;color:var(--color-text-muted);border-radius:8px;width:100%;padding:.26rem .42rem;font-size:.77rem}.dispatch-card--upload{gap:.7rem;display:grid}.dispatch-card__upload-header{gap:.15rem;display:grid}.dispatch-card__upload-meta{color:var(--color-text-muted);font-size:.72rem}.dispatch-card__file-input-hidden{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.dispatch-card__upload-trigger{border:1px dashed var(--color-border-strong);background:linear-gradient(180deg, var(--color-surface-subtle) 0%, var(--color-surface-muted) 100%);min-height:3rem;color:var(--color-text);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:.48rem;font-size:.82rem;font-weight:600;transition:border-color .2s,background-color .2s,box-shadow .2s,transform .2s;display:flex}.dispatch-card__upload-trigger:hover{border-color:var(--color-primary);background:var(--color-primary-soft);transform:translateY(-1px)}.dispatch-card__upload-trigger:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus);outline:none}.dispatch-card__upload-icon{background:var(--color-primary-soft);width:1.65rem;height:1.65rem;color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.dispatch-card__upload-icon svg{fill:currentColor;width:.92rem;height:.92rem}.dispatch-card__file-pill{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:8px;justify-content:space-between;align-items:center;gap:.55rem;padding:.42rem .62rem;display:flex}.dispatch-card__file-name{color:var(--color-text);word-break:break-word;font-size:.75rem}.dispatch-card__file-size{color:var(--color-text-muted);white-space:nowrap;font-size:.71rem}.dispatch-card__upload-placeholder{color:var(--color-text-muted);text-align:center;font-size:.72rem}.run-dispatch__button-container{justify-content:flex-end;align-items:center;display:flex}.run-dispatch__button{background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-strong) 100%);color:#fff;letter-spacing:.01em;cursor:pointer;white-space:nowrap;box-shadow:var(--shadow-sm);border:0;border-radius:9px;padding:.66rem 1.45rem;font-size:.9rem;font-weight:700;transition:transform .16s,box-shadow .16s,opacity .16s}.run-dispatch__button:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.run-dispatch__button:disabled{opacity:.75;cursor:not-allowed;box-shadow:none;transform:none}.run-dispatch__status{border:1px solid var(--color-border);border-radius:8px;margin:0;padding:.6rem .7rem;font-size:.82rem}.run-dispatch__status--info{background:var(--color-primary-soft);color:var(--color-primary-strong)}.run-dispatch__status--error{color:#a62626;background:#fff3f3;border-color:#f2d0d0}.run-dispatch__response{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:10px;padding:.8rem}.run-dispatch__response h3{color:var(--color-text);margin:0 0 .4rem;font-size:.9rem}.run-dispatch__response pre{max-height:280px;color:var(--color-text-muted);margin:0;font-size:.75rem;line-height:1.45;overflow:auto}@media (width<=900px){.run-dispatch__top-row,.run-dispatch__top-row--single,.dispatch-columns,.run-dispatch__bottom-row{grid-template-columns:1fr}.run-dispatch__button-container,.run-dispatch__button{width:100%}}.ov-nav{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.ov-nav__button{border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);color:var(--color-text);border-radius:var(--radius-sm);cursor:pointer;padding:.5rem 1.1rem;font-size:.82rem;font-weight:600}.ov-nav__button--active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.ask-genai-chatbot{background:var(--color-surface);box-sizing:border-box;flex-direction:column;flex:1;gap:14px;width:100%;height:100%;min-height:520px;padding:18px;display:flex}.ask-genai-chatbot__header{flex-direction:column;gap:8px;display:flex}.ask-genai-chatbot__header-title-wrap{justify-content:space-between;align-items:center;gap:10px;display:flex}.ask-genai-chatbot__header h2{color:#0f172a;margin:0;font-size:1.15rem;font-weight:700}.ask-genai-chatbot__badge{color:#1d4ed8;background:#dbeafe;align-items:center;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.ask-genai-chatbot__intro{color:#475569;margin:0;line-height:1.45}.ask-genai-chatbot__suggestion-title{color:#334155;text-transform:uppercase;letter-spacing:.02em;margin:2px 0 0;font-size:.85rem;font-weight:700}.ask-genai-chatbot__suggestions{color:#475569;gap:4px;margin:0;padding-left:18px;font-size:.92rem;line-height:1.4;display:grid}.ask-genai-chatbot__messages{background:linear-gradient(#f8fafc 0%,#f1f5f9 100%);border:1px solid #d9e1ec;border-radius:12px;flex-direction:column;flex:1;gap:12px;width:100%;min-height:260px;padding:14px;display:flex;overflow-y:auto}.ask-genai-chatbot__empty{color:#64748b;text-align:center;margin:auto 0}.ask-genai-chatbot__bubble{border-radius:12px;flex-direction:column;gap:8px;max-width:82%;padding:10px 36px 10px 12px;line-height:1.4;display:flex;position:relative}.ask-genai-chatbot__bubble-text{white-space:pre-wrap;margin:0}.ask-genai-chatbot__bubble--user{color:#fff;background:linear-gradient(135deg,#2563eb,#1d4ed8);align-self:flex-end;box-shadow:0 4px 14px #2563eb38}.ask-genai-chatbot__bubble--assistant{color:#1e293b;background:#fff;border:1px solid #dbe3ec;align-self:flex-start}.ask-genai-chatbot__copy-button{color:inherit;opacity:.78;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:opacity .2s,color .2s;display:inline-flex;position:absolute;top:8px;right:8px}.ask-genai-chatbot__copy-button svg{width:18px;height:18px}.ask-genai-chatbot__copy-button:hover{opacity:1}.ask-genai-chatbot__error{color:#c62828;margin:0;font-size:.9rem}.ask-genai-chatbot__form{grid-template-columns:1fr auto;align-items:end;gap:10px 12px;display:grid}.ask-genai-chatbot__composer-label{color:#334155;text-transform:uppercase;letter-spacing:.03em;grid-column:1/-1;font-size:.82rem;font-weight:700}.ask-genai-chatbot__form textarea{resize:vertical;width:100%;min-height:46px;max-height:140px;font:inherit;border:1px solid #bfccdb;border-radius:8px;padding:10px 12px;line-height:1.45;transition:border-color .2s,box-shadow .2s}.ask-genai-chatbot__form textarea:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb29}.ask-genai-chatbot__form button{color:#fff;cursor:pointer;white-space:nowrap;background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:8px;padding:10px 16px;font-weight:600;transition:transform .15s,box-shadow .2s}.ask-genai-chatbot__form button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 6px 14px #1d4ed84d}.ask-genai-chatbot__form button:disabled{opacity:.6;cursor:not-allowed}.generate-report{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:100%;height:100%;min-height:520px;box-shadow:var(--shadow-sm);box-sizing:border-box;flex-direction:column;flex:1;gap:16px;padding:20px;display:flex}.generate-report__header{gap:6px;display:grid}.generate-report__header h2{letter-spacing:.2px;margin:0;font-size:1.2rem}.generate-report__header p{color:var(--color-text-muted);max-width:700px;margin:0;line-height:1.45}.generate-report__panel{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-subtle);gap:14px;padding:16px;display:grid}.generate-report__controls{gap:10px;display:grid}.generate-report__controls label{color:var(--color-text);font-weight:600}.generate-report__actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.generate-report__controls select{border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);min-width:280px;height:38px;color:var(--color-text);padding:0 10px}.generate-report__controls button{border-radius:var(--radius-sm);border:1px solid var(--color-primary);background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-strong) 100%);color:#fff;cursor:pointer;padding:9px 16px;font-weight:600}.generate-report__controls button:disabled{opacity:.6;cursor:not-allowed}.generate-report__hint{color:var(--color-text-muted);margin:0}.generate-report__status{border-radius:var(--radius-sm);margin:0;padding:10px 12px;font-weight:500}.generate-report__status--success{color:var(--color-primary-strong);border:1px solid var(--color-primary);background:var(--color-primary-soft)}.generate-report__status--error{color:#b91c1c;border:1px solid var(--color-border-strong);background:var(--color-surface)}.generate-report__downloads{gap:10px;display:grid}.generate-report__downloads p{color:var(--color-text);margin:0;font-weight:600}.generate-report__download-list{flex-wrap:wrap;gap:10px;display:flex}.generate-report__downloads a{border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-primary);padding:7px 11px;font-weight:600;text-decoration:none}.generate-report__downloads a:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.output-viewer{flex-direction:column;flex:1;min-height:0;padding:1.5rem 1.75rem;display:flex}.output-viewer__panel{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-height:0;box-shadow:var(--shadow-sm);flex-direction:column;flex:1;margin-top:.75rem;padding:.85rem 1rem 1rem;display:flex}.output-viewer__panel--chatbot{padding:.75rem 1rem;overflow:hidden}.output-viewer__smp-content{flex-direction:column;height:100%;min-height:0;display:flex}.output-viewer__filters{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:.65rem;display:flex}.output-viewer__filter-group{gap:.75rem;display:flex}.output-viewer__filter{flex-direction:column;gap:.25rem;display:flex}.output-viewer__filter label{color:var(--color-text-muted);font-size:.72rem}.output-viewer__filter select{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface-subtle);min-width:96px;padding:.3rem .45rem;font-size:.85rem}.output-viewer__table-wrap{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);flex:1;min-height:0;overflow:auto}.output-viewer__status{color:var(--color-text-muted);padding:1rem;font-size:.9rem}.output-viewer__status--error{color:#b91c1c}.heatmap-table{border-collapse:collapse;background:#0f172a;width:100%;min-width:1100px}.heatmap-table th,.heatmap-table td{text-align:center;border:1px solid #263247;padding:.28rem .22rem;font-size:.68rem}.heatmap-table th{color:#fff;background:#111d33;font-weight:600}.heatmap-table__sticky{z-index:2;background:#111d33;position:sticky;left:0}.heat-min{background:#f6b585}.heat-low{background:#e7efac}.heat-medium{background:#a7ce87}.heat-high{background:#4a9b5d}.output-viewer__placeholder{place-items:center;height:100%;min-height:0;display:grid}.output-viewer__placeholder h2{color:var(--color-text-muted);margin:0;font-size:2rem;font-weight:500}.is-nav{flex-flow:wrap;align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.is-nav__button{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-surface-subtle);min-width:132px;color:var(--color-text);cursor:pointer;padding:.5rem .9rem;font-size:.82rem;font-weight:600;transition:background-color .2s,border-color .2s}.is-nav__button:hover{background-color:var(--color-primary-soft);border-color:var(--color-primary)}.is-nav__button--active{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.ce-nav{--ce-tab-width:110px;--ce-upload-width:34px;--ce-tab-height:34px;--ce-tab-gap:.45rem;--ce-electricity-extra:160px;display:block}.ce-nav__tabs{align-items:center;gap:var(--ce-tab-gap);display:flex}.ce-nav__secondary-row{margin-top:var(--ce-tab-gap);margin-left:calc(var(--ce-tab-width) + var(--ce-upload-width) + var(--ce-tab-gap))}.ce-nav__button{border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);color:var(--color-text);border-radius:var(--radius-sm);min-width:var(--ce-tab-width);height:var(--ce-tab-height);cursor:pointer;box-sizing:border-box;padding:0 .7rem;font-size:.72rem;line-height:1.2;transition:background-color .18s,border-color .18s}.ce-nav__tab-group{min-width:var(--ce-tab-width);align-items:stretch;display:inline-flex}.ce-nav__button--tab{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;flex:1}.ce-nav__button--upload{min-width:var(--ce-upload-width);width:var(--ce-upload-width);height:var(--ce-tab-height);border-top-left-radius:0;border-bottom-left-radius:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.ce-nav__tab-group--active .ce-nav__button,.ce-nav__button--active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.ce-nav__upload-icon{flex-shrink:0;width:.8rem;height:.8rem}.ce-nav__button--electricity{width:calc((var(--ce-tab-width) * 4) + (var(--ce-tab-gap) * 3) + var(--ce-electricity-extra));text-align:center;min-width:0;max-width:100%;padding-left:1rem;padding-right:1rem}.ce-nav__button:hover{background:var(--color-primary-soft);border-color:var(--color-primary)}.ce-nav__tab-group--active .ce-nav__button:hover{background:var(--color-primary);border-color:var(--color-primary)}@media (width<=900px){.ce-nav__tabs{flex-wrap:wrap}.ce-nav__secondary-row{margin-left:0}.ce-nav__button--electricity{width:auto}}.scenario-view{margin-top:.3rem}.scenario-view__actions{justify-content:flex-end;gap:.22rem;margin-bottom:.6rem;display:flex}.scenario-view__actions button{border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);cursor:pointer;min-width:98px;padding:.38rem .65rem;font-size:.74rem}.scenario-view__actions button.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.scenario-view__grid{grid-template-columns:minmax(280px,1fr);gap:1rem;display:grid}.scenario-view__panel{background:var(--color-surface-subtle);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.5rem .6rem .7rem}.scenario-view__chip{background:var(--color-primary-soft);width:fit-content;margin:0 auto .45rem;padding:.22rem 1.2rem;font-size:.75rem}.scenario-view__unit{color:var(--color-text);font-size:.82rem}.scenario-view__chart{height:clamp(320px,45vh,500px);margin-top:.35rem;padding:.35rem .25rem .1rem}.scenario-view__chart .recharts-cartesian-axis-tick-value{fill:#556174;font-size:.72rem}.scenario-view__chart .recharts-text.recharts-label{fill:#3f4b5f}.scenario-view__legend{flex-wrap:wrap;justify-content:center;gap:.45rem 1rem;margin-top:.6rem;display:flex}.scenario-view__legend span{color:var(--color-text);align-items:center;gap:.3rem;font-size:.72rem;display:inline-flex}.scenario-view__legend i{width:8px;height:8px;display:inline-block}.scenario-view__table-wrap{margin-top:.8rem}.scenario-view__tables-grid{grid-template-columns:repeat(2,minmax(280px,1fr));gap:1rem;display:grid}.scenario-view__table{border-collapse:collapse;background:var(--color-surface-subtle);width:100%;font-size:.77rem}.scenario-view__table th,.scenario-view__table td{border:1px solid var(--color-border-strong);text-align:center;padding:.36rem .3rem}.scenario-view__table th{background:var(--color-primary);color:#fff}@media (width<=1000px){.scenario-view__grid,.scenario-view__tables-grid{grid-template-columns:1fr}}.capacity-mix,.demand-industry,.demand-transport,.demand-agriculture,.demand-buildings,.electricity-demand{min-height:480px}.capacity-expansion__upload-overlay{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a6b;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.capacity-expansion__upload-sheet{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:min(560px,100%);padding:1.25rem;box-shadow:0 22px 48px #0f172a33}.capacity-expansion__upload-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.capacity-expansion__upload-header h3{color:var(--color-text);margin:0;font-size:1.1rem;font-weight:600}.capacity-expansion__upload-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary);margin:0 0 .2rem;font-size:.72rem;font-weight:700}.capacity-expansion__upload-close{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;padding:.45rem .7rem;font-size:.8rem}.capacity-expansion__upload-subtitle{color:var(--color-text-muted);margin:.65rem 0 1rem;font-size:.88rem;line-height:1.5}.capacity-expansion__upload-field{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-subtle);padding:.9rem}.capacity-expansion__upload-label{color:var(--color-text);margin-bottom:.45rem;font-size:.8rem;font-weight:600;display:block}.capacity-expansion__upload-sheet input[type=file]{width:100%;color:var(--color-text);font-size:.82rem}.capacity-expansion__upload-hint{color:var(--color-text-muted);margin:.55rem 0 0;font-size:.76rem}.capacity-expansion__upload-actions{justify-content:flex-end;gap:.65rem;margin-top:1rem;display:flex}.capacity-expansion__upload-secondary,.capacity-expansion__upload-primary{cursor:pointer;border-radius:8px;min-width:92px;padding:.52rem .95rem;font-size:.82rem;font-weight:600}.capacity-expansion__upload-secondary{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted)}.capacity-expansion__upload-primary{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff}.capacity-expansion__upload-secondary:disabled,.capacity-expansion__upload-primary:disabled,.capacity-expansion__upload-close:disabled{opacity:.65;cursor:not-allowed}.capacity-expansion__upload-message{border-radius:8px;margin:.85rem 0 0;padding:.7rem .8rem;font-size:.8rem;line-height:1.4}.capacity-expansion__upload-message.is-success{color:#1d7a2e;background:#edf9ef}.capacity-expansion__upload-message.is-error{color:#ba2d2d;background:#fff1f1}.capacity-expansion__upload-message.is-loading{color:#3559a8;background:#f5f8ff}.dispatch-engine__tab-row{gap:.12rem;margin-bottom:.45rem;display:flex}.dispatch-engine__tab{border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);color:var(--color-text);cursor:pointer;min-width:92px;padding:.4rem .65rem;font-size:.72rem}.dispatch-engine__tab.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.dispatch-engine__filters{gap:.75rem;display:grid}.dispatch-engine__filter-group{flex-wrap:wrap;align-items:end;gap:.65rem;display:flex}.dispatch-engine__filter{gap:.2rem;display:grid}.dispatch-engine__filter label{font-size:.74rem}.dispatch-engine__filter select{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:var(--radius-sm);min-width:120px;padding:.25rem .45rem;font-size:.85rem}.dispatch-engine__actions{justify-content:flex-end;gap:.22rem;display:flex}.dispatch-engine__actions button{border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);cursor:pointer;min-width:98px;padding:.38rem .65rem;font-size:.74rem}.dispatch-engine__actions button.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.dispatch-engine__chart-area{border-top:1px solid var(--color-border);margin-top:.65rem;padding-top:.5rem}.dispatch-engine__chart-area h3{text-align:center;color:var(--color-text-muted);margin:.4rem 0 .8rem;font-size:1.03rem;font-weight:500}.dispatch-engine__chart-wrap{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:#fbfcff;border-radius:4px;height:clamp(340px,46vh,520px);padding:.5rem .35rem .25rem}.dispatch-engine__chart-wrap svg{width:100%;height:100%;display:block}.dispatch-engine__chart-wrap .recharts-cartesian-axis-tick-value{fill:#556174;font-size:.72rem}.dispatch-engine__chart-wrap .recharts-label{fill:#3f4b5f}.dispatch-engine__table-wrap table{border-collapse:collapse;background:var(--color-surface-subtle);width:100%;margin-top:1rem;font-size:.76rem}.dispatch-engine__table-wrap th,.dispatch-engine__table-wrap td{border:1px solid var(--color-border-strong);text-align:center;padding:.35rem .3rem}.dispatch-engine__table-wrap th{background:var(--color-primary);color:#fff}.input-synchroniser{margin-top:.25rem}.input-synchroniser__panel{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);min-height:590px;padding:.75rem}
