:root{color-scheme:light;--bg:#f4f7f6;--surface:#fff;--surface-2:#eaf1ef;--text:#17201e;--muted:#5c6966;--primary:#006b57;--primary-2:#d7f5e9;--line:#d8e1de;--danger:#ba1a1a;--danger-bg:#ffdad6;--warning:#735c00;--warning-bg:#ffea9c;--shadow:0 8px 28px rgba(25,55,47,.08);font-family:Inter,Roboto,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}.app-bar{height:72px;padding:0 max(24px,calc((100vw - 1200px)/2));display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:12px;font-weight:750}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;color:white;background:var(--primary);font-size:20px}.page{max-width:1200px;margin:0 auto;padding:36px 24px 64px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px}.page-heading h1{font-size:36px;line-height:1.1;margin:5px 0 8px}.page-heading p{margin:0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.09em;font-weight:750;font-size:12px;color:var(--primary)!important}.card{background:var(--surface);border:1px solid rgba(216,225,222,.9);border-radius:24px;box-shadow:var(--shadow)}.campaign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.campaign-card{padding:22px;transition:transform .16s,box-shadow .16s}.campaign-card:hover{transform:translateY(-2px);box-shadow:0 12px 36px rgba(25,55,47,.13)}.campaign-card h2{margin:22px 0 8px}.campaign-card p{color:var(--muted)}.campaign-card code{color:var(--primary)}.card-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px}.status{display:inline-flex;padding:6px 10px;border-radius:999px;font-weight:700;font-size:12px;background:var(--surface-2)}.status.published{color:var(--primary);background:var(--primary-2)}.status.archived{color:var(--muted)}button,.primary-button,.secondary-button{border:0;border-radius:14px;padding:12px 18px;font:inherit;font-weight:750;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.primary-button{background:var(--primary);color:#fff}.secondary-button{background:var(--surface-2);color:var(--text)}.text-button{background:transparent;color:var(--primary);padding:10px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stack{display:grid;gap:18px}.form-card{max-width:720px;padding:28px}.auth-card{max-width:440px;padding:32px;margin:8vh auto}.auth-card h1{font-size:34px;margin:4px 0 24px}label{display:grid;gap:8px;font-weight:700}input{width:100%;border:1px solid #aab8b4;background:#fbfdfc;border-radius:14px;padding:14px 16px;font:inherit;outline:none}input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,107,87,.12)}.muted,label span{color:var(--muted);font-weight:400}.file-drop{padding:22px;border:1px dashed #8da09b;border-radius:18px;background:#f8fbfa}.metric-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}.metric{padding:18px;display:grid;gap:8px}.metric span{color:var(--muted);font-size:13px}.metric strong{font-size:30px}.metric.success strong,.good{color:var(--primary)}.metric.warning strong,.warn{color:var(--warning)}.metric.danger strong,.bad{color:var(--danger)}.contract-warning{display:flex;gap:12px;align-items:center;padding:16px 18px;border-radius:18px;background:var(--warning-bg);color:#413400;margin:18px 0}.contract-warning span{color:#5e4b00}.table-card{overflow:hidden}.section-heading{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid var(--line)}.section-heading h2{margin:0}.section-heading span{color:var(--muted);font-size:13px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:right;padding:16px 20px;border-bottom:1px solid var(--line);white-space:nowrap}th:first-child,td:first-child{text-align:left}th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}td small{display:block;color:var(--muted);margin-top:4px}.message{padding:14px 18px;border-radius:16px;margin-bottom:18px;background:var(--surface-2)}.message.success{background:var(--primary-2);color:#004d3d}.message.error{background:var(--danger-bg);color:#690005}.message.warning{background:var(--warning-bg)}.empty{grid-column:1/-1;padding:48px;text-align:center}.empty p{color:var(--muted)}@media(max-width:820px){.page-heading{align-items:flex-start;flex-direction:column}.metric-grid{grid-template-columns:repeat(2,1fr)}.app-bar{padding:0 18px}.page{padding:24px 16px}.contract-warning{align-items:flex-start;flex-direction:column}}@media(max-width:480px){.metric-grid{grid-template-columns:1fr 1fr}.page-heading h1{font-size:30px}}

/* Campaign completion and native XML export */
.status.completed{color:#07523f;background:var(--primary-2)}
.page-heading>div{min-width:0;max-width:100%}
.page-heading h1{overflow-wrap:anywhere}
.completion-panel{min-width:0;max-width:100%;padding:24px;margin-bottom:18px}
.completion-header,.completion-action,.export-result{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}
.completion-header>div,.completion-action>div,.export-result>*{min-width:0}
.completion-header h2,.export-result h3{margin:0 0 6px}
.completion-header p,.completion-action p,.export-result p{margin:0;color:var(--muted);line-height:1.5}
.workflow-status{display:inline-flex;align-items:center;min-height:32px;padding:6px 11px;border-radius:999px;font-size:13px;font-weight:750;white-space:nowrap}
.workflow-status.in-progress{color:#415e57;background:var(--surface-2)}
.workflow-status.ready{color:#5e4b00;background:var(--warning-bg)}
.workflow-status.completed{color:#004d3d;background:var(--primary-2)}
.workflow-status.error{color:#690005;background:var(--danger-bg)}
.completion-progress{padding:22px 0 20px}
.progress-caption{display:flex;justify-content:space-between;gap:18px;margin-bottom:10px;font-variant-numeric:tabular-nums}
.progress-caption span{color:var(--muted)}
.completion-progress progress{display:block;width:100%;height:10px;border:0;border-radius:999px;overflow:hidden;background:var(--surface-2);accent-color:var(--primary)}
.completion-progress progress::-webkit-progress-bar{background:var(--surface-2);border-radius:999px}
.completion-progress progress::-webkit-progress-value{background:var(--primary);border-radius:999px}
.completion-progress progress::-moz-progress-bar{background:var(--primary);border-radius:999px}
.progress-breakdown{display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 0 0;color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}
.progress-breakdown strong{color:var(--text)}
.readiness-notes,.workflow-error,.incomplete-confirmation{padding:15px 17px;border-radius:14px;margin-bottom:18px}
.readiness-notes{color:#4f4000;background:#fff5c7}
.readiness-notes ul,.consequence-list{margin:8px 0 0;padding-left:22px;line-height:1.55}
.readiness-notes li,.workflow-error p,.preview-warning{overflow-wrap:anywhere}
.workflow-error{color:#690005;background:var(--danger-bg)}
.workflow-error p,.incomplete-confirmation p{margin:5px 0 0;line-height:1.5}
.export-preview{display:grid;grid-template-columns:minmax(190px,1fr) minmax(300px,1.4fr);gap:14px 28px;padding:17px 0 20px;border-top:1px solid var(--line)}
.export-preview>*{min-width:0}
.export-preview>div>p{margin:4px 0 0;color:var(--muted);font-size:14px}
.export-preview dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:18px;margin:0}
.export-preview dl div{display:grid;min-width:0;gap:3px}
.export-preview dt{color:var(--muted);font-size:13px}
.export-preview dd{margin:0;font-size:20px;font-weight:750;font-variant-numeric:tabular-nums}
.preview-warning{grid-column:1/-1;margin:0;padding:13px 15px;border-radius:14px;color:#4f4000;background:#fff5c7;line-height:1.5}
.completion-action,.export-result{align-items:center;padding-top:20px;border-top:1px solid var(--line)}
.completion-action p{margin-top:4px}
.export-copy{min-width:0;max-width:780px}
.export-facts{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:14px 24px;margin:18px 0}
.export-facts div{display:grid;gap:4px}
.export-facts dt{color:var(--muted);font-size:13px}
.export-facts dd{margin:0;font-size:17px;font-weight:750;font-variant-numeric:tabular-nums}
.export-facts .export-hash{grid-column:1/-1}
.export-hash code{display:block;max-width:100%;overflow-wrap:anywhere;color:#245148;font-size:13px;font-weight:650}
.export-note{font-size:14px}
.download-button{flex:0 0 auto}
.complete-dialog{width:min(920px,calc(100vw - 32px));max-height:calc(100vh - 32px);padding:0;border:0;border-radius:16px;color:var(--text);background:var(--surface);box-shadow:0 20px 60px rgba(18,45,38,.24);overscroll-behavior:contain}
.complete-dialog::backdrop{background:rgba(16,29,26,.52)}
.complete-dialog form{min-width:0;max-height:calc(100vh - 32px);overflow-y:auto;padding:26px;scroll-padding-block:24px 140px;scrollbar-color:#91aaa3 transparent;scrollbar-width:thin}
.complete-dialog form::-webkit-scrollbar{width:9px}
.complete-dialog form::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#91aaa3;background-clip:padding-box}
body:has(.complete-dialog[open]){overflow:hidden}
.completion-form-fallback{margin-top:18px}
.completion-form-fallback form{min-width:0;padding:26px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}
.dialog-heading h2{margin:0 0 8px;font-size:25px}
.dialog-heading p{max-width:65ch;margin:0;color:var(--muted);line-height:1.5}
.resolution-error-summary{margin-top:20px;padding:15px 17px;border-radius:14px;color:#690005;background:var(--danger-bg);overflow-wrap:anywhere}
.resolution-error-summary ul{margin:8px 0 0;padding-inline-start:22px;line-height:1.5}
.resolution-error-summary p{margin:8px 0 0}
.index-decrease-review{min-width:0;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.resolution-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.resolution-toolbar>div{min-width:0}
.resolution-toolbar h3{margin:0 0 6px;font-size:18px;line-height:1.35;overflow-wrap:anywhere}
.resolution-toolbar p{max-width:68ch;margin:0;color:var(--muted);font-size:14px;line-height:1.5}
.bulk-resolution-button{flex:0 0 auto}
.resolution-status{margin:16px 0 0;padding:10px 12px;border-radius:10px;color:#33423e;background:var(--surface-2);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.decisions-verified{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-top:16px;padding:13px 15px;border-radius:12px;color:#004d3d;background:var(--primary-2)}
.decisions-verified>div{min-width:0}
.decisions-verified p{margin:3px 0 0;color:#285d50;font-size:13px;line-height:1.45}
.decisions-verified:focus-visible,.resolution-error-summary:focus-visible{outline:3px solid rgba(0,107,87,.32);outline-offset:3px}
.text-action{flex:0 0 auto;color:#005c49;font-weight:750;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.resolution-list{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line)}
.resolution-item{min-width:0;padding:17px 0;border-bottom:1px solid var(--line)}
.resolution-item.is-resolved{border-bottom-color:#b9d8cf}
.resolution-identity{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;min-width:0}
.resolution-identity>div{display:grid;min-width:0;gap:3px}
.resolution-identity strong,.resolution-identity span{overflow-wrap:anywhere}
.resolution-identity span{color:var(--muted);font-size:14px}
.resolution-identity code{flex:0 1 auto;max-width:42%;padding:3px 7px;border-radius:6px;color:#245148;background:var(--surface-2);font-size:13px;overflow-wrap:anywhere}
.resolution-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 18px;margin:14px 0}
.resolution-values div{display:grid;min-width:0;gap:3px}
.resolution-values dt{color:var(--muted);font-size:12px}
.resolution-values dd{margin:0;font-size:14px;font-weight:750;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.resolution-control,.roll-digits-control{display:grid;min-width:0;gap:7px}
.resolution-control label,.roll-digits-control label{color:#33423e;font-size:13px;font-weight:750}
.resolution-control select,.roll-digits-control select{width:100%;min-width:0;max-width:100%;min-height:46px;padding:10px 38px 10px 12px;border:1px solid #9eb0ab;border-radius:12px;color:var(--text);background:#fbfdfc;font:inherit;font-size:16px;outline:none}
.resolution-control select,.roll-digits-control select{scroll-margin-block:24px 140px}
.resolution-control select:focus-visible,.roll-digits-control select:focus-visible{border-color:var(--primary);outline:3px solid rgba(0,107,87,.24);outline-offset:2px}
.resolution-control select:invalid{color:var(--muted)}
.roll-digits-control{margin-top:10px;padding:12px;border-radius:12px;background:#f4f8f6}
.roll-digits-control small{color:var(--muted);font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.verified-resolution-copy{display:grid;gap:3px;padding:11px 13px;border-radius:10px;color:#004d3d;background:#edf8f4}
.verified-resolution-copy span{font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.incomplete-confirmation{margin:20px 0 0;color:#4f4000;background:#fff5c7}
.confirmation-checks{display:grid;gap:10px;margin-top:20px}
.confirmation-check{display:flex;grid-template-columns:none;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfdfc;cursor:pointer}
.confirmation-check:hover{border-color:#91aaa3;background:#f6faf8}
.confirmation-check:has(input:checked){border-color:#73a99c;background:#edf8f4}
.confirmation-check input{flex:0 0 auto;width:20px;height:20px;margin:2px 0 0;padding:0;border-radius:5px;accent-color:var(--primary)}
.confirmation-check span{display:grid;min-width:0;gap:4px;color:var(--text);font-weight:400;line-height:1.4;overflow-wrap:anywhere}
.confirmation-check strong{font-weight:750}
.confirmation-check small{color:var(--muted);font-size:13px;line-height:1.45}
.unsafe-confirmation{border-color:#decf8d;background:#fffae5}
.consequence-list{margin-top:20px;color:#33423e}
.dialog-actions{position:sticky;bottom:-26px;display:flex;justify-content:flex-end;gap:10px;margin:24px -26px -26px;padding:16px 26px;border-top:1px solid var(--line);background:rgba(255,255,255,.97);backdrop-filter:blur(12px)}
.dialog-actions button{min-width:0;white-space:normal;text-align:center}
button:hover,.primary-button:hover,.secondary-button:hover{filter:brightness(.96)}
button:active,.primary-button:active,.secondary-button:active{filter:brightness(.91)}
button:disabled,.primary-button[aria-disabled="true"]{cursor:wait;opacity:.58}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(0,107,87,.32);outline-offset:3px}
[hidden]{display:none!important}
@media(max-width:820px){.completion-header,.completion-action,.export-result{align-items:stretch;flex-direction:column}.workflow-status{align-self:flex-start}.completion-action .primary-button,.download-button{width:100%}.export-facts{grid-template-columns:1fr 1fr}.export-preview{grid-template-columns:1fr}}
@media(max-width:620px){.resolution-toolbar,.decisions-verified{align-items:stretch;flex-direction:column}.bulk-resolution-button{width:100%}.resolution-values{grid-template-columns:1fr 1fr}.decisions-verified .text-action{align-self:flex-start}}
@media(max-width:520px){.completion-panel{padding:20px}.progress-breakdown{display:grid;gap:6px}.export-preview dl{grid-template-columns:1fr 1fr;gap:10px}.export-preview dt{font-size:12px;line-height:1.3}.export-facts{grid-template-columns:1fr}.export-facts .export-hash{grid-column:auto}.complete-dialog{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.complete-dialog form{max-height:calc(100vh - 16px);padding:18px}.completion-form-fallback form{padding:18px}.resolution-identity{flex-direction:column;gap:8px}.resolution-identity code{max-width:100%}.dialog-actions{bottom:-18px;flex-direction:column-reverse;margin:24px -18px -18px;padding:14px 18px}.dialog-actions button,.dialog-actions .secondary-button{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important}}
