:root{--bg:#F7F6F1;--surface:#fff;--text:#253139;--muted:#627076;--line:#DDD9CB;--anchor:#5F5D53;--accent:#8B846D;--accent-dark:#6F6956;--accent-soft:#F0EEE5;--focus:#6F6956;--danger:#B8493C;--danger-soft:#FCF0ED;--success:#34724F;--success-soft:#EFF6F1;--shadow:0 18px 46px #25313920}
*{box-sizing:border-box}html{scroll-behavior:auto;scrollbar-gutter:stable}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.hidden{display:none!important}body.dialog-open{overflow:hidden}h1{font:400 36px/1.16 Georgia,serif;letter-spacing:-.7px}h2{font-size:19px;line-height:1.3}h3{font-size:16px}h1,h2,h3{color:var(--text)}p{margin:0 0 12px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.app-header{display:flex;align-items:center;gap:24px;min-height:76px;padding:12px 32px;background:white;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:16px;min-width:0}.brand strong{font:400 29px/1 Georgia,serif;color:var(--text);white-space:nowrap}.brand span{font-size:14px;line-height:1.3;max-width:200px;border-left:1px solid var(--line);padding-left:16px}.main-nav{display:flex;gap:4px;margin-left:auto}.main-nav button{border:0;border-radius:7px;background:transparent;padding:10px 15px;min-height:42px;font-weight:600;white-space:nowrap}.main-nav button.active{background:var(--accent-soft);color:var(--anchor)}.main-nav button:hover{background:var(--accent-soft)}.header-actions{display:flex;align-items:center;gap:8px}.mode-switch{display:flex;border:1px solid var(--line);border-radius:7px;padding:3px;background:white;white-space:nowrap}.mode-switch button{border:0;border-radius:4px;padding:7px 10px;font-size:13px;background:white}.mode-switch button.active{background:var(--accent-soft);color:var(--anchor);font-weight:700}.icon-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;background:transparent;min-width:40px;min-height:40px;padding:7px;border-radius:7px;font-size:20px}.icon-button span{font-size:13px;margin-left:5px}.icon-button:hover{background:var(--accent-soft)}
.app-main{max-width:1600px;margin:auto;padding:30px 32px 48px;min-width:0}.page-head,.editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.page-head>div,.editor-head>div{min-width:0}.page-head h1,.editor-head h1{margin:0 0 8px}.page-head p,.editor-head p{color:var(--muted);margin:0}.page-head>.field{min-width:195px}.head-actions,.actions{display:flex;flex-wrap:wrap;gap:8px}.head-actions{justify-content:flex-end}.actions{margin:16px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:7px;min-height:42px;padding:9px 14px;background:white;font-weight:600;font-size:14px;text-decoration:none}.btn:hover{background:var(--accent-soft);border-color:var(--accent)}.btn.primary{background:var(--accent-dark);border-color:var(--accent-dark);color:white}.btn.primary:hover{background:var(--anchor)}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.danger:hover{background:var(--danger-soft)}.btn.small{min-height:36px;padding:6px 10px;font-size:13px}.btn.ghost{border-color:transparent;background:transparent}.help-button{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:24px;height:24px;min-width:24px;border:1px solid var(--line);border-radius:50%;background:white;color:var(--anchor);padding:0;font:bold 13px Arial}.help-button:hover{border-color:var(--accent);background:var(--accent-soft)}
.summary-kpis{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:12px;margin-bottom:24px}.kpi{grid-column:span 2;display:flex;flex-direction:column;min-width:0;padding:18px;background:white;border:1px solid var(--line);border-radius:14px}.kpi.main-kpi{grid-column:span 5;order:-1;padding:22px;border-top:3px solid var(--accent)}.kpi .label{font-size:13px;color:var(--muted);margin-bottom:8px}.kpi .value{font-size:24px;line-height:1.2;font-weight:600;font-variant-numeric:tabular-nums}.kpi.main-kpi .value{font-size:36px}.kpi .hint{font-size:13px;color:var(--muted);margin-top:6px}.kpi.negative .hint{color:var(--danger)}.kpi.clickable{cursor:pointer;position:relative;padding-right:28px}.kpi.clickable:hover{background:var(--accent-soft)}.kpi.clickable:after{content:'→';position:absolute;right:12px;bottom:18px;color:var(--anchor)}
.panel,.editor-main,.result-panel{background:white;border:1px solid var(--line);border-radius:14px;min-width:0}.panel{padding:24px}.panel+.panel{margin-top:20px}.panel h2{margin:0 0 6px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.panel-head p{margin:4px 0 0;color:var(--muted);font-size:14px}.summary-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:20px;margin-top:24px;align-items:start}.summary-layout>*{min-width:0}.goal-empty{border:1px dashed var(--line);background:var(--bg);padding:20px;border-radius:7px}.goal-empty h3{margin:0 0 8px}.goal-empty p{color:var(--muted);max-width:650px}.goal-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:12px}.goal-summary small{font-size:13px;color:var(--muted)}.goal-summary strong{display:inline-block;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.chart-scroll{width:100%;overflow:auto;overscroll-behavior-x:contain}.goal-chart{display:block;width:100%;min-width:720px;max-height:340px;overflow:hidden}.goal-chart .grid{stroke:var(--line);stroke-width:1}.goal-chart .axis{stroke:var(--muted);stroke-width:1}.goal-chart .target{fill:none;stroke:var(--muted);stroke-width:2;stroke-dasharray:7 6}.goal-chart .actual{fill:none;stroke:var(--accent-dark);stroke-width:3;stroke-linejoin:round}.goal-chart text{fill:var(--muted);font:12px Arial}.chart-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 20px;font-size:13px;color:var(--muted);margin-top:12px}.legend-line{display:inline-block;width:26px;border-top:3px solid var(--accent-dark);vertical-align:middle;margin-right:7px}.legend-line.target{border-top:2px dashed var(--muted)}
.rank-list{display:grid;gap:8px}.rank-item{display:grid;grid-template-columns:20px minmax(0,1fr);gap:4px 10px;align-items:start;text-align:left;border:1px solid var(--line);border-radius:7px;padding:12px;background:white;min-width:0}.rank-item:hover{background:var(--accent-soft)}.rank-item>strong:last-child{grid-column:2;font-size:16px}.rank-item strong{display:block;font-size:14px}.rank-item small{color:var(--muted);font-size:12px}.rank-no{font-size:13px;color:var(--muted)}.negative{color:var(--danger)!important}.positive{color:var(--success)!important}
.filters{display:grid;grid-template-columns:minmax(240px,1.5fr) minmax(210px,1fr) minmax(180px,1fr);gap:16px;align-items:end;padding:20px;background:white;border:1px solid var(--line);border-radius:14px;margin-bottom:16px}.filters.with-period{grid-template-columns:minmax(230px,1.5fr) minmax(200px,1fr) minmax(140px,1fr) minmax(180px,1fr)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span,.field>label{font-size:13px;font-weight:600}.field small{font-size:12px;font-weight:400;color:var(--muted)}input,select,textarea{width:100%;min-width:0;min-height:42px;border:1px solid #AAA38D;border-radius:6px;padding:9px 11px;background:white;font-size:14px}textarea{resize:vertical;min-height:90px}input[type=checkbox]{width:18px;min-height:18px;accent-color:var(--accent-dark)}.field.invalid input,.field.invalid select,.field.invalid textarea,input.invalid{border-color:var(--danger)}.field .date-feedback.error,.error{color:var(--danger)}.error{font-size:12px}.segmented{display:flex;border:1px solid #AAA38D;border-radius:6px;overflow:hidden;background:white}.segmented button{flex:1;min-height:40px;padding:8px 10px;background:white;border:0;border-right:1px solid var(--line);font-size:14px}.segmented button:last-child{border-right:0}.segmented button.active{background:var(--accent-soft);color:var(--anchor);font-weight:600}.mobile-sort{display:flex;align-items:end;justify-content:flex-end;gap:8px;margin-bottom:12px}.mobile-sort .field{width:230px}
.table-wrap{border:1px solid var(--line);border-radius:14px;background:white;overflow:hidden}.table-scroll{overflow:auto;max-width:100%}.table-scroll.sticky-table{max-height:calc(100dvh - 180px);min-height:100px;overscroll-behavior:contain}.data-table{width:100%;border-spacing:0;border-collapse:separate;font-size:14px}.jobs-table{min-width:1180px;table-layout:fixed}.jobs-table th:nth-child(1){width:210px}.jobs-table th:nth-child(2){width:130px}.jobs-table th:nth-child(3){width:140px}.jobs-table th:nth-child(4){width:95px}.jobs-table th:nth-child(5){width:110px}.jobs-table th:nth-child(6),.jobs-table th:nth-child(7){width:125px}.jobs-table th:nth-child(8){width:90px}.jobs-table th:nth-child(9){width:115px}.jobs-table th:nth-child(10){width:130px}.jobs-table th:nth-child(11){width:28px}.data-table th{position:sticky;top:0;z-index:2;text-align:left;background:#F0EEE5;border-bottom:1px solid var(--line);padding:12px;font-size:12px;line-height:1.35;font-weight:600}.table-head-content{display:flex;margin:-12px}.sort-button{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;border:0;background:transparent;text-align:left;min-height:58px;padding:12px;font-size:12px;font-weight:600}.sort-button:hover,.sort-button.active{background:var(--accent-soft);color:var(--anchor)}.sort-indicator{font-size:17px}.data-table td{padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}.data-table tbody tr:last-child td{border-bottom:0}.data-table tr.clickable{cursor:pointer}.data-table tr.clickable:hover{background:var(--accent-soft)}.negative-row{background:#FCF7F5}.job-open{border:0;background:transparent;text-align:left;padding:4px 0;color:var(--text);font-weight:600;line-height:1.45;min-height:36px}.job-open:hover{text-decoration:underline}.job-open span{white-space:nowrap}.subtext{font-size:12px;color:var(--muted);margin-top:3px}.money-main{font-weight:600}.status{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--anchor)}.status.open{color:var(--muted)}.dot{width:6px;height:6px;border-radius:50%;background:currentColor}.chevron{font-size:20px;color:var(--anchor)}.table-status{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--bg);font-size:13px;color:var(--muted)}.empty{padding:36px 20px;text-align:center;color:var(--muted)}
.editor-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(320px,.85fr);gap:24px;align-items:start}.editor-section,.cost-group{padding:24px}.editor-section+.editor-section{border-top:1px solid var(--line)}.editor-section h2,.cost-group h2,.result-panel h2{margin:0 0 18px}.job-basics{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:16px}.job-basics .full{grid-column:1/-1}.cost-groups{display:grid;grid-template-columns:1fr}.cost-group{border-top:1px solid var(--line)}.expense-row{display:grid;grid-template-columns:minmax(0,1fr) 140px 40px;gap:8px;margin-bottom:10px}.expense-row .icon-button{border:1px solid var(--line)}.group-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-top:12px}.group-footer small{color:var(--muted);font-size:12px}.result-column{position:sticky;top:100px;min-width:0}.result-panel{padding:24px;border-top:3px solid var(--accent)}.result-badge{display:inline-block;padding:4px 8px;border-radius:5px;background:var(--accent-soft);color:var(--anchor);font-size:12px;font-weight:600;margin-bottom:16px}.result-list{margin:0}.result-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.result-row dt{color:var(--muted);font-size:14px}.result-row dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.result-row.key{display:block;padding:20px 0}.result-row.key dt{margin-bottom:8px}.result-row.key dd{font-size:29px;line-height:1.25;font-weight:600;text-align:left}.result-row.key dd small{font-size:16px;font-weight:400;display:inline-block}.result-note{font-size:13px;color:var(--muted);margin:16px 0 0}.readonly-value{padding:9px 11px;min-height:42px;border:1px solid var(--line);border-radius:6px;background:var(--bg);font-size:14px}.danger-zone{display:flex;justify-content:space-between;align-items:center;gap:16px}.danger-zone strong{font-size:14px}
/* Native dialogs: centered at every width; backdrop gestures do not dismiss. */
dialog{color:var(--text);border:1px solid var(--line);border-radius:14px;padding:0;box-shadow:var(--shadow);background:white;max-height:calc(100dvh - 32px);max-width:calc(100vw - 32px);overflow:auto;margin:auto}dialog::backdrop{background:#25313966}.overlay{width:650px}.overlay.wide{width:960px}.modal{width:100%;min-width:0}.modal>header,.drawer>header{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:16px;background:white;padding:18px 24px;border-bottom:1px solid var(--line)}.modal h2,.drawer h2{margin:0;font-size:19px}.modal #modal-body,#help-content{padding:24px}.drawer{width:650px}.discard-dialog{width:470px;padding:24px}.discard-dialog h2{margin:0 0 12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.inline-note{padding:12px 14px;margin-top:16px;border-radius:7px;background:var(--bg);font-size:14px;color:var(--muted)}.inline-note.success{background:var(--success-soft);color:var(--success)}.inline-note.danger{background:var(--danger-soft);color:var(--danger)}.onboarding-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.onboarding-choice .btn{min-height:80px;flex-direction:column}.settings-types{display:grid;gap:10px}.settings-type-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.settings-type-row .icon-button{border:1px solid var(--line)}.help-section+.help-section{margin-top:24px}.help-section h3{margin:0 0 8px}.help-section p{color:var(--text);margin:0;white-space:pre-line}.help-steps{padding-left:20px}.help-steps li+li{margin-top:8px}.form-error{color:var(--danger);background:var(--danger-soft);border-left:3px solid var(--danger);padding:12px 16px;margin:16px 24px 0}.toast{position:fixed;z-index:80;bottom:24px;left:50%;transform:translateX(-50%);background:var(--text);color:white;padding:12px 18px;border-radius:7px;max-width:calc(100vw - 32px);width:max-content;box-shadow:var(--shadow)}.recovery{max-width:740px;margin:48px auto;padding:24px;background:white;border:1px solid var(--danger);border-radius:14px}
.editor-head h1,.name-main,.readonly-value,.rank-item strong,.rank-item small,.result-row>span,.result-row dd,.result-row strong,.type-economics td,.kpi .value,.goal-summary strong{overflow-wrap:anywhere}.editor-head h1{max-width:100%}.result-row dt,.result-row>span{min-width:0}.result-row dd,.result-row>strong{min-width:0}.type-economics{min-width:700px}
@media(max-width:1180px){.app-header{gap:16px;padding-inline:24px}.header-actions .icon-button span{display:none}.brand span{max-width:170px}.app-main{padding-inline:24px}.summary-layout{grid-template-columns:1fr}.summary-layout>aside{display:grid;grid-template-columns:1fr 1fr;gap:20px}.summary-layout>aside .panel+.panel{margin-top:0}.filters.with-period{grid-template-columns:1fr 1fr}.job-basics{grid-template-columns:1fr 1fr}.job-basics .field:first-child{grid-column:1/-1}}
@media(max-width:950px){h1{font-size:31px}.app-header{flex-wrap:wrap;gap:10px 20px}.brand{flex:1}.brand span{max-width:none}.header-actions{margin-left:auto}.main-nav{order:3;flex-basis:100%;justify-content:center;margin:0}.editor-layout{grid-template-columns:1fr}.result-column{position:static}.summary-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}.kpi.main-kpi{grid-column:span 3}.kpi{grid-column:span 2}.kpi:last-child{grid-column:span 4}.filters{grid-template-columns:1fr 1fr}.filters .field:first-child{grid-column:1/-1}.filters.with-period .field:first-child{grid-column:auto}.page-head,.editor-head{flex-wrap:wrap}.head-actions{justify-content:flex-start}}
@media(max-width:650px){body{padding-bottom:76px}.app-header{position:static;min-height:68px;padding:12px 16px;gap:8px;flex-wrap:nowrap}.brand{flex:1}.brand strong{font-size:27px}.brand span{display:none}.header-actions{gap:4px}.header-actions .icon-button{min-width:34px;min-height:38px;padding:5px}.mode-switch button{padding:7px;font-size:12px}.main-nav{position:fixed;z-index:30;bottom:0;left:0;right:0;border-top:1px solid var(--line);background:white;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));margin:0}.main-nav button{min-height:44px}.app-main{padding:24px 16px 28px}h1{font-size:29px}h2,.editor-section h2,.cost-group h2,.result-panel h2{font-size:17px}.page-head,.editor-head{gap:16px;margin-bottom:20px}.page-head>.field{width:100%}.head-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.head-actions .btn.primary{grid-column:1/-1;order:-1}.summary-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px}.kpi,.kpi:last-child{grid-column:auto;padding:14px}.kpi.main-kpi{grid-column:1/-1;padding:18px}.kpi.main-kpi .value{font-size:32px}.kpi .value{font-size:23px}.kpi.clickable{grid-column:1/-1}.panel{padding:18px}.panel-head{margin-bottom:16px}.summary-layout{gap:16px;margin-top:20px}.summary-layout>aside{display:grid;grid-template-columns:1fr;gap:16px}.goal-summary{grid-template-columns:1fr;gap:10px}.goal-summary span{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 12px}.goal-summary br{display:none}.goal-summary strong{font-size:20px}.goal-chart{min-width:720px}.chart-legend{justify-content:flex-start}.filters,.filters.with-period{grid-template-columns:1fr;gap:14px;padding:16px}.filters .field:first-child,.filters.with-period .field:first-child{grid-column:auto}.mobile-sort .field{width:auto;flex:1}.table-status{flex-direction:column;gap:4px}.table-scroll.sticky-table{max-height:65dvh}.editor-section,.cost-group,.result-panel{padding:18px}.editor-layout{gap:20px}.job-basics,.form-grid{grid-template-columns:1fr}.job-basics .full,.job-basics .field:first-child,.form-grid .full{grid-column:auto}.expense-row{grid-template-columns:minmax(0,1fr) 100px 36px;gap:6px}.expense-row .icon-button{min-width:36px}.expense-row input{padding:9px 8px}.result-row.key dd{font-size:28px}.danger-zone{align-items:flex-start;flex-direction:column}.modal>header,.drawer>header{padding:16px}.modal #modal-body,#help-content,.discard-dialog{padding:18px}.modal h2,.drawer h2{font-size:17px}.form-error{margin-inline:18px}.form-actions .btn{flex:1}.onboarding-choice{grid-template-columns:1fr}.toast{bottom:84px}.type-economics,.type-economics tbody{display:block;width:100%;min-width:0}.type-economics thead{display:none}.type-economics tr{display:block;border-bottom:1px solid var(--line);padding:12px 0}.type-economics tr:last-child{border-bottom:0}.data-table.type-economics td{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:4px 0;border:0}.type-economics td:before{content:attr(data-label);flex-shrink:0;color:var(--muted);font-size:13px}.data-table.type-economics td:first-child{display:block;padding-bottom:8px}.type-economics td:first-child:before{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.app-error{max-width:1536px;margin:16px 32px 0;padding:12px 16px;border-left:3px solid var(--danger);border-radius:6px;background:var(--danger-soft);color:var(--danger)}@media(max-width:650px){.app-error{margin-inline:16px}}

