:root {
  --yellow: #ffd500;
  --yellow-strong: #f7ca00;
  --ink: #111827;
  --navy: #16243d;
  --muted: #64748b;
  --line: #dce3ec;
  --surface: #ffffff;
  --soft: #f3f6fa;
  --green: #129447;
  --red: #d72d3c;
  --blue: #1687e7;
  --purple: #7736b7;
  --radius: 18px;
  --shadow: 0 12px 32px rgba(20, 32, 54, .10);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: #edf1f6;
}

* { box-sizing: border-box; }
html { min-height: 100%; scroll-behavior: smooth; }
body { margin: 0; min-height: 100vh; background: #f4f6f9; color: var(--ink); }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button, select { cursor: pointer; }
img { max-width: 100%; }

.topbar { position: sticky; top: 0; z-index: 50; height: 72px; display: flex; align-items: center; justify-content: space-between; padding: 0 max(20px, calc((100vw - 1180px)/2)); background: var(--yellow); border-bottom: 1px solid rgba(0,0,0,.09); }
.brand { display: flex; align-items: center; gap: 10px; min-width: max-content; }
.brand-mark { width: 40px; height: 40px; display: inline-grid; place-items: center; border-radius: 12px; background: var(--ink); color: var(--yellow); font-size: 24px; transform: rotate(0deg); }
.brand-mark svg { width: 24px; height: 24px; fill: currentColor; }
.brand strong { display: block; font-size: 20px; line-height: 1; }
.brand small { display: block; margin-top: 3px; font-size: 11px; font-weight: 700; letter-spacing: .04em; }
.desktop-nav { display: flex; gap: 6px; }
.desktop-nav a { padding: 10px 14px; border-radius: 10px; font-weight: 750; font-size: 14px; }
.desktop-nav a:hover { background: rgba(255,255,255,.55); }
.top-actions { display: flex; gap: 10px; align-items: center; }
.global-back { width: 38px; height: 38px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 11px; background: rgba(255,255,255,.72); color: var(--ink); font-size: 24px; font-weight: 900; }
.emergency-top { min-height: 40px; display: flex; align-items: center; gap: 6px; padding: 7px 10px; border-radius: 12px; background: #b42318; color: white; font-size: 12px; font-weight: 900; }
.emergency-top span { color: #ffe600; font-size: 13px; }
.icon-button { width: 42px; height: 42px; position: relative; display: grid; place-items: center; border-radius: 50%; background: rgba(255,255,255,.72); }
.icon-button b { position: absolute; right: -2px; top: -3px; min-width: 18px; height: 18px; display: grid; place-items: center; background: var(--red); color: white; border-radius: 12px; font-size: 10px; }
.icon-button b[hidden] { display:none; }
.profile-menu { position: relative; }
.profile-menu summary { list-style: none; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; background: var(--ink); color: white; font-weight: 800; cursor: pointer; }
.profile-menu summary::-webkit-details-marker { display: none; }
.profile-menu > div { position: absolute; right: 0; top: 50px; width: 230px; padding: 16px; background: white; border-radius: 15px; box-shadow: var(--shadow); border: 1px solid var(--line); }
.profile-menu strong,.profile-menu small { display: block; }
.profile-menu small { margin: 3px 0 12px; color: var(--muted); }
.profile-menu a,.profile-menu button { display: block; width: 100%; padding: 9px 0; border: 0; background: transparent; color: var(--ink); text-align: left; }

.app-main { min-height: calc(100vh - 72px); }
.page { width: min(1120px, calc(100% - 32px)); margin: 0 auto; padding: 30px 0 110px; }
.page.narrow { width: min(760px, calc(100% - 32px)); }
.page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 24px; }
.page-heading h1 { margin: 2px 0 4px; font-size: clamp(32px, 5vw, 52px); line-height: 1; letter-spacing: -.04em; }
.page-heading p { margin: 0; color: var(--muted); }
.eyebrow { display: block; color: #927900; font-size: 12px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.muted { color: var(--muted); }
.panel { padding: 22px; background: white; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 8px 28px rgba(22,36,61,.06); }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 28px 0 12px; }
.section-heading h2 { margin: 0; font-size: 22px; letter-spacing: -.02em; }
.section-heading p { margin: 3px 0 0; color: var(--muted); font-size: 14px; }
.section-heading > a { color: #735e00; font-weight: 800; font-size: 14px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 18px; border: 0; border-radius: 12px; font-weight: 850; }
.button.primary { background: var(--yellow); color: var(--ink); }
.button.secondary { background: white; border: 1px solid var(--line); }
.button.dark { background: var(--ink); color: white; }
.button.light { background: white; color: var(--ink); }
.button.success { background: #e5f8ed; color: #067437; }
.button.danger { background: #fff0f1; color: #b52230; }
.button.full { width: 100%; }
.back-link { color: var(--muted); font-weight: 750; }
.empty-state { padding: 24px; color: var(--muted); background: var(--soft); border-radius: 14px; text-align: center; }
.vehicle-main { min-width:0;flex:1; }.vehicle-data { display:flex;flex-wrap:wrap;gap:6px;margin:9px 0 0; }.vehicle-data div { min-width:100px;padding:7px 9px;border-radius:9px;background:var(--soft); }.vehicle-data dt { color:var(--muted);font-size:9px;font-weight:850;text-transform:uppercase; }.vehicle-data dd { margin:2px 0 0;font-size:13px;font-weight:900; }.vehicle-card.needs-review { border-color:#e5b52a;background:#fffdf2; }.review-note { display:block;margin-top:8px;color:#8a6100;font-weight:850; }
.relief-car-badge,.parking-badge { width:max-content;max-width:100%;display:inline-flex;align-items:center;margin-top:6px;padding:4px 7px;border-radius:999px;background:#e9f7ee;color:#087039;font-size:9px;font-weight:900;white-space:normal; }.parking-badge { background:#edf2f8;color:#516176; }.relief-car-banner,.parking-banner { display:flex;align-items:center;gap:13px;margin:12px 0;padding:15px;border:1px solid #9ed5b3;border-radius:16px;background:#ecf9f1; }.relief-car-banner > span,.parking-banner > span { width:48px;height:48px;display:grid;place-items:center;flex:0 0 auto;border-radius:14px;background:white;font-size:26px; }.relief-car-banner small,.relief-car-banner strong,.relief-car-banner p,.parking-banner small,.parking-banner strong { display:block; }.relief-car-banner small,.parking-banner small { color:#087039;font-size:10px;font-weight:950;text-transform:uppercase; }.relief-car-banner strong,.parking-banner strong { margin-top:2px;font-size:18px; }.relief-car-banner p { margin:2px 0 0;color:#4f6257;font-size:11px; }.parking-banner { border-color:#d6dee8;background:#f3f6fa; }.parking-banner > span { color:#526078;font-weight:950; }.parking-banner small { color:#526078; }
.span-all { grid-column: 1/-1; }

.messages { position: fixed; z-index: 100; top: 80px; right: 18px; width: min(420px, calc(100% - 36px)); }
.message { margin-bottom: 8px; padding: 14px 16px; border-radius: 12px; box-shadow: var(--shadow); background: white; border-left: 5px solid var(--blue); }
.message.success { border-left-color: var(--green); }
.message.warning { border-left-color: var(--yellow-strong); }
.message.error { border-left-color: var(--red); }

/* Auth */
.auth-page { background: #e8edf3; }
.auth-shell { min-height: 100svh; display: grid; grid-template-columns: minmax(520px, 1.7fr) minmax(340px, .8fr); }
.auth-visual { position:relative;min-height:100svh;padding:clamp(30px,5vw,76px);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;color:white;background:#bfe7ff;isolation:isolate; }
.auth-visual:before { content:"";position:absolute;z-index:-2;inset:-18px;background:url("../img/brand/dienstinfo-gelenkbus-herz.png") center/cover no-repeat;filter:blur(14px) brightness(.78);transform:scale(1.04); }
.auth-visual:after { content:"";position:absolute;z-index:-1;inset:0;background:url("../img/brand/dienstinfo-gelenkbus-herz.png") center/auto 88% no-repeat;pointer-events:none; }
.auth-motivation { position:absolute;z-index:2;left:clamp(18px,3vw,45px);bottom:clamp(22px,3vw,42px);display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid rgba(255,255,255,.4);border-radius:999px;background:rgba(8,19,35,.78);box-shadow:0 8px 24px rgba(0,0,0,.24);backdrop-filter:blur(7px); }
.auth-motivation strong,.auth-motivation span { color:white;font-size:clamp(10px,1vw,13px);font-weight:900;letter-spacing:.025em; }.auth-motivation strong { color:var(--yellow); }.auth-motivation span:before { content:"•";margin-right:8px;color:var(--yellow); }
.auth-brand,.auth-copy { position: relative; z-index: 1; }
.auth-brand { display: flex; align-items: center; gap: 12px; }
.auth-brand strong { display: block; font-size: 29px; }.auth-brand small { display:block; font-size:13px; font-weight:750; }
.auth-copy { max-width: 570px; }
.auth-copy h1 { margin: 0 0 16px; font-size: clamp(52px, 7vw, 92px); line-height: .92; letter-spacing: -.06em; }
.auth-copy p { max-width: 420px; margin: 0; font-size: 20px; line-height: 1.45; }
.auth-card-wrap { display: grid; place-items: center; padding: 24px; background: #fff; }
.auth-card { width: min(350px, 100%); }
.auth-card h2 { margin: 5px 0 3px; font-size: 36px; letter-spacing: -.04em; }
.auth-card label,.registration-card label,.stack-form label { display: block; margin: 11px 0 5px; font-size: 12px; font-weight: 850; }
.auth-card input,.registration-card input:not([type=checkbox]),.registration-card select,.stack-form input,.stack-form select,.stack-form textarea,.filter-panel input,.filter-panel select { width: 100%; min-height: 44px; padding: 9px 12px; border: 1px solid #cbd5e1; border-radius: 11px; background: white; outline: none; }
.auth-card input:focus,.registration-card input:focus,.registration-card select:focus,.filter-panel input:focus,.filter-panel select:focus { border-color: #bf9e00; box-shadow: 0 0 0 4px rgba(255,213,0,.18); }
.auth-card .button { margin-top: 15px; }
.auth-divider { display: flex; align-items: center; gap: 12px; margin: 14px 0 0; color: var(--muted); font-size: 12px; }.auth-divider:before,.auth-divider:after { content:""; height:1px; flex:1; background:var(--line); }
.trust-line { margin: 14px 0 0; text-align:center; color:var(--muted); font-size:11px; }
.form-error,.errorlist { padding: 10px 12px; border-radius: 10px; background:#fff1f2; color:#a61e2b; font-size:13px; list-style:none; }
.registration-shell { width: min(720px, calc(100% - 24px)); min-height:100svh; margin:0 auto; padding:12px 0; display:flex; flex-direction:column; justify-content:center; }
.registration-card { margin-top:8px; padding:18px 22px; border-radius:20px; background:white; box-shadow:var(--shadow); }
.registration-card h1 { margin:3px 0 2px; font-size:31px; }
.registration-card > .muted { margin:0 0 2px; font-size:12px; line-height:1.35; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 12px; }.span-2 { grid-column:1/-1; }
.consent-box { margin:12px 0; padding:10px 12px; background:#fffbea; border:1px solid #ead57a; border-radius:12px; }
.terms-scroll { height:230px;margin-top:14px;padding:14px;overflow-y:auto;border:1px solid #b9c5d3;border-radius:13px;background:#f8fafc;box-shadow:inset 0 -18px 25px rgba(15,23,42,.06);font-size:11px;line-height:1.45; }.terms-scroll h2 { margin:0 0 8px;font-size:17px; }.terms-scroll h3 { margin:13px 0 3px;font-size:12px; }.terms-scroll p { margin:0 0 7px; }.terms-progress { margin:5px 2px 0;color:#8a6100;font-size:10px;font-weight:800; }.registration-card button:disabled { cursor:not-allowed;opacity:.45; }
.consent-box label { display:flex; gap:8px; margin:0 0 8px; font-size:11px; line-height:1.3; font-weight:550; }.consent-box label:last-of-type { margin-bottom:0; }.consent-box input { width:18px; height:18px; flex:0 0 auto; accent-color:var(--ink); }
.simple-auth { min-height:100vh; display:grid; place-items:center; padding:24px; background:radial-gradient(circle at top,var(--yellow),#f4f6f9 46%); }
.status-card { width:min(520px,100%); padding:46px; text-align:center; background:white; border-radius:24px; box-shadow:var(--shadow); }.status-card h1 { margin:8px 0; }.status-card p { color:var(--muted); line-height:1.6; }.status-icon { width:66px;height:66px;display:grid;place-items:center;margin:0 auto 18px;border-radius:50%;background:#e6f8ed;color:var(--green);font-size:34px;font-weight:900; }

/* Dashboard */
.dashboard-head { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:26px 28px; background:white; border-radius:22px; box-shadow:var(--shadow); }
.live-clock { font-size:clamp(46px,8vw,78px); line-height:.9; font-weight:900; letter-spacing:-.06em; }.live-date { margin-top:10px; font-size:18px; }
.weather { display:grid; grid-template-columns:auto auto; column-gap:7px; text-align:right; }.weather span { grid-row:1/3;font-size:42px;color:#e6b900; }.weather strong { font-size:30px;line-height:1; }.weather small { color:var(--muted); }
.announcement { display:flex; gap:12px; margin-top:12px; padding:14px 18px; border-radius:13px; background:#eaf4ff; border-left:5px solid var(--blue); }.announcement.warning { background:#fff8dc;border-color:var(--yellow-strong); }.announcement.success { background:#e9f9ef;border-color:var(--green); }.announcement span { color:#475569; }
.current-duty { display:flex; align-items:center; gap:17px; margin-top:16px; padding:20px; background:white; border:1px solid var(--line); border-radius:18px; box-shadow:0 8px 25px rgba(15,23,42,.06); }.current-duty > div { flex:1; }.current-duty small { color:var(--muted);font-weight:700; }.current-duty h2 { margin:2px 0;font-size:25px; }.current-duty p { margin:0;color:#475569; }.bus-badge { width:54px;height:54px;display:grid;place-items:center;flex:0 0 auto;border-radius:14px;background:var(--yellow);font-size:28px; }.bus-badge.dark { background:var(--yellow);color:var(--ink); }.status-pill { padding:8px 13px;border-radius:999px;background:#e5f8ec;color:#07783a;font-weight:800;font-size:12px; }
.next-card { display:block;margin-top:14px;padding:20px;border-radius:20px;color:white;background:linear-gradient(135deg,#111318,#232932);box-shadow:var(--shadow); }.next-card-top { display:flex;align-items:center;justify-content:space-between;margin-bottom:12px; }.next-card-top strong { font-size:22px; }.next-card-top span { color:var(--yellow);font-weight:900; }.next-card-body { display:flex;align-items:center;gap:14px; }.next-card-body > div { flex:1; }.next-card-body b { font-size:20px; }.next-card-body em { margin-left:10px;padding:5px 9px;border-radius:8px;background:#343b46;font-style:normal;font-size:12px; }.next-card-body p { margin:5px 0 0;color:#dbe2eb; }.next-card-body i { font-size:38px;font-style:normal; }
.garage-grid { display:grid;grid-template-columns:1fr 1fr;gap:14px; }.garage-card { display:flex;align-items:center;gap:14px;padding:20px;background:white;border:1px solid var(--line);border-radius:17px;box-shadow:0 7px 20px rgba(15,23,42,.05); }.garage-card > div { flex:1; }.garage-card strong,.garage-card small { display:block; }.garage-card small { margin-top:4px;color:var(--muted); }.garage-icon { width:48px;height:48px;display:grid;place-items:center;border-radius:12px;background:#edf2f8;color:var(--navy);font-size:27px; }.garage-icon.large { width:66px;height:66px;font-size:34px; }
.quick-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:15px; }.quick-grid a { display:flex;align-items:center;gap:10px;padding:17px;background:white;border:1px solid var(--line);border-radius:15px; }.quick-grid span { font-size:24px;color:var(--navy); }.quick-grid strong { font-size:14px; }
.ivu-launch { display:grid;grid-template-columns:62px 1fr auto;align-items:center;gap:16px;margin-top:16px;padding:17px 20px;border-radius:18px;background:linear-gradient(110deg,#ffd500,#ffe875);color:var(--ink);box-shadow:0 10px 26px rgba(176,139,0,.18); }.ivu-launch-icon { width:62px;height:52px;display:grid;place-items:center;border-radius:13px;background:var(--ink);color:var(--yellow);font-size:19px;font-weight:950;letter-spacing:.03em; }.ivu-launch > span:nth-child(2) { display:grid; }.ivu-launch small { color:#695900;font-weight:800;text-transform:uppercase;letter-spacing:.06em; }.ivu-launch strong { font-size:22px;line-height:1.15; }.ivu-launch em { margin-top:3px;color:#514a30;font-size:12px;font-style:normal; }.ivu-launch b { padding:10px 13px;border-radius:11px;background:rgba(255,255,255,.72);white-space:nowrap; }
.departure-grid { display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px; }.departure-card { min-width:0;padding:19px;border:1px solid var(--line);border-radius:20px;background:white;box-shadow:0 8px 25px rgba(15,23,42,.06); }.departure-card.dark { border-color:#20252e;background:linear-gradient(145deg,#15181e,#242a33);color:white; }.departure-head { display:flex;align-items:flex-start;justify-content:space-between;gap:12px; }.departure-head small { color:var(--muted);font-weight:750; }.departure-card.dark .departure-head small,.departure-card.dark .departure-head p { color:#bdc7d4; }.departure-head h2 { margin:2px 0 1px;font-size:23px; }.departure-head p { margin:0;color:#5f6d80;font-size:12px; }.live-pill { padding:6px 9px;border-radius:999px;background:#dcfce7;color:#08783e;font-size:10px;font-weight:950;letter-spacing:.08em; }.departure-tabs { display:flex;gap:5px;margin:13px 0 9px;overflow-x:auto;scrollbar-width:none; }.departure-tabs button { padding:7px 10px;border:1px solid #414956;border-radius:999px;background:transparent;color:#d8dee7;font-size:11px;font-weight:800;white-space:nowrap; }.departure-tabs button.active { border-color:var(--yellow);background:var(--yellow);color:var(--ink); }.departure-list { display:grid;gap:7px;margin-top:13px; }.departure-card.dark .departure-tabs + .departure-list { margin-top:0; }.departure-row { display:grid;grid-template-columns:47px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:53px;padding:8px 10px;border:1px solid #e5eaf0;border-radius:12px;background:#f8fafc; }.departure-card.dark .departure-row { border-color:#3a414d;background:#282e38; }.departure-line { min-width:42px;padding:8px 5px;border-radius:9px;background:var(--yellow);color:var(--ink);text-align:center;font-weight:950; }.departure-destination { min-width:0;display:grid; }.departure-destination strong { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px; }.departure-destination small { margin-top:2px;color:#66758a;font-size:10px; }.departure-card.dark .departure-destination small { color:#adb8c6; }.departure-row time { font-size:21px;font-weight:900;font-variant-numeric:tabular-nums; }.departure-row time.delayed { color:#b42318; }.departure-card.dark .departure-row time.delayed { color:#ff9d91; }.departure-loading { min-height:68px;display:grid;place-items:center;padding:14px;border-radius:12px;background:#f4f6f9;color:#64748b;text-align:center;font-size:12px; }.departure-card.dark .departure-loading { background:#282e38;color:#c1cad5; }.departure-loading.error { color:#a61e2b; }.departure-card.dark .departure-loading.error { color:#ffaaa1; }.departure-updated { min-height:15px;margin:8px 2px 0;color:#7a8799;font-size:10px; }.departure-card.dark .departure-updated { color:#9aa6b6; }
.departure-card.airport { grid-column: 1/-1; }
.emergency-card { scroll-margin-top:86px;margin-top:14px;padding:18px;border:2px solid #f3c526;border-radius:20px;background:linear-gradient(135deg,#fff9d8,#fff);box-shadow:0 8px 25px rgba(15,23,42,.06); }.emergency-heading { display:flex;align-items:center;gap:12px;margin-bottom:13px; }.emergency-heading > span { width:44px;height:44px;display:grid;place-items:center;flex:0 0 auto;border-radius:13px;background:#b42318;color:#ffe600;font-size:20px; }.emergency-heading small { color:#8a6100;font-weight:900;text-transform:uppercase;letter-spacing:.08em; }.emergency-heading h2 { margin:2px 0 0;font-size:21px; }.emergency-numbers { display:grid;grid-template-columns:repeat(2,1fr);gap:9px; }.emergency-numbers a { padding:13px 14px;border:1px solid #eadca9;border-radius:13px;background:white; }.emergency-numbers span,.emergency-numbers strong,.emergency-numbers small { display:block; }.emergency-numbers span { font-size:12px;font-weight:800;color:#5d6572; }.emergency-numbers strong { margin:3px 0;font-size:22px;letter-spacing:.02em; }.emergency-numbers small { color:#687386;font-size:11px; }.emergency-numbers a.critical { border-color:#df5b52;background:#fff3f2; }.emergency-numbers a.critical strong { color:#a61e2b; }
.zvv-plans { margin-top:16px;border:1px solid var(--line);border-radius:18px;background:white;overflow:hidden; }.zvv-plans summary { display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:12px;padding:16px;cursor:pointer;list-style:none; }.zvv-plans summary::-webkit-details-marker { display:none; }.zvv-plans summary > span { width:52px;height:45px;display:grid;place-items:center;border-radius:12px;background:#dcefff;color:#075b9a;font-weight:950; }.zvv-plans summary strong,.zvv-plans summary small { display:block; }.zvv-plans summary small { margin-top:2px;color:var(--muted); }.zvv-plans summary > b { font-size:24px;transition:transform .2s; }.zvv-plans[open] summary > b { transform:rotate(90deg); }.zvv-plan-grid { display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 16px 16px; }.zvv-plan-grid a { min-width:0;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--soft); }.zvv-plan-grid img { width:100%;height:210px;object-fit:contain;background:white;border-radius:9px; }.zvv-plan-grid strong,.zvv-plan-grid small { display:block; }.zvv-plan-grid strong { margin-top:8px; }.zvv-plan-grid small { color:var(--muted);font-size:11px; }
.holiday-title { align-items:center; }.holiday-calendar-icon { width:72px;height:72px;display:grid;place-items:center;border-radius:22px;background:var(--yellow);font-size:34px;box-shadow:0 10px 24px rgba(122,97,0,.15); }.region-strip { display:flex;gap:8px;overflow-x:auto;margin-bottom:14px;scrollbar-width:none; }.region-strip span { padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:white;color:#546174;font-size:12px;font-weight:850;white-space:nowrap; }.region-strip span.active { border-color:#d6b200;background:#fff6bf;color:#5d4c00; }.year-tabs { display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px; }.year-tabs a { padding:11px;border:1px solid var(--line);border-radius:12px;background:white;text-align:center;font-weight:900; }.year-tabs a.active { border-color:var(--ink);background:var(--ink);color:white; }.holiday-list { display:grid;gap:9px; }.holiday-row { display:grid;grid-template-columns:62px 1fr auto;align-items:center;gap:14px;padding:13px 16px;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 5px 18px rgba(15,23,42,.04); }.holiday-row time { width:62px;height:58px;display:grid;place-content:center;border-radius:13px;background:#fff5b3;text-align:center; }.holiday-row time b { font-size:23px;line-height:1; }.holiday-row time span { margin-top:2px;color:#7a6400;font-size:11px;font-weight:900;text-transform:uppercase; }.holiday-row div small,.holiday-row div strong,.holiday-row div p { display:block; }.holiday-row div small { color:#927900;font-size:11px;font-weight:850; }.holiday-row div strong { margin-top:2px;font-size:17px; }.holiday-row div p { margin:2px 0 0;color:var(--muted);font-size:11px; }.holiday-dot { width:11px;height:11px;border-radius:50%;background:var(--yellow-strong); }.calendar-note { margin-top:16px;padding:16px;border:1px solid #d9e2ed;border-radius:16px;background:#edf5ff; }.calendar-note strong,.calendar-note p { display:block; }.calendar-note p { margin:4px 0 10px;color:#516176;font-size:12px; }.calendar-note a { color:#075b9a;font-size:12px;font-weight:850; }
.wiem-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:11px; }.wiem-grid a { min-width:0;display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:14px 15px;border:1px solid var(--line);border-radius:14px;background:white;box-shadow:0 5px 16px rgba(15,23,42,.04); }.wiem-grid a > span { width:44px;height:44px;display:grid;place-items:center;border-radius:11px;background:#edf2f8;color:var(--navy);font-size:14px;font-weight:900; }.wiem-grid a > div { min-width:0;display:grid; }.wiem-grid strong { font-size:14px; }.wiem-grid small { margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px; }.wiem-grid b { font-size:20px; }
.favorite-list { display:grid;gap:8px; }.favorite-list a { display:grid;grid-template-columns:28px 54px 135px 1fr 20px;align-items:center;gap:7px;padding:13px 15px;background:white;border:1px solid #e3e8ef;border-radius:12px; }.favorite-list .star { color:#e9bd00;font-size:19px; }.favorite-list time { color:#334155;font-variant-numeric:tabular-nums; }.favorite-list em { color:#475569;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }.favorite-list i { font-size:24px;font-style:normal; }

/* Garage, duties */
.garage-hero { display:flex;align-items:center;gap:20px;padding:27px;border-radius:22px;background:linear-gradient(120deg,var(--yellow),#ffe873); }.garage-hero > div { flex:1; }.garage-hero h1 { margin:2px 0;font-size:34px; }.garage-hero p { margin:0; }
.filter-panel { margin:22px 0;padding:14px;background:white;border:1px solid var(--line);border-radius:16px; }.filter-panel.compact { display:grid;grid-template-columns:1fr 1fr 2fr auto;gap:10px; }.day-tabs { display:grid;grid-template-columns:repeat(5,1fr);gap:8px; }.day-tabs button { padding:11px 7px;border:0;border-radius:10px;background:#eef2f6;font-weight:800; }.day-tabs button.active { background:var(--yellow); }.search-row { display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:10px; }
.duty-number-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px; }.duty-overview-card,.duty-list-entry { min-width:0;overflow:hidden;border:1px solid #d9e1e9;border-radius:16px;background:white;box-shadow:0 7px 18px rgba(15,23,42,.06); }.duty-overview-main { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:linear-gradient(135deg,#43b65b,#209e40);color:white; }.duty-overview-main span { display:flex;align-items:baseline;gap:12px; }.duty-overview-main strong { font-size:23px; }.duty-overview-main small { font-size:12px;font-weight:800; }.duty-overview-main > b { font-size:25px; }.duty-relief-strip { padding:10px 12px;background:#f5f7fa;color:#59677a; }.duty-relief-strip.has-car { background:#edf9f1;color:#244f34; }.duty-relief-title { display:flex;align-items:center;gap:7px;margin-bottom:7px; }.duty-relief-title > span { font-size:16px; }.duty-relief-title strong { font-size:11px;letter-spacing:.06em;text-transform:uppercase; }.duty-relief-title small { margin-left:auto;padding:3px 6px;border-radius:999px;background:white;color:#526078;font-size:9px;font-weight:900; }.duty-relief-journey { display:grid;grid-template-columns:74px minmax(0,1fr);gap:8px;padding:7px 0;border-top:1px solid rgba(36,79,52,.14); }.duty-relief-journey time { font-size:11px;font-weight:900;font-variant-numeric:tabular-nums; }.duty-relief-journey p,.duty-relief-none { margin:0;font-size:11px;line-height:1.35; }.duty-relief-journey p > strong,.duty-relief-journey p > small { display:block; }.duty-relief-journey p > small { margin-top:2px;color:#58705f;font-size:9px;font-weight:750; }.duty-relief-none { color:#748195; }
.duty-number-grid-compact { grid-template-columns:repeat(6,minmax(0,1fr));gap:10px; }.compact-duty-card { display:block;padding:16px 10px;border-radius:12px;background:linear-gradient(135deg,#43b65b,#209e40);color:white;text-align:center;box-shadow:0 5px 12px rgba(18,148,71,.18); }.compact-duty-card strong,.compact-duty-card small { display:block; }.compact-duty-card strong { font-size:22px; }.compact-duty-card small { margin-top:3px;font-size:11px;font-weight:750; }
.duty-list-cards { display:grid;gap:10px; }.duty-list-entry > a { display:flex;align-items:center;gap:15px;padding:15px;background:white; }.duty-list-entry > a > div { flex:1; }.duty-list-entry > a p { margin:3px 0 0;color:var(--muted); }.duty-no { width:64px;height:54px;display:grid;place-items:center;border-radius:12px;background:var(--yellow);font-size:22px;font-weight:900; }
.duty-number-grid-compact .compact-duty-card,.duty-list-cards .compact-duty-card { aspect-ratio:1;min-height:98px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 6px; }
.duty-list-cards.duty-number-grid-compact { grid-template-columns:repeat(6,minmax(0,1fr)); }
.duty-summary { position:relative;padding-right:110px; }
.duty-original-link { position:absolute;right:14px;top:50%;transform:translateY(-50%);display:grid;place-items:center;gap:3px;width:76px;min-height:66px;border:2px solid #c8a800;border-radius:11px;background:#fff7c7;color:#182d43;text-align:center; }
.duty-original-link span { font-size:19px;font-weight:900; }.duty-original-link small { font-size:10px;font-weight:800; }
.operational-notice { display:flex;flex-wrap:wrap;gap:8px 12px;align-items:baseline;margin-top:9px;padding:12px 15px;border-left:5px solid #b4232f;border-radius:10px;background:#fff0f1;color:#82202a;line-height:1.4; }
.operational-notice strong { font-size:12px; }.operational-notice span { font-weight:800; }
.line-priority-alert { display:flex;align-items:center;gap:8px;margin-top:7px;padding:8px 10px;border:2px solid #c51e2d;border-radius:8px;background:#fff0f1;color:#ab1624;font-weight:900;line-height:1.3;animation:priority-pulse 1.5s ease-in-out infinite; }
.line-priority-alert > span { flex:none;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#c51e2d;color:white;font-size:14px; }
@keyframes priority-pulse { 50% { background:#ffcbd0;border-color:#8e111d; } }
@media (prefers-reduced-motion: reduce) { .line-priority-alert { animation:none; } }
.timeline-now-indicator { display:none;align-items:center;gap:7px;margin:6px 0 2px;color:#bf1d2c;font-size:11px;font-weight:900; }
.timeline-now-indicator:before { content:"";flex:1;height:3px;border-radius:3px;background:#e32636; }
.timeline-step.is-current .timeline-now-indicator { display:flex; }

.duty-title-row { display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:16px; }.duty-title-row > div { text-align:center; }.duty-title-row h1 { margin:0;font-size:36px; }.duty-title-row form { justify-self:end; }.favorite-button { border:0;background:transparent;color:#e3b800;font-size:38px; }
.duty-summary { display:grid;grid-template-columns:repeat(4,1fr);gap:12px; }.duty-summary div { padding:10px;border-left:3px solid var(--yellow); }.duty-summary small,.duty-summary strong { display:block; }.duty-summary small { color:var(--muted); }.duty-summary strong { margin-top:4px;font-size:20px; }
.duty-warning,.vehicle-banner { display:flex;align-items:center;gap:13px;margin-top:12px;padding:14px 17px;border-radius:14px;color:white; }.duty-warning { background:linear-gradient(120deg,#6622a0,#8a43c6); }.duty-warning > span { width:35px;height:35px;display:grid;place-items:center;border-radius:10px;background:white;color:#6622a0;font-weight:900; }.duty-warning p { margin:2px 0 0; }.vehicle-banner { background:#d8eeff;color:#153657; }.vehicle-banner > span { font-size:27px; }.vehicle-banner small,.vehicle-banner strong { display:block; }
.timeline { position:relative;padding:3px 0; }.timeline:before { content:"";position:absolute;left:91px;top:12px;bottom:12px;width:3px;background:#d4dbe4; }.timeline-step { position:relative;display:grid;grid-template-columns:72px 28px 1fr;align-items:start;gap:6px;margin-bottom:8px; }.timeline-step > time { padding-top:13px;text-align:right;font-weight:800;font-variant-numeric:tabular-nums; }.timeline-dot { z-index:3;width:15px;height:15px;margin:15px auto 0;border:4px solid white;border-radius:50%;background:#7c8898;box-shadow:0 0 0 2px #7c8898; }.timeline-card { position:relative;padding:11px 15px;border-radius:11px;background:linear-gradient(90deg,var(--accent),#f5f7fa); }.timeline-label { display:flex;align-items:center;justify-content:space-between;gap:12px; }.timeline-label b { padding:4px 8px;border-radius:7px;background:rgba(255,255,255,.65);font-size:12px; }.timeline-card p { margin:5px 0 0;color:#344258; }.timeline-card small { color:var(--muted); }.timeline-step.kind-start .timeline-dot { background:var(--yellow);box-shadow:0 0 0 2px var(--yellow); }.timeline-step.kind-break .timeline-dot { background:var(--green);box-shadow:0 0 0 2px var(--green); }.timeline-step.kind-end .timeline-dot { background:#667085;box-shadow:0 0 0 2px #667085; }.timeline-step.is-current .timeline-dot { width:21px;height:21px;margin-top:12px;background:var(--blue);box-shadow:0 0 0 4px #bfe1ff; }.timeline-step.is-current .timeline-label,.timeline-step.is-current .timeline-card > p,.timeline-step.is-current .timeline-card > small { position:relative;z-index:2; }.note-panel { margin-top:18px; }.note-panel h3 { margin-top:0; }
.relief-workflow { margin:12px 0;padding:15px; }.relief-workflow-heading { display:flex;align-items:center;gap:11px;margin-bottom:7px; }.relief-workflow-heading > span { width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#e8f7ee;font-size:22px; }.relief-workflow-heading small { color:#087039;font-size:9px;font-weight:950;letter-spacing:.07em;text-transform:uppercase; }.relief-workflow-heading h2 { margin:2px 0 0;font-size:19px; }.relief-workflow-row { display:grid;grid-template-columns:78px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--line); }.relief-workflow-row time { font-weight:900;font-variant-numeric:tabular-nums; }.relief-workflow-row strong { font-size:12px; }.relief-workflow-row p { margin:3px 0 0;color:var(--muted);font-size:10px; }

/* Cards, contacts, management */
.card-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:14px; }.info-card { display:flex;align-items:flex-start;gap:14px;padding:18px;background:white;border:1px solid var(--line);border-radius:16px; }.info-card > div { flex:1; }.info-card h2 { margin:2px 0; }.info-card p { margin:4px 0;color:var(--muted); }.card-icon { width:48px;height:48px;display:grid;place-items:center;border-radius:13px;background:var(--yellow);font-size:25px; }.call-button { align-self:center;padding:9px 11px;border-radius:10px;background:#e8f7ef;color:#086c36;font-weight:800;font-size:13px; }
.contact-list { display:grid;gap:9px; }.contact-list article { display:flex;align-items:center;gap:12px;padding:13px 15px;background:white;border:1px solid var(--line);border-radius:13px; }.contact-list article > div { flex:1; }.contact-list strong,.contact-list small { display:block; }.contact-list small { color:var(--muted);margin-top:2px; }.contact-list article > a { font-weight:800;color:#13538b; }.avatar { width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--navy);color:white;font-weight:850; }.avatar.yellow { background:var(--yellow);color:var(--ink); }
.contact-list article.priority-contact { border-color:#e5cf72;background:#fffdf0; }.contact-list article.priority-contact.critical { border-color:#df5b52;background:#fff3f2; }.contact-list article.priority-contact.critical .avatar { background:#b42318; }
.info-link-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:12px; }.info-link-card { display:flex;align-items:center;gap:14px;padding:18px;background:white;border:1px solid var(--line);border-radius:15px; }.info-link-card > span { width:47px;height:47px;display:grid;place-items:center;border-radius:12px;background:var(--yellow);font-size:23px; }.info-link-card > div { flex:1; }.info-link-card strong,.info-link-card small { display:block; }.info-link-card small { margin-top:3px;color:var(--muted); }.info-link-card i { font-style:normal;font-size:26px; }
.notification-list { display:grid;gap:10px; }.notification-list a { display:flex;gap:13px;padding:17px;background:white;border:1px solid var(--line);border-radius:15px; }.notification-list a > span { font-size:24px; }.notification-list strong { display:block; }.notification-list p { margin:4px 0;color:#475569; }.notification-list small { color:var(--muted); }
.app-notification-toast { position:fixed;z-index:90;top:82px;right:20px;width:min(430px,calc(100% - 40px));display:grid;grid-template-columns:42px minmax(0,1fr) auto 28px;align-items:center;gap:10px;padding:12px 12px 12px 13px;border:1px solid #dfc347;border-radius:17px;background:linear-gradient(135deg,#fffef4,#fff7c8);box-shadow:0 18px 48px rgba(15,23,42,.24);animation:notification-toast-in .24s ease-out; }
.app-notification-toast[hidden] { display:none; }
.app-notification-icon { width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--ink);font-size:21px; }
.app-notification-copy { min-width:0; }.app-notification-copy strong { display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px; }.app-notification-copy p { display:-webkit-box;margin:3px 0 0;overflow:hidden;color:#596579;font-size:11px;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2; }
.app-notification-toast > a { padding:7px 9px;border-radius:9px;background:var(--yellow);font-size:10px;font-weight:900;white-space:nowrap; }
.app-notification-toast > button { width:28px;height:28px;padding:0;border:0;background:transparent;color:#667085;font-size:23px;line-height:1;cursor:pointer; }
@keyframes notification-toast-in { from { opacity:0;transform:translateY(-12px); } to { opacity:1;transform:translateY(0); } }
.legal-page { line-height:1.7; }.legal-page h1 { font-size:42px; }.legal-page h2 { margin-top:30px; }
.form-panel { max-width:650px; }.switch-line { display:flex;gap:13px;align-items:flex-start;margin-bottom:20px; }.switch-line input { width:22px;height:22px;accent-color:var(--ink); }.switch-line span,.switch-line small { display:block; }.switch-line small { margin-top:4px;color:var(--muted); }
.stat-grid { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:18px; }.stat-grid > div,.stat-card { position:relative;min-width:0;padding:18px;background:var(--ink);color:white;border-radius:15px; }.stat-grid strong,.stat-grid small { display:block; }.stat-grid strong { font-size:31px;color:var(--yellow); }.stat-grid small { color:#cbd5e1;overflow-wrap:anywhere; }.stat-card.is-link { padding-right:40px;box-shadow:0 7px 17px rgba(15,23,42,.14); }.stat-card.is-link > span { position:absolute;right:15px;top:50%;font-size:28px;transform:translateY(-50%); }.stat-card.is-link:focus-visible { outline:3px solid var(--yellow);outline-offset:3px; }
.management-grid { display:grid;grid-template-columns:1.5fr .75fr;gap:16px;margin-bottom:16px; }.management-grid .section-heading { margin-top:0; }.approval-list { display:grid;gap:10px; }.approval-list article { display:flex;align-items:center;gap:12px;padding:12px;background:var(--soft);border-radius:13px; }.approval-list article > div:nth-child(2) { flex:1; }.approval-list strong,.approval-list small { display:block; }.approval-list small { color:var(--muted);margin-top:2px; }.approval-actions { display:flex;gap:6px; }.stack-form p { margin:0 0 12px; }.stack-form label { margin-top:0; }.recent-users { display:grid;gap:7px; }.recent-users > div { display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid var(--line); }.recent-users b { padding:5px 9px;border-radius:999px;font-size:12px; }.status-approved { background:#e7f8ee;color:#087039; }.status-rejected { background:#fff0f1;color:#a51c29; }
.management-page,.management-page * { min-width:0; }.management-page { overflow-x:clip; }.management-page input,.management-page select,.management-page textarea { max-width:100%; }.approval-list article > div,.recent-users > div > span { overflow-wrap:anywhere; }.approval-actions { flex-wrap:wrap; }.management-member-list { display:grid;gap:10px; }.management-member-list article { display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;padding:14px;border:1px solid var(--line);border-radius:15px;background:white;box-shadow:0 6px 18px rgba(15,23,42,.05); }.management-member-copy > strong,.management-member-copy > small { display:block; }.management-member-copy > small { margin-top:3px;color:var(--muted); }.management-member-links { display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px; }.management-member-links a { color:#075b9a;font-size:12px;font-weight:800;overflow-wrap:anywhere; }.management-member-status { padding:6px 9px;border-radius:999px;background:#e7f8ee;color:#087039;font-size:10px;font-weight:900; }
.visitor-mini { display:flex;align-items:center;flex-wrap:wrap;gap:5px 13px;margin:-6px 0 12px;padding:8px 11px;border:1px solid #dce3ec;border-radius:12px;background:rgba(255,255,255,.78);color:#637083;font-size:10px; }
.visitor-mini span { display:flex;align-items:center;gap:4px;white-space:nowrap; }.visitor-mini b { color:var(--ink);font-size:12px; }.visitor-mini i { width:7px;height:7px;border-radius:50%;background:#18a957;box-shadow:0 0 0 3px #dff7e9; }.visitor-mini small { margin-left:auto;color:#8a94a4;font-size:9px; }
.public-visitor-mini { display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px 11px;margin:15px auto 0;padding:7px 10px;color:#7a8595;font-size:9px;line-height:1.2; }
.public-visitor-mini span { display:inline-flex;align-items:center;gap:3px;white-space:nowrap; }.public-visitor-mini b { color:#4d596b;font-size:10px;font-variant-numeric:tabular-nums; }.public-visitor-mini i { width:6px;height:6px;border-radius:50%;background:#18a957;box-shadow:0 0 0 2px #dff7e9; }.public-visitor-mini .public-visitor-label { color:#667085;font-weight:850;letter-spacing:.03em;text-transform:uppercase; }

.bottom-nav { display:none; }
.setup-card { position:fixed; z-index:60; right:20px; bottom:20px; width:min(390px,calc(100% - 40px)); display:grid; grid-template-columns:46px 1fr auto; gap:10px; align-items:center; padding:15px; border:1px solid #d7dee8; border-radius:18px; background:rgba(255,255,255,.98); box-shadow:0 18px 50px rgba(15,23,42,.22); }
.setup-card[hidden] { display:none; }
.setup-icon { width:46px; height:46px; display:grid; place-items:center; border-radius:13px; background:var(--yellow); color:var(--ink); font-size:25px; font-weight:900; }
.setup-copy strong,.setup-copy small { display:block; }.setup-copy small { margin-top:3px; color:var(--muted); line-height:1.3; }
.setup-actions { grid-column:1/-1; display:flex; gap:8px; }.setup-actions .button { flex:1; min-height:40px; padding:8px 12px; font-size:12px; }
.setup-close { position:absolute; top:5px; right:7px; width:28px; height:28px; border:0; background:transparent; color:#64748b; font-size:23px; line-height:1; }

@media (max-width: 800px) {
  .topbar { height:60px;padding:0 14px;gap:8px; }.global-back { width:34px;height:34px;font-size:21px; }.brand { margin-right:auto; }.brand-mark { width:34px;height:34px;border-radius:10px;font-size:20px; }.brand strong { font-size:17px; }.brand small { display:none; }.desktop-nav { display:none; }.profile-menu > div { right:-4px; }.emergency-top { width:38px;min-height:38px;padding:0;justify-content:center;border-radius:50%; }.emergency-top b { display:none; }
  .app-main { min-height:calc(100vh - 60px); }.page { width:min(100% - 22px,680px);padding:16px 0 92px; }.page-heading { align-items:flex-start; }.page-heading h1 { font-size:34px; }
  .bottom-nav { position:fixed;z-index:40;left:0;right:0;bottom:0;height:70px;padding:5px max(7px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,255,255,.97);border-top:1px solid #dbe2ea;box-shadow:0 -7px 22px rgba(15,23,42,.08); }.bottom-nav a { display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:9px;color:#526078;font-size:10px;font-weight:750; }.bottom-nav a span { font-size:21px;line-height:1; }.bottom-nav a.active { background:var(--yellow);color:var(--ink); }
  .setup-card { left:11px; right:11px; bottom:82px; width:auto; padding:13px; }
  .app-notification-toast { top:70px;left:11px;right:11px;width:auto;grid-template-columns:38px minmax(0,1fr) auto 26px;padding:10px;gap:8px; }.app-notification-icon { width:38px;height:38px;font-size:19px; }.app-notification-toast > a { padding:7px;font-size:9px; }
  .auth-shell { display:block; }.auth-visual { min-height:44svh;padding:20px; }.auth-visual:after { background-size:auto 84%; }.auth-motivation { left:50%;bottom:34px;width:max-content;max-width:calc(100% - 24px);padding:7px 10px;gap:5px;transform:translateX(-50%); }.auth-motivation strong,.auth-motivation span { font-size:9px; }.auth-motivation span:before { margin-right:5px; }.auth-brand strong { font-size:24px; }.auth-copy h1 { font-size:46px; }.auth-copy p { font-size:14px;max-width:300px; }.auth-card-wrap { min-height:56svh;align-items:start;padding:20px 22px 28px;border-radius:26px 26px 0 0;margin-top:-24px;position:relative;z-index:2; }.auth-card { margin:0 auto; }.auth-card h2 { font-size:31px; }
  .registration-shell { padding:9px 0; }.registration-card { padding:15px 14px; }.registration-card h1 { font-size:28px; }.form-grid { grid-template-columns:1fr 1fr;gap:0 9px; }.span-2 { grid-column:1/-1; }
  .dashboard-head { padding:20px; }.live-clock { font-size:53px; }.live-date { font-size:14px; }.weather span { font-size:31px; }.weather strong { font-size:25px; }
  .ivu-launch { grid-template-columns:50px 1fr auto;padding:14px;gap:11px; }.ivu-launch-icon { width:50px;height:48px;font-size:15px; }.ivu-launch strong { font-size:18px; }.ivu-launch em { display:none; }.ivu-launch b { padding:8px;font-size:12px; }
  .departure-grid { grid-template-columns:1fr; }.departure-card.airport { grid-column:auto; }.departure-card { padding:15px; }.departure-head h2 { font-size:20px; }.emergency-card { padding:15px; }.emergency-numbers { grid-template-columns:1fr; }.emergency-numbers strong { font-size:20px; }.wiem-grid { grid-template-columns:1fr; }.zvv-plan-grid { grid-template-columns:1fr; }.zvv-plan-grid img { height:190px; }
  .holiday-calendar-icon { width:58px;height:58px;font-size:28px; }.year-tabs { gap:5px; }.year-tabs a { padding:9px 5px;font-size:12px; }.holiday-row { grid-template-columns:55px 1fr auto;padding:11px;gap:10px; }.holiday-row time { width:55px;height:53px; }
  .current-duty { align-items:flex-start;padding:15px; }.current-duty .status-pill { display:none; }.bus-badge { width:45px;height:45px;font-size:22px; }.current-duty h2 { font-size:21px; }.current-duty p { font-size:12px; }
  .next-card { padding:17px; }.next-card-top strong { font-size:19px; }.next-card-body b { font-size:17px; }.next-card-body em { display:inline-block;margin:5px 0 0; }.next-card-body p { font-size:13px; }
  .garage-grid { grid-template-columns:1fr; }.garage-card { padding:15px; }.quick-grid { grid-template-columns:repeat(2,1fr); }.quick-grid a { padding:14px; }
  .favorite-list a { grid-template-columns:24px 45px 105px 1fr 14px;padding:11px 9px;font-size:12px; }
  .garage-hero { padding:19px; }.garage-hero .button { display:none; }.garage-hero h1 { font-size:26px; }
  .filter-panel.compact { grid-template-columns:1fr 1fr; }.filter-panel.compact input { grid-column:1/-1; }.filter-panel.compact button { grid-column:1/-1; }.duty-number-grid { grid-template-columns:1fr;gap:9px; }.duty-number-grid-compact,.duty-list-cards.duty-number-grid-compact { grid-template-columns:repeat(4,minmax(0,1fr));gap:7px; }.duty-overview-main { padding:12px 14px; }.compact-duty-card { padding:13px 5px; }
  .duty-title-row { grid-template-columns:80px 1fr 45px; }.duty-title-row h1 { font-size:27px; }.duty-summary { grid-template-columns:1fr 1fr;padding:13px;padding-right:93px; }.duty-summary div { padding:7px; }.duty-summary strong { font-size:17px; }.duty-original-link { right:8px;width:75px; }
  .timeline:before { left:66px; }.timeline-step { grid-template-columns:50px 25px 1fr; }.timeline-step > time { font-size:12px; }.timeline-card { padding:10px 11px; }.timeline-label { display:block; }.timeline-label b { display:inline-block;margin-top:5px; }.timeline-step.is-current .timeline-card { padding-right:11px; }
  .card-grid,.info-link-grid { grid-template-columns:1fr; }.vehicle-card { flex-wrap:wrap; }.call-button { margin-left:62px; }
  .contact-list article { align-items:flex-start; }.contact-list article > a { font-size:0; }.contact-list article > a:before { content:"☎";font-size:22px; }
  .stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.stat-grid > :last-child { grid-column:1/-1; }.management-grid { grid-template-columns:1fr; }.approval-list article { align-items:flex-start;flex-wrap:wrap; }.approval-actions { width:100%;padding-left:0; }.approval-actions form,.approval-actions button { max-width:100%; }.management-member-list article { grid-template-columns:auto minmax(0,1fr);align-items:start; }.management-member-status { grid-column:2;justify-self:start; }.management-members-page .page-heading { display:grid; }.management-members-page .page-heading > .button { justify-self:start; }
  .page-heading > .button { white-space:nowrap;padding:9px 11px;font-size:12px; }
  .visitor-mini { margin-top:-2px;gap:5px 10px; }.visitor-mini small { width:100%;margin-left:0; }
}

@media (max-width: 430px) {
  .day-tabs { grid-template-columns:1fr 1fr; }.duty-number-grid { grid-template-columns:1fr; }.duty-number-grid-compact,.duty-list-cards.duty-number-grid-compact { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .favorite-list a { grid-template-columns:22px 38px 92px 1fr 10px;gap:4px; }.favorite-list em { font-size:11px; }
  .garage-icon.large { display:none; }
  .ivu-launch b { font-size:0; }.ivu-launch b:after { content:"›";font-size:22px; }.departure-row { grid-template-columns:43px minmax(0,1fr) auto;gap:8px;padding:7px; }.departure-row time { font-size:19px; }
}

@media (max-width: 360px) {
  .global-back + .brand > span:last-child { display:none; }
}

@media (max-height: 720px) {
  .auth-visual { padding-top:16px; padding-bottom:38px; }
  .auth-copy h1 { margin-bottom:8px; font-size:40px; }
  .auth-copy p { font-size:13px; }
  .auth-card-wrap { padding-top:14px; padding-bottom:18px; }
  .auth-card h2 { font-size:28px; }
  .auth-card label { margin-top:8px; }
  .auth-card input { min-height:40px; }
  .registration-shell { padding:6px 0; }
  .registration-card { padding:12px 14px; }
  .registration-card h1 { font-size:25px; }
  .registration-card label { margin-top:7px; }
  .registration-card input:not([type=checkbox]),.registration-card select { min-height:38px; padding:7px 9px; }
  .consent-box { margin:9px 0; padding:8px 10px; }
  .consent-box label { font-size:10px; line-height:1.2; }
  .registration-card .button { min-height:38px; padding:8px 14px; }
}

/* v0.4.1: compact operational vehicle directory */
.vehicle-garage-tabs { display:grid;grid-template-columns:repeat(2,minmax(0,210px));gap:9px;margin:15px 0 10px; }
.vehicle-garage-tab { display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;gap:1px 10px;padding:10px 12px;border:1px solid #ccd5e1;border-radius:13px;background:white;color:#4f5c70;box-shadow:0 4px 13px rgba(15,23,42,.035); }
.vehicle-garage-tab > span { grid-row:1/3;width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:#edf2f8;color:var(--ink);font-weight:950; }
.vehicle-garage-tab strong { color:var(--ink);font-size:14px; }.vehicle-garage-tab small { color:#748094;font-size:9px;font-weight:750; }
.vehicle-garage-tab.active { border-color:var(--ink);background:var(--ink);box-shadow:0 7px 18px rgba(15,23,42,.17); }.vehicle-garage-tab.active > span { background:var(--yellow); }.vehicle-garage-tab.active strong { color:white; }.vehicle-garage-tab.active small { color:#cbd5e1; }
.vehicle-selection-title { display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 1px 7px;color:#657287;font-size:10px; }.vehicle-selection-title span { font-weight:900;text-transform:uppercase;letter-spacing:.06em; }.vehicle-selection-title strong { color:#475569;font-size:10px; }
.vehicle-list { display:grid;gap:7px; }
.vehicle-row { display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:72px;padding:9px 12px;border:1px solid var(--line);border-radius:13px;background:white;box-shadow:0 4px 13px rgba(15,23,42,.035); }
.vehicle-row.needs-review { border-color:#e5b52a;background:#fffdf2; }
.vehicle-number { width:62px;min-height:52px;display:grid;place-content:center;border-radius:11px;background:var(--yellow);text-align:center; }
.vehicle-number small,.vehicle-number strong { display:block; }
.vehicle-number small { color:#6b5900;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em; }
.vehicle-number strong { margin-top:1px;font-size:21px;line-height:1;font-weight:950; }
.vehicle-summary { min-width:0; }
.vehicle-id-line { display:flex;align-items:center;flex-wrap:wrap;gap:5px 12px; }
.vehicle-id-line > strong { font-size:16px;letter-spacing:.015em; }
.vehicle-id-line > span { padding:3px 7px;border-radius:6px;background:#edf2f8;color:#576579;font-size:10px;font-weight:800; }
.vehicle-id-line b { color:var(--ink);font-size:12px; }
.vehicle-fuel-line { display:flex;align-items:center;flex-wrap:wrap;gap:4px 14px;margin-top:5px;color:#66758a;font-size:10px;font-weight:750; }
.vehicle-fuel-line b { margin-left:3px;color:#223047;font-size:12px;font-variant-numeric:tabular-nums; }
.vehicle-row .review-note { margin-top:4px;font-size:9px; }
.vehicle-status-line { display:flex;flex-wrap:wrap;gap:4px;margin-top:4px; }.vehicle-status-line span { padding:2px 6px;border-radius:999px;font-size:8px;font-weight:900; }.vehicle-status-line .dilax { background:#ffe3e2;color:#a31d25; }.vehicle-status-line .replacement { background:#fff2a8;color:#695600; }
.vehicle-row .call-button { margin-left:0;white-space:nowrap;padding:8px 10px;font-size:12px; }
.document-heading { margin-top:18px;margin-bottom:9px; }
.document-heading h2,.additional-info-heading h2 { margin:1px 0 0; }
.original-documents { margin-bottom:20px; }
.original-document { border-color:#dcc452;background:linear-gradient(135deg,#fffef5,#fff9cf); }
.original-document > span { width:52px;background:var(--ink);color:var(--yellow);font-size:11px;font-weight:950;letter-spacing:.04em; }
.additional-info-heading { margin:7px 0 9px; }

@media (max-width: 800px) {
  .vehicle-garage-tabs { grid-template-columns:1fr 1fr; }
  .vehicle-row { grid-template-columns:55px minmax(0,1fr) 40px;gap:9px;min-height:66px;padding:8px 9px; }
  .vehicle-number { width:55px;min-height:48px; }
  .vehicle-number strong { font-size:19px; }
  .vehicle-id-line { gap:3px 7px; }
  .vehicle-id-line > strong { font-size:14px; }
  .vehicle-fuel-line { gap:2px 9px;margin-top:4px;font-size:9px; }
  .vehicle-fuel-line b { font-size:11px; }
  .vehicle-row .call-button { width:40px;height:40px;display:grid;place-items:center;padding:0;border-radius:50%;font-size:0; }
  .vehicle-row .call-button:before { content:"☎";font-size:19px; }
  .original-documents { grid-template-columns:1fr; }
}

@media (max-width: 390px) {
  .vehicle-id-line { display:grid;justify-items:start; }
  .vehicle-fuel-line { display:grid;gap:1px; }
}

/* v0.4.1: compact dashboard controls */
.emergency-top svg { width:19px;height:19px;fill:none;stroke:#ffe600;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }
.departure-collapsible { overflow:hidden; }
.departure-collapsible > summary { cursor:pointer;list-style:none; }
.departure-collapsible > summary::-webkit-details-marker { display:none; }
.departure-collapsible .departure-head { align-items:center; }
.departure-summary-action { display:flex;align-items:center;gap:9px; }
.departure-summary-action .live-pill { display:inline-block;font-style:normal; }
.departure-summary-action i { display:inline-block;font-size:28px;font-style:normal;transition:transform .2s ease; }
.departure-collapsible[open] .departure-summary-action i { transform:rotate(90deg); }
.departure-content { padding-top:5px; }
.departure-collapsible:not([open]) { padding-top:15px;padding-bottom:15px; }
.departure-collapsible:not([open]) .departure-head h2 { font-size:20px; }
.garage-section-heading h2 { margin-top:2px;font-size:28px; }
.garage-grid { gap:12px; }
.garage-dashboard { min-width:0;display:grid;align-content:start; }
.garage-card { position:relative;display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:14px;min-height:92px;padding:17px 18px;overflow:hidden;border:1px solid var(--line);border-radius:20px;box-shadow:0 8px 25px rgba(15,23,42,.06); }
.garage-card-light { border-color:#ead374;background:linear-gradient(135deg,#fffef4,#fff6bc); }
.garage-card-dark { border-color:#20252e;background:linear-gradient(145deg,#15181e,#242a33);color:white; }
.garage-card .garage-icon { width:58px;height:58px;display:grid;place-items:center;border-radius:15px;background:var(--ink);color:var(--yellow); }
.garage-card-dark .garage-icon { background:var(--yellow);color:var(--ink); }
.garage-card .garage-icon svg { width:31px;height:31px;fill:currentColor; }
.garage-card > div { min-width:0;display:grid; }
.garage-card > div small { color:#8a7300;font-size:9px;font-weight:950;letter-spacing:.1em;text-transform:uppercase; }
.garage-card-dark > div small { color:#f5d84b; }
.garage-card > div strong { margin-top:1px;font-size:21px;line-height:1.1; }
.garage-card > div em { margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#687386;font-size:11px;font-style:normal; }
.garage-card-dark > div em { color:#bdc7d4; }
.garage-arrow { font-size:32px;line-height:1; }
.garage-duty-slots { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:7px; }
.garage-duty-slot { min-width:0;padding:9px 10px;border:1px solid #e3cb62;border-radius:12px;background:linear-gradient(135deg,#fffdf1,#fff6bd);box-shadow:0 4px 12px rgba(15,23,42,.05); }
.garage-dashboard-embrach .garage-duty-slot { border-color:#343c48;background:linear-gradient(145deg,#20252d,#2d3440);color:white; }
.garage-duty-slot > small { display:block;overflow:hidden;color:#816d00;font-size:8px;font-weight:900;letter-spacing:.025em;line-height:1.2;text-overflow:ellipsis;white-space:nowrap;text-transform:lowercase; }
.garage-dashboard-embrach .garage-duty-slot > small { color:#dcca67; }
.garage-duty-slot > span { min-width:0;display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:baseline;gap:6px;margin-top:3px; }
.garage-duty-slot strong { font-size:18px;line-height:1; }
.garage-duty-slot time { color:#677287;font-size:9px;font-weight:800;font-variant-numeric:tabular-nums; }
.garage-dashboard-embrach .garage-duty-slot time { color:#b9c3d0; }
.garage-duty-slot b { justify-self:end;padding:4px 6px;border-radius:8px;font-size:14px;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap; }
.garage-duty-slot b em { font-size:8px;font-style:normal; }
.garage-duty-slot.is-future b { background:#dcf8e9;color:#087441; }
.garage-duty-slot.is-started b { background:#ffe3e5;color:#b4232f; }
.garage-duty-slot.is-now b { background:#eef2f6;color:#344258; }
.garage-duty-slot.is-empty { opacity:.62; }
.garage-duty-slot.is-empty > span { grid-template-columns:auto 1fr; }
.garage-duty-slot.is-empty b { padding:0;background:transparent;color:#667085;font-size:8px;font-weight:750;text-align:right;white-space:normal; }
.garage-dashboard-embrach .garage-duty-slot.is-empty b { color:#aeb8c6; }
.emergency-access { scroll-margin-top:85px;margin-top:12px;overflow:hidden;border:1px solid #ddc04a;border-radius:17px;background:white;box-shadow:0 7px 20px rgba(15,23,42,.05); }
.emergency-access > summary { display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 15px;cursor:pointer;list-style:none;background:linear-gradient(135deg,#fffdf1,#fff7c5); }
.emergency-access > summary::-webkit-details-marker { display:none; }
.warning-triangle { width:48px;height:44px;display:grid;place-items:center;border-radius:12px;background:#b42318; }
.warning-triangle svg { width:27px;height:27px;fill:none;stroke:#ffe600;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }
.emergency-access summary > div { min-width:0;display:grid; }
.emergency-access summary small { color:#8a6100;font-size:9px;font-weight:950;letter-spacing:.1em;text-transform:uppercase; }
.emergency-access summary strong { margin-top:1px;font-size:16px; }
.emergency-access summary em { margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6b7280;font-size:10px;font-style:normal; }
.emergency-access summary > b { font-size:27px;transition:transform .2s; }
.emergency-access[open] summary > b { transform:rotate(90deg); }
.emergency-access .emergency-numbers { padding:12px; }
.day-tabs a { display:grid;place-items:center;min-height:42px;padding:9px 7px;border:1px solid transparent;border-radius:10px;background:#eef2f6;font-weight:850;text-align:center; }
.day-tabs a.active { border-color:#d5af00;background:var(--yellow);box-shadow:0 5px 12px rgba(176,139,0,.15); }

@media (max-width: 800px) {
  .departure-grid { gap:9px; }
  .departure-collapsible { padding:13px; }
  .departure-collapsible:not([open]) { padding-top:12px;padding-bottom:12px; }
  .departure-collapsible .departure-head h2,.departure-collapsible:not([open]) .departure-head h2 { font-size:17px; }
  .departure-collapsible .departure-head p { font-size:10px; }
  .departure-summary-action { gap:5px; }
  .departure-summary-action i { font-size:24px; }
  .garage-section-heading h2 { font-size:25px; }
  .garage-card { grid-template-columns:52px minmax(0,1fr) auto;min-height:82px;padding:14px; }
  .garage-card .garage-icon { width:52px;height:52px; }
  .garage-card .garage-icon svg { width:28px;height:28px; }
  .garage-card > div strong { font-size:19px; }
  .emergency-access .emergency-numbers { grid-template-columns:1fr; }
  .emergency-access .emergency-numbers strong { font-size:19px; }
}

@media (max-width: 430px) {
  .departure-summary-action .live-pill { padding:5px 7px;font-size:8px; }
  .garage-card > div em { max-width:220px; }
  .day-tabs { grid-template-columns:repeat(2,1fr); }
  .day-tabs a:first-child { grid-column:1/-1; }
}

/* v0.5.3: night services, in-app PDFs, stable route maps and mobile admin */
.profile-section-label { display:block;margin:11px 0 2px;padding-top:10px;border-top:1px solid var(--line);color:#8a7300;font-size:9px;font-weight:950;letter-spacing:.1em;text-transform:uppercase; }
.profile-admin-link { color:#755f00!important;font-weight:900; }
.profile-menu button[data-open-install] { cursor:pointer;font-weight:750; }
.auth-help-link { display:block;margin-top:7px;color:#705b00;text-align:right;font-size:12px;font-weight:850; }
.status-actions { display:flex;justify-content:center;gap:9px;flex-wrap:wrap;margin-top:18px; }
.status-actions .button { margin:0; }
.status-form { text-align:left; }
.status-form h1,.status-form > p,.status-form > .eyebrow { text-align:center; }
.status-form label { display:block;margin:16px 0 6px;font-size:12px;font-weight:850; }
.status-form input { width:100%;min-height:46px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:11px;outline:none; }
.status-form input:focus { border-color:#bf9e00;box-shadow:0 0 0 4px rgba(255,213,0,.18); }
.status-form .button.full { margin-top:12px; }
.auth-back { display:block;margin-top:17px;text-align:center; }
.form-success { margin:14px 0;padding:12px 14px;border-radius:11px;background:#e7f8ee;color:#087039;font-size:13px;line-height:1.45; }
.status-icon-error { background:#fff0f1;color:#b52230; }
.verified-label { color:#087039; }.unverified-label { color:#b52230; }
.approval-actions button:disabled { cursor:not-allowed;opacity:.42; }

body.modal-open { overflow:hidden; }
.pdf-viewer[hidden] { display:none; }.pdf-viewer { position:fixed;z-index:320;inset:0;display:grid;grid-template-rows:auto minmax(0,1fr);background:#1b2230; }.pdf-viewer-bar { display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;min-height:66px;padding:9px max(12px,env(safe-area-inset-right)) 9px max(12px,env(safe-area-inset-left));background:var(--yellow);color:var(--ink);box-shadow:0 4px 18px rgba(0,0,0,.28); }.pdf-viewer-bar > div { min-width:0;display:grid; }.pdf-viewer-bar small { font-size:9px;font-weight:950;letter-spacing:.08em;text-transform:uppercase; }.pdf-viewer-bar strong { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px; }.pdf-viewer-external { padding:8px 10px;border-radius:9px;background:rgba(255,255,255,.72);font-size:11px;font-weight:900;white-space:nowrap; }.pdf-viewer-bar button { width:44px;height:44px;padding:0;border:0;border-radius:12px;background:var(--ink);color:white;font-size:29px;line-height:1; }.pdf-viewer iframe { width:100%;height:100%;border:0;background:white; }
.install-modal[hidden] { display:none; }
.install-modal { position:fixed;z-index:200;inset:0;display:grid;place-items:center;padding:18px; }
.install-modal-backdrop { position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(8,15,28,.72);backdrop-filter:blur(5px); }
.install-modal-card { position:relative;width:min(470px,100%);padding:30px;border:1px solid rgba(255,255,255,.2);border-radius:25px;background:white;box-shadow:0 28px 80px rgba(0,0,0,.38);animation:install-pop .22s ease-out; }
@keyframes install-pop { from { opacity:0;transform:translateY(15px) scale(.97); } to { opacity:1;transform:translateY(0) scale(1); } }
.install-modal-close { position:absolute;top:10px;right:12px;width:36px;height:36px;border:0;border-radius:50%;background:#edf2f8;color:#526078;font-size:25px;line-height:1; }
.install-app-icon { width:72px;height:72px;display:grid;place-items:center;margin-bottom:17px;border-radius:19px;background:var(--yellow);box-shadow:0 9px 24px rgba(176,139,0,.24); }
.install-app-icon span { width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--ink);color:var(--yellow);font-size:24px;font-weight:900; }
.install-modal-card h2 { margin:5px 0 8px;font-size:30px;line-height:1.08;letter-spacing:-.035em; }
.install-modal-card > p { margin:0;color:#59677a;line-height:1.55; }
.install-steps { display:grid;gap:8px;margin:20px 0 15px;padding:14px;border-radius:15px;background:#f3f6fa;border:1px solid #e2e8f0; }
.install-steps div { display:grid;grid-template-columns:28px 1fr;align-items:center;gap:9px;color:#364152;font-size:13px; }
.install-steps b { width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--ink);color:var(--yellow); }
.install-steps.is-highlighted { border-color:#d5af00;background:#fff9d8; }
.install-modal-card .button { margin-top:8px; }
.install-platform-note { display:block;margin-top:12px;color:#6d7b8f;text-align:center;font-size:11px;line-height:1.4; }
.install-platform-note.is-highlighted { color:#745e00;font-weight:800; }

.route-access-grid { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px; }
.route-access-card { display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:13px;min-height:82px;padding:14px 16px;border:1px solid #e0c34c;border-radius:17px;background:linear-gradient(135deg,#fffef2,#fff5b4);box-shadow:0 7px 20px rgba(15,23,42,.05); }
.route-access-card > div { min-width:0;display:grid; }.route-access-card small { color:#806a00;font-size:9px;font-weight:950;letter-spacing:.09em;text-transform:uppercase; }.route-access-card strong { font-size:19px; }.route-access-card em { margin-top:2px;color:#665d39;font-size:11px;font-style:normal;font-weight:750; }
.route-access-icon { width:54px;height:54px;display:grid;place-items:center;border-radius:14px;background:var(--ink);color:var(--yellow);font-size:23px;font-weight:950; }
.route-access-card > b { font-size:29px; }.route-access-embrach { border-color:#252b35;background:linear-gradient(145deg,#15181e,#242a33);color:white; }.route-access-embrach small { color:#f5d84b; }.route-access-embrach em { color:#bcc6d3; }.route-access-embrach .route-access-icon { background:var(--yellow);color:var(--ink); }

.route-page-heading { align-items:flex-start; }.route-page-heading p { max-width:760px;line-height:1.5; }
.route-group-tabs { position:sticky;z-index:20;top:82px;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px;padding:7px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 8px 24px rgba(15,23,42,.08);backdrop-filter:blur(9px); }
.route-group-tabs a { display:flex;align-items:center;justify-content:center;gap:9px;min-height:46px;border-radius:11px;color:#526078;font-weight:900; }.route-group-tabs a span { width:29px;height:29px;display:grid;place-items:center;border-radius:8px;background:#e7ecf2;color:#16243d;font-size:13px; }.route-group-tabs a.active { background:var(--yellow);color:var(--ink); }.route-group-tabs a.active span { background:var(--ink);color:var(--yellow); }
.route-data-legend { display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin:-8px 1px 17px;color:#536075;font-size:10px;font-weight:850; }.route-data-legend span { display:flex;align-items:center;gap:5px; }.route-data-legend b { width:9px;height:9px;border-radius:50%;background:#9aa6b5; }.route-data-legend b.live { background:#0a9a59;box-shadow:0 0 0 3px #dff7eb; }.route-data-legend b.schedule { background:#d4ad00;box-shadow:0 0 0 3px #fff3b5; }.route-data-legend small { margin-left:auto;color:#7b8798;font-size:9px; }
.route-group { scroll-margin-top:150px;margin-top:25px; }.route-group-heading { display:flex;align-items:end;justify-content:space-between;gap:15px;margin-bottom:10px; }.route-group-heading h2 { margin:2px 0 0;font-size:27px; }.route-group-heading > span { padding:7px 10px;border-radius:999px;background:#e7ecf2;color:#526078;font-size:11px;font-weight:850; }
.route-lines { display:grid;gap:10px; }.route-line-card { overflow:hidden;border:1px solid var(--line);border-radius:18px;background:white;box-shadow:0 7px 21px rgba(15,23,42,.05); }.route-line-card > summary { display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:13px;padding:15px;cursor:pointer;list-style:none; }.route-line-card > summary::-webkit-details-marker { display:none; }.route-number { width:58px;height:50px;display:grid;place-items:center;border-radius:13px;background:var(--yellow);color:var(--ink);font-size:20px;font-weight:950; }.route-line-card summary > div { min-width:0;display:grid; }.route-line-card summary strong { font-size:15px;line-height:1.3; }.route-line-card summary small { margin-top:3px;color:#6a778a;font-size:11px; }.route-line-card summary > b { font-size:28px;transition:transform .2s; }.route-line-card[open] summary > b { transform:rotate(90deg); }
.route-line-card.dark > summary { background:#171b22;color:white; }.route-line-card.dark summary small { color:#b9c3d1; }.route-line-card.dark .route-number { background:var(--yellow);color:var(--ink); }
.route-live-panel { padding:16px;background:#fbfcfe;border-top:1px solid var(--line); }
.route-live-heading,.route-times-heading { display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px; }
.route-live-heading > div,.route-times-heading > div { min-width:0;display:grid;gap:2px; }.route-live-heading small,.route-times-heading small { color:#748196;font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase; }.route-live-heading strong,.route-times-heading strong { overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap; }
.route-live-badge { flex:0 0 auto;padding:7px 10px;border-radius:999px;background:#eaf0f6;color:#526078;font-size:10px;font-weight:950;letter-spacing:.02em; }.route-live-badge.live { background:#dcf8e9;color:#087441;box-shadow:0 0 0 1px #a7e8c5 inset; }.route-live-badge.schedule { background:#fff4bd;color:#705b00; }.route-live-badge.upcoming { background:#e9eff7;color:#38465a; }.route-live-badge.unavailable { background:#fff0f1;color:#a52733; }.route-live-badge.loading:before { content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:#8c99aa;animation:route-pulse 1.1s infinite; }
@keyframes route-pulse { 50% { opacity:.25;transform:scale(.72); } }
.route-direction-tabs { display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:10px; }.route-direction-tabs button { min-height:48px;padding:8px 10px;border:1px solid #dbe2eb;border-radius:12px;background:white;color:#445167;text-align:left;font-size:10px;font-weight:800;line-height:1.25; }.route-direction-tabs button span { display:block;margin-bottom:2px;color:#8a96a7;font-size:8px;font-weight:950;letter-spacing:.08em;text-transform:uppercase; }.route-direction-tabs button.active { border-color:#d7b300;background:#fff7c9;color:#332c08;box-shadow:0 0 0 2px rgba(255,213,0,.17); }.route-direction-tabs button.active span { color:#7a6500; }
.route-trip-choices { display:flex;gap:7px;overflow-x:auto;margin-bottom:12px;padding:1px 0 4px;scrollbar-width:thin; }.route-trip-choices > span { padding:9px 2px;color:#6f7d90;font-size:11px; }.route-trip-choices button { flex:0 0 auto;min-width:82px;padding:8px 11px;border:1px solid #dbe2eb;border-radius:11px;background:white;color:#47556a;text-align:left; }.route-trip-choices button strong,.route-trip-choices button small { display:block; }.route-trip-choices button strong { font-size:15px; }.route-trip-choices button small { margin-top:1px;color:#8490a1;font-size:9px;font-weight:800; }.route-trip-choices button.active { border-color:var(--ink);background:var(--ink);color:white;box-shadow:0 5px 13px rgba(15,23,42,.17); }.route-trip-choices button.active small { color:var(--yellow); }
.route-map-card { overflow:hidden;margin-bottom:15px;border:1px solid #dce3eb;border-radius:16px;background:white;box-shadow:0 8px 24px rgba(15,23,42,.08); }.route-map { position:relative;height:330px;overflow:hidden;background:#e8edf0;cursor:grab;touch-action:none;overscroll-behavior:contain;outline:none; }.route-map:focus-visible { box-shadow:inset 0 0 0 3px #d1ad00; }.route-map.is-interacting { cursor:grabbing; }.route-map-tiles,.route-map-overlay { position:absolute;inset:0;width:100%;height:100%;pointer-events:none; }.route-map-tiles img { position:absolute;width:256px;height:256px;max-width:none;user-select:none; }.route-map-overlay { z-index:2;filter:drop-shadow(0 2px 2px rgba(15,23,42,.22)); }.route-map-line { fill:none;stroke:#ffd500;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke;vector-effect:non-scaling-stroke; }.route-line-card.dark .route-map-line { stroke:#111827; }.route-map-stop { fill:white;stroke:#172033;stroke-width:2.5;vector-effect:non-scaling-stroke; }.route-map-stop.terminal { fill:#ffd500;stroke-width:3; }.route-map-bus { transition:transform 1s linear; }.route-map.is-interacting .route-map-bus { transition:none; }.route-map-bus-halo { fill:rgba(255,255,255,.9);stroke:#172033;stroke-width:2; }.route-map-bus.live .route-map-bus-halo { stroke:#09824b; }.route-map-bus-body { fill:#ffd500;stroke:#111827;stroke-width:1.7; }.route-map-bus-window { fill:#172033; }.route-map-bus-wheel { fill:#111827;stroke:white;stroke-width:.8; }.route-map-duty-badge rect { fill:#172033;stroke:white;stroke-width:2; }.route-map-bus.live .route-map-duty-badge rect { fill:#087441; }.route-map-duty-number { fill:white;font-size:11px;font-weight:950;letter-spacing:.02em;dominant-baseline:middle;paint-order:stroke;stroke:rgba(0,0,0,.12);stroke-width:.6px; }.route-map-placeholder { position:absolute;z-index:3;inset:0;display:grid;place-content:center;gap:7px;background:linear-gradient(135deg,#e9eef3,#f8fafc);color:#5c687a;text-align:center;pointer-events:none; }.route-map-placeholder[hidden] { display:none; }.route-map-placeholder span { font-size:32px; }.route-map-placeholder strong { font-size:12px; }.route-map-controls { position:absolute;z-index:5;top:10px;right:10px;display:grid;gap:5px;padding:5px;border:1px solid rgba(23,32,51,.16);border-radius:13px;background:rgba(255,255,255,.94);box-shadow:0 5px 17px rgba(15,23,42,.18);backdrop-filter:blur(5px); }.route-map-controls button { width:40px;height:40px;padding:0;border:0;border-radius:9px;background:#172033;color:white;font-size:23px;font-weight:900;line-height:1;box-shadow:none; }.route-map-controls button.reset { background:var(--yellow);color:#172033;font-size:21px; }.route-map-controls button.expand { background:#edf2f8;color:#172033;font-size:20px; }.route-map-controls button:focus-visible { outline:3px solid white;box-shadow:0 0 0 5px #172033; }.route-map-controls button:disabled { opacity:.32;cursor:not-allowed; }.route-map-gesture-hint { position:absolute;z-index:4;left:10px;bottom:10px;max-width:calc(100% - 82px);padding:6px 9px;border-radius:9px;background:rgba(23,32,51,.86);color:white;font-size:9px;font-weight:800;line-height:1.25;pointer-events:none;backdrop-filter:blur(4px); }.route-map-meta { display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:35px;padding:7px 11px;border-top:1px solid #e2e7ed;color:#657287;font-size:9px;font-weight:750; }.route-map-meta span { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }.route-map-meta a { flex:0 0 auto;color:#556277;font-weight:900; }.route-map-card.is-fullscreen { position:fixed;z-index:310;inset:0;display:grid;grid-template-rows:minmax(0,1fr) auto;margin:0;border:0;border-radius:0;box-shadow:none; }.route-map-card.is-fullscreen .route-map { width:100%;height:100%;min-height:0; }.route-map-card.is-fullscreen .route-map-meta { min-height:44px;padding-bottom:max(8px,env(safe-area-inset-bottom));background:white; }.route-map-card.is-fullscreen .route-map-controls { top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right)); }.route-map-card.is-fullscreen .route-map-controls button.expand { background:#e32636;color:white;font-size:28px; }body.route-map-fullscreen-open { overflow:hidden; }
.route-times-heading { margin:3px 1px 7px; }.route-times-heading time { flex:0 0 auto;color:#788599;font-size:9px;font-weight:800; }
.route-stop-list { position:relative;padding:5px 17px 18px 91px;background:#fbfcfe; }.route-stop-list:before { content:"";position:absolute;left:43px;top:20px;bottom:31px;width:3px;border-radius:3px;background:#d8e0ea; }.route-stop { position:relative;min-height:49px;display:flex;align-items:center;padding:7px 10px;border-bottom:1px solid #e9edf2; }.route-stop:last-child { border-bottom:0; }.route-stop > span { position:absolute;left:-61px;width:15px;height:15px;border:4px solid white;border-radius:50%;background:#8390a2;box-shadow:0 0 0 2px #8390a2; }.route-stop.terminal > span { width:19px;height:19px;left:-63px;background:var(--yellow);box-shadow:0 0 0 3px #111827; }.route-stop > div { display:grid; }.route-stop small { color:#8390a2;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.06em; }.route-stop strong { margin-top:1px;font-size:14px; }
.route-stop > div:not(.route-stop-time) { min-width:0;flex:1; }.route-stop-time { flex:0 0 auto;justify-items:end;margin-left:10px; }.route-stop-time time { min-width:47px;color:#172033;font-size:17px;font-weight:950;text-align:right;font-variant-numeric:tabular-nums; }.route-stop-time time.live { color:#087441; }.route-stop-time small { color:#b52230;font-size:9px; }.route-stop.current { margin:3px 0;border:1px solid #e1bd12;border-radius:11px;background:#fff8c9;box-shadow:0 5px 14px rgba(185,145,0,.11); }.route-stop.current > span { background:#ffd500;box-shadow:0 0 0 3px #111827;animation:route-pulse 1.2s infinite; }.route-stop.passed { opacity:.55; }.route-position-notice { margin:10px 2px 0;color:#6d798b;font-size:10px;line-height:1.45; }
.route-source-note { margin-top:20px;padding:18px;border:1px solid #e2c451;border-radius:16px;background:#fff9d8; }.route-source-note strong { font-size:16px; }.route-source-note p { margin:5px 0 9px;color:#5f5a45;font-size:13px;line-height:1.5; }.route-source-note a { color:#655300;font-size:13px;font-weight:900; }

@media (max-width:800px) {
  .pdf-viewer-bar { grid-template-columns:minmax(0,1fr) auto;gap:7px;min-height:62px; }.pdf-viewer-external { grid-column:1/-1;grid-row:2;padding:6px 8px;text-align:center; }.pdf-viewer-bar button { grid-column:2;grid-row:1;width:42px;height:42px; }
  .install-modal { align-items:end;padding:0; }.install-modal-card { width:100%;padding:25px 20px calc(22px + env(safe-area-inset-bottom));border-radius:25px 25px 0 0; }.install-app-icon { width:62px;height:62px;margin-bottom:13px; }.install-app-icon span { width:38px;height:38px; }.install-modal-card h2 { padding-right:20px;font-size:26px; }
  .route-access-grid { grid-template-columns:1fr;gap:9px; }.route-access-card { min-height:74px;padding:12px; }.route-access-icon { width:49px;height:49px; }
  .route-group-tabs { top:68px; }.route-group-heading h2 { font-size:23px; }.route-line-card > summary { grid-template-columns:52px minmax(0,1fr) auto;padding:12px;gap:10px; }.route-number { width:52px;height:47px;font-size:18px; }.route-line-card summary strong { font-size:13px; }.route-line-card summary small { font-size:10px; }.route-live-panel { padding:12px; }.route-direction-tabs { grid-template-columns:1fr; }.route-map { height:270px; }.route-map-controls button { width:44px;height:44px; }.route-map-gesture-hint { font-size:8px; }.route-stop-list { padding-left:76px;padding-right:4px; }.route-stop-list:before { left:36px; }.route-stop > span { left:-51px; }.route-stop.terminal > span { left:-53px; }.route-stop-time time { font-size:15px; }.route-map-meta { align-items:flex-start; }.route-map-meta span { white-space:normal; }
}

@media (max-width:430px) {
  .status-card { padding:31px 20px; }.status-actions { display:grid; }.route-group-tabs { gap:5px;padding:5px; }.route-group-tabs a { min-height:42px;font-size:13px; }.route-line-card summary strong { display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical; }.route-live-heading { align-items:flex-start; }.route-live-heading strong { white-space:normal; }.route-live-badge { max-width:118px;text-align:center; }.route-map { height:245px; }
}

/* v0.5.7: compact, day-coloured duties and one readable current marker */
.compact-duty-card.day-weekday { background:linear-gradient(135deg,#43b65b,#209e40); }
.compact-duty-card.day-school_holiday { background:linear-gradient(135deg,#278f90,#146d70); }
.compact-duty-card.day-saturday { background:linear-gradient(135deg,#ef9d23,#c76913); }
.compact-duty-card.day-sunday { background:linear-gradient(135deg,#db5055,#b4232f); }
.compact-duty-card.day-night { background:linear-gradient(135deg,#6958a7,#453778); }
.garage-duty-slot[hidden] { display:none; }
.day-tabs a.day-weekday.active { border-color:#188843;background:#dcf5e4;color:#135b33; }
.day-tabs a.day-saturday.active { border-color:#d17814;background:#fff0d7;color:#753c0a; }
.day-tabs a.day-sunday.active { border-color:#b4232f;background:#ffe5e5;color:#87212a; }
.timeline-label { justify-content:flex-start;flex-wrap:wrap;gap:5px 9px; }
.timeline-label b { margin-left:auto; }
.line-priority-alert { display:inline-flex;flex:0 0 auto;align-items:center;gap:5px;width:max-content;max-width:100%;margin:0;padding:3px 8px;border-width:1px;border-radius:7px;font-size:12px;line-height:1.2;white-space:nowrap; }
.line-priority-alert > span { width:16px;height:16px;font-size:11px; }
.timeline-now-indicator { margin:5px 0 4px; }
.pause-end { display:inline-flex;align-items:baseline;gap:5px;margin-top:8px;padding:7px 11px;border:1px solid #198b52;border-radius:8px;background:#e2f8e9;color:#075d38;font-size:13px;font-weight:850; }
.pause-end strong { font-size:17px;font-variant-numeric:tabular-nums; }
@media (max-width:800px) {
  .duty-number-grid-compact,.duty-list-cards.duty-number-grid-compact { grid-template-columns:repeat(5,minmax(0,1fr));gap:6px; }
  .duty-number-grid-compact .compact-duty-card,.duty-list-cards .compact-duty-card { min-height:0;padding:6px 2px; }
  .compact-duty-card strong { font-size:19px;line-height:1.05; }
  .compact-duty-card small { font-size:8px;line-height:1.15;white-space:nowrap; }
  .duty-list-cards .compact-duty-card small:last-child { max-width:100%;overflow:hidden;text-overflow:ellipsis; }
  .timeline-label { display:flex; }
  .timeline-label b { margin-top:0; }
  .line-priority-alert { font-size:11px; }
  .pdf-viewer-bar { grid-template-columns:minmax(0,1fr) auto;padding-top:max(9px,env(safe-area-inset-top)); }
  .pdf-viewer-external { display:none; }
}
@media (max-width:370px) {
  .duty-number-grid-compact,.duty-list-cards.duty-number-grid-compact { grid-template-columns:repeat(4,minmax(0,1fr)); }
}

/* v0.5.8: directly visible original pages on touch devices */
.pdf-viewer-body { min-height:0;overflow:auto;overscroll-behavior:contain;background:#303744; }
.pdf-viewer-body iframe[hidden],.pdf-viewer-pages[hidden] { display:none; }
.pdf-viewer-body iframe { display:block;width:100%;height:100%;border:0;background:white; }
.pdf-viewer-pages { padding:10px 0; }
.pdf-viewer-pages img { display:block;width:min(100%,1132px);height:auto;margin:0 auto 12px;background:white;cursor:zoom-in; }
.pdf-viewer-pages img.is-zoomed { width:1132px;max-width:none;margin-left:0;cursor:zoom-out; }

/* v0.7.0: annual membership and two-device account license */
.page-lead { margin-top:-5px;color:var(--muted);font-size:15px;line-height:1.55; }
.billing-hero { display:grid;grid-template-columns:160px minmax(0,1fr);align-items:center;gap:22px;margin:16px 0;overflow:hidden;background:linear-gradient(135deg,#111827,#253148);color:white; }
.billing-price { width:150px;height:150px;display:grid;place-content:center;border-radius:50%;background:var(--yellow);color:var(--ink);text-align:center;box-shadow:0 0 0 9px rgba(255,213,0,.13); }
.billing-price strong,.billing-price span { display:block; }.billing-price strong { font-size:30px;line-height:1; }.billing-price span { margin-top:6px;font-size:12px;font-weight:850; }
.billing-hero h2 { margin:0;color:white;font-size:25px; }.billing-hero p { margin:5px 0;color:#d3dbe7; }.billing-benefits { display:grid;grid-template-columns:1fr 1fr;gap:7px 18px;margin:16px 0 0;padding:0;list-style:none; }.billing-benefits li { position:relative;padding-left:20px;color:#eef3f8;font-size:12px;font-weight:750; }.billing-benefits li:before { content:"✓";position:absolute;left:0;color:var(--yellow);font-weight:950; }
.billing-status { margin-bottom:13px; }.billing-status-pill { flex:0 0 auto;padding:7px 10px;border-radius:999px;background:#edf1f5;color:#536074;font-size:10px;font-weight:900; }.billing-status-pill.status-active { background:#e1f7e9;color:#08703c; }.billing-status-pill.status-trialing { background:#fff4bf;color:#695500; }.billing-status-pill.status-past_due,.billing-status-pill.status-unpaid,.billing-status-pill.status-incomplete { background:#ffe4e4;color:#9f1d29; }
.billing-checkout-form { display:grid;gap:12px;margin-top:18px;padding-top:17px;border-top:1px solid var(--line); }.billing-consent { display:grid;grid-template-columns:23px minmax(0,1fr);align-items:start;gap:10px;margin:0;color:#475569;font-size:12px;line-height:1.45; }.billing-consent input { width:21px;height:21px;margin:0;accent-color:var(--ink); }.billing-consent a { color:#075b9a;text-decoration:underline; }
.device-summary-link { display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;margin:13px 0;padding:14px 16px; }.device-summary-link > span { width:48px;height:48px;display:grid;place-items:center;border-radius:13px;background:var(--yellow);font-size:23px; }.device-summary-link strong,.device-summary-link small { display:block; }.device-summary-link small { margin-top:3px;color:var(--muted);font-size:11px; }.device-summary-link > b { font-size:25px; }
.device-list { display:grid;gap:9px;margin:16px 0; }.device-list article { display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px; }.device-list article.is-current { border-color:#d6b300;background:#fffcef; }.device-icon { width:48px;height:48px;display:grid;place-items:center;border-radius:13px;background:#eaf0f6;color:var(--ink);font-size:22px; }.device-list strong,.device-list small,.device-list b { display:block; }.device-list small { margin-top:3px;color:var(--muted);font-size:10px; }.device-list b { width:max-content;margin-top:5px;padding:3px 7px;border-radius:999px;background:#e4f7ea;color:#08703c;font-size:9px; }.device-list .button { min-width:92px; }

@media (max-width:800px) {
  .billing-hero { grid-template-columns:110px minmax(0,1fr);gap:15px;padding:17px; }.billing-price { width:105px;height:105px; }.billing-price strong { font-size:23px; }.billing-hero h2 { font-size:21px; }.billing-benefits { grid-template-columns:1fr;gap:5px; }.device-list article { grid-template-columns:43px minmax(0,1fr); }.device-icon { width:43px;height:43px; }.device-list form { grid-column:1/-1; }.device-list .button { width:100%; }
}

/* v0.7.1: manual TWINT/cash membership and automatic reminder */
.management-payment-actions { grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:10px;border-top:1px solid var(--line); }
.management-payment-actions > span { margin-right:auto;color:var(--muted);font-size:11px;font-weight:800; }
.management-payment-actions form { margin:0; }
.management-payment-actions .button { min-height:38px;padding:8px 12px;font-size:11px; }
.membership-reminder-admin { display:flex;align-items:center;justify-content:space-between;gap:18px;margin:15px 0; }
.membership-reminder-admin h2 { margin:3px 0; }.membership-reminder-admin p { max-width:710px;margin:0;color:var(--muted);line-height:1.5; }
.manual-payment-card { display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:14px;margin-top:12px;padding:15px;border:1px solid #dbe2eb;border-radius:15px;background:#f8fafc; }
.manual-payment-card.cash { background:#fffdf0;border-color:#ead77b; }.manual-payment-icon { width:64px;height:54px;display:grid;place-items:center;border-radius:12px;background:#0b83c6;color:white;font-size:12px;font-weight:950;letter-spacing:.04em; }.manual-payment-card.cash .manual-payment-icon { background:var(--yellow);color:var(--ink); }
.manual-payment-card h3,.manual-payment-card p { margin:0; }.manual-payment-card h3 { font-size:16px; }.manual-payment-card p { margin-top:4px;color:#59677a;font-size:12px;line-height:1.45; }.manual-payment-card .button { width:max-content;margin-top:9px; }
.membership-modal[hidden] { display:none; }.membership-modal { position:fixed;z-index:360;inset:0;display:grid;place-items:center;padding:18px; }.membership-modal-backdrop { position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(8,15,28,.76);backdrop-filter:blur(6px); }
.membership-modal-card { position:relative;width:min(480px,100%);padding:29px;border-radius:25px;background:white;box-shadow:0 28px 80px rgba(0,0,0,.4);animation:install-pop .22s ease-out; }.membership-modal-close { position:absolute;top:10px;right:12px;width:37px;height:37px;border:0;border-radius:50%;background:#edf2f8;color:#526078;font-size:25px;line-height:1; }
.membership-modal-icon { width:65px;height:65px;display:grid;place-items:center;margin-bottom:15px;border-radius:18px;background:var(--yellow);color:#d51f34;font-size:31px;box-shadow:0 9px 24px rgba(176,139,0,.22); }.membership-modal-card h2 { margin:5px 0 8px;padding-right:22px;font-size:28px;line-height:1.08; }.membership-modal-card > p { color:#59677a;line-height:1.5; }
.membership-payment-choice { display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:11px;margin:8px 0;padding:11px 12px;border-radius:12px;background:#f2f5f8;color:#475569;font-size:12px;line-height:1.4; }.membership-payment-choice b { color:var(--ink);font-size:13px; }.membership-deadline { margin:13px 0!important;padding:10px 12px;border-radius:11px;background:#fff6c9;color:#5f5008!important;text-align:center; }.membership-modal-card .button { margin-top:8px; }.membership-later { display:block;width:100%;margin-top:10px;border:0;background:transparent;color:#68768a;text-align:center;font-size:12px;font-weight:800; }

@media (max-width:800px) {
  .management-payment-actions { justify-content:stretch;flex-wrap:wrap; }.management-payment-actions > span { width:100%; }.management-payment-actions form { flex:1; }.management-payment-actions .button { width:100%; }
  .membership-reminder-admin { display:grid; }.membership-reminder-admin .button { width:100%; }
  .membership-modal { align-items:end;padding:0; }.membership-modal-card { width:100%;padding:25px 20px calc(22px + env(safe-area-inset-bottom));border-radius:25px 25px 0 0; }.membership-modal-card h2 { font-size:25px; }
}

/* DIENSTINFO LOGIN V072 START */
/* Originalfoto ohne Zuschnitt; ausschliesslich auf der Anmeldeseite. */
.dienstinfo-login-v072 { background: #fff; }
.dienstinfo-login-v072 .auth-shell {
  grid-template-columns: minmax(0, min(100svh, calc(100vw - 380px))) minmax(340px, 1fr);
  align-items: start;
}
.dienstinfo-login-v072 .auth-visual {
  min-height: 0;
  padding: 0;
  display: block;
  background: none;
  line-height: 0;
}
.dienstinfo-login-v072 .auth-visual::before,
.dienstinfo-login-v072 .auth-visual::after { content: none; }
.dienstinfo-login-v072 .auth-photo {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
}
.dienstinfo-login-v072 .auth-motivation {
  left: 50%;
  bottom: 18px;
  width: max-content;
  max-width: calc(100% - 24px);
  padding: 9px 12px;
  gap: 6px;
  line-height: 1.25;
  white-space: nowrap;
  transform: translateX(-50%);
}
.dienstinfo-login-v072 .auth-motivation strong,
.dienstinfo-login-v072 .auth-motivation span { font-size: clamp(9px, 1.1vw, 14px); letter-spacing: 0; }
.dienstinfo-login-v072 .auth-card-wrap {
  min-height: 100svh;
  align-self: stretch;
  margin: 0;
}
@media (max-width: 800px) {
  .dienstinfo-login-v072 .auth-shell { display: block; }
  .dienstinfo-login-v072 .auth-visual {
    /* Die zusaetzliche Bildstrasse liegt hinter den beiden runden Ecken.
       Das vollstaendige quadratische Foto wird nicht vom Formular verdeckt. */
    min-height: 0;
    padding: 0 0 28px;
    background: url("../img/brand/dienstinfo-gelenkbus-herz.png") center bottom / 100% auto no-repeat;
  }
  .dienstinfo-login-v072 .auth-motivation { bottom: 41px; padding: 8px 8px; gap: 4px; }
  .dienstinfo-login-v072 .auth-motivation strong,
  .dienstinfo-login-v072 .auth-motivation span { font-size: clamp(9px, 2.7vw, 12px); }
  .dienstinfo-login-v072 .auth-motivation span::before { margin-right: 4px; }
  .dienstinfo-login-v072 .auth-card-wrap {
    min-height: 0;
    margin-top: -28px;
    border-radius: 28px 28px 0 0;
    position: relative;
    z-index: 2;
    background: #fff;
    padding: 22px 24px 28px;
    align-items: start;
  }
}
/* DIENSTINFO LOGIN V072 END */

/* DIENSTINFO IPHONE V073 START */
/* Keep header controls below the iOS status bar in the installed app. */
@supports (padding-top: env(safe-area-inset-top)) {
  .topbar {
    height: calc(72px + env(safe-area-inset-top, 0px));
    padding-top: env(safe-area-inset-top, 0px);
    padding-left: max(20px, calc((100vw - 1180px) / 2), env(safe-area-inset-left, 0px));
    padding-right: max(20px, calc((100vw - 1180px) / 2), env(safe-area-inset-right, 0px));
  }
  .app-main {
    min-height: calc(100vh - 72px - env(safe-area-inset-top, 0px));
  }
  .messages {
    top: calc(80px + env(safe-area-inset-top, 0px));
  }
  .app-notification-toast {
    top: calc(82px + env(safe-area-inset-top, 0px));
  }
  .route-group-tabs {
    top: calc(82px + env(safe-area-inset-top, 0px));
  }
  @media (max-width: 800px) {
    .topbar {
      height: calc(60px + env(safe-area-inset-top, 0px));
      padding-left: max(14px, env(safe-area-inset-left, 0px));
      padding-right: max(14px, env(safe-area-inset-right, 0px));
    }
    .app-main {
      min-height: calc(100vh - 60px - env(safe-area-inset-top, 0px));
    }
    .app-notification-toast {
      top: calc(70px + env(safe-area-inset-top, 0px));
    }
    .route-group-tabs {
      top: calc(68px + env(safe-area-inset-top, 0px));
    }
  }
}
/* DIENSTINFO IPHONE V073 END */

/* DIENSTINFO STARTS MEMBERS V074 START */
.garage-duty-upcoming .garage-duty-bar {
  min-width: 0; padding: 8px; border: 1px solid #e3cb62; border-radius: 12px;
  background: linear-gradient(135deg, #fffdf1, #fff6bd);
  box-shadow: 0 4px 12px rgba(15,23,42,.05);
}
.garage-dashboard-embrach .garage-duty-upcoming .garage-duty-bar {
  border-color: #343c48; background: linear-gradient(145deg, #20252d, #2d3440); color: #fff;
}
.garage-duty-bar > small {
  display: block; overflow: hidden; color: #816d00; font-size: 8px; font-weight: 900;
  line-height: 1.25; letter-spacing: .025em; white-space: nowrap; text-overflow: ellipsis;
}
.garage-dashboard-embrach .garage-duty-bar > small { color: #dcca67; }
.garage-duty-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 5px; }
.garage-duty-link {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 5px; min-width: 0; min-height: 56px; padding: 6px 2px; border-radius: 8px;
  border: 1px solid rgba(126,105,0,.15); background: rgba(255,255,255,.54);
}
.garage-duty-link strong { font-size: 20px; line-height: 1.05; }
.garage-duty-link time { font-size: 11px; font-weight: 750; color: #677287; font-variant-numeric: tabular-nums; }
.garage-duty-link > small { font-size: 8px; line-height: 1.3; text-align: center; color: #677287; }
.garage-duty-link.is-empty { opacity: .55; }
.garage-dashboard-embrach .garage-duty-link { border-color: rgba(255,255,255,.15); background: rgba(255,255,255,.05); }
.garage-dashboard-embrach .garage-duty-link time,
.garage-dashboard-embrach .garage-duty-link > small { color: #b9c3d0; }
a.garage-duty-link:hover { border-color: #987e00; }
a.garage-duty-link:focus-visible { outline: 3px solid #dbac00; outline-offset: 2px; }
.member-garage-section { min-width: 0; margin-top: 18px; }
.member-garage-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; margin-bottom: 9px; border-radius: 13px; background: #fff4ae; }
.member-garage-heading h2, .member-garage-heading h3 { margin: 0; font-size: 18px; }
.member-garage-heading > span { min-width: 27px; padding: 3px 7px; border-radius: 8px; background: rgba(255,255,255,.6); font-size: 12px; font-weight: 850; text-align: center; }
.member-garage-embrach .member-garage-heading { color: #fff; background: #20252d; }
.member-garage-embrach .member-garage-heading > span { color: #ffd500; background: rgba(255,255,255,.1); }
.member-garage-unassigned .member-garage-heading { background: #e9eef4; }
/* DIENSTINFO STARTS MEMBERS V074 END */

/* DIENSTINFO CONTACT TABS V074A START */
#mitglieder {
  scroll-margin-top: 88px;
  scroll-margin-top: calc(88px + env(safe-area-inset-top, 0px));
}
/* DIENSTINFO CONTACT TABS V074A END */

/* DIENSTINFO GARAGE AREAS V080 START */
.garage-grid.has-single-garage { grid-template-columns: minmax(0, 1fr); }
.garage-admin-actions { display: flex; gap: 8px; flex-wrap: wrap; }
/* DIENSTINFO GARAGE AREAS V080 END */
