*{box-sizing:border-box}
@font-face{font-family:"Inter";src:url(vendor/inter.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Outfit";src:url(vendor/outfit.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Fredoka";src:url(vendor/fredoka-700.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}
:root{
  --pink:#957495;--pink-2:#7195a5;
  --ink:#1b1d22;--muted:#687069;--bg:#f4f6f5;--surface:#fff;--soft:#f1f4f2;--line:#e6ebe7;--border:var(--border);
  --on-ink:#fff;--header-bg:rgba(255,255,255,.9);--map-bg:var(--map-bg);--shadow:0 10px 30px rgba(20,24,35,.12);
  --accent-soft:#ffe8ed;--accent-ink:#b0173b;
  --ok-bg:#e8f5e9;--ok:#2e7d32;--bad-bg:#fdecea;--bad:#b71c1c;--warn-bg:#fff3e0;--warn:#b45309;
  --header-h:56px;--tabbar-h:calc(62px + var(--safe-bottom));
  /* The Android app pads the WebView for the system bars itself, so these are 0
     there. In a normal browser (or iOS) env() fills them in. */
  --safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);
  --peek:240px;
  --display:"Fredoka","Arial Rounded MT Bold","Outfit",sans-serif;
  font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);
  -webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%;color-scheme:light
}
:root[data-theme=dark]{
  --ink:#eceef1;--muted:#9aa3ab;--bg:#0d0f12;--surface:#16191e;--soft:#20242a;--line:#262b32;--border:#323841;
  --on-ink:#101216;--header-bg:rgba(18,20,24,.88);--map-bg:#1a1d22;--shadow:0 10px 30px rgba(0,0,0,.45);
  --accent-soft:rgba(255,56,92,.18);--accent-ink:#ff8aa3;
  --ok-bg:rgba(76,175,80,.18);--ok:#7fd483;--bad-bg:rgba(244,67,54,.18);--bad:#ff8a80;--warn-bg:rgba(255,152,0,.18);--warn:#ffb74d;
  color-scheme:dark
}
html,body{height:100%}
body{margin:0;font:inherit;color:inherit;overflow:hidden;overscroll-behavior:none;position:relative}
button,input,select{font:inherit;color:inherit;touch-action:manipulation}
button{cursor:pointer;border:0;background:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
button:disabled{opacity:.5}
button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:3px solid var(--pink);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--muted);font-size:14px;line-height:1.45}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
[hidden]{display:none!important}

