:root{font-family:system-ui,sans-serif;color:#172033;background:#f5f7fb;line-height:1.5}*{box-sizing:border-box}body{margin:0}header,main,footer{max-width:960px;margin:auto;padding:1.25rem}header{display:flex;justify-content:space-between;align-items:center}.brand{font-weight:800;color:#172033;text-decoration:none}nav button{border:0;background:transparent;padding:.4rem}main{min-height:75vh}.hero{display:grid;grid-template-columns:1fr 220px;gap:3rem;align-items:center;padding-top:10vh}.hero img{width:100%}.eyebrow{color:#52627a}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:0;border-radius:.55rem;background:#1457d9;color:white;padding:.8rem 1.15rem;text-decoration:none;font-weight:700;cursor:pointer}.field{max-width:560px;margin:1rem 0}.field label{display:block;font-weight:650;margin-bottom:.25rem}.field input,.field select,.field textarea{width:100%;padding:.7rem;border:1px solid #aab4c3;border-radius:.4rem;background:white}.field input[type=checkbox]{width:auto}.errorlist{color:#a40020}.invalid input,.invalid select{border-color:#a40020}footer{font-size:.85rem;color:#68768b}@media(max-width:620px){.hero{grid-template-columns:1fr}.hero img{width:160px}}.day-picker{border:0;margin:0;padding:0}.day-picker legend{font-weight:650;margin-bottom:.4rem}.day-picker-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.65rem}.day-picker-option{display:grid;grid-template-columns:auto 1fr;gap:.1rem .5rem;align-items:center;min-height:64px;padding:.65rem;border:2px solid #8996a8;border-radius:.5rem;background:#fff;cursor:pointer}.day-picker-option input{width:auto!important;grid-row:1 / span 2}.day-picker-date{font-weight:750}.day-picker-status{font-size:.88rem}.day-picker-option--available{border-color:#187a42;background:#eaf7ef}.day-picker-option--limited{border-color:#8a6400;background:#fff8dd}.day-picker-option--full{border-color:#a40020;background:#fff0f2}.day-picker-option--unknown{border-color:#52627a;background:#eef2f7}.day-picker-option:focus-within{outline:3px solid #1457d9;outline-offset:2px}@media(max-width:620px){.day-picker-grid{grid-template-columns:1fr}.day-picker-option{min-height:60px}}
.skip-link{position:absolute;left:-9999px;top:.5rem;background:#fff;color:#172033;padding:.75rem;z-index:10}.skip-link:focus{left:.5rem}.operations-body{background:#eef2f7}.operations-header{max-width:none;background:#fff;border-bottom:1px solid #d9e0ea}.operations-main{max-width:1180px}.operations-title{display:flex;align-items:end;justify-content:space-between;gap:1rem}.operations-title h1,.operations-title p{margin:.2rem 0}.operations-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:.75rem;align-items:end;background:#fff;padding:1rem;border-radius:.75rem;margin:1rem 0}.operations-filters label,.operation-form label{display:block;font-weight:700}.operations-filters input,.operations-filters select,.operation-form input,.operation-form select,.operation-form textarea{width:100%;min-height:44px;border:1px solid #8996a8;border-radius:.4rem;padding:.6rem;background:#fff}.schedule-list{list-style:none;margin:0;padding:0;display:grid;gap:.65rem}.schedule-card a{display:grid;grid-template-columns:7rem 1.4fr 1.2fr auto;gap:1rem;align-items:center;background:#fff;border-left:5px solid #6380aa;border-radius:.6rem;padding:1rem;color:inherit;text-decoration:none}.schedule-card a:focus-visible,.schedule-card a:hover{outline:3px solid #8bb4ff;outline-offset:2px}.schedule-card time{font-size:1.1rem;font-weight:800}.schedule-card span{display:grid;min-width:0;overflow-wrap:anywhere}.schedule-card small{color:#52627a;min-width:0;overflow-wrap:anywhere}.status-pill{display:inline-block;border-radius:2rem;background:#e6edf7;padding:.25rem .65rem;font-size:.82rem;font-weight:700}.empty-state{background:#fff;padding:2rem;border-radius:.6rem;text-align:center}.booking-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.booking-details div{background:#fff;padding:1rem;border-radius:.6rem}.booking-details dt{font-size:.82rem;color:#52627a;font-weight:700}.booking-details dd{margin:.25rem 0 0;overflow-wrap:anywhere}.operation-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.button-secondary{background:#33435c}.back-link{display:inline-block;margin-bottom:1rem}.operation-form{max-width:680px;display:grid;gap:1rem;background:#fff;padding:1rem;border-radius:.75rem}.checkbox-row{display:flex!important;gap:.5rem;align-items:center}.checkbox-row input{width:auto!important}.operation-errors{border:2px solid #a40020;background:#fff0f2;padding:1rem;margin:1rem 0}.operation-errors h2{margin-top:0}.result-count{color:#52627a}@media(max-width:760px){.operations-filters{grid-template-columns:1fr}.schedule-card a{grid-template-columns:5rem minmax(0,1fr)}.schedule-card a>span:nth-child(3),.schedule-card .status-pill{grid-column:2}.booking-details{grid-template-columns:1fr}.operations-title{align-items:start;flex-direction:column}.operations-main{padding:.8rem}.operation-actions .button{flex:1 1 45%;text-align:center;min-height:44px}}

/* Shared header + role-aware Start page: mobile-first, large tap targets. */
.app-header{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #d7dce5}
.app-nav{display:flex;flex-wrap:wrap;gap:.25rem 1rem;align-items:center}
.app-nav-link,.app-lang a{display:inline-flex;align-items:center;min-height:44px;padding:0 .5rem}
.app-user{opacity:.75}
.app-lang{display:inline-flex;gap:.25rem}
.operations-nav{display:flex;flex-wrap:wrap;gap:.25rem 1rem;align-items:center;padding:.5rem 1rem;border-bottom:1px solid #d7dce5}
.operations-nav a{display:inline-flex;align-items:center;min-height:44px}
.operations-fair{margin-left:auto;opacity:.75}
.panel-list{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.75rem}
.panel-tile{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;min-height:56px;justify-content:center;width:100%}
.panel-tile small{font-weight:400;opacity:.8}

/* On a phone a multi-column table cannot fit: the page scrolled sideways and
   the last column — where the action buttons live — ended up off screen, out
   of reach of any tap. Stack each row into a card instead. Cells carry their
   header via data-label, so nothing loses its meaning. */
@media(max-width:640px){
  table,thead,tbody,tr,th,td{display:block;width:auto}
  thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  tr{background:#fff;border:1px solid #d7dce5;border-radius:.5rem;padding:.6rem .75rem;margin:0 0 .75rem}
  td{border:0;padding:.2rem 0;overflow-wrap:anywhere}
  td:empty{display:none}
  td[data-label]::before{content:attr(data-label) ": ";font-weight:700}
  td .button{width:100%;margin-top:.4rem}
}
