:root,[data-theme=light]{--color-bg: #f6f4f0;--color-surface: #fff;--color-nested: #fafaf9;--color-text: #1c1917;--color-muted: #57534e;--color-accent: #245c4a;--color-accent-hover: #1b4638;--color-danger: #9b1c1c;--color-border: #d6d3d1;--color-glow: #f59e0b;--color-banner: #1e3a5f;--color-menubar: #16324f;--color-menubar-border: #0f243a;--color-error-bg: #fef2f2;--color-success-bg: #ecfdf5;--color-dirty: #c87606;--color-dirty-bg: #fef3c7;--color-button-secondary: #e7e5e4;--touch-min: 44px}[data-theme=dark]{--color-bg: #1c1917;--color-surface: #292524;--color-nested: #1c1917;--color-text: #f5f5f4;--color-muted: #a8a29e;--color-accent: #5eead4;--color-accent-hover: #2dd4bf;--color-danger: #fca5a5;--color-border: #57534e;--color-glow: #fbbf24;--color-banner: #0f172a;--color-menubar: #111827;--color-menubar-border: #020617;--color-error-bg: #450a0a;--color-success-bg: #064e3b;--color-dirty: #c87606;--color-dirty-bg: #422006;--color-button-secondary: #44403c}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}a{color:var(--color-accent)}a.button,a.button-secondary{display:inline-flex;align-items:center;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--color-glow);outline-offset:2px}.page{display:grid;gap:1rem}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:.75rem;padding:1rem}.stack{display:grid;gap:.85rem}.field{display:grid;gap:.35rem}.field label{font-weight:600}.field input,.field select,.field textarea{min-height:var(--touch-min);width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:.5rem;font:inherit}.field textarea{min-height:6rem;resize:vertical}.actions{display:flex;flex-wrap:wrap;gap:.75rem}.button,.button-secondary{min-height:var(--touch-min);padding:.5rem 1rem;border:0;border-radius:.5rem;font:inherit;font-weight:600;cursor:pointer}.button{background:var(--color-accent);color:#fff}.button:hover{background:var(--color-accent-hover)}.button:disabled{opacity:.65;cursor:not-allowed}.button-danger{min-height:var(--touch-min);padding:.5rem 1rem;border:0;border-radius:.5rem;font:inherit;font-weight:600;cursor:pointer;background:var(--color-danger);color:#fff}.button-danger:disabled{opacity:.65;cursor:not-allowed}.page-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem}.page-header h1{margin:0}.button-secondary{background:var(--color-button-secondary);color:var(--color-text)}.button-secondary:disabled{opacity:.65;cursor:not-allowed}.muted{color:var(--color-muted)}.error{color:var(--color-danger)}.error-banner{display:grid;gap:.35rem;border:1px solid var(--color-danger);background:var(--color-error-bg);padding:.75rem 1rem;border-radius:.5rem}.success-banner{display:grid;gap:.35rem;border:1px solid var(--color-accent);background:var(--color-success-bg);color:var(--color-accent);padding:.75rem 1rem;border-radius:.5rem}.error-banner p,.success-banner p{margin:0}.error-banner:focus,.success-banner:focus{outline:3px solid var(--color-glow);outline-offset:2px}.required-marker{color:var(--color-danger);font-weight:700}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--color-danger);background:var(--color-error-bg)}.choice-row{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem}.choice-row label{display:inline-flex;align-items:center;gap:.4rem;min-height:var(--touch-min);font-weight:500}.field.is-dirty,.field:has(>input.ng-dirty),.field:has(>select.ng-dirty),.field:has(>textarea.ng-dirty),.field:has(>app-filterable-combobox.ng-dirty),.choice-row.is-dirty,.choice-row:has(>input.ng-dirty),.checkbox-row:has(>input.ng-dirty),.list-button.is-dirty{position:relative}.field.is-dirty:after,.field:has(>input.ng-dirty):after,.field:has(>select.ng-dirty):after,.field:has(>textarea.ng-dirty):after,.field:has(>app-filterable-combobox.ng-dirty):after,.choice-row.is-dirty:after,.choice-row:has(>input.ng-dirty):after,.checkbox-row:has(>input.ng-dirty):after,.list-button.is-dirty:after{content:"";position:absolute;top:0;right:0;width:.7rem;height:.7rem;background:var(--color-dirty);clip-path:polygon(100% 0,0 0,100% 100%);pointer-events:none}.section-toggle.has-dirty,h2.has-dirty{border-bottom:2px solid var(--color-dirty)}.app-glow{filter:drop-shadow(0 0 .35rem var(--glow-color, var(--color-glow))) drop-shadow(0 0 .7rem var(--glow-color, var(--color-glow)))}
