/* Shared control primitives. Opt in with classes; do not reshape game hit detection. */
.ag-ui{font:var(--ag-type-body1);font-synthesis:none;color:var(--ag-ui-text)}
.ag-button,.ag-select,.ag-tab{font-family:var(--ag-font-sans);font-size:var(--ag-body1-size);font-weight:500;line-height:var(--ag-body1-line);min-height:var(--ag-control-lg);border:1px solid var(--ag-ui-border-strong);border-radius:var(--ag-control-radius);padding:var(--ag-space-2) var(--ag-space-4);color:var(--ag-ui-text);background:var(--ag-ui-surface);transition:background-color var(--ag-duration) var(--ag-ease),border-color var(--ag-duration) var(--ag-ease);}
.ag-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--ag-space-2);text-align:center;cursor:pointer;touch-action:manipulation}
.ag-button--primary{color:var(--ag-ui-on-accent);background:var(--ag-ui-accent);border-color:var(--ag-ui-accent)}
.ag-button:hover:not(:disabled),.ag-tab:hover:not(:disabled){background:color-mix(in srgb,var(--ag-ui-accent) 15%,var(--ag-ui-surface))}
.ag-button--primary:hover:not(:disabled){background:var(--ag-ui-accent);filter:brightness(.9)}
.ag-button:active,.ag-tab:active{transform:none}
.ag-tab[aria-selected=true],.ag-tab[aria-pressed=true]{color:var(--ag-ui-text);border-color:var(--ag-ui-accent);background:color-mix(in srgb,var(--ag-ui-accent) 20%,var(--ag-ui-surface))}
.ag-button:focus-visible,.ag-select:focus-visible,.ag-tab:focus-visible{outline:var(--ag-focus-width) solid var(--ag-ui-accent);outline-offset:2px;box-shadow:0 0 0 var(--ag-focus-halo) color-mix(in srgb,var(--ag-ui-accent) 50%,transparent)}
.ag-button:disabled,.ag-select:disabled,.ag-tab:disabled{opacity:var(--ag-disabled-opacity);pointer-events:none;cursor:default}
.ag-dialog{border:1px solid var(--ag-ui-border-strong);border-radius:var(--ag-dialog-radius);background:var(--ag-ui-surface);color:var(--ag-ui-text);padding:var(--ag-space-6);box-shadow:0 16px 48px #0008;max-width:calc(100vw - 32px);max-height:calc(100svh - 32px);overflow:auto}
.ag-dialog::backdrop{background:#0008}
.ag-dialog-title{font:var(--ag-type-h2);margin:0 48px 16px 0}
.ag-control-icon{width:var(--ag-icon-md);height:var(--ag-icon-md);stroke-width:var(--ag-icon-stroke)}
@media(pointer:coarse),(max-width:767px){.ag-button,.ag-select,.ag-tab{min-height:var(--ag-touch-target)}.ag-select{font-size:16px}}
/* The 48px hit area / 16px mobile select are explicit game accessibility adaptations. */
