/* 3.4: a shared visual system. Event controllers and record markup stay independent. */
:root{
 --bg:#f2f5fa;--card:#fff;--text:#172a40;--muted:#56677d;--border:#dfe7ef;
 --accent:#1769a7;--accent-text:#fff;--danger:#b3373d;--ok:#147349;--input-bg:#fff;
 --surface-soft:#f7f9fc;--shadow:0 3px 14px rgba(19,42,72,.035);--sidebar:#102137;
 --sidebar-text:#dbe7f6;--sidebar-muted:#b0c3db;--nav-selected:#25466b;
 --header-image:linear-gradient(100deg,rgba(10,32,57,.97),rgba(10,32,57,.86) 50%,rgba(10,32,57,.45)),url('/assets/iqfoil-racing-background.jpg');
 --icon-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E");
 --icon-event:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='3'/%3E%3Cpath d='M7 3v5M17 3v5M3 11h18M8 15h2M14 15h2'/%3E%3C/svg%3E");
 --icon-car:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 9 2-5h10l2 5M4 9h16v9H4zM6 18v3M18 18v3M7 13h2M15 13h2'/%3E%3C/svg%3E");
 --icon-stay:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10 12 3l9 7M5 9v12h14V9M9 21v-7h6v7M10 9h4'/%3E%3C/svg%3E");
 --icon-coach:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='7' r='3'/%3E%3Cpath d='M3 21v-3a6 6 0 0 1 12 0v3M17 4h4v12h-3M18 8h3M18 12h3'/%3E%3C/svg%3E");
 --icon-plus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");
 --icon-moon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Cpath d='M20 15a8.5 8.5 0 0 1-11-11 8.5 8.5 0 1 0 11 11Z'/%3E%3C/svg%3E");
 --icon-sun:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5 19 19M5 19l1.5-1.5M17.5 6.5 19 5'/%3E%3C/svg%3E");
}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){
 --bg:#101c2d;--card:#17273c;--text:#eef4fc;--muted:#aebed2;--border:#354861;--accent:#8bc6ff;--accent-text:#10243d;--danger:#ffaaa4;--ok:#80dbaf;--input-bg:#112137;--surface-soft:#132237;--shadow:0 3px 14px rgba(0,0,0,.08);
}}
:root[data-theme="dark"]{--bg:#101c2d;--card:#17273c;--text:#eef4fc;--muted:#aebed2;--border:#354861;--accent:#8bc6ff;--accent-text:#10243d;--danger:#ffaaa4;--ok:#80dbaf;--input-bg:#112137;--surface-soft:#132237;--shadow:0 3px 14px rgba(0,0,0,.08)}
body{font-family:Inter,"Segoe UI",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.55;letter-spacing:-.012em;background:var(--bg)}
body::before{opacity:.045;filter:grayscale(.45)}
.wrap.container{display:grid;grid-template-columns:224px minmax(0,1fr);max-width:1600px;width:calc(100% - 48px);margin:24px auto;padding:0;background:var(--sidebar);border-radius:24px;box-shadow:0 18px 70px rgba(11,31,55,.12);overflow:clip}
.app-sidebar{display:flex;flex-direction:column;position:sticky;top:24px;align-self:start;min-width:0;height:calc(100dvh - 48px);min-height:530px;padding:30px 18px;color:var(--sidebar-text);background:var(--sidebar)}
.brand-block{display:flex;gap:11px;align-items:center;padding:0 9px;margin-bottom:44px}
.brand-mark{width:27px;height:37px;flex:none;clip-path:polygon(76% 0,100% 82%,0 100%);background:linear-gradient(145deg,#96e4fa,#42a0de)}
.brand-block h1{color:#fff;font-size:1.16rem;font-weight:760;letter-spacing:-.045em;line-height:1.2;margin:0 0 5px;overflow-wrap:normal}
.brand-caption{display:block;color:var(--sidebar-muted);font-size:.68rem;line-height:1.5}
.sidebar-label{color:var(--sidebar-muted);text-transform:uppercase;letter-spacing:.13em;font-size:.62rem;font-weight:650;padding:0 14px;margin:0 0 12px}
.app-sidebar .tabs{position:static;background:none;display:flex;flex-direction:column;flex-wrap:nowrap;padding:0;gap:7px;margin:0;--bs-nav-pills-link-active-bg:var(--nav-selected);--bs-nav-pills-link-active-color:#fff}
.app-sidebar .tabs .tab-btn{display:flex;align-items:center;justify-content:flex-start;gap:11px;flex:none;flex-basis:auto;min-width:0;width:100%;min-height:48px;margin:0;padding:13px 14px;border:1px solid transparent;border-radius:11px;color:var(--sidebar-text);background:transparent;font-size:.82rem;font-weight:550;line-height:1.4;white-space:normal;text-align:left;overflow-wrap:normal;box-shadow:none}
.app-sidebar .tabs .tab-btn:hover{background:#1c3653;color:#fff}
.app-sidebar .tabs .tab-btn.active{background:var(--nav-selected);color:#fff;border-color:#3c5d81;box-shadow:inset 3px 0 0 #7dd0fa}
.tab-btn::before,.sidebar-create::before,.theme-toggle::before,.event-context-icon::before,.topic-icon::before{content:"";display:block;background:currentColor;mask:var(--icon-grid) center/contain no-repeat;width:20px;height:20px;flex:none}
.tab-btn[data-tab="event"]::before,.icon-event::before,.event-context-icon::before{mask-image:var(--icon-event)}
.tab-btn[data-tab="sharing"]::before,.icon-carpool::before{mask-image:var(--icon-car)}
.tab-btn[data-tab="camp"]::before,.icon-stay::before{mask-image:var(--icon-stay)}
.tab-btn[data-tab="coaching"]::before,.icon-coaching::before{mask-image:var(--icon-coach)}
.sidebar-bottom{margin-top:auto;padding:28px 8px 0}
.sidebar-create{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;min-height:44px;border:1px solid #567797;border-radius:10px;background:#1a3552;color:#edf5ff;font-size:.78rem;font-weight:600;padding:10px}
.sidebar-create::before{mask-image:var(--icon-plus);width:17px;height:17px}
.sidebar-create:hover{background:#284968}
.sidebar-bottom p{color:var(--sidebar-muted);font-size:.67rem;line-height:1.6;padding:14px 3px 0;margin:0}
.app-workspace{min-width:0;background:var(--bg)}
.workspace-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;min-height:188px;padding:32px 36px 28px;background-image:var(--header-image);background-position:center,center 44%;background-size:cover;color:#fff}
.workspace-heading{max-width:680px;min-width:0}
.workspace-header .eyebrow{color:#c4d9ef;font-size:.64rem;letter-spacing:.16em;font-weight:650;margin:0 0 10px}
#workspaceTitle{font-size:clamp(1.6rem,2.1vw,2.2rem);letter-spacing:-.04em;font-weight:730;line-height:1.18;margin:0 0 10px;color:#fff}
.workspace-subtitle{font-size:.82rem;line-height:1.5;color:#e0eaf5;max-width:55ch;margin:0 0 16px}
.workspace-header .status-line{display:inline-flex;align-items:flex-start;gap:7px;margin:0;color:#d8e7f7;font-size:.63rem;line-height:1.6}
.workspace-header .status-line::before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:#88cbee;margin-top:5px;box-shadow:0 0 0 3px rgba(136,203,238,.13)}
.workspace-header .status-line[data-i18n="connected_changes_are_visible_to_everyone"]::before{background:#8ae3b7;box-shadow:0 0 0 3px rgba(138,227,183,.13)}
.workspace-header .status-line[data-i18n="server_unavailable_changes_stay_in_this_window_only"]::before{background:#ffbab3;box-shadow:0 0 0 3px rgba(255,186,179,.13)}
.workspace-controls{display:flex;gap:9px;align-items:center;flex:none}
.language-control{display:flex;gap:7px;align-items:center;margin:0;padding:3px 7px 3px 10px;border:1px solid var(--border);border-radius:10px;background:var(--card)}
.language-control label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.language-control img{width:18px;height:12px;border-radius:2px}
.language-control .form-select{width:104px;font-size:.75rem;min-height:34px;padding:6px 26px 6px 4px;border:0;background-color:var(--card);box-shadow:none}
.theme-toggle{display:grid;place-items:center;width:44px;height:44px;border:1px solid #88a0b8;background:#193a5c;color:#fff;border-radius:10px;padding:0}
.theme-toggle::before{mask-image:var(--icon-moon)}.theme-toggle[data-icon="sun"]::before{mask-image:var(--icon-sun)}
.theme-toggle:hover{background:#2c5279}
.workspace-content{padding:26px 36px 44px;min-width:0}
.swipe-hint{font-size:.66rem;margin:0 0 10px;padding:0;text-align:right;line-height:1.45}
.active-trip.card{display:flex;flex-direction:row;align-items:center;gap:13px;padding:15px 18px;border:1px solid var(--border);border-radius:13px;margin-bottom:24px;box-shadow:var(--shadow)}
.event-context-icon{display:grid;place-items:center;width:38px;height:38px;flex:none;color:var(--accent);background:var(--surface-soft);border-radius:10px;border:1px solid var(--border)}
.event-context-copy{min-width:0;flex:1}
.event-context-copy>strong{display:block;text-transform:uppercase;letter-spacing:.08em;font-weight:650;font-size:.58rem;color:var(--muted);margin-bottom:3px}
.active-trip .trip-meta{font-size:.76rem;line-height:1.6;color:var(--text);margin:0}
.context-edit.btn{min-height:36px;padding:7px 10px;font-size:.72rem;flex:none;margin:0;background:var(--surface-soft);color:var(--text);border-color:var(--border)}
#tab-event,#tab-camp{max-width:none;margin:0}
#panelDeck{min-width:0}.tab-section.active{animation:none}
.card{border:1px solid var(--border);border-radius:15px;padding:24px;margin-bottom:20px;box-shadow:var(--shadow);background:var(--card)}
.card h2{font-size:1.07rem;letter-spacing:-.025em;font-weight:700;line-height:1.4;margin:0 0 16px}
h3,.dashboard-camp h3,#coachingSummary>h3{font-size:1rem;letter-spacing:-.022em;font-weight:680;line-height:1.5;margin:18px 0 13px}
h4,.dashboard-camp h4{font-size:.9rem;font-weight:650;margin:16px 0 10px}
.card>h3:first-child{margin-top:0}
p,.trip-meta,.offer-meta{font-size:.78rem;line-height:1.65}
.trip-meta,.offer-meta{color:var(--muted)}
.card>p.trip-meta{max-width:88ch;margin-bottom:16px}
.btn,button{font-size:.79rem;font-weight:600;letter-spacing:-.008em;border-radius:9px;min-height:42px;padding:10px 15px;line-height:1.4;transition:none}
.btn-primary,.btn-small{width:auto;margin-top:0;background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
.btn-primary:hover,.btn-primary:focus-visible,.btn-small:hover{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
.btn-ghost,.btn-outline-secondary{color:var(--text);background:var(--card);border-color:var(--border)}
.btn-ghost:hover,.btn-outline-secondary:hover{color:var(--text);background:var(--surface-soft);border-color:var(--muted)}
.btn-outline-primary,#transportCoordination .btn-outline-primary,#tab-coaching .btn-outline-primary,#tab-sharing .btn-outline-primary{color:var(--accent);border-color:var(--border);background:var(--card)}
.btn-outline-primary:hover,.btn-outline-primary:focus-visible,#transportCoordination .btn-outline-primary:hover,#transportCoordination .btn-outline-primary:focus-visible,#tab-coaching .btn-outline-primary:hover,#tab-sharing .btn-outline-primary:hover{color:var(--accent);background:var(--surface-soft);border-color:var(--accent)}
.btn-outline-primary.active,#tab-coaching .btn-outline-primary.active{color:var(--accent-text);background:var(--accent);border-color:var(--accent)}
.btn-danger,.btn-outline-danger,#tab-coaching .btn-outline-danger,#tab-sharing .btn-outline-danger{color:var(--danger);border-color:var(--border);background:var(--card)}
.btn-danger:hover,.btn-outline-danger:hover,#tab-coaching .btn-outline-danger:hover,#tab-sharing .btn-outline-danger:hover{color:var(--danger);border-color:var(--danger);background:var(--surface-soft)}
.btn-sm{font-size:.72rem;min-height:36px;padding:8px 10px}
.action-row{gap:9px;margin-top:14px;flex-wrap:wrap}.action-row .btn{margin:0}
.form-label,label{font-size:.72rem;font-weight:580;color:var(--muted);margin-bottom:7px;line-height:1.55;letter-spacing:0}
.form-control,.form-select,input,select,textarea{font-size:.82rem;border-color:var(--border);border-radius:9px;min-height:44px;box-shadow:none;background-color:var(--input-bg);color:var(--text);padding:10px 12px}
.form-select{padding-right:32px;background-position:right 12px center}
.form-control:focus,.form-select:focus,input:focus,select:focus,textarea:focus{background-color:var(--input-bg);color:var(--text);border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 13%,transparent);outline:0}
.form-control[readonly]{background:var(--surface-soft)}
.form-check-input,input[type="checkbox"]{min-height:0}
.date-weekday{color:var(--muted);font-size:.65rem;line-height:1.55;margin-top:5px;font-weight:400}
#eventProfileForm legend{font-size:.82rem;text-transform:uppercase;letter-spacing:.09em;font-weight:650;color:var(--muted);margin:24px 0 16px;padding-top:22px;border-top:1px solid var(--border)}
#globalCampCard>.action-row{padding:16px;background:var(--surface-soft);border-radius:11px;border:1px solid var(--border);align-items:center;gap:8px}
#globalCampCard>.action-row>label{flex-basis:100%;margin:0 0 2px;font-size:.66rem}
#globalCampSelect{width:100%;flex:1 1 360px;min-width:0;margin:0}
#globalCampCard>.action-row>.btn{flex:none;font-size:.72rem;min-height:38px;padding:8px 12px}
#saveGlobalCamp,#addOfferBtn{margin-top:22px}
.profile-fee,.camp-preview{font-size:.76rem;color:var(--text);background:var(--surface-soft);border:1px solid var(--border);border-radius:10px;padding:13px 15px;margin:18px 0;line-height:1.65}
.profile-fee:empty{display:none}.trip,.offer{background:var(--card);border-color:var(--border);border-radius:11px}
.selected-entry{box-shadow:inset 3px 0 0 var(--accent);border-color:var(--accent)}
.trip-title,.offer-title{font-size:.85rem;font-weight:650}.trip-sum{font-size:.76rem}.trip-sum b{font-size:.95rem}
.empty{padding:30px 18px;font-size:.8rem;color:var(--muted);border:1px dashed var(--border);border-radius:10px;background:var(--surface-soft);margin:0}
#dashboardScopeStatus{display:inline-block;font-size:.7rem;color:var(--muted);line-height:1.6;padding-left:2px;margin-bottom:14px}
#dashboardFilters{padding:12px 18px;margin-bottom:22px;background:var(--card)}
#dashboardFilters>summary{min-height:36px;padding:7px 0}
#dashboardFilters[open]{padding-bottom:18px}
.dashboard-hero{padding:0 0 22px;gap:18px;align-items:flex-end}.dashboard-hero h2{font-size:1.32rem;letter-spacing:-.035em;font-weight:720;line-height:1.4;margin:0 0 5px}
.dashboard-hero .eyebrow{font-size:.61rem;letter-spacing:.11em;color:var(--muted);margin:0 0 5px}
.dashboard-hero p.trip-meta{font-size:.78rem;margin:0;max-width:80ch}
.kpi-grid{gap:14px;margin-bottom:22px;grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi-card{position:relative;min-height:158px;padding:20px;gap:19px;border-radius:14px;box-shadow:var(--shadow);text-align:left;overflow:hidden;justify-content:space-between;line-height:1.4}
.kpi-card>span{font-size:.7rem;font-weight:580;line-height:1.45;color:var(--muted)}
.kpi-card>strong{display:block;font-size:1.26rem;line-height:1.35;font-weight:720;letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.kpi-card .currency-eur{font-size:1.3rem}.kpi-card .currency-chf{display:inline-block;font-size:.8rem;letter-spacing:0;font-weight:550;margin-top:5px;color:var(--muted)}
.kpi-primary{background:#153b60;border-color:#153b60;color:#fff}.kpi-primary>span,.kpi-primary .currency-chf{color:#d4e5f6}
.kpi-card:hover{border-color:var(--accent);box-shadow:0 5px 16px rgba(20,50,80,.07)}
.kpi-primary:hover{border-color:#6faad9}
.topic-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:24px}
.topic-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-height:137px;padding:17px;border-radius:13px;border:1px solid var(--border);background:var(--card);gap:8px;box-shadow:var(--shadow);text-align:left}
.topic-icon{display:grid;place-items:center;width:32px;height:32px;background:var(--surface-soft);border:1px solid var(--border);border-radius:9px;color:var(--accent);margin-bottom:4px}
.topic-icon::before{width:18px;height:18px}.topic-card strong{font-size:.75rem;line-height:1.45;font-weight:650;overflow-wrap:normal}
.topic-card>span:last-child{display:block;font-size:.65rem;line-height:1.5;color:var(--muted);font-weight:400}
.topic-card:hover{background:var(--surface-soft);border-color:var(--accent)}
#tab-dashboard>.card:has(#dashboardTotals),#tab-dashboard>.card:has(#dashboardCoachTotals){padding-top:22px}
#dashboardTotals table tbody tr:last-child{font-weight:720;background:var(--surface-soft)}
#dashboardTotals table tbody tr:last-child td,#dashboardTotals table tbody tr:last-child th{border-top:2px solid var(--border);padding-top:15px;padding-bottom:15px}
.table-scroll,.table-responsive,.location-matrix{max-width:100%;min-width:0;border-radius:9px;scrollbar-width:thin;scrollbar-color:var(--muted) var(--surface-soft);touch-action:auto}
table,.table{font-size:.75rem;line-height:1.55;letter-spacing:-.005em;font-variant-numeric:tabular-nums;--bs-table-bg:var(--card);--bs-table-color:var(--text);--bs-table-border-color:var(--border)}
thead{background:var(--surface-soft)}
table thead th,.table thead th,.location-matrix thead th{background:var(--surface-soft);color:var(--muted);font-size:.63rem;font-weight:650;letter-spacing:.035em;text-transform:uppercase;padding:12px;vertical-align:middle;border-bottom:1px solid var(--border);white-space:normal}
table tbody th,.table tbody th{font-weight:600}
th,td,.table th,.table td,.coach-expense-table th,.coach-expense-table td{padding:13px 12px;vertical-align:middle;border-bottom:1px solid var(--border);font-size:.75rem;line-height:1.55}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}
tbody tr:hover td,tbody tr:hover th{background:var(--surface-soft)}
.currency-eur{font-weight:650;white-space:nowrap}.currency-chf{display:inline-block;color:var(--muted);font-size:.68rem;white-space:nowrap}
.ride-matrix{width:100%;min-width:950px;font-size:.75rem;table-layout:fixed}
.ride-matrix td,.ride-matrix th{padding:12px 10px;font-size:.72rem;white-space:normal;overflow-wrap:normal;vertical-align:top}
.ride-matrix thead th{font-size:.6rem;line-height:1.6}
.ride-matrix small{color:var(--muted);font-size:.63rem;line-height:1.5;margin-top:5px}
.ride-matrix details{margin-top:9px;min-width:0}
.ride-matrix details summary{color:var(--accent);font-size:.64rem;font-weight:550;white-space:normal;line-height:1.5}
.ride-matrix .join-row .form-control,.ride-matrix .join-row .form-select{font-size:.75rem}
.ride-matrix .expense-icon{min-width:36px;min-height:36px;width:36px;height:36px;padding:6px}
.expense-icon{border-radius:8px;min-width:36px;min-height:36px;padding:7px;font-size:.9rem}.expense-icon svg{width:16px;height:16px}
#tab-sharing>.card:has(>[data-open="offerEditor"]){display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:14px;padding:16px 20px}
#tab-sharing>.card:has(>[data-open="offerEditor"]) .profile-fee{border:0;background:transparent;padding:0;margin:0;font-size:.72rem}
#transportToolbar .action-row{margin:14px 0 20px;gap:8px}
#transportStatus{font-size:.68rem;font-weight:600;color:var(--muted)}
#transportCoordination>h2{margin-bottom:5px}
#transportCoverage>p{font-size:.7rem;margin:14px 0}
#coachByName th:first-child{min-width:120px}
#coachByName td:nth-child(2){white-space:normal;min-width:180px}
.coach-expense-table{font-size:.75rem}.coach-expense-table th[scope="row"]{min-width:130px}
#coachCategoryButtons{gap:8px!important;margin-top:12px}
.coach-category.btn{min-height:38px;padding:9px 12px;font-size:.71rem;border-radius:9px}
#coachCurrentCategory{font-size:1.04rem;margin:10px 0 7px}
#coachValueFields{padding:14px 0 0;margin-top:12px;border-top:1px solid var(--border)}
#coachQueueStatus{font-size:.66rem;margin:8px 0 0;color:var(--muted)}
#coachHistorySummary{margin-top:12px}
#coachUnitHelp,#coachRateInfo{font-size:.68rem}
#coachByName,#coachingSummary{margin-bottom:24px}
#coachingSummary h3{font-size:.85rem;color:var(--muted);font-weight:550}
.camp-optional{margin-top:20px;padding-top:14px;border-top:1px solid var(--border)}
.camp-optional>summary{font-size:.74rem;font-weight:600;line-height:1.55;min-height:36px;margin-bottom:10px;color:var(--accent)}
details.card>summary{font-size:.82rem;line-height:1.5;color:var(--text);padding:4px 0;min-height:32px;font-weight:650}
details.card[open]>summary{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border)}
details>summary::marker{color:var(--accent);font-size:.8em}
#locationTable .location-matrix td,#locationTable .location-matrix th{padding:11px 10px;font-size:.72rem}
#locationTable .location-matrix thead th{font-size:.6rem}
#locationTable .btn{min-height:32px;padding:7px 10px;font-size:.67rem}
#locationTable .action-row{margin:0;gap:6px;flex-wrap:nowrap}
.location-matrix{margin:14px 0}
.accommodation-cost-inputs th,.accommodation-cost-inputs td{padding:10px}
.accommodation-cost-inputs input{min-width:90px}
#locationSearch{min-width:0}
.cost-bar-row{font-size:.73rem;grid-template-columns:minmax(145px,1fr) minmax(70px,2fr) auto;gap:16px;margin:14px 0;line-height:1.6}
.cost-bar-track{height:6px;background:var(--border);border-radius:20px}.cost-bar-track>div{background:var(--accent);border-radius:20px}
.camp-budget-line{align-items:flex-start;font-size:.79rem;line-height:1.65;margin:20px 0 0;padding-top:18px;border-top:1px solid var(--border)}
.badge{font-size:.63rem;font-weight:600;line-height:1.4}.mf-row{font-size:.75rem}
.chip{font-size:.7rem;border-radius:10px;padding:8px 9px;background:var(--surface-soft);line-height:1.6}.chip .form-select{font-size:.72rem}
button.maps-link,.maps-link{font-size:.72rem;color:var(--accent)}
:focus-visible{outline:3px solid var(--accent)!important;outline-offset:3px}
.app-sidebar :focus-visible,.workspace-header .theme-toggle:focus-visible{outline-color:#a3ddff!important}
.skip-link{z-index:100;position:fixed;top:12px;left:12px}
@media(min-width:1100px){.swipe-hint{display:none}}
@media(max-width:1279px) and (min-width:1100px){.wrap.container{width:calc(100% - 32px);margin:16px auto;grid-template-columns:200px minmax(0,1fr)}.app-sidebar{top:16px;height:calc(100dvh - 32px);padding:28px 12px}.workspace-content{padding:24px}.workspace-header{padding:28px 24px}.workspace-controls{gap:7px}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1099px){
 .wrap.container{display:flex;flex-direction:column;width:calc(100% - 32px);margin:16px auto;max-width:1000px;border-radius:18px;overflow:clip}
 .app-sidebar{position:sticky;top:0;z-index:30;height:auto;min-height:0;width:100%;padding:0 0 12px}
 .brand-block{margin:0;padding:17px 22px;gap:10px}.brand-mark{width:22px;height:30px}.brand-block h1{font-size:1.08rem;margin-bottom:3px}.brand-caption{font-size:.62rem}
 .sidebar-label,.sidebar-bottom{display:none}
 .app-sidebar .tabs{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#567797 var(--sidebar);gap:5px;padding:0 12px}
 .app-sidebar .tabs .tab-btn{width:auto;flex:0 0 auto;flex-basis:auto;min-width:0;min-height:43px;white-space:nowrap;padding:10px 14px;gap:8px;font-size:.76rem}
 .app-sidebar .tabs .tab-btn.active{box-shadow:inset 0 -2px 0 #7dd0fa}
 .workspace-content{padding:24px}.workspace-header{min-height:170px;padding:27px 26px;gap:20px}.workspace-header .workspace-subtitle{font-size:.77rem}
 .topic-card{min-height:126px;padding:15px}.topic-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
 .card{padding:22px}.topic-card>span:last-child{display:block}
}
@media(max-width:767px){
 .workspace-header{flex-wrap:wrap;position:relative;min-height:0;padding:24px;gap:18px}
 .workspace-controls{order:-1;width:100%;justify-content:flex-end}
 .workspace-heading{width:100%}.workspace-header .eyebrow{font-size:.58rem}#workspaceTitle{font-size:1.7rem}.workspace-subtitle{font-size:.78rem}
 .workspace-content{padding:20px}.active-trip.card{padding:13px 14px;margin-bottom:20px;gap:10px}.context-edit.btn{font-size:.67rem;max-width:115px}
 .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.kpi-card{padding:17px;min-height:140px;gap:15px}.kpi-card>strong,.kpi-card .currency-eur{font-size:1.18rem}
 .topic-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.topic-card{min-height:125px;padding:16px}.topic-card[data-nav="camp"]{grid-column:auto;flex-direction:column;align-items:flex-start}.topic-card>span:last-child{display:block}
 .card{padding:20px}.card h2{font-size:1rem}.form-control,.form-select{font-size:.9rem;min-height:46px}
 .cost-bar-row{grid-template-columns:1fr auto;gap:8px}.cost-bar-track{grid-column:1/-1;grid-row:2}
 #tab-sharing>.card:has(>[data-open="offerEditor"]){flex-wrap:wrap;justify-content:flex-start}
 #globalCampCard>.action-row>select{flex-basis:100%}.event-picker .form-select{font-size:.78rem}
}
@media(max-width:479px){
 .wrap.container{width:100%;margin:0;border-radius:0;box-shadow:none}.app-sidebar{padding-bottom:10px}.brand-block{padding:15px 16px}.app-sidebar .tabs{padding:0 10px;gap:4px}
 .app-sidebar .tabs .tab-btn{font-size:.72rem;min-height:42px;padding:10px 11px;gap:7px}.tab-btn::before{width:17px;height:17px}
 .workspace-header{padding:18px 18px 24px;gap:16px;background-position:center,center 42%}.workspace-controls{gap:7px}.language-control .form-select{width:92px}.theme-toggle{height:42px;width:42px}
 .workspace-content{padding:18px 12px 32px}.swipe-hint{font-size:.58rem;text-align:center;margin-bottom:14px;padding:0 8px}
 .active-trip.card{padding:12px;align-items:flex-start;gap:9px}.event-context-icon{width:30px;height:30px;border-radius:8px}.event-context-icon::before{width:16px;height:16px}
 .active-trip .trip-meta{font-size:.66rem;line-height:1.6}.context-edit.btn{display:none}
 .card{padding:17px 15px;border-radius:12px;margin-bottom:16px}details.card>summary{font-size:.78rem}
 .kpi-grid{gap:10px;margin-bottom:18px}.kpi-card{padding:14px;min-height:139px;border-radius:12px;gap:14px}.kpi-card>span{font-size:.63rem}.kpi-card>strong,.kpi-card .currency-eur{font-size:1rem}.kpi-card .currency-chf{font-size:.68rem}
 .topic-grid{gap:10px;margin-bottom:20px}.topic-card{padding:13px;min-height:140px;border-radius:12px}.topic-card strong{font-size:.72rem}.topic-card>span:last-child{font-size:.62rem}
 .dashboard-hero{padding-bottom:18px}.dashboard-hero h2{font-size:1.25rem}.dashboard-hero .trip-meta{font-size:.7rem}
 .form-control,.form-select{font-size:1rem}.btn{font-size:.75rem;padding:9px 12px;min-height:42px}.btn-sm{font-size:.68rem;min-height:36px}
 .action-row{gap:7px}.coach-category.btn{min-height:39px;font-size:.67rem;padding:8px 10px}
 #globalCampCard>.action-row{padding:12px}.trip-filters>.col-sm-6{min-width:0}
 .profile-fee{padding:11px;font-size:.7rem}.event-picker>p.trip-meta{font-size:.68rem;margin:10px 0 0}
 .table-scroll,.location-matrix{border-radius:7px}
 .cost-bar-row{font-size:.68rem}.camp-budget-line{font-size:.72rem;gap:13px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
@media print{
 body::before,.app-sidebar,.workspace-controls,.swipe-hint{display:none!important}.wrap.container{display:block;width:100%;margin:0;box-shadow:none}.workspace-header{background:#fff;color:#172a40;padding:12px 0;min-height:0}#workspaceTitle,.workspace-header .eyebrow,.workspace-subtitle,.workspace-header .status-line{color:#172a40}.workspace-content{padding:12px 0}.card{break-inside:avoid;box-shadow:none}.active-trip .context-edit{display:none}
}
/* Wide comparisons scroll within their own card, keeping names readable on phones. */
#dashboardCoachTotals table{min-width:750px}
#dashboardCoachTotals th:first-child{min-width:260px;width:36%}
#coachExpenseList table{min-width:850px}
#coachByName table{min-width:560px}
#locationTable table{min-width:850px}

/* Shared Bootstrap form framework: context, editor, records and summary. */
.framework-group { border: 0; padding: 0; margin: 0 0 1.5rem; min-width: 0; }
.framework-group > legend { float: none; width: 100%; font-size: 1rem; font-weight: 650; padding: 0 0 .65rem; margin: 0 0 .85rem; border-bottom: 1px solid var(--border); }
.panel-event-context > .form-select { max-width: 100%; }
.panel-editor > summary { font-size: 1.05rem; font-weight: 650; }
.panel-editor .action-row { padding-top: 1rem; margin-top: 1rem; border-top: 1px solid var(--border); }
.framework-group .form-label { display: block; margin-bottom: .4rem; }
@media (min-width: 768px) { .framework-group .col-sm-6 { flex: 0 0 auto; width: 50%; } }
@media (min-width: 1200px) { .framework-group .col-sm-6, .framework-group .col-md-4 { width: 33.333333%; } }
@media (max-width: 575px) { .panel-editor .action-row { display: flex; flex-wrap: wrap; gap: .65rem; } .panel-editor .action-row .btn { flex: 1 1 130px; } }

/* Local iQFOiL wordmark and compact iQ application icon. */
.brand-block { display: block; }
.brand-logo { display: block; width: 100%; max-width: 180px; height: auto; margin-bottom: 9px; }
@media (max-width: 1099px) { .brand-logo { width: 160px; margin-bottom: 5px; } }