html{scroll-padding-top:150px;scroll-padding-bottom:90px}.sticky-table{scroll-padding-top:65px;scroll-padding-bottom:12px}@media(max-width:650px){html{scroll-padding-top:16px}}
.jobs-table td:nth-child(n+6):nth-child(-n+10),.type-economics td:not(:first-child){text-align:right}.jobs-table th:nth-child(n+6):nth-child(-n+10) .sort-button{justify-content:flex-end;text-align:right}.type-economics th:not(:first-child){text-align:right}

/* Targeted state conflict / recovery actions. */
#state-conflict{max-width:1536px;margin:16px 16px 0;padding:16px;border-left:3px solid var(--danger);border-radius:6px;background:var(--danger-soft);color:var(--text)}#state-conflict p{margin-bottom:12px}#state-conflict .btn,.recovery .btn{max-width:100%;white-space:normal;overflow-wrap:anywhere}

/* Public Demo context notice. */
.demo-notice{max-width:1536px;margin:16px auto 0;padding:14px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid var(--line);border-left:3px solid var(--accent-dark);border-radius:7px;background:var(--accent-soft)}.demo-notice>div{display:flex;flex-direction:column;gap:2px;min-width:0}.demo-notice span{color:var(--muted);font-size:13px}.demo-notice .btn{flex-shrink:0}@media(max-width:650px){.demo-notice{margin:12px 16px 0;padding:14px;align-items:stretch;flex-direction:column;gap:12px}.demo-notice .btn{width:100%;white-space:normal;text-align:center}}
