:root{
  --ink-navy:#0F2438;
  --ink-navy-deep:#081726;
  --karnaphuli-teal:#1F5C58;
  --cargo-rust:#B5572E;
  --cargo-rust-bright:#D06A3A;
  --hill-sand:#F2E9D8;
  --signal-amber:#E3A857;
  --paper:#FAF6EE;
  --line:rgba(15,36,56,0.14);
  --text-main:#1B2B30;
  --text-soft:#5A6B67;
  --card-bg:#FFFFFF;
  --emergency-red:#D9383A;
  --emergency-bg:rgba(217,56,58,0.08);
  --serif:'Tiro Bangla', 'Noto Serif Bengali', 'Bangla Sangam MN', Georgia, serif;
  --sans:'Hind Siliguri', 'Noto Sans Bengali', 'Kohinoor Bangla', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --mono:'IBM Plex Mono', monospace;
}

[data-theme="dark"]{
  --paper:#0F2438;
  --hill-sand:#132C42;
  --text-main:#F2E9D8;
  --text-soft:#B9C6C4;
  --line:rgba(242,233,216,0.14);
  --card-bg:#152B3F;
  --emergency-bg:rgba(217,56,58,0.18);
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{background:var(--paper); color:var(--text-main); font-family:var(--sans); line-height:1.7; transition:background .4s ease, color .4s ease; overflow-x:hidden;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
.wrap{max-width:1180px; margin:0 auto; padding:0 24px;}
.wrap-wide{max-width:1280px; margin:0 auto; padding:0 24px;}
::selection{background:var(--signal-amber); color:var(--ink-navy-deep);}
@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms !important; transition-duration:.001ms !important;} html{scroll-behavior:auto;}}

/* Unified Clean Topbar with Logo */
header.topbar {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(8px);
  box-shadow: 0 2px 10px rgba(0,0,0,0.04);
}
.topbar-unified-wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 8px 24px;
}
.brand {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  text-decoration: none;
  transition: transform .2s ease;
}
.brand:hover { transform: scale(1.02); }
.brand-logo-img {
  height: 42px;
  width: auto;
  max-width: 200px;
  object-fit: contain;
  display: block;
}
.topbar-nav {
  flex: 1;
  display: flex;
  align-items: center;
}
nav.mainnav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 8px;
  justify-content: flex-end;
}
nav.mainnav a {
  font-size: .82rem;
  font-weight: 500;
  color: var(--text-soft);
  transition: all .18s ease;
  white-space: nowrap;
  padding: 4px 8px;
  border-radius: 12px;
}
nav.mainnav a:hover {
  color: var(--cargo-rust);
  background: rgba(181,87,46,0.09);
}
[data-theme="dark"] nav.mainnav a:hover {
  color: var(--signal-amber);
  background: rgba(227,168,87,0.14);
}

.navtoggle-btn {
  display: none;
  flex-direction: column;
  gap: 4px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
}
.navtoggle-btn span {
  width: 22px;
  height: 2px;
  background: var(--text-main);
}

