@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#193d34;--muted:#69746d;--paper:#f5f3ed;--white:#fffef9;--line:#dedfd5;--lime:#d8ef86;--green:#416f5d;--rust:#aa674b;--sans:'DM Sans',Arial,sans-serif;--head:'Manrope',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.5}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #9cb74d;outline-offset:4px}a{color:inherit;text-underline-offset:4px}button:disabled{opacity:.5;cursor:default}.topbar{height:82px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4.5vw}.wordmark{display:flex;align-items:center;gap:11px;text-decoration:none;font-size:12px;font-weight:700;letter-spacing:1.7px}.brandmark{font-family:Georgia,serif;font-size:34px;letter-spacing:-4px;margin-right:9px}.year-label{font-weight:400;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:20px}.private-tag{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}main{max-width:1480px;margin:auto;padding:0 4.5vw}.hero{display:flex;justify-content:space-between;align-items:center;padding:60px 0 42px;gap:32px}.eyebrow,.tiny-label{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;margin:0 0 13px}.hero h1{font-family:var(--head);font-size:clamp(42px,5.5vw,76px);font-weight:600;letter-spacing:-3.8px;line-height:1.07;margin:0 0 24px}.intro{font-size:15px;color:var(--muted);line-height:1.7;margin:0}.hero-note{border-left:1px solid #b8c2b0;padding-left:32px;min-width:240px}.hero-note p{font-family:Georgia,serif;font-size:30px;line-height:1.3;margin:12px 0 28px}.hero-note em{font-weight:400;color:#67826b}.revision{font-size:11px;color:var(--muted);white-space:nowrap}.revision i{display:inline-block;width:4px;height:4px;background:var(--muted);border-radius:50%;margin:0 9px 2px}.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:36px;background:var(--white)}.stat{padding:21px 25px;border-right:1px solid var(--line);display:flex;align-items:center;gap:17px}.stat:last-child{border:0}.stat strong{font:600 34px var(--head);letter-spacing:-1.5px}.stat span{font-size:12px;line-height:1.45;color:var(--muted)}.tabs{display:flex;gap:27px;overflow-x:auto;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);z-index:20;padding-top:4px}.tabs button{border:0;background:none;color:var(--muted);padding:13px 0 16px;white-space:nowrap;font-weight:600;font-size:13px;border-bottom:3px solid transparent}.tabs button.active{color:var(--ink);border-bottom-color:var(--ink)}.view{display:none;padding:28px 0 0}.view.active{display:block}.section-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin:5px 0 23px}.section-head h2,h2{font-family:var(--head);font-size:25px;line-height:1.25;font-weight:600;letter-spacing:-.8px;margin:0}.section-head .eyebrow{font-size:9px;margin-bottom:8px;color:var(--muted)}.text-link{font-size:12px;white-space:nowrap}.map-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--white)}.map-shell{background:#e9eee8;min-width:0}.map-tools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:rgba(250,250,244,.7);padding:13px 18px;border-bottom:1px solid #d6dfd3;font-size:11px}.map-tools label{display:flex;align-items:center;gap:5px}.map-tools input{accent-color:var(--green)}.map-tools button{margin-left:auto;border:0;background:none;font-size:10px;text-decoration:underline;color:var(--muted)}.map-mount{height:640px;position:relative;padding:8px 15px 0;display:flex;align-items:center;justify-content:center}.map-mount svg{width:100%;height:100%;overflow:visible}.map-mount [data-state]{cursor:pointer;transition:fill .15s}.map-mount [data-state]:hover{fill:#aec392}.map-mount [data-state].selected{stroke:#203f31;stroke-width:3;fill:#c1d88a}.map-pin{cursor:pointer}.map-pin circle{stroke:#fffef9;stroke-width:2.5}.map-pin text{font-family:var(--sans);font-size:11px;font-weight:600;paint-order:stroke;stroke:#edf1e9;stroke-width:3px;stroke-linejoin:round;fill:#173c32}.map-pin:hover circle{r:8}.map-pin.selected circle{fill:#e5c43b!important;r:8}.legend{display:flex;justify-content:center;flex-wrap:wrap;gap:16px;font-size:10px;padding:12px 8px}.legend span{display:flex;align-items:center;gap:6px}.swatch{display:inline-block;width:10px;height:10px;border-radius:2px}.swatch.done{background:#739686}.swatch.new{background:#cfddb1}.swatch.open{background:#eeeadd;border:1px solid #b8bcae}.swatch.track{background:#be7e34;height:3px}.map-caption{font-size:10px;line-height:1.6;color:#69766c;text-align:center;padding:0 20px 15px;margin:0}.map-sidebar{border-left:1px solid var(--line);padding:28px;display:flex;flex-direction:column;justify-content:space-between;gap:24px}.map-sidebar h3{font:600 23px var(--head);letter-spacing:-.6px;line-height:1.2;margin:10px 0 12px}.map-sidebar p{font-size:13px;color:var(--muted)}.sidebar-foot{border-top:1px solid var(--line);padding-top:20px}.sidebar-foot h3{font-size:19px;margin-top:9px}.mini-row{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer}.mini-row:hover{color:#678245}.mini-date{flex:0 0 42px;font-size:12px;font-weight:700;color:var(--green)}.mini-row h4{margin:0;font-size:12px;line-height:1.4}.mini-row small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.state-area{margin:28px 0}.state-area h3{font-size:16px;font-weight:500}.state-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.state-pill{display:flex;align-items:center;gap:10px;text-align:left;background:var(--white);border:1px solid var(--line);border-radius:7px;padding:10px 12px;font-size:11px;min-height:42px}.state-pill .state-code{font-weight:700;font-size:10px;border-radius:4px;padding:3px 5px;background:#eeeadd}.state-pill.done .state-code{background:#739686;color:white}.state-pill.new .state-code{background:#cfddb1}.state-pill .state-check{margin-left:auto;color:var(--muted);font-size:10px}.callout{border:1px solid var(--line);border-radius:10px;padding:22px 25px;background:#ecefe3;margin:22px 0;font-size:13px}.callout p{color:var(--muted);margin:8px 0 14px}.button{border:1px solid var(--ink);background:var(--ink);border-radius:6px;padding:11px 17px;color:var(--white);display:inline-block;text-decoration:none;font-size:13px;font-weight:500}.button:hover{background:#2f5949}.button.small{font-size:11px;padding:8px 13px}.button.secondary{background:var(--white);color:var(--ink);border-color:var(--line)}.button.secondary:hover{background:#e9eedf}.muted{color:var(--muted);font-size:12px}.upload{cursor:pointer;margin-right:12px}.notice{padding:15px 20px;background:#e9eddf;border-left:3px solid #7d9361;font-size:12px;line-height:1.6;margin:0 0 24px}.month-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.month-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--white)}.month-header{padding:20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.month-header h3{font:600 19px var(--head);margin:0}.month-header span{font-size:10px;color:var(--muted)}.weekend{display:flex;gap:13px;padding:14px 18px;border-bottom:1px solid #eaebe3;min-height:75px}.weekend:last-child{border:0}.weekend[data-id]{cursor:pointer}.weekend[data-id]:hover{background:#f0f2e9}.week-date{font-size:10px;color:var(--muted);min-width:42px;padding-top:3px}.week-date b{font-size:17px;color:var(--ink);display:block;line-height:1.1;font-family:var(--head)}.week-content{min-width:0;flex:1}.week-content h4{margin:0 0 5px;font-size:12px;font-weight:500;line-height:1.4}.badge{display:inline-block;font-size:9px;font-weight:500;letter-spacing:.1px;padding:2px 6px;border-radius:3px;background:#e8eddf;color:#436144;margin-right:5px}.badge.fixed{background:#244d3d;color:white}.badge.free{background:#eeede7;color:#777c73}.badge.weather{background:#f3e8c8;color:#93762c}.badge.private{background:#ece3ef;color:#7b5b87}.badge.reise{background:#d7e8e1;color:#27513f}.badge.alt{background:#eee8de;color:#856b4e}.select-label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:10px}select,input[type=search]{background:var(--white);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:10px 13px;font-size:12px;max-width:100%}.trip-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.trip-card{background:var(--white);border:1px solid var(--line);border-radius:12px;overflow:hidden}.trip-art{height:190px;background:#365c4c;position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:22px;color:#fff}.trip-art .trip-no{position:absolute;right:16px;top:-16px;font:140px Georgia,serif;opacity:.1}.trip-art svg{position:absolute;inset:0;width:100%;height:100%;opacity:.4}.trip-art .region-name{font-family:Georgia,serif;font-size:28px;line-height:1.1;z-index:1;max-width:220px}.trip-art.sachsen{background:#6a7352}.trip-art.norden{background:#466b76}.trip-content{padding:23px}.trip-content h3{font:600 17px var(--head);line-height:1.4;margin:12px 0}.trip-content p{font-size:12px;color:var(--muted)}.trip-meta{display:flex;gap:12px;font-size:11px;border-top:1px solid var(--line);padding-top:14px;margin-top:18px}.compact{margin-top:38px}.home-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.home-card{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:24px}.home-card h3{margin:0 0 10px;font:600 18px var(--head)}.home-card p{font-size:12px;color:var(--muted)}.home-card .mini-row:last-child{border:0}.filters{display:flex;gap:12px}.filters input{flex:1}.pool-row{display:grid;grid-template-columns:75px 1fr 65px 150px 70px;gap:18px;align-items:center;padding:20px 22px;border:1px solid var(--line);border-radius:9px;background:var(--white);margin:10px 0;cursor:pointer}.pool-row:hover{border-color:#759466}.pool-date{font-size:13px;font-weight:700}.pool-row h3{font-size:14px;margin:0 0 4px}.pool-row p{font-size:11px;color:var(--muted);margin:0}.pool-km{font-size:16px;font-weight:600}.pool-km small{display:block;font-size:10px;color:var(--muted);font-weight:400}.pool-label{font-size:11px}.arrow{font-size:19px;text-align:right}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:26px;margin:18px 0}.panel h3{font:600 18px var(--head);margin:0 0 14px}.panel p,.panel li{font-size:12px;color:var(--muted);line-height:1.7}.panel ul{padding-left:18px}.panel li{padding:5px 0}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12px}td,th{padding:15px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}td:first-child{font-weight:600;min-width:105px}td:nth-child(3){white-space:nowrap}td:last-child{min-width:230px;color:var(--muted);font-size:11px}.logistics-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.summary-card{background:#e8eddf;border:1px solid #d5ddc7;border-radius:10px;padding:25px}.summary-card strong{font:600 32px var(--head);letter-spacing:-1px}.summary-card p{font-size:12px;color:var(--muted);margin:8px 0 0}.vac-row{display:grid;grid-template-columns:1.2fr 1fr 45px;gap:15px;border-top:1px solid var(--line);padding:12px 0;font-size:12px}.vac-row span{color:var(--muted)}.vac-row b{text-align:right}.sources-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 25px}.sources-grid a{font-size:12px;text-decoration:none;border-bottom:1px solid var(--line);padding:8px 0;color:var(--muted)}.sources-grid a:hover{color:var(--ink)}.registration-row{display:grid;grid-template-columns:100px 1fr;gap:15px;border-bottom:1px solid var(--line);padding:11px 0;font-size:12px}.registration-row b{font-size:11px}.registration-row span{color:var(--muted)}footer{display:flex;justify-content:space-between;gap:20px;padding:35px 0;margin-top:40px;border-top:1px solid var(--line);font-size:10px;letter-spacing:.4px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:14px;background:var(--white);color:var(--ink);padding:35px;max-width:680px;width:calc(100% - 30px);max-height:88vh;overflow:auto}dialog::backdrop{background:rgba(12,37,27,.45);backdrop-filter:blur(3px)}.close{position:absolute;top:12px;right:15px;background:none;border:0;font-size:27px;color:var(--muted)}dialog h2{font-size:26px;margin:10px 22px 18px 0}dialog p{font-size:13px;color:var(--muted);line-height:1.7}.detail-metrics{display:flex;gap:25px;flex-wrap:wrap;margin:23px 0;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.detail-metrics strong{display:block;font-size:21px}.detail-metrics span{font-size:10px;color:var(--muted)}.detail-block{margin:20px 0}.detail-block h3{font-size:14px;margin-bottom:5px}.detail-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:25px}.export-actions{display:grid;gap:10px;margin:22px 0}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:var(--ink);color:white;padding:12px 22px;border-radius:8px;z-index:100;opacity:0;pointer-events:none;transition:.2s;font-size:12px;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}.empty{padding:40px;text-align:center;color:var(--muted)}
@media(min-width:1500px){main{padding-left:60px;padding-right:60px}}@media(max-width:1050px){.hero-note{min-width:200px}.stat{padding:18px 16px;gap:11px}.stat strong{font-size:28px}.map-layout{grid-template-columns:1.6fr 1fr}.map-sidebar{padding:22px}.month-grid{grid-template-columns:repeat(2,1fr)}.trip-grid{grid-template-columns:1fr}.trip-card{display:grid;grid-template-columns:1fr 2fr}.trip-art{height:100%}.map-mount{height:590px}.state-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.topbar{height:67px;padding:0 20px}.wordmark{font-size:9px;letter-spacing:1px;gap:8px}.brandmark{font-size:29px;margin-right:5px}.top-actions{gap:8px}.private-tag{display:none}.topbar .button{font-size:10px;padding:7px 9px}main{padding:0 20px}.hero{padding:35px 0 30px}.hero h1{font-size:45px;letter-spacing:-2.6px}.hero-note{display:none}.intro{font-size:13px}.eyebrow{font-size:9px;letter-spacing:1.3px}.stats{grid-template-columns:repeat(2,1fr);margin-bottom:22px}.stat{padding:16px;border-bottom:1px solid var(--line)}.stat:nth-child(2){border-right:0}.stat:nth-child(3){border-bottom:0}.stat strong{font-size:28px}.stat span{font-size:10px}.tabs{gap:23px;margin:0 -20px;padding:0 20px}.tabs button{font-size:12px}.view{padding-top:21px}.section-head{display:block;margin-bottom:17px}.section-head h2,h2{font-size:22px}.section-head a{display:inline-block;margin-top:13px}.map-layout{display:block}.map-sidebar{border-left:0;border-top:1px solid var(--line);padding:22px}.map-mount{height:510px;padding:6px}.map-tools{padding:12px;font-size:10px;gap:11px}.map-tools button{margin-left:0}.map-sidebar h3{font-size:21px}.sidebar-foot{display:none}.state-grid{grid-template-columns:repeat(2,1fr);gap:7px}.state-pill{font-size:10px;padding:9px 8px;gap:6px}.state-check{display:none}.map-caption{font-size:9px;padding:0 13px 13px}.legend{gap:11px;font-size:9px}.month-grid{grid-template-columns:1fr}.select-label{margin-top:15px}.month-header{padding:17px}.trip-card{display:block}.trip-art{height:160px}.trip-content{padding:20px}.home-grid,.two-col{grid-template-columns:1fr}.filters{display:grid;grid-template-columns:1fr 1fr;gap:9px}.filters input{grid-column:span 2;min-width:0}.pool-row{grid-template-columns:48px 1fr 45px;gap:10px;padding:16px 12px}.pool-label,.arrow{display:none}.pool-row h3{font-size:12px}.pool-date{font-size:11px}.pool-km{font-size:14px}.panel{padding:20px}.logistics-summary{grid-template-columns:1fr}.summary-card{padding:18px;display:flex;align-items:center;gap:20px}.summary-card strong{font-size:27px;white-space:nowrap}.summary-card p{margin:0;font-size:11px}.vac-row{grid-template-columns:1fr 80px 25px;font-size:11px}.sources-grid{grid-template-columns:1fr}.callout{padding:20px}.callout .muted{display:block;margin-top:12px}.registration-row{grid-template-columns:75px 1fr;font-size:11px}footer{display:block;line-height:1.6}footer span{display:block;margin-bottom:7px}dialog{padding:26px 22px}.desktop{display:none}}
@media print{.topbar,.tabs,.hero-note,.map-tools,.callout,.filters,#exportDialog,footer{display:none!important}.hero{padding:10px 0}.hero h1{font-size:34px}.view{display:none!important}#view-jahr{display:block!important}.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.month-card{break-inside:avoid}.weekend{padding:8px;min-height:0}.month-header{padding:10px}.week-content h4{font-size:10px}.stats{margin:10px 0}.stat{padding:10px}.stat strong{font-size:22px}main{padding:0;max-width:none}.select-label,.notice{display:none}.section-head h2{font-size:18px}body{background:white}}

.calendar-jump { margin-top: 20px; }
#jahr { scroll-margin-top: 70px; }
.calendar-key {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
  font-size: 11px;
  color: var(--muted);
}
.calendar-key .badge { font-size: 10px; }
@media print { .calendar-jump { display: none; } }

.calendar-mode {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
#calendarHint { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.calendar-switch {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--white);
}
.calendar-switch button {
  min-height: 34px;
  padding: 5px 12px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--ink);
  font-size: 12px;
  font-weight: 600;
}
.calendar-switch button:hover { background: #e8eddf; }
.calendar-switch button[aria-pressed="true"] { background: var(--ink); color: var(--white); }
.calendar-mode .select-label { margin: 0; }
.calendar-mode [hidden], #yearAtAGlance[hidden], #months[hidden] { display: none; }

.annual-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.annual-month {
  min-width: 0;
  padding: 9px 9px 7px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--white);
  font-variant-numeric: tabular-nums;
}
.annual-month h3 {
  margin: 0 0 4px 4px;
  font: 650 15px/1.4 var(--head);
}
.annual-days { table-layout: fixed; border-collapse: separate; border-spacing: 0 1px; }
.annual-days :is(td, th) {
  min-width: 0;
  padding: 0;
  border: 0;
  color: var(--ink);
  text-align: center;
  vertical-align: middle;
}
.annual-days th {
  height: 22px;
  color: #53635a;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.annual-days abbr { text-decoration: none; }
.annual-days th:nth-last-child(-n + 2) {
  background: #eeede5;
  color: var(--ink);
  font-weight: 750;
}
.annual-days th:nth-last-child(2) { border-start-start-radius: 4px; }
.annual-days th:last-child { border-start-end-radius: 4px; }
.annual-day { height: 27px; }
.annual-day.is-weekend { background: #f1f0e9; }
.annual-day.is-weekend.is-blank { background: #f7f6f0; }
.annual-day-label {
  display: grid;
  width: 100%;
  min-height: 26px;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: var(--day-fill, transparent);
  color: var(--day-text, var(--ink));
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
}
.annual-day.is-weekend .annual-day-label, button.annual-day-label { font-weight: 700; }
.annual-days .is-fixed { --day-fill: #244d3d; --day-text: #fffef9; }
.annual-days .is-proposed { --day-fill: #dfe8d3; --day-text: #334e31; }
.annual-days .is-trip:not(.is-fixed, .is-proposed) { --day-fill: #cfe8dc; --day-text: #204e42; }
.annual-day.is-trip { --trip-stripe: #479379; }
.annual-day.is-trip.is-fixed { --trip-stripe: #a0d9bd; }
.annual-day.is-trip .annual-day-label {
  background-image: linear-gradient(to top, var(--trip-stripe) 3px, transparent 3px);
}
.annual-days .is-reserve { --day-fill: #f3e8c8; --day-text: #644c17; }
.annual-days .is-private { --day-fill: #ece3ef; --day-text: #63456e; }
.annual-days .is-local { --day-fill: #dce9f0; --day-text: #2f4e61; }
.calendar-key .badge.weekend-key { background: #f1f0e9; color: #43564b; }
.calendar-key .badge.proposed { background: #dfe8d3; color: #334e31; }
.calendar-key .badge.reise { background: #cfe8dc; color: #204e42; box-shadow: inset 0 -2px #479379; }
.calendar-key .badge.local { background: #dce9f0; color: #2f4e61; }
button.annual-day-label:hover { box-shadow: inset 0 0 0 1px currentColor; }
button.annual-day-label[aria-pressed="true"],
button.annual-day-label:focus-visible {
  outline: 2px solid #183c33;
  outline-offset: -2px;
  box-shadow: inset 0 0 0 4px #fffef9;
}
.annual-date-events .mini-row { padding: 8px 0; }
.annual-date-events .mini-row:last-child { border: 0; }

@media (max-width: 980px) {
  .annual-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .annual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .annual-month { padding: 7px 5px 5px; }
}
@media (max-width: 410px) {
  .annual-grid { gap: 6px; margin-inline: -12px; }
  .annual-month { padding-inline: 3px; }
  .annual-month h3 { font-size: 14px; }
}
@media (max-width: 374px) {
  .annual-grid { grid-template-columns: minmax(0, 1fr); }
}
@media print {
  .calendar-mode { display: none !important; }
  .annual-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; margin-inline: 0; }
  .annual-month { break-inside: avoid; padding: 4px; }
  .annual-day, .annual-day-label { height: 15px; min-height: 15px; font-size: 9px; }
  .annual-days th { height: 15px; }
  .annual-grid, .calendar-key { print-color-adjust: exact; }
}

#rideMap { scroll-margin-top: 70px; }
#rideMap .map-mount svg { overflow: hidden; }
#rideMap .map-mount.route-focus { height: clamp(290px, 58vw, 480px); }
.ride-map-filter { padding: 8px 16px; background: var(--paper); font-size: 12px; }
.ride-map-filter select, .recorded-head input {
  max-width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--white);
  color: var(--ink);
  font: inherit;
}
.recorded-panel { margin-top: 24px; padding: 20px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); }
.recorded-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.recorded-head h3 { margin: 0; }
.recorded-head label { display: grid; gap: 4px; font-size: 12px; }
.recorded-list { margin: 12px 0 0; padding: 0; list-style: none; max-height: 330px; overflow: auto; }
.recorded-list li + li { border-top: 1px solid var(--line); }
.recorded-list button {
  width: 100%;
  display: grid;
  grid-template-columns: 6em 1fr auto;
  gap: 10px;
  align-items: baseline;
  text-align: left;
  padding: 9px 6px;
  border: 0;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  font: inherit;
  font-size: 13px;
}
.recorded-list button:hover, .recorded-list button[aria-pressed="true"] { background: var(--paper); }
.recorded-list small { display: block; }
.ride-track { cursor: pointer; pointer-events: stroke; }
.ride-track:hover { stroke-width: 4; opacity: 1; }
.ride-stop { pointer-events: none; }
.ride-stop text { fill: var(--ink); stroke: #e9eee8; stroke-width: 2px; paint-order: stroke; font-weight: 700; }
@media (max-width: 700px) {
  .recorded-panel { padding: 14px; }
  .recorded-list button { grid-template-columns: 3em 1fr auto; font-size: 11px; }
}

.swatch.plan-track { height: 0; border-top: 2px dashed #284e7c; border-radius: 0; }
.public-edition .stats { grid-template-columns: repeat(3, 1fr); }
.public-edition #view-quellen .two-col { grid-template-columns: 1fr; }
@media (max-width: 700px) {
  .public-edition .stats { grid-template-columns: repeat(2, 1fr); }
  .public-edition .stat:last-child { grid-column: 1 / -1; }
}
