:root { --q-blue:#075486; --q-blue-end:#206ca7; --q-ink:#133957; --q-muted:#57718a; --q-session-bg:#eaf4fc; --q-table-head:#e1effa; --q-border:#d3e4f1; --q-page:#f6f9fc; --q-exception-bg:#fff4d6; --q-exception-ink:#80500a; --q-radius:10px; }
* { box-sizing:border-box; } body { margin:0; font-family:system-ui,sans-serif; background:var(--q-page); color:var(--q-ink); line-height:1.5; } a { color:var(--q-blue); } a:hover { color:#034d73; } button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:3px solid #e09a18; outline-offset:2px; }
.site-header { min-height:5rem; padding:.6rem max(1rem,calc((100% - 85rem)/2)); display:flex; gap:2rem; align-items:center; justify-content:space-between; background:#fff; border-bottom:1px solid var(--q-border); }.logo { max-width:210px; max-height:70px; object-fit:contain; }.site-header nav,.inline-form,.actions,.title-row { display:flex; gap:.75rem; align-items:center; flex-wrap:wrap; }.inline-form { margin:0; }.link-button { padding:0; border:0; color:var(--q-blue); background:transparent; text-decoration:underline; }
.page { max-width:84rem; margin:2rem auto; padding:0 1rem 3rem; }.page.wide,.form-page { max-width:84rem; }.card { max-width:38rem; margin:4rem auto; padding:2rem; background:#fff; border-top:5px solid var(--q-blue); box-shadow:0 3px 18px #0002; }.title-row { justify-content:space-between; }.eyebrow,.muted,small { color:var(--q-muted); }.counts { display:flex; gap:.5rem 1rem; flex-wrap:wrap; padding-left:1.2rem; }.status { font-size:.85rem; border-radius:999px; padding:.15rem .55rem; white-space:nowrap; }.status-draft { color:#665000; background:#fff1c5; }
button,.button { display:inline-block; background:var(--q-blue); color:#fff; border:1px solid var(--q-blue); border-radius:7px; padding:.62rem 1rem; cursor:pointer; text-decoration:none; font:inherit; }.button.secondary { background:#fff; color:var(--q-blue); }.danger-outline { background:#fff; color:#9d251a; border-color:#9d251a; }.danger { background:#9d251a; border-color:#9d251a; }.messages { margin:1rem 0; }.message,.notice { padding:.75rem 1rem; border-left:4px solid var(--q-blue); background:var(--q-session-bg); }.message.error { border-color:#9d251a; background:#fcede9; }.reservation { color:#9a4d00; font-weight:650; }.internal-note { background:#eef2f5; border-left:4px solid #6b7780; padding:1rem; border-radius:0 var(--q-radius) var(--q-radius) 0; }
.filters,.form-grid { display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(13rem,1fr)); align-items:end; background:#fff; padding:1rem; border:1px solid var(--q-border); border-radius:var(--q-radius); }.filters { background:linear-gradient(90deg,#eff7fd,#e5f1fa); }.filters label,.field { display:flex; flex-direction:column; gap:.3rem; font-weight:600; } input,select,textarea { width:100%; padding:.58rem; border:1px solid #b8cfdf; border-radius:6px; background:#fff; font:inherit; color:inherit; }
.session-card,.alternative-card { overflow:hidden; background:#fff; border:1px solid var(--q-border); border-radius:var(--q-radius); margin:1.25rem 0; }.session-banner { display:flex; justify-content:space-between; gap:1rem; align-items:center; padding:1.1rem 1.8rem; color:#fff; background:linear-gradient(110deg,var(--q-blue),var(--q-blue-end)); }.session-banner h2,.session-banner h3 { margin:0; color:#fff; }.session-banner p { margin:.2rem 0 0; font-size:1.05rem; }.modality-badge { background:#fff; color:var(--q-blue); padding:.45rem .85rem; border-radius:999px; font-weight:700; white-space:nowrap; }.session-information { background:var(--q-session-bg); padding:1.1rem 1.8rem 1.35rem; border-bottom:1px solid #b9d8ee; }.information-heading { display:flex; justify-content:space-between; align-items:baseline; gap:1rem; }.information-heading h3 { margin:0; text-transform:uppercase; }.information-heading p { margin:0; color:var(--q-blue); font-style:italic; }.information-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(12rem,1fr)); gap:1rem 2rem; margin-top:.8rem; }.information-grid>div { display:flex; flex-direction:column; }.information-grid strong { font-size:1.04rem; }.info-label { color:var(--q-muted); }.information-grid small { color:var(--q-exception-ink); font-weight:700; }.session-trainings { padding:1.1rem 1.8rem 1.8rem; }.session-trainings h3 { margin:0; text-transform:uppercase; }.table-scroll { overflow-x:auto; } table { width:100%; border-collapse:collapse; margin-top:.75rem; } th,td { padding:.7rem; text-align:left; vertical-align:top; border:1px solid var(--q-border); } th { background:var(--q-table-head); color:var(--q-ink); }.exception { display:block; padding:.45rem .6rem; background:var(--q-exception-bg); color:var(--q-exception-ink); border-radius:8px; margin-bottom:.35rem; }.empty { padding:1rem; background:#fff; border:1px dashed #aebfca; }.alternative-card { padding:1.25rem; background:#fff; }.alternative-row { border-top:1px solid var(--q-border); padding:.9rem 0; display:flex; justify-content:space-between; gap:1rem; align-items:start; }.alternative-details { display:grid; grid-template-columns:repeat(auto-fit,minmax(11rem,1fr)); gap:.5rem 1rem; margin:.5rem 0 0; }.alternative-details span { display:block; color:var(--q-muted); font-size:.9rem; }.alternative-details strong { display:block; }
.training-card { background:#fff; border:1px solid var(--q-border); border-radius:var(--q-radius); margin:1rem 0; padding:1.2rem; }.training-card>header { display:flex; justify-content:space-between; gap:1rem; align-items:start; }.training-card h2 { margin:0; }.details { display:grid; grid-template-columns:minmax(10rem,15rem) 1fr; gap:.5rem 1rem; }.details dt { font-weight:700; }.details dd { margin:0; }.compact { margin:1rem 0; }
fieldset { border:1px solid #b8cfdf; margin:1.25rem 0; padding:1rem; border-radius:var(--q-radius); background:#fff; } legend { font-weight:700; }.slot-row { display:grid; grid-template-columns:1fr 1fr auto; gap:.75rem; align-items:end; padding:.75rem 0; border-bottom:1px solid var(--q-border); }.delete-slot { flex-direction:row; align-items:center; padding-bottom:.5rem; }.delete-slot input { width:auto; }.form-actions { display:flex; gap:1rem; align-items:center; }.error,.errors { color:#a41818; margin:.25rem 0 0; }.has-error input,.has-error select,.has-error textarea { border-color:#a41818; }.schedule-mode { display:flex; gap:1.5rem; flex-wrap:wrap; }.schedule-mode label { font-weight:600; }.schedule-mode input { width:auto; margin-right:.35rem; }
@media (max-width:640px) { .site-header,.session-banner,.information-heading,.training-card>header,.alternative-row { flex-direction:column; align-items:flex-start; }.session-banner,.session-information,.session-trainings { padding:1rem; }.details { grid-template-columns:1fr; gap:.15rem; }.details dd { margin-bottom:.6rem; }.slot-row { grid-template-columns:1fr 1fr; }.delete-slot { grid-column:span 2; }.page { margin-top:1rem; }.information-grid { grid-template-columns:1fr; } }
.reference-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(14rem,1fr)); gap:1rem; }.reference-tile,.reference-list>a { display:flex; flex-direction:column; gap:.25rem; padding:1.2rem; background:#fff; border:1px solid var(--q-border); border-radius:var(--q-radius); text-decoration:none; }.reference-tile strong { font-size:1.2rem; }.reference-list { display:grid; gap:.65rem; margin-top:1rem; }.reference-list>a span { color:var(--q-muted); }.reference-detail { background:#fff; padding:1.2rem; border:1px solid var(--q-border); border-radius:var(--q-radius); }.quick-create { align-self:flex-start; padding:.25rem .5rem; background:#fff; color:var(--q-blue); border:0; text-decoration:underline; }.quick-dialog { width:min(38rem,calc(100% - 2rem)); border:1px solid var(--q-border); border-radius:var(--q-radius); padding:1.25rem; color:var(--q-ink); }.quick-dialog::backdrop { background:#082e4b99; }.quick-reference-form { display:grid; gap:.8rem; }.detail-group { margin:1.2rem 0; padding:1rem; background:#fff; border:1px solid var(--q-border); border-radius:var(--q-radius); }.public-filters { grid-template-columns:repeat(auto-fit,minmax(10rem,1fr)); }.column-picker { align-self:stretch; padding:.5rem; background:#fff; border:1px solid var(--q-border); border-radius:6px; }.column-picker label { flex-direction:row; font-weight:400; }.column-picker input { width:auto; }.publication-form ul { list-style:none; padding:0; }.publication-form li { padding:.35rem 0; }.publication-form input[type=checkbox] { width:auto; }.confirmation { background:var(--q-exception-bg); border:1px solid #efd18a; border-radius:var(--q-radius); padding:1rem; }.withdraw-form { margin:1.25rem 0; }.public-header { justify-content:flex-start; }
.grid-page { max-width:98rem; }.grid-session { margin-bottom:1rem; }.view-switch { display:flex; gap:.5rem; flex-wrap:wrap; }.grid-toolbar { display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; margin:1rem 0; padding:.8rem; background:#fff; border:1px solid var(--q-border); border-radius:var(--q-radius); }.editable-table-scroll { width:100%; overflow-x:auto; border:1px solid var(--q-border); border-radius:var(--q-radius); background:#fff; }.editable-grid { min-width:1420px; margin:0; }.editable-grid th { position:sticky; top:0; z-index:1; }.editable-grid td { min-width:9.5rem; }.editable-grid td:nth-child(3),.editable-grid td:nth-child(4),.editable-grid td:nth-child(6) { min-width:14rem; }.editable-grid input,.editable-grid select,.editable-grid textarea { min-width:0; }.editable-grid input[type=time] { width:6.4rem; display:inline-block; }.editable-grid tr.is-dirty td { background:#fffbea; }.editable-grid tr.has-grid-error td { border-color:#c53b2c; }.cell-search { margin-bottom:.35rem; }.cell-mini-actions { display:flex; gap:.45rem; flex-wrap:wrap; margin-top:.35rem; }.cell-mini-actions .link-button,.cell-mini-actions .quick-create { font-size:.78rem; }.origin-badge { display:inline-block; margin-top:.35rem; padding:.1rem .4rem; border-radius:999px; font-size:.76rem; font-weight:700; }.origin-session { color:#24516e; background:#e1effa; }.origin-local { color:#315e42; background:#e4f3e8; }.origin-particular { color:var(--q-exception-ink); background:var(--q-exception-bg); }.origin-unknown { color:#5f6870; background:#eef1f3; }.has-particularity { box-shadow:inset 3px 0 #d69a1c; }.action-reference,.all-slots,.published-warning { display:block; margin-top:.4rem; color:var(--q-muted); font-size:.84rem; }.published-warning { color:#8a4b00; font-weight:700; }.schedule-controls { margin-bottom:.4rem; }.schedule-controls select { margin-bottom:.3rem; }.lunch-summary { font-size:.88rem; margin-bottom:.4rem; }.editable-grid details { min-width:13rem; }.editable-grid details>* { margin-top:.35rem; }.grid-row-actions { min-width:12rem!important; }.grid-row-actions>* { display:block; margin-bottom:.5rem; }.grid-error { margin-top:.4rem; color:#a41818; font-size:.82rem; font-weight:700; }.grid-message { min-height:1.6rem; padding:.25rem 0; }.grid-message.error { color:#a41818; }.grid-message.success { color:#23643a; font-weight:700; }
