/* Canonical visual system. Loaded last; section sheets own layout, not tokens. */
:root{
 --ink:#182b42;--muted:#506176;--line:#d8e1eb;--surface:#fff;--backdrop:#edf2f6;
 --canvas:#f6f8fb;--soft-blue:#eaf1fc;--blue:#165bc7;--blue-hover:#104ba9;--focus:#165bc7;
 --red:#b52e43;--soft-red:#fff0f2;--green:#176c50;--soft-green:#eaf6ef;--gold:#e5b43b;
 --control-radius:8px;--control-height:48px;--icon-size:19px;
 --space-xs:8px;--space-sm:12px;--space-md:20px;--space-lg:28px;
 --body-size:15px;--label-size:14px;--title-size:28px;
 font-family:"Segoe UI Variable Text","Segoe UI",Roboto,Arial,sans-serif;
 color:var(--ink);font-size:var(--body-size);line-height:1.55;letter-spacing:0;
}
body{background:var(--backdrop);color:var(--ink)}
.app-shell{background:var(--canvas)}
.app-header{background:var(--surface);border-bottom:1px solid var(--line);padding:18px 28px 14px}
.brand strong{font-size:20px;font-weight:800;color:var(--ink)}.brand small{font-size:13px;color:var(--muted)}
.brand img{width:56px;height:56px;object-fit:contain}.avatar{background:var(--soft-blue);color:var(--blue)}
.phase-banner{padding:8px 28px 0;font-size:13px;color:var(--muted);background:transparent}
.app-shell>main{padding:20px 28px 110px;background:var(--canvas)}
h1,.page-heading h1,.home-welcome h1{font-size:28px;line-height:1.25;font-weight:700;letter-spacing:0;color:var(--ink);overflow-wrap:anywhere}
#content h1,#content .page-heading h1{font-size:28px;line-height:1.25;letter-spacing:0}
h2{font-size:20px;line-height:1.35;letter-spacing:0;font-weight:700;color:var(--ink)}
h3{font-size:16px;line-height:1.45;letter-spacing:0;font-weight:700;color:var(--ink)}
p,li,dt,dd,label,summary{overflow-wrap:anywhere}
.page-heading,.home-welcome{margin:0 0 22px;gap:14px;flex-wrap:wrap}
.section-heading{margin-bottom:14px}.report-section{margin-top:28px;padding-top:22px}
.back-link{font-size:14px;color:var(--muted);margin-bottom:10px;min-height:44px}
.back-link:hover,.text-link:hover{color:var(--blue-hover)}.text-link{font-size:14px;color:var(--blue)}
button,input,select,textarea{font:inherit}
.button,main[data-section]:not([data-section=home]) .button{
 min-height:48px;border-radius:8px;font-size:14px;line-height:1.4;font-weight:600;letter-spacing:0;
 white-space:normal;overflow-wrap:anywhere;padding:12px 16px;gap:9px;box-shadow:none;
 transition:background-color .14s,border-color .14s,color .14s;
}
.button:not(.secondary):not(.expense):not(.income),main[data-section]:not([data-section=home]) .button:not(.secondary):not(.expense):not(.income){background:var(--blue);border-color:var(--blue);color:#fff}
.button.secondary,main[data-section]:not([data-section=home]) .button.secondary{background:var(--soft-blue);border:1px solid #cedcf2;color:#204c89;box-shadow:none}
.button.expense,main[data-section]:not([data-section=home]) .button.expense{background:var(--red);border-color:var(--red);color:#fff}
.button.income,main[data-section]:not([data-section=home]) .button.income{background:var(--green);border-color:var(--green);color:#fff}
.button:hover:not(:disabled),main[data-section]:not([data-section=home]) .button:hover:not(:disabled){box-shadow:none;filter:none}
.button:not(.secondary):not(.expense):not(.income):hover:not(:disabled){background:var(--blue-hover)}
.button.secondary:hover:not(:disabled){background:#dce8f9;border-color:#a9c1e5}
.button:active:not(:disabled){box-shadow:inset 0 1px 2px #182b4226}
.button:disabled,main[data-section]:not([data-section=home]) .button:disabled{opacity:1;background:#e4e9ef;border-color:#c5cfdb;color:#5b687b;box-shadow:none;cursor:not-allowed}
#content [aria-busy=true] .button:disabled{cursor:wait}
.button svg,.icon-button svg{width:var(--icon-size);height:var(--icon-size);flex-shrink:0;stroke-width:1.9}
.icon-button,.movement-row .icon-button,.athlete-header>.icon-button{width:44px;height:44px;min-width:44px;min-height:44px;flex-shrink:0;background:#eaf0f6;color:#31567d;box-shadow:none}
.icon-button:hover{background:#dce7f5}
:is(button,a,input,select,textarea,summary):focus-visible,#content :is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid var(--focus);outline-offset:3px;scroll-margin-block:100px}
#content .button.secondary[aria-pressed=true]:not(.attendance-present){background:#dce8f9;border-color:var(--blue);color:#204c89}
[aria-invalid=true]{border-color:var(--red)!important;outline:2px solid var(--red)}
.form-field,.form-field>label{font-size:14px;line-height:1.5;gap:8px;min-width:0}
.form-field>span,.form-field label>span{color:var(--ink);font-size:14px;font-weight:600}
.form-field input,.form-field select,.form-field textarea{min-height:48px;border:1px solid #98aac0;border-radius:8px;background:var(--surface);color:var(--ink);padding:11px 12px;min-width:0;max-width:100%;font-size:15px;font-weight:400}
.form-field input:disabled,.form-field select:disabled{background:#e9eef4;color:#5a687b;border-color:#c5cfdb}
input::placeholder,textarea::placeholder{color:#63758a;opacity:1}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--blue)}
.profile-form,.access-form{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:22px;gap:20px;max-width:800px}
.profile-form>.form-grid{gap:18px}.profile-form>h2{font-size:18px}
.profile-form .profile-form,.journey-person .profile-form,.weekly-editor .profile-form,.operation-row .profile-form,.athlete-details .profile-form{border:0;padding:12px 0 0;background:transparent;border-radius:0}
.profile-form fieldset,.profile-form .operation-row{background:transparent;border-radius:0;box-shadow:none}
.form-status{color:var(--red);font-size:14px}.form-status:empty{display:none}
.category-choice{align-items:center;gap:12px;line-height:1.5}
.category-choice input,.category-options input{width:20px;height:20px;flex-shrink:0;accent-color:var(--blue)}
.segmented{background:#e7edf5;border-radius:8px;padding:4px;gap:4px;flex-wrap:wrap}
.segmented button,.segmented [role=tab],.view-tabs a{min-height:44px;min-width:44px}
#content [role=tab],#content .segmented button{min-height:44px;min-width:44px;font-size:14px}
.segmented button[aria-selected=true],main[data-section]:not([data-section=home]) .segmented button[aria-selected=true]{background:#fff;color:var(--blue);box-shadow:0 1px 3px #182b4210}
.view-tabs{border-color:var(--line)}.view-tabs a{font-size:14px;color:var(--muted)}
.view-tabs a[aria-current=page]{color:var(--blue)}.view-tabs a[aria-current=page]::after{background:var(--blue)}
.search-field{background:#fff;border:1px solid #a8b8ca;border-radius:8px;min-height:48px}
.search-field input{font-size:15px;min-height:46px}.search-field .icon-button{background:transparent}
.main-nav{background:#fff;border-color:var(--line);box-shadow:0 -2px 12px #182b4208}
.main-nav a{font-size:13px;color:var(--muted)}
.main-nav a[aria-current=page]{color:var(--blue)}.main-nav a[aria-current=page]::after{background:var(--blue)}
.main-nav svg{width:22px;height:22px}
.quiet-label,.athlete-status{font-size:13px;line-height:1.45;color:var(--muted);background:#e8eef4;box-shadow:none}
.income-text{color:var(--green)}.expense-text{color:var(--red)}
.tool-symbol,.workspace-tool:is(.green,.gold,.coral) .tool-symbol{width:36px;height:36px;background:#e9f0fb;color:var(--blue);border-radius:8px}
.tool-symbol::after{display:none}
.tool-symbol svg{width:21px;height:21px;stroke-width:1.9}
.workspace-tool,.workspace-tool:is(.green,.gold,.coral){background:transparent;box-shadow:none;border-radius:0;border:0;border-bottom:1px solid var(--line);padding:18px 0;min-height:84px;gap:14px}
.workspace-tool strong{font-size:16px;font-weight:650;color:var(--ink)}.workspace-tool small{font-size:14px;color:var(--muted);line-height:1.5}
.workspace-tool:hover{background:#edf2f8;box-shadow:none}
.cash-link>svg:first-child,main[data-section]:not([data-section=home]) .cash-link:nth-child(n)>svg:first-child{background:#e9f0fb;color:var(--blue);width:36px;height:36px;padding:8px;border-radius:8px}
.profile-action>svg:first-child{background:#e9f0fb;color:var(--blue);width:34px;height:34px;padding:7px;border-radius:8px}
.collections-access{background:#edf2f8;border-color:var(--line)}
.collections-access .collections-icon{background:#e0e9f7;color:var(--blue)}
.home-team-photo{width:100%;max-width:100%;height:auto;aspect-ratio:1.45;object-fit:cover;object-position:50% 60%;margin:0;border-radius:8px}
.sport-home{gap:24px 32px}.home-welcome h1 span{color:var(--blue)}
.home-students{padding:14px 18px;gap:14px;background:#eaf1fc;min-height:90px}
.home-students img{width:88px;height:76px;object-fit:contain}.home-students strong{font-size:21px;color:var(--ink)}
.home-students small,.home-accesses a{font-size:14px}.home-students small{color:var(--muted)}
.home-week .text-link{font-size:14px}
.next-activity-content>div,.compact-link{font-size:14px}
.home-accesses a{background:#fff;border-color:var(--line);box-shadow:none}.home-accesses a:hover{background:var(--soft-blue)}
.week-day{background:#eaf0f6;min-height:74px;gap:5px;color:var(--muted)}
.week-day>span{font-size:13px}.week-day strong{font-size:17px;color:var(--ink)}
.week-day.current{background:var(--soft-blue);box-shadow:inset 0 -3px var(--gold)}
.priority-list a{background:#eaf0f7}.priority-list small{font-size:14px;color:var(--muted)}
.academy-hub{display:grid;grid-template-columns:minmax(240px,.85fr) minmax(0,1.3fr);gap:28px;align-items:start}
.academy-hub .workspace-grid{grid-template-columns:minmax(0,1fr);gap:0}
.sport-picture{width:100%;min-width:0;max-width:460px}
.sport-section-photo{width:100%;max-width:100%;height:auto;aspect-ratio:1;object-fit:contain;object-position:center;margin:0;border-radius:8px}
.student-grid{gap:14px}
main[data-section]:not([data-section=home]) .student-grid .student-row{grid-template-columns:48px minmax(0,1fr);gap:12px;padding:18px;min-height:116px;background:#fff;border-color:var(--line);box-shadow:none}
.student-grid .student-portrait{width:48px;height:48px;aspect-ratio:1;object-fit:cover}
.student-grid .student-row-copy>strong{font-size:16px;font-weight:700;line-height:1.4}
.student-grid .student-row-copy small,.student-grid .quiet-label,.profile-data-note{font-size:13px;line-height:1.5;color:var(--muted)}
.athlete-header{padding-bottom:20px}.athlete-header h1{font-size:26px;font-weight:700}
.athlete-avatar{width:60px;height:60px;object-fit:cover;border-radius:50%}
.student-account{background:#fff;border:0;border-left:3px solid var(--red);border-radius:0;padding:22px 24px;margin-bottom:24px;box-shadow:none}
.student-account>div>span,.student-account p{color:var(--muted);font-size:14px}
.student-account strong{font-size:32px;color:var(--red);font-variant-numeric:tabular-nums}
.student-account.settled{background:var(--soft-green);border-color:var(--green)}
.student-account.settled strong{color:var(--green)}
.athlete-section{padding-top:20px}.athlete-details{border-color:var(--line)}
.athlete-details>summary{min-height:48px;font-size:14px}
.student-month.unpaid{background:#fff;border-color:var(--line)}
.student-month.unpaid>b{color:var(--red)}.student-month small,.student-receipt small{font-size:13px;color:var(--muted)}
.student-month.paid{background:var(--soft-green)}
.pension-exceptions>summary{font-size:13px;color:var(--blue);min-height:44px;padding:8px 0}
.debt-workspace{--ink:#182b42;--muted:#506176}
.debt-workspace .debt-score{background:#edf2f8;border:0;border-radius:0;padding:22px;margin-bottom:24px}
.debt-workspace .debt-eyebrow{color:var(--muted);font-size:14px}
.debt-workspace .debt-score strong{font-size:32px;color:var(--ink);margin:10px 0}
.debt-score p,.debt-workspace .debt-people span{font-size:13px;color:var(--muted)}
.debt-people>svg{background:#e1eaf6;color:var(--blue)}
.debt-workspace .debt-record{border-color:var(--line);box-shadow:none;background:#fff}
.debt-workspace .debt-athlete{box-shadow:none;background:#fff;border:0}
.debt-workspace .debt-initial{background:#e9eff8;color:#315886;font-size:15px}
.debt-workspace .debt-athlete strong{font-size:16px}.debt-workspace .debt-athlete small{font-size:13px;color:var(--muted)}
.debt-card-balance b{font-size:25px;color:var(--red)}
.debt-month-badge{background:#eaf0f6;color:var(--muted);font-size:13px}.debt-month-badge svg{width:16px;height:16px}
.debt-card-footer{font-size:13px;color:var(--muted)}.debt-card-footer>span:last-child{color:var(--blue)}
.debt-workspace .debt-filters{flex-wrap:wrap;overflow:visible;gap:8px}
.debt-workspace .debt-filters button{min-height:48px;background:#fff;border-color:#bfcede;color:var(--muted);gap:8px}
.debt-workspace .debt-filters button[aria-selected=true]{background:var(--soft-blue);border:1px solid #7fa5dc;color:#204c89}
.debt-workspace .debt-filters button[aria-selected=true] span{color:#204c89}.debt-workspace .debt-filters span{font-size:13px}
.debt-workspace .segmented button[aria-selected=true]{color:#204c89!important;background:#fff!important}
.debt-controls .segmented button:not([aria-selected=true]){color:var(--muted)}
.debt-quick-actions{padding:10px 16px;gap:12px;background:#fff;border-color:var(--line)}
.cash-workspace{--cash-ink:var(--ink);--cash-muted:var(--muted)}
.entry-action{font-size:14px;min-height:48px;border-radius:8px}
.entry-income{background:var(--soft-green);border:1px solid #bbd9c8;color:var(--green)}
.entry-expense{background:var(--soft-red);border:1px solid #ecc1cb;color:var(--red)}
.statement-line{font-size:15px;color:var(--muted);padding:11px 0}
.statement-line strong{font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}
.statement-group h2{font-size:18px;color:var(--ink)}
.statement-line.opening{border-bottom:1px solid var(--line);padding-bottom:18px}
.statement-group.statement-income h2 svg{background:var(--soft-green);color:var(--green)}
.statement-group.statement-expense h2 svg{background:var(--soft-red);color:var(--red)}
.statement-line.positive strong{color:var(--green)}.statement-line.negative strong{color:var(--red)}
.statement-line.subtotal{font-size:15px;border-color:var(--line)}
.statement-line.net{border-top:2px solid #8d9fb5;border-bottom:0;padding:18px 0;margin:0}
.statement-line.accumulated{border-radius:0;background:#e5edf8;border-left:3px solid var(--blue);padding:20px;color:var(--ink)}
.statement-line.accumulated strong{font-size:25px;color:var(--blue)}
.consultation-tile,.consultation-tile:is(.coral,.green,.gold){background:#fff;border-color:var(--line);box-shadow:none;min-height:146px;padding:18px}
.consultation-tile::before,.consultation-tile:is(.coral,.green,.gold)::before{display:none}
.consultation-tile .tool-symbol,.consultation-tile:is(.coral,.green,.gold) .tool-symbol{background:#eaf1fc;width:36px;height:36px;color:var(--blue)}
.consultation-tile .tool-symbol svg{width:22px;height:22px}
.consultation-tile small{font-size:14px;color:var(--muted)}.consultation-tile strong{font-size:16px;color:var(--ink)}
.finance-destination small,.cash-season>span,.statement-empty{font-size:14px;color:var(--muted)}
.training-row,.movement-row,.amount-row,.attendance-row{border-color:var(--line)}
.training-row:hover{background:#edf2f8}.training-date small,.training-row .quiet-label{font-size:13px;color:var(--muted)}
.training-detail{padding:18px 0;border-bottom:1px solid var(--line)}
.training-detail>.quiet-label{justify-self:start}
.journey-person{background:transparent;box-shadow:none;border-color:var(--line)}
.operations-access{border:0;gap:4px;margin:8px 0 16px;padding:0}
.operations-access a{background:transparent;border-bottom:1px solid var(--line);border-radius:0;color:var(--blue);padding:12px 4px}
.support-art{width:96px;height:72px;object-fit:contain;flex-shrink:0}
.empty-state{padding:28px 0;max-width:520px;margin:0 auto}.empty-state h2{font-size:19px;color:var(--ink)}
.empty-state>svg{width:28px;height:28px}.empty-inline:has(.support-art){align-items:center;gap:18px}
.compact-empty{border:0;color:var(--muted);font-size:14px}
#content>[data-view-freshness]{font-size:13px;line-height:1.5}
#content>.view-meta{border-top:1px solid var(--line);padding-top:16px;margin:28px 0 0;color:var(--muted)}
#content>.offline-alert{background:#fff3d8;color:#755114;border-left:3px solid var(--gold);padding:12px 16px}
dialog{border:1px solid var(--line);border-radius:8px;box-shadow:0 16px 56px #182b4230;background:#fff}
dialog::backdrop{background:#182b4270}dialog .profile-form{border:0;padding:0;box-shadow:none}
dialog .button{min-height:48px}dialog h2{font-size:21px}
.conflict-item{padding:20px 0;border-bottom:1px solid var(--line)}.conflict-item .text-link{display:inline-flex;min-height:44px}
.reconciliation-results .amount-row>span{min-width:0;flex:1}.reconciliation-results .amount-row>strong{flex:0 0 auto;white-space:nowrap;max-width:none}
.attendance-present{min-width:100px;min-height:48px;touch-action:manipulation}
.attendance-list .attendance-present[aria-pressed=true]{color:var(--green);border-color:var(--green);background:var(--soft-green)}
.student-row[href^="#categoria-temporada/"] strong,.student-row[href^="#categoria-temporada/"] small{display:block}
.student-row[href^="#categoria-temporada/"] small{margin-top:6px;line-height:1.5}
@media(min-width:1100px){
 .app-header{padding:20px 32px}.phase-banner{padding:12px 32px 0}
 .app-shell{max-width:1360px;grid-template-columns:180px minmax(0,1fr)}
 .app-shell>main{padding:20px 32px 56px;background:var(--canvas);border-color:var(--line)}
 .main-nav{background:transparent;box-shadow:none}
 .main-nav a[aria-current=page]{background:#dfe9f8;color:var(--blue)}
}
@media(max-width:899px){.academy-hub{grid-template-columns:minmax(0,1fr);gap:20px}.sport-picture{max-width:340px;margin-inline:auto}}
@media(max-width:640px){
 .app-header{padding:14px 18px 12px}.brand img{width:48px;height:48px}.brand strong{font-size:18px}.brand small{font-size:13px}
 .phase-banner{padding:6px 18px 0}.app-shell>main{padding:16px 18px 108px}
 h1,.page-heading h1,.home-welcome h1{font-size:26px}.athlete-header h1{font-size:24px}
 #content h1,#content .page-heading h1{font-size:26px}#content .athlete-header h1{font-size:24px}
 .page-heading{margin-bottom:20px}.profile-form,.access-form{padding:18px;gap:18px}
 .home-team-photo{width:100%;margin:0;height:auto;aspect-ratio:1.45;border-radius:8px}
 .home-students strong{font-size:20px}.home-students img{width:80px;height:70px}
 .athlete-header{display:grid;grid-template-columns:48px minmax(0,1fr) 44px;align-items:center;gap:12px}
 .athlete-header>div{display:contents}.athlete-header .athlete-avatar{grid-column:1;grid-row:1;width:48px;height:48px}
 .athlete-header .athlete-status{grid-column:2;grid-row:1;justify-self:start}
 .athlete-header>.icon-button{grid-column:3;grid-row:1}.athlete-header h1{grid-column:1 / -1;grid-row:2;margin:0}
 .athlete-header .athlete-tags{grid-column:1 / -1;grid-row:3}.athlete-header>div>p{grid-column:1 / -1}
 .student-account{padding:18px;gap:16px}.student-account strong{font-size:30px}
 .statement-line{font-size:14px;gap:14px}.statement-line strong{font-size:15px}
 .statement-line.accumulated{padding:16px}.statement-line.accumulated strong{font-size:24px}
 .cash-entry-actions{gap:8px}.entry-action{font-size:14px;padding:12px;gap:8px}
 .entry-action svg{width:18px;height:18px}
 .debt-workspace .debt-score{padding:18px;gap:14px}.debt-workspace .debt-score strong{font-size:30px}
 .debt-workspace .debt-filters button{padding:10px 12px}
 .attendance-row{display:grid;grid-template-columns:minmax(0,1fr) 112px;align-items:center}
 .attendance-row>strong{grid-column:1 / -1}.attendance-row label,.attendance-row select{width:100%;min-width:0}
 .attendance-row select{min-height:48px}.support-art{width:88px;height:66px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(forced-colors:active){.button,.quiet-label{border:1px solid ButtonText}.button:disabled{opacity:1}}
@media print{.app-shell>main{background:#fff;padding:0}.profile-form{border:0;padding:0}.view-meta{font-size:11px}.button{box-shadow:none}}
