/* Shared action/field geometry across all three display modes. */
:root{--ux-control:44px;--ux-xs:4px;--ux-sm:8px;--ux-md:16px;--ux-lg:24px;--ux-xl:32px;--ux-card:20px;--ux-modal:24px;--ux-radius:12px}
body.ux :is(button,.nav-button,.text-button,.v7-day-link){min-height:var(--ux-control);height:auto;padding:10px 16px;line-height:1.35;border-radius:var(--ux-radius);box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px}
body.ux :is(input:not([type=checkbox]):not([type=radio]),select){min-height:var(--ux-control);padding:10px 12px;box-sizing:border-box;font-size:16px}
body.ux :is(input[type=checkbox],input[type=radio]){width:20px;height:20px;flex-shrink:0}
body.ux :is(form label,form fieldset){margin-bottom:var(--ux-md)}
body.ux :is(.v7-actions,.v12-actions,.v63-proposal-actions,.ux-attendance,.ux-weekbar){display:flex;flex-wrap:wrap;align-items:center;gap:var(--ux-sm);margin-block:var(--ux-md)}
body.ux .v7-card{padding:var(--ux-card);margin:0;border-radius:var(--ux-radius)}
body.ux #content{display:grid;gap:var(--ux-lg);min-width:0}
body.ux #content>section,.ux-day{min-width:0}
body.ux h1{font-size:clamp(26px,3vw,36px);line-height:1.2}
body.ux h2{font-size:22px;line-height:1.3;margin:0 0 16px}
body.ux h3{font-size:18px;line-height:1.35;margin:0 0 12px}
body.ux p{line-height:1.55;margin:8px 0 12px}
body.ux .ux-cards,body.ux .ux-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ux-md)}
body.ux .ux-agenda{display:grid;gap:var(--ux-lg)}
body.ux .ux-day-title{text-transform:capitalize}
body.ux .ux-summary{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ux-sm);margin-block:var(--ux-md)}
body.ux .ux-weekbar{margin:0}.ux-week-label{font-weight:600}
body.ux .ux-court,body.ux .ux-person{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-block:12px;border-bottom:1px solid var(--line)}
body.ux .v7-bottom{grid-template-columns:repeat(4,minmax(0,1fr))}
body.ux .v7-menu{display:grid;gap:8px;margin-top:8px}
body.ux .v7-menu :is(a,button){justify-content:flex-start;text-align:left}
body.ux .v7-dialog,body.ux dialog#editor{padding:var(--ux-modal);max-height:calc(var(--v7-viewport-height,100dvh) - 32px);overflow:auto;border-radius:var(--ux-radius);width:min(680px,calc(100vw - 32px));box-sizing:border-box}
body.ux .v7-dialog :is(.v8-audiences,.v8-player-choices,.v9-replies,form){max-height:none;overflow:visible}
body.ux .v7-dialog .v7-actions{position:sticky;bottom:-24px;background:var(--paper,#fff);padding:16px 0;margin:0;z-index:2}
body.ux .v8-audiences details{padding:0;border:0;box-shadow:none;margin:0}.ux .v8-audiences details>summary{display:none}
body.ux .v8-audiences .v6-check{min-height:44px;display:flex;align-items:center;gap:12px}
body.ux .v8-message-grid{display:grid;grid-template-columns:1fr;gap:8px}
body.ux .v8-message-card.ux-message{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 16px;padding:16px 20px;border-top:1px solid var(--line)}
body.ux .ux-message :is(.v8-message-heading,.v8-message-excerpt){grid-column:1}
body.ux .ux-message>button{grid-column:2;grid-row:1/4;align-self:center}
body.ux .ux-message p{font-size:13px;margin:4px 0;grid-column:1}
body.ux .ux-message .v8-message-excerpt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.ux .ux-message .v8-message-heading h3{font-size:17px;margin:0}
body.ux .ux-message>p:nth-of-type(2){display:none}
body.ux[data-display-mode=visual] .ux-trip{border-top:4px solid #638961;background:linear-gradient(145deg,#f2f8f2,#fff 55%);padding:24px}
body.ux[data-display-mode=minimal] .ux-trip{background:transparent;border:0;border-bottom:1px solid var(--line);box-shadow:none;border-radius:0;padding:20px 4px}
body.ux[data-display-mode=minimal] .ux-cards{grid-template-columns:1fr}
body.ux [hidden]{display:none!important}
body.ux .selected{background:#215a46;color:#fff;border:1px solid #215a46}
@media(max-width:650px){body.ux{--ux-card:16px;--ux-modal:16px;--ux-lg:20px}body.ux .ux-cards,body.ux .ux-detail-grid{grid-template-columns:1fr}body.ux .ux-weekbar{display:grid;grid-template-columns:1fr 1fr}body.ux .ux-weekbar>button:nth-child(2){grid-column:1/-1;grid-row:2}body.ux .ux-weekbar>button:nth-child(3){grid-column:2;grid-row:1}body.ux .ux-attendance{display:grid;grid-template-columns:1fr 1fr}body.ux .ux-attendance>button:last-child{grid-column:1/-1}body.ux .v7-dialog{width:calc(100vw - 16px);max-height:calc(var(--v7-viewport-height,100dvh) - 16px)}body.ux .ux-message>button{grid-column:1;grid-row:auto;justify-self:start;margin-top:8px}body.ux .v8-message-card.ux-message{grid-template-columns:1fr;padding:16px}body.ux .v7-dialog .v7-actions{bottom:-16px}body.ux h2{font-size:20px}body.ux .v7-menu :is(a,button){width:100%}body.ux .v7-bottom :is(a,button){padding:8px 2px;font-size:12px}}

body.ux .ux-back{justify-self:start}
body.ux label.v6-check{display:flex!important;align-items:center;gap:12px;min-height:44px}
body.ux .ux-alert{padding:12px 0;border-bottom:1px solid var(--line)}
body.ux .ux-alert:last-child{border-bottom:0}

/* One responsive system for all modes: mobile <=760, two columns >760,
   three planning columns >=1400. Detail and workspaces use the page width. */
body.ux{--rp-page:1440px;--rp-settings:1160px;--rp-form:1040px;--rp-gap:20px;--rp-pad:28px;--rp-small:480px;--rp-medium:760px;--rp-large:1100px}
body.ux>header,body.ux>main{max-width:var(--rp-page);padding-inline:var(--rp-pad)}
body.ux #content{width:100%;gap:var(--rp-gap)}
body.ux #content>*{min-width:0}
body.ux :is(.eyebrow,.v95-list td::before){font-size:13px;letter-spacing:0;text-transform:none}
body.ux .intro{padding-top:20px;margin-bottom:20px}
body.ux :is(.v7-toolbar,.v7-toolbar .planning-tabs){margin:0;gap:8px}
body.ux .v7-toolbar{padding:16px;background:#edf2ec;border-radius:12px;align-items:center}
body.ux .v7-toolbar>label{min-width:170px;max-width:300px;flex:0 1 240px}
body.ux :is(.v7-menu,.v12-list,.v8-message-grid){max-width:none;width:100%}
body.ux :is(.ux-cards,.ux-detail-grid,.v7-week-grid,.v7-team-grid,.rp-family-grid,.rp-more-grid,.rp-coach-grid){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--rp-gap);align-items:start}
body.ux .rp-more-column{display:grid;gap:var(--rp-gap)}
body.ux .rp-more-column .v7-menu{grid-template-columns:1fr}
body.ux .rp-person{padding:12px 0;border-bottom:1px solid var(--line)}
body.ux .rp-attention{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 24px}
body.ux .rp-attention>h2{grid-column:1/-1;margin-bottom:4px}
body.ux .rp-attention .ux-alert{padding:8px 0;display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center}
body.ux .rp-attention .ux-alert p{grid-column:1;margin:0}
body.ux .rp-attention .ux-alert :is(a,button){grid-column:2;grid-row:1/3}
body.ux .rp-trip-heading p{margin:4px 0}
body.ux .rp-trip-heading h3{margin:4px 0;font-size:19px}
body.ux .rp-trip-status{min-width:0}
body.ux .rp-trip-status .ux-summary{margin:4px 0 8px}
body.ux .rp-trip-transport{margin:0;font-size:13px}
body.ux .ux-agenda .ux-cards{grid-template-columns:1fr}
body.ux .ux-agenda .ux-trip{display:grid;grid-template-columns:minmax(240px,1fr) minmax(240px,1.15fr) auto;gap:16px 24px;align-items:center;padding:18px 20px}
body.ux .ux-agenda .ux-trip .activity-change{grid-column:1/-1}
body.ux .ux-agenda .ux-trip>a{justify-self:end}
body.ux[data-display-mode=minimal] .ux-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
body.ux[data-display-mode=minimal] .ux-agenda .ux-cards{grid-template-columns:1fr}
body.ux[data-display-mode=minimal] .ux-trip{padding:18px 12px}
body.ux .rp-coach-grid .ux-trip{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
body.ux .rp-workday{display:grid;gap:6px;max-width:300px}
body.ux .rp-activity-detail{grid-template-columns:minmax(260px,.8fr) minmax(0,1.8fr)}
body.ux .rp-activity-detail>.ux-back{grid-column:1/-1}
body.ux .rp-place{grid-column:1;grid-row:2}
body.ux .rp-activity-detail>.ux-detail-grid{grid-column:2;grid-row:2/5;grid-template-columns:1fr}
body.ux .rp-practical,body.ux .rp-feature{grid-column:1}
body.ux .rp-activity-messages{grid-column:1/-1}
body.ux .rp-activity-detail>details{grid-column:1/-1}
body.ux .v12-preferences{max-width:var(--rp-settings);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
body.ux .v12-preferences>.v7-actions,body.ux .v12-preferences>.v12-receipt{grid-column:1/-1}
body.ux .v95-settings{max-width:var(--rp-settings)}
body.ux .v7-dialog,body.ux dialog#editor{width:min(var(--rp-medium),calc(100vw - 48px));max-width:var(--rp-medium)}
body.ux .v7-dialog.rp-modal-small{width:min(var(--rp-small),calc(100vw - 48px));max-width:var(--rp-small)}
body.ux .v7-dialog.rp-modal-large{width:min(var(--rp-large),calc(100vw - 48px));max-width:var(--rp-large)}
body.ux .v7-dialog :is(.team-form,.activity-form,.generation-form){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;align-items:start;max-width:none}
body.ux .v7-dialog :is(.team-form,.activity-form,.generation-form)>:is(.v7-actions,.v7-error,button,.v8-error){grid-column:1/-1}
body.ux .v7-dialog :is(.team-form,.activity-form,.generation-form)>fieldset{margin:0}
body.ux .v7-dialog .v65-form-section{grid-template-columns:1fr;gap:12px}
body.ux .v7-dialog :is(.v65-form-section,.rp-team-period) label{margin:0 0 12px}
body.ux .v7-dialog .ux-place-picker{grid-column:1/-1;margin:0}
body.ux .v7-dialog .rp-team-period{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
body.ux .rp-team-period>p{grid-column:1/-1}
body.ux .rp-period-label{font-weight:600}
body.ux .v7-dialog .v7-actions{gap:12px;justify-content:flex-end;border-top:1px solid var(--line);margin-top:16px;padding:16px 0;background:var(--paper)}
body.ux .rp-period-consequence{padding:12px 16px;background:#edf2ec;border-radius:8px}
/* Planning and matrices remain workspaces in every mode, including Visual. */
@media(min-width:761px){
body.ux:is([data-display-mode=visual],[data-display-mode=minimal]) :is([data-view=attendance],[data-view=rides]){width:100%}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list{display:table;width:100%;border-collapse:collapse;background:#fff}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list thead{position:static;width:auto;height:auto;clip-path:none;overflow:visible;display:table-header-group}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list tbody{display:table-row-group}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list tbody tr{display:table-row;padding:0;background:transparent;border:0;box-shadow:none}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list tbody td,body.ux:is([data-view=attendance],[data-view=rides]) .v95-list tbody td:first-child{display:table-cell;background:transparent;color:var(--ink);padding:14px 16px;min-height:0;margin:0;border-bottom:1px solid var(--line);vertical-align:middle}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list td::before{display:none}
body.ux:is([data-view=attendance],[data-view=rides]) .v95-list th{padding:12px 16px;text-align:left;background:#edf2ec}
}
@media(min-width:1400px){body.ux .v7-week-grid{grid-template-columns:repeat(3,minmax(0,1fr))}body.ux .rp-attention{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){
body.ux{--rp-pad:16px;--rp-gap:16px}
body.ux :is(.ux-cards,.ux-detail-grid,.v7-week-grid,.v7-team-grid,.rp-family-grid,.rp-more-grid,.rp-coach-grid,.rp-attention,.v12-preferences),body.ux[data-display-mode=minimal] .ux-cards{grid-template-columns:1fr}
body.ux .ux-agenda .ux-trip{display:block;padding:16px}
body.ux .rp-trip-status{margin:16px 0}
body.ux .rp-attention .ux-alert{display:block}
body.ux .rp-attention .ux-alert :is(a,button){margin-top:8px}
body.ux .rp-activity-detail{grid-template-columns:1fr}
body.ux .rp-activity-detail>*{grid-column:auto!important;grid-row:auto!important}
body.ux .v7-toolbar{padding:12px;display:flex;align-items:stretch}
body.ux .v7-toolbar>label{flex:1 1 100%;max-width:none;min-width:0}
body.ux .v7-dialog,body.ux .v7-dialog.rp-modal-small,body.ux .v7-dialog.rp-modal-large,body.ux dialog#editor{width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:16px}
body.ux .v7-dialog :is(.team-form,.activity-form,.generation-form,.rp-team-period,.v65-form-section){grid-template-columns:1fr}
body.ux .v7-dialog .v7-actions{bottom:-16px;gap:8px}
body.ux .v7-dialog .v7-actions button{flex:1 1 auto}
body.ux .v95-list td::before{font-size:13px;text-transform:none;letter-spacing:0}
}
/* Standalone actions keep their natural width; toolbars and mobile footers group them. */
body.ux #content>button{justify-self:start;max-width:100%}
body.ux .rp-coach-grid{grid-template-columns:1fr}
body.ux .rp-coach-grid .ux-trip{display:grid;grid-template-columns:minmax(260px,1fr) minmax(160px,.6fr) minmax(280px,.9fr);gap:20px;align-items:center;padding:20px}
body.ux .rp-coach-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
@media(max-width:760px){body.ux .rp-coach-grid .ux-trip{display:block;padding:16px}body.ux .rp-coach-actions{margin-top:16px}}

/* Specificity matches the inherited dialog rule; fieldsets are logical columns. */
body.ux #v7-dialog :is(.team-form,.activity-form,.generation-form){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;min-width:0}
body.ux #v7-dialog .team-form>fieldset{grid-column:auto;min-width:0}
body.ux #v7-dialog :is(form,fieldset,label,input,select,textarea){box-sizing:border-box;min-width:0;max-width:100%}
body.ux #v7-dialog select{width:100%}
body.ux #v7-dialog .team-form>.v7-actions{grid-column:1/-1}
body.ux .rp-team-summary-period{font-size:14px;margin:8px 0!important}
@media(max-width:760px){body.ux #v7-dialog :is(.team-form,.activity-form,.generation-form){grid-template-columns:1fr}body.ux #v7-dialog .team-form fieldset{grid-column:auto}body.ux #v7-dialog .rp-team-period>p{grid-column:1/-1}}

/* Long forms scroll their fields while the original submit/cancel controls stay visible. */
body.ux #v7-dialog .rp-scroll-form{display:flex;flex-direction:column;align-items:stretch;gap:0;max-height:calc(var(--v7-viewport-height,100dvh) - 180px);overflow:hidden}
body.ux #v7-dialog .rp-form-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;padding:2px}
body.ux #v7-dialog .rp-form-fields>fieldset{grid-column:auto;margin:0;min-width:0}
body.ux #v7-dialog .rp-scroll-form>.v7-actions{flex-shrink:0;position:static;margin-top:12px;padding:12px 0 0;display:flex;border-top:1px solid var(--line)}
body.ux #v7-dialog .rp-scroll-form>.v7-actions button{width:auto;flex:0 1 auto}
body.ux #v7-dialog{overflow-x:hidden}
@media(max-width:760px){body.ux #v7-dialog .rp-form-fields{grid-template-columns:1fr;gap:12px}body.ux #v7-dialog .rp-scroll-form>.v7-actions button{flex:1}body.ux #v7-dialog .rp-form-fields :is(label,select){margin-bottom:8px}}

/* Shared footer tokens and hierarchy, also used by planning-card actions. */
body.ux{--ux-action-height:44px;--ux-action-gap:12px;--ux-action-pad:16px}
body.ux :is(.rp-form-actions,.rp-destructive-actions){display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:stretch;gap:var(--ux-action-gap);padding-block:var(--ux-action-pad);margin:0;grid-column:1/-1}
body.ux .rp-form-actions>button,body.ux .rp-destructive-actions>button{order:0;min-height:var(--ux-action-height);margin:0;padding:10px 16px;line-height:1.35;flex:0 1 auto;width:auto;align-self:stretch}
body.ux .rp-form-actions>.rp-primary-action{background:#215a46;color:white;border:1px solid #215a46;font-weight:600}
body.ux .rp-destructive-actions{border-top:1px solid var(--line);margin-top:24px;padding-bottom:16px}
body.ux .rp-destructive-action{background:#fff;color:#a4272d;border:1px solid #a4272d}
body.ux form>.rp-form-actions{border-top:1px solid var(--line);background:var(--paper,#fff)}
body.ux #v7-dialog .rp-form-actions{justify-content:flex-end;padding:var(--ux-action-pad) 0;gap:var(--ux-action-gap)}
@media(max-width:760px){
body.ux{--ux-action-gap:8px;--ux-action-pad:12px}
body.ux form>.rp-form-actions{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));z-index:2}
body.ux #v7-dialog .rp-form-actions{position:sticky;bottom:-16px;display:flex;background:var(--paper,#fff);box-shadow:0 -4px 12px #173e2910}
body.ux #v7-dialog .rp-scroll-form>.rp-form-actions{position:static}
body.ux .rp-form-actions>button,body.ux #v7-dialog .rp-form-actions>button{flex:1 1 auto;min-width:0}
body.ux .rp-form-actions>.rp-primary-action{flex-basis:100%}
}

/* Equal-height team cards share a row; mobile keeps natural content height. */
body.ux .v7-team-grid{align-items:stretch}
body.ux .v7-team-grid>.v8-overview-card{display:flex;flex-direction:column;margin:0;min-width:0}
body.ux .v7-team-grid>.v8-overview-card>button{align-self:flex-start;margin-top:auto}
body.ux #v7-dialog .rp-excluded-choices{grid-column:1/-1;min-width:0}
body.ux #v7-dialog .rp-proposed-dates,body.ux #v7-dialog .rp-date-list{display:grid;gap:6px}
body.ux #v7-dialog .rp-excluded-choices .v6-check{margin:0;padding:8px;min-height:44px;align-items:center}
body.ux #v7-dialog .rp-excluded-choices h3{margin:10px 0}
body.ux #v7-dialog .rp-other-dates{margin-top:12px}
body.ux #v7-dialog .rp-date-list{max-height:280px;overflow:auto;padding:4px}

/* Shared field geometry: native selects and inputs have identical label gaps.
   Rows use their content height instead of stretching across the dialog. */
body.ux #v7-dialog .rp-form-fields{align-content:start;align-items:start}
body.ux #v7-dialog .rp-form-fields label:not(.v6-check):not(:has(input[type=checkbox],input[type=radio])){display:grid;gap:6px;margin:0;align-content:start}
body.ux #v7-dialog .rp-form-fields label :is(input:not([type=checkbox]):not([type=radio]),select,textarea){margin:0}
body.ux #v7-dialog .rp-form-fields label :is(input:not([type=checkbox]):not([type=radio]),select){height:var(--ux-control,44px)}
body.ux #v7-dialog .rp-form-fields>.ux-place-picker{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px}
@media(max-width:760px){body.ux #v7-dialog .rp-form-fields>.ux-place-picker{grid-template-columns:1fr;gap:12px}}

/* Activity type accents supplement the existing text labels, never statuses. */
body.ux{--ux-type-training:#638961;--ux-type-match:#497aa7;--ux-type-camp:#8970a8;--ux-type-tournament:#a87e31;--ux-type-samspil:#398d91}
body.ux .ux-trip[data-activity-kind=training]{--ux-type-accent:var(--ux-type-training)}
body.ux .ux-trip[data-activity-kind=match]{--ux-type-accent:var(--ux-type-match)}
body.ux .ux-trip[data-activity-kind=camp]{--ux-type-accent:var(--ux-type-camp)}
body.ux .ux-trip[data-activity-kind=tournament]{--ux-type-accent:var(--ux-type-tournament)}
body.ux .v10-card{--ux-type-accent:var(--ux-type-samspil)}
body.ux:is([data-display-mode=classic],[data-display-mode=visual],[data-display-mode=minimal]) :is(.ux-trip[data-activity-kind],.v10-card){border-top:4px solid var(--ux-type-accent,var(--line))}
@media(max-width:760px){body.ux #v7-dialog .rp-scroll-form>.rp-form-actions>.rp-primary-action{flex:1 1 100%}}

/* Type filters share the cards' accent tokens. Text and pressed state remain authoritative. */
body.ux .ux-type-filters{display:flex;flex-wrap:wrap;gap:var(--ux-sm);margin:0}
body.ux .ux-type-filter{background:var(--paper,#fff);color:var(--ink);border:1px solid var(--line);gap:8px}
body.ux .ux-type-filter:not([data-activity-kind=all])::before{content:'';width:10px;height:10px;border-radius:50%;background:var(--ux-type-accent);flex:none}
body.ux .ux-type-filter[data-activity-kind=camp]{--ux-type-accent:var(--ux-type-camp)}
body.ux .ux-type-filter[data-activity-kind=match]{--ux-type-accent:var(--ux-type-match)}
body.ux .ux-type-filter[data-activity-kind=tournament]{--ux-type-accent:var(--ux-type-tournament)}
body.ux .ux-type-filter[data-activity-kind=samspil]{--ux-type-accent:var(--ux-type-samspil)}
body.ux .ux-type-filter[aria-pressed=true]{border:2px solid var(--ink);font-weight:700;padding:9px 15px;background:var(--soft,#eef4ef)}
