/* Shared V1 primitives. Load after legacy, experience and role composition CSS.
 * Opt in actions deliberately: navigation, selection rows and tabs are NOT CTAs.
 * Important declarations here resolve legacy utility/inline presentation only;
 * visibility, eligibility, handlers and accessible semantics remain controller-owned. */
:root {
    --v1-surface: var(--bg-surface, #fff);
    --v1-canvas: var(--bg-primary, #f4f7f7);
    --v1-ink: var(--text-dark, #172d3a);
    --v1-control-border: #819399;
    --v1-control-hover-border: #819399;
    --v1-selected-surface: var(--accent-light, #f2f0e6);
    --v1-danger-surface: #fff1ee;
    --v1-gap: 1.5rem;
    --v1-field-gap: .5rem;
}

:is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary) {
    --v1-action-fill: var(--v1-primary-fill, var(--btn-primary-bg, var(--accent-primary, #76682b)));
    --v1-action-hover-fill: var(--v1-primary-hover-fill, var(--btn-primary-hover-bg, var(--accent-primary-hover, #605423)));
    --v1-action-text: var(--v1-primary-text, var(--teacher-action-text, #fff));
    --v1-action-hover-text: var(--v1-primary-hover-text, var(--teacher-action-hover-text, #fff));
    --v1-action-border: var(--v1-primary-border, var(--v1-action-fill));
    --v1-action-hover-border: var(--v1-primary-hover-border, var(--v1-action-hover-fill));
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    box-sizing: border-box;
    min-width: 44px;
    min-height: 48px !important;
    max-width: 100%;
    height: auto;
    padding: .75rem 1.125rem !important;
    border: 1px solid var(--v1-control-border) !important;
    border-radius: .5rem !important;
    background: var(--v1-surface) !important;
    color: var(--v1-surface-ink, var(--v1-ink)) !important;
    font-family: var(--app-font-family, inherit);
    font-size: .875rem !important;
    font-weight: 650;
    font-style: normal !important;
    line-height: 1.5 !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    text-decoration: none;
    text-align: center;
    white-space: normal !important;
    overflow-wrap: anywhere;
    box-shadow: none !important;
    transform: none !important;
    opacity: 1;
    cursor: pointer;
    transition: background-color 140ms, border-color 140ms, color 140ms;
}
/* Named school inputs apply only to a deliberately migrated control. */
.v1-action:is(.btn-retro-orange, [data-theme-action="orange"]) {
    --v1-action-fill: var(--v1-orange-fill); --v1-action-hover-fill: var(--v1-orange-hover-fill);
    --v1-action-text: var(--v1-orange-text); --v1-action-hover-text: var(--v1-orange-hover-text);
    --v1-action-border: var(--v1-orange-border); --v1-action-hover-border: var(--v1-orange-hover-border);
}
.v1-action:is(.btn-retro-brown, [data-theme-action="brown"]) {
    --v1-action-fill: var(--v1-brown-fill); --v1-action-hover-fill: var(--v1-brown-hover-fill);
    --v1-action-text: var(--v1-brown-text); --v1-action-hover-text: var(--v1-brown-hover-text);
    --v1-action-border: var(--v1-brown-border); --v1-action-hover-border: var(--v1-brown-hover-border);
}
.v1-action:is(.btn-retro-olive, [data-theme-action="olive"]) {
    --v1-action-fill: var(--v1-olive-fill); --v1-action-hover-fill: var(--v1-olive-hover-fill);
    --v1-action-text: var(--v1-olive-text); --v1-action-hover-text: var(--v1-olive-hover-text);
    --v1-action-border: var(--v1-olive-border); --v1-action-hover-border: var(--v1-olive-hover-border);
}
.v1-action:is(.btn-retro-sage, [data-theme-action="groups"]) {
    --v1-action-fill: var(--v1-groups-fill); --v1-action-hover-fill: var(--v1-groups-hover-fill);
    --v1-action-text: var(--v1-groups-text); --v1-action-hover-text: var(--v1-groups-hover-text);
    --v1-action-border: var(--v1-groups-border); --v1-action-hover-border: var(--v1-groups-hover-border);
}
.v1-action:is(.btn-retro-slate, [data-theme-action="management"]) {
    --v1-action-fill: var(--v1-management-fill); --v1-action-hover-fill: var(--v1-management-hover-fill);
    --v1-action-text: var(--v1-management-text); --v1-action-hover-text: var(--v1-management-hover-text);
    --v1-action-border: var(--v1-management-border); --v1-action-hover-border: var(--v1-management-hover-border);
}
.v1-action:is(.btn-retro-plum, [data-theme-action="forms"]) {
    --v1-action-fill: var(--v1-forms-fill); --v1-action-hover-fill: var(--v1-forms-hover-fill);
    --v1-action-text: var(--v1-forms-text); --v1-action-hover-text: var(--v1-forms-hover-text);
    --v1-action-border: var(--v1-forms-border); --v1-action-hover-border: var(--v1-forms-hover-border);
}
.v1-action:is(.btn-neutral, [data-theme-action="neutral"]) {
    --v1-action-fill: var(--v1-neutral-fill); --v1-action-hover-fill: var(--v1-neutral-hover-fill);
    --v1-action-text: var(--v1-neutral-text); --v1-action-hover-text: var(--v1-neutral-hover-text);
    --v1-action-border: var(--v1-neutral-border); --v1-action-hover-border: var(--v1-neutral-hover-border);
}
:is(.v1-action, .teacher-pilot-action)[data-variant="primary"],
.teacher-home-flow .role-home-primary {
    background: var(--v1-action-fill) !important;
    border-color: var(--v1-action-border) !important;
    color: var(--v1-action-text) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="secondary"] {
    color: var(--v1-secondary-ink, var(--v1-ink)) !important;
    border-color: var(--v1-secondary-border, var(--v1-control-border)) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="tertiary"] {
    background: transparent !important;
    border-color: transparent !important;
    color: var(--v1-tertiary-ink, var(--v1-ink)) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="destructive"] {
    color: var(--v1-danger-ink, #a3312e) !important;
    border-color: var(--v1-danger-ink, #a3312e) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="destructive-confirm"] {
    background: var(--v1-danger-fill, #a3312e) !important;
    border-color: var(--v1-danger-border, #a3312e) !important;
    color: var(--v1-danger-text, #fff) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="selected"],
:is(.v1-action, .teacher-pilot-action)[aria-pressed="true"] {
    background: var(--v1-selected-surface) !important;
    color: var(--v1-selected-ink, var(--v1-ink)) !important;
    border-color: currentColor !important;
}
:is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary):is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    opacity: 1;
    background: var(--v1-canvas) !important;
    color: var(--v1-canvas-ink, var(--v1-ink)) !important;
    border-color: var(--v1-control-hover-border) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="primary"]:is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]),
.teacher-home-flow .role-home-primary:is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    background: var(--v1-action-hover-fill) !important;
    border-color: var(--v1-action-hover-border) !important;
    color: var(--v1-action-hover-text) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="secondary"]:is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    color: var(--v1-secondary-hover-ink, var(--v1-ink)) !important;
    border-color: var(--v1-secondary-hover-border, var(--v1-control-hover-border)) !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="tertiary"]:is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    color: var(--v1-tertiary-hover-ink, var(--v1-ink)) !important;
    border-color: transparent !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="destructive"]:is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    background: var(--v1-danger-surface) !important;
    color: #a3312e !important;
    border-color: #a3312e !important;
}
:is(.v1-action, .teacher-pilot-action)[data-variant="destructive-confirm"]:is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    background: var(--v1-danger-hover-fill, #852724) !important;
    color: var(--v1-danger-hover-text, #fff) !important;
    border-color: var(--v1-danger-hover-border, #852724) !important;
}
:is(.v1-action, .teacher-pilot-action):is([data-variant="selected"], [aria-pressed="true"]):is(:hover, :active):not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
    background: var(--v1-selected-surface) !important;
    color: var(--v1-selected-ink, var(--v1-ink)) !important;
    border-color: currentColor !important;
}
:is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary):is(:disabled, [aria-disabled="true"]) {
    opacity: .62 !important;
    cursor: not-allowed;
}
:is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary)[aria-busy="true"] { cursor: progress; }
:is(.v1-action, .teacher-pilot-action)[data-size="compact"],
.v1-action:is(.btn-sm, .btn-toolbar, [data-icon-only="true"]) { min-height: 44px !important; padding: .5rem .75rem !important; }
.v1-action[data-icon-only="true"] { min-width: 44px; }
.v1-action > :is(svg, .v1-action-icon) { width: 1.125rem; height: 1.125rem; flex-shrink: 0; }
.v1-action-spinner { width: 1rem; height: 1rem; flex-shrink: 0; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; }
[aria-busy="true"] > .v1-action-spinner { animation: v1-action-spin .8s linear infinite; }
@keyframes v1-action-spin { to { transform: rotate(360deg); } }

/* Component foundations opt in, so rich editors, calendar cells, native color
 * pickers, file inputs and selection controls retain their specialized layout. */
.v1-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; min-width: 0; }
.v1-actions > * { max-width: 100%; }
:is(.v1-action, .teacher-pilot-action, .v1-actions, .v1-field, .v1-dialog):is(.hidden, [hidden]) { display: none !important; }
.v1-card { min-width: 0; padding: 1.5rem; background: var(--v1-surface); color: var(--v1-surface-ink, var(--v1-ink)); border: 1px solid var(--v1-border, #d6e0e3); border-radius: .75rem; box-shadow: none; }
.v1-title { font-family: var(--app-font-family, inherit); font-size: 2.25rem; line-height: 1.2; font-weight: 700; letter-spacing: -.03em; overflow-wrap: anywhere; }
.v1-section-title { font-family: var(--app-font-family, inherit); font-size: 1.5rem; line-height: 1.25; font-weight: 700; letter-spacing: -.02em; overflow-wrap: anywhere; }
.v1-copy { font-size: 1rem; line-height: 1.6; max-width: 70ch; overflow-wrap: anywhere; }
.v1-field { display: grid; gap: var(--v1-field-gap); min-width: 0; }
.v1-field + .v1-field { margin-top: 1.25rem; }
.v1-field > label { font-size: .875rem; line-height: 1.5; font-weight: 650; }
.v1-input,
.v1-field :is(input:not([type="checkbox"], [type="radio"], [type="color"], [type="file"], [type="range"], [type="hidden"]), select, textarea) {
    box-sizing: border-box; width: 100%; max-width: 100%; min-width: 0; min-height: 48px;
    padding: .75rem; border: 1px solid var(--v1-control-border); border-radius: .5rem;
    background: var(--v1-surface); color: var(--v1-surface-ink, var(--v1-ink));
    font-family: var(--app-font-family, inherit); font-size: 1rem !important; line-height: 1.5;
    transition: background-color 140ms, border-color 140ms, color 140ms;
}
:is(.v1-input, .v1-field input, .v1-field select, .v1-field textarea)[aria-invalid="true"] { border-color: var(--v1-danger-ink, #a3312e); border-width: 2px; }
:is(.v1-input, .v1-field input, .v1-field select, .v1-field textarea):focus { border-color: var(--v1-control-border) !important; }
:is(.v1-input, .v1-field input, .v1-field select, .v1-field textarea)[aria-invalid="true"]:focus { border-color: var(--v1-danger-ink, #a3312e) !important; }
:is(.v1-input, .v1-field input, .v1-field select, .v1-field textarea):disabled { opacity: .62; cursor: not-allowed; }
:is(.v1-input, .v1-field input, .v1-field textarea)[readonly] { background: var(--v1-canvas); color: var(--v1-canvas-ink, var(--v1-ink)); }
.v1-check { display: flex; align-items: center; gap: .75rem; min-height: 44px; font-size: 1rem; line-height: 1.5; }
.v1-check > input { flex-shrink: 0; width: 1.125rem; height: 1.125rem; }
.v1-help { font-size: .875rem; line-height: 1.5; overflow-wrap: anywhere; }
.v1-error { color: #a3312e; background: #fff1ee; padding: .75rem; border-radius: .5rem; font-size: .875rem; line-height: 1.5; overflow-wrap: anywhere; }
.v1-dialog { display: flex; flex-direction: column; box-sizing: border-box; min-width: 0; max-width: calc(100vw - 2rem); max-height: calc(100dvh - 2rem); overflow: hidden; border: 1px solid var(--v1-border, #d6e0e3); border-radius: .75rem; background: var(--v1-surface); color: var(--v1-surface-ink, var(--v1-ink)); }
.v1-dialog-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-shrink: 0; padding: 1.25rem 1.5rem; }
.v1-dialog-body { min-height: 0; overflow-y: auto; padding: 1.5rem; }
:is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary, .v1-input, .v1-field input, .v1-field select, .v1-field textarea, .v1-check input):focus-visible {
    outline: 3px solid var(--v1-focus, #76682b) !important; outline-offset: 3px !important;
    /* A surface-colored separation keeps focus distinct on a matching fill. */
    box-shadow: 0 0 0 3px var(--v1-surface) !important;
}
@media (max-width: 640px) {
    .v1-card, .v1-dialog-header, .v1-dialog-body { padding: 1.25rem; }
    .v1-title { font-size: 1.875rem; }
    .v1-actions[data-layout="form"] > :is(.v1-action, .teacher-pilot-action) { flex: 1 1 100%; width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    :is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary, .v1-input, .v1-field input, .v1-field select, .v1-field textarea) { transition: none !important; }
    .v1-action-spinner { animation: none !important; }
}
@media (forced-colors: active) {
    :is(.v1-action, .teacher-pilot-action, .teacher-home-flow .role-home-primary) { border-color: ButtonText !important; forced-color-adjust: auto; }
    :is(.v1-action, .teacher-pilot-action)[aria-pressed="true"] { border-width: 2px !important; }
    :is(.v1-action, .teacher-pilot-action):focus-visible { outline-color: Highlight !important; }
}
