:root{--forest:#173b32;--lime:#d4f46a;--ink:#17342c;--paper:#f4f6f2;--line:#dce3dc}*{box-sizing:border-box}body{margin:0;font:15px/1.6 system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}a{color:var(--forest);text-underline-offset:4px}button,.button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:var(--forest);color:white;font:inherit;font-weight:650;padding:11px 19px;text-decoration:none;cursor:pointer}button:hover,.button:hover{background:#28594a}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #0182b0;outline-offset:3px}.admin-shell{display:grid;grid-template-columns:235px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--forest);color:#fff;padding:32px 22px;display:flex;flex-direction:column}.logo img{width:148px}.sidebar-label{font-size:10px;letter-spacing:.18em;color:#e2dbea;margin-top:50px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{padding:11px 14px;color:#fff;text-decoration:none;border-radius:7px}.sidebar nav a:hover{background:#6c117b;color:var(--lime)}.sidebar-bottom{margin-top:auto;padding-top:70px;font-size:12px;color:#e2dbea}.workspace-header{padding:22px 40px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:11px;letter-spacing:.06em}.workspace-header>div{display:flex;align-items:center;gap:15px}.workspace-header form{margin:0}.quiet{padding:4px 8px;background:transparent;color:var(--forest);font-size:12px}.quiet:hover{color:#fff}main{max-width:1400px;padding:44px 40px 60px;margin:auto}h1{font-size:clamp(32px,4vw,48px);line-height:1.15;letter-spacing:-.045em;margin:0 0 12px}h2{font-size:22px;letter-spacing:-.025em;margin:0 0 15px}.eyebrow{font-size:10px;letter-spacing:.18em;font-weight:750;margin:0 0 15px;color:#04558a}.intro{color:#656070;margin:0 0 30px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.panel{background:white;border:1px solid var(--line);border-radius:14px;padding:26px;margin-top:24px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.stat-card{display:grid;gap:15px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:23px;text-decoration:none}.stat-card strong{font-size:42px;line-height:1}.stat-card small{color:#656070}.stat-card:hover{border-color:#04558a}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px}label{display:block;font-size:13px;font-weight:650;margin-bottom:7px}input:not([type=checkbox]),select,textarea{display:block;width:100%;border:1px solid #cbd7cc;border-radius:7px;background:#fff;color:var(--ink);padding:11px 12px;font:inherit}input[type=checkbox]{width:18px;height:18px;accent-color:var(--forest)}.check{display:flex;align-items:center;gap:10px;padding-top:27px}.form-actions{display:flex;align-items:center;gap:22px;margin-top:25px}.search{display:flex;gap:12px;align-items:center;margin-bottom:22px}.search input{max-width:440px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px}th{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#656070;padding:12px;border-bottom:1px solid var(--line)}td{padding:17px 12px;border-bottom:1px solid var(--line)}td a{white-space:nowrap;margin-left:10px}.badge{display:inline-block;background:#f0eaf6;padding:3px 9px;border-radius:5px;font-size:11px;margin-left:6px}.empty{padding:45px;text-align:center;color:#656070}.pagination{display:flex;justify-content:space-between;font-size:12px;padding-top:18px}.pagination>div{display:flex;gap:20px}.notice{background:#e6f1d8;border-left:3px solid #f8c304;padding:15px;border-radius:7px}.error{color:#9f302d}.error:empty,.validation-summary-valid{display:none}.muted{font-size:13px;color:#656070}.auth-card{max-width:480px;margin:35px auto;background:white;border:1px solid var(--line);padding:35px;border-radius:16px}.auth-card input,.narrow input{margin-bottom:20px}.auth-card button{width:100%;margin-top:10px}.narrow{max-width:620px}.workspace-footer{font-size:11px;color:#656070;padding:20px 40px}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip-link:focus{position:fixed;top:10px;left:10px;background:white;padding:10px;z-index:5}@media(max-width:1050px){.stat-grid{grid-template-columns:1fr 1fr}.admin-shell{grid-template-columns:190px minmax(0,1fr)}main{padding:30px 24px}.workspace-header{padding:20px 24px}}@media(max-width:700px){.admin-shell{display:block}.sidebar{padding:20px}.sidebar-label,.sidebar-bottom{display:none}.logo img{width:110px}.sidebar nav{display:flex;flex-wrap:wrap;margin-top:15px;gap:4px}.sidebar nav a{padding:5px 9px;font-size:12px}.workspace-header{padding:15px 20px;flex-wrap:wrap}main{padding:28px 20px}.form-grid{grid-template-columns:1fr}.page-heading{align-items:flex-start;flex-wrap:wrap}.panel{padding:18px}.search{flex-wrap:wrap}.stat-card{padding:18px}.auth-card{padding:25px;margin-top:10px}.pagination{gap:15px}.workspace-footer{padding:20px}}

.sidebar nav a[aria-current=page]{background:#d4f46a;color:#173b32;font-weight:700}
.dashboard-period{margin-top:28px}.panel[id]{scroll-margin-top:20px}
.strava-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.strava-disconnect{margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}@media(max-width:700px){.strava-stats{grid-template-columns:1fr}.form-actions{flex-wrap:wrap}}
:root{--forest:#340763;--lime:#f8c304;--ink:#340763;--paper:#f7f5fa;--line:#e2dbea;--rolari-yellow:#f8c304;--rolari-pink:#ff329d;--rolari-dark-purple:#340763;--rolari-purple:#6c117b;--rolari-blue:#04558a;--rolari-cyan:#0182b0}button:hover,.button:hover{background:var(--rolari-purple)}.sidebar nav a:hover{background:var(--rolari-purple)}.sidebar nav a[aria-current=page]{background:var(--rolari-yellow);color:var(--rolari-dark-purple)}.profile-photo{width:100px;height:100px;border-radius:50%;object-fit:cover;margin-bottom:20px}.notice{background:#fff7d7;border-color:var(--rolari-yellow)}body[data-design=clubhouse]{--forest:#6c117b;--paper:#fffaf0}body[data-design=clubhouse] h1,body[data-design=clubhouse] h2{font-family:Georgia,serif}body[data-design=precision]{--forest:#04558a;--ink:#04558a;--paper:#f3f8fb;--line:#d6e4ed}body[data-design=precision] .panel,body[data-design=precision] .stat-card{border-radius:5px}body[data-design=velocity] h1{font-weight:850}


/* Private fitness dashboard */
.fitness-panel { margin-bottom: 28px; }
.fitness-controls { display: flex; flex-wrap: wrap; gap: 16px; align-items: end; margin: 22px 0 12px; }
.fitness-controls label { display: grid; gap: 6px; font-size: .85rem; }
.fitness-controls input,.fitness-controls select { width: auto; min-width: 155px; margin: 0; }
.fitness-readout { display: flex; flex-wrap: wrap; gap: 14px 24px; align-items: baseline; margin: 24px 0 18px; font-variant-numeric: tabular-nums; }
.fitness-readout b { font-size: 1.4rem; margin-left: 5px; }
.fitness-blue { color: #167aa5; }.fitness-purple { color: #7851d5; }
.fitness-plots h3 { margin: 18px 0 3px; font-size: .9rem; }
.fitness-plots h3 small { font-weight: normal; color: #657285; margin-left: 12px; }
.fitness-plots svg { display: block; width: 100%; background: #fff; touch-action: pan-y; }
.chart-tick { font-size: 12px; fill: #617083; font-family: inherit; }
.fitness-zones { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: .75rem; padding-left: 5%; color: #657285; }
.zone-transition { color: #a16b00; }.zone-optimal { color: #21833b; }.zone-risk { color: #c52d41; }
.fitness-day-picker { display: flex; align-items: center; gap: 18px; margin-top: 20px; }
.fitness-day-picker input { flex: 1; min-width: 70px; }
.fitness-chart details { margin-top: 20px; }.fitness-chart summary { cursor: pointer; }
.fitness-chart [hidden],#strava-activities [hidden] { display: none !important; }
@media(max-width: 650px) { .fitness-controls { gap: 10px; }.fitness-readout { gap: 10px; }.fitness-readout > strong { width: 100%; }.fitness-plots { overflow-x: auto; }.fitness-plots svg { min-width: 620px; } }
.fitness-activity-marker { cursor: pointer; outline: none; }
.fitness-activity-marker:hover circle,.fitness-activity-marker:focus circle,.fitness-activity-marker[aria-pressed="true"] circle { stroke: #32115b; stroke-width: 3; }
.fitness-activity-detail { margin-top: 20px; padding: 18px; background: #f7f8fb; border-radius: 12px; }
.fitness-activity-detail h3 { margin: 0 0 12px; font-size: 1rem; }
.fitness-activity-detail ul { padding-left: 20px; }
.fitness-activity-detail li { padding: 8px 0; line-height: 1.7; }
.event-legend { display:flex; align-items:center; gap:8px; flex-wrap:wrap; color:#795100; }
.event-swatch { width:16px; height:16px; background:#fff0c2; border:2px solid #9a6500; border-radius:3px; }
.calendar-event-row td { background:#fff4d5; }
.calendar-event-row td:first-child { border-left:4px solid #9a6500; }
.calendar-event-list { background:#fff4d5; border-left:4px solid #9a6500; border-radius:6px; padding:12px 12px 12px 32px; }
.calendar-event-list:empty { display:none; }
.fitness-event-marker { cursor:pointer; outline:none; }
.fitness-event-marker:hover path,.fitness-event-marker:focus path,.fitness-event-marker[aria-pressed="true"] path { stroke:#503400; stroke-width:3; }
.event-gallery { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:24px; }
.event-file { min-width:0; overflow-wrap:anywhere; }
.event-photo { width:100%; max-height:480px; object-fit:contain; border-radius:12px; background:#f7f8fb; }
.event-route { display:block; width:100%; background:#fff7e2; border:1px solid #e4c77e; border-radius:12px; margin-top:16px; }
.sidebar nav a[aria-current=location]{background:var(--rolari-yellow);color:var(--rolari-dark-purple);font-weight:700}

/* Keep workspace navigation visible while reading long event pages. */
@media(min-width:701px){.sidebar{position:sticky;top:0;height:100dvh;overflow-y:auto;align-self:start}}

.event-route-file{grid-column:1/-1}.event-route-map{height:360px;width:100%;border:1px solid var(--line);border-radius:10px;background:#eef1e7;margin-top:14px}.event-route-map .leaflet-control a{margin-left:0}.event-route-fallback{margin-top:12px}
#location-directions[hidden]{display:none!important}
.place-photo-thumb{width:120px;height:80px;object-fit:cover;border-radius:8px}
.place-photo-editor{width:160px;height:110px;object-fit:cover;border-radius:8px}
.place-photo-full{max-width:100%;max-height:320px;border-radius:8px}

/* Keep stacked form actions clear of the last control; horizontal search rows use gap. */
form:not(.search):not(.fitness-controls) :is(input:not([type=hidden]):not([type=checkbox]), select, textarea, label, .form-grid, fieldset) + :is(button, .button) { margin-block-start: 16px; }
/* Workspace accordion navigation */
.sidebar .nav-group{min-width:0;border-bottom:1px solid #ffffff26;padding-bottom:5px}
.sidebar .nav-group summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-radius:7px;cursor:pointer;list-style:none;font-weight:650;color:#fff}
.sidebar .nav-group summary::-webkit-details-marker{display:none}
.sidebar .nav-group summary::after{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);flex-shrink:0;margin-right:3px}
.sidebar .nav-group[open] summary::after{transform:rotate(225deg)}
.sidebar .nav-group summary:hover{background:var(--rolari-purple)}
.sidebar .nav-group summary:focus-visible{outline:3px solid var(--rolari-yellow);outline-offset:2px}
.sidebar .nav-group:has(a[aria-current]) summary{color:var(--rolari-yellow)}
.sidebar .nav-group-links{display:grid;gap:3px;padding:2px 0 7px 10px}
.sidebar .nav-group-links a{font-size:14px;padding:8px 14px}
@media(max-width:700px){.sidebar nav{display:grid;grid-template-columns:1fr;width:100%}.sidebar .nav-group-links a{font-size:13px}.sidebar .nav-group summary{padding:9px 14px}}
.panel + .stat-grid, .notice + .stat-grid{margin-top:24px}
.system-settings-form{display:grid;gap:1rem;justify-items:start}
.system-settings-form .system-settings-toggle{display:flex;align-items:center;gap:.75rem;margin:0}
.system-settings-form .system-settings-toggle input{width:auto;margin:0}
.system-settings-form p{margin:0}

.athlete-modality{padding:.75rem 0;border-bottom:1px solid #e6e1ee}.modality-picker{margin:1rem 0}.modality-picker>summary{list-style:none;cursor:pointer;font-weight:700}.modality-picker>summary::-webkit-details-marker{display:none}.modality-picker>summary span{font-size:1.35em}.modality-picker>summary:focus-visible{outline:2px solid currentColor;outline-offset:4px}


/* Shared federation editor: consistent outer alignment and spacing for saved and added rows. */
[data-memberships]{display:grid;gap:16px;min-width:0}
[data-memberships]>.muted{margin:0}
[data-membership-rows]{display:grid;gap:16px;min-width:0}
[data-membership-row]{margin:0;min-width:0;padding:16px;border:1px solid var(--line);border-radius:8px}
[data-membership-row] .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
[data-memberships]>[data-add-membership]{justify-self:start}
@media(max-width:700px){[data-membership-row] .form-grid{grid-template-columns:minmax(0,1fr)}}

[data-membership-rows]:empty{display:none}
.roster-import-row{border-bottom:1px solid var(--line);padding:16px 0}.roster-import-row>summary{cursor:pointer;font-weight:650}.roster-import-row .form-grid{margin-top:12px}.roster-import-row .check{padding-top:12px}

/* Competition overview: one management entry per event, with readable dates. */
.events-heading{flex-wrap:wrap}.events-heading-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px}
.event-list table{table-layout:auto}.event-list td{vertical-align:middle}.event-list td a{margin-left:0;white-space:normal}
.event-date{display:block;white-space:nowrap}.event-date span,.event-city{display:block;margin-top:4px}
.event-title{font-weight:650;overflow-wrap:anywhere}.event-list .badge{margin-left:0;white-space:nowrap}
.event-list .button{padding:9px 14px;white-space:nowrap}.event-calendar{white-space:nowrap}.event-calendar span{font-size:18px;line-height:1;margin-right:5px}
@media(max-width:800px){
 .event-list table,.event-list tbody{display:block}.event-list thead{display:none}
 .event-list tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 20px;padding:20px 0;border-bottom:1px solid var(--line)}
 .event-list tr:last-child{border-bottom:0}.event-list td{display:block;padding:0;border:0;min-width:0}
 .event-list td::before{content:attr(data-label);display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#656070;margin-bottom:5px}
 .event-list td:nth-child(2){grid-column:1/-1;grid-row:1}.event-list td:last-child{grid-column:1/-1}.event-list td:last-child::before{display:none}
}

.activity-section{position:relative}.activity-section-tools{position:absolute;right:26px;top:34px;font-size:13px}.activities-accordion>summary{display:flex;align-items:center;gap:14px;min-height:44px;padding:6px 180px 6px 0;list-style:none;cursor:pointer}.activities-accordion>summary::-webkit-details-marker{display:none}.activities-accordion>summary::before{content:"";width:10px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);flex-shrink:0;margin-left:2px}.activities-accordion[open]>summary::before{transform:rotate(45deg)}.activities-accordion>summary h2{margin:0}.activities-accordion>summary:focus-visible{outline:3px solid #0182b0;outline-offset:4px;border-radius:4px}.activities-accordion[open]>summary{margin-bottom:14px}@media(max-width:700px){.activity-section-tools{position:static;text-align:right;margin-bottom:8px}.activities-accordion>summary{padding-right:0}}
