/* Mysuru Dasara 2026 Visitor Guide - visitor app styles.
   Light, high-contrast palette for outdoor reading in sunlight; one typeface family
   (Noto) across Kannada, English and Hindi so layouts stay consistent. */
:root{
  --ink:#14110F; --ink-2:#4A443D; --ink-3:#7A7268;
  --paper:#FAF7F2; --card:#FFFFFF; --line:#E9E3D9; --line-2:#F1ECE4;
  --gold:#C98A1B; --gold-lt:#F6E7C8; --maroon:#7A1F2B; --maroon-lt:#F6E4E6;
  --green:#1E7A4C; --green-lt:#E1F2E8; --amber:#B4690E; --amber-lt:#FBEBD5; --red:#C0262D; --red-lt:#FBE3E3;
  --r:16px; --r-s:10px;
  --sh:0 1px 2px rgba(20,17,15,.06),0 6px 18px rgba(20,17,15,.06);
  --font:'Noto Sans','Noto Sans Kannada','Noto Sans Devanagari',system-ui,-apple-system,'Segoe UI',sans-serif;
  --tabs:64px; --top:58px;
  --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{background:#E9E4DC;-webkit-text-size-adjust:100%}
body{font-family:var(--font);color:var(--ink);background:#E9E4DC;font-size:15px;line-height:1.5;min-height:100vh}
:lang(kn) body,html[lang=kn] body{line-height:1.6}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:inherit;text-decoration:none}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:6px}

#app{position:relative;max-width:480px;min-height:100vh;margin:0 auto;background:var(--paper);box-shadow:0 0 0 1px rgba(0,0,0,.04),0 20px 60px rgba(0,0,0,.08)}
#view{padding:calc(var(--top) + 6px) 0 calc(var(--tabs) + var(--safe-b) + 24px);outline:0}
.gate-mode #view{padding:0}
.gate-mode .top,.gate-mode .tabs{display:none}

/* ---------- top bar ---------- */
.top{position:fixed;top:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;height:var(--top);z-index:40;
  display:flex;align-items:center;gap:8px;padding:0 12px;background:rgba(250,247,242,.92);backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid var(--line-2)}
.top .brand{display:flex;align-items:center;gap:9px;min-width:0;flex:1}
.top .mark{width:34px;height:34px;border-radius:10px;background:var(--onyx);color:#F6E7C8;display:grid;place-items:center;flex:none}
.top .mark svg{width:20px;height:20px}
.top .bt{min-width:0}
.top .bt b{display:block;font-size:15px;font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .bt small{display:block;font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.top .back{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--card);border:1px solid var(--line);flex:none}
.top .back svg{width:18px;height:18px}
.top .title{flex:1;min-width:0;font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pill{height:36px;display:inline-flex;align-items:center;gap:6px;padding:0 12px;border-radius:20px;border:1px solid var(--line);background:var(--card);font-size:13px;font-weight:600;flex:none}
.pill svg{width:16px;height:16px}
.sos{height:36px;padding:0 12px;border-radius:20px;background:var(--red);color:#fff;font-size:13px;font-weight:700;letter-spacing:.04em;display:inline-flex;align-items:center;gap:6px;flex:none}
.sos svg{width:15px;height:15px}

/* ---------- tab bar ---------- */
.tabs{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;z-index:40;height:calc(var(--tabs) + var(--safe-b));padding:6px 6px var(--safe-b);
  display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,255,255,.95);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;color:var(--ink-3);border-radius:12px}
.tabs a svg{width:22px;height:22px}
.tabs a.on{color:var(--ink)}
.tabs a.on .ic{background:var(--gold-lt)}
.tabs .ic{width:44px;height:28px;border-radius:14px;display:grid;place-items:center}

/* ---------- common ---------- */
.wrap{padding:0 16px}
.sec{margin-top:22px}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:0 16px;margin-bottom:10px}
.sec-h h2{font-size:17px;font-weight:700}
.sec-h a{font-size:13px;font-weight:600;color:var(--gold);white-space:nowrap}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.muted{color:var(--ink-3)}
.chip{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border-radius:13px;font-size:12px;font-weight:600;background:var(--line-2);color:var(--ink-2);white-space:nowrap}
.chip svg{width:13px;height:13px}
.chip.ok{background:var(--green-lt);color:var(--green)}
.chip.warn{background:var(--amber-lt);color:var(--amber)}
.chip.bad{background:var(--red-lt);color:var(--red)}
.chip.gold{background:var(--gold-lt);color:#7A5208}
.btn{display:flex;align-items:center;justify-content:center;gap:9px;height:52px;border-radius:14px;font-size:16px;font-weight:700;width:100%}
.btn svg{width:20px;height:20px}
.btn.pri{background:var(--onyx);color:#fff}
.btn.sec{background:var(--card);border:1.5px solid var(--ink);color:var(--ink)}
.btn.sm{height:40px;font-size:14px;border-radius:12px;width:auto;padding:0 14px}
.icon-btn{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--onyx);color:#fff;flex:none}
.icon-btn svg{width:18px;height:18px}
.icon-btn.light{background:var(--line-2);color:var(--ink)}
.hscroll{display:flex;gap:12px;overflow-x:auto;padding:2px 16px 8px;scroll-snap-type:x mandatory;scrollbar-width:none}
.hscroll::-webkit-scrollbar{display:none}
.hscroll > *{scroll-snap-align:start;flex:none}
.ph{background:linear-gradient(135deg,#2A2420,#14110F);color:#F6E7C8;display:grid;place-items:center;position:relative;overflow:hidden}
.ph::before{content:"";position:absolute;inset:0;opacity:.18;background-image:radial-gradient(circle at 1px 1px,#F6E7C8 1px,transparent 1.5px);background-size:14px 14px}
.ph svg{width:34%;height:34%;max-width:56px;max-height:56px;position:relative;opacity:.9}
.proto{margin:26px 16px 0;padding:12px 14px;border-radius:12px;border:1px dashed var(--line);font-size:12px;color:var(--ink-3);line-height:1.5}
.proto b{color:var(--ink-2)}

/* ---------- language gate ---------- */
.gate{min-height:100vh;display:flex;flex-direction:column;padding:28px 22px calc(28px + var(--safe-b));background:var(--onyx);color:#fff;position:relative;overflow:hidden}
.gate::before{content:"";position:absolute;inset:0;background:url(img/palace-cut.webp) center 30%/cover;opacity:.32}
.gate::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,17,15,.35) 0%,rgba(20,17,15,.85) 55%,#14110F 100%)}
.gate > *{position:relative;z-index:1}
.gate .g-brand{display:flex;align-items:center;gap:10px}
.gate .g-brand .mark{width:40px;height:40px;border-radius:12px;background:#F6E7C8;color:var(--ink);display:grid;place-items:center}
.gate .g-brand .mark svg{width:24px;height:24px}
.gate .g-brand b{font-size:14px;letter-spacing:.02em}
.gate .g-brand small{display:block;font-size:11px;opacity:.7}
.gate .scan{margin-top:auto;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(8px);display:flex;gap:12px;align-items:center}
.gate .scan .qrbadge{width:42px;height:42px;border-radius:10px;background:#F6E7C8;color:var(--ink);display:grid;place-items:center;flex:none}
.gate .scan .qrbadge svg{width:24px;height:24px}
.gate .scan small{display:block;font-size:11px;opacity:.75;letter-spacing:.04em}
.gate .scan b{display:block;font-size:16px;line-height:1.3}
.gate .scan span{display:block;font-size:13px;opacity:.85}
.gate h1{font-size:15px;font-weight:600;line-height:1.5;margin:26px 0 14px;opacity:.95}
.gate h1 span{display:block}
.gate .langs{display:grid;gap:10px}
.gate .langs button{display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 20px;border-radius:16px;background:#fff;color:var(--ink);font-size:21px;font-weight:700;text-align:left}
.gate .langs button small{font-size:12px;font-weight:600;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase}
.gate .langs button:active{transform:scale(.99)}
.gate .note{margin-top:16px;font-size:12px;opacity:.7;text-align:center}
.gate.noscan .scan{display:none}
.gate.noscan h1{margin-top:auto}

/* ---------- home ---------- */
.here{margin:6px 16px 0;padding:14px;display:flex;gap:12px;align-items:center;border-radius:var(--r);background:var(--onyx);color:#fff}
.here .hi{width:46px;height:46px;border-radius:12px;background:#F6E7C8;color:var(--ink);display:grid;place-items:center;flex:none}
.here .hi svg{width:24px;height:24px}
.here small{display:block;font-size:11px;opacity:.7;letter-spacing:.04em;text-transform:uppercase}
.here b{display:block;font-size:16px;line-height:1.3}
.here .go{margin-left:auto;height:38px;padding:0 14px;border-radius:12px;background:#fff;color:var(--ink);font-size:13px;font-weight:700;display:flex;align-items:center;gap:6px;flex:none}
.hero{margin:12px 16px 0;border-radius:20px;overflow:hidden;position:relative;color:#fff;min-height:190px;display:flex;align-items:flex-end;background:var(--onyx)}
.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(20,17,15,.9),rgba(20,17,15,.1) 70%)}
.hero .hc{position:relative;z-index:1;padding:16px}
.hero small{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#F6E7C8}
.hero h1{font-size:22px;line-height:1.2;margin:4px 0 6px}
.hero .cd{display:flex;gap:6px;margin-top:8px}
.hero .cd span{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);border-radius:10px;padding:5px 9px;font-size:12px;backdrop-filter:blur(6px)}
.hero .cd b{font-size:16px;margin-right:3px}
.ticker{margin:12px 16px 0;padding:11px 13px;border-radius:14px;display:flex;gap:10px;align-items:flex-start;background:var(--amber-lt);color:#5C3A06;font-size:13px;line-height:1.45}
.ticker svg{width:18px;height:18px;flex:none;margin-top:1px}
.ticker.info{background:var(--gold-lt)}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:0 16px}
.tile{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 4px 10px;border-radius:16px;background:var(--card);border:1px solid var(--line);text-align:center;font-size:12px;font-weight:600;line-height:1.25;min-height:96px}
.tile .ti{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:var(--line-2)}
.tile .ti svg{width:22px;height:22px}
.tile.t-dasara .ti{background:var(--maroon-lt);color:var(--maroon)}
.tile.t-places .ti{background:var(--gold-lt);color:#7A5208}
.tile.t-near .ti{background:#E3EEF8;color:#1F4E79}
.tile.t-circ .ti{background:#EDE7F6;color:#4B2E83}
.tile.t-park .ti{background:#E6F0EC;color:#215B44}
.tile.t-amen .ti{background:#E4F1F4;color:#185866}
.tile.t-sos .ti{background:var(--red-lt);color:var(--red)}
.tile.t-news .ti{background:#F1EFE9;color:var(--ink-2)}
.pcard{width:200px;border-radius:var(--r);overflow:hidden;background:var(--card);border:1px solid var(--line)}
.pcard .im{height:120px;position:relative}
.pcard .im img,.pcard .im .ph{width:100%;height:100%;object-fit:cover}
.pcard .im .chip{position:absolute;left:8px;bottom:8px;background:rgba(255,255,255,.92)}
.pcard .pc{padding:10px 12px 12px}
.pcard b{display:block;font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard small{font-size:12px;color:var(--ink-3)}
.install{margin:22px 16px 0;padding:14px;border-radius:var(--r);display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line)}
.install .ii{width:42px;height:42px;border-radius:12px;background:var(--onyx);color:#fff;display:grid;place-items:center;flex:none}
.install .ii svg{width:20px;height:20px}
.install b{display:block;font-size:14px}
.install span{display:block;font-size:12px;color:var(--ink-3);line-height:1.4}
.install .acts{display:flex;flex-direction:column;gap:6px;margin-left:auto}
.install .acts button{height:32px;padding:0 12px;border-radius:10px;font-size:12px;font-weight:700}
.install .acts .y{background:var(--onyx);color:#fff}
.install .acts .n{color:var(--ink-3)}

/* ---------- places list ---------- */
.search{margin:6px 16px 0;position:relative}
.search input{width:100%;height:48px;border-radius:14px;border:1px solid var(--line);background:var(--card);padding:0 14px 0 44px;font:inherit;font-size:15px;color:var(--ink)}
.search svg{position:absolute;left:14px;top:14px;width:20px;height:20px;color:var(--ink-3)}
.filters{display:flex;gap:8px;overflow-x:auto;padding:12px 16px 4px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filters button{height:36px;padding:0 14px;border-radius:18px;border:1px solid var(--line);background:var(--card);font-size:13px;font-weight:600;white-space:nowrap;flex:none}
.filters button.on{background:var(--onyx);color:#fff;border-color:var(--onyx)}
.list{display:flex;flex-direction:column;gap:10px;padding:10px 16px 0}
.row{display:flex;gap:12px;align-items:center;padding:10px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.row .th{width:72px;height:72px;border-radius:12px;overflow:hidden;flex:none}
.row .th img,.row .th .ph{width:100%;height:100%;object-fit:cover}
.row .rb{flex:1;min-width:0}
.row .rb b{display:block;font-size:15px;line-height:1.3}
.row .rb .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.row .go-ic{width:40px;height:40px;border-radius:12px;background:var(--onyx);color:#fff;display:grid;place-items:center;flex:none}
.row .go-ic svg{width:18px;height:18px}
.row .ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--line-2)}
.row .ico svg{width:22px;height:22px}
.empty{padding:40px 16px;text-align:center;color:var(--ink-3)}

/* ---------- place detail ---------- */
.p-hero{position:relative;height:270px;margin-top:calc(-1 * var(--top) - 6px);background:var(--onyx)}
.p-hero img,.p-hero .ph{width:100%;height:100%;object-fit:cover}
.p-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,17,15,.55) 0%,rgba(20,17,15,0) 30%,rgba(20,17,15,0) 60%,rgba(20,17,15,.35))}
.p-body{position:relative;margin-top:-26px;background:var(--paper);border-radius:24px 24px 0 0;padding:20px 16px 0;z-index:2}
.p-body h1{font-size:23px;line-height:1.25;font-weight:700}
.p-body .meta{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 14px}
.p-body p.desc{font-size:15px;line-height:1.65;color:var(--ink-2)}
.nav-cta{display:grid;grid-template-columns:1fr auto;gap:10px;margin:18px 0 6px}
.facts{margin-top:18px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.fact{display:flex;gap:12px;padding:13px 14px;align-items:flex-start}
.fact + .fact{border-top:1px solid var(--line-2)}
.fact svg{width:20px;height:20px;flex:none;color:var(--ink-3);margin-top:1px}
.fact small{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.fact span{display:block;font-size:14px;color:var(--ink)}
.fact a.link{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:13px;font-weight:700;color:var(--gold)}
.fac{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fac a{padding:12px 10px;border-radius:14px;background:var(--card);border:1px solid var(--line);font-size:12px;line-height:1.35}
.fac a svg{width:20px;height:20px;margin-bottom:6px}
.fac a b{display:block;font-size:13px}

/* ---------- dasara ---------- */
.d-hero{margin:6px 16px 0;border-radius:20px;overflow:hidden;position:relative;color:#fff;background:var(--maroon)}
.d-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.d-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(60,10,18,.95),rgba(60,10,18,.2))}
.d-hero .hc{position:relative;z-index:1;padding:60px 16px 16px}
.d-hero small{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#F6E7C8}
.d-hero h1{font-size:24px;line-height:1.2;margin-top:4px}
.days{display:flex;gap:8px;overflow-x:auto;padding:14px 16px 4px;scrollbar-width:none}
.days::-webkit-scrollbar{display:none}
.days button{width:56px;height:66px;border-radius:14px;border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;line-height:1.1}
.days button small{font-size:11px;color:var(--ink-3);font-weight:600}
.days button b{font-size:19px}
.days button.on{background:var(--maroon);border-color:var(--maroon);color:#fff}
.days button.on small{color:#F6E7C8}
.ev{display:flex;gap:12px;padding:12px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.ev .tm{width:58px;flex:none;text-align:center;padding-top:2px}
.ev .tm b{display:block;font-size:15px}
.ev .tm small{font-size:11px;color:var(--ink-3)}
.ev .eb{flex:1;min-width:0;border-left:2px solid var(--line-2);padding-left:12px}
.ev .eb b{display:block;font-size:15px;line-height:1.3}
.ev .eb p{font-size:13px;color:var(--ink-2);margin:3px 0 8px}
.ev .eb .vn{display:flex;align-items:center;gap:8px;justify-content:space-between}
.ev .eb .vn span{font-size:12px;color:var(--ink-3);display:flex;gap:5px;align-items:center}
.ev .eb .vn span svg{width:14px;height:14px}
.ev.star{border-color:var(--maroon);background:linear-gradient(180deg,#FFF,var(--maroon-lt))}
.ev.star .eb{border-left-color:var(--maroon)}
.ann{display:flex;gap:10px;padding:12px 14px;border-radius:14px;font-size:13px;line-height:1.45;background:var(--gold-lt);color:#5C3A06}
.ann.traffic{background:var(--amber-lt)}
.ann svg{width:18px;height:18px;flex:none;margin-top:1px}
.ann small{display:block;font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}

/* ---------- circuits ---------- */
.ccard{display:flex;gap:12px;padding:10px;border-radius:var(--r);background:var(--card);border:1px solid var(--line);align-items:center}
.ccard .th{width:84px;height:84px;border-radius:12px;overflow:hidden;flex:none}
.ccard .th img,.ccard .th .ph{width:100%;height:100%;object-fit:cover}
.ccard b{display:block;font-size:15px;line-height:1.3}
.ccard .meta{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.ccard.star{border-color:var(--maroon)}
.tl{position:relative;padding:4px 16px 0 16px}
.stop{display:flex;gap:12px;position:relative;padding-bottom:16px}
.stop .n{width:30px;height:30px;border-radius:50%;background:var(--onyx);color:#fff;font-weight:700;font-size:13px;display:grid;place-items:center;flex:none;z-index:1}
.stop::before{content:"";position:absolute;left:14px;top:30px;bottom:0;width:2px;background:repeating-linear-gradient(180deg,var(--line) 0 5px,transparent 5px 9px)}
.stop:last-child::before{display:none}
.stop .sb{flex:1;display:flex;gap:10px;align-items:center;padding:8px;border-radius:14px;background:var(--card);border:1px solid var(--line);min-width:0}
.stop .sb .th{width:52px;height:52px;border-radius:10px;overflow:hidden;flex:none}
.stop .sb .th img,.stop .sb .th .ph{width:100%;height:100%;object-fit:cover}
.stop .sb b{display:block;font-size:14px;line-height:1.3}
.stop .leg{font-size:12px;color:var(--ink-3)}

/* ---------- travel / amenities / sos ---------- */
.lot{display:flex;gap:12px;align-items:center;padding:12px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.lot .pi{width:44px;height:44px;border-radius:12px;background:#1F4E79;color:#fff;display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}
.lot .lb{flex:1;min-width:0}
.lot .lb b{display:block;font-size:14px;line-height:1.3}
.lot .bar{height:6px;border-radius:3px;background:var(--line-2);margin-top:8px;overflow:hidden}
.lot .bar i{display:block;height:100%;border-radius:3px}
.note{margin:10px 16px 0;font-size:12px;color:var(--ink-3);display:flex;gap:6px;line-height:1.45}
.note svg{width:15px;height:15px;flex:none;margin-top:1px}
.shuttle{margin:0 16px;padding:14px;border-radius:var(--r);background:var(--onyx);color:#fff;display:flex;gap:12px;align-items:center}
.shuttle .si{width:44px;height:44px;border-radius:12px;background:#F6E7C8;color:var(--ink);display:grid;place-items:center;flex:none}
.shuttle .si svg{width:22px;height:22px}
.shuttle small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.7}
.shuttle b{display:block;font-size:15px;line-height:1.35}
.shuttle span{font-size:12px;opacity:.8}
.sos-big{margin:6px 16px 0;display:flex;align-items:center;gap:14px;padding:18px;border-radius:20px;background:var(--red);color:#fff}
.sos-big .n{font-size:44px;font-weight:800;line-height:1;letter-spacing:-.02em}
.sos-big b{display:block;font-size:16px}
.sos-big span{font-size:13px;opacity:.85}
.sos-big .cl{margin-left:auto;width:54px;height:54px;border-radius:50%;background:#fff;color:var(--red);display:grid;place-items:center;flex:none}
.sos-big .cl svg{width:24px;height:24px}
.num{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.num .nn{min-width:56px;font-size:20px;font-weight:800}
.num b{flex:1;font-size:14px;font-weight:600}
.num.tbc .nn{font-size:14px;color:var(--ink-3)}

/* ---------- near me map ---------- */
.mapbox{margin:6px 16px 0;height:300px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);background:#EAE6DF;position:relative}
.mapbox .ld{position:absolute;inset:0;display:grid;place-items:center;font-size:13px;color:var(--ink-3)}
.locbar{margin:10px 16px 0;padding:10px 12px;border-radius:14px;background:var(--card);border:1px solid var(--line);display:flex;gap:10px;align-items:center;font-size:13px}
.locbar svg{width:18px;height:18px;flex:none}
.locbar span{flex:1;line-height:1.35}
.locbar button{height:34px;padding:0 12px;border-radius:10px;background:var(--onyx);color:#fff;font-size:12px;font-weight:700;white-space:nowrap}
.mk{width:30px;height:30px;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);display:grid;place-items:center;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.mk svg{width:15px;height:15px;transform:rotate(45deg);color:#fff}
.mk-me{width:18px;height:18px;border-radius:50%;background:#1F6FEB;border:3px solid #fff;box-shadow:0 0 0 6px rgba(31,111,235,.25)}
.leaflet-popup-content{font-family:var(--font);font-size:13px;margin:10px 12px}
.leaflet-popup-content b{display:block;font-size:14px;margin-bottom:6px}
.leaflet-popup-content a.pnav{display:inline-flex;gap:6px;align-items:center;height:32px;padding:0 12px;border-radius:9px;background:var(--onyx);color:#fff!important;font-weight:700}

/* ---------- sheet / toast ---------- */
.sheet{position:fixed;inset:0;z-index:60;background:rgba(20,17,15,.45);display:flex;align-items:flex-end;justify-content:center}
.sheet[hidden]{display:none}
.sheet .sh{width:100%;max-width:480px;background:var(--paper);border-radius:22px 22px 0 0;padding:10px 16px calc(20px + var(--safe-b))}
.sheet .grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 14px}
.sheet h3{font-size:16px;margin-bottom:12px}
.sheet .opt{display:flex;justify-content:space-between;align-items:center;width:100%;height:56px;padding:0 16px;border-radius:14px;background:var(--card);border:1px solid var(--line);margin-bottom:8px;font-size:18px;font-weight:700}
.sheet .opt small{font-size:12px;color:var(--ink-3);font-weight:600}
.sheet .opt.on{border:2px solid var(--ink)}
.toast{position:fixed;left:50%;bottom:calc(var(--tabs) + var(--safe-b) + 14px);transform:translate(-50%,20px);z-index:70;max-width:calc(100% - 32px);width:max-content;
  background:var(--onyx);color:#fff;font-size:13px;padding:10px 14px;border-radius:12px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.toast.on{opacity:1;transform:translate(-50%,0)}

.foot{margin:26px 16px 0;font-size:11px;color:var(--ink-3);text-align:center;line-height:1.6}
.foot b{color:var(--ink-2)}

/* embedded in the proposal deck: no install nudges, tighter chrome */
.embed .install,.embed .foot{display:none}
.embed{scrollbar-width:none}
.embed::-webkit-scrollbar{display:none}
@media (min-width:520px){ body{padding:0} }
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }

/* ---------- official logos ---------- */
.top .mark.logo{background:#fff;padding:0;overflow:hidden;box-shadow:0 0 0 1px var(--line)}
.top .mark.logo img{width:100%;height:100%;object-fit:contain}
.gate .g-logos{display:flex;gap:10px;align-items:center}
.gate .g-logos img{width:46px;height:46px;border-radius:50%;background:#fff;object-fit:contain;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.gate .g-brand{margin-top:14px}
.foot{display:block}
.f-logos{display:flex;justify-content:center;gap:10px;margin-bottom:10px}
.f-logos img{width:38px;height:38px;border-radius:50%;background:#fff;object-fit:contain;box-shadow:0 0 0 1px var(--line)}

/* ---------- ask tile / story row ---------- */
.tile.t-ask{font:inherit;font-size:12px;font-weight:600;color:inherit;cursor:pointer}
.tile .ti.duo{background:#FBE7EF;position:relative;width:52px;overflow:hidden;align-items:end;display:flex;justify-content:center}
.tile .ti.duo img{width:24px;height:36px;object-fit:cover;object-position:50% 0;margin-bottom:-4px}
.tile .ti.duo img + img{margin-left:-6px}
.askrow{display:flex;align-items:center;gap:10px;width:100%;margin:2px 0 4px;padding:10px 12px;border-radius:14px;background:#FBE7EF;color:#7A1F4B;font-size:14px;font-weight:600;text-align:left}
.askrow img{width:30px;height:34px;object-fit:contain;object-position:50% 0}
.askrow span{flex:1}
.askrow svg{width:18px;height:18px}

/* ---------- live traffic ---------- */
.ticker.crit{background:var(--red-lt);color:#7A1218;margin-bottom:-4px}
.ann.crit{background:var(--red-lt);color:#7A1218}
.ann b{font-weight:700}
.live-dot{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--green)}
.live-dot::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px var(--green-lt);animation:pulse 1.6s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 7px rgba(30,122,76,.08)}}
.tsum{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:0 16px}
.ts{border-radius:14px;padding:10px 8px;text-align:center;background:var(--card);border:1px solid var(--line)}
.ts b{display:block;font-size:24px;line-height:1.1}
.ts span{font-size:11px;font-weight:600;color:var(--ink-3)}
.ts.ok b{color:var(--green)} .ts.warn b{color:#D97706} .ts.blue b{color:#1F6FEB} .ts.bad b{color:var(--red)}
.chip.blue{background:#E3EEFB;color:#1F4E9F}
.road{display:flex;gap:12px;align-items:center;padding:12px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.road > i{width:6px;align-self:stretch;border-radius:3px;flex:none}
.road > div{flex:1;min-width:0}
.road b{display:block;font-size:14px;line-height:1.3}
.road span{display:block;font-size:12px;color:var(--ink-3);margin-top:2px}
.legend{display:flex;gap:12px;flex-wrap:wrap;margin:8px 16px 0;font-size:11.5px;color:var(--ink-3);font-weight:600}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:18px;height:4px;border-radius:2px;display:inline-block}
.legend i.dash{background:repeating-linear-gradient(90deg,var(--red) 0 4px,transparent 4px 7px)}
.note span{flex:1}

/* ---------- Ask Gajju & Ammu ---------- */
.ch-fab{position:fixed;right:max(14px,calc(50% - 240px + 14px));bottom:calc(var(--tabs) + var(--safe-b) + 14px);z-index:45;width:62px;height:62px;border-radius:50%;
  background:linear-gradient(145deg,#FFF6E4,#F6D8E4);box-shadow:0 10px 26px rgba(122,31,43,.28),0 0 0 3px #fff;display:grid;place-items:center;overflow:hidden}
.ch-fab span{display:flex;align-items:flex-end;height:54px;margin-top:8px}
.ch-fab img{width:30px;height:48px;object-fit:contain;object-position:50% 0}
.ch-fab img + img{margin-left:-8px}
.ch-fab::after{content:"";position:absolute;top:6px;right:8px;width:11px;height:11px;border-radius:50%;background:var(--green);border:2px solid #fff}
.gate-mode .ch-fab,.ch-open .ch-fab{display:none}
.ch-sheet{position:fixed;inset:0;z-index:80;background:rgba(20,17,15,.45);display:flex;align-items:flex-end;justify-content:center}
.ch-sheet[hidden]{display:none}
.ch-panel{width:100%;max-width:480px;height:min(88vh,760px);background:var(--paper);border-radius:22px 22px 0 0;display:flex;flex-direction:column;overflow:hidden}
.ch-head{display:flex;align-items:center;gap:10px;padding:14px 14px 10px;background:linear-gradient(135deg,#3A0D1E,#14110F);color:#fff}
.ch-who{display:flex;gap:10px;align-items:center;flex:1;min-width:0}
.ch-duo{display:flex;flex:none;background:#FFF6E4;border-radius:14px;padding:3px 4px 0;height:44px;align-items:flex-end}
.ch-duo img{width:24px;height:40px;object-fit:contain;object-position:50% 0}
.ch-who b{display:block;font-size:15px}
.ch-who small{display:block;font-size:11px;opacity:.75}
.ch-x{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.12);color:#fff;font-size:15px}
.ch-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line-2);background:var(--silk)}
.ch-switch button{display:flex;gap:8px;align-items:center;padding:6px 8px;border-radius:14px;border:1.5px solid var(--line);text-align:left;min-width:0}
.ch-switch button img{width:28px;height:34px;object-fit:contain;object-position:50% 0;flex:none}
.ch-switch button b{display:block;font-size:13px}
.ch-switch button small{display:block;font-size:10.5px;color:var(--ink-3);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-switch button span{min-width:0}
.ch-switch button[aria-pressed="true"]{border-color:var(--onyx);background:var(--gold-lt)}
.ch-log{flex:1;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:10px}
.ch-b{display:flex;gap:8px;align-items:flex-end;max-width:92%}
.ch-b.me{align-self:flex-end}
.ch-b .ch-av{width:30px;height:36px;flex:none}
.ch-b .ch-av img{width:100%;height:100%;object-fit:contain;object-position:50% 0}
.ch-t{padding:10px 12px;border-radius:16px;font-size:14px;line-height:1.5;background:var(--silk);border:1px solid var(--line);border-bottom-left-radius:4px;min-width:0;overflow-wrap:anywhere}
.ch-t > i{display:block;font-style:normal;font-size:11px;font-weight:700;letter-spacing:.04em;margin-bottom:3px}
.ch-b.gajju .ch-t{border-left:3px solid #D49A2A} .ch-b.gajju .ch-t > i{color:#8A5A06}
.ch-b.ammu .ch-t{border-left:3px solid #C9558F} .ch-b.ammu .ch-t > i{color:#A8285F}
.ch-b.me .ch-t{background:var(--onyx);color:#fff;border-color:var(--onyx);border-radius:16px;border-bottom-right-radius:4px}
.ch-t a{color:var(--gold);font-weight:700}
.ch-t .ch-note{color:var(--ink-3)}
.ch-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.ch-chips button{font-size:12px;font-weight:600;padding:6px 10px;border-radius:14px;background:var(--line-2);color:var(--ink-2);text-align:left}
.ch-form{display:flex;gap:8px;padding:10px 12px calc(10px + var(--safe-b));border-top:1px solid var(--line);background:var(--silk)}
.ch-form input{flex:1;min-width:0;height:46px;border-radius:14px;border:1px solid var(--line);padding:0 14px;font:inherit;font-size:15px;background:var(--paper)}
.ch-form button{height:46px;padding:0 16px;border-radius:14px;background:var(--onyx);color:#fff;font-weight:700;font-size:14px}
.embed .ch-fab{right:14px}

/* ---------- at-a-glance: traffic, crowd, ways to get there, entry ---------- */
.row .rb .meta{margin-top:6px}
.modes{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.md{display:inline-flex;align-items:center;gap:3px;height:24px;padding:0 8px 0 6px;border-radius:8px;background:#F1EDE6;color:var(--ink-2);font-size:11.5px;font-weight:600;white-space:nowrap}
.md svg{width:15px;height:15px;flex:none}
.md b{font-weight:800;color:var(--ink);margin-left:1px}
.md.ent.tk{background:#FFF1DA;color:#8A5A06}
.md.ent.fr{background:var(--green-lt);color:var(--green)}
.chip.crowd{gap:6px}
.lv{display:inline-flex;align-items:flex-end;gap:2px;height:11px}
.lv b{width:3px;border-radius:1px;background:currentColor;opacity:.25}
.lv b:nth-child(1){height:5px}.lv b:nth-child(2){height:8px}.lv b:nth-child(3){height:11px}
.lv.l1 b:nth-child(1),.lv.l2 b:nth-child(-n+2),.lv.l3 b{opacity:1}
.key{display:flex;flex-wrap:wrap;gap:6px 12px;margin:12px 16px 0;padding:10px 12px;border-radius:14px;background:var(--card);border:1px dashed var(--line);font-size:11.5px;font-weight:600;color:var(--ink-2)}
.key span{display:inline-flex;align-items:center;gap:4px}
.key svg{width:15px;height:15px}
.key .tk{color:#8A5A06}.key .fr{color:var(--green)}
.key .lv{color:var(--red)}
.now{margin-top:16px;padding:12px 14px;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.now small{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.now .meta{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px}
.now .modes{margin-top:6px}
.now .md{height:30px;font-size:12.5px;padding:0 10px 0 8px}
.now .md svg{width:17px;height:17px}

.num .nn.long{font-size:15px;min-width:auto}

/* ================= production additions (Dasara 2026 launch) ================= */
/* festive hero with the Jumboo Savari countdown */
.hero.grand{min-height:250px;border:1.5px solid rgba(201,138,27,.55);box-shadow:0 10px 30px rgba(122,31,43,.18)}
.hero.grand::before{content:"";position:absolute;inset:6px;border:1px solid rgba(246,231,200,.35);border-radius:15px;z-index:1;pointer-events:none}
.hero.grand::after{background:linear-gradient(0deg,rgba(60,10,18,.94) 8%,rgba(60,10,18,.35) 55%,rgba(20,17,15,.05))}
.hero.grand h1{font-size:24px;text-shadow:0 2px 12px rgba(0,0,0,.35)}
.finale{margin-top:10px;padding:10px 12px;border-radius:14px;background:rgba(246,231,200,.14);border:1px solid rgba(246,231,200,.3);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.finale .fl{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#F6E7C8}
.finale .fl svg{width:14px;height:14px;color:var(--gold)}
.finale .cd{margin-top:6px}
.finale .cd span{background:rgba(255,255,255,.16)}
.finale .cd b{font-size:20px}
.finale .fd{display:block;margin-top:6px;font-size:11.5px;letter-spacing:0;text-transform:none;font-weight:500;color:#F6E7C8}

/* Yatri Mitra card (Department of Tourism patrol vehicle; livery colours) */
.yatri{margin:14px 16px 0;border-radius:18px;overflow:hidden;background:var(--silk);border:1px solid var(--line);box-shadow:var(--sh)}
.yatri img{width:100%;height:132px;object-fit:cover}
.yatri .yb{padding:12px 14px 14px;border-top:5px solid #A52A2A;background:linear-gradient(180deg,#fff,#FBF3F2)}
.yatri small{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#A52A2A}
.yatri b{display:block;font-size:19px;line-height:1.2;margin-top:2px}
.yatri p{font-size:13px;color:var(--ink-2);margin:4px 0 10px;line-height:1.45}
.yatri .btn{background:#1F3F8F;color:#fff;height:46px;font-size:15px}

/* tiles */
.tile.t-tick .ti{background:#FCEFD9;color:#8A4B06}
.tile.t-amen .ti{background:var(--red-lt);color:var(--red)}
.tile.t-dasara{border-color:rgba(122,31,43,.35);background:linear-gradient(180deg,#fff,var(--maroon-lt))}

/* compact event rows (home) */
.ev.mini{padding:10px 12px;align-items:center}
.ev.mini .tm b{font-size:13px}
.ev.mini .eb p{margin:2px 0 0;display:flex;gap:4px;align-items:center;font-size:12px;color:var(--ink-3)}
.ev.mini .eb p svg{width:13px;height:13px;flex:none}
.ev .tm small{display:block}
.tklink{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:12.5px;font-weight:700;color:#8A4B06;background:#FCEFD9;padding:6px 10px;border-radius:10px}
.tklink svg{width:14px;height:14px}
.days button.today:not(.on){border-color:var(--maroon);color:var(--maroon)}

/* road closures */
.closure{margin:0 16px;border-radius:var(--r);background:var(--silk);border:1.5px solid var(--red);overflow:hidden}
.closure .ch{display:flex;gap:10px;align-items:center;padding:12px 14px;background:var(--red-lt)}
.closure .cx{width:38px;height:38px;border-radius:11px;background:var(--red);color:#fff;display:grid;place-items:center;flex:none}
.closure .cx svg{width:20px;height:20px}
.closure .ch b{display:block;font-size:15px}
.closure .ch small{font-size:12px;color:var(--red);font-weight:700}
.closure ul{list-style:none;padding:8px 14px 0}
.closure li{position:relative;padding:7px 0 7px 18px;font-size:13.5px;border-bottom:1px solid var(--line-2)}
.closure li::before{content:"";position:absolute;left:2px;top:14px;width:8px;height:8px;border-radius:2px;background:var(--red)}
.closure p{padding:10px 14px 12px;font-size:12px;color:var(--ink-3)}

/* live travel times */
.row.tt .mins{text-align:center;flex:none;min-width:52px;font-size:11px;color:var(--ink-3)}
.row.tt .mins b{display:block;font-size:22px;color:var(--ink);line-height:1}
.lot .lb small{display:block;font-size:12px;line-height:1.35;margin-top:2px}
.note.demo{color:var(--red);font-weight:700}

/* help rows */
.row .ico.medical{background:var(--red-lt);color:var(--red)}
.row .ico.police,.row .ico.help,.row .ico.info{background:#E3EEF8;color:#1F4E79}
.row .ico.toilet{background:#E4F1F4;color:#185866}
.row .go-ic.call{background:var(--green)}
.row .go-ic + .go-ic{margin-left:-4px}

/* tickets */
.tkt{display:flex;gap:12px;padding:14px;border-radius:var(--r);background:var(--silk);border:1px solid var(--line)}
.tkt .tp{flex:none;width:76px;border-radius:12px;background:linear-gradient(160deg,var(--maroon),#4E1019);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 4px;text-align:center}
.tkt .tp small{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#F6E7C8}
.tkt .tp b{font-size:17px}
.tkt .tb{flex:1;min-width:0}
.tkt .tb b{display:block;font-size:15px;line-height:1.3}
.tkt .tb p{font-size:12.5px;color:var(--ink-2);margin:4px 0 10px;line-height:1.45}
.tkt .btn.sm svg{width:15px;height:15px}
.freebox{margin:14px 16px 0;padding:12px 14px;border-radius:14px;background:var(--green-lt);color:#14532D;display:flex;gap:10px;font-size:13px;line-height:1.45}
.freebox svg{width:18px;height:18px;flex:none;margin-top:1px}
.dd{display:flex;gap:10px;padding:11px 13px;border-radius:12px;font-size:13px;line-height:1.45;background:var(--silk);border:1px solid var(--line)}
.dd svg{width:18px;height:18px;flex:none;margin-top:1px}
.dd.ok svg{color:var(--green)}
.dd.no{background:#FFF8F8;border-color:#F3D3D5}
.dd.no svg{color:var(--red)}

/* footer */
.f-logos img{width:42px;height:42px}
.foot .by{display:inline-block;margin-top:6px;opacity:.8}
.g-logos img + img + img{margin-left:0}

.stg{margin:6px 16px 0;padding:6px 10px;border-radius:10px;background:#1F3F8F;color:#fff;font-size:11px;font-weight:700;letter-spacing:.08em;text-align:center}

/* alerts by severity */
.ann.crit{background:var(--red-lt);color:#7A0F16;border:1px solid #F1B9BC}
.ann.mini{padding:10px 12px;font-size:13px}
a.ann{display:flex}
.list.alerts{gap:8px}
.critbar{position:sticky;top:calc(var(--top) + 4px);z-index:30;margin:4px 12px 0;padding:10px 12px;border-radius:14px;background:var(--red);color:#fff;display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.4;box-shadow:0 6px 18px rgba(192,38,45,.35)}
.critbar svg{width:20px;height:20px;flex:none;margin-top:1px}
.critbar div{flex:1}
.critbar button{color:#fff;font-size:22px;line-height:1;padding:0 4px;opacity:.85}
.pushcard{margin:12px 16px 0;padding:12px 14px;border-radius:var(--r);background:var(--silk);border:1px solid var(--line);display:flex;gap:12px;align-items:center}
.pushcard svg{width:22px;height:22px;flex:none;color:var(--maroon)}
.pushcard b{display:block;font-size:14px}
.pushcard span{display:block;font-size:12px;color:var(--ink-3);line-height:1.4}
.pushcard button{flex:none;height:36px;padding:0 14px;border-radius:10px;background:var(--maroon);color:#fff;font-size:13px;font-weight:700}
.pushcard button.n{background:none;color:var(--ink-3)}

/* ================= polish pass ================= */
/* tap feedback and gentle screen entry */
.tile,.btn,.pcard,.row,.ev,.lot,.num,.tkt,.ann,a.ann,.pushcard button,.days button,.filters button{transition:transform .12s ease,box-shadow .2s ease,background-color .2s ease}
.tile:active,.btn:active,.pcard:active,.row:active,.num:active,.lot:active,a.ann:active,.days button:active{transform:scale(.975)}
@media (hover:hover){.tile:hover,.pcard:hover,.row:hover,.tkt:hover{box-shadow:var(--sh)}}
#view > *{animation:rise .32s cubic-bezier(.2,.7,.2,1) both}
#view > *:nth-child(2){animation-delay:.03s}#view > *:nth-child(3){animation-delay:.06s}#view > *:nth-child(4){animation-delay:.09s}#view > *:nth-child(n+5){animation-delay:.12s}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){#view > *{animation:none}*{transition:none!important}}
/* chat button steps aside while reading lists */
.ch-fab{transition:transform .25s ease,opacity .25s ease}
body.scrolling-down .ch-fab{transform:translateY(120px);opacity:0;pointer-events:none}
/* header: name never truncates awkwardly */
.top .bt b{font-size:15.5px;letter-spacing:-.01em}
.top .bt small{letter-spacing:.02em}
/* tiles: a touch more presence */
.tile{box-shadow:0 1px 0 rgba(20,17,15,.03);border-radius:18px}
.tile .ti{width:46px;height:46px;border-radius:14px}
.sec-h h2{letter-spacing:-.01em}
/* section cards breathe a little more */
.ann{border-radius:16px}
.pushcard{box-shadow:var(--sh)}

/* ---------- design pass 2 ---------- */
/* happening now / up next */
.nnlist{display:grid;gap:10px;padding:0 16px}
.nn{display:flex;gap:12px;align-items:center;padding:8px;border-radius:18px;background:#fff;border:1px solid var(--line);box-shadow:0 1px 0 rgba(20,17,15,.03)}
.nn img,.nn .nn-ph{width:78px;height:78px;border-radius:13px;object-fit:cover;flex:none}
.nn .nn-ph{display:grid;place-items:center;background:linear-gradient(135deg,var(--maroon),#3F0D16);color:#F6E7C8}
.nn .nn-ph svg{width:28px;height:28px}
.nn div{min-width:0}
.nn small{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.nn small.live{color:var(--red)}
.nn small.live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:6px;vertical-align:1px;box-shadow:0 0 0 0 rgba(192,38,45,.5);animation:pulse 1.6s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(192,38,45,.45)}70%{box-shadow:0 0 0 7px rgba(192,38,45,0)}100%{box-shadow:0 0 0 0 rgba(192,38,45,0)}}
.nn b{display:block;font-size:15px;line-height:1.3;margin:2px 0 3px}
.nn span{display:flex;gap:4px;align-items:center;font-size:12px;color:var(--ink-3)}
.nn span svg{width:13px;height:13px;flex:none}
/* headline events get a photo */
.evpic{margin:0 0 -18px;border-radius:var(--r) var(--r) 0 0;overflow:hidden;height:150px;position:relative}
.evpic img{width:100%;height:100%;object-fit:cover}
.evpic::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(60,10,18,.35))}
.ev.haspic{position:relative;border-top-left-radius:6px;border-top-right-radius:6px}
/* places without a photo: coloured by theme instead of a grey box */
.ph{display:grid;place-items:center;color:rgba(255,255,255,.92);background:linear-gradient(140deg,#7A5208,#3E2A05)}
.ph svg{width:40%;height:40%;max-width:46px;max-height:46px}
.ph.c-dasara{background:linear-gradient(140deg,#7A1F2B,#3F0D16)}
.ph.c-nature{background:linear-gradient(140deg,#2F6B47,#163923)}
.ph.c-faith{background:linear-gradient(140deg,#8A4B06,#4A2703)}
.ph.c-transport{background:linear-gradient(140deg,#1F4E79,#0F2840)}
.ph.c-market{background:linear-gradient(140deg,#9A3F12,#4F1F08)}
.ph.c-family{background:linear-gradient(140deg,#4B2E83,#24153F)}
.ph::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 20%,rgba(255,255,255,.18),transparent 45%);pointer-events:none}
.ph{position:relative}
/* help screen header */
.hero.helphero{min-height:150px;margin-top:6px}