@media(max-width: 980px) {
  .topbar-unified-wrap {
    padding: 8px 16px;
  }
  .brand-logo-img {
    height: 36px;
    max-width: 160px;
  }
  .topbar-nav {
    display: none;
  }
  .topbar-nav.open {
    display: block;
    position: fixed;
    inset: 54px 0 0 0;
    background: var(--paper);
    overflow-y: auto;
    padding: 24px 28px;
    z-index: 150;
    border-top: 1px solid var(--line);
  }
  .topbar-nav.open nav.mainnav {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .topbar-nav.open nav.mainnav a {
    font-size: 1.02rem;
    width: 100%;
    padding: 8px 0;
    border-bottom: 1px solid var(--line);
  }
  .navtoggle-btn {
    display: flex;
  }
}

/* Floating Back to Top Button */
.back-to-top{
  position:fixed;
  bottom:142px;
  right:28px;
  z-index:99;
  background:var(--cargo-rust);
  color:#ffffff;
  border:none;
  border-radius:30px;
  padding:10px 18px;
  font-family:var(--sans);
  font-size:.85rem;
  font-weight:600;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:6px;
  box-shadow:0 6px 20px rgba(181,87,46,0.35);
  opacity:0;
  visibility:hidden;
  transform:translateY(20px);
  transition:all .3s cubic-bezier(0.16, 1, 0.3, 1);
}
.back-to-top.visible{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.back-to-top:hover{
  background:var(--cargo-rust-bright);
  transform:translateY(-3px);
  box-shadow:0 10px 25px rgba(181,87,46,0.45);
}
[data-theme="dark"] .back-to-top{
  background:var(--karnaphuli-teal);
  box-shadow:0 6px 20px rgba(31,92,88,0.4);
}
[data-theme="dark"] .back-to-top:hover{
  background:#287470;
}
@media (max-width:600px){
  .back-to-top span{display:none;}
  .back-to-top{
    padding:12px;
    border-radius:50%;
    bottom:20px;
    right:20px;
  }
}

/* Contour divider */
.contour-divider{width:100%; height:56px; overflow:hidden; line-height:0;}
.contour-divider svg{width:100%; height:100%; display:block;}

/* Hero Section */
.hero{position:relative; background:linear-gradient(180deg, var(--ink-navy-deep) 0%, var(--ink-navy) 60%, var(--karnaphuli-teal) 100%); color:var(--hill-sand); padding:80px 0 0; overflow:hidden;}
.hero-inner{max-width:1180px; margin:0 auto; padding:0 24px 60px; position:relative; z-index:3;}
.eyebrow{font-family:var(--mono); font-size:.72rem; letter-spacing:2.5px; text-transform:uppercase; color:var(--signal-amber); display:flex; align-items:center; gap:10px; margin-bottom:20px;}
.eyebrow::before{content:""; width:26px; height:1px; background:var(--signal-amber);}
h1.hero-title{font-family:var(--serif); font-weight:400; font-size:clamp(2.4rem,6.5vw,4.8rem); line-height:1.08; max-width:860px; letter-spacing:-.5px;}
.hero-tagline{margin-top:20px; max-width:680px; font-size:1.1rem; color:#D8E0DB; font-weight:300;}

/* Hero Live Search Box */
.hero-search-wrapper{margin-top:34px; max-width:720px; position:relative;}
.hero-search-box{display:flex; align-items:center; background:#ffffff; border-radius:32px; padding:6px 8px 6px 20px; box-shadow:0 12px 36px rgba(8,23,38,0.35); border:2px solid transparent; transition:all .3s ease;}
.hero-search-box:focus-within{border-color:var(--signal-amber); box-shadow:0 16px 44px rgba(227,168,87,0.3);}
.hero-search-icon{font-size:1.2rem; color:var(--cargo-rust); margin-right:12px; display:flex; align-items:center;}
.hero-search-input{flex:1; border:none; outline:none; font-family:var(--sans); font-size:1.02rem; color:#1B2B30; background:transparent; padding:8px 0;}
.hero-search-input::placeholder{color:#8A9A96; font-size:.95rem;}
.hero-search-btn{background:var(--cargo-rust); color:#fff; border:none; border-radius:24px; padding:10px 24px; font-family:var(--sans); font-size:.92rem; font-weight:600; cursor:pointer; transition:background .2s;}
.hero-search-btn:hover{background:var(--cargo-rust-bright);}
.search-hints{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:14px; font-size:.8rem; color:#B9C6C4;}
.search-hints span.hint-tag{background:rgba(242,233,216,0.12); padding:3px 10px; border-radius:14px; cursor:pointer; transition:all .2s; border:1px solid rgba(242,233,216,0.2);}
.search-hints span.hint-tag:hover{background:var(--signal-amber); color:var(--ink-navy-deep); border-color:var(--signal-amber);}

.hero-manifest{margin-top:44px; display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid rgba(242,233,216,.2);}
.manifest-item{padding:16px 18px 16px 0; border-left:1px solid rgba(242,233,216,.2); padding-left:18px;}
.manifest-item:first-child{border-left:none; padding-left:0;}
.manifest-value{font-family:var(--mono); font-size:1.4rem; color:var(--signal-amber);}
.manifest-label{font-size:.75rem; color:#B9C6C4; margin-top:4px;}
@media(max-width:760px){.hero-manifest{grid-template-columns:repeat(2,1fr); row-gap:20px;} .manifest-item{border-left:none; padding-left:0;}}
.skyline{position:absolute; bottom:0; left:0; width:100%; z-index:1; opacity:.9;}
.ship-drift{position:absolute; bottom:34px; z-index:2; opacity:.75; animation:driftShip 34s linear infinite;}
@keyframes driftShip{0%{left:-8%;} 100%{left:104%;}}

/* Global Search Modal Overlay */
.search-modal-overlay{position:fixed; inset:0; background:rgba(8,23,38,.8); backdrop-filter:blur(6px); z-index:300; display:none; align-items:flex-start; justify-content:center; padding:70px 20px;}
.search-modal-overlay.open{display:flex;}
.search-modal-box{background:var(--paper); max-width:780px; width:100%; border-radius:12px; box-shadow:0 24px 60px rgba(0,0,0,.45); overflow:hidden; border:1px solid var(--line); animation:modalSlideDown .25s ease;}
@keyframes modalSlideDown{from{opacity:0; transform:translateY(-20px);} to{opacity:1; transform:translateY(0);}}

.search-modal-header{padding:18px 24px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:14px; background:var(--card-bg);}
.search-modal-input{flex:1; border:none; outline:none; font-family:var(--sans); font-size:1.15rem; color:var(--text-main); background:transparent;}
.search-modal-close{background:none; border:none; font-size:1.3rem; color:var(--text-soft); cursor:pointer; padding:4px 8px; border-radius:6px;}
.search-modal-close:hover{color:var(--cargo-rust);}

.search-filter-pills{display:flex; gap:8px; padding:12px 24px; background:var(--paper); border-bottom:1px solid var(--line); overflow-x:auto;}
.s-pill{font-size:.78rem; font-family:var(--sans); padding:5px 14px; border-radius:18px; border:1px solid var(--line); background:var(--card-bg); color:var(--text-soft); cursor:pointer; white-space:nowrap; transition:all .2s;}
.s-pill.active, .s-pill:hover{background:var(--cargo-rust); color:#fff; border-color:var(--cargo-rust);}

.search-results-list{max-height:460px; overflow-y:auto; padding:16px 24px;}
.search-result-item{padding:14px 16px; border-radius:8px; border-bottom:1px solid var(--line); cursor:pointer; display:flex; justify-content:space-between; align-items:center; transition:background .2s;}
.search-result-item:last-child{border-bottom:none;}
.search-result-item:hover{background:var(--hill-sand);}
.res-title{font-family:var(--serif); font-size:1.1rem; color:var(--text-main); font-weight:500;}
.res-desc{font-size:.85rem; color:var(--text-soft); margin-top:2px;}
.res-meta{display:flex; align-items:center; gap:8px; margin-top:4px;}
.res-badge{font-family:var(--mono); font-size:.65rem; background:rgba(31,92,88,0.12); color:var(--karnaphuli-teal); padding:2px 8px; border-radius:10px; border:1px solid rgba(31,92,88,0.2);}
[data-theme="dark"] .res-badge{background:rgba(227,168,87,0.15); color:var(--signal-amber); border-color:rgba(227,168,87,0.3);}
.res-action{font-size:.85rem; color:var(--cargo-rust); font-weight:600; white-space:nowrap;}
.search-empty{padding:40px 20px; text-align:center; color:var(--text-soft);}

/* Section Shell */
section{padding:80px 0;}
.section-head{margin-bottom:40px; max-width:700px;}
.section-stamp{display:inline-flex; align-items:center; gap:10px; font-family:var(--mono); font-size:.7rem; letter-spacing:2px; text-transform:uppercase; color:var(--cargo-rust); margin-bottom:14px; border:1px solid var(--cargo-rust); padding:5px 12px; border-radius:20px;}
.section-stamp.emergency{color:var(--emergency-red); border-color:var(--emergency-red); background:var(--emergency-bg);}
h2.section-title{font-family:var(--serif); font-weight:400; font-size:clamp(1.8rem,3.8vw,2.5rem); letter-spacing:-.3px;}
.section-desc{margin-top:12px; color:var(--text-soft); font-size:1rem; max-width:620px;}
.bg-alt{background:var(--hill-sand);}
h3.subhead{font-family:var(--serif); font-weight:400; font-size:1.2rem; margin:34px 0 14px; color:var(--karnaphuli-teal);}
[data-theme="dark"] h3.subhead{color:var(--signal-amber);}

/* Card Grids */
.grid{display:grid; gap:1px; background:var(--line); border:1px solid var(--line);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:860px){.grid-3, .grid-2{grid-template-columns:1fr;}}
.card{background:var(--card-bg); padding:28px 26px; transition:background .25s ease;}
.card:hover{background:var(--hill-sand);}
[data-theme="dark"] .card:hover{background:var(--ink-navy-deep);}
.card-num{font-family:var(--mono); font-size:.72rem; color:var(--cargo-rust); margin-bottom:12px; display:block;}
.card h4{font-family:var(--serif); font-weight:400; font-size:1.22rem; margin-bottom:8px;}
.card p{color:var(--text-soft); font-size:.92rem;}
.card .tag{display:inline-block; margin-top:14px; font-family:var(--mono); font-size:.66rem; color:var(--karnaphuli-teal); border:1px solid var(--karnaphuli-teal); padding:3px 9px; border-radius:12px;}

/* Emergency Directory Section & Spotlight */
.emergency-subgroup{margin-bottom:34px;}
.emergency-subgroup:last-child{margin-bottom:0;}
.emergency-sub-title{font-family:var(--serif); font-size:1.15rem; margin-bottom:14px; color:var(--text-main); display:flex; align-items:center; gap:8px;}
.emergency-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:16px;}
.emergency-card{background:var(--card-bg); border:1px solid var(--line); border-radius:8px; padding:20px; display:flex; flex-direction:column; justify-content:space-between; transition:transform .2s, box-shadow .2s;}
.emergency-card:hover{transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,.08); border-color:var(--cargo-rust);}
.emergency-card.priority{border-left:4px solid var(--emergency-red); background:var(--card-bg);}
.em-head{display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:8px;}
.em-name{font-family:var(--serif); font-size:1.15rem; font-weight:600; color:var(--text-main);}
.em-badge{font-family:var(--mono); font-size:.68rem; padding:3px 8px; border-radius:12px; background:rgba(31,92,88,0.1); color:var(--karnaphuli-teal);}
.em-badge.red{background:rgba(217,56,58,0.12); color:var(--emergency-red); font-weight:600;}
.em-location{font-size:.85rem; color:var(--text-soft); margin-bottom:14px;}
.em-phone-display{font-family:var(--mono); font-size:1.2rem; font-weight:600; color:var(--cargo-rust); margin-bottom:14px; letter-spacing:.5px;}
.em-actions{display:flex; gap:10px; align-items:center;}
.btn-call{flex:1; background:var(--karnaphuli-teal); color:#fff; padding:9px 14px; border-radius:6px; font-size:.86rem; font-weight:600; text-align:center; display:flex; align-items:center; justify-content:center; gap:6px; transition:background .2s;}
.btn-call:hover{background:#164542;}
.btn-call.red{background:var(--emergency-red);}
.btn-call.red:hover{background:#B7282A;}
.btn-copy{background:var(--paper); border:1px solid var(--line); color:var(--text-main); padding:9px 12px; border-radius:6px; font-size:.82rem; cursor:pointer; transition:all .2s;}
.btn-copy:hover{border-color:var(--cargo-rust); color:var(--cargo-rust);}

.em-full-page-banner{
  display:inline-flex;
  align-items:center;
  gap:12px;
  background:linear-gradient(135deg, var(--emergency-red), #9C1F22);
  color:#ffffff;
  padding:14px 28px;
  border-radius:30px;
  font-family:var(--sans);
  font-size:1.02rem;
  font-weight:600;
  text-decoration:none;
  box-shadow:0 8px 24px rgba(217,56,58,0.25);
  transition:all .25s ease;
}
.em-full-page-banner:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(217,56,58,0.4);
  background:linear-gradient(135deg, #E64547, #B02326);
}

/* Hospital & Govt Office Cards */
.info-cards-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(330px, 1fr)); gap:18px;}
.info-card{background:var(--card-bg); border:1px solid var(--line); border-radius:8px; padding:22px; transition:all .25s ease; display:flex; flex-direction:column; justify-content:space-between;}
.info-card:hover{border-color:var(--cargo-rust); box-shadow:0 8px 24px rgba(0,0,0,0.06); transform:translateY(-2px);}
.info-card-header{margin-bottom:12px;}
.info-card-title{font-family:var(--serif); font-size:1.2rem; font-weight:500; color:var(--text-main); margin-bottom:4px;}
.info-card-type{font-family:var(--mono); font-size:.72rem; color:var(--cargo-rust);}
.info-card-body{font-size:.88rem; color:var(--text-soft); margin-bottom:16px;}
.info-row{display:flex; align-items:baseline; gap:8px; margin-bottom:6px; font-size:.88rem;}
.info-row b{color:var(--text-main); font-size:.85rem; font-weight:600; min-width:65px;}
.info-card-footer{border-top:1px solid var(--line); padding-top:14px; display:flex; justify-content:space-between; align-items:center;}
.info-hotline-btn{background:rgba(31,92,88,0.1); color:var(--karnaphuli-teal); font-family:var(--mono); font-size:.82rem; font-weight:600; padding:6px 12px; border-radius:6px; display:inline-flex; align-items:center; gap:6px;}
.info-hotline-btn:hover{background:var(--karnaphuli-teal); color:#fff;}
[data-theme="dark"] .info-hotline-btn{background:rgba(227,168,87,0.15); color:var(--signal-amber);}
[data-theme="dark"] .info-hotline-btn:hover{background:var(--signal-amber); color:var(--ink-navy-deep);}

/* Tabs */
.tabs-group{margin-top:8px;}
.tab-bar{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:24px;}
.tab-btn{font-family:var(--mono); font-size:.74rem; padding:8px 16px; border-radius:20px; border:1px solid var(--line); background:transparent; color:var(--text-soft); cursor:pointer; transition:all .2s;}
.tab-btn:hover{border-color:var(--cargo-rust); color:var(--cargo-rust);}
.tab-btn.active{background:var(--cargo-rust); border-color:var(--cargo-rust); color:#fff;}
.tab-panel{display:none;}
.tab-panel.active{display:block; animation:fadeIn .35s ease;}
@keyframes fadeIn{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);}}

/* Chip directory grid */
.chip-grid{display:flex; flex-wrap:wrap; gap:10px;}
.chip{font-size:.88rem; padding:10px 16px; border:1px solid var(--line); border-radius:4px; background:var(--card-bg); color:var(--text-main); transition:all .2s;}
.chip:hover{border-color:var(--cargo-rust); color:var(--cargo-rust); background:var(--hill-sand);}

/* Timeline */
.timeline{position:relative; padding-left:32px; border-left:2px solid var(--cargo-rust); margin-top:16px;}
.tl-item{position:relative; padding-bottom:38px;}
.tl-item:last-child{padding-bottom:0;}
.tl-item::before{content:""; position:absolute; left:-38px; top:4px; width:10px; height:10px; border-radius:50%; background:var(--signal-amber); border:2px solid var(--paper);}
.tl-year{font-family:var(--mono); font-size:.82rem; color:var(--cargo-rust);}
.tl-item h4{font-family:var(--serif); font-weight:400; font-size:1.15rem; margin:6px 0;}
.tl-item p{color:var(--text-soft); font-size:.92rem; max-width:640px;}

/* Stat strip */
.stat-strip{display:flex; flex-wrap:wrap; border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin:40px 0;}
.stat{flex:1 1 200px; padding:24px 22px; border-left:1px solid var(--line); background:var(--card-bg);}
.stat:first-child{border-left:none;}
.stat-num{font-family:var(--mono); font-size:1.8rem; color:var(--cargo-rust);}
.stat-label{font-size:.82rem; color:var(--text-soft); margin-top:6px;}

/* Food scroll */
.food-scroll{display:flex; gap:1px; overflow-x:auto; background:var(--line); border:1px solid var(--line);}
.food-card{min-width:220px; background:var(--card-bg); padding:26px 22px; flex-shrink:0;}
.food-card h4{font-family:var(--serif); font-weight:400; font-size:1.1rem; margin-bottom:8px;}
.food-card p{font-size:.86rem; color:var(--text-soft);}

/* Transport */
.transport-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:8px;}
@media(max-width:860px){.transport-grid{grid-template-columns:repeat(2,1fr);}}
.transport-card{background:var(--card-bg); padding:24px 20px;}
.transport-card .icon{font-family:var(--mono); font-size:.7rem; color:var(--cargo-rust); letter-spacing:1px;}
.transport-card h4{font-family:var(--serif); font-size:1.05rem; margin:10px 0 6px; font-weight:400;}
.transport-card p{font-size:.85rem; color:var(--text-soft);}

/* Roadmap */
.roadmap-grid{display:flex; flex-wrap:wrap; gap:10px; margin-top:8px;}
.roadmap-chip{font-family:var(--mono); font-size:.76rem; padding:9px 15px; border:1px dashed var(--karnaphuli-teal); border-radius:20px; color:var(--karnaphuli-teal); background:var(--card-bg);}
[data-theme="dark"] .roadmap-chip{color:#8FD6CC;}

/* Toast Notification */
.toast{position:fixed; bottom:28px; right:28px; background:var(--ink-navy-deep); color:#fff; padding:12px 20px; border-radius:8px; font-size:.9rem; z-index:500; display:none; box-shadow:0 8px 24px rgba(0,0,0,0.3); border-left:4px solid var(--signal-amber); animation:toastPop .3s ease;}
@keyframes toastPop{from{opacity:0; transform:translateY(15px);} to{opacity:1; transform:translateY(0);}}
.toast.show{display:flex; align-items:center; gap:10px;}

/* Footer */
footer{background:var(--ink-navy-deep); color:var(--hill-sand); padding:60px 0 28px;}
.footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr 1fr; gap:32px;}
@media(max-width:860px){.footer-grid{grid-template-columns:1fr 1fr;}}
.footer-grid h5{font-family:var(--mono); font-size:.7rem; letter-spacing:1.5px; text-transform:uppercase; color:var(--signal-amber); margin-bottom:14px;}
.footer-grid a, .footer-grid p{display:block; color:#C6D0CC; font-size:.87rem; margin-bottom:9px;}
.footer-grid a:hover{color:var(--signal-amber);}
.footer-bottom{margin-top:48px; padding-top:22px; border-top:1px solid rgba(242,233,216,.14); display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-family:var(--mono); font-size:.7rem; color:#8FA09B;}

.reveal{opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1; transform:translateY(0);}

/* Place detail modal */
.clickable-chip{cursor:pointer; position:relative; padding-right:30px;}
.clickable-chip::after{content:"↗"; position:absolute; right:12px; top:50%; transform:translateY(-50%); font-size:.8rem; color:var(--cargo-rust);}
.clickable-card{cursor:pointer;}
.clickable-card:hover h4{color:var(--cargo-rust);}
.modal-overlay{position:fixed; inset:0; background:rgba(8,23,38,.72); backdrop-filter:blur(3px); z-index:200; display:none; align-items:flex-start; justify-content:center; padding:50px 20px; overflow-y:auto;}
.modal-overlay.open{display:flex;}
.modal-box{background:var(--paper); max-width:820px; width:100%; border-radius:3px; position:relative; margin-bottom:40px; box-shadow:0 24px 70px rgba(0,0,0,.35); overflow:hidden;}
.modal-close{position:absolute; top:16px; right:16px; width:36px; height:36px; border-radius:50%; border:1px solid rgba(242,233,216,.4); background:rgba(8,23,38,.3); color:#fff; cursor:pointer; font-size:1.05rem; display:flex; align-items:center; justify-content:center; z-index:5;}
.modal-close:hover{border-color:var(--signal-amber); color:var(--signal-amber);}
.modal-image{width:100%; height:210px; overflow:hidden; line-height:0; background:var(--ink-navy-deep); border-radius:3px 3px 0 0;}
.modal-image svg{width:100%; height:100%; display:block;}
.modal-image img{width:100%; height:100%; object-fit:cover; display:block;}
.m-attribution{font-size:.68rem; color:var(--text-soft); font-family:var(--mono); padding:8px 34px 0;}
.modal-hero{background:linear-gradient(135deg, var(--ink-navy-deep), var(--karnaphuli-teal)); color:var(--hill-sand); padding:38px 34px 28px; border-radius:3px 3px 0 0;}
.m-eyebrow{font-family:var(--mono); font-size:.68rem; letter-spacing:2px; text-transform:uppercase; color:var(--signal-amber); margin-bottom:8px;}
.modal-hero h3{font-family:var(--serif); font-weight:400; font-size:1.9rem;}
.modal-body{padding:32px 34px 44px;}
.m-section{margin-bottom:32px;}
.m-section:last-child{margin-bottom:0;}
.m-section h4{font-family:var(--serif); font-weight:400; font-size:1.12rem; margin-bottom:12px; color:var(--cargo-rust);}
.m-table{width:100%; border-collapse:collapse; font-size:.87rem;}
.m-table tr{border-bottom:1px solid var(--line);}
.m-table td{padding:9px 4px;}
.m-table td:first-child{color:var(--text-soft); font-family:var(--mono); font-size:.76rem; width:38%;}
.m-list{list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:8px 16px;}
.m-list li{font-size:.89rem; padding-left:16px; position:relative; color:var(--text-main);}
.m-list li::before{content:"–"; position:absolute; left:0; color:var(--cargo-rust);}
.m-route-box{font-size:.87rem; color:var(--text-soft); display:grid; gap:7px;}
.m-route-box b{color:var(--text-main); font-weight:600;}
.m-plan{border-left:2px solid var(--cargo-rust); padding-left:18px; display:grid; gap:13px;}
.m-plan-item{font-size:.89rem; color:var(--text-main);}
.m-plan-time{font-family:var(--mono); color:var(--cargo-rust); font-size:.76rem; margin-bottom:2px;}
.m-desc{color:var(--text-soft); font-size:.91rem;}
@media(max-width:600px){.m-list{grid-template-columns:1fr;}}

/* Google Map Action Button inside Modals */
.m-map-btn{display:inline-flex; align-items:center; gap:8px; background:var(--karnaphuli-teal); color:#ffffff; padding:10px 18px; border-radius:6px; font-family:var(--sans); font-size:.88rem; font-weight:600; text-decoration:none; margin-top:14px; transition:all .2s; box-shadow:0 4px 12px rgba(31,92,88,0.2);}
.m-map-btn:hover{background:#154541; transform:translateY(-2px); box-shadow:0 6px 16px rgba(31,92,88,0.3);}
[data-theme="dark"] .m-map-btn{background:var(--cargo-rust); color:#fff;}
[data-theme="dark"] .m-map-btn:hover{background:var(--cargo-rust-bright);}

/* Accessibility Focus Ring Standards */
:focus-visible{outline:2px solid var(--cargo-rust); outline-offset:3px;}
[data-theme="dark"] :focus-visible{outline:2px solid var(--signal-amber); outline-offset:3px;}

/* Verification & Last-Checked Badge */
.verified-badge{display:inline-flex; align-items:center; gap:6px; font-family:var(--mono); font-size:.72rem; color:var(--karnaphuli-teal); background:rgba(31,92,88,0.08); padding:4px 10px; border-radius:12px; border:1px solid rgba(31,92,88,0.2);}
[data-theme="dark"] .verified-badge{color:var(--signal-amber); background:rgba(227,168,87,0.1); border-color:rgba(227,168,87,0.25);}

/* Transport Table & Bus Routes Directory */
.transport-table-wrap{background:var(--card-bg); border:1px solid var(--line); border-radius:8px; overflow-x:auto; margin-top:20px;}
.ctg-table{width:100%; border-collapse:collapse; text-align:left; font-size:.9rem;}
.ctg-table th{background:rgba(15,36,56,0.04); font-family:var(--mono); font-size:.78rem; color:var(--cargo-rust); padding:12px 16px; border-bottom:1px solid var(--line); text-transform:uppercase; letter-spacing:1px;}
[data-theme="dark"] .ctg-table th{background:rgba(255,255,255,0.04); color:var(--signal-amber);}
.ctg-table td{padding:14px 16px; border-bottom:1px solid var(--line); color:var(--text-main);}
.ctg-table tr:last-child td{border-bottom:none;}
.ctg-table tr:hover td{background:rgba(0,0,0,0.015);}
[data-theme="dark"] .ctg-table tr:hover td{background:rgba(255,255,255,0.02);}
.route-num-badge{background:var(--cargo-rust); color:#fff; font-family:var(--mono); font-weight:700; font-size:.8rem; padding:4px 10px; border-radius:4px; display:inline-block;}

/* Live Cyclone/Disaster Alert Banner */
.cyclone-alert-banner{background:linear-gradient(135deg, #A82023, #6B0E11); color:#fff; padding:10px 20px; font-size:.86rem; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; border-bottom:2px solid #FF7B7D; z-index:90;}
.cyclone-alert-left{display:flex; align-items:center; gap:10px;}
.cyclone-tag{background:#FFE0E1; color:#9C1F22; font-family:var(--mono); font-size:.72rem; font-weight:700; padding:2px 8px; border-radius:4px; text-transform:uppercase;}
.cyclone-alert-banner a{color:#FFE0E1; text-decoration:underline; font-weight:600;}
.cyclone-close-btn{background:transparent; border:none; color:#FFD1D2; cursor:pointer; font-size:1.1rem; line-height:1; padding:2px 6px;}
.cyclone-close-btn:hover{color:#fff;}

/* Interactive Leaflet Map Container */
.map-section-wrap{margin-top:16px;}
.map-filter-bar{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px;}
.map-pill{font-family:var(--mono); font-size:.78rem; padding:6px 14px; border-radius:20px; border:1px solid var(--line); background:var(--card-bg); color:var(--text-soft); cursor:pointer; transition:all .2s;}
.map-pill:hover{border-color:var(--karnaphuli-teal); color:var(--karnaphuli-teal);}
.map-pill.active{background:var(--karnaphuli-teal); border-color:var(--karnaphuli-teal); color:#fff;}
#ctgInteractiveMap{width:100%; height:480px; border-radius:8px; border:1px solid var(--line); z-index:1; box-shadow:0 4px 20px rgba(0,0,0,0.06);}

/* Custom Leaflet Map Popup */
.leaflet-popup-content-wrapper{background:var(--paper)!important; color:var(--text-main)!important; border-radius:6px!important; font-family:var(--sans)!important; box-shadow:0 12px 32px rgba(0,0,0,0.25)!important;}
.leaflet-popup-content{margin:12px 14px!important; font-size:.86rem!important; line-height:1.4!important;}
.map-popup-title{font-family:var(--serif); font-size:1.08rem; font-weight:600; color:var(--cargo-rust); margin-bottom:4px;}
.map-popup-cat{font-family:var(--mono); font-size:.68rem; color:var(--text-soft); text-transform:uppercase; margin-bottom:8px;}
.map-popup-desc{font-size:.82rem; color:var(--text-soft); margin-bottom:10px;}
.map-popup-btn{display:inline-block; background:var(--karnaphuli-teal); color:#fff!important; font-family:var(--mono); font-size:.72rem; padding:4px 10px; border-radius:4px; text-decoration:none; font-weight:600;}

/* Blood Bank Group Filters & Directory */
.blood-pills-wrap{display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 24px;}
.blood-pill{font-family:var(--mono); font-size:.84rem; font-weight:700; padding:6px 14px; border-radius:20px; border:1px solid var(--line); background:var(--card-bg); color:var(--text-main); cursor:pointer; transition:all .2s;}
.blood-pill:hover{border-color:var(--emergency-red); color:var(--emergency-red);}
.blood-pill.active{background:var(--emergency-red); border-color:var(--emergency-red); color:#fff;}
.blood-card-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:16px;}
.blood-card{background:var(--card-bg); border:1px solid var(--line); border-left:4px solid var(--emergency-red); border-radius:6px; padding:18px 20px; display:flex; flex-direction:column; justify-content:space-between;}
.blood-card h4{font-family:var(--serif); font-size:1.15rem; font-weight:600; color:var(--text-main); margin-bottom:4px;}
.blood-card-meta{font-family:var(--mono); font-size:.74rem; color:var(--emergency-red); margin-bottom:10px;}
.blood-groups-badge{display:flex; flex-wrap:wrap; gap:4px; margin:8px 0 14px;}
.b-grp{background:rgba(217,56,58,0.08); color:var(--emergency-red); font-family:var(--mono); font-size:.72rem; font-weight:700; padding:2px 6px; border-radius:3px;}

/* Feedback & Report Modal Form */
.feedback-form{display:grid; gap:14px;}
.feedback-form label{font-family:var(--mono); font-size:.78rem; color:var(--text-soft); text-transform:uppercase; letter-spacing:.5px;}
.feedback-form input, .feedback-form textarea, .feedback-form select{width:100%; padding:10px 14px; border:1px solid var(--line); border-radius:6px; background:var(--paper); color:var(--text-main); font-family:var(--sans); font-size:.9rem;}
.feedback-form input:focus, .feedback-form textarea:focus, .feedback-form select:focus{outline:2px solid var(--karnaphuli-teal);}
.feedback-btn-submit{background:var(--karnaphuli-teal); color:#fff; font-family:var(--sans); font-weight:600; font-size:.92rem; padding:12px 20px; border:none; border-radius:6px; cursor:pointer; transition:all .2s;}
.feedback-btn-submit:hover{background:#134340;}
.report-inline-btn{background:transparent; border:none; color:var(--text-soft); font-family:var(--mono); font-size:.72rem; cursor:pointer; text-decoration:underline; padding:0;}
.report-inline-btn:hover{color:var(--cargo-rust);}

/* Upazila Directory & Itinerary Layout */
.upazila-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:18px;}
.upazila-card{background:var(--card-bg); border:1px solid var(--line); border-radius:8px; padding:20px 22px; display:flex; flex-direction:column; justify-content:space-between; transition:all .2s ease;}
.upazila-card:hover{border-color:var(--karnaphuli-teal); transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,0.06);}
.upazila-head{display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:8px;}
.upazila-title{font-family:var(--serif); font-size:1.24rem; font-weight:600; color:var(--text-main); margin:0;}
.upazila-dist{font-family:var(--mono); font-size:.74rem; color:var(--cargo-rust); background:rgba(217,92,43,0.08); padding:3px 8px; border-radius:12px;}
.upazila-spots{font-size:.88rem; color:var(--text-soft); margin:8px 0 12px; line-height:1.45;}
.upazila-tags{display:flex; flex-wrap:wrap; gap:5px;}
.upazila-tag{font-family:var(--mono); font-size:.72rem; background:rgba(31,92,88,0.08); color:var(--karnaphuli-teal); padding:2px 8px; border-radius:4px;}

.itinerary-card{background:var(--card-bg); border:1px solid var(--line); border-left:4px solid var(--cargo-rust); border-radius:6px; padding:20px; margin-bottom:16px;}
.itinerary-title{font-family:var(--serif); font-size:1.2rem; color:var(--text-main); margin-bottom:6px;}
.itinerary-route{font-family:var(--mono); font-size:.82rem; color:var(--cargo-rust); margin-bottom:10px;}
.itinerary-desc{font-size:.88rem; color:var(--text-soft); line-height:1.5;}

/* Famous Personalities & Legends Layout */
.manisha-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:18px;}
.manisha-card{background:var(--card-bg); border:1px solid var(--line); border-radius:8px; padding:22px; display:flex; flex-direction:column; justify-content:space-between; transition:all .2s ease; cursor:pointer;}
.manisha-card:hover{border-color:var(--cargo-rust); transform:translateY(-3px); box-shadow:0 8px 24px rgba(0,0,0,0.08);}
.manisha-card-header{display:flex; align-items:center; gap:14px; margin-bottom:12px;}
.manisha-avatar{width:48px; height:48px; border-radius:50%; background:linear-gradient(135deg, var(--karnaphuli-teal), var(--ink-navy-deep)); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--serif); font-size:1.2rem; font-weight:600; flex-shrink:0;}
.manisha-card-title{font-family:var(--serif); font-size:1.22rem; font-weight:600; color:var(--text-main); line-height:1.2; margin-bottom:2px;}
.manisha-card-subtitle{font-family:var(--mono); font-size:.74rem; color:var(--cargo-rust);}
.manisha-card-body{font-size:.88rem; color:var(--text-soft); line-height:1.45; margin-bottom:14px;}
.manisha-card-footer{display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); padding-top:10px; font-size:.78rem;}
.manisha-origin{font-family:var(--mono); color:var(--text-soft);}
.manisha-link{color:var(--karnaphuli-teal); font-weight:600; text-decoration:none;}

/* ==========================================================================
   Smart Commute, Fair-Fare Calculator & Tide-Waterlogging Radar (#route-planner)
   ========================================================================== */
.tide-radar-box{
  background:linear-gradient(135deg, var(--ink-navy-deep), var(--ink-navy));
  color:var(--hill-sand);
  border-radius:12px;
  padding:20px 24px;
  margin-bottom:24px;
  border:1px solid rgba(227,168,87,0.28);
  box-shadow:0 12px 32px rgba(8,23,38,0.16);
}
.tide-radar-box.alert-mode{
  background:linear-gradient(135deg, #4B1215, #2A0B0E);
  border-color:#FF7B7D;
}
.tide-radar-top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  flex-wrap:wrap;
  padding-bottom:16px;
  border-bottom:1px solid rgba(242,233,216,0.14);
}
.tide-status-left{
  display:flex;
  align-items:flex-start;
  gap:12px;
  max-width:740px;
}
.tide-live-dot{
  width:12px;
  height:12px;
  border-radius:50%;
  background:#2ECC71;
  box-shadow:0 0 0 4px rgba(46,204,113,0.25);
  margin-top:6px;
  flex-shrink:0;
  animation:tidePulse 2s infinite;
}
.tide-live-dot.warn{
  background:#F39C12;
  box-shadow:0 0 0 4px rgba(243,156,18,0.28);
}
.tide-live-dot.danger{
  background:#FF4D4F;
  box-shadow:0 0 0 4px rgba(255,77,79,0.32);
}
@keyframes tidePulse{
  0%{transform:scale(0.95);}
  50%{transform:scale(1.15);}
  100%{transform:scale(0.95);}
}
.tide-headline{
  font-family:var(--serif);
  font-size:1.14rem;
  color:#ffffff;
  font-weight:500;
  line-height:1.35;
}
.tide-subline{
  font-size:.84rem;
  color:#C9D6D2;
  margin-top:4px;
}
.tide-controls{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.weather-pill{
  font-family:var(--mono);
  font-size:.76rem;
  background:rgba(255,255,255,0.1);
  color:var(--signal-amber);
  padding:6px 12px;
  border-radius:20px;
  border:1px solid rgba(227,168,87,0.3);
}
.tide-sim-btn{
  font-family:var(--sans);
  font-size:.8rem;
  font-weight:600;
  background:rgba(227,168,87,0.18);
  color:#FFE3A8;
  border:1px solid var(--signal-amber);
  padding:6px 14px;
  border-radius:20px;
  cursor:pointer;
  transition:all .2s ease;
}
.tide-sim-btn:hover, .tide-sim-btn.active{
  background:var(--signal-amber);
  color:var(--ink-navy-deep);
}
.waterlog-zones-strip{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(175px, 1fr));
  gap:10px;
  margin-top:14px;
}
.w-zone-chip{
  background:rgba(255,255,255,0.06);
  border:1px solid rgba(255,255,255,0.12);
  border-radius:8px;
  padding:8px 12px;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.w-zone-name{
  font-size:.83rem;
  font-weight:600;
  color:#fff;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.w-zone-status{
  font-family:var(--mono);
  font-size:.71rem;
  color:#9FE6B8;
}
.w-zone-status.warn{color:#FFD27D;}
.w-zone-status.danger{color:#FF9496;}

/* Commute Planner Card */
.commute-planner-card{
  background:var(--card-bg);
  border:1px solid var(--line);
  border-radius:12px;
  padding:26px;
  box-shadow:0 10px 30px rgba(0,0,0,0.05);
}
.commute-Quick-bar{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  padding-bottom:18px;
  margin-bottom:20px;
  border-bottom:1px solid var(--line);
}
.commute-quick-label{
  font-family:var(--mono);
  font-size:.76rem;
  color:var(--cargo-rust);
  font-weight:600;
  margin-right:4px;
}
.commute-preset-pill{
  font-family:var(--sans);
  font-size:.8rem;
  padding:5px 12px;
  border-radius:18px;
  border:1px solid var(--line);
  background:var(--paper);
  color:var(--text-main);
  cursor:pointer;
  transition:all .2s ease;
}
.commute-preset-pill:hover, .commute-preset-pill.active{
  background:var(--karnaphuli-teal);
  color:#fff;
  border-color:var(--karnaphuli-teal);
}
.commute-selector-row{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:14px;
  align-items:end;
  margin-bottom:24px;
}
@media(max-width:760px){
  .commute-selector-row{
    grid-template-columns:1fr;
  }
  .commute-swap-btn{
    justify-self:center;
    transform:rotate(90deg);
  }
}
.commute-field label{
  display:block;
  font-family:var(--mono);
  font-size:.75rem;
  color:var(--text-soft);
  margin-bottom:6px;
  font-weight:600;
}
.commute-field select{
  width:100%;
  padding:12px 14px;
  border-radius:8px;
  border:1.5px solid var(--line);
  background:var(--paper);
  color:var(--text-main);
  font-family:var(--sans);
  font-size:.96rem;
  font-weight:500;
  cursor:pointer;
  transition:border-color .2s;
}
.commute-field select:focus{
  outline:none;
  border-color:var(--cargo-rust);
}
.commute-swap-btn{
  width:44px;
  height:44px;
  border-radius:50%;
  border:1.5px solid var(--cargo-rust);
  background:var(--paper);
  color:var(--cargo-rust);
  font-size:1.15rem;
  font-weight:700;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .2s ease;
}
.commute-swap-btn:hover{
  background:var(--cargo-rust);
  color:#fff;
}

/* Result Cards inside Commute Planner */
.commute-route-banner{
  background:var(--hill-sand);
  border-left:4px solid var(--karnaphuli-teal);
  padding:14px 18px;
  border-radius:8px;
  margin-bottom:18px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:12px;
}
.commute-route-title{
  font-family:var(--serif);
  font-size:1.22rem;
  color:var(--text-main);
}
.commute-meta-badges{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.c-meta-badge{
  font-family:var(--mono);
  font-size:.74rem;
  padding:4px 10px;
  border-radius:14px;
  background:var(--card-bg);
  border:1px solid var(--line);
  color:var(--cargo-rust);
  font-weight:600;
}
.commute-cards-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:16px;
}
@media(max-width:900px){
  .commute-cards-grid{
    grid-template-columns:1fr;
  }
}
.commute-mode-card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:10px;
  padding:18px 20px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
.commute-mode-card.highlight{
  border-top:3px solid var(--karnaphuli-teal);
}
.commute-mode-card.cng{
  border-top:3px solid var(--cargo-rust);
}
.commute-mode-card.smart{
  border-top:3px solid var(--signal-amber);
}
.c-mode-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:8px;
  margin-bottom:10px;
}
.c-mode-title{
  font-family:var(--serif);
  font-size:1.08rem;
  font-weight:600;
  color:var(--text-main);
}
.c-fare-tag{
  font-family:var(--mono);
  font-size:.88rem;
  font-weight:700;
  padding:3px 10px;
  border-radius:6px;
  background:rgba(31,92,88,0.12);
  color:var(--karnaphuli-teal);
  white-space:nowrap;
}
[data-theme="dark"] .c-fare-tag{
  background:rgba(227,168,87,0.18);
  color:var(--signal-amber);
}
.c-fare-tag.rust{
  background:rgba(181,87,46,0.12);
  color:var(--cargo-rust);
}
.c-mode-steps{
  font-size:.88rem;
  color:var(--text-main);
  line-height:1.55;
  margin-bottom:12px;
}
.c-mode-tip{
  font-size:.8rem;
  color:var(--text-soft);
  padding-top:10px;
  border-top:1px dashed var(--line);
}
.commute-actions-bar{
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid var(--line);
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
}
.commute-share-btn{
  background:var(--karnaphuli-teal);
  color:#fff;
  border:none;
  border-radius:6px;
  padding:9px 16px;
  font-family:var(--sans);
  font-size:.86rem;
  font-weight:600;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:6px;
  transition:background .2s;
}
.commute-share-btn:hover{
  background:#154541;
}

/* ==========================================================================
   🤖 Chattogram Smart Guide Chatbot (Floating Assistant & Auto-Navigator)
   ========================================================================== */
.ctg-chat-fab{
  position:fixed;
  bottom:24px;
  right:28px;
  z-index:210;
  background:linear-gradient(135deg, var(--ink-navy-deep), var(--karnaphuli-teal));
  color:#ffffff;
  border:1.5px solid var(--signal-amber);
  border-radius:32px;
  padding:11px 20px;
  font-family:var(--sans);
  font-size:.92rem;
  font-weight:600;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:8px;
  box-shadow:0 10px 28px rgba(8,23,38,0.4);
  transition:all .25s ease;
}
.ctg-chat-fab:hover{
  transform:translateY(-3px) scale(1.02);
  box-shadow:0 14px 34px rgba(31,92,88,0.55);
}
.ctg-chat-fab-icon{
  font-size:1.2rem;
}
.ctg-chat-pulse{
  width:9px;
  height:9px;
  border-radius:50%;
  background:#2ECC71;
  box-shadow:0 0 0 4px rgba(46,204,113,0.3);
  animation:tidePulse 2s infinite;
}
@media(max-width:600px){
  .ctg-chat-fab{
    bottom:18px;
    right:18px;
    padding:10px 16px;
    font-size:.84rem;
  }
}

.ctg-chat-window{
  position:fixed;
  bottom:86px;
  right:28px;
  width:390px;
  max-width:calc(100vw - 32px);
  height:530px;
  max-height:calc(100vh - 120px);
  background:var(--paper);
  border:1.5px solid var(--line);
  border-radius:16px;
  box-shadow:0 24px 64px rgba(8,23,38,0.42);
  z-index:250;
  display:none;
  flex-direction:column;
  overflow:hidden;
  animation:chatPopUp .25s cubic-bezier(0.16, 1, 0.3, 1);
}
.ctg-chat-window.open{
  display:flex;
}
@keyframes chatPopUp{
  from{opacity:0; transform:translateY(20px) scale(0.96);}
  to{opacity:1; transform:translateY(0) scale(1);}
}
@media(max-width:600px){
  .ctg-chat-window{
    right:16px;
    bottom:76px;
    width:calc(100vw - 32px);
    height:72vh;
  }
}

.ctg-chat-header{
  background:linear-gradient(135deg, var(--ink-navy-deep), var(--karnaphuli-teal));
  color:var(--hill-sand);
  padding:14px 18px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-bottom:1px solid rgba(227,168,87,0.25);
}
.ctg-chat-brand{
  display:flex;
  align-items:center;
  gap:10px;
}
.ctg-chat-avatar{
  width:38px;
  height:38px;
  border-radius:50%;
  background:rgba(227,168,87,0.2);
  border:1px solid var(--signal-amber);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.15rem;
}
.ctg-chat-title{
  font-family:var(--serif);
  font-size:1.08rem;
  font-weight:600;
  color:#fff;
  line-height:1.2;
}
.ctg-chat-status{
  font-size:.73rem;
  color:#C8DDD9;
  display:flex;
  align-items:center;
  gap:5px;
  margin-top:2px;
}
.online-dot{
  width:7px;
  height:7px;
  border-radius:50%;
  background:#2ECC71;
  display:inline-block;
}
.ctg-chat-close{
  background:rgba(255,255,255,0.1);
  border:none;
  color:#fff;
  width:30px;
  height:30px;
  border-radius:50%;
  cursor:pointer;
  font-size:.95rem;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .2s;
}
.ctg-chat-close:hover{
  background:var(--cargo-rust);
}

.ctg-chat-messages{
  flex:1;
  overflow-y:auto;
  padding:16px;
  display:flex;
  flex-direction:column;
  gap:12px;
  background:var(--paper);
}
.chat-msg{
  max-width:88%;
  padding:11px 14px;
  border-radius:12px;
  font-size:.88rem;
  line-height:1.5;
  word-wrap:break-word;
}
.chat-msg.bot{
  align-self:flex-start;
  background:var(--card-bg);
  color:var(--text-main);
  border:1px solid var(--line);
  border-bottom-left-radius:3px;
  box-shadow:0 3px 10px rgba(0,0,0,0.03);
}
.chat-msg.user{
  align-self:flex-end;
  background:var(--karnaphuli-teal);
  color:#ffffff;
  border-bottom-right-radius:3px;
}
.chat-msg-actions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:10px;
  padding-top:8px;
  border-top:1px dashed var(--line);
}
.chat-nav-btn{
  background:rgba(181,87,46,0.12);
  color:var(--cargo-rust);
  border:1px solid var(--cargo-rust);
  border-radius:6px;
  padding:5px 10px;
  font-family:var(--sans);
  font-size:.78rem;
  font-weight:600;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:4px;
  transition:all .2s;
  text-decoration:none;
}
.chat-nav-btn:hover{
  background:var(--cargo-rust);
  color:#fff;
}
.chat-nav-btn.teal{
  background:rgba(31,92,88,0.12);
  color:var(--karnaphuli-teal);
  border-color:var(--karnaphuli-teal);
}
[data-theme="dark"] .chat-nav-btn.teal{
  background:rgba(227,168,87,0.16);
  color:var(--signal-amber);
  border-color:var(--signal-amber);
}
.chat-nav-btn.teal:hover{
  background:var(--karnaphuli-teal);
  color:#fff;
}

.ctg-chat-quick-chips{
  display:flex;
  gap:6px;
  padding:8px 14px;
  overflow-x:auto;
  background:var(--hill-sand);
  border-top:1px solid var(--line);
  scrollbar-width:thin;
}
.chat-q-chip{
  white-space:nowrap;
  background:var(--card-bg);
  color:var(--text-main);
  border:1px solid var(--line);
  border-radius:16px;
  padding:4px 10px;
  font-family:var(--sans);
  font-size:.75rem;
  cursor:pointer;
  transition:all .2s;
}
.chat-q-chip:hover{
  border-color:var(--cargo-rust);
  color:var(--cargo-rust);
}

.ctg-chat-input-bar{
  display:flex;
  gap:8px;
  padding:10px 14px;
  background:var(--card-bg);
  border-top:1px solid var(--line);
}
.ctg-chat-input-bar input{
  flex:1;
  border:1px solid var(--line);
  background:var(--paper);
  color:var(--text-main);
  padding:9px 12px;
  border-radius:20px;
  font-family:var(--sans);
  font-size:.88rem;
  outline:none;
}
.ctg-chat-input-bar input:focus{
  border-color:var(--karnaphuli-teal);
}
.ctg-chat-send-btn{
  width:38px;
  height:38px;
  border-radius:50%;
  border:none;
  background:var(--cargo-rust);
  color:#fff;
  font-size:.95rem;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .2s;
}
.ctg-chat-send-btn:hover{
  background:var(--cargo-rust-bright);
}

/* Section highlight pulse when navigated from Chatbot */
.chatbot-section-highlight{
  animation:secPulseGlow 2.2s ease;
}
@keyframes secPulseGlow{
  0%{box-shadow:0 0 0 0 rgba(227,168,87,0.6);}
  40%{box-shadow:0 0 0 12px rgba(227,168,87,0.25);}
  100%{box-shadow:0 0 0 0 rgba(227,168,87,0);}
}

/* ==========================================================================
   🏆 Unseen Chattogram Passport & Viral Explorer Map (#ctg-passport)
   ========================================================================== */
.passport-shell{
  background:var(--card-bg);
  border:1px solid var(--line);
  border-radius:14px;
  padding:26px;
  box-shadow:0 12px 36px rgba(8,23,38,0.08);
}
.passport-top-bar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:16px;
  padding-bottom:20px;
  margin-bottom:24px;
  border-bottom:1px solid var(--line);
}
.passport-name-box{
  display:flex;
  align-items:center;
  gap:10px;
  flex:1;
  min-width:280px;
}
.passport-name-box label{
  font-family:var(--mono);
  font-size:.8rem;
  font-weight:600;
  color:var(--cargo-rust);
  white-space:nowrap;
}
.passport-name-box input{
  flex:1;
  max-width:340px;
  padding:10px 14px;
  border-radius:8px;
  border:1.5px solid var(--line);
  background:var(--paper);
  color:var(--text-main);
  font-family:var(--sans);
  font-size:.94rem;
}
.passport-name-box input:focus{
  outline:none;
  border-color:var(--cargo-rust);
}
.passport-top-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.passport-ctrl-btn{
  background:var(--paper);
  border:1px solid var(--line);
  color:var(--text-main);
  padding:8px 14px;
  border-radius:20px;
  font-family:var(--sans);
  font-size:.82rem;
  font-weight:600;
  cursor:pointer;
  transition:all .2s;
}
.passport-ctrl-btn:hover{
  background:var(--karnaphuli-teal);
  color:#fff;
  border-color:var(--karnaphuli-teal);
}
.passport-ctrl-btn.reset:hover{
  background:var(--emergency-red);
  border-color:var(--emergency-red);
}

.passport-main-grid{
  display:grid;
  grid-template-columns:410px 1fr;
  gap:26px;
  align-items:start;
}
@media(max-width:960px){
  .passport-main-grid{
    grid-template-columns:1fr;
  }
}

/* Live Passport Visual Card */
.passport-live-card{
  background:linear-gradient(155deg, #071522 0%, #0F2438 55%, #184946 100%);
  color:#F2E9D8;
  border-radius:14px;
  padding:22px;
  border:2px solid rgba(227,168,87,0.45);
  box-shadow:0 18px 44px rgba(8,23,38,0.35);
  position:relative;
  overflow:hidden;
}
.p-card-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:10px;
  padding-bottom:14px;
  border-bottom:1px dashed rgba(227,168,87,0.3);
}
.p-card-eyebrow{
  font-family:var(--mono);
  font-size:.63rem;
  letter-spacing:1.4px;
  color:var(--signal-amber);
}
.p-card-holder{
  font-family:var(--serif);
  font-size:1.28rem;
  color:#ffffff;
  margin-top:4px;
}
.p-card-stamp{
  border:1.5px dashed var(--signal-amber);
  color:var(--signal-amber);
  font-family:var(--mono);
  font-size:.62rem;
  font-weight:700;
  padding:5px 8px;
  border-radius:6px;
  text-align:center;
  line-height:1.15;
  transform:rotate(-6deg);
}
.p-score-row{
  display:flex;
  align-items:center;
  gap:16px;
  margin:18px 0;
}
.p-score-circle{
  width:88px;
  height:88px;
  border-radius:50%;
  background:rgba(227,168,87,0.14);
  border:3px solid var(--signal-amber);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  box-shadow:0 0 20px rgba(227,168,87,0.22);
}
.p-score-num{
  font-family:var(--mono);
  font-size:1.5rem;
  font-weight:700;
  color:var(--signal-amber);
  line-height:1.1;
}
.p-score-lbl{
  font-size:.66rem;
  color:#D8E0DB;
}
.p-rank-tag{
  display:inline-block;
  background:var(--cargo-rust);
  color:#fff;
  font-family:var(--sans);
  font-size:.86rem;
  font-weight:700;
  padding:3px 12px;
  border-radius:14px;
  margin-bottom:5px;
}
.p-rank-desc{
  font-size:.8rem;
  color:#C9D6D2;
  line-height:1.35;
}
.p-mini-stats{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:8px;
  font-family:var(--mono);
  font-size:.68rem;
  color:var(--signal-amber);
}
.p-map-box{
  background:rgba(6,16,26,0.55);
  border:1px solid rgba(242,233,216,0.14);
  border-radius:10px;
  padding:12px;
  text-align:center;
}
.p-map-caption{
  font-size:.76rem;
  color:#D8E0DB;
  margin-bottom:8px;
}
#ctgPassportSvgMap{
  width:100%;
  max-height:360px;
  display:block;
  margin:0 auto;
  user-select:none;
  filter:drop-shadow(0 6px 16px rgba(0,0,0,0.35));
}
.svg-zone-node{
  cursor:pointer;
  transition:all .2s ease;
}
.svg-zone-node path{
  fill:#D9383A;
  stroke:rgba(255,255,255,0.82);
  stroke-width:1.15;
  stroke-linejoin:round;
  transition:fill .2s ease, stroke .2s ease, stroke-width .2s ease;
}
.svg-zone-node:hover path{
  fill:#F04D4F;
  stroke:#FFFFFF;
  stroke-width:1.7;
}
.svg-zone-node.visited path{
  fill:#27AE60;
  stroke:#FFFFFF;
  stroke-width:1.35;
}
.svg-zone-node.visited:hover path{
  fill:#2ECC71;
  stroke:#FFFFFF;
  stroke-width:1.8;
}
.p-map-legend{
  display:flex;
  justify-content:center;
  gap:18px;
  margin-top:10px;
  font-size:.76rem;
  color:#D8E0DB;
}
.leg-box{
  display:inline-block;
  width:12px;
  height:12px;
  border-radius:3px;
  margin-right:5px;
  vertical-align:middle;
}
.leg-box.visited{background:#27AE60; border:1px solid #ffffff;}
.leg-box.unvisited{background:#D9383A; border:1px solid #ffffff;}

.p-card-footer{
  margin-top:14px;
  padding-top:10px;
  border-top:1px solid rgba(242,233,216,0.14);
  display:flex;
  justify-content:space-between;
  font-family:var(--mono);
  font-size:.7rem;
  color:#A9B8B4;
}

.passport-download-bar{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:14px;
}
.passport-dl-btn{
  width:100%;
  background:linear-gradient(135deg, var(--cargo-rust), #D9822B);
  color:#ffffff;
  border:none;
  border-radius:10px;
  padding:13px 18px;
  font-family:var(--sans);
  font-size:.95rem;
  font-weight:700;
  cursor:pointer;
  box-shadow:0 8px 22px rgba(181,87,46,0.35);
  transition:all .2s ease;
}
.passport-dl-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(181,87,46,0.5);
}
.passport-share-btn{
  width:100%;
  background:var(--karnaphuli-teal);
  color:#ffffff;
  border:none;
  border-radius:10px;
  padding:10px 16px;
  font-family:var(--sans);
  font-size:.88rem;
  font-weight:600;
  cursor:pointer;
  transition:background .2s;
}
.passport-share-btn:hover{
  background:#154541;
}

/* Checklist Groups */
.p-check-group{
  margin-bottom:20px;
}
.p-check-group:last-child{
  margin-bottom:0;
}
.p-check-group-title{
  font-family:var(--serif);
  font-size:1.1rem;
  color:var(--text-main);
  margin-bottom:10px;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.p-check-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(175px, 1fr));
  gap:8px;
}
.p-check-item{
  display:flex;
  align-items:center;
  gap:8px;
  padding:9px 12px;
  border-radius:8px;
  border:1.5px solid var(--line);
  background:var(--paper);
  color:var(--text-main);
  font-size:.85rem;
  font-weight:500;
  cursor:pointer;
  user-select:none;
  transition:all .18s ease;
}
.p-check-item:hover{
  border-color:var(--cargo-rust);
}
.p-check-item.checked{
  background:rgba(181,87,46,0.12);
  border-color:var(--cargo-rust);
  color:var(--cargo-rust);
  font-weight:600;
}
[data-theme="dark"] .p-check-item.checked{
  background:rgba(227,168,87,0.18);
  border-color:var(--signal-amber);
  color:var(--signal-amber);
}
.p-check-box{
  width:18px;
  height:18px;
  border-radius:4px;
  border:1.5px solid var(--text-soft);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:.72rem;
  flex-shrink:0;
}
.p-check-item.checked .p-check-box{
  background:var(--cargo-rust);
  border-color:var(--cargo-rust);
  color:#fff;
}
[data-theme="dark"] .p-check-item.checked .p-check-box{
  background:var(--signal-amber);
  border-color:var(--signal-amber);
  color:var(--ink-navy-deep);
}








/* Floating Action Stack: Hotline Button (Above) + Chatbot FAB (Below) */
.floating-hotline-fab {
  position: fixed;
  bottom: 84px;
  right: 28px;
  z-index: 210;
  background: var(--emergency-red);
  color: #ffffff !important;
  border: 1px solid #FF7B7D;
  border-radius: 32px;
  padding: 10px 18px;
  font-family: var(--sans);
  font-size: .88rem;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  box-shadow: 0 8px 24px rgba(217,56,58,0.35);
  transition: all .25s ease;
  text-decoration: none;
}
.floating-hotline-fab:hover {
  background: #B7282A;
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(217,56,58,0.5);
}
.floating-hotline-fab .f-hotline-icon {
  font-size: 1.05rem;
}
@media(max-width: 600px) {
  .floating-hotline-fab {
    bottom: 70px;
    right: 18px;
    padding: 8px 14px;
    font-size: .82rem;
  }
  .back-to-top {
    bottom: 122px;
    right: 18px;
  }
}

/* ==========================================================================
   Chatbot Verification Note & Scaling Enhancements
   ========================================================================== */
.chat-verify-note {
  font-size: 0.76rem;
  color: var(--cargo-rust);
  margin-top: 6px;
  padding: 4px 8px;
  background: rgba(181,87,46,0.08);
  border-left: 2px solid var(--cargo-rust);
  border-radius: 4px;
}
.chat-verify-note a {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
}

/* Secondary Passport Download Button (Story Size) */
.passport-dl-btn.alt {
  background: var(--karnaphuli-teal);
  border-color: #2F7C77;
}
.passport-dl-btn.alt:hover {
  background: #174744;
}

/* Passport Extras: Badges, Next Destinations, Seasonal Challenge */
.passport-extras {
  margin-top: 32px;
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 20px;
}
@media (max-width: 900px) {
  .passport-extras {
    grid-template-columns: 1fr;
  }
}
.px-panel {
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 20px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.03);
}
.px-side {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.px-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-main);
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}
.px-title span {
  font-size: 0.8rem;
  font-family: var(--mono);
  color: var(--cargo-rust);
  background: rgba(181,87,46,0.1);
  padding: 2px 8px;
  border-radius: 12px;
}
.px-desc {
  font-size: 0.86rem;
  color: var(--text-soft);
  margin-bottom: 12px;
  line-height: 1.5;
}
.px-progress {
  height: 6px;
  background: var(--line);
  border-radius: 6px;
  overflow: hidden;
  margin-bottom: 14px;
}
.px-progress i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--karnaphuli-teal), var(--signal-amber));
  transition: width 0.4s ease;
}
.px-badge-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 10px;
}
.px-badge {
  background: var(--paper);
  border: 1px dashed var(--line);
  border-radius: 8px;
  padding: 12px 10px;
  text-align: center;
  transition: all 0.25s ease;
}
.px-badge.earned {
  border: 1px solid #27AE60;
  background: rgba(39,174,96,0.08);
}
.px-badge-medal {
  font-size: 0.82rem;
  font-weight: 700;
  font-family: var(--mono);
  color: var(--text-soft);
  margin-bottom: 4px;
}
.px-badge.earned .px-badge-medal {
  color: #27AE60;
}
.px-badge-name {
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--text-main);
}
.px-badge-desc {
  font-size: 0.72rem;
  color: var(--text-soft);
  margin-top: 2px;
}
.px-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.px-chip {
  font-size: 0.78rem;
  background: var(--paper);
  border: 1px solid var(--line);
  color: var(--text-main);
  padding: 4px 10px;
  border-radius: 16px;
  cursor: pointer;
  transition: all 0.2s;
}
.px-chip.done {
  background: rgba(39,174,96,0.15);
  border-color: #27AE60;
  color: #1e824c;
}
[data-theme="dark"] .px-chip.done {
  color: #2ecc71;
}
.px-next {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
}
.px-next:last-child {
  border-bottom: none;
}
.px-next-name {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--text-main);
}
.px-next-reason {
  font-size: 0.74rem;
  color: var(--cargo-rust);
}
.px-next-actions {
  display: flex;
  gap: 6px;
}
.px-mini-btn {
  font-size: 0.74rem;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--text-main);
  cursor: pointer;
  transition: all 0.2s;
}
.px-mini-btn:hover {
  border-color: var(--karnaphuli-teal);
  color: var(--karnaphuli-teal);
}
.px-mini-btn.done {
  background: rgba(39,174,96,0.1);
  border-color: #27AE60;
  color: #1e824c;
}
[data-theme="dark"] .px-mini-btn.done {
  color: #2ecc71;
}

/* Friend Comparison Challenge Card */
.passport-friend-card {
  background: linear-gradient(135deg, var(--ink-navy-deep), var(--ink-navy));
  color: #FFFFFF;
  border: 2px solid var(--signal-amber);
  border-radius: 12px;
  padding: 24px;
  margin-bottom: 24px;
  box-shadow: 0 12px 36px rgba(0,0,0,0.3);
}
.pf-head {
  text-align: center;
  margin-bottom: 18px;
}
.pf-eyebrow {
  font-family: var(--mono);
  font-size: 0.76rem;
  color: var(--signal-amber);
  letter-spacing: 1px;
  text-transform: uppercase;
}
.pf-title {
  font-size: 1.15rem;
  margin-top: 4px;
}
.pf-versus {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 24px;
  margin: 16px 0;
}
.pf-side {
  text-align: center;
  flex: 1;
  max-width: 180px;
}
.mini-ctg-map {
  width: 90px;
  height: 115px;
  margin: 0 auto 6px;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
}
.mini-ctg-map path {
  fill: #D9383A;
  stroke: #FFFFFF;
  stroke-width: 1;
}
.mini-ctg-map path.v {
  fill: #27AE60;
}
.pf-score {
  font-family: var(--mono);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--signal-amber);
}
.pf-name {
  font-size: 0.92rem;
  font-weight: 600;
  margin-top: 2px;
}
.pf-rank {
  font-size: 0.74rem;
  color: #B9C6C4;
}
.pf-vs {
  font-family: var(--mono);
  font-weight: 700;
  font-size: 1.4rem;
  color: var(--cargo-rust);
  padding: 8px 12px;
  border-radius: 50%;
  background: rgba(255,255,255,0.06);
}
.pf-verdict {
  text-align: center;
  font-size: 0.98rem;
  font-weight: 600;
  color: var(--signal-amber);
  background: rgba(227,168,87,0.12);
  padding: 10px 16px;
  border-radius: 8px;
  margin: 14px 0;
}
.pf-stats {
  text-align: center;
  font-size: 0.82rem;
  color: #D8E0DB;
  margin-bottom: 12px;
}
.pf-only {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
  margin-bottom: 16px;
}
.pf-chip {
  font-size: 0.76rem;
  background: rgba(255,255,255,0.1);
  color: #FFFFFF;
  border: 1px solid rgba(255,255,255,0.25);
  padding: 3px 8px;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.2s;
}
.pf-chip:hover {
  background: var(--karnaphuli-teal);
  border-color: var(--karnaphuli-teal);
}
.pf-actions {
  display: flex;
  justify-content: center;
  gap: 10px;
}

/* Dialect Quiz Section */
#ctg-quiz {
  padding: 60px 0;
  background: var(--paper);
}
.quiz-shell {
  max-width: 680px;
  margin: 0 auto;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 32px 28px;
  box-shadow: 0 8px 28px rgba(0,0,0,0.04);
}
.quiz-top {
  display: flex;
  justify-content: space-between;
  font-family: var(--mono);
  font-size: 0.85rem;
  color: var(--cargo-rust);
  margin-bottom: 10px;
}
.quiz-q {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--text-main);
  margin: 18px 0 20px;
  text-align: center;
}
.quiz-opts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 520px) {
  .quiz-opts {
    grid-template-columns: 1fr;
  }
}
.quiz-opt {
  padding: 14px 16px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 8px;
  font-family: var(--sans);
  font-size: 0.95rem;
  color: var(--text-main);
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: center;
}
.quiz-opt:hover:not(:disabled) {
  border-color: var(--karnaphuli-teal);
  background: rgba(31,92,88,0.08);
  transform: translateY(-1px);
}
.quiz-opt.right {
  background: rgba(39,174,96,0.18) !important;
  border-color: #27AE60 !important;
  color: #1e824c !important;
  font-weight: 700;
}
[data-theme="dark"] .quiz-opt.right {
  color: #2ecc71 !important;
}
.quiz-opt.wrong {
  background: rgba(217,56,58,0.18) !important;
  border-color: var(--emergency-red) !important;
  color: var(--emergency-red) !important;
}
.quiz-feedback {
  margin-top: 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  min-height: 40px;
}
.quiz-result {
  text-align: center;
  padding: 20px 0;
}
.quiz-result-score {
  font-family: var(--mono);
  font-size: 2.8rem;
  font-weight: 700;
  color: var(--cargo-rust);
  margin-bottom: 10px;
}

/* Event Countdown Grid */
.event-countdown-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
  margin-top: 24px;
}
.ev-card {
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 20px 16px;
  text-align: center;
  transition: all 0.25s ease;
  box-shadow: 0 4px 14px rgba(0,0,0,0.03);
}
.ev-card.next {
  border-color: var(--signal-amber);
  background: linear-gradient(180deg, rgba(227,168,87,0.08), transparent);
}
.ev-days {
  font-family: var(--mono);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--cargo-rust);
}
.ev-days small {
  font-size: 0.78rem;
  font-family: var(--sans);
  color: var(--text-soft);
  display: block;
}
.ev-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-main);
  margin: 8px 0 4px;
}
.ev-date {
  font-size: 0.8rem;
  color: var(--karnaphuli-teal);
  font-weight: 600;
}
.ev-place {
  font-size: 0.74rem;
  color: var(--text-soft);
  margin-top: 4px;
}

/* Direct link target highlight pulse */
.section-target-highlight {
  position: relative;
  animation: sectionTargetGlow 2s ease-out;
}
@keyframes sectionTargetGlow {
  0% {
    box-shadow: 0 0 0 4px var(--signal-amber);
    border-radius: 12px;
  }
  30% {
    box-shadow: 0 0 30px 8px rgba(227, 168, 87, 0.45);
    border-radius: 12px;
  }
  100% {
    box-shadow: none;
  }
}

/* ==========================================================================
   PWA Installation & All Device Responsiveness Support
   ========================================================================== */
.topbar-pwa-btn {
  background: var(--karnaphuli-teal);
  color: #FFFFFF !important;
  border: 1px solid #3AA39B;
  border-radius: 20px;
  padding: 6px 14px;
  font-family: var(--sans);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: all 0.2s ease;
  white-space: nowrap;
  box-shadow: 0 2px 8px rgba(31,92,88,0.25);
}
.topbar-pwa-btn:hover {
  background: #174744;
  transform: translateY(-1px);
}
[data-theme="dark"] .topbar-pwa-btn {
  background: var(--cargo-rust);
  border-color: #E27242;
}

/* Safe-Area Insets for iPhone notch & Home Bar */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
  .ctg-chat-fab {
    bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  }
  .floating-hotline-fab {
    bottom: calc(84px + env(safe-area-inset-bottom, 0px));
  }
  .back-to-top {
    bottom: calc(144px + env(safe-area-inset-bottom, 0px));
  }
  @media (max-width: 600px) {
    .ctg-chat-fab {
      bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    }
    .floating-hotline-fab {
      bottom: calc(66px + env(safe-area-inset-bottom, 0px));
    }
    .back-to-top {
      bottom: calc(116px + env(safe-area-inset-bottom, 0px));
    }
  }
}

/* Touch targets & Mobile Screen Polish */
html {
  -webkit-text-size-adjust: 100%;
  touch-action: manipulation;
}
button, a, input, select, textarea {
  -webkit-tap-highlight-color: transparent;
}
@media (max-width: 480px) {
  .p-check-item {
    min-height: 44px;
    padding: 10px 12px;
  }
  .passport-ctrl-btn, .passport-dl-btn, .passport-share-btn {
    min-height: 44px;
    font-size: 0.84rem;
  }
  .quiz-opt {
    min-height: 48px;
  }
  .hero-search-input {
    font-size: 0.9rem;
  }
}

/* Standalone PWA Window Support */
@media all and (display-mode: standalone) {
  header.topbar {
    padding-top: max(8px, env(safe-area-inset-top, 0px));
  }
}
