/* Shared opt-in primitives. Geometry stays with each page/component. */
.ecg-ui {font-family:var(--ecg-ui-font-family);color:var(--ecg-ui-text);background:var(--ecg-ui-bg)}
.ecg-button {--button-bg:var(--ecg-ui-action-bg);--button-border:var(--ecg-ui-border);--button-text:var(--ecg-ui-silver-bright);display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--ecg-ui-control-height);padding:12px 18px;border:1px solid var(--button-border);border-radius:var(--ecg-ui-control-radius);background:var(--button-bg);box-shadow:var(--ecg-ui-shadow-raised);color:var(--button-text);font:700 14px/1.4 var(--ecg-ui-font-family);text-align:center;text-decoration:none;cursor:pointer;transition:transform var(--ecg-ui-motion-fast),border-color var(--ecg-ui-motion-fast),box-shadow var(--ecg-ui-motion-fast)}
.ecg-button--primary {--button-bg:var(--ecg-ui-selected-surface);--button-border:var(--ecg-ui-selected-border);--button-text:var(--ecg-ui-selected-text)}
.ecg-button--success {--button-bg:var(--ecg-ui-success-action-bg);--button-border:var(--ecg-ui-success-border);--button-text:var(--ecg-ui-success-text)}
.ecg-button--danger {--button-text:var(--ecg-ui-danger)}
.ecg-button:focus-visible,.ecg-field:focus-visible {outline:3px solid var(--ecg-ui-focus);outline-offset:4px}
.ecg-button:active:not(:disabled):not([aria-disabled="true"]) {transform:translateY(2px);box-shadow:var(--ecg-ui-shadow-inset)}
.ecg-button:disabled,.ecg-button[aria-disabled="true"] {background:var(--ecg-ui-locked-bg);color:var(--ecg-ui-muted);border-color:var(--ecg-ui-locked-border);box-shadow:var(--ecg-ui-shadow-inset);cursor:not-allowed}
.ecg-button svg {width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ecg-field {width:100%;min-height:48px;border:1px solid var(--ecg-ui-border-soft);border-radius:var(--ecg-ui-control-radius);background:var(--ecg-ui-inset);box-shadow:var(--ecg-ui-shadow-inset);padding:12px;color:var(--ecg-ui-text);font:400 16px/1.5 var(--ecg-ui-font-family)}
.ecg-panel {border:1px solid var(--ecg-ui-border-soft);border-radius:var(--ecg-ui-radius-card);background:var(--ecg-ui-inset);box-shadow:var(--ecg-ui-shadow-inset);color:var(--ecg-ui-text)}
@media(hover:hover){.ecg-button:hover:not(:active):not(:disabled):not([aria-disabled="true"]){transform:translateY(-2px);border-color:var(--ecg-ui-accent-soft)}}
@media(prefers-reduced-motion:reduce){.ecg-button{transition:none}.ecg-button:hover,.ecg-button:active{transform:none!important}}