/* Header */
.app-header{position:fixed;top:0;left:0;right:0;height:calc(var(--header-h) + var(--safe-top));padding:var(--safe-top) 12px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--header-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);z-index:1200}
.brand{display:flex;align-items:center;gap:6px;font-size:19px;font-weight:900;letter-spacing:-.5px;text-decoration:none;color:var(--ink);flex-shrink:0;min-height:44px}
.brand-icon{display:grid;place-items:center;background:var(--pink);color:#fff;border-radius:10px;font-size:15px;width:30px;height:30px;box-shadow:0 3px 10px rgba(255,56,92,.3)}
.pink{color:var(--pink)}
.header-actions{display:flex;align-items:center;gap:6px;min-width:0;flex:1;justify-content:flex-end}
.location-pill{background:var(--soft);border:1px solid var(--border);border-radius:22px;padding:0 12px;height:40px;font-size:13px;font-weight:700;min-width:0;max-width:190px;flex:0 1 auto}
.location-pill .dot{color:var(--pink);font-size:9px}
.location-pill.searching .dot{animation:pulse 1.8s infinite}
@keyframes pulse{50%{opacity:.35}}
.icon-button{position:relative;background:var(--soft);border:1px solid var(--border);border-radius:50%;width:40px;height:40px;flex-shrink:0;font-size:17px;font-weight:700}
.icon-button[aria-pressed=true]{background:var(--pink);border-color:var(--pink);color:#fff}
.badge:empty{display:none}
.badge{position:absolute;top:-4px;right:-4px;background:var(--pink);color:#fff;font-size:10px;font-weight:800;line-height:16px;min-width:16px;height:16px;border-radius:8px;padding:0 4px;border:2px solid var(--surface);box-sizing:content-box}
@media (max-width:430px){.brand-text{display:none}.location-pill{max-width:none}}

/* Map */
.map-container{position:absolute;top:calc(var(--header-h) + var(--safe-top));bottom:0;left:0;right:0;z-index:1}
#map{width:100%;height:100%;background:var(--map-bg)}
.leaflet-top.leaflet-right{top:4px}
.map-fab{position:absolute;right:10px;bottom:calc(var(--peek) + 64px + var(--safe-bottom));z-index:1000;width:44px;height:44px;border-radius:50%;background:var(--surface);box-shadow:0 2px 10px rgba(0,0,0,.25);font-size:20px}
.location-banner{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--on-ink);padding:9px 16px;border-radius:20px;font-size:13px;font-weight:600;z-index:1100;display:flex;align-items:center;gap:10px;box-shadow:0 4px 16px rgba(0,0,0,.25);white-space:nowrap}
.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Pins (Leaflet divIcons – Leaflet sets the box size, we let content define it) */
.pin-wrap{background:none;border:0}
.pin{position:absolute;left:0;top:0;transform:translate(-50%,-50%);background:var(--ink);color:#fff;border:2px solid #fff;border-radius:16px;padding:5px 10px;font-weight:800;font-size:12px;line-height:1.2;white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,.25);cursor:pointer}
.pin.today{background:#c2185b}
.pin.free{background:#2e7d32}
.pin.approx{background:#5b6360;border-style:dashed}
.pin.saved{box-shadow:0 0 0 3px var(--pink),0 3px 10px rgba(0,0,0,.25)}
.user-pin-wrap{position:relative;display:flex;flex-direction:column;align-items:center}
.user-pin{width:22px;height:22px;background:#3b82f6;border:3px solid #ffffff;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,0.3),0 4px 12px rgba(59,130,246,0.6);position:relative;z-index:2}
.user-pin::before{content:'';position:absolute;inset:-12px;border-radius:50%;background:rgba(59,130,246,0.35);animation:userPulse 2s ease-out infinite;z-index:1;pointer-events:none}
.user-pin-label{position:absolute;top:-26px;white-space:nowrap;background:rgba(15,23,42,0.92);color:#fff;font:800 11px/1 var(--font,sans-serif);padding:4px 8px;border-radius:999px;border:1px solid rgba(255,255,255,0.25);box-shadow:0 4px 12px rgba(0,0,0,0.4);pointer-events:none}
@keyframes userPulse{0%{transform:scale(0.8);opacity:0.85}100%{transform:scale(2.2);opacity:0}}
.leaflet-popup-content{margin:12px 14px;font:inherit}
.pop-venue{font-size:12px;color:var(--muted);margin:0 0 6px;font-weight:700}
.pop-list{max-height:min(260px,40vh);overflow-y:auto;margin:0 -4px;padding:0 4px}
.pop-item{display:block;text-align:left;width:100%;padding:8px 0;border-top:1px solid var(--line);min-height:44px}
.pop-item:first-child{border-top:0}
.pop-item strong{display:block;font-size:14px;line-height:1.3}
.pop-item span{display:block;font-size:12px;color:var(--muted);margin-top:2px}

/* Bottom sheet */
.bottom-sheet{position:fixed;left:0;right:0;bottom:0;height:min(82%,calc(100% - var(--header-h) - var(--safe-top) - 24px));background:var(--surface);border-radius:22px 22px 0 0;box-shadow:0 -8px 32px rgba(0,0,0,.16);z-index:1300;display:flex;flex-direction:column;padding-bottom:var(--safe-bottom);transition:transform .28s cubic-bezier(.2,.8,.2,1);will-change:transform}
.bottom-sheet.peek{transform:translateY(calc(100% - var(--peek) - var(--safe-bottom)))}
.bottom-sheet.expanded{transform:translateY(0)}
.bottom-sheet.dragging{transition:none}
.sheet-grab{cursor:grab;touch-action:none;flex-shrink:0;padding-top:8px}
.handle-bar{display:block;width:40px;height:5px;background:var(--border);border-radius:3px;margin:0 auto 8px}
.sheet-header{padding:0 16px 8px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.sheet-title{min-width:0}
.sheet-header h2{font-size:17px;font-weight:900;margin:0;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-header span{font-size:12px;color:var(--muted);display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.surprise-btn{background:var(--pink);color:#fff;font-weight:800;font-size:13px;height:40px;padding:0 14px;border-radius:20px;box-shadow:0 4px 14px rgba(255,56,92,.3);flex-shrink:0;white-space:nowrap}
@media (max-width:350px){.surprise-btn{font-size:0;width:40px;padding:0}.surprise-btn::before{content:'✦';font-size:16px}}
.chips{display:flex;gap:6px;overflow-x:auto;padding:2px 16px 10px;flex-shrink:0;scrollbar-width:none;border-bottom:1px solid var(--line)}
.chips::-webkit-scrollbar{display:none}
.chip{flex-shrink:0;height:34px;padding:0 12px;border-radius:17px;border:1px solid var(--border);background:var(--surface);font-size:13px;font-weight:700;white-space:nowrap}
.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.sheet-content{padding:4px 16px 16px;overflow-y:auto;flex:1;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.day-heading{position:sticky;top:0;background:var(--surface);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);padding:10px 0 4px;margin:0;z-index:1}
.nearby-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);text-align:left;width:100%;align-items:center;min-height:64px}
.nearby-item:active{background:var(--soft)}
.nearby-thumb{width:52px;height:52px;border-radius:12px;flex-shrink:0;display:grid;place-items:center;font-size:22px;color:#fff}
.nearby-info{flex:1;min-width:0}
.nearby-info h4{font-size:15px;font-weight:800;margin:0 0 3px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nearby-info p{font-size:12.5px;color:var(--muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag{display:inline-block;font-size:11px;font-weight:800;padding:2px 7px;border-radius:7px;margin-left:4px;vertical-align:1px}
.tag.free{background:var(--ok-bg);color:var(--ok)}.tag.sold{background:var(--bad-bg);color:var(--bad)}.tag.few{background:var(--warn-bg);color:var(--warn)}
.save-dot{color:var(--pink);font-size:15px;flex-shrink:0}
.more-btn{width:100%;height:44px;margin-top:10px;border-radius:12px;background:var(--soft);font-weight:800}
.data-status{font-size:11px;color:var(--muted);text-align:center;margin:14px 0 4px;line-height:1.4}
.empty{padding:20px 0;text-align:center;color:var(--muted);font-size:14px}


/* Chat */
.chat-toggle{position:fixed;right:14px;bottom:calc(var(--peek) + 12px + var(--safe-bottom));background:var(--pink);color:#fff;border-radius:24px;height:46px;padding:0 16px;font-weight:800;font-size:14px;z-index:1250;box-shadow:0 6px 20px rgba(255,56,92,.4);border:2px solid #fff;transition:opacity .2s,transform .2s}
body.sheet-open .chat-toggle,body.sheet-open .map-fab{opacity:0;pointer-events:none;transform:translateY(12px)}
.chat-panel{position:fixed;left:0;right:0;bottom:0;height:min(88%,640px);background:var(--surface);border-radius:22px 22px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.28);padding:14px 14px calc(10px + var(--safe-bottom));z-index:2000;display:flex;flex-direction:column}
.chat-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-shrink:0}
.chat-heading h2{font-size:19px;margin:0;font-weight:900}
.chat-heading small{font-size:11.5px;color:var(--muted);display:block;margin-top:2px}
.chat-log{margin:10px 0 8px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.chat-message{padding:9px 13px;border-radius:16px;font-size:14px;line-height:1.4;background:var(--soft);margin:6px 32px 6px 0;width:fit-content;max-width:100%}
.chat-message.user{background:var(--accent-soft);color:var(--accent-ink);font-weight:600;margin:6px 0 6px auto}
.chat-message.typing{color:var(--muted)}
.chat-results{margin:2px 0 8px;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.chat-result{display:block;padding:9px 12px;border-bottom:1px solid var(--line);width:100%;text-align:left;min-height:48px}
.chat-result:last-child{border-bottom:0}
.chat-result strong{display:block;font-size:14px;line-height:1.3}
.chat-result span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.chat-examples{display:flex;gap:6px;overflow-x:auto;flex-shrink:0;margin-bottom:8px;scrollbar-width:none}
.chat-examples::-webkit-scrollbar{display:none}
.chat-examples button{flex-shrink:0;font-size:12.5px;border:1px solid var(--border);padding:0 12px;border-radius:17px;height:34px;background:var(--soft);white-space:nowrap}
#chatForm{display:flex;gap:8px;border:1.5px solid var(--border);border-radius:16px;padding:4px 4px 4px 10px;background:var(--surface);flex-shrink:0}
#chatForm:focus-within{border-color:var(--pink)}
#chatInput{min-width:0;flex:1;border:0;outline:0;padding:8px 0;font-size:16px;background:transparent}/* 16px stops iOS zoom */
#chatSend{width:42px;height:42px;flex-shrink:0;border-radius:12px;background:var(--pink);color:#fff;font-size:20px;font-weight:800}
.chat-footer{display:flex;justify-content:space-between;flex-shrink:0}
.chat-footer .text-button{min-height:40px;font-size:13px}

/* Dialogs */
dialog{background:var(--surface);border:0;border-radius:22px;width:min(480px,calc(100vw - 24px));padding:20px;max-height:calc(100% - 32px);overflow-y:auto;box-shadow:0 20px 80px rgba(0,0,0,.25);color:var(--ink);overscroll-behavior:contain}
dialog::backdrop{background:rgba(20,24,35,.5)}
.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.dialog-heading h2{font-family:var(--display);font-size:21px;font-weight:700;margin:0;letter-spacing:-.3px}
.dialog-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap}
.close{font-size:24px;line-height:1;border-radius:50%;width:40px;height:40px;flex-shrink:0;background:var(--soft)}
.full-width{width:100%}
.divider{text-align:center;margin:16px 0;font-size:12px;color:var(--muted);position:relative}
.divider::before,.divider::after{content:'';position:absolute;top:50%;width:28%;height:1px;background:var(--line)}
.divider::before{left:0}.divider::after{right:0}
.city-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.city-grid button{background:var(--soft);border:1px solid var(--border);border-radius:14px;height:48px;font-weight:700;font-size:14px}
.city-grid button:active{background:var(--pink);color:#fff}
.primary{background:var(--pink);color:#fff;font-weight:800;padding:0 20px;height:48px;border-radius:14px}
.text-button{font-weight:700;color:var(--pink);min-height:44px;padding:0 6px}
.field{display:grid;gap:6px;font-size:13px;font-weight:700;margin-bottom:14px}
.field select{height:46px;border:1px solid var(--border);border-radius:12px;padding:0 10px;background:var(--surface);font-size:15px;font-weight:500}
.check{display:flex;align-items:center;gap:10px;font-size:15px;min-height:44px}
.check input{width:20px;height:20px;accent-color:var(--pink)}
.detail-hero{height:96px;border-radius:16px;display:grid;place-items:center;font-size:40px;color:#fff;margin-bottom:12px}
#detail h2{font-size:20px;line-height:1.25;margin:0 0 6px}
.detail-meta{display:grid;gap:8px;margin:14px 0;font-size:14px;color:var(--ink)}
.detail-meta div{display:flex;gap:10px}
.detail-meta b{width:20px;flex-shrink:0;text-align:center;color:var(--muted);font-weight:400}
.detail-note{font-size:12px;color:var(--muted);background:var(--soft);border-radius:10px;padding:8px 10px;margin:0}
.detail-footer{display:flex;gap:8px;margin-top:16px}
.detail-footer .primary{flex:1}
.ghost{height:48px;border-radius:14px;border:1px solid var(--border);padding:0 14px;font-weight:800;flex-shrink:0}
a.primary{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.featured-card{background:var(--soft);border:1px solid var(--line);border-radius:16px;padding:14px}
.featured-card h3{font-size:17px;margin:6px 0}
.featured-card p{margin:6px 0;font-size:14px;line-height:1.45}

#toast{position:fixed;top:calc(var(--header-h) + var(--safe-top) + 10px);left:50%;transform:translateX(-50%);background:var(--ink);color:var(--on-ink);padding:10px 18px;border-radius:20px;z-index:3000;max-width:calc(100% - 32px);font-size:13px;font-weight:600;box-shadow:0 4px 16px rgba(0,0,0,.3);opacity:0;pointer-events:none;transition:opacity .2s}
#toast.show{opacity:1}

/* Tablets / landscape: side panel instead of bottom sheet */
@media (min-width:768px){
  .bottom-sheet{left:auto;right:20px;bottom:20px;top:calc(var(--header-h) + var(--safe-top) + 20px);height:auto;width:390px;border-radius:22px;transform:none!important}
  .sheet-grab{cursor:default}.handle-bar{display:none}
  .chat-toggle{right:430px;bottom:24px}
  .map-fab{right:430px;bottom:84px}
  body.sheet-open .chat-toggle,body.sheet-open .map-fab{opacity:1;pointer-events:auto;transform:none}
  .chat-panel{left:auto;right:430px;bottom:20px;width:380px;border-radius:22px;height:min(80%,620px)}
}
@media (max-height:560px) and (max-width:767px){:root{--peek:128px}.chips,.segments{display:none}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- v0.4: date tabs, category chips, spotlight ---------- */
.segments{display:flex;gap:4px;padding:0 16px 8px;overflow-x:auto;scrollbar-width:none;flex-shrink:0}
.segments::-webkit-scrollbar{display:none}
.segments button{flex-shrink:0;height:34px;padding:0 12px;border-radius:10px;font-size:13px;font-weight:700;color:var(--muted);background:var(--soft)}
.segments button[aria-selected=true]{background:var(--ink);color:var(--on-ink)}
.seg-date{position:relative;flex-shrink:0;display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 10px;border-radius:10px;background:var(--soft);font-size:14px;cursor:pointer}
.seg-date.active{background:var(--ink);color:var(--on-ink)}
.seg-date.active::after{content:attr(data-label);font-size:13px;font-weight:700}
.seg-date input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.cat-chip{color:var(--ink);transition:background-color .25s,color .25s,border-color .25s}
.cat-chip span{filter:grayscale(1);opacity:.75;transition:filter .25s,opacity .25s}
.cat-chip small{font-size:11px;color:var(--muted);font-weight:700}
.cat-chip[aria-pressed=true]{background:var(--c);border-color:var(--c);color:#fff;animation:chipPop .28s ease-out}
.cat-chip[aria-pressed=true] span{filter:none;opacity:1}
.cat-chip[aria-pressed=true] small{color:rgba(255,255,255,.85)}
.free-chip[aria-pressed=true]{background:#0f766e;border-color:#0f766e;color:#fff}
@keyframes chipPop{0%{transform:scale(.94)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
.nearby-thumb{font-size:24px}
.nearby-thumb.small{width:40px;height:40px;border-radius:10px;font-size:18px}
.spot-row{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none}
.spot-row::-webkit-scrollbar{display:none}
.spot-card{flex:0 0 172px;display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;padding:10px 12px;border-radius:14px;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--c);min-height:92px}
.spot-card span{font-size:11.5px;font-weight:800;color:var(--muted)}
.spot-card strong{font-size:13.5px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.spot-card small{font-size:11.5px;color:var(--muted)}
.alert-banner{width:100%;margin:8px 0 2px;padding:10px 12px;border-radius:12px;background:var(--warn-bg);color:var(--warn);font-weight:800;font-size:13.5px;justify-content:flex-start;min-height:44px}

/* ---------- dialogs as bottom sheets on phones ---------- */
@media (max-width:767px){
  dialog.sheet-dialog{margin:auto 0 0;width:100%;max-width:100%;border-radius:22px 22px 0 0;max-height:92%;padding-bottom:calc(20px + var(--safe-bottom))}
}
.menu-list{display:grid;gap:4px}
.menu-list button{justify-content:flex-start;gap:14px;min-height:54px;padding:0 10px;border-radius:12px;font-size:16px;font-weight:700;text-align:left}
.menu-list button:active{background:var(--soft)}
.menu-list button span{width:28px;text-align:center;font-size:20px}
.menu-list small{margin-left:auto;color:var(--muted);font-weight:600;font-size:13px}
.cat-label{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:800;color:var(--c)}
.status-banner{margin:0 0 10px;padding:8px 12px;border-radius:10px;font-weight:800;font-size:14px}
.status-banner.bad{background:var(--bad-bg);color:var(--bad)}.status-banner.warn{background:var(--warn-bg);color:var(--warn)}
.action-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(46px,1fr));gap:5px;margin:14px 0 12px}
.action-row button{flex-direction:column;gap:3px;min-height:60px;padding:0 2px;border-radius:14px;background:var(--soft);font-size:11px;font-weight:700}
.action-row button span{font-size:19px;line-height:1}
.action-row button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-ink)}
.featured-card.reveal{border-left:5px solid var(--c);animation:reveal .35s ease-out}
.featured-card.shuffling{text-align:center;color:var(--muted)}
.featured-card.shuffling h3{opacity:.55;min-height:2.6em}
.spark{display:inline-block;font-size:22px;color:var(--pink);animation:spin 1s linear infinite}
@keyframes reveal{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
.dialog-actions .ghost{height:44px;padding:0 12px}
.ghost.danger{color:var(--bad);border-color:var(--bad);margin-top:12px}
.prose p{font-size:14px;line-height:1.5;margin:0 0 10px}
.warn-text{color:var(--warn)!important;font-weight:700}
.text-button.inline{min-height:0;padding:0 4px;font-size:14px}

/* Min kalender */
.mine-item{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--line);padding:6px 0}
.mine-main{flex:1;min-width:0;justify-content:flex-start;align-items:flex-start;gap:10px;text-align:left;padding:4px 0}
.mine-main>span:last-child{display:flex;flex-direction:column;min-width:0}
.mine-main strong{font-size:14.5px;line-height:1.25}
.mine-main small{font-size:12px;color:var(--muted);margin-top:2px}
.mine-actions{display:flex;gap:2px;flex-shrink:0}
.mine-actions button{width:38px;height:38px;border-radius:10px;font-size:16px}
.mine-actions button[aria-pressed=true]{background:var(--accent-soft)}

/* Når har du tid? */
.free-list{display:grid;gap:6px;margin:10px 0}
.free-slot{display:flex;justify-content:space-between;align-items:center;background:var(--soft);border-radius:12px;padding:4px 4px 4px 12px;font-size:15px}
.free-slot button{width:40px;height:40px}
.free-presets{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.free-presets button{height:36px;padding:0 12px;border-radius:18px;border:1px dashed var(--border);font-size:13px;font-weight:700}
.free-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.free-form select,.free-form input{height:44px;border:1px solid var(--border);border-radius:10px;padding:0 8px;background:var(--surface);font-size:15px}
.free-form select{flex:1 1 110px}
.free-form input{flex:0 1 96px}

/* Forms */
.field input,.field textarea{border:1px solid var(--border);border-radius:12px;padding:10px;font-size:15px;font-weight:500;background:var(--surface);width:100%;font-family:inherit}
.field input{height:46px}
fieldset.field{border:0;padding:0;margin:0 0 14px;min-width:0}
fieldset.field legend{padding:0;margin-bottom:6px}
.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 8px}
.check.small{font-size:13.5px;min-height:38px;gap:8px}
.check.small input{width:18px;height:18px;flex-shrink:0}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.two-col .field{min-width:0}

/* =================== v0.5 =================== */
.ico{width:20px;height:20px;flex-shrink:0}
h1,h2,h3,.display{font-family:var(--display)}
body{background:var(--bg);transition:background-color .3s}
.app-header,.bottom-sheet,dialog,.chat-panel,.tabbar,.chip,.icon-button{transition:background-color .3s,color .3s,border-color .3s}

/* views */
.view{position:absolute;top:calc(var(--header-h) + var(--safe-top));bottom:var(--tabbar-h);left:0;right:0}
body[data-view=home] #mapView,body[data-view=home] #nearbySheet,body[data-view=home] .map-only{display:none!important}
body[data-view=map] #homeView{display:none}
.map-container{bottom:var(--tabbar-h)}
.bottom-sheet{bottom:var(--tabbar-h);padding-bottom:0;height:min(80%,calc(100% - var(--header-h) - var(--safe-top) - var(--tabbar-h) - 16px))}
.bottom-sheet.peek{transform:translateY(calc(100% - var(--peek)))}
.map-fab{bottom:calc(var(--peek) + 74px)}

/* tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;height:var(--tabbar-h);padding-bottom:var(--safe-bottom);display:grid;grid-template-columns:repeat(4,1fr);background:var(--header-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);z-index:1600}
.tabbar button{flex-direction:column;gap:3px;font-size:11.5px;font-weight:700;color:var(--muted);position:relative}
.tabbar button .ico{width:23px;height:23px;transition:transform .25s}
.tabbar button[aria-current=page]{color:var(--pink)}
.tabbar button[aria-current=page] .ico{transform:translateY(-1px) scale(1.08)}
.tabbar button[aria-current=page]::before{content:'';position:absolute;top:0;width:28px;height:3px;border-radius:0 0 3px 3px;background:var(--pink)}
.tabbar .badge{top:6px;right:calc(50% - 22px)}

/* theme toggle */
.theme-btn .ico{transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
:root[data-theme=dark] .theme-btn .ico{transform:rotate(-40deg)}

/* ---------- home ---------- */
#homeView{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:96px}
.home-hello{padding:18px 18px 4px}
.home-hello small{display:block;font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.home-hello h1{font-size:30px;line-height:1.08;margin:4px 0 0;font-weight:800;letter-spacing:-.8px}
.home-hello h1 em{font-style:normal;background:linear-gradient(90deg,var(--pink),#ff8a3d 55%,#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent}

.hero{margin:14px 0 6px;position:relative}
.hero .swiper{padding:4px 0 34px;overflow:visible}
.hero .swiper-slide{width:84%;max-width:420px}
.slide{position:relative;display:block;width:100%;height:min(58vh,440px);min-height:330px;border-radius:28px;overflow:hidden;text-align:left;color:#fff;background:#222;box-shadow:0 18px 40px -12px rgba(0,0,0,.45);isolation:isolate}
.slide-img,.slide-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transform:scale(1.02);transition:transform 6s ease-out,opacity .6s}
.swiper-slide-active .slide-img,.swiper-slide-active .slide-art{transform:scale(1.12)}
.slide-img{opacity:0}.slide-img.loaded{opacity:1}
.slide::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(0,0,0,.35) 0%,rgba(0,0,0,0) 28%,rgba(0,0,0,.1) 48%,rgba(0,0,0,.82) 100%)}
.slide-top{position:absolute;top:14px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.slide-cat{display:inline-flex;align-items:center;gap:6px;padding:6px 11px 6px 6px;border-radius:20px;background:rgba(255,255,255,.18);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:12.5px;font-weight:800}
.slide-cat .bubble{width:26px;height:26px}
.slide-cat .bubble .ico{width:15px;height:15px}
.slide-when{padding:6px 11px;border-radius:20px;background:#fff;color:#111;font-size:12px;font-weight:800;white-space:nowrap}
.slide-when.live{background:var(--pink);color:#fff;animation:pulse 1.6s infinite}
.slide-body{position:absolute;left:0;right:0;bottom:0;padding:18px 18px 20px}
.slide-body h3{font-size:26px;line-height:1.08;margin:0 0 10px;font-weight:800;letter-spacing:-.5px;text-shadow:0 2px 12px rgba(0,0,0,.35);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.slide-meta{display:grid;gap:5px;font-size:13.5px;font-weight:600;opacity:.95}
.slide-meta span{display:flex;align-items:center;gap:7px;min-width:0}
.slide-meta span b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slide-meta .ico{width:16px;height:16px;opacity:.85}
.slide-foot{display:flex;justify-content:space-between;align-items:center;margin-top:14px;gap:8px}
.slide-price{padding:6px 12px;border-radius:14px;background:rgba(255,255,255,.18);backdrop-filter:blur(8px);font-size:12.5px;font-weight:800}
.slide-go{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:16px;background:#fff;color:#111;font-size:13px;font-weight:800}
.slide-go .ico{width:16px;height:16px}
.slide-credit{position:absolute;right:14px;top:52px;font-size:10px;opacity:.7;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.hero .swiper-pagination{bottom:6px!important}
.hero .swiper-pagination-bullet{width:7px;height:7px;background:var(--muted);opacity:.4;transition:width .3s,opacity .3s}
.hero .swiper-pagination-bullet-active{width:22px;border-radius:4px;background:var(--pink);opacity:1}
.hero-empty{margin:0 16px;padding:28px 18px;border-radius:24px;background:var(--surface);border:1px dashed var(--border);text-align:center;color:var(--muted)}

/* generated artwork when the organiser has no public image */
.slide-art{background:var(--c);background:
  radial-gradient(120% 80% at 110% 0%,rgba(255,255,255,.28),transparent 55%),
  radial-gradient(90% 70% at -10% 100%,rgba(0,0,0,.35),transparent 60%),
  linear-gradient(145deg,var(--c),color-mix(in srgb,var(--c) 55%,#000));display:grid;place-items:center;overflow:hidden}
.slide-art .ico{width:62%;height:62%;color:rgba(255,255,255,.14);transform:rotate(-12deg) translate(12%,-6%);stroke-width:1.2}
.slide-art::before,.slide-art::after{content:'';position:absolute;border-radius:50%;border:2px solid rgba(255,255,255,.12)}
.slide-art::before{width:70%;aspect-ratio:1;left:-20%;top:8%}
.slide-art::after{width:40%;aspect-ratio:1;right:-8%;bottom:30%;background:rgba(255,255,255,.06)}

/* quick actions */
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:8px 16px 4px}
.quick button{flex-direction:column;gap:6px;padding:12px 4px;border-radius:18px;background:var(--surface);border:1px solid var(--line);font-size:12px;font-weight:800;box-shadow:0 1px 0 rgba(0,0,0,.02)}
.quick button .q-ico{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;color:#fff;background:var(--c)}
.quick button:active{transform:scale(.96)}

.home-section{padding:18px 0 4px}
.home-section>header{display:flex;justify-content:space-between;align-items:baseline;padding:0 16px 10px}
.home-section h2{font-size:20px;margin:0;font-weight:800;letter-spacing:-.3px}
.home-section header button{color:var(--pink);font-weight:800;font-size:13px;min-height:32px}
.hscroll{display:flex;gap:12px;overflow-x:auto;padding:2px 16px 10px;scroll-snap-type:x mandatory;scrollbar-width:none}
.hscroll::-webkit-scrollbar{display:none}
.card{flex:0 0 210px;scroll-snap-align:start;display:flex;flex-direction:column;align-items:stretch;text-align:left;border-radius:20px;overflow:hidden;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.card-media{position:relative;height:118px;overflow:hidden;background:var(--soft);isolation:isolate}
.card-media .slide-img,.card-media .slide-art{transform:none}
.card-media .slide-art .ico{width:70%;height:70%}
.card-media .bubble{position:absolute;left:10px;bottom:10px;width:36px;height:36px;box-shadow:0 0 0 3px rgba(255,255,255,.85)}
.card-media .bubble .ico{width:18px;height:18px}
.card-body{padding:10px 12px 12px;display:grid;gap:3px}
.card-body strong{font-size:14.5px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-body small{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-body .when{color:var(--pink);font-weight:800}

.cat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px 4px;padding:2px 10px}
.cat-grid button{min-width:0;flex-direction:column;gap:6px;font-size:11.5px;font-weight:700;line-height:1.15;text-align:center;color:var(--ink)}
.cat-grid button .bubble{width:52px;height:52px;transition:transform .2s}
.cat-grid button .bubble .ico{width:24px;height:24px}
.cat-grid button:active .bubble{transform:scale(.9)}
.cat-grid small{color:var(--muted);font-weight:700}

.cta{margin:22px 16px 6px;padding:18px;border-radius:22px;color:#fff;background:linear-gradient(135deg,#6c4cf1,#ff385c);display:flex;gap:14px;align-items:center;text-align:left;width:calc(100% - 32px);box-shadow:0 14px 30px -12px rgba(108,76,241,.6)}
.cta .wizard{width:52px;flex-shrink:0;filter:drop-shadow(0 4px 10px rgba(0,0,0,.25))}
.cta strong{display:block;font-family:var(--display);font-size:18px}
.cta span{font-size:13px;opacity:.9}
.home-foot{padding:14px 20px 0}

/* ---------- category bubbles ---------- */
.bubble{--c:#666;display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;flex-shrink:0;color:#fff;background:var(--c);
  background:radial-gradient(circle at 30% 25%,color-mix(in srgb,var(--c) 70%,#fff),var(--c) 60%);box-shadow:inset 0 -3px 6px rgba(0,0,0,.18),0 3px 8px -2px color-mix(in srgb,var(--c) 60%,transparent)}
.bubble .ico{width:22px;height:22px}
.nearby-thumb{border-radius:50%;background:none;width:48px;height:48px}
.nearby-thumb .bubble{width:48px;height:48px}
.nearby-thumb.small,.nearby-thumb.small .bubble{width:38px;height:38px}
.nearby-thumb.small .ico{width:18px;height:18px}
.chip .ico{width:16px;height:16px}
.cat-chip .ico{color:var(--c);transition:color .25s}
.cat-chip[aria-pressed=true] .ico{color:#fff}
.cat-label .ico{width:16px;height:16px}

/* map bubble pins: teardrop with the category icon */
.bpin{position:absolute;left:0;top:0;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;cursor:pointer;filter:drop-shadow(0 4px 6px rgba(0,0,0,.3))}
.bpin-drop{--c:#555;width:40px;height:40px;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);display:grid;place-items:center;border:2.5px solid #fff;background:var(--c);
  background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--c) 65%,#fff),var(--c) 65%)}
.bpin-drop .ico{transform:rotate(45deg);width:19px;height:19px;color:#fff}
.bpin-count{position:absolute;top:-6px;right:-10px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--ink);color:var(--on-ink);font-size:11px;font-weight:800;display:grid;place-items:center;border:2px solid var(--surface)}
.bpin-label{margin-top:5px;padding:2px 7px;border-radius:8px;background:var(--surface);color:var(--ink);font-size:11px;font-weight:800;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.bpin.today .bpin-drop{animation:glow 2.2s infinite}
.bpin.saved .bpin-drop{border-color:var(--pink)}
.bpin.approx .bpin-drop{border-style:dashed;opacity:.9}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--c) 55%,transparent)}50%{box-shadow:0 0 0 9px transparent}}

/* ---------- wizard chat ---------- */
.wizard{width:100%;height:auto;display:block}
.chat-toggle{right:14px;bottom:calc(var(--tabbar-h) + var(--peek) + 12px);width:62px;height:62px;padding:0;border-radius:50%;border:0;font-size:0;
  background:radial-gradient(circle at 30% 25%,#8b70ff,#4a2fc4 70%);box-shadow:0 10px 26px -6px rgba(74,47,196,.7),inset 0 -4px 10px rgba(0,0,0,.25);z-index:1650}
.chat-toggle .wizard{width:42px;animation:bob 3.2s ease-in-out infinite;transform-origin:50% 80%}
/* old hint replaced by .wiz-tag */ .chat-toggle::after{content:none;position:absolute;right:68px;top:50%;transform:translateY(-50%);background:var(--surface);color:var(--ink);font-size:12.5px;font-weight:800;padding:6px 10px;border-radius:12px;box-shadow:var(--shadow);white-space:nowrap;opacity:0;animation:hint 7s 1.5s ease-in-out 1}
body[data-view=home] .chat-toggle{bottom:calc(var(--tabbar-h) + 16px)}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-3px) rotate(4deg)}}
@keyframes hint{0%,100%{opacity:0}10%,80%{opacity:1}}
.chat-panel{z-index:2000;background:var(--surface)}
.chat-heading{align-items:center}
.chat-heading .who{display:flex;align-items:center;gap:10px}
.chat-avatar{width:44px;height:44px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;background:radial-gradient(circle at 30% 25%,#8b70ff,#4a2fc4 70%)}
.chat-avatar .wizard{width:30px}
.chat-row{display:flex;gap:8px;align-items:flex-end}
.chat-row .chat-avatar{width:28px;height:28px;margin-bottom:6px}
.chat-row .chat-avatar .wizard{width:19px}
.chat-row .chat-message{margin-right:0}
.dlg-wizard{width:40px;height:40px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;background:radial-gradient(circle at 30% 25%,#8b70ff,#4a2fc4 70%);margin-left:auto}
.dlg-wizard .wizard{width:27px}
.dialog-heading .dlg-wizard + .close{margin-left:0}

/* ---------- event detail hero ---------- */
.detail-media{position:relative;margin:-20px -20px 14px;height:210px;overflow:hidden;border-radius:22px 22px 0 0;background:var(--soft);isolation:isolate}
.detail-media .slide-img,.detail-media .slide-art{transform:none}
.detail-media::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(0,0,0,.25),transparent 40%,transparent 70%,rgba(0,0,0,.25))}
.detail-media .dialog-heading{position:absolute;left:14px;right:14px;top:14px;z-index:2;margin:0}
.detail-media .close,.detail-media .dlg-wizard{box-shadow:0 2px 10px rgba(0,0,0,.25)}
.detail-media .close{background:rgba(255,255,255,.9);color:#111}
.detail-media .credit{position:absolute;right:12px;bottom:8px;z-index:2;font-size:10px;color:#fff;opacity:.85;text-shadow:0 1px 4px rgba(0,0,0,.7)}
.organizer{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:var(--soft);margin:0 0 12px;text-decoration:none;color:var(--ink)}
.organizer .ico{color:var(--muted)}
.organizer>span:not(.bubble){flex:1;min-width:0;font-size:13px}
.organizer b{display:block;font-size:14px}
#detail .action-row button .ico{width:20px;height:20px}

/* ---------- settings ---------- */
.set-group{margin:0 0 18px}
.set-group h3{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 8px;font-family:inherit}
.set-card{background:var(--soft);border-radius:16px;overflow:hidden}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;min-height:54px;border-bottom:1px solid var(--line);width:100%;text-align:left;font-size:15px;font-weight:600}
.set-row:last-child{border-bottom:0}
.set-row small{display:block;font-size:12px;color:var(--muted);font-weight:500;margin-top:2px}
.set-row .ico{color:var(--muted)}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;border-radius:14px;background:var(--soft)}
.seg3 button{flex-direction:column;gap:4px;padding:10px 4px;border-radius:11px;font-size:12.5px;font-weight:700;color:var(--muted)}
.seg3 button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.08)}
.switch{position:relative;width:48px;height:28px;flex-shrink:0;appearance:none;-webkit-appearance:none;background:var(--border);border-radius:14px;transition:background .2s;cursor:pointer;margin:0}
.switch::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s}
.switch:checked{background:var(--pink)}
.switch:checked::after{transform:translateX(20px)}
.about{font-size:12px;color:var(--muted);text-align:center;line-height:1.5;margin-top:6px}

/* ---------- dark map & popups ---------- */
:root[data-theme=dark] .leaflet-tile{filter:invert(1) hue-rotate(185deg) brightness(.92) contrast(.88) saturate(.55)!important}
:root[data-theme=dark] .leaflet-tile-pane{filter:none!important}
:root[data-theme=dark] .leaflet-container{background:var(--map-bg)}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--surface);color:var(--ink)}
.leaflet-bar a{background:var(--surface);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] .leaflet-control-attribution{background:rgba(22,25,30,.8);color:var(--muted)}
:root[data-theme=dark] .leaflet-control-attribution a{color:#9ab}
:root[data-theme=dark] .spot-card,:root[data-theme=dark] .card{box-shadow:none}
:root[data-theme=dark] .slide-when{background:#f1f1f1}

@media (min-width:768px){
  .chat-toggle{right:430px;bottom:calc(var(--tabbar-h) + 20px)}
  .map-fab{bottom:calc(var(--tabbar-h) + 90px)}
  .bottom-sheet{bottom:calc(var(--tabbar-h) + 16px)}
  .hero .swiper-slide{width:46%}
  #homeView{padding-left:max(0px,calc(50% - 480px));padding-right:max(0px,calc(50% - 480px))}
}
@media (max-width:350px){.quick{grid-template-columns:repeat(2,1fr)}.cat-grid{grid-template-columns:repeat(4,1fr)}}
.set-select{height:40px;border:1px solid var(--border);border-radius:10px;padding:0 8px;background:var(--surface);font-size:14px;font-weight:600}
.pop-ico .ico{width:15px;height:15px;vertical-align:-2px}
#sheetSub, #filterKindsTitle { display: none !important; }

/* Enhanced venue card in map popups */
.pop-venue-card { display: flex; flex-direction: column; gap: 8px; }
.pop-venue-head { display: flex; align-items: center; gap: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.pop-venue-img { width: 48px; height: 48px; flex: 0 0 48px; border-radius: 12px; overflow: hidden; background: var(--soft); }
.pop-venue-img img, .pop-venue-img .slide-img { width: 100%; height: 100%; object-fit: cover; }
.pop-venue-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pop-venue-title { font-size: 14px; font-weight: 800; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pop-venue-sub { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pop-venue-count { font-size: 10px; font-weight: 750; color: var(--dream-lilac); }
.pop-thumb { width: 28px; height: 28px; flex: 0 0 28px; border-radius: 8px; overflow: hidden; }
.pop-thumb img, .pop-thumb .slide-img { width: 100%; height: 100%; object-fit: cover; }
.pop-item-text { display: flex; flex-direction: column; min-width: 0; }
.pop-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 6px 4px; text-align: left; border: 0; background: transparent; color: var(--ink); border-radius: 8px; }
.pop-item:active { background: color-mix(in srgb, var(--ink) 8%, transparent); }
.bubble.small{width:36px;height:36px}.bubble.small .ico{width:18px;height:18px}
.chat-row .chat-message.typing{color:var(--muted)}
.detail-meta b .ico{width:18px;height:18px;vertical-align:-3px}
@media (max-width:767px){dialog#detailDialog{margin:auto 0 0;width:100%;max-width:100%;border-radius:22px 22px 0 0;max-height:94%}}
.bpin-head{position:relative;display:block}
.spot-card .ico{width:15px;height:15px;vertical-align:-3px}

/* ---------- v0.5.1: softer, stylised icons ---------- */
.ico{stroke-width:1.7}
.tabbar .ico,.icon-button .ico{stroke-width:1.6}
/* bubbles: pale tint of the category colour, icon drawn in the colour, soft glow */
.bubble{
  background:var(--soft);color:var(--c);
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 20%,var(--surface)) 0%,color-mix(in srgb,var(--c) 9%,var(--surface)) 100%);
  border:1px solid color-mix(in srgb,var(--c) 22%,transparent);
  box-shadow:0 6px 14px -8px color-mix(in srgb,var(--c) 70%,transparent),inset 0 1px 0 rgba(255,255,255,.55);
}
.bubble .ico{stroke-width:1.6;opacity:.92}
:root[data-theme=dark] .bubble{
  color:color-mix(in srgb,var(--c) 55%,#fff);
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 34%,var(--surface)),color-mix(in srgb,var(--c) 16%,var(--surface)));
  border-color:color-mix(in srgb,var(--c) 40%,transparent);box-shadow:0 6px 16px -8px color-mix(in srgb,var(--c) 80%,transparent)}
/* on photos: frosted glass */
.slide-cat .bubble,.card-media .bubble{background:rgba(255,255,255,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:0;color:var(--c);box-shadow:0 4px 12px rgba(0,0,0,.18)}
:root[data-theme=dark] .slide-cat .bubble,:root[data-theme=dark] .card-media .bubble{background:rgba(22,25,30,.72);color:color-mix(in srgb,var(--c) 55%,#fff)}
/* map pins: pale drop with a coloured rim and icon */
.bpin-drop{
  background:#fff;
  background:linear-gradient(150deg,#fff 10%,color-mix(in srgb,var(--c) 18%,#fff));
  border:2px solid color-mix(in srgb,var(--c) 70%,#fff)}
.bpin-drop .ico{color:var(--c);stroke-width:1.8}
:root[data-theme=dark] .bpin-drop{background:linear-gradient(150deg,#262a31,color-mix(in srgb,var(--c) 35%,#1a1d22));border-color:color-mix(in srgb,var(--c) 70%,#fff)}
:root[data-theme=dark] .bpin-drop .ico{color:color-mix(in srgb,var(--c) 50%,#fff)}
.bpin{filter:drop-shadow(0 4px 8px color-mix(in srgb,#000 25%,transparent))}
.bpin.saved .bpin-drop{border-color:var(--pink);border-width:2.5px}
/* home quick actions: same soft style */
.quick button .q-ico{background:color-mix(in srgb,var(--c) 14%,var(--surface));color:var(--c);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c) 20%,transparent)}
:root[data-theme=dark] .quick button .q-ico{background:color-mix(in srgb,var(--c) 26%,var(--surface));color:color-mix(in srgb,var(--c) 55%,#fff)}
.cat-grid button .bubble{width:50px;height:50px}
.detail-hero,.nearby-thumb .bubble{transition:transform .2s}
.nearby-item:active .bubble{transform:scale(.94)}
/* chips: colour only on the icon until selected */
.cat-chip[aria-pressed=true]{background:color-mix(in srgb,var(--c) 16%,var(--surface));border-color:color-mix(in srgb,var(--c) 45%,transparent);color:var(--ink)}
.cat-chip[aria-pressed=true] .ico{color:var(--c)}
.cat-chip[aria-pressed=true] small{color:var(--muted)}

/* ---------- v0.5.1: content that melts into the background ---------- */
#homeView{isolation:isolate;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 26px,#000 calc(100% - 44px),transparent 100%);
          mask-image:linear-gradient(to bottom,transparent 0,#000 26px,#000 calc(100% - 44px),transparent 100%)}
.hero-glow{position:absolute;left:0;right:0;top:0;height:640px;z-index:-1;pointer-events:none;overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.8) 40%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.8) 40%,transparent 100%)}
.hero-glow i{position:absolute;inset:-80px;background-size:cover;background-position:center;filter:blur(56px) saturate(1.6);opacity:0;transform:scale(1.15);transition:opacity 1.2s ease;will-change:opacity}
.hero-glow i.on{opacity:.5}
:root[data-theme=dark] .hero-glow i.on{opacity:.42}
.home-hello,.hero,.quick,.home-section,.cta,.home-foot{position:relative}
/* rows and slideshow fade out at their sides instead of being cut */
.hscroll,.hero{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18px,#000 calc(100% - 42px),transparent 100%);
               mask-image:linear-gradient(90deg,transparent 0,#000 18px,#000 calc(100% - 42px),transparent 100%)}
.hero{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%)}
/* cards shrink and soften as they slide towards the edge (scroll-driven, runs on the compositor) */
@supports (animation-timeline: view()) {
  .hscroll .card{animation:edgeSoft linear both;animation-timeline:view(inline);animation-range:cover 0% cover 100%}
  @keyframes edgeSoft{0%{opacity:.2;transform:scale(.9)}24%,76%{opacity:1;transform:none}100%{opacity:.2;transform:scale(.9)}}
}
.quick button,.card,.cat-grid .bubble{transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.card:active{transform:scale(.97)}
:root.reduce-motion .hscroll .card{animation:none}
:root.reduce-motion .hero-glow i{transition:none}


/* ---------- v0.5.3 ---------- */
/* nothing may push the page sideways */
html,body{overflow:hidden;overscroll-behavior:none;max-width:100%}
#homeView{overflow-x:hidden;overscroll-behavior-x:none}
.hero{overflow:hidden}
.hscroll{overscroll-behavior-x:contain;touch-action:pan-x pan-y}
.view,.bottom-sheet,.chat-panel,dialog{max-width:100vw}

/* gaussian edges: sharp centre feathered into a blurred copy of the same picture */
.slide-blur{position:absolute;inset:-40px;z-index:-2;background-size:cover;background-position:center;filter:blur(26px) saturate(1.35);transform:scale(1.1);opacity:0;transition:opacity .8s ease}
.slide-blur.on{opacity:1}
.slide-img{-webkit-mask-image:radial-gradient(ellipse 80% 74% at 50% 42%,#000 42%,rgba(0,0,0,.55) 68%,transparent 96%);
                   mask-image:radial-gradient(ellipse 80% 74% at 50% 42%,#000 42%,rgba(0,0,0,.55) 68%,transparent 96%)}
.card-media .slide-img,.detail-media .slide-img{-webkit-mask-image:radial-gradient(ellipse 88% 82% at 50% 45%,#000 40%,rgba(0,0,0,.5) 70%,transparent 100%);
                   mask-image:radial-gradient(ellipse 88% 82% at 50% 45%,#000 40%,rgba(0,0,0,.5) 70%,transparent 100%)}
.card-media .slide-blur{inset:-24px;filter:blur(18px) saturate(1.3)}
.slide-blur,.slide-img{transform-origin:50% 45%}
/* the card itself melts into the page at its bottom edge */
.card-media::after{content:'';position:absolute;left:0;right:0;bottom:0;height:34px;background:linear-gradient(transparent,var(--surface));z-index:0;pointer-events:none}
.card-media .bubble{z-index:1}

/* continuous glide: an even pace, no stop between slides */
.hero .swiper.gliding .swiper-wrapper,.hero .swiper.gliding .swiper-slide{transition-timing-function:linear!important}
.hero .swiper:not(.gliding) .swiper-wrapper,.hero .swiper:not(.gliding) .swiper-slide{transition-timing-function:cubic-bezier(.25,.8,.25,1)!important}
.swiper-slide-active .slide-img,.swiper-slide-active .slide-art,.swiper-slide-active .slide-blur{transform:scale(1.08);transition:transform 7s linear,opacity .8s}
.hero .slide{box-shadow:0 22px 50px -18px rgba(0,0,0,.55)}
.hero-glow i{transition:opacity 2.4s ease}

/* performance: blur only where it pays off */
.slide,.card{contain:paint}
.hero .swiper-slide{will-change:transform,opacity}

/* the wizard: the original colourful hat on its violet orb */
.cta .wiz-art .wizard{width:52px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.25))}
.chat-toggle::before{content:'';position:absolute;inset:-5px;border-radius:50%;border:1.5px solid rgba(139,112,255,.45);animation:ring 3.6s ease-out infinite;pointer-events:none}
@keyframes ring{0%{transform:scale(.92);opacity:.9}70%,100%{transform:scale(1.25);opacity:0}}
:root.reduce-motion .chat-toggle::before,:root.reduce-motion .chat-toggle .wizard{animation:none}


/* ---------- v0.5.4: frame-driven glide with gaussian edges ---------- */
.hero{overflow:hidden;-webkit-mask-image:none;mask-image:none;padding:6px 0 2px}
.glide{position:relative;height:min(60vh,460px);min-height:340px;touch-action:pan-y;outline:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.glide-track{position:absolute;inset:0}
/* every slide sits in the middle; home.js moves it with transform + opacity only */
.g-slide{position:absolute;top:0;bottom:0;left:50%;width:var(--gw,84%);margin-left:calc(var(--gw,84%) / -2);
  will-change:transform,opacity;backface-visibility:hidden;contain:layout paint style;
  --fh:clamp(26px,11%,46px);--fv:clamp(34px,11%,58px);
  --gauss-x:linear-gradient(90deg,rgba(0,0,0,0.000) calc(var(--fh)*0.000),rgba(0,0,0,0.013) calc(var(--fh)*0.083),rgba(0,0,0,0.042) calc(var(--fh)*0.167),rgba(0,0,0,0.101) calc(var(--fh)*0.250),rgba(0,0,0,0.199) calc(var(--fh)*0.333),rgba(0,0,0,0.336) calc(var(--fh)*0.417),rgba(0,0,0,0.500) calc(var(--fh)*0.500),rgba(0,0,0,0.664) calc(var(--fh)*0.583),rgba(0,0,0,0.801) calc(var(--fh)*0.667),rgba(0,0,0,0.899) calc(var(--fh)*0.750),rgba(0,0,0,0.958) calc(var(--fh)*0.833),rgba(0,0,0,0.987) calc(var(--fh)*0.917),rgba(0,0,0,1.000) calc(var(--fh)*1.000),rgba(0,0,0,1.000) calc(100% - var(--fh)*1.000),rgba(0,0,0,0.987) calc(100% - var(--fh)*0.917),rgba(0,0,0,0.958) calc(100% - var(--fh)*0.833),rgba(0,0,0,0.899) calc(100% - var(--fh)*0.750),rgba(0,0,0,0.801) calc(100% - var(--fh)*0.667),rgba(0,0,0,0.664) calc(100% - var(--fh)*0.583),rgba(0,0,0,0.500) calc(100% - var(--fh)*0.500),rgba(0,0,0,0.336) calc(100% - var(--fh)*0.417),rgba(0,0,0,0.199) calc(100% - var(--fh)*0.333),rgba(0,0,0,0.101) calc(100% - var(--fh)*0.250),rgba(0,0,0,0.042) calc(100% - var(--fh)*0.167),rgba(0,0,0,0.013) calc(100% - var(--fh)*0.083),rgba(0,0,0,0.000) calc(100% - var(--fh)*0.000));
  --gauss-y:linear-gradient(180deg,rgba(0,0,0,0.000) calc(var(--fv)*0.000),rgba(0,0,0,0.013) calc(var(--fv)*0.083),rgba(0,0,0,0.042) calc(var(--fv)*0.167),rgba(0,0,0,0.101) calc(var(--fv)*0.250),rgba(0,0,0,0.199) calc(var(--fv)*0.333),rgba(0,0,0,0.336) calc(var(--fv)*0.417),rgba(0,0,0,0.500) calc(var(--fv)*0.500),rgba(0,0,0,0.664) calc(var(--fv)*0.583),rgba(0,0,0,0.801) calc(var(--fv)*0.667),rgba(0,0,0,0.899) calc(var(--fv)*0.750),rgba(0,0,0,0.958) calc(var(--fv)*0.833),rgba(0,0,0,0.987) calc(var(--fv)*0.917),rgba(0,0,0,1.000) calc(var(--fv)*1.000),rgba(0,0,0,1.000) calc(100% - var(--fv)*1.000),rgba(0,0,0,0.987) calc(100% - var(--fv)*0.917),rgba(0,0,0,0.958) calc(100% - var(--fv)*0.833),rgba(0,0,0,0.899) calc(100% - var(--fv)*0.750),rgba(0,0,0,0.801) calc(100% - var(--fv)*0.667),rgba(0,0,0,0.664) calc(100% - var(--fv)*0.583),rgba(0,0,0,0.500) calc(100% - var(--fv)*0.500),rgba(0,0,0,0.336) calc(100% - var(--fv)*0.417),rgba(0,0,0,0.199) calc(100% - var(--fv)*0.333),rgba(0,0,0,0.101) calc(100% - var(--fv)*0.250),rgba(0,0,0,0.042) calc(100% - var(--fv)*0.167),rgba(0,0,0,0.013) calc(100% - var(--fv)*0.083),rgba(0,0,0,0.000) calc(100% - var(--fv)*0.000));
  -webkit-mask-image:var(--gauss-x),var(--gauss-y);-webkit-mask-composite:source-in;
          mask-image:var(--gauss-x),var(--gauss-y);mask-composite:intersect}
/* no rounded frame, no shadow: the picture simply dissolves into the page and into its neighbours */
.g-slide .slide{height:100%;min-height:0;border-radius:0;box-shadow:none;background:transparent;contain:paint}
.g-slide .slide-img,.g-slide .slide-art{-webkit-mask-image:none;mask-image:none;transform:scale(1.14);transition:opacity .9s ease;will-change:transform;left:-8%;right:-8%;width:116%}
.g-slide .slide-blur{display:none}
.g-slide .slide::after{background:linear-gradient(180deg,rgba(0,0,0,.28) 0%,rgba(0,0,0,0) 26%,rgba(0,0,0,.08) 46%,rgba(0,0,0,.78) 100%)}
.g-slide .slide-top{top:40px;left:30px;right:30px}
.g-slide .slide-body{padding:18px 32px 50px;will-change:transform}
.g-slide .slide-body h3{font-size:25px}
/* glass chips re-blur whatever moves behind them every frame – solid tints look the same and cost nothing */
.g-slide .slide-cat,.g-slide .slide-price,.g-slide .slide-cat .bubble{backdrop-filter:none;-webkit-backdrop-filter:none}
.g-slide .slide-cat,.g-slide .slide-price{background:rgba(20,20,24,.42)}
.g-slide .slide-cat .bubble{background:rgba(255,255,255,.86)}
:root[data-theme=dark] .g-slide .slide-cat .bubble{background:rgba(22,25,30,.82)}
.glide.reduce .slide-img,.glide.reduce .slide-art{transform:none;left:0;right:0;width:100%}
/* dots: the active one fills up as the slide glides on */
.glide-dots{display:flex;justify-content:center;gap:7px;padding:8px 0 4px}
.gdot{width:7px;height:7px;padding:0;border:0;border-radius:4px;background:color-mix(in srgb,var(--muted) 45%,transparent);overflow:hidden;position:relative;transition:width .5s cubic-bezier(.2,.8,.2,1),background .5s}
.gdot.on{width:26px;background:color-mix(in srgb,var(--pink) 30%,transparent)}
.gdot i{position:absolute;inset:0;background:var(--pink);transform-origin:0 50%;transform:scaleX(0)}
.gdot.on i{transform:scaleX(calc(.25 + var(--p,0) * .75))}
.hero-glow i{will-change:opacity}

/* "Spør meg!" rides along with the wizard bubble */
.chat-toggle{overflow:visible}
.wiz-tag{position:absolute;right:calc(100% - 6px);top:50%;z-index:-1;height:32px;display:flex;align-items:center;
  padding:0 14px 0 13px;border-radius:16px 4px 4px 16px;white-space:nowrap;font:800 13px/1 Outfit,Inter,sans-serif;letter-spacing:.1px;
  color:#fff;background:#5b3fd8;background:linear-gradient(90deg,#7a5cff,#4a2fc4);border:0;
  box-shadow:0 8px 22px -8px rgba(74,47,196,.75);text-shadow:0 1px 2px rgba(0,0,0,.25);
  transform:translateY(-50%);animation:tagIn .9s .6s cubic-bezier(.2,.9,.2,1) both}
@keyframes tagIn{from{opacity:0;transform:translate(26px,-50%) scale(.85)}to{opacity:1;transform:translateY(-50%)}}
.chat-toggle[aria-expanded=true] .wiz-tag{opacity:0;transform:translate(20px,-50%);transition:.3s}
:root.reduce-motion .wiz-tag{animation:none}
.slide-cat{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wiz-tag{transition:opacity .35s ease,transform .45s cubic-bezier(.2,.9,.2,1)}
body.scrolling .wiz-tag{opacity:0;transform:translate(22px,-50%) scale(.88)}

/* ---------- v0.5.4: Min kalender ---------- */
body[data-view=mine] #homeView,body[data-view=mine] #mapView,body[data-view=mine] #nearbySheet,body[data-view=mine] .map-only{display:none!important}
body:not([data-view=mine]) #mineView{display:none}
#mineView{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 16px 110px;
  background:radial-gradient(120% 60% at 100% 0%,color-mix(in srgb,var(--pink) 10%,transparent),transparent 60%),radial-gradient(90% 50% at 0% 10%,color-mix(in srgb,#7c3aed 10%,transparent),transparent 60%)}
.cal-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:18px 2px 12px}
.cal-head small{display:block;font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.cal-head h1{font-size:30px;line-height:1.08;margin:4px 0 0;font-weight:800;letter-spacing:-.8px}
.cal-today{border:0;border-radius:16px;padding:8px 14px;font-weight:800;font-size:13px;background:var(--soft);color:var(--ink)}
.cal-panel{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:12px 10px 10px;box-shadow:var(--shadow);overflow:hidden}
.cal-nav{display:flex;align-items:center;justify-content:space-between;padding:0 2px 8px}
.cal-nav h2{margin:0;font-size:18px;font-weight:800;text-transform:capitalize;letter-spacing:-.3px}
.cal-nav button{width:38px;height:38px;border-radius:50%;border:0;background:var(--soft);color:var(--ink);display:grid;place-items:center}
.cal-nav .ico{width:20px;height:20px}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;touch-action:pan-y}
.cal-grid.slide-l{animation:calL .38s cubic-bezier(.2,.8,.2,1)}
.cal-grid.slide-r{animation:calR .38s cubic-bezier(.2,.8,.2,1)}
@keyframes calL{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes calR{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
.cal-wd{text-align:center;font-size:11.5px;font-weight:800;color:var(--muted);padding:2px 0 4px;letter-spacing:.3px}
.cal-day{position:relative;border:0;background:transparent;color:var(--ink);border-radius:14px;min-height:52px;padding:6px 0 4px;display:flex;flex-direction:column;align-items:center;gap:3px;
  transition:background .25s,transform .2s cubic-bezier(.2,.8,.2,1)}
.cal-day:active{transform:scale(.92)}
.cal-num{font-size:14.5px;font-weight:700;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;transition:background .25s,color .25s}
.cal-day.out{opacity:.32}
.cal-day.past .cal-num{color:var(--muted)}
.cal-day.today .cal-num{box-shadow:inset 0 0 0 2px var(--pink);color:var(--pink);font-weight:800}
.cal-day.sel{background:color-mix(in srgb,var(--pink) 12%,transparent)}
.cal-day.sel .cal-num{background:var(--pink);color:#fff;box-shadow:0 6px 14px -6px var(--pink)}
.cal-day.has:not(.sel){background:color-mix(in srgb,var(--soft) 70%,transparent)}
.cal-day.noted::after{content:'';position:absolute;top:6px;right:7px;width:5px;height:5px;border-radius:50%;background:#f5b400}
.cal-dots{display:flex;align-items:center;justify-content:center;height:14px}
.cal-dots i{width:14px;height:14px;border-radius:50%;display:grid;place-items:center;margin-left:-3px;color:#fff;
  background:radial-gradient(circle at 30% 25%,color-mix(in srgb,var(--c) 70%,#fff),var(--c));box-shadow:0 0 0 1.5px var(--surface)}
.cal-dots i:first-child{margin-left:0}
.cal-dots i .ico{width:8px;height:8px;stroke-width:2.6}
.cal-dots b{font-size:9.5px;font-weight:800;color:var(--muted);margin-left:2px}

.cal-day-panel{margin-top:14px;background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:16px;box-shadow:var(--shadow);scroll-margin-top:12px}
.cal-day-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cal-day-head h2{margin:0;font-size:18px;font-weight:800;letter-spacing:-.3px}
.cal-day-head h2::first-letter{text-transform:uppercase}
.cal-pill{font-size:11.5px;font-weight:800;color:#fff;background:var(--pink);padding:3px 9px;border-radius:10px}
.cal-bubbles{display:flex;gap:14px;overflow-x:auto;padding:10px 12px 8px;margin:-6px -12px 0;scrollbar-width:none}
.cal-bubbles::-webkit-scrollbar{display:none}
.cal-bubble{position:relative;border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0;color:var(--ink);
  animation:bubIn .5s cubic-bezier(.2,.9,.25,1.2) both}
.cal-bubble:nth-child(2){animation-delay:.05s}.cal-bubble:nth-child(3){animation-delay:.1s}.cal-bubble:nth-child(4){animation-delay:.15s}.cal-bubble:nth-child(5){animation-delay:.2s}
@keyframes bubIn{from{opacity:0;transform:scale(.6) translateY(8px)}to{opacity:1;transform:none}}
.cal-bubble small{font-size:12px;font-weight:800;color:var(--muted)}
.cal-bubble .cal-thumb{width:64px;height:64px;transition:transform .35s cubic-bezier(.2,.9,.25,1.2),box-shadow .35s}
.cal-bubble.open .cal-thumb{transform:scale(1.1);box-shadow:0 0 0 3px var(--surface),0 0 0 5.5px var(--c),0 12px 24px -10px var(--c)}
.cal-bubble:active .cal-thumb{transform:scale(.94)}
.cal-bubble-badge{position:absolute;top:44px;right:-4px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--c);box-shadow:0 0 0 2.5px var(--surface)}
.cal-bubble-badge .ico{width:13px;height:13px}
.cal-bubble-note{position:absolute;top:-2px;left:-2px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#f5b400;color:#fff;box-shadow:0 0 0 2px var(--surface)}
.cal-bubble-note .ico{width:11px;height:11px}
/* the round picture: category art underneath, the organiser's image fades in on top */
.cal-thumb{--c:#888;position:relative;display:block;border-radius:50%;overflow:hidden;flex-shrink:0;isolation:isolate;
  background:radial-gradient(circle at 30% 25%,color-mix(in srgb,var(--c) 65%,#fff),var(--c) 70%);box-shadow:0 0 0 3px var(--surface),0 0 0 4.5px color-mix(in srgb,var(--c) 55%,transparent),0 10px 20px -12px var(--c)}
.cal-thumb-art{position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,255,255,.9)}
.cal-thumb-art .ico{width:46%;height:46%}
.cal-thumb-img{position:absolute;inset:0;background-size:cover;background-position:center;animation:imgIn .6s ease both}
@keyframes imgIn{from{opacity:0;transform:scale(1.08)}to{opacity:1;transform:none}}
.cal-thumb.sm{width:40px;height:40px}
.cal-thumb.big{width:84px;height:84px;border-radius:22px}
.cal-hint{margin:6px 0 4px;color:var(--muted);font-size:13.5px}
.cal-card{--ox:50%;margin:8px 0 4px;padding:14px;border-radius:20px;border:1px solid color-mix(in srgb,var(--c) 30%,var(--line));
  background:linear-gradient(160deg,color-mix(in srgb,var(--c) 11%,var(--surface)),var(--surface) 60%)}
.cal-card.pop{animation:cardPop .45s cubic-bezier(.2,.9,.25,1.05) both;transform-origin:var(--ox) 0}
@keyframes cardPop{from{opacity:0;transform:scale(.85) translateY(-10px)}to{opacity:1;transform:none}}
.cal-card-top{display:flex;gap:14px;align-items:flex-start}
.cal-card-info{min-width:0;display:flex;flex-direction:column;gap:4px}
.cal-card-info strong{font-size:16.5px;line-height:1.2;font-weight:800;letter-spacing:-.2px}
.cal-card-info small{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;font-weight:600;min-width:0}
.cal-card-info small .ico{width:14px;height:14px;flex-shrink:0}
.cal-card-cat{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--c)}
.cal-card-cat .bubble{width:22px;height:22px}.cal-card-cat .bubble .ico{width:12px;height:12px}
:root[data-theme=dark] .cal-card-cat{color:color-mix(in srgb,var(--c) 55%,#fff)}
.cal-note{display:block;margin-top:12px}
.cal-note span{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--muted);margin-bottom:6px}
.cal-note .ico{width:14px;height:14px}
.cal-note textarea{width:100%;box-sizing:border-box;resize:none;font:500 14.5px/1.4 Inter,sans-serif;color:var(--ink);background:var(--soft);border:1px solid transparent;border-radius:14px;padding:10px 12px;
  field-sizing:content;min-height:46px;max-height:160px;transition:border-color .2s,background .2s}
.cal-note textarea:focus{outline:none;border-color:color-mix(in srgb,var(--pink) 50%,transparent);background:var(--surface)}
.cal-note.day{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line)}
.cal-card-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:12px}
.cal-card-actions button{border:0;border-radius:14px;padding:9px 2px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11.5px;font-weight:800;background:var(--soft);color:var(--ink)}
.cal-card-actions .ico{width:18px;height:18px}
.cal-card-actions [aria-pressed=true]{background:color-mix(in srgb,var(--pink) 16%,transparent);color:var(--pink)}
.cal-card-actions .danger{color:#d9304f}
.cal-empty{text-align:center;padding:8px 0 2px;color:var(--muted)}
.cal-empty-ico{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--soft);color:var(--muted)}
.cal-empty-ico .ico{width:24px;height:24px}
.cal-empty p{margin:8px 0 10px;font-weight:600}
.cal-find{border:0;border-radius:16px;padding:9px 16px;font-weight:800;font-size:13.5px;background:var(--pink);color:#fff;display:inline-flex;align-items:center;gap:6px;box-shadow:0 8px 18px -8px var(--pink)}
.cal-find .ico{width:16px;height:16px}
.cal-sub{margin:20px 4px 8px;font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.cal-next{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.cal-next button{min-width:0;display:flex;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:18px;padding:10px 12px}
.cal-next strong{display:block;font-size:14.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-next span{min-width:0}
.cal-next small{color:var(--muted);font-weight:600;font-size:12.5px}
.cal-intro{margin:18px 6px;color:var(--muted);text-align:center;line-height:1.5}
.detail-mynote{display:flex;gap:8px;align-items:flex-start;background:color-mix(in srgb,#f5b400 14%,var(--surface));border-radius:14px;padding:10px 12px;font-size:14px;margin:10px 0}
.detail-mynote .ico{width:16px;height:16px;color:#c98f00;flex-shrink:0;margin-top:2px}
.detail-mynote span{white-space:pre-wrap}
:root.reduce-motion .cal-bubble,:root.reduce-motion .cal-card.pop,:root.reduce-motion .cal-grid,:root.reduce-motion .cal-thumb-img{animation:none}
body[data-view=mine] .chat-toggle{bottom:calc(var(--tabbar-h) + 16px)}

/* ---------- v0.5.5: scales from phone to tablet to desktop ---------- */
:root{--sea:#cfe3ec;--land:#f3f1ea;--land-edge:#b9cdd6;--place:#5b6770}
:root[data-theme=dark]{--sea:#0b131a;--land:#232a31;--land-edge:#34424e;--place:#9aa6b0}
#map.basemap{background:var(--sea)}
.basemap-land{fill:var(--land);stroke:var(--land-edge);stroke-width:1.2}
.town-label{font:700 12px/1 Outfit,Inter,sans-serif;color:var(--place);white-space:nowrap;text-shadow:0 0 3px var(--land),0 0 6px var(--land);pointer-events:none;transform:translate(-50%,-50%);width:max-content}
.town-label.big{font-size:13.5px;letter-spacing:.2px}
.glide-arrow{display:none}

@media (min-width:768px) and (max-width:1023px){
  #mineView{padding-left:max(16px,calc(50% - 330px));padding-right:max(16px,calc(50% - 330px))}
  body:not([data-view=map]) .chat-toggle{right:18px}
  body:not([data-view=map]) .chat-panel{right:18px}
}

@media (min-width:1024px){
  :root{--tabbar-h:0px;--header-h:64px}
  /* the tab bar becomes the site navigation in the header */
  .tabbar{top:0;bottom:auto;left:50%;right:auto;transform:translateX(-50%);height:var(--header-h);padding:0;display:flex;align-items:center;gap:4px;
    background:none;backdrop-filter:none;-webkit-backdrop-filter:none;border:0;box-shadow:none;z-index:1300}
  .tabbar button{flex-direction:row;gap:8px;font-size:14px;padding:9px 16px;border-radius:14px;min-height:0;transition:background .2s,color .2s}
  .tabbar button .ico{width:19px;height:19px}
  .tabbar button::before{display:none!important}
  .tabbar button:hover{background:var(--soft);color:var(--ink)}
  .tabbar button[aria-current=page]{background:color-mix(in srgb,var(--pink) 13%,transparent);color:var(--pink)}
  .tabbar .badge{position:static;margin-left:2px}
  .app-header{padding-left:24px;padding-right:24px}
  .view{bottom:0}

  /* home: a centred page with room to breathe */
  #homeView{padding-left:max(24px,calc(50% - 620px));padding-right:max(24px,calc(50% - 620px));padding-bottom:64px}
  .home-hello{padding:34px 8px 6px}
  .home-hello h1{font-size:46px;letter-spacing:-1.4px}
  .glide{height:min(64vh,540px)}
  .g-slide .slide-body h3{font-size:32px}
  .g-slide .slide-body{padding:18px 44px 56px}
  .g-slide .slide-top{left:40px;right:40px}
  .quick{padding:14px 8px 4px;gap:14px}
  .quick button{flex-direction:row;justify-content:center;gap:12px;min-height:64px;font-size:15px}
  .home-section{padding-top:30px}
  .home-section>header{padding:0 8px 14px}
  .home-section h2{font-size:24px}
  .hscroll{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));overflow:visible;padding:2px 8px 10px;-webkit-mask-image:none;mask-image:none;scroll-snap-type:none}
  .hscroll .card{animation:none}
  .cat-grid{grid-template-columns:repeat(10,minmax(0,1fr));padding:2px 8px}
  .cta{max-width:760px;margin-left:auto;margin-right:auto}

  /* map: list panel on the right, full height */
  .bottom-sheet{bottom:20px}
  .map-fab{bottom:24px}

  /* chat: floating bottom-right, next to the list on the map */
  .chat-toggle,body[data-view=home] .chat-toggle,body[data-view=mine] .chat-toggle{right:28px;bottom:28px}
  body[data-view=map] .chat-toggle{right:434px}
  .chat-panel{right:28px;bottom:24px}
  body[data-view=map] .chat-panel{right:434px}

  /* calendar: month on the left, the chosen day beside it */
  #mineView{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-areas:"head head" "cal day" "cal next";
    column-gap:24px;align-content:start;padding:0 max(24px,calc(50% - 560px)) 64px}
  .cal-head{grid-area:head;padding-top:34px}
  .cal-head h1{font-size:40px}
  .cal-panel{grid-area:cal;align-self:start;position:sticky;top:20px;padding:18px 16px 14px}
  .cal-day{min-height:72px}
  .cal-num{font-size:16px;width:32px;height:32px}
  .cal-dots i{width:17px;height:17px}.cal-dots i .ico{width:10px;height:10px}
  #calDay{grid-area:day;margin-top:0}
  #calNext{grid-area:next}

  dialog#detailDialog{width:min(560px,calc(100vw - 48px))}
}

/* mouse and trackpad niceties */
@media (hover:hover) and (pointer:fine){
  .glide-arrow{display:grid;place-items:center;position:absolute;top:50%;z-index:80;width:48px;height:48px;margin-top:-24px;border-radius:50%;border:0;
    background:color-mix(in srgb,var(--surface) 82%,transparent);color:var(--ink);box-shadow:var(--shadow);opacity:0;transition:opacity .25s,transform .25s;cursor:pointer}
  .glide-arrow .ico{width:22px;height:22px}
  .glide-arrow.prev{left:max(12px,calc(50% - var(--gw,400px) / 2 - 64px))}
  .glide-arrow.next{right:max(12px,calc(50% - var(--gw,400px) / 2 - 64px))}
  .glide:hover .glide-arrow,.glide:focus-within .glide-arrow{opacity:1}
  .glide-arrow:hover{transform:scale(1.08)}
  .glide{cursor:grab}.glide:active{cursor:grabbing}
  .g-slide img{-webkit-user-drag:none}
  .card{transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s}
  .card:hover{transform:translateY(-4px);box-shadow:0 18px 34px -18px rgba(0,0,0,.45)}
  .quick button:hover,.cat-grid button:not(:disabled):hover .bubble{transform:translateY(-2px)}
  .cal-day:not(.sel):hover{background:var(--soft)}
  .cal-bubble:hover .cal-thumb{transform:scale(1.06)}
  .cal-next button:hover,.cal-card-actions button:hover,.cal-nav button:hover,.cal-today:hover{filter:brightness(1.06)}
  .slide-go{transition:transform .2s}.slide:hover .slide-go{transform:translateX(3px)}
  *{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 45%,transparent) transparent}
}
:focus-visible{outline:2px solid var(--pink);outline-offset:2px}
#map.has-tiles .town-label{display:none}

/* =================== v0.6: Bypulsen =================== */
:root{--pulse-pink:#a87998;--pulse-violet:#8172a8;--pulse-cyan:#5fa9b1;--ease-spring:cubic-bezier(.16,1,.3,1)}
body::before{content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(70% 42% at 18% 12%,rgba(255,61,112,.10),transparent 72%),radial-gradient(58% 48% at 92% 32%,rgba(34,211,238,.07),transparent 76%),radial-gradient(70% 54% at 52% 108%,rgba(139,92,246,.08),transparent 74%)}
:root[data-theme=dark] body::after{content:'';position:fixed;inset:0;z-index:-1;opacity:.19;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");mix-blend-mode:soft-light}
.tabbar{grid-template-columns:repeat(3,1fr);left:12px;right:12px;bottom:calc(8px + var(--safe-bottom));height:58px;padding:0;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:22px;background:color-mix(in srgb,var(--header-bg) 88%,transparent);box-shadow:0 18px 46px rgba(0,0,0,.28);overflow:hidden}
.tabbar button{transition:color .28s,transform .28s var(--ease-spring),background .28s}.tabbar button[aria-current=page]{background:linear-gradient(180deg,color-mix(in srgb,var(--pink) 12%,transparent),transparent);transform:translateY(-1px)}
.tabbar button[aria-current=page]::before{top:auto;bottom:0;width:34px;height:2px;border-radius:3px 3px 0 0;box-shadow:0 -4px 14px var(--pink)}
.home-hello{padding-top:16px}.pulse-caption{display:inline-flex;align-items:center;gap:7px;margin-top:10px;font:800 10px/1 var(--display);letter-spacing:1.5px;color:color-mix(in srgb,var(--pink) 82%,var(--ink))}
.pulse-caption i{width:7px;height:7px;border-radius:50%;background:var(--pink);animation:cityBeat 2.2s ease-out infinite}@keyframes cityBeat{0%{box-shadow:0 0 0 0 rgba(255,61,112,.55)}55%,100%{box-shadow:0 0 0 11px rgba(255,61,112,0)}}
.moment-bar{position:relative;isolation:isolate;width:calc(100% - 32px);margin:8px 16px 10px;min-height:70px;padding:10px 14px 10px 10px;justify-content:flex-start;gap:12px;text-align:left;border-radius:22px;color:var(--ink);overflow:hidden;background:linear-gradient(120deg,color-mix(in srgb,var(--surface) 88%,var(--pulse-violet)),color-mix(in srgb,var(--surface) 92%,var(--pulse-pink)));border:1px solid color-mix(in srgb,var(--pulse-violet) 28%,var(--line));box-shadow:0 16px 42px -28px var(--pulse-violet)}
.moment-bar::before{content:'';position:absolute;width:190px;height:190px;right:-55px;top:-75px;z-index:-1;border-radius:50%;background:conic-gradient(from 90deg,transparent,var(--pulse-cyan),var(--pulse-violet),var(--pulse-pink),transparent);filter:blur(32px);opacity:.20;animation:auroraTurn 9s linear infinite}
.moment-orb{position:relative;width:48px;height:48px;flex:0 0 48px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 28%,#fff 0 3%,#ff8bab 12%,#ff3d70 34%,#7139df 68%,#16191e 100%);box-shadow:0 0 18px rgba(255,61,112,.38),0 0 38px rgba(139,92,246,.22)}
.moment-orb::before,.moment-orb::after{content:'';position:absolute;border:1px solid rgba(255,255,255,.28);border-radius:50%;animation:orbRing 3.2s ease-out infinite}.moment-orb::before{inset:-4px}.moment-orb::after{inset:-10px;animation-delay:1.15s}.moment-orb i{width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 12px #fff}
.moment-bar small{display:block;font-size:9px;letter-spacing:1.4px;color:var(--muted);font-weight:900}.moment-bar strong{display:block;margin-top:3px;font-size:15px}.moment-arrow{margin-left:auto;font-size:22px;transition:transform .35s var(--ease-spring)}.moment-bar:active .moment-arrow{transform:translateX(5px)}
@keyframes auroraTurn{to{transform:rotate(360deg)}}@keyframes orbRing{0%{transform:scale(.78);opacity:.9}78%,100%{transform:scale(1.38);opacity:0}}
.mood-label{display:flex;align-items:center;justify-content:space-between;padding:4px 18px 2px;color:var(--muted);font-size:12px;font-weight:750}.mood-label button{min-height:34px;color:var(--pink);font-size:12px;font-weight:800;padding:0 4px}
.quick{display:flex;overflow-x:auto;scrollbar-width:none;gap:8px;padding:7px 16px 9px}.quick::-webkit-scrollbar{display:none}.quick button{flex:0 0 auto;flex-direction:row;padding:8px 13px 8px 8px;border-radius:999px;gap:8px;min-height:44px;background:color-mix(in srgb,var(--surface) 88%,transparent)}.quick button .q-ico{width:30px;height:30px;border-radius:50%}.quick button .q-ico .ico{width:16px;height:16px}
.discover-more{margin:12px 16px 8px;border:1px solid var(--line);border-radius:22px;background:color-mix(in srgb,var(--surface) 82%,transparent);overflow:hidden}.discover-more>summary{list-style:none;display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:15px 16px;cursor:pointer}.discover-more>summary::-webkit-details-marker{display:none}.discover-more>summary span{font:800 15px/1.2 var(--display)}.discover-more>summary small{grid-column:1;color:var(--muted);font-size:11.5px}.discover-more>summary b{grid-column:2;grid-row:1/3;font-size:21px;color:var(--pink);transition:transform .45s var(--ease-spring)}.discover-more[open]>summary b{transform:rotate(45deg)}.discover-more .home-section{padding-left:0;padding-right:0}.discover-more .cta{margin-left:0;margin-right:0;width:100%;border-radius:0;border-width:1px 0 0}
body[data-view=map] .chat-toggle{display:none}.bpin{filter:drop-shadow(0 8px 14px color-mix(in srgb,var(--c) 34%,transparent))}.bpin::before{content:'';position:absolute;inset:-7px;border-radius:50%;background:color-mix(in srgb,var(--c) 24%,transparent);animation:pinBreath 2.8s ease-in-out infinite;z-index:-1}@keyframes pinBreath{0%,100%{transform:scale(.78);opacity:.25}50%{transform:scale(1.18);opacity:.75}}
.bottom-sheet{background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(20px) saturate(1.15);-webkit-backdrop-filter:blur(20px) saturate(1.15)}.segments,.chips{scrollbar-width:none}.segments::-webkit-scrollbar,.chips::-webkit-scrollbar{display:none}.surprise-btn{background:linear-gradient(105deg,var(--pulse-violet),var(--pulse-pink));box-shadow:0 8px 26px -8px rgba(255,61,112,.8)}
#surpriseDialog{overflow:hidden;background:color-mix(in srgb,var(--surface) 95%,transparent);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}.moment-reveal{position:relative;isolation:isolate;overflow:hidden;min-height:220px;padding:28px 22px;border:1px solid color-mix(in srgb,var(--c) 38%,var(--line));background:radial-gradient(90% 100% at 90% 0%,color-mix(in srgb,var(--c) 24%,transparent),transparent 65%),var(--surface)}.moment-light{position:absolute;z-index:-1;width:260px;height:260px;right:-90px;top:-120px;border-radius:50%;background:conic-gradient(transparent,var(--c),transparent 44%,var(--pulse-violet),transparent);filter:blur(24px);opacity:.36;animation:auroraTurn 8s linear infinite}.moment-kicker{display:block;margin:26px 0 8px;font-size:9px;letter-spacing:1.45px;font-weight:900;color:var(--muted)}.moment-reveal h3{font-size:26px;line-height:1.04;letter-spacing:-.65px;margin:0 0 8px}.moment-why{margin-top:20px;padding-top:14px;border-top:1px solid var(--line);font-size:13px}
.chat-toggle{display:none}
@media (prefers-reduced-motion:reduce){.pulse-caption i,.moment-bar::before,.moment-orb::before,.moment-orb::after,.bpin::before,.moment-light{animation:none!important}}:root.reduce-motion .pulse-caption i,:root.reduce-motion .moment-bar::before,:root.reduce-motion .moment-orb::before,:root.reduce-motion .moment-orb::after,:root.reduce-motion .bpin::before,:root.reduce-motion .moment-light{animation:none!important}
@media (min-width:768px){.tabbar{left:50%;right:auto;bottom:auto;border-radius:16px;width:auto;min-width:360px}.moment-bar{max-width:680px;margin-left:auto;margin-right:auto}.discover-more{margin-left:8px;margin-right:8px}}
@media (max-width:767px){.glide{height:min(48vh,380px);min-height:300px}.g-slide .slide-body{padding-bottom:38px}.hero{margin-top:8px}.glide-dots{padding-top:3px}}

/* =================== v0.7: Drømmegrensesnitt =================== */
:root{--dream-lilac:#a88cff;--dream-rose:#ff80ae;--dream-blue:#72d7ff;--dream-mint:#70e0c1}
#homeView{background:linear-gradient(180deg,transparent 0%,color-mix(in srgb,var(--bg) 94%,transparent) 72%);isolation:isolate}
.dream-sky{position:absolute;inset:-10% -20% auto;height:78%;z-index:-2;overflow:hidden;pointer-events:none;filter:saturate(1.08)}
.dream-sky i{position:absolute;border-radius:50%;filter:blur(58px);opacity:.13;will-change:transform;animation:dreamFloat 15s ease-in-out infinite alternate}
.dream-sky i:nth-child(1){width:55vw;height:55vw;max-width:390px;max-height:390px;left:2%;top:6%;background:var(--dream-rose)}
.dream-sky i:nth-child(2){width:65vw;height:65vw;max-width:460px;max-height:460px;right:-2%;top:20%;background:var(--dream-blue);animation-duration:19s;animation-delay:-5s}
.dream-sky i:nth-child(3){width:52vw;height:52vw;max-width:360px;max-height:360px;left:35%;top:36%;background:var(--dream-lilac);animation-duration:22s;animation-delay:-9s}
@keyframes dreamFloat{0%{transform:translate3d(-4%,-3%,0) scale(.9)}100%{transform:translate3d(8%,7%,0) scale(1.14)}}
.home-hello{padding:24px 22px 0;text-align:center}.home-hello small{font-size:10px;letter-spacing:1.8px;opacity:.72}.home-hello h1{font-size:clamp(27px,8vw,36px);letter-spacing:-1.15px;margin-top:7px}.home-hello h1 em{background:linear-gradient(100deg,var(--dream-rose),var(--dream-lilac) 55%,var(--dream-blue));-webkit-background-clip:text;background-clip:text}
.hero-glow{height:560px;opacity:.62}.hero-glow i{filter:blur(72px) saturate(1.25)}
.hero{margin:0}.glide{height:min(46vh,350px);min-height:290px}.g-slide{--fh:clamp(42px,15%,68px);--fv:clamp(45px,15%,74px)}
.g-slide .slide-body{padding:18px 34px 34px;text-align:left}.g-slide .slide-body h3{font-size:clamp(22px,6.5vw,28px);line-height:1.04;letter-spacing:-.55px}.g-slide .slide-top{top:30px}.g-slide .slide::after{background:linear-gradient(180deg,rgba(10,10,18,.16),transparent 30%,rgba(10,10,18,.03) 46%,rgba(10,10,18,.78) 100%)}
.glide-dots{opacity:.7;transform:scale(.82);margin-top:-3px}.glide-arrow{display:none!important}
.wizard-portal{position:relative;isolation:isolate;width:calc(100% - 36px);margin:7px 18px 8px;padding:11px 14px 11px 10px;min-height:74px;display:flex;justify-content:flex-start;gap:12px;text-align:left;color:var(--ink);border:1px solid color-mix(in srgb,var(--dream-lilac) 24%,var(--line));border-radius:25px;overflow:hidden;background:linear-gradient(120deg,color-mix(in srgb,var(--surface) 92%,var(--dream-lilac)),color-mix(in srgb,var(--surface) 96%,var(--dream-blue)));box-shadow:0 18px 48px -35px var(--dream-lilac);transition:transform .35s var(--ease-spring),border-color .35s,box-shadow .35s}
.wizard-portal::before{content:'';position:absolute;z-index:-1;inset:auto -22% -145% 24%;height:230%;border-radius:50%;background:conic-gradient(from 90deg,transparent,var(--dream-blue),transparent,var(--dream-rose),transparent);filter:blur(30px);opacity:.12;animation:auroraTurn 16s linear infinite}
.wizard-portal:active{transform:scale(.982);border-color:color-mix(in srgb,var(--dream-lilac) 48%,var(--line));box-shadow:0 14px 38px -25px var(--dream-lilac)}
.wizard-aura{position:relative;flex:0 0 52px;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.5),color-mix(in srgb,var(--dream-lilac) 34%,var(--surface)) 42%,color-mix(in srgb,var(--dream-blue) 15%,var(--surface)));box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),0 0 24px rgba(168,140,255,.22)}
.wizard-aura::after{content:'';position:absolute;inset:-5px;border:1px solid color-mix(in srgb,var(--dream-lilac) 35%,transparent);border-radius:50%;animation:wizardBreath 4.4s ease-in-out infinite}.wizard-aura .wiz-art{display:grid;place-items:center}.wizard-aura .wizard{width:42px;filter:drop-shadow(0 5px 9px rgba(50,28,110,.28));animation:wizardHover 4s ease-in-out infinite}
.wizard-portal>span:nth-child(2){min-width:0}.wizard-portal small{display:block;font:850 9px/1 var(--display);letter-spacing:1.5px;color:var(--dream-lilac)}.wizard-portal strong{display:block;margin-top:5px;font-size:16px;letter-spacing:-.15px}.wizard-portal em{display:block;margin-top:2px;font-size:11.5px;font-style:normal;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wizard-portal>b{margin-left:auto;font-size:20px;font-weight:500;color:var(--dream-lilac)}
@keyframes wizardBreath{0%,100%{transform:scale(.94);opacity:.45}50%{transform:scale(1.08);opacity:.9}}@keyframes wizardHover{0%,100%{transform:translateY(1px) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}
.quick{justify-content:center;padding:7px 16px 12px;gap:7px}.quick button{min-height:38px;padding:5px 12px 5px 6px;border:0;background:color-mix(in srgb,var(--surface) 68%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--line) 76%,transparent);font-size:11.5px}.quick button .q-ico{width:26px;height:26px}.quick button .q-ico .ico{width:14px;height:14px}
.feed-drawer{margin:2px 18px 12px;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent)}.feed-drawer>summary{list-style:none;display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:14px 4px;color:var(--ink);cursor:pointer}.feed-drawer>summary::-webkit-details-marker{display:none}.feed-drawer>summary span{font:760 14px/1.2 var(--display)}.feed-drawer>summary small{grid-column:1;font-size:11px;color:var(--muted)}.feed-drawer>summary b{grid-column:2;grid-row:1/3;font-size:20px;font-weight:500;color:var(--muted);transition:transform .45s var(--ease-spring)}.feed-drawer[open]>summary b{transform:rotate(180deg)}
.feed-drawer .home-section{padding-left:0;padding-right:0}.feed-drawer .hscroll{margin-left:-18px;margin-right:-18px}.discover-more{margin:8px 0;background:transparent;border-color:color-mix(in srgb,var(--line) 75%,transparent)}
.home-foot{opacity:.55;font-size:10px;padding-top:5px}.chat-toggle{display:none!important}
.app-header{background:linear-gradient(180deg,color-mix(in srgb,var(--header-bg) 92%,transparent),color-mix(in srgb,var(--header-bg) 65%,transparent));border-bottom-color:transparent}.brand-icon{box-shadow:0 7px 24px -7px var(--pink)}
.tabbar{background:color-mix(in srgb,var(--header-bg) 78%,transparent);backdrop-filter:blur(26px) saturate(1.2);-webkit-backdrop-filter:blur(26px) saturate(1.2);border-color:color-mix(in srgb,var(--line) 55%,transparent);box-shadow:0 18px 50px rgba(0,0,0,.18)}
.tabbar button[aria-current=page]{background:radial-gradient(70% 90% at 50% 100%,color-mix(in srgb,var(--dream-lilac) 15%,transparent),transparent)}.tabbar button[aria-current=page]::before{background:var(--dream-lilac);box-shadow:0 -5px 16px var(--dream-lilac)}
dialog,.chat-panel,.bottom-sheet{animation:dreamSheetIn .48s var(--ease-spring)}@keyframes dreamSheetIn{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.dream-sky i,.wizard-portal::before,.wizard-aura::after,.wizard-aura .wizard{animation:none!important}}:root.reduce-motion .dream-sky i,:root.reduce-motion .wizard-portal::before,:root.reduce-motion .wizard-aura::after,:root.reduce-motion .wizard-aura .wizard{animation:none!important}
@media (max-height:720px) and (max-width:767px){.home-hello{padding-top:13px}.glide{height:300px;min-height:280px}.wizard-portal{min-height:66px}.wizard-aura{width:46px;height:46px;flex-basis:46px}.wizard-aura .wizard{width:37px}}

/* =================== v0.8: Stjernestøv =================== */
/* Surfaces are made from light and depth, not outlines. */
.wizard-portal,.quick button,.discover-more,.card,.cal-panel,.cal-day-panel,.set-card,.bottom-sheet,dialog,.chip,.segments button,.nearby-item,.cta{border:0!important}
.wizard-portal{background:radial-gradient(90% 170% at 5% 40%,color-mix(in srgb,var(--dream-lilac) 16%,transparent),transparent 62%),radial-gradient(85% 160% at 92% 10%,color-mix(in srgb,var(--dream-blue) 12%,transparent),transparent 66%),color-mix(in srgb,var(--surface) 76%,transparent);box-shadow:0 24px 60px -40px rgba(145,112,255,.78),inset 0 1px rgba(255,255,255,.07)}
.quick button{background:color-mix(in srgb,var(--surface) 52%,transparent);box-shadow:0 12px 30px -25px var(--c),inset 0 1px rgba(255,255,255,.05)}
.discover-more{box-shadow:0 22px 55px -48px var(--dream-lilac)}
.bottom-sheet,dialog,.chat-panel{box-shadow:0 -20px 70px -38px rgba(0,0,0,.6),0 0 55px -38px var(--dream-lilac)}
.card,.cal-panel,.cal-day-panel,.set-card{box-shadow:0 22px 50px -42px rgba(86,62,160,.72),inset 0 1px rgba(255,255,255,.045)}

/* Icons hover as small objects in space. */
.quick button .q-ico,.cat-grid .bubble,.nearby-thumb .bubble,.cal-dots i,.tabbar button .ico,.icon-button .ico,.brand-icon,.wizard-aura,.bpin-drop{will-change:transform,filter;transform:translateZ(0);filter:drop-shadow(0 7px 10px color-mix(in srgb,var(--c,var(--dream-lilac)) 35%,transparent));animation:spaceHover 4.8s ease-in-out infinite}
.quick button:nth-child(2) .q-ico,.cat-grid button:nth-child(3n+2) .bubble,.tabbar button:nth-child(2) .ico{animation-delay:-1.6s;animation-duration:5.4s}
.quick button:nth-child(3) .q-ico,.cat-grid button:nth-child(3n) .bubble,.tabbar button:nth-child(3) .ico{animation-delay:-3.1s;animation-duration:4.3s}
@keyframes spaceHover{0%,100%{transform:translate3d(0,1px,0) rotate(-1.2deg);filter:drop-shadow(0 5px 8px color-mix(in srgb,var(--c,var(--dream-lilac)) 24%,transparent))}50%{transform:translate3d(0,-4px,0) rotate(1.1deg);filter:drop-shadow(0 11px 15px color-mix(in srgb,var(--c,var(--dream-lilac)) 48%,transparent))}}
.quick button .q-ico::after,.wizard-aura::before,.brand-icon::after{content:'';position:absolute;inset:-12px;border-radius:50%;z-index:-1;background:radial-gradient(circle,color-mix(in srgb,var(--c,var(--dream-lilac)) 26%,transparent),transparent 68%);filter:blur(7px);opacity:.7;pointer-events:none}
.quick button .q-ico,.brand-icon{position:relative;isolation:isolate}.wizard-aura::before{inset:-18px;background:radial-gradient(circle,color-mix(in srgb,var(--dream-lilac) 32%,transparent),transparent 70%);filter:blur(9px)}
.tabbar button[aria-current=page] .ico{filter:drop-shadow(0 0 7px color-mix(in srgb,var(--dream-lilac) 72%,transparent)) drop-shadow(0 8px 9px rgba(0,0,0,.22))}
.icon-button{background:transparent!important}.location-pill{border:0!important;background:color-mix(in srgb,var(--surface) 45%,transparent)!important;box-shadow:0 12px 32px -26px var(--dream-lilac)}

/* Gaussian halos move independently behind the focused story. */
.g-slide .slide-art::after,.g-slide .slide-img::after{content:'';position:absolute;inset:18%;border-radius:50%;background:var(--c,var(--dream-lilac));filter:blur(42px);opacity:.22;z-index:-1}
.g-slide .slide-cat,.g-slide .slide-price,.slide-go{border:0;box-shadow:0 10px 28px -20px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.1)}
.hero-glow i.on{opacity:.58;animation:glowBreathe 8s ease-in-out infinite alternate}@keyframes glowBreathe{from{transform:scale(1.08) translate3d(-1%,0,0);filter:blur(64px) saturate(1.2)}to{transform:scale(1.2) translate3d(2%,2%,0);filter:blur(78px) saturate(1.45)}}

/* A fast, local star burst acknowledges every completed tap. */
.tap-spark{position:fixed;width:1px;height:1px;z-index:99999;pointer-events:none;contain:layout style paint}
.tap-spark::before{content:'';position:absolute;width:16px;height:16px;left:-8px;top:-8px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.52),rgba(179,142,255,.16) 28%,transparent 70%);filter:blur(2px);animation:sparkFlash .3s ease-out both}
.tap-spark i{position:absolute;left:calc(var(--s) / -2);top:calc(var(--s) / -2);width:var(--s);height:var(--s);border-radius:50%;background:#fff;box-shadow:0 0 5px var(--dream-lilac);transform:rotate(var(--a)) translateX(0) scale(0);animation:sparkFly .42s var(--wait) cubic-bezier(.16,.8,.2,1) both}
.tap-spark i:nth-child(3n){background:var(--dream-blue);box-shadow:0 0 8px 1px var(--dream-blue)}.tap-spark i:nth-child(3n+2){background:var(--dream-rose);box-shadow:0 0 8px 1px var(--dream-rose)}
@keyframes sparkFlash{0%{opacity:0;transform:scale(.15)}25%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.8)}}
@keyframes sparkFly{0%{opacity:0;transform:rotate(var(--a)) translateX(0) scale(0)}18%{opacity:1;transform:rotate(var(--a)) translateX(6px) scale(1)}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--d)) scale(.2)}}

/* Touch feedback sinks into the scene, then springs back. */
button,a,.chip,summary,.card,.nearby-item{transition:transform .24s var(--ease-spring),filter .3s,background-color .3s,opacity .3s}
button:active,a:active,.chip:active,summary:active,.card:active,.nearby-item:active{transform:scale(.985);filter:brightness(1.055)}
@media (prefers-reduced-motion:reduce){.tap-spark{display:none}.quick button .q-ico,.cat-grid .bubble,.nearby-thumb .bubble,.cal-dots i,.tabbar button .ico,.icon-button .ico,.brand-icon,.wizard-aura,.bpin-drop,.hero-glow i.on{animation:none!important}}:root.reduce-motion .tap-spark{display:none}:root.reduce-motion .quick button .q-ico,:root.reduce-motion .cat-grid .bubble,:root.reduce-motion .nearby-thumb .bubble,:root.reduce-motion .cal-dots i,:root.reduce-motion .tabbar button .ico,:root.reduce-motion .icon-button .ico,:root.reduce-motion .brand-icon,:root.reduce-motion .wizard-aura,:root.reduce-motion .bpin-drop,:root.reduce-motion .hero-glow i.on{animation:none!important}

/* =================== v0.9: Minimal landing =================== */
body[data-view=home] #homeView{overflow-y:auto;padding-bottom:calc(var(--tabbar-h) + 22px)}
body[data-view=home] .home-hello{padding-top:20px;padding-bottom:1px}
body[data-view=home] .hero{margin:0 auto;width:100%}
body[data-view=home] .glide{height:min(45vh,338px);min-height:280px}
.gesture-hint{margin:-1px 0 0;text-align:center;color:color-mix(in srgb,var(--muted) 82%,transparent);font-size:10.5px;font-weight:650;letter-spacing:.12px;animation:hintSoftIn .8s .45s both}
.gesture-hint span{color:color-mix(in srgb,var(--dream-lilac) 82%,var(--muted));padding:0 4px}.gesture-hint i{font-style:normal;opacity:.45;padding:0 5px}
@keyframes hintSoftIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
body[data-view=home] .wizard-portal{min-height:68px;margin-top:12px;margin-bottom:3px;padding-top:8px;padding-bottom:8px}
body[data-view=home] .wizard-aura{width:47px;height:47px;flex-basis:47px}body[data-view=home] .wizard-aura .wizard{width:38px}
body[data-view=home] .wizard-portal strong{font-size:15.5px}body[data-view=home] .wizard-portal em{font-size:11px}
.landing-next{margin:7px 0 0;text-align:center;color:color-mix(in srgb,var(--muted) 78%,transparent);font-size:10.5px}.landing-next button{min-height:30px;padding:0 2px;color:var(--dream-lilac);font-weight:800;font-size:inherit}
body[data-view=home] .home-foot{display:none}
@media (max-height:700px) and (max-width:767px){body[data-view=home] .home-hello{padding-top:10px}body[data-view=home] .glide{height:278px;min-height:270px}.gesture-hint{font-size:10px}body[data-view=home] .wizard-portal{margin-top:7px;min-height:62px}.landing-next{margin-top:3px}}

/* =================== v1.0: Quiet landing =================== */
body[data-view=home] .dream-sky,body[data-view=home] .hero-glow{display:none!important}
body[data-view=home] .hero{margin-bottom:8px}
body[data-view=home] .glide-dots,body[data-view=home] .gesture-hint,body[data-view=home] .landing-next{display:none!important}
body[data-view=home] .wizard-portal{margin-top:4px;background:color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:0 14px 34px -30px rgba(0,0,0,.62)}
body[data-view=home] .wizard-portal::before{display:none}
body[data-view=home] .wizard-aura{background:color-mix(in srgb,var(--dream-lilac) 11%,var(--surface));box-shadow:none;animation:none!important}
body[data-view=home] .wizard-aura::before,body[data-view=home] .wizard-aura::after{display:none!important}
body[data-view=home] .wizard-aura .wizard{animation:none!important;filter:grayscale(.22) saturate(.62) contrast(.96);opacity:.9;transform:none!important}
body[data-view=home] .g-slide,body[data-view=home] .g-slide .slide,body[data-view=home] .g-slide .slide-img,body[data-view=home] .g-slide .slide-art,body[data-view=home] .g-slide .slide-body,body[data-view=home] .g-slide .slide-top{filter:none!important}
body[data-view=home] .g-slide .slide-art::after,body[data-view=home] .g-slide .slide-img::after{display:none!important}
body[data-view=home] .slide-cat,body[data-view=home] .slide-price,body[data-view=home] .slide-go{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important}
body[data-view=home] .home-hello h1 em{background:linear-gradient(100deg,#f078a4,#9b82e8 58%,#62bddb);-webkit-background-clip:text;background-clip:text}

/* =================== v1.1: Clear map =================== */
/* The map is the first layer. Filters and the full result list appear on demand. */
@media (max-width:767px){
  :root{--peek:92px}
  body[data-view=map] .bottom-sheet{height:min(78%,calc(100% - var(--header-h) - var(--safe-top) - var(--tabbar-h) - 30px));border-radius:28px 28px 0 0;background:color-mix(in srgb,var(--surface) 97%,transparent);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 -14px 44px -34px rgba(22,18,38,.55)}
  body[data-view=map] .bottom-sheet.peek .segments,
  body[data-view=map] .bottom-sheet.peek .chips,
  body[data-view=map] .bottom-sheet.peek .sheet-content{opacity:0;visibility:hidden;pointer-events:none}
  body[data-view=map] .bottom-sheet.expanded .segments,
  body[data-view=map] .bottom-sheet.expanded .chips,
  body[data-view=map] .bottom-sheet.expanded .sheet-content{opacity:1;visibility:visible;transition:opacity .2s .08s ease}
  body[data-view=map] .bottom-sheet.peek .surprise-btn{display:none}
  body[data-view=map] .sheet-grab{padding-top:9px;min-height:92px}
  body[data-view=map] .handle-bar{width:32px;height:4px;margin-bottom:10px;background:color-mix(in srgb,var(--muted) 28%,transparent)}
  body[data-view=map] .sheet-header{padding:0 22px 13px 20px}
  body[data-view=map] .sheet-header::after{content:'⌃';width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--dream-lilac) 9%,var(--soft));color:var(--muted);font-size:17px;font-weight:600;transition:transform .35s var(--ease-spring)}
  body[data-view=map] .bottom-sheet.expanded .sheet-header::after{display:none}
  body[data-view=map] .sheet-header h2{font-size:18px;letter-spacing:-.45px}
  body[data-view=map] .sheet-header span{font-size:11.5px;margin-top:3px}
  body[data-view=map] .segments{padding:2px 18px 9px;gap:6px}
  body[data-view=map] .segments button{height:32px;padding:0 11px;border-radius:16px;background:color-mix(in srgb,var(--soft) 76%,transparent)}
  body[data-view=map] .chips{padding:1px 18px 11px;border-bottom:0;gap:7px}
  body[data-view=map] .chip{height:32px;padding:0 11px;background:color-mix(in srgb,var(--soft) 64%,transparent)}
  body[data-view=map] .sheet-content{padding-left:18px;padding-right:18px}
  body[data-view=map] .map-fab{bottom:calc(var(--tabbar-h) + var(--peek) + 14px);right:14px;width:42px;height:42px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 8px 24px -16px rgba(0,0,0,.65)}
}

/* Quiet, icon-first pins. A tap opens the name and event details in the popup. */
body[data-view=map] .bpin{filter:drop-shadow(0 5px 8px rgba(18,16,28,.22))}
body[data-view=map] .bpin::before{display:none}
body[data-view=map] .bpin-drop{width:34px;height:34px;border-width:2px;animation:none!important;filter:none}
body[data-view=map] .bpin-drop .ico{width:16px;height:16px}
body[data-view=map] .bpin-label{display:none}
body[data-view=map] .bpin-count{top:-7px;right:-9px;min-width:18px;height:18px;padding:0 4px;font-size:10px;border-width:1.5px}

/* Hot venue map pins: subtle, smooth pulsing glow ring */
body[data-view=map] .bpin.hot-pin {
  z-index: 100 !important;
}
body[data-view=map] .bpin.hot-pin .bpin-drop {
  position: relative;
  box-shadow: 0 0 16px -2px var(--c), 0 8px 24px -8px var(--c) !important;
}
body[data-view=map] .bpin.hot-pin .bpin-drop::before {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 2px solid var(--c);
  opacity: 0.6;
  animation: hotPulse 2.8s cubic-bezier(0.2, 0.8, 0.2, 1) infinite;
  pointer-events: none;
}
@keyframes hotPulse {
  0% { transform: scale(0.9); opacity: 0.8; }
  50% { transform: scale(1.35); opacity: 0.15; }
  100% { transform: scale(1.6); opacity: 0; }
}

/* Completely remove the bottom "Arrangementer" sheet pane in Map view */
body[data-view=map] #nearbySheet {
  display: none !important;
}

/* Perfect Leaflet popups with smooth rounded corners and no border artifacts */
.leaflet-top.leaflet-right {
  top: 14px !important;
  right: 14px !important;
  z-index: 800 !important;
}
.leaflet-popup-content-wrapper {
  padding: 0 !important;
  border-radius: 20px !important;
  overflow: hidden !important;
  background: var(--surface) !important;
  color: var(--ink) !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: 0 20px 48px -16px rgba(0,0,0,0.88) !important;
}
.leaflet-popup-content {
  margin: 14px 16px !important;
  line-height: 1.35 !important;
  font-family: var(--body) !important;
}
.leaflet-popup-tip {
  background: var(--surface) !important;
  box-shadow: none !important;
}
.leaflet-container a.leaflet-popup-close-button {
  top: 10px !important;
  right: 10px !important;
  width: 28px !important;
  height: 28px !important;
  border-radius: 50% !important;
  background: color-mix(in srgb, var(--ink) 12%, var(--surface)) !important;
  color: var(--ink) !important;
  font-size: 16px !important;
  font-weight: 800 !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  z-index: 10 !important;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
}

/* Ensure all modal dialogs / windows have crisp rounded corners with no corner artifacts */
dialog, .sheet-dialog, .bottom-sheet {
  border: 0 !important;
  outline: 0 !important;
  border-radius: 22px !important;
  overflow: hidden !important;
}

#sheetSub, #filterKindsTitle, #eventFeedCount { display: none !important; }

/* Enhanced venue card in map popups */
.pop-venue-card { display: flex; flex-direction: column; gap: 8px; border: 0 !important; }
.pop-venue-head { display: flex; align-items: center; gap: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.pop-date-header { font-size: 11.5px; font-weight: 850; letter-spacing: 0.3px; color: var(--dream-lilac); margin: 8px 2px 4px; padding-top: 6px; border-top: 1px solid color-mix(in srgb, var(--line) 50%, transparent); text-align: left; }
.pop-date-header:first-child { margin-top: 2px; padding-top: 0; border-top: 0; }
.pop-venue-img { width: 52px; height: 52px; flex: 0 0 52px; border-radius: 14px; overflow: hidden; background: var(--soft); }
.pop-venue-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pop-venue-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pop-venue-title { font-size: 14px; font-weight: 800; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pop-venue-sub { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pop-venue-count { font-size: 10px; font-weight: 750; color: var(--dream-lilac); }
.pop-thumb { width: 28px; height: 28px; flex: 0 0 28px; border-radius: 8px; overflow: hidden; }
.pop-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pop-item-text { display: flex; flex-direction: column; min-width: 0; }
.pop-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 6px 4px; text-align: left; border: 0; background: transparent; color: var(--ink); border-radius: 8px; }
.pop-item:active { background: color-mix(in srgb, var(--ink) 8%, transparent); }

/* =================== v1.2: Discovery engine =================== */
#filterDialog{padding:0;overflow:hidden;max-height:min(94%,820px)}
#filterDialog form{padding:20px 20px calc(14px + var(--safe-bottom));max-height:min(94vh,820px);overflow-y:auto;overscroll-behavior:contain}
#filterDialog .dialog-heading{position:sticky;top:-20px;z-index:10;margin:-20px -20px 13px;padding:18px 20px 10px;background:var(--surface)}
#filterDialog .dialog-heading h2{font-size:25px;line-height:1.05;margin-top:3px}
.filter-kicker{font:850 9px/1 var(--display);letter-spacing:1.65px;color:var(--dream-lilac)}
.event-search{position:sticky;top:51px;z-index:9;display:grid;grid-template-columns:27px 1fr 34px;align-items:center;min-height:54px;padding:0 8px 0 14px;border-radius:19px;background:var(--surface);box-shadow:0 12px 32px -27px rgba(0,0,0,.8)}
.event-search>span{font-size:25px;color:var(--dream-lilac);transform:rotate(-15deg)}
.event-search input{width:100%;height:50px;border:0;outline:0;background:transparent;color:var(--ink);font:650 14px/1.2 var(--body)}
.event-search input::placeholder{color:color-mix(in srgb,var(--muted) 82%,transparent)}
.event-search button{width:32px;height:32px;border-radius:50%;background:color-mix(in srgb,var(--muted) 12%,transparent);color:var(--muted);font-size:18px}
.filter-live-count{margin:9px 4px 7px;color:var(--muted);font-size:11.5px;min-height:15px}
.filter-preview{display:grid;gap:5px;margin-bottom:8px}
.filter-preview>button{display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto;column-gap:9px;width:100%;padding:7px 8px;text-align:left;border-radius:13px;background:color-mix(in srgb,var(--soft) 58%,transparent)}
.filter-preview>button>span{grid-row:1/3;width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}
.filter-preview .ico{width:18px;height:18px}.filter-preview b{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-preview small{font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-preview>p{margin:3px 4px 9px;color:var(--muted);font-size:12px}
.filter-block{margin-top:14px}.filter-section-title{display:none!important}
.interest-groups{display:grid;gap:20px;padding-top:8px}
.interest-group h4{margin:0 2px 9px;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--group-c);font-weight:800}
.interest-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.interest-tile{position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:row;align-items:center;gap:10px;min-width:0;min-height:58px;padding:9px 11px;border-radius:16px;background:color-mix(in srgb,var(--group-c) 9%,var(--surface));color:var(--ink);border:1px solid color-mix(in srgb,var(--group-c) 20%,transparent);box-shadow:0 8px 20px -20px rgba(0,0,0,.4);transition:all .18s cubic-bezier(.16,1,.3,1);text-align:left}
.interest-tile::before{display:none!important}
.interest-art{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;border-radius:11px;background:color-mix(in srgb,var(--group-c) 16%,transparent)!important;color:var(--group-c);transition:transform .2s ease,background .2s ease,color .2s ease}
.interest-art .ico{width:20px;height:20px}
.interest-tile strong{font-size:12.5px;font-weight:750;line-height:1.2;color:var(--ink);text-align:left;max-width:100%}
.interest-tile[aria-pressed=true]{background:color-mix(in srgb,var(--group-c) 22%,var(--surface));border-color:var(--group-c);box-shadow:inset 0 0 0 1.5px var(--group-c);transform:scale(.98)}
.interest-tile[aria-pressed=true] .interest-art{background:var(--group-c)!important;color:#fff;transform:scale(1.06)}
.interest-tile[aria-pressed=true]::after{content:'✓';position:absolute;right:7px;top:7px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:var(--tile-c,var(--dream-lilac));color:white;font-size:10px;font-weight:900}
.filter-more{margin-top:19px;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent)}.filter-more>summary{list-style:none;display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:15px 2px;cursor:pointer}.filter-more>summary::-webkit-details-marker{display:none}.filter-more>summary span{font-size:14px;font-weight:800}.filter-more>summary small{grid-column:1;color:var(--muted);font-size:10.5px}.filter-more>summary b{grid-column:2;grid-row:1/3;align-self:center;font-size:19px;color:var(--muted);transition:transform .3s}.filter-more[open]>summary b{transform:rotate(180deg)}.filter-more-body{padding:0 2px 4px}
#filterDialog .dialog-actions{position:sticky;bottom:calc(-14px - var(--safe-bottom));z-index:9;margin:16px -20px calc(-14px - var(--safe-bottom));padding:11px 20px calc(14px + var(--safe-bottom));background:linear-gradient(0deg,var(--surface) 78%,transparent)}
#applyFilters{min-width:170px;padding:0 17px}
@media (max-width:360px){.interest-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.interest-tile{min-height:86px}}
#dataStatus{display:none!important}

/* =================== v1.4: Choose + event conversations =================== */
#filterBtn{display:none!important}
body[data-view=home] .filter-portal{margin-top:7px;background:color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:0 14px 34px -30px rgba(0,0,0,.62)}
body[data-view=home] .filter-portal::before{display:none}
.filter-aura{background:color-mix(in srgb,#64c4cf 10%,var(--surface))!important}
.filter-orbit{position:relative;width:43px;height:43px;display:grid;place-items:center}
.filter-orbit::before,.filter-orbit::after{content:'';position:absolute;inset:7px;border:1.4px solid color-mix(in srgb,#6bc8d7 65%,var(--muted));border-radius:50%;transform:rotate(-24deg) scaleY(.46)}
.filter-orbit::after{transform:rotate(42deg) scaleY(.46);border-color:color-mix(in srgb,var(--dream-lilac) 58%,var(--muted))}
.filter-orbit i{position:absolute;width:5px;height:5px;border-radius:50%;background:#8ddce4;box-shadow:0 0 7px #8ddce4}
.filter-orbit i:nth-child(1){left:5px;top:19px}.filter-orbit i:nth-child(2){right:7px;top:10px;background:#b29cff}.filter-orbit i:nth-child(3){right:8px;bottom:8px;background:#f59cba}
.filter-orbit b{font-size:22px;line-height:1;color:color-mix(in srgb,#8ed9df 72%,var(--ink));font-weight:500;transform:rotate(-12deg);text-shadow:0 0 10px color-mix(in srgb,#8ed9df 40%,transparent)}

.event-views{float:right;display:flex;align-items:center;gap:4px;margin:-4px 2px 0 10px;color:var(--muted);font-size:11px;font-weight:800}
.eye-pyramid{width:29px;height:25px;overflow:visible}.eye-pyramid path:first-child{fill:none;stroke:color-mix(in srgb,var(--dream-lilac) 70%,var(--muted));stroke-width:1.5;stroke-linejoin:round}.eye-pyramid path:nth-child(2){fill:none;stroke:currentColor;stroke-width:1.4}.eye-pyramid circle{fill:var(--dream-lilac);filter:drop-shadow(0 0 3px var(--dream-lilac))}
.event-talk{margin:20px -2px 0;padding:18px 2px 2px;border-top:1px solid color-mix(in srgb,var(--line) 74%,transparent)}
.talk-heading{display:flex;justify-content:space-between;align-items:center}.talk-heading small{display:block;font-size:8.5px;letter-spacing:1.4px;font-weight:900;color:var(--dream-lilac)}.talk-heading h3{margin:3px 0 0;font:800 17px/1.1 var(--display)}.talk-heading>span{min-width:24px;height:24px;display:grid;place-items:center;border-radius:12px;background:var(--soft);font-size:10px;color:var(--muted)}
.talk-prompt{margin:7px 0 13px;color:var(--muted);font-size:11.5px;line-height:1.35}.talk-list{display:grid;gap:7px;max-height:270px;overflow-y:auto}.talk-list article{padding:10px 12px;border-radius:15px;background:color-mix(in srgb,var(--soft) 68%,transparent)}.talk-list article b{font-size:11.5px}.talk-list article time{float:right;color:var(--muted);font-size:9.5px}.talk-list article p{margin:4px 0 0;font-size:13px;line-height:1.35}.talk-empty{text-align:center;margin:7px 0 12px;color:var(--muted);font-size:12px}
.comment-form{display:grid;grid-template-columns:1fr 40px;gap:7px;margin-top:10px;padding:5px 5px 5px 14px;border-radius:19px;background:color-mix(in srgb,var(--soft) 82%,transparent)}.comment-form input{min-width:0;height:38px;border:0;outline:0;background:transparent;color:var(--ink);font:600 13px var(--body)}.comment-form button{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--dream-lilac),var(--pink));color:white;font-size:20px;font-weight:800}.talk-local{display:block;margin:6px 4px 0;color:color-mix(in srgb,var(--muted) 72%,transparent);font-size:9.5px}
@media (max-height:720px) and (max-width:767px){body[data-view=home] .wizard-portal{min-height:58px}.filter-orbit{transform:scale(.9)}}
.home-ask{cursor:text}
.home-ask-field{flex:1;min-width:0;height:48px;border:0;outline:0;background:transparent;color:var(--ink);font:750 15.5px/1.2 var(--body);letter-spacing:-.1px}
.home-ask-field::placeholder{color:var(--ink);opacity:1}
.home-ask>button{flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:color-mix(in srgb,var(--dream-lilac) 10%,transparent);color:var(--dream-lilac);font-size:20px;font-weight:500}
.home-ask:focus-within{background:color-mix(in srgb,var(--surface) 82%,var(--dream-lilac));box-shadow:0 16px 38px -28px var(--dream-lilac)}
.surprise-portal{margin-top:7px!important;margin-bottom:10px!important;background:linear-gradient(120deg,color-mix(in srgb,var(--surface) 91%,#b38c62),color-mix(in srgb,var(--surface) 94%,#668f9d))!important;box-shadow:0 17px 38px -33px #a78560!important}
.surprise-portal::before{display:none!important}.surprise-aura{background:color-mix(in srgb,#b89973 12%,var(--surface))!important}
.random-orbit{position:relative;width:44px;height:44px;display:grid;place-items:center}.random-orbit::before{content:'';position:absolute;inset:8px;border-radius:42% 58% 52% 48%;border:1.3px solid color-mix(in srgb,#b99a72 70%,var(--muted));transform:rotate(28deg)}
.random-orbit i{position:absolute;font-style:normal;color:#c4a57c;text-shadow:0 0 7px rgba(196,165,124,.42)}.random-orbit i:nth-child(1){left:4px;top:5px;font-size:11px}.random-orbit i:nth-child(2){right:5px;bottom:8px;font-size:16px;color:#79a6ae}.random-orbit i:nth-child(3){right:3px;top:6px;font-size:10px;color:#a798bc}.random-orbit b{font-size:25px;font-weight:400;color:color-mix(in srgb,#b99a72 72%,var(--ink));transform:rotate(-18deg)}

/* ---------- 1.6: the question is the logo ---------- */
.brand{gap:8px}
.brand-text{display:inline!important;font:800 21px/1 var(--display);letter-spacing:-.03em;color:var(--ink);white-space:nowrap}
@media (max-width:360px){.brand-text{font-size:18px}}
.home-hello h1 .where{display:inline-block;font:800 clamp(38px,12vw,54px)/1.02 var(--display);letter-spacing:-.03em;white-space:nowrap}
.home-hello h1 .where .i{font-weight:600;color:color-mix(in srgb,var(--ink) 70%,transparent);margin-right:.05em}
.home-hello h1 .where em{font-style:normal}
.home-hello h1 .where .q{background:linear-gradient(100deg,#9b82e8,#62bddb);-webkit-background-clip:text;background-clip:text;color:transparent}
@media (min-width:1024px){.home-hello h1 .where{font-size:64px}}

/* the launch: coast line, wordmark, then everything flies into place */
#brandIntro{--veil:1;position:fixed;inset:0;z-index:5000;overflow:hidden;cursor:pointer;
  background:color-mix(in srgb,var(--bg) calc(var(--veil) * 100%),transparent)}
#brandIntro .bi-coast{position:absolute;left:50%;top:50%;width:min(94vw,64vh);height:auto;transform:translate(-50%,-50%);transform-origin:50% 50%;opacity:.42;pointer-events:none}
#brandIntro .bi-coast path{fill:none;stroke:color-mix(in srgb,#9b82e8 70%,var(--ink));stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
#brandIntro .bi-stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:0 20px}
#brandIntro .bi-mark{display:grid;place-items:center;width:64px;height:64px;border-radius:21px;background:var(--pink);color:#fff;font-size:30px;
  box-shadow:0 18px 50px -12px var(--pink),0 0 0 1px rgba(255,255,255,.08) inset}
#brandIntro .bi-line{display:flex;flex-direction:column;align-items:center;gap:6px}
#brandIntro .bi-hva{font:800 56px/1 var(--display);letter-spacing:-.03em;color:var(--ink);white-space:nowrap}
#brandIntro .bi-hva b{display:inline-block;font-weight:inherit}
#brandIntro .bi-where{display:inline-block;font:800 46px/1.02 var(--display);letter-spacing:-.03em;white-space:nowrap}
#brandIntro .bi-where .i{font-weight:600;color:color-mix(in srgb,var(--ink) 70%,transparent);margin-right:.05em}
#brandIntro .bi-where em{font-style:normal;background:linear-gradient(100deg,#f078a4,#9b82e8 58%,#62bddb);-webkit-background-clip:text;background-clip:text;color:transparent}
#brandIntro .bi-where .q{background:linear-gradient(100deg,#9b82e8,#62bddb);-webkit-background-clip:text;background-clip:text;color:transparent}
.intro-on .app-header .brand-icon,.intro-on #helloTitle .where{visibility:hidden}

/* 1.7.4: distance-first, scrollable two-column home */
body[data-view=home] #homeView{overflow-y:auto!important;padding-bottom:calc(var(--tabbar-h) + 28px);display:flex;flex-direction:column}
body[data-view=home] #homeView>*{flex-shrink:0}
body[data-view=home] .home-hello{order:1}body[data-view=home] .home-ask{order:2}body[data-view=home] .filter-portal{order:3}body[data-view=home] .surprise-portal{order:4}body[data-view=home] .hero{order:5}body[data-view=home] .home-foot{order:6}
body[data-view=home] .hero{margin:0 14px 12px;width:auto}
body[data-view=home] .event-grid-wrap{height:auto!important;min-height:0!important;overflow:visible!important}
body[data-view=home] .event-grid{position:static!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%!important;height:auto!important;transform:none!important}
body[data-view=home] .event-grid .card{width:100%;min-width:0;min-height:210px;margin:0;text-align:left;scroll-snap-align:none}
body[data-view=home] .event-grid .card-media{height:128px}
body[data-view=home] .event-grid .card-body{padding:10px 10px 12px}.event-grid .card-body strong{font-size:13px;line-height:1.17;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.event-grid .card-body small{font-size:9.5px}
body[data-view=home] .glide-arrow,body[data-view=home] .glide-dots,body[data-view=home] .hero-glow{display:none!important}
body[data-view=home] .home-ask,body[data-view=home] .filter-portal,body[data-view=home] .surprise-portal{margin-left:16px;margin-right:16px;width:calc(100% - 32px)}
body[data-view=home] .surprise-portal{background:linear-gradient(115deg,color-mix(in srgb,var(--dream-lilac) 20%,var(--surface)),color-mix(in srgb,var(--dream-blue) 18%,var(--surface)))!important;box-shadow:0 11px 30px -19px var(--dream-lilac),inset 0 0 0 1px color-mix(in srgb,var(--dream-lilac) 28%,transparent)!important}
.chat-map-cta{display:flex!important;align-items:center;justify-content:center;gap:7px;width:100%;min-height:48px;margin-top:10px;border-radius:17px;box-shadow:0 10px 28px -15px var(--dream-lilac)}.chat-map-cta[hidden]{display:none!important}.chat-map-cta .ico{width:18px;height:18px}
.pop-directions{display:flex;align-items:center;justify-content:center;gap:7px;margin:8px 5px 3px;min-height:40px;border-radius:13px;background:var(--ink);color:var(--surface);font-size:12px;font-weight:850;text-decoration:none}.pop-directions .ico{width:15px;height:15px}

/* Nearby partners: a quiet commercial layer attached to each Larvik event. */
.nearby-partners-cta{width:100%;min-height:64px;margin:12px 0 10px;padding:10px 14px 10px 11px;display:flex;align-items:center;gap:12px;text-align:left;border:0;border-radius:18px;background:linear-gradient(120deg,color-mix(in srgb,var(--dream-lilac) 10%,var(--surface)),color-mix(in srgb,#62d6c5 9%,var(--surface)));box-shadow:0 12px 34px -26px rgba(36,78,84,.75);color:var(--ink)}
.nearby-partners-cta .nearby-orbit{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border-radius:50%;background:var(--surface);color:#0e8f87;box-shadow:0 8px 22px -15px rgba(14,143,135,.8);font-size:18px}.nearby-partners-cta span:nth-child(2){display:grid;gap:2px;flex:1}.nearby-partners-cta b{font-size:14px}.nearby-partners-cta small{font-size:10.5px;color:var(--muted)}.nearby-partners-cta i{font-style:normal;font-size:25px;color:var(--muted)}
.nearby-partners-dialog{width:min(520px,calc(100% - 20px));max-height:min(88vh,760px);padding:0;border:0;border-radius:26px;background:var(--surface);color:var(--ink);overflow:hidden}.nearby-partners-dialog::backdrop{background:rgba(12,16,26,.48)}
.nearby-partners-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;padding:22px 20px 15px;background:var(--surface);border-bottom:1px solid color-mix(in srgb,var(--muted) 13%,transparent)}.nearby-partners-head small{font-size:9px;font-weight:900;letter-spacing:1.4px;color:#0e8f87}.nearby-partners-head h2{margin:3px 0 2px;font-size:23px;letter-spacing:-.7px}.nearby-partners-head p{margin:0;color:var(--muted);font-size:12px}.nearby-partners-head .close{margin:-5px -5px 0 8px}
.nearby-partners-list{display:grid;gap:9px;padding:14px 14px 6px;overflow:auto;max-height:calc(88vh - 126px)}.partner-card{border-radius:18px;background:color-mix(in srgb,var(--soft) 58%,var(--surface));overflow:hidden}.partner-main{width:100%;min-height:72px;padding:12px;display:flex;align-items:center;gap:12px;text-align:left;background:transparent;color:inherit}.partner-icon{position:relative;width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 9px 24px -20px rgba(0,0,0,.8)}.partner-icon img{position:relative;z-index:2;width:30px;height:30px;object-fit:contain}.partner-icon i{position:absolute;inset:0;display:grid;place-items:center;font:900 10px/1 var(--font);color:#175b58}.partner-icon img:not([src]),.partner-icon img[src=""]{display:none}.partner-copy{min-width:0;display:grid;gap:2px;flex:1}.partner-label{font-size:8.5px;letter-spacing:.7px;text-transform:uppercase;color:#0e8f87;font-weight:900}.partner-copy strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.partner-copy small{font-size:10.5px;color:var(--muted);line-height:1.25}.partner-chevron{font-size:23px;color:var(--muted)}
.partner-actions{display:flex;gap:4px;padding:0 9px 9px}.partner-actions button,.partner-actions a{height:34px;display:flex;align-items:center;justify-content:center;gap:5px;padding:0 10px;border-radius:11px;background:var(--surface);color:var(--ink);font-size:10px;font-weight:800;text-decoration:none;flex:1}.partner-actions .ico{width:13px;height:13px}.partner-disclosure{margin:4px 18px 16px;color:var(--muted);font-size:9px;text-align:center}
.nearby-loading{grid-column:1/-1;display:grid;gap:4px;padding:22px 16px;text-align:center;color:var(--muted)}.nearby-loading b{font-size:13px;color:var(--ink)}.nearby-loading small{font-size:10.5px}
.nearby-group{display:grid;gap:8px}.nearby-group h3{margin:5px 5px 1px;font-size:11px;letter-spacing:.45px;color:var(--muted);text-transform:uppercase}.nearby-group.sponsored{padding:7px;border-radius:20px;background:color-mix(in srgb,#62d6c5 7%,transparent)}.nearby-group.sponsored h3{color:#0e8f87}.nearby-group+.nearby-group{margin-top:7px}
.partner-pin-wrap{background:none!important;border:0!important}.partner-pin{width:42px;height:42px;display:grid;place-items:center;border:3px solid #fff;border-radius:50% 50% 50% 12%;transform:rotate(-45deg);background:#0f8f87;box-shadow:0 8px 20px rgba(0,0,0,.28)}.partner-pin>span{position:relative;width:29px;height:29px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:#fff;transform:rotate(45deg)}.partner-pin img{position:relative;z-index:2;width:23px;height:23px;object-fit:contain}.partner-pin i{position:absolute;inset:0;display:grid;place-items:center;font:900 8px/1 var(--font);font-style:normal;color:#175b58}.partner-map-popup{display:grid;gap:4px;min-width:180px}.partner-map-popup>span{font-size:9px;text-transform:uppercase;letter-spacing:.7px;color:#0e8f87;font-weight:900}.partner-map-popup>strong{font-size:14px}.partner-map-popup>small{font-size:10px;color:var(--muted)}
@media(max-width:360px){.partner-actions{flex-wrap:wrap}.partner-actions button,.partner-actions a{flex:1 1 30%}.nearby-partners-dialog{width:calc(100% - 12px)}}

/* =================== v1.8: HvaSkjer Flow icons =================== */
.ico{overflow:visible;shape-rendering:geometricPrecision}.ico path,.ico circle,.ico rect,.ico line{vector-effect:non-scaling-stroke}.ico .duo{fill:currentColor;fill-opacity:.12;stroke:currentColor}.ico .solid{fill:currentColor;stroke:none}.tabbar .ico{width:21px;height:21px;stroke-width:1.65}.action-row .ico,.partner-actions .ico{stroke-width:1.8}.cat-grid .ico,.bubble .ico{stroke-width:1.65}
.tabbar button[aria-current=page] .ico .duo,.action-row button[aria-pressed=true] .ico .duo{fill-opacity:.24}.icon-button:active .ico,.action-row button:active .ico,.tabbar button:active .ico{transform:scale(.91) rotate(-2deg)}

/* Crisp surfaces: all Gaussian and backdrop blur is intentionally removed. */
.app-header,.tabbar,.slide-cat,.slide-price,.bottom-sheet,#surpriseDialog,.slide-cat .bubble,.card-media .bubble{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.hero-glow,.slide-blur,.dream-sky,.wizard-portal::before,.moment-light,.moment-bar::before,.g-slide .slide-art::after,.g-slide .slide-img::after{display:none!important}
.tap-spark::before{filter:none!important}.quick button .q-ico::after,.wizard-aura::before,.brand-icon::after{filter:none!important;background:transparent!important}
@media(max-width:350px){body[data-view=home] .event-grid{gap:7px}.event-grid .card-media{height:112px!important}}

/* 1.7.5: original slide carousel + independent 100-event feed */
body[data-view=home] .home-hello{order:1}body[data-view=home] .hero{order:2}body[data-view=home] .home-ask{order:3}body[data-view=home] .filter-portal{order:4}body[data-view=home] .surprise-portal{order:5}body[data-view=home] .event-feed{order:6}body[data-view=home] .home-foot{order:7}
body[data-view=home] .hero{margin:0 auto 8px;width:100%}
body[data-view=home] #heroSwiper{height:min(45vh,338px)!important;min-height:280px!important;overflow:hidden!important}
body[data-view=home] #heroSlides{position:absolute!important;display:block!important;width:100%!important;height:100%!important;transform:none!important}
body[data-view=home] #heroSlides .g-slide{position:absolute}
body[data-view=home] .glide-arrow{display:grid!important}
body[data-view=home] .hero-glow{display:block!important}
body[data-view=home] .glide-dots{display:flex!important}
.event-feed{margin:13px 14px 24px}.event-feed-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 3px 10px}.event-feed-head h2{margin:0;font:800 20px/1.1 var(--display);letter-spacing:-.03em}.event-feed-head small{color:var(--muted);font-size:10.5px;font-weight:700}
.event-feed .event-grid{position:static!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%!important;height:auto!important;transform:none!important}
.event-feed .card{width:100%;min-width:0;min-height:210px;margin:0;text-align:left}.event-feed .card-media{height:128px}.event-feed .card-body{padding:10px 10px 12px}.event-feed .card-body strong{font-size:13px;line-height:1.17;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.event-feed .card-body small{font-size:9.5px}
.adventure-orbit{position:relative;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 38% 35%,rgba(255,255,255,.3),rgba(169,139,235,.18) 34%,rgba(84,143,170,.08) 62%,transparent 70%);box-shadow:0 0 16px rgba(151,125,220,.22)}
.adventure-orbit .ib,.adventure-orbit .ico,.adventure-orbit>svg{width:23px;height:23px;color:color-mix(in srgb,var(--dream-lilac) 72%,white);filter:drop-shadow(0 0 6px rgba(178,151,239,.72));animation:adventurePulse 2.8s ease-in-out infinite}
.adventure-orbit i{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 7px #b99cff;animation:adventureStar 3s ease-in-out infinite}.adventure-orbit i:nth-of-type(1){left:3px;top:10px}.adventure-orbit i:nth-of-type(2){right:4px;top:6px;animation-delay:-1s;background:#91dbe5}.adventure-orbit i:nth-of-type(3){right:1px;bottom:8px;animation-delay:-2s;background:#f0b3cb}
@keyframes adventurePulse{50%{transform:scale(1.08) rotate(5deg);filter:drop-shadow(0 0 10px rgba(178,151,239,.9))}}@keyframes adventureStar{50%{opacity:.35;transform:translateY(-3px) scale(.65)}}
.results-dialog{width:min(100% - 18px,760px);height:min(92vh,900px);max-width:760px;max-height:92vh;padding:0!important;overflow:hidden!important;border-radius:28px;background:var(--surface)}
.results-dialog-head{height:76px;display:flex;align-items:center;justify-content:space-between;padding:14px 18px 10px;border-bottom:1px solid var(--line)}.results-dialog-head small{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.09em}.results-dialog-head h2{margin:2px 0 0;font:800 24px/1 var(--display)}
.results-scroll{height:calc(100% - 76px);overflow-y:auto;overscroll-behavior:contain;padding:12px 12px calc(22px + var(--safe-bottom))}.results-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.results-grid .card{width:100%;min-width:0;min-height:210px;margin:0;text-align:left}.results-grid .card-media{height:128px}.results-grid .card-body{padding:10px 10px 12px}.results-grid .card-body strong{font-size:13px;line-height:1.17;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.results-grid .card-body small{font-size:9.5px}.results-grid .feed-empty{grid-column:1/-1}

/* ---------- 1.7.9: smoother – same look, far less work for the graphics chip ---------- */
/* slide glow: a soft gradient instead of a live blur that had to be redrawn every frame */
.g-slide .slide-art::after,.g-slide .slide-img::after{inset:0;filter:none;border-radius:0;
  background:radial-gradient(closest-side,var(--c,var(--dream-lilac)) 20%,transparent 100%)}
/* background glow breathes with movement only – the blur itself stays fixed */
.hero-glow i.on{animation-name:glowBreathe2;filter:blur(70px) saturate(1.3)}
@keyframes glowBreathe2{from{transform:scale(1.08) translate3d(-1%,0,0)}to{transform:scale(1.2) translate3d(2%,2%,0)}}
/* map pins: no separate graphics layer per pin (hundreds of them ran the WebView out of memory) */
.bpin-drop{will-change:auto;transform:none}
body[data-view=map] .bpin-drop{filter:none}
.leaflet-marker-icon.pin-wrap{will-change:auto}
/* floating icons: same drift, but the shadow is fixed instead of re-drawn every frame */
@keyframes spaceHover{0%,100%{transform:translate3d(0,1px,0) rotate(-1.2deg)}50%{transform:translate3d(0,-4px,0) rotate(1.1deg)}}
.quick button .q-ico,.cat-grid .bubble,.nearby-thumb .bubble,.tabbar button .ico,.icon-button .ico,.brand-icon,.wizard-aura{will-change:transform;filter:drop-shadow(0 8px 12px color-mix(in srgb,var(--c,var(--dream-lilac)) 36%,transparent))}
/* the tiny calendar dots don't need their own graphics layers (a month has ~100 of them) */
.cal-dots i{will-change:auto;animation:none;transform:none}
@keyframes adventurePulse{50%{transform:scale(1.08) rotate(5deg)}}

/* 1.9.1 final crisp pass: this block deliberately comes last. */
html body .app-header,html body .tabbar,html body .bottom-sheet,html body #surpriseDialog,html body .slide-cat,html body .slide-price,html body .bubble{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
html body[data-view=home] .hero-glow,html body .slide-blur,html body .dream-sky,html body .moment-light,html body .moment-bar::before,html body .wizard-portal::before,html body .g-slide .slide-art::after,html body .g-slide .slide-img::after{display:none!important;filter:none!important}
html body .quick button .q-ico,html body .cat-grid .bubble,html body .nearby-thumb .bubble,html body .tabbar button .ico,html body .icon-button .ico,html body .brand-icon,html body .wizard-aura,html body .bpin-drop,html body .adventure-orbit .ib,html body .adventure-orbit .ico,html body .adventure-orbit>svg{filter:none!important;text-shadow:none!important}
html body .quick button .q-ico::after,html body .wizard-aura::before,html body .wizard-aura::after,html body .brand-icon::after{display:none!important;filter:none!important}
html body .tabbar button[aria-current=page] .ico,html body .eye-pyramid circle{filter:none!important}
html body .adventure-orbit{background:var(--surface)!important;box-shadow:inset 0 0 0 1px var(--line)!important}
html body .adventure-orbit i{box-shadow:none!important}

/* Settings Dialog Scroll Fix */
#settingsDialog[open] {
  display: flex !important;
  flex-direction: column !important;
  max-height: min(88dvh, 680px) !important;
  overflow: hidden !important;
}
#settingsBody {
  flex: 1 !important;
  overflow-y: auto !important;
  overscroll-behavior: contain !important;
  padding-bottom: calc(20px + var(--safe-bottom)) !important;
}

/* 1.9.6: HvaSkjer new ticket + search logo identity */
.brand{display:flex;align-items:center;gap:10px}
.brand-icon{width:34px;height:34px;padding:0;background:transparent!important;border-radius:11px;overflow:hidden;box-shadow:0 4px 12px rgba(98,50,255,0.3)!important;animation:none!important;filter:none!important}
.brand-icon img{display:block;width:100%;height:100%;object-fit:cover}
.brand-text{font-family:var(--display);font-size:22px;font-weight:800;letter-spacing:-.045em;color:var(--ink)}
#brandIntro .bi-mark{width:76px;height:76px;padding:0;background:transparent;border-radius:24px;overflow:hidden;box-shadow:0 18px 45px -28px rgba(57,80,90,.65)}
#brandIntro .bi-mark img{display:block;width:100%;height:100%;object-fit:cover}
#brandIntro .bi-hva{font-weight:800;letter-spacing:-.045em}

/* First launch: place comes before the personalised intro. */
#locationDialog .first-place-brand,#locationDialog .first-place-kicker,#locationDialog .first-place-bg-map{display:none}
#locationDialog.first-run{position:relative;overflow:hidden;box-sizing:border-box;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:max(42px,env(safe-area-inset-top)) 24px max(28px,env(safe-area-inset-bottom));border:0;border-radius:0;background:var(--bg);color:var(--ink);flex-direction:column}
#locationDialog.first-run[open]{display:flex}
#locationDialog.first-run::backdrop{background:var(--bg)}
#locationDialog.first-run .first-place-bg-map{display:block;position:absolute;top:50%;left:50%;width:min(90vw,60vh);height:auto;transform:translate(-50%,-50%) scale(1.15);opacity:.35;pointer-events:none;z-index:0}
#locationDialog.first-run .norway-bg-map path{fill:none;stroke:color-mix(in srgb,#9b82e8 70%,var(--ink));stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
#locationDialog.first-run .close{display:none}
#locationDialog.first-run .first-place-brand{display:flex;align-items:center;gap:10px;margin-bottom:auto;font:800 18px/1 var(--display);letter-spacing:-.04em}
#locationDialog.first-run .first-place-brand img{width:34px;height:34px;object-fit:contain}
#locationDialog.first-run .dialog-heading{margin-top:clamp(42px,11vh,100px);margin-bottom:8px}
#locationDialog.first-run .dialog-heading h2{margin:5px 0 0;font:800 clamp(34px,10vw,48px)/1 var(--display);letter-spacing:-.055em}
#locationDialog.first-run .first-place-kicker{display:block;color:var(--muted);font-size:10px;font-weight:850;letter-spacing:.16em;text-transform:uppercase}
#locationDialog.first-run .first-place-copy{max-width:330px;margin:0 0 25px;font-size:14px;line-height:1.45}
#locationDialog.first-run .city-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#locationDialog.first-run .city-grid button{min-height:58px;border:0;border-radius:18px;background:color-mix(in srgb,var(--surface) 88%,var(--ink) 12%);color:var(--ink);font:800 15px/1 var(--font);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 9%,transparent)}

/* 2.0 wordmark: bundled rounded face, shared gradient, and safe glyph bounds. */
.brand-text,
#brandIntro .bi-hva,
#locationDialog .first-place-brand > span {
  font-family:"Fredoka","Arial Rounded MT Bold",sans-serif!important;
  font-weight:700!important;
  letter-spacing:-.025em!important;
  background:linear-gradient(100deg,#f078a4,#9b82e8 58%,#62bddb)!important;
  -webkit-background-clip:text!important;
  background-clip:text!important;
  color:transparent!important;
}
#brandIntro .bi-hva {
  display:block!important;
  line-height:1.2!important;
  padding:.08em .08em .22em!important;
  margin:-.08em -.08em -.22em!important;
  overflow:visible!important;
  white-space:nowrap;
}

/* Keep every changing place label in the same face as the HvaSkjer wordmark. */
.home-hello h1 .where,
.home-hello h1 .where .i,
.home-hello h1 .where em,
.home-hello h1 .where .q,
#brandIntro .bi-where,
#brandIntro .bi-where .i,
#brandIntro .bi-where em,
#brandIntro .bi-where .q {
  font-family:var(--display)!important;
}
#locationDialog.first-run .city-grid button:active{transform:scale(.975);background:color-mix(in srgb,var(--surface) 78%,#829b94 22%)}
#locationDialog.first-run .divider{margin:20px 0 14px}
#locationDialog.first-run #useGPS{min-height:52px;border-radius:17px}
#locationDialog.first-run #allVestfold{margin-top:8px}

/* 1.10: intelligent search stays on the landing page. */
.home-search-results{box-sizing:border-box;width:min(920px,calc(100% - 28px));max-width:none;max-height:min(84dvh,820px);margin:auto;padding:16px;border:1px solid color-mix(in srgb,var(--dream-lilac) 20%,var(--border));border-radius:24px;background:color-mix(in srgb,var(--surface) 94%,var(--dream-lilac) 6%);color:var(--ink);box-shadow:0 28px 90px -28px rgba(15,12,32,.62);overflow:auto;overscroll-behavior:contain}
.home-search-results::backdrop{background:rgba(15,12,32,.48);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.home-ask-field,.search-engine-input-wrap input,#eventQuery{font-family:"Outfit","Inter",sans-serif;font-weight:650;letter-spacing:-.012em}
.home-search-head h2,.search-event-info strong,.act-hero h2,.event-feed-head h2,.search-engine-head h2{font-family:var(--display)!important;letter-spacing:-.025em}
.home-search-head{position:sticky;top:-16px;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:-16px -16px 8px;padding:16px 16px 10px;background:color-mix(in srgb,var(--surface) 94%,var(--dream-lilac) 6%)}.home-search-head small{display:block;color:var(--dream-lilac);font-size:9px;font-weight:850;letter-spacing:.11em}.home-search-head h2{margin:3px 0 0;font:800 21px/1.08 var(--display);letter-spacing:-.035em}.home-search-head>button{width:38px;height:38px;flex:0 0 38px;border:0;border-radius:50%;background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--muted);font-size:22px}
.home-search-understood{display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -2px 13px;padding:2px}.home-search-understood::-webkit-scrollbar{display:none}.home-search-understood span{flex:0 0 auto;color:var(--muted);font-size:10.5px}.home-search-understood b{flex:0 0 auto;padding:6px 9px;border-radius:999px;background:color-mix(in srgb,var(--dream-lilac) 13%,var(--surface));color:var(--ink);font-size:10.5px;font-weight:750}
.home-search-grid{display:grid;grid-template-columns:1fr;gap:8px}.home-search-card{position:relative;display:grid;grid-template-columns:82px minmax(0,1fr);gap:11px;min-width:0;min-height:92px;padding:7px;border:0;border-radius:18px;background:color-mix(in srgb,var(--bg) 45%,var(--surface));color:var(--ink);text-align:left;overflow:hidden}.home-search-card.best{background:color-mix(in srgb,var(--dream-lilac) 10%,var(--surface))}.home-search-card.best::after{content:'Beste treff';position:absolute;right:9px;top:8px;padding:4px 7px;border-radius:999px;background:rgba(15,15,20,.66);color:#fff;font-size:8px;font-weight:850;letter-spacing:.04em}
.home-search-thumb{position:relative;display:grid;place-items:center;width:82px;height:78px;border-radius:14px;overflow:hidden;background:color-mix(in srgb,var(--c) 18%,var(--surface));color:var(--c)}.home-search-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.home-search-thumb>i{position:relative;display:grid;place-items:center;font-style:normal}.home-search-thumb img+i{display:none}.home-search-thumb .bubble{width:32px;height:32px;background:transparent!important;color:var(--c);box-shadow:none!important}
.home-search-copy{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:3px 5px 3px 0}.home-search-copy small{padding-right:58px;color:var(--dream-lilac);font-size:9.5px;font-weight:800}.home-search-copy strong{display:-webkit-box;margin:4px 0 3px;overflow:hidden;font-size:13px;line-height:1.14;-webkit-line-clamp:2;-webkit-box-orient:vertical}.home-search-copy em{overflow:hidden;color:var(--muted);font-size:10.5px;font-style:normal;white-space:nowrap;text-overflow:ellipsis}.home-search-copy u{margin-top:4px;color:color-mix(in srgb,var(--dream-blue) 80%,var(--ink));font-size:9.5px;font-weight:750;text-decoration:none}
.home-search-actions{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:12px}.home-search-actions button{min-height:44px;padding:0 16px;border:0;border-radius:15px;background:var(--dream-lilac);color:#fff;font-size:12.5px;font-weight:800}.home-search-actions #homeSearchMap{display:flex;align-items:center;gap:7px;background:color-mix(in srgb,var(--ink) 8%,var(--surface));color:var(--ink)}.home-search-actions #homeSearchMap .ico{width:17px;height:17px}.home-search-empty{grid-column:1/-1;padding:22px 12px;text-align:center;color:var(--muted)}.home-search-empty p{max-width:520px;margin:0 auto 14px;font-size:13px;line-height:1.45}.home-search-empty div{display:flex;justify-content:center;gap:7px;flex-wrap:wrap}.home-search-empty button{min-height:34px;padding:0 12px;border:0;border-radius:999px;background:color-mix(in srgb,var(--dream-lilac) 13%,var(--surface));color:var(--ink);font-size:11px;font-weight:750}
body[data-view=home] .home-discovery .home-ask{position:relative;transition:background-color .25s,box-shadow .25s,transform .2s}body[data-view=home] .home-discovery .home-ask:focus-within{background:color-mix(in srgb,var(--surface) 88%,var(--dream-lilac) 12%);box-shadow:0 15px 34px -24px var(--dream-lilac)}body[data-view=home] .home-ask-field::placeholder{color:color-mix(in srgb,var(--muted) 92%,transparent)}
@media(min-width:620px){.home-search-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1100px){.home-search-results{width:min(920px,calc(100% - 32px));padding:18px 20px 20px}.home-search-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.home-search-card{grid-template-columns:1fr;min-height:205px;padding:0}.home-search-thumb{width:100%;height:116px;border-radius:18px 18px 0 0}.home-search-copy{padding:8px 11px 12px}.home-search-copy small{padding-right:54px}.home-search-card.best{grid-column:span 1}.home-search-actions{max-width:430px;margin-left:auto}}

/* 1.9.2 landing controls: three distinct, crisp symbols; no aura, blur or glow. */
html body[data-view=home] .hero-glow,html body[data-view=home] .dream-sky{display:none!important}
html body[data-view=home] .wizard-aura,html body[data-view=home] .filter-orbit,html body[data-view=home] .adventure-orbit{display:none!important}
html body .landing-icon{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;border-radius:15px;color:var(--ink);background:color-mix(in srgb,var(--surface) 92%,var(--ink) 8%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 13%,transparent);filter:none!important;transform:none;animation:none}
html body .landing-icon .ico{width:25px;height:25px;filter:none!important;animation:none!important;transform:none!important}
html body .guide-mark{color:#678a84;background:color-mix(in srgb,#678a84 12%,var(--surface))}
html body .activity-mark{color:#8779a2;background:color-mix(in srgb,#8779a2 12%,var(--surface))}
html body .adventure-mark{color:#a06f57;background:color-mix(in srgb,#a06f57 13%,var(--surface))}
html body .landing-icon::before,html body .landing-icon::after{content:none!important;display:none!important;filter:none!important}

/* 1.9.8: compact WebView home — more discovery per screen, same actions. */
body[data-view=home] .home-actions{order:4;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:5px 14px 2px}
body[data-view=home] .home-actions .wizard-portal{width:100%;min-width:0;min-height:58px;margin:0!important;padding:8px 9px;gap:8px;border-radius:18px}
body[data-view=home] .home-actions .landing-icon{width:38px;height:38px;flex-basis:38px;border-radius:13px}
body[data-view=home] .home-actions .landing-icon .ico{width:22px;height:22px}
body[data-view=home] .home-actions .wizard-portal>span:nth-child(2){min-width:0;flex:1}
body[data-view=home] .home-actions .wizard-portal strong{display:block;font-size:12.5px;line-height:1.08}
body[data-view=home] .home-actions .wizard-portal>b{font-size:16px;color:var(--muted)}
body[data-view=home] .home-ask{max-width:760px;min-height:58px;margin:6px auto 2px;width:calc(100% - 28px);border-radius:19px}
body[data-view=home] #heroSwiper{height:min(38vh,292px)!important;min-height:238px!important}
body[data-view=home] .event-feed{margin:10px 10px 24px}
body[data-view=home] .event-feed-head{margin:0 5px 9px}
body[data-view=home] .event-feed-head h2{font-size:18px}
body[data-view=home] .event-feed .event-grid{gap:8px}
body[data-view=home] .event-feed .card{min-height:174px;border-radius:16px}
body[data-view=home] .event-feed .card-media{height:100px}
body[data-view=home] .event-feed .card-media .bubble{left:7px;bottom:7px;width:30px;height:30px}
body[data-view=home] .event-feed .card-body{padding:8px 9px 10px;gap:2px}
body[data-view=home] .event-feed .card-body strong{font-size:12px;line-height:1.16;-webkit-line-clamp:2}
body[data-view=home] .event-feed .card-body small{font-size:9px}
@media (max-width:365px){body[data-view=home] .home-actions{gap:7px;margin-left:10px;margin-right:10px}body[data-view=home] .home-actions .wizard-portal{padding-left:7px;padding-right:7px}body[data-view=home] .home-actions .landing-icon{width:34px;height:34px;flex-basis:34px}body[data-view=home] .home-actions .wizard-portal strong{font-size:11.5px}}
@media (min-width:600px){body[data-view=home] .home-actions{width:min(760px,calc(100% - 32px));margin-left:auto;margin-right:auto}body[data-view=home] .event-feed .event-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}body[data-view=home] .event-feed .card-media{height:116px}}
@media (min-width:900px){body[data-view=home] .event-feed{margin-left:8px;margin-right:8px}body[data-view=home] .event-feed .event-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}body[data-view=home] #heroSwiper{height:min(43vh,390px)!important;max-width:920px;margin-inline:auto;border-radius:28px}body[data-view=home] .home-actions .wizard-portal strong{font-size:14px}}
@media (min-width:1280px){body[data-view=home] .event-feed .event-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* 1.9.9: wide browser composition — horizontal discovery, not taller cards. */
@media (min-width:1024px){
  body[data-view=home] #homeView{display:grid!important;grid-template-columns:minmax(0,2.15fr) minmax(310px,.85fr);grid-template-areas:"hello hello" "hero ask" "hero actions" "feed feed" "foot foot";grid-template-rows:auto auto 1fr auto auto;column-gap:22px;align-content:start;padding-left:max(28px,calc(50% - 720px));padding-right:max(28px,calc(50% - 720px));padding-bottom:54px}
  body[data-view=home] .home-hello{grid-area:hello;order:unset;padding:25px 4px 8px}
  body[data-view=home] .hero{grid-area:hero;order:unset;align-self:stretch;margin:0;width:100%}
  body[data-view=home] #heroSwiper{height:356px!important;min-height:356px!important;max-width:none;margin:0;border-radius:28px}
  body[data-view=home] .home-ask{grid-area:ask;order:unset;align-self:start;width:100%;max-width:none;margin:0;min-height:64px}
  body[data-view=home] .home-actions{grid-area:actions;order:unset;align-self:start;width:100%;margin:11px 0 0;grid-template-columns:1fr;gap:10px}
  body[data-view=home] .home-actions .wizard-portal{min-height:70px;padding:10px 13px;border-radius:21px}
  body[data-view=home] .home-actions .wizard-portal strong{font-size:14px}
  body[data-view=home] .event-feed{grid-area:feed;order:unset;margin:27px 0 26px}
  body[data-view=home] .home-foot{grid-area:foot;order:unset}
  body[data-view=home] .event-feed .event-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:13px}
  body[data-view=home] .event-feed .card{min-height:188px}
  body[data-view=home] .event-feed .card-media{height:112px}
}
@media (min-width:1380px){body[data-view=home] .event-feed .event-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (min-width:1700px){body[data-view=home] #homeView{padding-left:max(34px,calc(50% - 790px));padding-right:max(34px,calc(50% - 790px))}body[data-view=home] .event-feed .event-grid{grid-template-columns:repeat(7,minmax(0,1fr))}}

/* Local partner categories, including pubs. */
.partner-kinds{display:flex;gap:7px;padding:2px 14px 11px;overflow-x:auto;scrollbar-width:none}.partner-kinds::-webkit-scrollbar{display:none}.partner-kinds button{flex:0 0 auto;padding:8px 13px;border:0;border-radius:999px;background:color-mix(in srgb,var(--ink) 6%,var(--surface));color:var(--muted);font:750 11px/1 var(--font)}.partner-kinds button[aria-pressed=true]{background:var(--ink);color:var(--on-ink)}

/* 2.0 discovery layer: useful signals without adding new navigation. */
.home-contribute{order:5;display:flex;justify-content:flex-end;margin:7px 14px 4px}.home-contribute button{height:34px;padding:0 12px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:750 11px/1 var(--font);box-shadow:inset 0 0 0 1px var(--line)}.home-contribute button span{color:var(--dream-lilac);font-size:16px;vertical-align:-1px;margin-right:3px}
body[data-view=home] .event-feed{order:6}
.card-signal{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0}.card-signal small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-signal .why{color:#8d7eb0;font-weight:850}.card-state{flex:0 0 auto;padding:2px 5px;border-radius:999px;background:color-mix(in srgb,#b27b61 14%,var(--surface));color:#b27b61;font-weight:850}
.going-btn[aria-pressed=true]{background:color-mix(in srgb,#7f9d91 20%,var(--surface))!important;color:color-mix(in srgb,#7f9d91 74%,var(--ink))!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,#7f9d91 35%,transparent)}
.local-moment{display:grid;gap:10px;margin:14px 0;padding:13px;border-radius:18px;background:color-mix(in srgb,var(--surface) 88%,#718d9b 12%)}.local-moment small{color:#718d9b;font-size:8px;font-weight:900;letter-spacing:.14em}.local-moment h3{margin:2px 0 0;font-size:16px}.local-moment video{display:block;width:100%;max-height:280px;border-radius:14px;background:#0b0d10}
#map.map-overview .bpin-label{display:none}#map.map-overview .bpin-drop{transform:scale(.86)}#map.map-street .bpin-label{font-weight:850}

/* 2.0.1: calm hero and a permanent contribution entry in the bottom nav. */
.home-contribute{display:none!important}
.tabbar{grid-template-columns:repeat(5,minmax(0,1fr))!important}

/* Aktiviteter ligger over innholdet, mens de fem hovedvalgene alltid er tilgjengelige. */
#filterDialog.nav-visible{
  position:fixed;
  inset:calc(var(--header-h) + var(--safe-top)) 0 var(--tabbar-h) 0;
  width:100%;
  max-width:none;
  height:auto;
  max-height:none;
  margin:0;
  border-radius:0;
  z-index:1500;
}
#filterDialog.nav-visible form{
  height:100%;
  max-height:none;
  padding-bottom:18px;
}

/* The selected place is the landing headline, centred directly above the slides. */
body[data-view=home] .home-hello{
  width:100%;
  text-align:center;
}
body[data-view=home] #helloTitle{
  display:flex;
  justify-content:center;
  align-items:center;
  margin-left:auto;
  margin-right:auto;
}
.tabbar button{min-width:0;font-size:10.5px}
.glide-dots, .surprise-portal, .home-actions {display:none!important}
.g-slide .slide-top{top:22px;left:22px;right:22px}
.g-slide .slide-body{padding:18px 24px 30px}
.g-slide .slide-body h3{margin-bottom:8px;font-size:clamp(21px,6vw,26px);line-height:1.06;-webkit-line-clamp:2}
.slide-place{display:flex;align-items:center;gap:6px;min-width:0;color:rgba(255,255,255,.9);font-size:12px}.slide-place .ico{width:15px;height:15px;flex:0 0 15px}.slide-place b{font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-slide .slide-meta,.g-slide .slide-foot{display:none!important}

/* ================= Search Engine / Lokalguiden (2026 Wireframe) ================= */
.chat-panel {
  position: fixed;
  inset: 0;
  /* Above the app header, but below the persistent bottom navigation. */
  z-index: 1500;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  color: var(--ink);
  padding: calc(14px + var(--safe-top)) 18px calc(16px + var(--safe-bottom));
  overflow: hidden;
}

.search-engine-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex: 0 0 auto;
  min-height: 44px;
  margin-bottom: 14px;
  background: var(--surface);
}

.search-engine-head h2 {
  font-family: var(--display);
  font-size: 24px;
  font-weight: 800;
  margin: 0;
  letter-spacing: -0.5px;
}

.search-engine-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 52px;
  padding: 0 14px;
  border-radius: 18px;
  background: color-mix(in srgb, var(--soft) 85%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--dream-lilac) 25%, transparent);
  margin-bottom: 12px;
}

.search-engine-input-wrap .search-icon {
  width: 20px;
  height: 20px;
  color: var(--dream-lilac);
  margin-right: 10px;
  display: grid;
  place-items: center;
}

.search-engine-input-wrap input {
  flex: 1;
  min-width: 0;
  height: 48px;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ink);
  font: 650 15px/1.2 var(--body);
}

.search-engine-input-wrap input::placeholder {
  color: var(--muted);
}

.search-engine-input-wrap button {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: color-mix(in srgb, var(--muted) 15%, transparent);
  color: var(--muted);
  font-size: 16px;
  display: grid;
  place-items: center;
  border: 0;
}

/* Quick Filter Pills */
.quick-pills-row {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  padding-bottom: 6px;
  margin-bottom: 8px;
}

.quick-pills-row::-webkit-scrollbar {
  display: none;
}

.quick-pills-row .pill {
  flex: 0 0 auto;
  height: 34px;
  padding: 0 14px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--soft) 70%, transparent);
  color: var(--ink);
  font: 700 12px/1 var(--body);
  border: 1px solid color-mix(in srgb, var(--line) 60%, transparent);
  transition: all 0.2s ease;
  cursor: pointer;
}

.quick-pills-row .pill[aria-pressed="true"] {
  background: color-mix(in srgb, var(--dream-lilac) 28%, var(--surface));
  border-color: var(--dream-lilac);
  color: #fff;
}

/* Parsed Pills Bar ("Forstått:") */
.parsed-pills-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 11.5px;
  color: var(--muted);
}

.parsed-pills-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.parsed-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--dream-lilac) 18%, var(--surface));
  color: var(--ink);
  font-weight: 700;
  font-size: 11px;
}

.parsed-tag b {
  color: var(--dream-lilac);
  font-size: 9px;
  letter-spacing: 0.5px;
}

.parsed-tag button {
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 13px;
  cursor: pointer;
  padding: 0;
}

/* Body Content */
.search-engine-body {
  flex: 1;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-bottom: 80px;
}

.search-section {
  margin-bottom: 22px;
}

.search-section h3 {
  font-size: 10px;
  font-weight: 850;
  letter-spacing: 1.2px;
  color: var(--muted);
  text-transform: uppercase;
  margin: 0 0 10px 2px;
}

/* Recent Searches */
.recent-search-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.recent-search-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--soft) 50%, transparent);
  border: 0;
  color: var(--ink);
  font: 650 13.5px/1.2 var(--body);
  text-align: left;
  cursor: pointer;
}

.recent-search-item span {
  display: flex;
  align-items: center;
  gap: 10px;
}

.recent-search-item .ico {
  width: 16px;
  height: 16px;
  color: var(--muted);
}

.recent-search-item .arrow {
  color: var(--muted);
  font-size: 16px;
}

/* Suggestion Grid (2x2) */
.suggest-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.suggest-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 14px;
  border-radius: 16px;
  background: color-mix(in srgb, var(--soft) 60%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--line) 50%, transparent);
  text-align: left;
  cursor: pointer;
}

.suggest-card .dot {
  font-size: 10px;
  color: var(--c, var(--dream-lilac));
}

.suggest-card strong {
  font-size: 13px;
  font-weight: 750;
  color: var(--ink);
  line-height: 1.2;
}

.suggest-card small {
  font-size: 10.5px;
  color: var(--muted);
}

/* Search Results State */
.search-results-subhead {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 12px;
  font-weight: 750;
  color: var(--ink);
  margin-bottom: 14px;
}

.search-results-subhead small {
  color: var(--muted);
  font-weight: 600;
}

.date-group-header {
  font-size: 13px;
  font-weight: 800;
  color: var(--ink);
  margin: 16px 2px 8px;
}

.search-event-card {
  display: grid;
  grid-template-columns: 48px 4px 1fr;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 8px;
  border-radius: 16px;
  background: color-mix(in srgb, var(--soft) 55%, var(--surface));
  border: 0;
  text-align: left;
  width: 100%;
  cursor: pointer;
}

.search-event-time {
  font-size: 13px;
  font-weight: 850;
  color: var(--ink);
  text-align: right;
}

.search-event-bar {
  width: 4px;
  height: 28px;
  border-radius: 2px;
  background: var(--c, var(--dream-lilac));
}

.search-event-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.search-event-info strong {
  font-size: 13px;
  font-weight: 750;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-event-info small {
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Floating Bottom Bar */
.search-floating-bar {
  position: absolute;
  bottom: calc(16px + var(--safe-bottom));
  left: 18px;
  right: 18px;
  display: flex;
  gap: 10px;
  z-index: 10;
}

.search-main-cta {
  flex: 1;
  height: 52px;
  border-radius: 18px;
  background: var(--dream-lilac);
  color: #fff;
  font: 800 15px/1 var(--body);
  border: 0;
  box-shadow: 0 12px 30px -10px var(--dream-lilac);
  cursor: pointer;
}

.search-map-cta {
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
  border-radius: 18px;
  background: color-mix(in srgb, var(--soft) 80%, var(--surface));
  color: var(--ink);
  border: 1px solid color-mix(in srgb, var(--line) 80%, transparent);
  display: grid;
  place-items: center;
  cursor: pointer;
}

.search-map-cta .ico {
  width: 22px;
  height: 22px;
}

/* "Lokale perler" in search results – places, not dated events */
.gem-results{grid-column:1/-1;margin:0 0 10px}
.gem-results-head{display:flex;align-items:baseline;gap:8px;margin:2px 2px 7px}
.gem-results-head b{font-size:12px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:color-mix(in srgb,#e8a84c 80%,var(--ink))}
.gem-results-head small{font-size:11px;color:var(--muted);font-weight:700}
.gem-results-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.gem-result{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;align-items:start;padding:10px;border:1px solid color-mix(in srgb,#e8a84c 30%,var(--line));border-radius:14px;background:color-mix(in srgb,#e8a84c 8%,var(--surface));color:var(--ink);text-align:left;cursor:pointer}
.gem-result:hover,.gem-result:focus-visible{border-color:#e8a84c;background:color-mix(in srgb,#e8a84c 14%,var(--surface))}
.gem-result-ico{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:color-mix(in srgb,#e8a84c 20%,var(--surface));font-size:18px}
.gem-result-copy{display:grid;gap:2px;min-width:0}
.gem-result-copy strong{font-size:13.5px;line-height:1.25}
.gem-result-copy small{font-size:11px;color:var(--muted);font-weight:700}
.gem-result-copy em{font-style:normal;font-size:11.5px;color:var(--muted);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gem-results-note,.search-relaxed-note{grid-column:1/-1;margin:4px 2px 10px;font-size:12.5px;color:var(--muted);line-height:1.45}
.results-more{grid-column:1/-1;justify-self:center;min-height:44px;margin:8px 0 4px;padding:0 22px;border:0;border-radius:999px;background:color-mix(in srgb,var(--dream-lilac,#8b5cf6) 16%,var(--surface));color:var(--ink);font-weight:800;font-size:13px;cursor:pointer}

/* ===== 2.1 launch intro: compositor-only (transform + opacity), ~1.9 s, tap to skip ===== */
#brandIntro.bi-css{position:fixed;inset:0;z-index:2147483647;overflow:hidden;cursor:pointer;background:#16191e;
  animation:biOut .55s cubic-bezier(.4,0,.2,1) 1.45s both;will-change:opacity}
:root[data-theme=light] #brandIntro.bi-css{background:#f4f6f5}
#brandIntro.bi-css .bi-coast{opacity:0;animation:biCoast 1.6s cubic-bezier(.2,.7,.2,1) both;will-change:opacity,transform}
#brandIntro.bi-css .bi-coast path{stroke-dasharray:none!important;stroke-dashoffset:0!important}
#brandIntro.bi-css .bi-mark{animation:biPop .62s cubic-bezier(.2,1.35,.4,1) .08s both;will-change:transform,opacity}
#brandIntro.bi-css .bi-hva{animation:biRise .6s cubic-bezier(.2,.8,.2,1) .2s both;will-change:transform,opacity}
#brandIntro.bi-css .bi-where{animation:biSlide .62s cubic-bezier(.2,.8,.2,1) .5s both;will-change:transform,opacity}
#brandIntro.bi-css .bi-stage{animation:biLift .55s cubic-bezier(.4,0,.2,1) 1.45s both}
#brandIntro.bi-css.bi-skip,#brandIntro.bi-css.bi-skip .bi-stage{animation-duration:.22s;animation-delay:0s}
@keyframes biCoast{from{opacity:0;transform:translate(-50%,-50%) scale(1.08)}to{opacity:.38;transform:translate(-50%,-50%) scale(1)}}
@keyframes biPop{from{opacity:0;transform:scale(.55) rotate(-12deg)}to{opacity:1;transform:none}}
@keyframes biRise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes biSlide{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:none}}
@keyframes biLift{to{transform:translateY(-14px) scale(.97)}}
@keyframes biOut{to{opacity:0;visibility:hidden}}
/* the page underneath eases in as the curtain lifts */
html.intro-reveal #homeView .home-hello,html.intro-reveal #homeView .home-discovery,html.intro-reveal #homeView .hero,html.intro-reveal .tabbar{animation:biPage .7s cubic-bezier(.2,.8,.2,1) 1.55s both}
html.intro-reveal #homeView .hero{animation-delay:1.62s}
html.intro-reveal .tabbar{animation-delay:1.7s}
@keyframes biPage{from{opacity:0;translate:0 18px}to{opacity:1;translate:none}}
.intro-on .app-header .brand-icon,.intro-on #helloTitle .where{visibility:visible}
@media (prefers-reduced-motion:reduce){#brandIntro.bi-css{display:none}html.intro-reveal *{animation:none!important}}
/* boot variant: entrance plays from first paint, exit waits for .bi-leave (added when the app is ready) */
#brandIntro.bi-css.bi-boot,#brandIntro.bi-css.bi-boot .bi-stage{animation:none}
#brandIntro.bi-css.bi-boot.bi-leave{animation:biOut .5s cubic-bezier(.4,0,.2,1) both}
#brandIntro.bi-css.bi-boot.bi-leave .bi-stage{animation:biLift .5s cubic-bezier(.4,0,.2,1) both}
#brandIntro.bi-css.bi-boot.bi-skip,#brandIntro.bi-css.bi-boot.bi-skip .bi-stage{animation-duration:.2s}
html.bi-still #brandIntro.bi-css *{animation:none!important}
html.intro-reveal-now #homeView .home-hello,html.intro-reveal-now #homeView .home-discovery,html.intro-reveal-now #homeView .hero,html.intro-reveal-now .tabbar{animation:biPage .6s cubic-bezier(.2,.8,.2,1) .12s both}
html.intro-reveal-now #homeView .home-discovery{animation-delay:.18s}
html.intro-reveal-now #homeView .hero{animation-delay:.24s}
html.intro-reveal-now .tabbar{animation-delay:.3s}
