:root{--ff-navy:#23385b;--ff-cream:#f5efda;--ff-teal:#56ac9b;--ff-coral:#e89370;--pin-food:#c97636;--pin-drinks:#b78b34;--pin-restroom:#3d9e6e;--pin-water:#3d8fa4;--pin-info:#407eb5;--pin-stage:#8f71b7;--pin-kids:#c25b7e;--pin-firstaid:#c84b46;--food-ink:#a86f36;--cat-booth:#47597a;--cat-utility:#6e7c93;--ff-white:#fff;--sand-100:#f0ede4;--sand-200:#e0dccb;--sand-300:#d7d2c2;--slate-500:#636b7b;--slate-600:#5c6570;--slate-700:#4a5262;--slate-800:#3b4a63;--ground-100:#eceae1;--ground-200:#e4e1d7;--green-lawn:#7cd763;--green-neighbourhood:#add29e;--grey-street:#e1e6eb;--grey-structure:#e1e1e1;--grey-hairline:#c7c7c7;--blue-water:#cbe4ff;--pink-court:#ffd7d9;--pink-kids:#d1849e;--paper-festival:#f7f7f7;--surface-base:var(--ff-navy);--surface-chrome:#fffffff2;--surface-chrome-solid:var(--ff-white);--surface-pressed:var(--sand-100);--surface-selected:var(--ff-navy);--border-control:var(--sand-200);--border-subtle:var(--sand-300);--text-strong:var(--ff-navy);--text-body:var(--slate-700);--text-muted:var(--slate-500);--text-on-navy:var(--ff-cream);--current:var(--ff-coral);--zone-fill:var(--ff-teal);--focus-ring:var(--ff-navy);--map-ground:var(--green-neighbourhood);--map-park:var(--green-neighbourhood);--map-lawn:var(--green-lawn);--map-festival:var(--paper-festival);--map-street:var(--grey-street);--map-structure:var(--grey-structure);--map-hairline:var(--grey-hairline);--map-court:var(--pink-court);--map-water:var(--blue-water);--map-kids:var(--pink-kids);--map-label:var(--slate-600);--map-number:var(--slate-800);--map-halo:var(--ff-white);--map-food-label:var(--food-ink);--icon-on-color:var(--ff-white);--opacity-dimmed:.28;--opacity-disabled:.35;--font-display:"Brice", "Manrope", system-ui, sans-serif;--font-ui:"Manrope", system-ui, sans-serif;--text-brand:48px;--text-3xl:28px;--text-2xl:18px;--text-lg:15px;--text-md:14px;--text-sm:13px;--text-xs:12px;--weight-medium:500;--weight-bold:700;--weight-black:800;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-pill:999px;--shadow-control:0 2px 8px #23385b26;--shadow-panel:0 8px 30px #23385b21;--shadow-sheet:0 -6px 24px #23385b2e;--shadow-foot:0 -8px 18px -6px #23385b38;--motion-press:.12s;--motion-panel:.25s;--motion-sheet-out:.14s;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease:cubic-bezier(.2, 0, .2, 1);--tap-min:44px;--pin-size:40px;--pin-size-overview:34px;--panel-width:360px;--sheet-max-height:72%}@media (width<=480px){:root{--text-brand:36px}}@media (prefers-reduced-motion:reduce){:root{--motion-press:0s;--motion-panel:0s;--motion-sheet-out:0s}}.ffc-dimmed{opacity:var(--opacity-dimmed)}:where(.ffc-chip,.ffc-iconbtn,.ffc-zoom button,.ffc-step button):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.ffc-chip{--chip-bg:var(--surface-chrome);--chip-fg:var(--text-strong);--chip-border:var(--border-subtle);--chip-pad-x:var(--space-4);--chip-gap:var(--space-2);align-items:center;gap:var(--chip-gap);min-height:var(--tap-min);padding:var(--space-2) var(--chip-pad-x);white-space:nowrap;border:1px solid var(--chip-border);border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--chip-fg);font:var(--weight-bold) var(--text-md)/1 var(--font-ui);cursor:pointer;transition:background var(--motion-press) var(--ease), color var(--motion-press) var(--ease);display:inline-flex;position:relative}.ffc-chip:active{--chip-bg:var(--surface-pressed)}.ffc-chip[aria-pressed=true]{--chip-bg:var(--surface-selected);--chip-fg:var(--ff-cream);--chip-border:var(--surface-selected)}.ffc-chip--muted{--chip-fg:var(--text-muted);--chip-border:var(--border-subtle)}@media (width<=480px){.ffc-chip{--chip-pad-x:var(--space-3);--chip-gap:var(--space-1)}}.ffc-iconbtn{--btn-size:var(--tap-min);--btn-bg:var(--surface-chrome-solid);--btn-fg:var(--text-strong);--btn-border:var(--border-control);--btn-radius:var(--radius-pill);width:var(--btn-size);height:var(--btn-size);border:1px solid var(--btn-border);border-radius:var(--btn-radius);background:var(--btn-bg);color:var(--btn-fg);box-shadow:var(--shadow-control);cursor:pointer;transition:background var(--motion-press) var(--ease);justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.ffc-iconbtn:active{--btn-bg:var(--surface-pressed)}.ffc-iconbtn--square{--btn-radius:var(--radius-sm);--btn-size:40px}.ffc-iconbtn--ghost{--btn-bg:transparent;--btn-border:transparent;--btn-fg:var(--text-muted);box-shadow:none}.ffc-iconbtn--on{--btn-bg:var(--current);--btn-border:var(--current);--btn-fg:var(--ff-navy)}.ffc-iconbtn[aria-disabled=true]{opacity:var(--opacity-disabled);cursor:default}.ffc-zoom{background:var(--surface-chrome-solid);border:1px solid var(--border-control);border-radius:var(--radius-md);box-shadow:var(--shadow-control);flex-direction:column;display:inline-flex;overflow:hidden}.ffc-zoom button{width:40px;height:40px;color:var(--text-strong);font:var(--weight-bold) 19px/1 var(--font-ui);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.ffc-zoom button+button{border-top:1px solid var(--sand-100)}.ffc-zoom button:active{background:var(--surface-pressed)}.ffc-zoom button[aria-disabled=true]{opacity:var(--opacity-disabled);cursor:default}.ffc-pin{--pin-fill:var(--cat-booth)}.ffc-pin--food{--pin-fill:var(--pin-food)}.ffc-pin--drinks{--pin-fill:var(--pin-drinks)}.ffc-pin--wc{--pin-fill:var(--pin-restroom)}.ffc-pin--water{--pin-fill:var(--pin-water)}.ffc-pin--info{--pin-fill:var(--pin-info)}.ffc-pin--stage{--pin-fill:var(--pin-stage)}.ffc-pin--kids{--pin-fill:var(--pin-kids)}.ffc-pin--firstaid{--pin-fill:var(--pin-firstaid)}.ffc-pin--bikevalet{--pin-fill:var(--cat-utility)}.ffc-pin:active{opacity:.9}.ffc-panel{--panel-bg:var(--surface-chrome-solid);--panel-radius:var(--radius-lg);background:var(--panel-bg);color:var(--text-body);font:var(--weight-medium) var(--text-lg)/1.45 var(--font-ui);flex-direction:column;display:flex}.ffc-panel__grip{background:var(--border-subtle);width:38px;height:4px;margin:var(--space-1) auto var(--space-3);border-radius:3px}.ffc-panel__head{align-items:flex-start;gap:var(--space-3);padding:0 var(--space-4);display:flex}.ffc-panel__badge{border-radius:var(--radius-pill);flex:0 0 32px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.ffc-panel__title{font:var(--weight-black) var(--text-2xl)/1.2 var(--font-ui);color:var(--text-strong);margin:0}.ffc-panel__sub{font-size:var(--text-xs);color:var(--text-muted);margin:2px 0 0}.ffc-panel__body{padding:var(--space-3) var(--space-4) var(--space-5);flex:1;overflow-y:auto}.ffc-panel__foot{padding:var(--space-3) var(--space-4);border-top:1px solid var(--sand-100);font-size:var(--text-xs);color:var(--text-muted)}.ffc-panel--bottom{z-index:6;max-height:var(--sheet-max-height);border-radius:var(--panel-radius) var(--panel-radius) 0 0;box-shadow:var(--shadow-sheet);transition:transform var(--motion-panel) var(--ease);position:absolute;bottom:0;left:0;right:0;transform:translateY(100%)}.ffc-panel--bottom[data-open=true]{transform:translateY(0)}.ffc-panel--bottom[hidden]{display:none}@media (width>=768px){.ffc-panel--bottom{width:min(560px,100%);left:50%;right:auto;transform:translate(-50%,100%)}.ffc-panel--bottom[data-open=true]{transform:translate(-50%)}}.ffc-panel--right{top:var(--space-5);right:var(--space-5);bottom:var(--space-5);width:var(--panel-width);z-index:6;border:1px solid var(--border-control);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);position:absolute}.ffc-dayheading{margin:var(--space-4) 0 var(--space-2);font:var(--weight-black) var(--text-md)/1.2 var(--font-ui);color:var(--text-strong)}.ffc-schedulerow{gap:var(--space-3);padding:var(--space-2) 0;border-top:1px solid var(--sand-100);display:flex}.ffc-schedulerow__time{font-variant-numeric:tabular-nums;font-size:var(--text-sm);color:var(--text-muted);flex:0 0 72px}.ffc-schedulerow__act{font-size:var(--text-md);color:var(--text-body)}.ffc-schedulerow--open .ffc-schedulerow__act{color:var(--text-muted);font-style:italic}.ffc-listrow{gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-md);align-items:flex-start;display:flex}.ffc-listrow__bullet{background:var(--bullet,var(--cat-booth));border-radius:50%;flex:0 0 6px;width:6px;height:6px;margin-top:7px}.ffc-poirow{align-items:center;gap:var(--space-3);width:100%;min-height:var(--tap-min);padding:var(--space-2) 0;text-align:left;cursor:pointer;background:0 0;border:0;display:flex;position:relative}.ffc-poirow:active{background:var(--surface-pressed)}.ffc-poirow__text{flex:1;min-width:0}.ffc-poirow__text b{font:var(--weight-bold) var(--text-md)/1.3 var(--font-ui);color:var(--text-strong);display:block}.ffc-poirow__text em{font-style:normal;font-size:var(--text-xs);color:var(--text-muted);margin-top:1px;display:block}.ffc-poirow__go{color:var(--text-muted);flex:none;font-size:18px;line-height:1}.ffc-step{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-1);background:var(--sand-100);border-radius:var(--radius-md);display:flex}.ffc-step button{width:var(--tap-min);flex:0 0 var(--tap-min);border:1px solid var(--border-control);border-radius:var(--radius-sm);background:var(--surface-chrome-solid);height:40px;color:var(--text-strong);cursor:pointer;padding:0;font-size:20px;line-height:1;position:relative}.ffc-step button:active{background:var(--surface-pressed)}.ffc-step__pos{text-align:center;font:var(--weight-bold) var(--text-xs)/1.3 var(--font-ui);color:var(--text-muted);flex:1}.ffc-legend{gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface-chrome);border:1px solid var(--border-control);border-radius:var(--radius-md);box-shadow:var(--shadow-control);flex-direction:column;display:flex}.ffc-legend__row{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-body);display:flex}.ffc-legend__dot{border-radius:50%;flex:0 0 20px;width:20px;height:20px}.ffc-legend--inline{gap:var(--space-1) var(--space-3);box-shadow:none;background:0 0;border:0;grid-template-columns:1fr 1fr;padding:0;display:grid}.ffc-legend--inline .ffc-legend__row{font-size:var(--text-xs);color:var(--text-muted)}.ffc-legend--inline .ffc-legend__dot{flex:0 0 12px;width:12px;height:12px}.ffc-scale{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-chrome);border:1px solid var(--border-control);border-radius:var(--radius-md);font:var(--weight-bold) var(--text-xs)/1 var(--font-ui);color:var(--text-strong);display:inline-flex}.ffc-scale__bar{background:var(--text-strong);width:64px;height:4px;display:block}.ffc-brand{align-items:baseline;gap:var(--space-2);text-decoration:none;display:inline-flex}.ffc-brand__name{font:var(--weight-black) var(--text-brand)/1 var(--font-display);text-transform:uppercase;letter-spacing:.01em;color:var(--text-strong);text-shadow:0 1px 0 var(--surface-chrome-solid), 0 0 12px var(--surface-chrome)}.ffc-brand:hover .ffc-brand__name{text-underline-offset:4px;text-decoration:underline}.ffc-brand:focus-visible{outline:2px solid var(--focus-ring);outline-offset:4px;border-radius:var(--radius-sm)}@font-face{font-family:Brice;src:url(/assets/Brice-Black-26p3dEqj.woff2)format("woff2");font-weight:800 900;font-style:normal;font-display:swap}*{box-sizing:border-box}html,body,#root{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{font-family:var(--font-ui);background:var(--map-ground);color:var(--text-on-navy);-webkit-font-smoothing:antialiased}button{font-family:inherit}.ff-app{background:var(--map-ground);max-width:480px;height:100dvh;margin:0 auto;position:relative;overflow:hidden}@media (width>=768px){.ff-app{max-width:none}}:root{--ff-surround:#e8edf2;--ff-panel-w:var(--panel-width);--ff-gap:var(--space-5)}.ff-screen{background:var(--ff-surround);width:100%;height:100%;position:relative;overflow:hidden}.topbar{padding-left:max(var(--space-3), env(safe-area-inset-left));padding-right:max(var(--space-3), env(safe-area-inset-right))}.sheet:not(.docked){padding-bottom:max(var(--space-5), env(safe-area-inset-bottom))}.mapstage{position:absolute;inset:0}.mapwrap{touch-action:none;position:absolute;inset:0;overflow:hidden}.ff-map{cursor:grab;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.ff-map:active{cursor:grabbing}.ff-tap{cursor:pointer}.ff-app,.ff-app *{-webkit-tap-highlight-color:transparent}.topbar{z-index:4;padding:var(--space-3);position:absolute;top:0;left:0;right:0}.topbar,.tbrow{pointer-events:none}.tbrow>*{pointer-events:auto}.chips{pointer-events:auto;touch-action:pan-x;width:max-content;max-width:100%}.tbrow{align-items:center;gap:var(--space-3);margin:0 2px var(--space-3);display:flex}.chips{gap:var(--space-2);scrollbar-width:none;padding-bottom:2px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.float{z-index:3;position:absolute}.zoomctl{right:var(--space-3);bottom:var(--space-4)}.sheet{z-index:6;background:var(--surface-chrome-solid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-sheet);padding:var(--space-2) var(--space-4) var(--space-5);max-height:var(--sheet-max-height);transition:transform var(--motion-panel) var(--ease);position:absolute;bottom:0;left:0;right:0;overflow:auto;transform:translateY(100%)}.sheet.open{transform:translateY(0)}.sheet.open[data-phase=out]:not(.docked){transition:transform var(--motion-sheet-out) var(--ease-in);transform:translateY(100%)}.sheet:not(.docked){visibility:hidden;transition:transform var(--motion-panel) var(--ease), visibility 0s var(--motion-panel)}.sheet.open:not(.docked){visibility:visible;transition:transform var(--motion-panel) var(--ease), visibility 0s}.ff-map:focus{outline:none}.sheet .sheettop{height:var(--tap-min);flex:none;position:relative}.sheet .griparea{touch-action:none;cursor:grab;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.sheet .griparea:active{cursor:grabbing}.sheet .grip{background:var(--border-subtle);border-radius:3px;width:38px;height:4px}.sheet .griparea:active .grip{background:var(--text-muted)}.sheet .hd{align-items:center;gap:var(--space-3);margin:0 0 2px;display:flex}.sheet .hd .dot{border-radius:var(--radius-pill);flex:0 0 32px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.sheet h3{font-weight:var(--weight-black);font-size:var(--text-2xl);color:var(--text-strong);margin:0}.sheet .sub{font-size:var(--text-xs);color:var(--text-muted);margin:2px 0 var(--space-3);padding-left:44px}.sheet .close{top:0;right:var(--space-2);z-index:1;width:var(--tap-min);height:var(--tap-min);cursor:pointer;color:var(--text-muted);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.sheet .close:active{color:var(--text-strong)}.day{font-size:var(--text-md);font-weight:var(--weight-black);color:var(--text-strong);margin:var(--space-4) 0 var(--space-1)}.evt{gap:var(--space-3);padding:var(--space-2) var(--space-1);border-bottom:1px solid var(--sand-100);font-size:var(--text-md);display:flex}.evt:last-child{border-bottom:none}.evt .t{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:var(--text-sm);flex:0 0 72px}.evt .a{color:var(--text-body)}.li{align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-1);font-size:var(--text-md);color:var(--text-body);line-height:1.45;display:flex}.li .b{background:var(--sheet-accent,var(--cat-booth));border-radius:50%;flex:0 0 6px;width:6px;height:6px;margin-top:7px}.sheet .foot{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--sand-100)}@media (width>=768px) and (width<=1023.98px){.sheet{width:min(560px,100%);left:50%;right:auto;transform:translate(-50%,100%)}.sheet.open{transform:translate(-50%)}.sheet.open[data-phase=out]:not(.docked){transform:translate(-50%,100%)}}.ff-screen.docked .sheetwrap{top:var(--ff-gap);right:var(--ff-gap);bottom:var(--ff-gap);width:var(--ff-panel-w);z-index:6;position:absolute}.ff-screen.docked .sheet{border-radius:var(--radius-md);border:1px solid var(--border-control);height:100%;max-height:none;box-shadow:var(--shadow-panel);flex-direction:column;padding:0;display:flex;position:static;overflow:hidden;transform:none}.ff-screen.docked .panel-scroll{padding:var(--space-4);flex:1;overflow-y:auto}.ff-screen.docked .panel-head{padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--sand-100)}.ff-screen.docked .panel-head h3{font-weight:var(--weight-black);font-size:var(--text-2xl);color:var(--text-strong);margin:0}.ff-screen.docked .panel-head p{font-size:var(--text-xs);color:var(--text-muted);margin:2px 0 0}.ff-screen.docked .panel-foot{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-control);box-shadow:var(--shadow-foot);background:var(--panel-bg,var(--surface-chrome-solid));z-index:1;position:relative}.ff-screen.docked .panel-back{align-items:center;gap:var(--space-2);width:100%;min-height:var(--tap-min);padding:0 var(--space-4);border:0;border-bottom:1px solid var(--sand-100);cursor:pointer;text-align:left;font:var(--weight-bold) var(--text-md)/1 var(--font-ui);color:var(--text-muted);background:0 0;display:flex}.ff-screen.docked .panel-back:hover{color:var(--text-strong)}.ff-screen.docked .panel-back:active{background:var(--surface-pressed)}.ff-screen.docked .panel-back span{font-size:20px;line-height:1}.dir-section+.dir-section{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--sand-100)}.dir-title{margin:0 0 var(--space-1);font:var(--weight-black) var(--text-xs)/1.2 var(--font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.ffc-poirow .dot{border-radius:var(--radius-pill);flex:0 0 28px;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.ff-screen.docked .sheet .griparea{display:none}.ff-screen.docked .topbar{padding:var(--ff-gap)}.ff-screen.docked .zoomctl{right:calc(var(--ff-gap) + var(--ff-panel-w) + var(--ff-gap))}:root{--stepper-offset:-4px;--stepper-gap:var(--space-5)}.boothnav{margin:var(--stepper-offset) 0 var(--stepper-gap)}.sheet:not(.docked) .boothnav{margin-top:var(--space-3)}.sheet:not(.docked) .panel-scroll{padding-top:var(--space-2)}
