@import url('https://fonts.googleapis.com/css2?family=Geologica:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root{
  --bg:#F5F7FA;
  --surface:#FFFFFF;
  --card:rgba(15,23,42,0.04);
  --card-hover:rgba(15,23,42,0.07);
  --border:rgba(15,23,42,0.08);
  --border-strong:rgba(15,23,42,0.14);
  --inset:rgba(15,23,42,0.03);
  --primary:#0D9488;
  --primary-rgb:13,148,136;
  --accent:#D97706;
  --accent-rgb:217,119,6;
  --danger:#DC2626;
  --success:#16A34A;
  --success-rgb:22,163,74;
  --paper:#0F172A;
  --slate:#64748B;
  --slate-dim:#94A3B8;
  --radius:18px;
  --topbar-gradient:linear-gradient(to bottom, rgba(245,247,250,0.92), rgba(245,247,250,0));
  --overlay:rgba(15,23,42,0.45);
  --shadow-primary:rgba(13,148,136,0.28);
  --hero-canvas-opacity:0.32;
  --btn-primary-bg:#0F172A;
  --btn-primary-text:#FFFFFF;
  font-size:16px;
}

[data-theme="dark"]{
  --bg:#081019;
  --surface:#111827;
  --card:rgba(255,255,255,0.04);
  --card-hover:rgba(255,255,255,0.07);
  --border:rgba(255,255,255,0.08);
  --border-strong:rgba(255,255,255,0.16);
  --inset:rgba(255,255,255,0.03);
  --primary:#5EEAD4;
  --primary-rgb:94,234,212;
  --accent:#F2A93B;
  --accent-rgb:242,169,59;
  --danger:#EF4444;
  --success:#22C55E;
  --success-rgb:34,197,94;
  --paper:#F5F3EE;
  --slate:#94A3B8;
  --slate-dim:#5b6b85;
  --topbar-gradient:linear-gradient(to bottom, rgba(8,16,25,0.85), rgba(8,16,25,0));
  --overlay:rgba(4,8,13,0.7);
  --shadow-primary:rgba(94,234,212,0.35);
  --hero-canvas-opacity:0.5;
  --btn-primary-bg:#F5F3EE;
  --btn-primary-text:#081019;
}

*{box-sizing:border-box;}
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body{
  background:var(--bg);
  color:var(--paper);
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  overflow-x:hidden;
}
.mono{font-family:'JetBrains Mono',monospace;}

/* heading font: Fraunces by default (EN/ES), Geologica when lang=ru */
.hero-title, .flow-title, .brand{
  font-family:'Fraunces',serif;
  font-weight:500;
  transition:font-family .01s;
}
body.lang-ru .hero-title,
body.lang-ru .flow-title,
body.lang-ru .brand,
body.lang-ru .gate-logo,
body.lang-ru .executor-card h3,
body.lang-kk .hero-title,
body.lang-kk .flow-title,
body.lang-kk .brand,
body.lang-kk .gate-logo,
body.lang-kk .executor-card h3{
  font-family:'Geologica',sans-serif;
  font-weight:600;
}

.lang-switch{
  display:flex;
  align-items:center;
  gap:2px;
  padding:3px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--card);
}
.lang-btn{
  min-width:34px;
  padding:5px 8px;
  border:0;
  border-radius:999px;
  background:transparent;
  color:var(--slate);
  font-size:11px;
  font-weight:600;
  letter-spacing:.04em;
  cursor:pointer;
  transition:background .15s,color .15s;
}
.lang-btn:hover{color:var(--paper);}
.lang-btn.active{
  background:rgba(var(--primary-rgb),.16);
  color:var(--primary);
}

a{color:inherit;}
button{font-family:inherit; color:inherit;}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
}

/* ---------- shell ---------- */
.screen{display:none; min-height:100vh; width:100%;}
.screen.active{display:block;}

.topbar{
  position:fixed; top:0; left:0; right:0;
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 32px;
  z-index:50;
  backdrop-filter:blur(10px);
  background:var(--topbar-gradient);
}
.brand{font-size:1.25rem; letter-spacing:-0.01em;}
a.brand{text-decoration:none; color:inherit;}
.brand .dot{color:var(--primary);}
.topbar-right{
  display:flex; align-items:center; justify-content:flex-end;
  gap:12px; flex-shrink:0; margin-left:16px;
}
.topbar-right > *{flex-shrink:0;}

.theme-toggle{
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--card);
  color:var(--slate);
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease, color .2s ease;
}
.theme-toggle:hover{
  border-color:var(--border-strong);
  color:var(--paper);
  background:var(--card-hover);
}
.theme-toggle svg{width:18px; height:18px;}
.theme-toggle .icon-sun,
.theme-toggle .icon-moon{display:none;}
[data-theme="light"] .theme-toggle .icon-moon{display:block;}
[data-theme="dark"] .theme-toggle .icon-sun{display:block;}

.theme-toggle[hidden]{display:none !important;}

.lang-switch{
  display:flex; gap:2px;
  background:var(--card); border:1px solid var(--border);
  border-radius:999px; padding:3px;
}
.lang-switch button{
  background:none; border:none; color:var(--slate);
  font-size:0.78rem; font-weight:600;
  padding:6px 12px; border-radius:999px; cursor:pointer;
  transition:all .2s ease;
}
.lang-switch button.active{background:var(--paper); color:var(--bg);}

.demo-badge{
  font-size:0.7rem; font-weight:600; letter-spacing:0.04em; text-transform:uppercase;
  color:var(--accent);
  border:1px solid rgba(var(--accent-rgb),0.35);
  background:rgba(var(--accent-rgb),0.08);
  padding:5px 11px; border-radius:999px;
}

/* ---------- hero ---------- */
.hero{
  position:relative; z-index:1;
  min-height:100vh;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:140px 24px 80px;
  text-align:center;
}
.hero-canvas{
  position:fixed; inset:0; width:100%; height:100%;
  z-index:0;
  opacity:var(--hero-canvas-opacity); pointer-events:none;
}
.eyebrow{
  font-size:0.78rem; font-weight:600; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--primary); margin-bottom:22px;
}
.hero-title{
  font-size:clamp(2.4rem, 6vw, 4.6rem);
  line-height:1.06;
  letter-spacing:-0.02em;
  margin:0 0 26px;
  max-width:18ch;
}
.hero-title .line2{display:block; color:var(--slate);}
.hero p.sub{
  font-size:1.05rem; line-height:1.6; color:var(--slate);
  max-width:46ch; margin:0 0 40px;
}

.btn-primary{
  display:inline-flex; align-items:center; gap:10px;
  background:var(--btn-primary-bg); color:var(--btn-primary-text);
  border:none; padding:16px 30px;
  border-radius:999px;
  font-size:0.98rem; font-weight:600;
  cursor:pointer;
  transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s ease;
}
.btn-primary:hover{transform:translateY(-2px); box-shadow:0 12px 30px -8px var(--shadow-primary);}
.btn-primary svg{width:16px; height:16px;}

.hero-role-ctas{display:flex; gap:14px; flex-wrap:wrap; justify-content:center;}
.hero-role-ctas .btn-secondary{flex:none;}

.hero-secondary-link{
  display:block; margin:18px auto 0;
  background:none; border:none; padding:0;
  font-size:0.92rem; font-weight:500;
  color:var(--slate); cursor:pointer;
  text-decoration:underline; text-underline-offset:3px;
  transition:color .2s ease;
}
.hero-secondary-link:hover{color:var(--paper);}

/* ticker */
.ticker-wrap{
  position:relative; margin-top:64px; width:100%; max-width:760px;
  border:1px solid var(--border); border-radius:var(--radius);
  background:var(--card); overflow:hidden;
}
.ticker-label{
  display:flex; align-items:center; gap:8px;
  font-size:0.72rem; color:var(--slate-dim);
  text-transform:uppercase; letter-spacing:0.08em; font-weight:600;
  padding:14px 20px 0;
}
.ticker-label .pulse{
  width:6px; height:6px; border-radius:50%; background:var(--primary);
  animation:pulse 2s infinite;
}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(var(--primary-rgb),0.5);}
  70%{box-shadow:0 0 0 8px rgba(var(--primary-rgb),0);}
  100%{box-shadow:0 0 0 0 rgba(var(--primary-rgb),0);}
}
.ticker-list{display:flex; flex-direction:column; padding:10px 0 16px; min-height:190px;}
.ticker-row{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:9px 20px; font-size:0.86rem;
  opacity:0; transform:translateY(6px);
  animation:rowIn .5s ease forwards;
}
@keyframes rowIn{ to{opacity:1; transform:translateY(0);} }
.ticker-row .req-flag{font-size:1rem; flex-shrink:0;}
.ticker-row .req-text{
  color:var(--paper); text-align:left;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:1;
}
.ticker-row .req-cat{
  color:var(--slate-dim); font-size:0.68rem;
  border:1px solid var(--border); border-radius:5px; padding:1px 6px;
  text-transform:uppercase; flex-shrink:0;
}

/* ---------- generic flow screen ---------- */
.flow{
  min-height:100vh;
  display:flex; flex-direction:column; align-items:center;
  padding:120px 24px 80px;
}
.flow-inner{width:100%; max-width:760px;}
.flow-inner.wide{max-width:1080px;}
.flow-header{margin-bottom:36px; text-align:left;}
.flow-eyebrow{
  font-size:0.74rem; font-weight:600; color:var(--slate-dim);
  text-transform:uppercase; letter-spacing:0.08em; margin-bottom:8px;
}
.flow-title{font-size:1.9rem; letter-spacing:-0.01em; margin-bottom:10px;}
.flow-sub{color:var(--slate); font-size:0.96rem; line-height:1.5; max-width:52ch;}
.inbox-sub{margin:0 0 24px;}
.back-link{
  display:inline-flex; align-items:center; gap:6px;
  color:var(--slate); font-size:0.85rem; cursor:pointer;
  margin-bottom:22px; background:none; border:none; padding:0;
}
.back-link:hover{color:var(--paper);}
.back-link[hidden]{display:none;}

.category-grid{
  display:grid; grid-template-columns:repeat(3, 1fr); gap:14px;
}
@media (max-width:720px){
  .category-grid{grid-template-columns:repeat(2, 1fr);}
}
@media (max-width:460px){ .category-grid{grid-template-columns:1fr;} }

.category-card--city{
  border-color:rgba(96,165,250,0.35);
  background:linear-gradient(145deg, rgba(96,165,250,0.08), rgba(var(--primary-rgb),0.04));
}
.category-card--city:hover{border-color:rgba(96,165,250,0.55);}

.category-grid-city .category-card{min-height:148px;}

.city-test-banner{
  margin-bottom:24px;
  padding:16px 18px;
  border-radius:16px;
  border:1px solid rgba(var(--accent-rgb),0.35);
  background:rgba(var(--accent-rgb),0.08);
}
.city-test-badge{
  display:inline-block;
  font-size:0.72rem;
  font-weight:700;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--accent);
  margin-bottom:8px;
}
.city-test-note{
  margin:0;
  font-size:0.9rem;
  line-height:1.5;
  color:var(--slate);
}

.city-dept-card{
  margin-bottom:20px;
  padding:16px 18px;
  border-radius:16px;
  border:1px solid rgba(var(--primary-rgb),0.25);
  background:rgba(var(--primary-rgb),0.06);
}
.city-dept-label{
  font-size:0.78rem;
  color:var(--slate-dim);
  text-transform:uppercase;
  letter-spacing:0.05em;
  margin-bottom:6px;
}
.city-dept-name{
  font-size:1.05rem;
  font-weight:700;
  color:var(--paper);
}

.city-innov-benefits{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-bottom:22px;
}
.city-innov-benefit{
  padding:14px 16px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--card);
}
.city-innov-benefit strong{
  display:block;
  font-size:0.94rem;
  margin-bottom:4px;
  color:var(--paper);
}
.city-innov-benefit span{
  font-size:0.86rem;
  color:var(--slate-dim);
  line-height:1.45;
}

.city-idea-field{display:flex; flex-direction:column; gap:8px; margin-bottom:22px;}
.city-idea-field > span{font-size:0.84rem; font-weight:600; color:var(--slate);}
.city-idea-textarea{
  width:100%;
  min-height:110px;
  padding:14px 16px;
  border-radius:14px;
  border:1px solid var(--border-strong);
  background:var(--card);
  color:var(--paper);
  font-family:inherit;
  font-size:16px;
  line-height:1.5;
  resize:vertical;
}
.city-idea-textarea:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(var(--primary-rgb),0.12);
}

.city-officer-card{
  margin:0 0 20px;
  padding:16px 18px;
  border-radius:16px;
  border:1px solid var(--border-strong);
  background:var(--card);
}
.city-officer-card--success{
  margin:20px auto 0;
  max-width:360px;
  text-align:left;
}
.city-routing-label{
  font-size:0.78rem;
  font-weight:600;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--slate-dim);
  margin-bottom:12px;
}
.city-officer-row{
  display:flex;
  align-items:flex-start;
  gap:14px;
}
.city-officer-avatar{
  flex-shrink:0;
  width:48px;
  height:48px;
  border-radius:14px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:0.9rem;
  font-weight:700;
}
.city-officer-name{
  font-size:1rem;
  font-weight:700;
  color:var(--paper);
  margin-bottom:2px;
}
.city-officer-title{
  font-size:0.86rem;
  color:var(--slate);
  margin-bottom:4px;
}
.city-officer-dept{
  font-size:0.84rem;
  color:var(--primary);
  font-weight:600;
  line-height:1.35;
}
.city-officer-topic{
  margin-top:6px;
  font-size:0.8rem;
  color:var(--slate-dim);
}

.city-countdown-wrap{
  margin:28px auto 0;
  max-width:320px;
  padding:20px 18px;
  border-radius:18px;
  border:1px solid rgba(var(--primary-rgb),0.22);
  background:rgba(var(--primary-rgb),0.06);
}
.city-countdown-label{
  font-size:0.82rem;
  color:var(--slate-dim);
  margin-bottom:8px;
}
.city-countdown{
  font-size:2rem;
  font-weight:700;
  letter-spacing:0.06em;
  color:var(--primary);
  font-variant-numeric:tabular-nums;
}
.city-countdown-note{
  margin:10px 0 0;
  font-size:0.82rem;
  color:var(--slate-dim);
  line-height:1.45;
}

.category-card{
  position:relative; text-align:left;
  border:1px solid var(--border); background:var(--card);
  border-radius:var(--radius); padding:22px;
  cursor:pointer;
  transition:border-color .22s ease, transform .22s ease, background .22s ease;
}
.category-card:hover{transform:translateY(-3px); border-color:var(--border-strong); background:var(--card-hover);}
.category-card.inactive{opacity:0.55;}
.category-card.inactive:hover{transform:none;}

.category-icon{
  width:38px; height:38px; border-radius:10px;
  display:flex; align-items:center; justify-content:center;
  margin-bottom:16px;
}
.category-icon svg{width:19px; height:19px;}
.category-label{font-weight:600; font-size:1.02rem; margin-bottom:4px;}
.category-desc{color:var(--slate-dim); font-size:0.82rem; line-height:1.4;}

.category-status{
  position:absolute; top:18px; right:18px;
  font-size:0.64rem; font-weight:600; text-transform:uppercase; letter-spacing:0.04em;
  padding:3px 9px; border-radius:999px;
}
.category-status.live{color:var(--success); background:rgba(var(--success-rgb),0.1); border:1px solid rgba(var(--success-rgb),0.3);}
.category-status.test{color:#93C5FD; background:rgba(96,165,250,0.12); border:1px solid rgba(96,165,250,0.35);}
.category-status.soon{color:var(--slate-dim); background:var(--card); border:1px solid var(--border);}

/* ---------- describe request ---------- */
.req-box{
  border:1px solid var(--border); background:var(--card);
  border-radius:var(--radius); padding:22px;
}

.city-block{
  margin:14px 0 16px;
}
.city-label{
  font-size:0.86rem;
  font-weight:700;
  color:var(--slate);
  margin-bottom:8px;
}
.city-options{
  display:flex;
  justify-content:flex-start;
  align-items:flex-start;
  flex-wrap:wrap;
  gap:10px;
}

.city-options-main{
  display:flex;
  justify-content:flex-start;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
@media (max-width:640px){
  .city-options{
    flex-direction:column;
    align-items:stretch;
  }
  .city-options-main{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:8px;
    width:100%;
  }
  .city-options-main .city-btn{
    justify-content:center;
    width:100%;
  }
  .city-more-toggle{
    width:100%;
    justify-content:center;
  }
}

.city-more-toggle{
  flex-shrink:0;
  border:1px solid var(--border);
  background:var(--card);
  color:var(--slate);
  border-radius:999px;
  padding:9px 14px;
  font-size:0.86rem;
  cursor:pointer;
  transition:all .18s ease;
}
.city-more-toggle:hover{
  border-color:var(--primary);
  color:var(--primary);
  background:var(--card-hover);
}

.city-options-more{
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--border);
}
.city-options-more[hidden]{display:none !important;}
.city-country-group{
  margin-bottom:14px;
}
.city-country-group:last-child{margin-bottom:0;}
.city-country-name{
  font-size:0.72rem;
  font-weight:600;
  color:var(--slate-dim);
  text-transform:uppercase;
  letter-spacing:0.06em;
  margin-bottom:8px;
}
.city-country-cities{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.city-btn{
  border:1px solid var(--border);
  background:var(--card);
  color:var(--slate);
  border-radius:999px;
  padding:9px 14px;
  font-size:0.86rem;
  cursor:pointer;
  transition:all .18s ease;
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.city-btn:hover{
  border-color:var(--primary);
  color:var(--primary);
  background:var(--card-hover);
}
.city-btn.active{
  border-color:var(--primary);
  color:var(--bg);
  background:var(--primary);
}
.city-btn.soon{
  opacity:0.55;
  border-style:dashed;
  cursor:pointer;
}
.city-pill-soon{
  font-size:0.7rem;
  padding:2px 8px;
  border-radius:999px;
  border:1px solid var(--border-strong);
  color:var(--slate-dim);
}
.city-btn.soon:hover{
  border-color:var(--border-strong);
  color:var(--slate);
  background:var(--card);
}
.req-textarea{
  width:100%; min-height:180px; max-height:350px; resize:none;
  background:none; border:none; outline:none;
  color:var(--paper); font-size:16px; font-family:inherit; line-height:1.55;
  overflow-y:auto;
}
.req-textarea::placeholder{color:var(--slate-dim); white-space:pre-line;}
.hint-row{
  margin-top:14px; padding-top:14px; border-top:1px solid var(--border);
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.req-send-btn{
  flex-shrink:0; width:44px; height:44px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  background:var(--primary); color:var(--bg); border:none; cursor:pointer;
  transition:opacity .2s ease, transform .12s ease, box-shadow .2s ease;
  box-shadow:0 4px 16px rgba(var(--primary-rgb),0.28);
}
.req-send-btn svg{width:20px; height:20px;}
.req-send-btn:hover:not(:disabled){transform:translateY(-1px); box-shadow:0 6px 20px rgba(var(--primary-rgb),0.4);}
.req-send-btn:active:not(:disabled){transform:translateY(0);}
.req-send-btn:disabled{opacity:0.3; cursor:not-allowed; box-shadow:none;}
.hint-pill{
  display:inline-flex; align-items:center; gap:6px;
  font-size:0.8rem; color:var(--slate);
  border:1px dashed var(--border-strong); border-radius:999px; padding:6px 14px;
}
.examples-label{
  font-size:0.74rem; font-weight:600; color:var(--slate-dim);
  text-transform:uppercase; letter-spacing:0.08em;
  margin:26px 0 12px;
}
.examples-row{display:flex; flex-wrap:wrap; gap:9px; margin-bottom:8px;}
.example-chip{
  border:1px solid var(--border); background:var(--card); color:var(--slate);
  border-radius:999px; padding:9px 16px; font-size:0.86rem; cursor:pointer;
  transition:all .2s ease; text-align:left;
}
.example-chip:hover{border-color:var(--primary); color:var(--primary); background:var(--card-hover);}
.send-row{display:flex; justify-content:flex-end; margin-top:26px;}
.btn-primary:disabled{opacity:0.35; cursor:not-allowed; transform:none !important; box-shadow:none !important;}

/* ---------- AI understanding ---------- */
.understanding-wrap{
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:140px 24px 80px; text-align:center;
}
.analyzing-eyebrow{
  font-size:0.8rem; font-weight:600; letter-spacing:0.1em; text-transform:uppercase;
  color:var(--slate-dim); margin-bottom:34px;
}
.checklist{
  display:flex; flex-direction:column; gap:12px; align-items:flex-start;
  margin:0 auto 8px; min-height:200px;
}
.check-line{
  display:flex; align-items:center; gap:10px;
  font-size:0.98rem; color:var(--paper);
  opacity:0; transform:translateY(6px);
  animation:checkIn .35s ease forwards;
}
@keyframes checkIn{ to{opacity:1; transform:translateY(0);} }
.check-line .check-icon{
  width:20px; height:20px; border-radius:50%; flex-shrink:0;
  background:rgba(var(--primary-rgb),0.14); color:var(--primary);
  display:flex; align-items:center; justify-content:center;
}
.check-line .check-icon svg{width:11px; height:11px;}
.understanding-card{
  margin-top:28px; width:100%; max-width:480px;
  border:1px solid var(--border-strong); background:var(--surface);
  border-radius:var(--radius); padding:26px 28px;
  text-align:left;
  opacity:0; transform:translateY(14px) scale(0.98);
  transition:opacity .5s ease, transform .5s cubic-bezier(.2,.8,.2,1);
}
.understanding-card.show{opacity:1; transform:translateY(0) scale(1);}
.understanding-title{
  font-size:1.15rem; font-weight:600; margin-bottom:20px;
  display:flex; align-items:center; gap:8px;
}
.understanding-title::before{
  content:""; width:8px; height:8px; border-radius:50%; background:var(--success);
  box-shadow:0 0 8px 1px rgba(var(--success-rgb),0.6);
}
.field-row{
  display:flex; justify-content:space-between; align-items:flex-start; gap:16px;
  padding:11px 0; border-bottom:1px solid var(--border);
}
.field-row:last-child{border-bottom:none;}
.field-label{font-size:0.78rem; color:var(--slate-dim); flex-shrink:0; padding-top:2px;}
.field-value{font-size:0.92rem; color:var(--paper); text-align:right; font-weight:500;}
.field-tags{display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end;}
.field-tag{
  font-size:0.76rem; background:rgba(var(--primary-rgb),0.1); color:var(--primary);
  border:1px solid rgba(var(--primary-rgb),0.25); border-radius:6px; padding:3px 9px;
}
.understanding-actions{display:flex; gap:10px; margin-top:24px;}
.btn-secondary{
  flex:1; border:1px solid var(--border-strong); background:none; color:var(--paper);
  border-radius:999px; padding:13px 20px; font-size:0.9rem; font-weight:600; cursor:pointer;
  transition:all .2s ease;
}
.btn-secondary:hover{border-color:var(--paper);}
.understanding-card .btn-primary{flex:1.4; justify-content:center;}

.flow-inner.narrow{max-width:480px;}

/* ---------- card questions ---------- */
.q-subtitle{
  margin:-6px 0 14px;
  color:var(--slate);
  font-size:0.92rem;
  line-height:1.45;
}
.qdots{display:flex; gap:6px; margin:18px 0 30px;}
.qdots span{width:24px; height:4px; border-radius:2px; background:var(--border);}
.qdots span.done{background:var(--primary);}
.qdots span.now{background:var(--accent);}
.qcard{
  border:1px solid var(--border-strong); background:var(--surface);
  border-radius:var(--radius); padding:28px;
  opacity:0; transform:translateY(10px);
  animation:qcardIn .4s cubic-bezier(.2,.8,.2,1) forwards;
}
@keyframes qcardIn{ to{opacity:1; transform:translateY(0);} }
.qcard-title{font-size:1.3rem; font-weight:600; margin-bottom:20px;}
.qcard-options{display:flex; flex-direction:column; gap:10px;}
.qopt-btn{
  pointer-events:auto;
  text-align:left; width:100%;
  border:1px solid var(--border); background:var(--card); color:var(--paper);
  border-radius:12px; padding:15px 18px; font-size:0.98rem; cursor:pointer;
  transition:all .18s ease;
  min-height:48px;
  display:flex;
  align-items:center;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.qopt-btn:hover{border-color:var(--primary); background:rgba(var(--primary-rgb),0.06); color:var(--primary);}
.qcard-budget-row{display:flex; flex-wrap:wrap; gap:9px;}
.qcard-budget-row .qopt-btn{
  width:auto;
  flex:1 1 auto;
  min-width:120px;
  text-align:center;
  justify-content:center;
  border-radius:999px;
}
.qcard-field{margin-bottom:16px;}
.qcard-input{
  width:100%;
  font-size:16px;
  padding:14px 16px;
  border-radius:12px;
  border:1px solid var(--border-strong);
  background:var(--card);
  color:var(--paper);
  font-family:inherit;
}
.qcard-input:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 2px rgba(var(--primary-rgb),0.15);
}
.qcard-continue{margin-top:4px; width:100%;}

/* ---------- AI ready transition ---------- */
.ready-wrap{
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:24px;
}
.ready-dot{
  width:14px; height:14px; border-radius:50%; background:var(--primary);
  box-shadow:0 0 24px 4px rgba(var(--primary-rgb),0.5);
  margin-bottom:22px; animation:readyPulse 1.2s ease-in-out infinite;
}
@keyframes readyPulse{ 0%,100%{transform:scale(1); opacity:1;} 50%{transform:scale(1.5); opacity:0.6;} }
.ready-msg{font-size:1.2rem; color:var(--paper); max-width:36ch;}

/* ---------- matching ---------- */
.matching-canvas{
  position:fixed; inset:0; width:100%; height:100%;
  z-index:0; opacity:0.6; pointer-events:none;
}
#screen-matching .flow{position:relative; z-index:1;}
.matching-wrap{text-align:center; padding-top:60px;}
.matching-eyebrow{
  font-size:0.72rem; font-weight:600; letter-spacing:0.12em; text-transform:uppercase;
  color:var(--slate-dim); margin-bottom:10px;
}
.mstep-row{
  display:flex; flex-wrap:wrap; justify-content:center; gap:7px;
  max-width:560px; margin:22px auto 30px;
}
.mstep-chip{
  font-size:0.74rem; color:var(--slate-dim);
  border:1px solid var(--border); border-radius:999px; padding:5px 12px;
  opacity:0; transform:translateY(4px);
  animation:rowIn .35s ease forwards;
}
.mstep-chip.done{color:var(--primary); border-color:rgba(var(--primary-rgb),0.35); background:rgba(var(--primary-rgb),0.06);}
.match-stats{display:flex; justify-content:center; gap:44px; margin-top:8px;}
.match-stat-num{font-family:'JetBrains Mono',monospace; font-size:2rem; color:var(--paper);}
.match-stat-label{font-size:0.76rem; color:var(--slate-dim); text-transform:uppercase; letter-spacing:0.06em; margin-top:4px;}
.matching-log{
  margin:32px auto 0; max-width:440px; text-align:left;
  min-height:150px; display:flex; flex-direction:column; gap:7px;
}
.log-line{
  display:flex; align-items:baseline; gap:9px;
  font-size:0.8rem; color:var(--slate);
  opacity:0; transform:translateY(4px);
  animation:rowIn .45s ease forwards;
}
.log-line .log-dot{width:5px; height:5px; border-radius:50%; background:var(--slate-dim); flex-shrink:0;}
.log-line.log-hit{color:var(--primary); font-weight:600;}
.log-line.log-hit .log-dot{background:var(--primary); box-shadow:0 0 6px 1px rgba(var(--primary-rgb),0.6);}
.log-line.log-miss{color:var(--danger); opacity:0.7;}
.log-line.log-miss .log-dot{background:var(--danger);}

/* ---------- provider inbox (phone mock) ---------- */
.phone-mock{
  border:1px solid var(--border-strong); background:var(--surface);
  border-radius:22px; overflow:hidden;
}
.phone-header{
  display:flex; align-items:center; gap:12px;
  padding:16px 18px; border-bottom:1px solid var(--border);
  background:var(--inset);
}
.phone-avatar{
  width:36px; height:36px; border-radius:50%;
  background:var(--primary); color:var(--bg);
  display:flex; align-items:center; justify-content:center;
  font-weight:700; flex-shrink:0;
}
.phone-name{font-weight:600; font-size:0.94rem;}
.phone-channel{font-size:0.74rem; color:var(--slate-dim);}
.phone-body{padding:18px; display:flex; flex-direction:column; gap:12px; min-height:260px;}
.phone-bubble{
  background:var(--card); border:1px solid var(--border); border-radius:14px;
  padding:13px 15px; font-size:0.92rem; line-height:1.5;
  opacity:0; transform:translateY(6px); animation:rowIn .4s ease forwards;
}
.phone-bubble .pb-row{display:flex; justify-content:space-between; gap:10px; padding:3px 0; font-size:0.85rem;}
.phone-bubble .pb-label{color:var(--slate-dim);}
.phone-bubble .phone-msg-title{font-weight:600; margin-bottom:8px;}
.phone-bubble .phone-msg-line{font-size:0.88rem; line-height:1.45; color:var(--slate);}
.phone-bubble .phone-msg-line + .phone-msg-line{margin-top:4px;}
.phone-bubble .phone-msg-id{margin-top:10px; font-size:0.78rem; color:var(--slate-dim);}
.phone-actions{display:flex; flex-wrap:wrap; gap:8px; opacity:0; transform:translateY(6px); animation:rowIn .4s ease forwards;}
.phone-actions button.phone-btn{cursor:pointer;}
.phone-btn{
  border-radius:999px; padding:9px 16px; font-size:0.84rem; cursor:default;
  border:1px solid var(--border);
}
.phone-btn.accept{background:rgba(var(--success-rgb),0.12); color:var(--success); border-color:rgba(var(--success-rgb),0.35);}
.phone-btn.decline{background:none; color:var(--slate);}
.phone-btn.price{background:none; color:var(--slate);}
.phone-btn.tapped{box-shadow:0 0 0 2px rgba(var(--primary-rgb),0.4);}
.phone-bubble.highlight{border-color:var(--primary); box-shadow:0 0 0 2px rgba(var(--primary-rgb),0.4); transition:border-color .3s ease, box-shadow .3s ease;}
.phone-status{
  font-size:0.86rem; color:var(--primary); font-weight:600;
  display:flex; align-items:center; gap:8px;
  opacity:0; transform:translateY(6px); animation:rowIn .4s ease forwards;
}
.phone-status::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--primary);}
.phone-inline-form-wrap{display:flex; flex-direction:column; gap:10px;}
.phone-form-title{font-weight:600; font-size:0.88rem;}
.phone-field{display:flex; flex-direction:column; gap:5px; font-size:0.78rem; color:var(--slate-dim);}
.phone-input{
  width:100%; box-sizing:border-box;
  border:1px solid var(--border); background:var(--inset);
  border-radius:10px; padding:10px 12px;
  font-size:0.88rem; color:var(--paper);
}
.phone-input.mono{font-family:var(--font-mono, ui-monospace, monospace);}
.phone-send-offer{align-self:flex-start; margin-top:2px; cursor:pointer;}
.phone-body .inbox-flow-continue{
  width:100%; justify-content:center;
  padding:12px 20px; font-size:0.88rem;
}

/* ---------- offers ---------- */
.sort-row{display:flex; gap:8px; margin-bottom:20px;}
.sort-btn{
  border:1px solid var(--border); background:none; color:var(--slate);
  border-radius:999px; padding:8px 16px; font-size:0.82rem; cursor:pointer;
  transition:all .2s ease;
}
.sort-btn.active{background:var(--paper); color:var(--bg); border-color:var(--paper);}
.offer-card{
  border:1px solid var(--border); background:var(--card);
  border-radius:var(--radius); padding:20px;
  display:grid;
  grid-template-columns:48px 1fr;
  column-gap:16px;
  row-gap:8px;
  align-items:start;
  margin-bottom:12px;
  opacity:0; transform:translateY(10px); animation:offerIn .5s ease forwards;
}
@keyframes offerIn{ to{opacity:1; transform:translateY(0);} }
.offer-avatar{
  width:48px; height:48px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:1.05rem; color:var(--bg); flex-shrink:0;
  grid-row:1 / span 2;
  align-self:start;
}
.offer-body{flex:1; min-width:0; grid-column:2;}
.offer-name-row{display:flex; align-items:flex-start; justify-content:space-between; gap:8px; flex-wrap:wrap;}
.offer-name{font-weight:600; font-size:1rem;}
.offer-meta-badges{display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end;}
.offer-rating{font-size:0.78rem; color:var(--accent); display:flex; align-items:center; gap:3px;}
.offer-badge{
  font-size:0.68rem;
  font-weight:600;
  letter-spacing:.03em;
  text-transform:uppercase;
  padding:3px 8px;
  border-radius:999px;
  white-space:nowrap;
}
.offer-badge-alt{
  color:var(--bg);
  background:var(--accent);
}
.offer-badge-official{
  color:var(--bg);
  background:var(--accent);
}
.offer-tagline{color:var(--slate-dim); font-size:0.84rem; margin-top:3px; line-height:1.45;}
.offer-meta{font-size:0.74rem; color:var(--slate-dim); margin-top:6px;}
.offer-right{
  grid-column:1 / -1;
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
  margin-top:4px;
  padding-top:14px;
  border-top:1px solid var(--border);
  text-align:left;
}
.offer-price{
  font-family:'JetBrains Mono',monospace;
  font-size:1.05rem;
  font-weight:600;
  color:var(--paper);
  line-height:1.3;
}
.offer-select-btn{
  margin-top:0; margin-left:auto;
  border:1px solid var(--border); background:none; color:var(--paper);
  border-radius:999px; padding:8px 18px; font-size:0.82rem; cursor:pointer;
  transition:all .2s ease; flex-shrink:0;
}
.offer-select-btn:hover{background:var(--paper); color:var(--bg); border-color:var(--paper);}

.offers-collect-panel{
  display:flex;
  align-items:center;
  gap:16px;
  margin:0 0 16px;
  padding:16px 18px;
  border:1px solid var(--border-strong);
  border-radius:var(--radius);
  background:var(--inset);
}
.offers-collect-body{flex:1; min-width:0;}
.offers-collect-title{
  font-size:0.92rem;
  font-weight:600;
  color:var(--paper);
  line-height:1.35;
}
.offers-collect-timer{
  margin-top:6px;
  font-size:1.35rem;
  color:var(--primary);
  letter-spacing:.06em;
}
.offers-collect-timer[hidden]{display:none !important;}
.offers-radar{
  position:relative;
  width:120px;
  height:120px;
  flex-shrink:0;
  color:var(--primary);
}
.offers-radar-svg{width:100%; height:100%; display:block;}
.offers-radar-sweep{
  transform-origin:60px 60px;
  animation:radarSweep 4s linear infinite;
}
@keyframes radarSweep{to{transform:rotate(360deg);}}
.offers-radar-dots{
  position:absolute;
  inset:0;
  pointer-events:none;
}
.offers-radar-dot{
  position:absolute;
  width:8px;
  height:8px;
  margin:-4px 0 0 -4px;
  border-radius:50%;
  background:var(--slate-dim);
  opacity:0.35;
  transition:opacity .35s ease, transform .35s ease, background .35s ease;
}
.offers-radar-dot.active{
  opacity:1;
  background:var(--primary);
  box-shadow:0 0 10px rgba(var(--primary-rgb),0.55);
  transform:scale(1.15);
}
.offer-hold-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-top:8px;
  padding:5px 10px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--card);
  font-size:0.72rem;
  color:var(--slate);
}
.offer-hold-chip svg{width:13px; height:13px; flex-shrink:0;}
.offer-hold-chip.warn{
  border-color:var(--accent);
  color:var(--accent);
  background:rgba(242,169,59,0.08);
}
.offer-hold-chip.expired{
  border-color:var(--border);
  color:var(--slate-dim);
}
.offer-card-expired{opacity:.55;}
.offer-card-expired .offer-select-btn{
  opacity:.45;
  pointer-events:none;
  cursor:not-allowed;
}

@media (prefers-reduced-motion: reduce){
  .offers-radar-sweep{animation:none !important;}
  .offers-radar-dot{transition:none !important;}
}

@media (max-width:640px){
  .offer-card{
    grid-template-columns:44px 1fr;
    column-gap:12px;
    row-gap:6px;
    padding:14px 16px;
  }
  .offer-avatar{
    width:44px;
    height:44px;
    font-size:0.95rem;
  }
  .offer-name{font-size:0.95rem;}
  .offer-tagline{font-size:0.86rem; margin-top:4px;}
  .offer-meta{margin-top:4px;}
  .offer-right{
    gap:12px;
    margin-top:2px;
    padding-top:10px;
  }
  .offer-price{font-size:1rem;}
}

/* ---------- SLA ---------- */
.sla-timeline{display:flex; flex-direction:column; gap:0; margin:8px 0 26px;}
.sla-step{display:flex; gap:14px; position:relative; padding-bottom:26px;}
.sla-step:last-child{padding-bottom:0;}
.sla-step-dot{
  width:22px; height:22px; border-radius:50%; flex-shrink:0;
  background:var(--card); border:1px solid var(--border-strong);
  display:flex; align-items:center; justify-content:center; z-index:1;
}
.sla-step-dot svg{width:11px; height:11px;}
.sla-step::after{
  content:""; position:absolute; left:10.5px; top:22px; bottom:0; width:1px;
  background:var(--border);
}
.sla-step:last-child::after{display:none;}
.sla-step.done .sla-step-dot{background:rgba(var(--primary-rgb),0.15); border-color:var(--primary); color:var(--primary);}
.sla-step.now .sla-step-dot{background:rgba(var(--accent-rgb),0.15); border-color:var(--accent); color:var(--accent);}
.sla-step-label{font-size:0.96rem; padding-top:1px;}
.sla-step.done .sla-step-label{color:var(--paper);}
.sla-step.now .sla-step-label{color:var(--accent); font-weight:600;}
.sla-step:not(.done):not(.now) .sla-step-label{color:var(--slate-dim);}
.sla-note{color:var(--slate); font-size:0.86rem; line-height:1.5;}

/* post-match question */
.postmatch-card{
  border:1px solid rgba(var(--accent-rgb),0.35); background:var(--card);
  border-radius:var(--radius); padding:16px 18px; margin:0 0 24px;
  opacity:0; transform:translateY(6px); animation:rowIn .4s ease forwards;
}
.postmatch-from{
  font-size:0.74rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase;
  color:var(--accent); margin-bottom:8px;
}
.postmatch-q{font-size:0.98rem; line-height:1.5; margin-bottom:14px;}
.postmatch-actions{display:flex; gap:8px;}
.postmatch-btn{
  border-radius:999px; padding:9px 22px; font-size:0.88rem; font-weight:600; cursor:pointer;
  border:1px solid var(--border); background:none; color:var(--slate);
  transition:all .2s ease;
}
.postmatch-btn.yes{
  background:rgba(var(--success-rgb),0.12); color:var(--success);
  border-color:rgba(var(--success-rgb),0.35);
}
.postmatch-btn:hover{transform:translateY(-1px);}
.postmatch-card.answered{border-color:var(--border);}
.postmatch-card.answered .postmatch-q{margin-bottom:10px; color:var(--slate);}
.postmatch-done{
  display:flex; align-items:center; gap:8px;
  font-size:0.88rem; font-weight:600; color:var(--primary);
}
.postmatch-done svg{width:14px; height:14px;}

/* ---------- success ---------- */
.success-wrap{
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:24px;
}
.success-check{
  width:84px; height:84px; border-radius:50%;
  background:rgba(var(--primary-rgb),0.12); border:1px solid rgba(var(--primary-rgb),0.4);
  display:flex; align-items:center; justify-content:center; margin:0 auto 28px;
  animation:checkPop .5s cubic-bezier(.2,.9,.3,1.3) forwards;
}
@keyframes checkPop{ from{transform:scale(0.4); opacity:0;} to{transform:scale(1); opacity:1;} }
.success-check svg{width:36px; height:36px; color:var(--primary);}
.success-title{font-size:1.8rem; margin-bottom:14px;}
.success-sub{color:var(--slate); max-width:42ch; margin:0 auto 36px; line-height:1.6;}
.success-sub-2{display:block; margin-top:10px; font-size:0.92rem; color:var(--slate-dim);}
/* F18.3 — completed-request confirmation badge on screen-success */
.success-completed-badge{
  display:inline-flex; align-items:center; gap:8px; margin:0 auto;
  padding:9px 16px; border-radius:999px;
  border:1px solid rgba(var(--primary-rgb),0.4); background:rgba(var(--primary-rgb),0.1);
  color:var(--primary); font-size:0.9rem; font-weight:600;
}
.success-completed-badge[hidden]{display:none;}
.success-completed-badge svg{width:18px; height:18px; flex-shrink:0;}

.ticket-card{
  margin-top:8px;
  padding:22px 20px 24px;
  border:1px solid var(--border-strong);
  border-radius:calc(var(--radius) + 4px);
  background:linear-gradient(180deg, var(--card-hover) 0%, var(--card) 100%);
}
.ticket-id{
  font-size:1.05rem;
  color:var(--primary);
  letter-spacing:.04em;
  margin-bottom:16px;
}
.ticket-qr-wrap{text-align:center; margin-bottom:18px;}
.ticket-qr{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:132px;
  height:132px;
  padding:10px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--paper);
  color:var(--bg);
}
.ticket-qr-svg{width:100%; height:100%; display:block;}
.ticket-qr-label{
  margin-top:8px;
  font-size:0.72rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--slate-dim);
}
.ticket-partner{font-size:1.15rem; font-weight:600; color:var(--paper); margin-bottom:6px;}
.ticket-service{font-size:0.9rem; color:var(--slate); line-height:1.45; margin-bottom:8px;}
.ticket-meta{font-size:0.78rem; color:var(--slate-dim); margin-bottom:12px;}
.ticket-status{
  display:inline-flex;
  padding:6px 12px;
  border-radius:999px;
  border:1px solid rgba(var(--primary-rgb),0.35);
  background:rgba(var(--primary-rgb),0.1);
  color:var(--primary);
  font-size:0.78rem;
  font-weight:600;
  margin-bottom:16px;
}
.ticket-updates{
  margin:16px 0 18px;
  padding-top:14px;
  border-top:1px solid var(--border);
}
.ticket-updates-title{
  font-size:0.72rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--slate-dim);
  margin-bottom:10px;
}
.ticket-updates-list{display:flex; flex-direction:column; gap:8px; min-height:24px;}
.ticket-update-row{
  display:flex;
  gap:10px;
  align-items:flex-start;
  font-size:0.84rem;
  color:var(--slate);
  line-height:1.4;
}
.ticket-update-row .mono{color:var(--slate-dim); flex-shrink:0;}
.ticket-escrow{margin-bottom:18px;}
.ticket-confirm-btn{width:100%;}
.escrow-chain{display:flex; flex-direction:column; gap:10px;}
.escrow-step{
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid var(--border);
  background:var(--card);
  color:var(--slate-dim);
  transition:border-color .2s ease, background .2s ease, color .2s ease;
}
.escrow-step-icon{display:flex; align-items:center; justify-content:center; width:22px; height:22px; flex-shrink:0;}
.escrow-step-icon svg{width:20px; height:20px;}
.escrow-step-label{font-size:0.86rem; font-weight:500;}
.escrow-step.active{
  border-color:rgba(var(--primary-rgb),0.45);
  background:rgba(var(--primary-rgb),0.1);
  color:var(--primary);
}
.escrow-step.done{
  border-color:rgba(var(--primary-rgb),0.25);
  color:var(--paper);
}
.request-id-row .field-value{color:var(--primary);}
.restart-btn{
  border:1px solid var(--border-strong); background:none; color:var(--paper);
  border-radius:999px; padding:13px 26px; font-size:0.92rem; cursor:pointer;
}
.restart-btn:hover{border-color:var(--paper);}
.city-restart-btn{margin-top:32px;}
.offers-footer{
  margin-top:36px;
  padding-top:28px;
  border-top:1px solid var(--border);
  text-align:center;
}
.offers-footer-note{
  margin:0 0 16px;
  font-size:0.88rem;
  color:var(--slate-dim);
  line-height:1.45;
}

/* ---------- identify / check-email ---------- */
.identify-icon{
  width:56px; height:56px; border-radius:16px;
  background:var(--card); border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  color:var(--primary); margin-bottom:24px;
}
.identify-icon svg{width:26px; height:26px;}
.identify-input{
  width:100%; background:var(--card); border:1px solid var(--border);
  border-radius:12px; padding:15px 18px; margin:22px 0 20px;
  color:var(--paper); font-size:16px; font-family:inherit; outline:none;
  transition:border-color .2s ease;
}
.identify-input::placeholder{color:var(--slate-dim);}
.identify-input:focus{border-color:var(--primary);}
.identify-send-block{
  margin-top:4px;
  padding:20px 18px 18px;
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:linear-gradient(180deg, rgba(196,181,253,0.07) 0%, var(--inset) 100%);
}
.identify-send-block .hotel-room-type-block{
  margin:0 0 16px;
  padding:14px 16px;
  background:var(--card);
}
.identify-send-block .identify-input{
  margin:0 0 16px;
}
.identify-send-block .btn-primary{margin-bottom:0;}
.identify-send-block .identify-note{margin-top:14px; margin-bottom:0;}
.identify-note{
  margin-top:18px; font-size:0.8rem; color:var(--slate-dim); line-height:1.5;
}
#screen-check-email .flow-inner{max-width:440px;}
#screen-check-email .flow-title{margin-top:4px;}
#screen-check-email .flow-sub{margin-bottom:28px;}
#screen-check-email .btn-primary{justify-content:center; width:100%; margin-bottom:14px;}
#screen-check-email .back-link{justify-content:center; width:100%; margin:0;}

/* ---------- identify preview offers ---------- */
.preview-block{
  margin-top:28px;
  padding-top:24px;
  border-top:1px solid var(--border);
  text-align:left;
}
.preview-block-hotels{
  margin-top:32px;
  padding:22px 18px 4px;
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:var(--inset);
}
.preview-block-hotels .preview-header{margin-bottom:14px;}
.preview-hint{
  font-size:0.86rem;
  color:var(--slate-dim);
  line-height:1.45;
  margin:6px 0 0;
}
.preview-label{
  display:flex; align-items:center; gap:8px;
  font-size:0.76rem; font-weight:600; color:var(--slate-dim);
  text-transform:uppercase; letter-spacing:0.06em; margin-bottom:0;
}
.preview-label.preview-label-ready{
  font-size:1rem;
  font-weight:700;
  text-transform:none;
  letter-spacing:normal;
  color:var(--paper);
}
.preview-label .pulse{width:6px; height:6px; border-radius:50%; background:var(--primary); animation:pulse 2s infinite; flex-shrink:0;}
.preview-label .pulse[hidden]{display:none;}
.preview-skel{
  height:78px; border-radius:var(--radius); margin-bottom:12px;
  background:linear-gradient(90deg, var(--card) 25%, var(--card-hover) 50%, var(--card) 75%);
  background-size:200% 100%; animation:shimmer 1.4s infinite;
}
@keyframes shimmer{ 0%{background-position:200% 0;} 100%{background-position:-200% 0;} }
.preview-offers{display:flex; flex-direction:column; gap:12px;}
.preview-offers .offer-card{margin-bottom:0;}
.preview-loading{display:flex; flex-direction:column; gap:12px;}
.preview-loading[hidden]{display:none !important;}
button.offer-card.preview-offer-card{
  width:100%;
  text-align:left;
  font:inherit;
  color:inherit;
  appearance:none;
  -webkit-appearance:none;
  cursor:pointer;
}
.preview-offers .preview-offer-card{
  animation:none;
  opacity:1;
  transform:none;
  cursor:pointer;
}

.hotel-card{
  border:1px solid var(--border);
  background:var(--card);
  border-radius:var(--radius);
  padding:16px 18px;
  display:flex;
  flex-direction:column;
  gap:8px;
  text-align:left;
  width:100%;
}
.hotel-card-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.hotel-card-name{font-weight:700; font-size:1rem; color:var(--paper);}
.hotel-card-rating{font-size:0.78rem; color:var(--accent); white-space:nowrap;}
.hotel-card-stars{font-size:0.78rem; color:var(--slate-dim);}
.hotel-card-district{font-size:0.84rem; color:var(--slate-dim);}
.hotel-card-vibe{font-size:0.84rem; color:var(--paper); line-height:1.45;}
.hotel-card-tags{display:flex; flex-wrap:wrap; gap:6px; margin-top:4px;}
.hotel-card-tag{
  font-size:0.72rem;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid var(--border);
  color:var(--slate-dim);
  background:var(--card);
}

.hotel-room-type-block{
  margin:0;
  padding:16px 18px;
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:rgba(196,181,253,0.06);
}
.hotel-room-type-label{font-weight:700; font-size:0.95rem; margin-bottom:4px;}
.hotel-room-type-hint{font-size:0.84rem; color:var(--slate-dim); margin:0 0 12px;}
.hotel-room-type-options{display:flex; flex-wrap:wrap; gap:8px;}
.hotel-room-type-btn{
  border:1px solid var(--border);
  background:var(--card);
  color:var(--paper);
  border-radius:999px;
  padding:9px 14px;
  font-size:0.84rem;
  cursor:pointer;
  transition:all .2s ease;
}
.hotel-room-type-btn.active{
  border-color:#C4B5FD;
  background:rgba(196,181,253,0.15);
  color:var(--paper);
}

/* ---------- offer detail sheet ---------- */
.offer-card{cursor:pointer;}

.sheet-overlay{
  position:fixed; inset:0; background:var(--overlay);
  opacity:0; pointer-events:none; transition:opacity .28s ease;
  z-index:200; overscroll-behavior:contain; touch-action:none;
}
.sheet-overlay.show{opacity:1; pointer-events:auto;}

.offer-sheet{
  position:fixed; left:0; right:0; bottom:0;
  max-height:92vh; display:flex; flex-direction:column;
  background:var(--surface); border:1px solid var(--border-strong); border-bottom:none;
  border-radius:22px 22px 0 0;
  transform:translateY(100%);
  transition:transform .34s cubic-bezier(.2,.85,.25,1);
  z-index:201; overflow:hidden;
  overscroll-behavior:contain;
  pointer-events:none;
}
.offer-sheet.show{
  transform:translateY(0);
  pointer-events:auto;
}
.offer-sheet.dragging{transition:none;}

.sheet-handle{
  width:40px; height:4px; border-radius:2px; background:var(--border-strong);
  margin:12px auto 4px; flex-shrink:0; cursor:grab;
}
.sheet-header{
  display:flex; align-items:center; gap:12px;
  padding:14px 20px 16px; border-bottom:1px solid var(--border); flex-shrink:0;
}
.sheet-avatar{
  width:42px; height:42px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  font-weight:700; color:var(--bg);
}
.sheet-header-info{flex:1; min-width:0;}
.sheet-name{font-weight:600; font-size:1rem;}
.sheet-meta{font-size:0.82rem; color:var(--slate-dim); margin-top:2px;}
.sheet-close{
  width:34px; height:34px; border-radius:50%; flex-shrink:0;
  border:1px solid var(--border); background:var(--card); color:var(--slate);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.sheet-close svg{width:15px; height:15px;}
.sheet-close:hover{color:var(--paper); border-color:var(--border-strong);}
.sheet-body{
  flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  background:var(--bg);
}
.sheet-body iframe{width:100%; border:0; display:block;}
.offer-vitrina-meta{
  color:var(--primary);
  font-weight:600;
}
.offer-sheet--embed .sheet-body{
  background:var(--surface);
}
.sheet-vitrina{
  padding:0;
  background:var(--surface);
}
.sheet-vitrina iframe{
  width:100%;
  min-height:600px;
  border:none;
  border-radius:0;
  background:var(--surface);
}
.sheet-footer{
  flex-shrink:0; padding:14px 20px calc(14px + env(safe-area-inset-bottom));
  border-top:1px solid var(--border); background:var(--surface);
}
.sheet-footer-btn{width:100%;}

.sheet-profile{padding:16px 20px 24px;}
.sheet-hero-card{
  background:linear-gradient(145deg, rgba(var(--primary-rgb),0.08), rgba(var(--accent-rgb),0.06));
  border:1px solid var(--border-strong); border-radius:16px;
  padding:18px; margin-bottom:20px;
}
.sheet-escrow-badge{
  display:inline-flex; align-items:center; gap:7px;
  font-size:0.78rem; font-weight:600; color:var(--primary);
  background:rgba(var(--primary-rgb),0.12); border:1px solid rgba(var(--primary-rgb),0.25);
  padding:6px 12px; border-radius:999px; margin-bottom:14px;
}
.sheet-escrow-badge svg{width:15px; height:15px; flex-shrink:0;}
.sheet-bio{font-size:0.95rem; line-height:1.55; color:var(--paper); margin:0 0 16px;}
.sheet-stats-row{display:grid; grid-template-columns:repeat(3,1fr); gap:10px;}
.sheet-stat{
  text-align:center; padding:10px 6px; border-radius:12px;
  background:var(--card); border:1px solid var(--border);
}
.sheet-stat-val{display:block; font-weight:700; font-size:0.9rem; color:var(--paper);}
.sheet-stat-lbl{display:block; font-size:0.72rem; color:var(--slate-dim); margin-top:3px; line-height:1.2;}
.sheet-section{margin-bottom:18px;}
.sheet-section h3{font-size:0.82rem; font-weight:600; color:var(--slate-dim); text-transform:uppercase; letter-spacing:0.04em; margin:0 0 10px;}
.sheet-chips{display:flex; flex-wrap:wrap; gap:8px;}
.sheet-chip{
  font-size:0.84rem; padding:7px 12px; border-radius:999px;
  background:var(--card); border:1px solid var(--border); color:var(--paper);
}
.sheet-text{font-size:0.92rem; color:var(--slate); margin:0;}
.sheet-highlights{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px;}
.sheet-highlights li{display:flex; align-items:flex-start; gap:10px; font-size:0.9rem; color:var(--slate);}
.sheet-hl-icon{
  width:22px; height:22px; border-radius:50%; flex-shrink:0;
  background:rgba(var(--primary-rgb),0.15); color:var(--primary);
  display:flex; align-items:center; justify-content:center;
}
.sheet-hl-icon svg{width:12px; height:12px;}

.sheet-lead-form{padding:0 20px 28px;}
.sheet-form-card{
  background:var(--card); border:1px solid var(--border-strong);
  border-radius:16px; padding:20px;
}
.sheet-form-card h3{margin:0 0 8px; font-size:1.05rem;}
.sheet-form-sub{font-size:0.88rem; color:var(--slate-dim); margin:0 0 18px; line-height:1.45;}
.sheet-field{display:flex; flex-direction:column; gap:6px; margin-bottom:14px;}
.sheet-field span{font-size:0.82rem; color:var(--slate-dim); font-weight:500;}
.sheet-field input{
  width:100%; padding:12px 14px; border-radius:12px;
  border:1px solid var(--border-strong); background:var(--bg);
  color:var(--paper); font-size:16px; font-family:inherit;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.sheet-field input:focus{
  outline:none; border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(var(--primary-rgb),0.15);
}
.sheet-field-row{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.sheet-primary-btn{
  width:100%; padding:14px 20px; border-radius:14px; border:none;
  background:var(--primary); color:var(--bg); font-weight:700; font-size:0.95rem;
  cursor:pointer; font-family:inherit; transition:opacity .2s ease, transform .15s ease;
}
.sheet-primary-btn:hover:not(:disabled){opacity:0.92; transform:translateY(-1px);}
.sheet-primary-btn:disabled{opacity:0.45; cursor:not-allowed; transform:none;}

.sheet-success{
  padding:40px 24px 32px; text-align:center; min-height:280px;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
}
.sheet-success-icon{width:64px; height:64px; color:var(--primary); margin-bottom:16px;}
.sheet-success-icon svg{width:100%; height:100%;}
.sheet-success h3{margin:0 0 10px; font-size:1.25rem;}
.sheet-success p{font-size:0.92rem; color:var(--slate); line-height:1.5; margin:0 0 20px; max-width:340px;}
.sheet-success .sheet-primary-btn{max-width:280px;}

.sheet-payment{padding:16px 20px 28px;}
.sheet-payment-header h3{margin:0 0 6px; font-size:1.1rem;}
.sheet-payment-header p{margin:0 0 16px; font-size:0.88rem; color:var(--slate-dim); line-height:1.45;}
.sheet-order-card{
  background:var(--card); border:1px solid var(--border-strong);
  border-radius:14px; padding:14px 16px; margin-bottom:14px;
}
.sheet-order-row{display:flex; justify-content:space-between; align-items:center; gap:12px; font-size:0.84rem; padding:4px 0;}
.sheet-order-row.muted{color:var(--slate-dim); font-size:0.8rem; line-height:1.4;}
.sheet-order-main{font-size:0.95rem; padding:8px 0 4px;}
.sheet-notice{
  display:flex; align-items:flex-start; gap:10px;
  font-size:0.84rem; line-height:1.45; color:var(--slate);
  padding:12px 14px; border-radius:12px; margin-bottom:14px;
}
.sheet-notice-escrow{
  background:rgba(var(--primary-rgb),0.08); border:1px solid rgba(var(--primary-rgb),0.2); color:var(--paper);
}
.sheet-notice-escrow svg{width:18px; height:18px; flex-shrink:0; color:var(--primary); margin-top:1px;}
.sheet-notice-email{
  background:var(--card); border:1px solid var(--border); justify-content:center; text-align:center;
}
.sheet-card-form{margin-bottom:16px;}
.sheet-pay-summary{
  display:flex; justify-content:space-between; align-items:center;
  padding:14px 0; border-top:1px solid var(--border); margin-bottom:14px;
  font-size:0.9rem;
}
.sheet-pay-summary strong{font-size:1.1rem; color:var(--primary);}
.sheet-payment-processing{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:14px; padding:80px 20px; color:var(--slate-dim); min-height:260px;
}
.sheet-payment-success .sheet-notice{max-width:360px; text-align:left;}
.sheet-payment-success .sheet-notice-email{text-align:center;}

.booking-room-list{display:flex; flex-direction:column; gap:10px;}
.booking-room-row{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--card); border:1px solid var(--border-strong);
  border-radius:14px; padding:12px 14px;
}
.booking-room-info{display:flex; flex-direction:column; gap:3px; min-width:0;}
.booking-room-name{font-size:0.9rem; color:var(--paper); font-weight:600;}
.booking-room-price{font-size:0.8rem; color:var(--slate-dim);}
.qty-stepper{display:flex; align-items:center; gap:10px; flex-shrink:0;}
.qty-btn{
  width:30px; height:30px; border-radius:50%; border:1px solid var(--border-strong);
  background:var(--bg); color:var(--paper); font-size:1rem; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center; font-family:inherit;
  transition:border-color .2s ease, color .2s ease;
}
.qty-btn:hover{border-color:var(--primary); color:var(--primary);}
.qty-value{min-width:18px; text-align:center; font-weight:600; font-size:0.92rem;}

.booking-variant-list{display:flex; flex-direction:column; gap:8px;}
.booking-variant-btn{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  width:100%; text-align:left; padding:12px 14px; border-radius:14px;
  background:var(--card); border:1px solid var(--border-strong); color:var(--paper);
  font-family:inherit; font-size:0.9rem; cursor:pointer;
  transition:border-color .2s ease, background .2s ease, color .2s ease;
}
.booking-variant-btn:hover{border-color:var(--primary);}
.booking-variant-btn.selected{border-color:var(--primary); background:rgba(var(--primary-rgb),0.08); color:var(--primary);}
.booking-variant-btn svg{width:16px; height:16px; flex-shrink:0; vertical-align:-3px; margin-right:2px;}
.sheet-payment-success .sheet-primary-btn{margin-top:8px;}

.sheet-loading{
  display:flex; align-items:center; justify-content:center; gap:10px;
  padding:60px 20px; color:var(--slate-dim); font-size:0.9rem;
}
.sheet-loading .spin{
  width:16px; height:16px; border-radius:50%;
  border:2px solid var(--border-strong); border-top-color:var(--primary);
  animation:spin .8s linear infinite;
}
@keyframes spin{ to{transform:rotate(360deg);} }

@media (min-width:760px){
  .offer-sheet{
    left:50%; right:auto; bottom:auto; top:50%;
    width:100%; max-width:560px; max-height:82vh;
    border-radius:22px; border-bottom:1px solid var(--border-strong);
    transform:translate(-50%,-46%) scale(0.97); opacity:0;
    transition:transform .3s cubic-bezier(.2,.85,.25,1), opacity .3s ease;
    pointer-events:none;
  }
  .offer-sheet.offer-sheet--embed{
    max-width:1040px;
    width:calc(100vw - 48px);
    max-height:92vh;
  }
  .offer-sheet.show{
    transform:translate(-50%,-50%) scale(1);
    opacity:1;
    pointer-events:auto;
  }
  .sheet-handle{display:none;}
}

/* ---------- toast ---------- */
.toast{
  position:fixed; left:50%; bottom:36px; transform:translateX(-50%) translateY(20px);
  background:var(--surface); border:1px solid var(--border-strong);
  color:var(--paper); font-size:0.88rem;
  padding:13px 22px; border-radius:999px;
  box-shadow:0 20px 50px -12px rgba(0,0,0,0.6);
  opacity:0; pointer-events:none; z-index:100;
  transition:opacity .25s ease, transform .25s ease;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0);}

/* ---------- executor landing (become provider) ---------- */
.executor-link{
  margin-top:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:10px 18px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--inset);
  color:var(--slate);
  text-decoration:none;
  font-size:0.92rem;
  font-weight:600;
  transition:transform .2s ease, background .2s ease, border-color .2s ease, color .2s ease;
}
.executor-link:hover{
  transform:translateY(-2px);
  border-color:var(--border-strong);
  background:var(--card-hover);
  color:var(--paper);
}
.topbar .executor-link{margin-top:0;}

.executor-hero{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  padding:120px 24px 80px;
  box-sizing:border-box;
}
.executor-hero .flow-inner{
  width:100%;
  max-width:1040px;
  margin:0 auto;
}
.executor-hero .flow-header{margin-bottom:28px;}
.executor-benefits{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:12px;
  margin:0 0 28px;
}
@media (max-width:760px){
  .executor-benefits{grid-template-columns:1fr;}
}
.executor-benefit{
  border:1px solid var(--border);
  background:var(--inset);
  border-radius:16px;
  padding:16px 18px;
}
.executor-benefit strong{
  display:block;
  font-size:0.95rem;
  margin-bottom:6px;
  color:var(--paper);
}
.executor-grid{
  display:grid;
  grid-template-columns:1.1fr 0.9fr;
  gap:22px;
  align-items:start;
}
@media (max-width:860px){
  .executor-grid{grid-template-columns:1fr;}
}
.executor-card{
  border:1px solid var(--border);
  background:var(--card);
  border-radius:var(--radius);
  padding:18px;
}
.executor-card h2,
.executor-card h3{
  margin:0 0 10px;
}
.executor-steps{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  margin-top:14px;
}
.executor-step{
  display:flex;
  gap:12px;
  padding:14px 14px;
  border-radius:16px;
  border:1px solid var(--border);
  background:var(--inset);
}
.executor-step-num{
  width:34px;
  height:34px;
  border-radius:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(var(--primary-rgb),0.12);
  border:1px solid rgba(var(--primary-rgb),0.25);
  color:var(--primary);
  font-weight:800;
  flex-shrink:0;
}
.executor-step-title{
  font-weight:800;
  margin-bottom:2px;
}
.executor-muted{
  color:var(--slate-dim);
  font-size:0.92rem;
  line-height:1.5;
}
.executor-register{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  margin-top:18px;
  text-decoration:none;
}
.executor-register small{
  display:block;
  color:var(--slate-dim);
  margin-top:6px;
  font-weight:600;
}

/* ---------- TourHub gate ---------- */
.gate-wrap{text-align:center; padding-top:80px;}
.gate-logo{
  font-family:'Geologica',sans-serif;
  font-size:2rem;
  font-weight:600;
  margin-bottom:28px;
  letter-spacing:-0.02em;
}
.gate-logo .dot{color:var(--primary);}
.gate-sent-note{
  color:var(--slate);
  font-size:0.92rem;
  margin:0 0 14px;
  line-height:1.5;
}
.gate-demo-hint{
  margin-top:24px;
  font-size:0.82rem;
  color:var(--slate-dim);
}
.gate-quick-access{
  flex:none; display:inline-flex; align-items:center; justify-content:center; gap:8px;
  margin-top:14px; padding:11px 22px; font-size:0.84rem;
}
.gate-quick-access svg{width:15px; height:15px;}
.member-pill{
  font-size:0.72rem;
  color:var(--slate);
  border:1px solid var(--border);
  background:var(--card);
  padding:5px 10px;
  border-radius:999px;
  max-width:160px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
@media (max-width: 520px){
  .topbar{padding:16px 18px;}
  .topbar-right{gap:6px; margin-left:10px;}
}
.offer-company{
  font-size:0.78rem;
  color:var(--slate-dim);
  margin-top:2px;
}

/* ---------- auth badge (mobile) ---------- */
.auth-badge{
  display:none; align-items:center; justify-content:center;
  width:32px; height:32px; border-radius:50%; flex-shrink:0;
  border:1px solid rgba(var(--primary-rgb),0.35);
  background:rgba(var(--primary-rgb),0.12); color:var(--primary);
}
.auth-badge svg{width:15px; height:15px;}
.auth-badge[hidden]{display:none !important;}

/* ---------- language dropdown (mobile) ---------- */
.lang-dropdown{position:relative; display:none;}
.lang-dropdown-trigger{
  display:flex; align-items:center; gap:4px;
  padding:7px 10px; border-radius:999px;
  border:1px solid var(--border); background:var(--card); color:var(--paper);
  font-size:0.76rem; font-weight:600; letter-spacing:0.02em;
  cursor:pointer; font-family:inherit;
}
.lang-dropdown-trigger .chev{width:11px; height:11px; transition:transform .2s ease; flex-shrink:0;}
.lang-dropdown-trigger[aria-expanded="true"] .chev{transform:rotate(180deg);}
.lang-dropdown-menu{
  position:absolute; top:calc(100% + 8px); right:0; z-index:70;
  min-width:150px; padding:6px;
  border-radius:14px; border:1px solid var(--border-strong);
  background:var(--surface); box-shadow:0 16px 34px -12px rgba(0,0,0,0.35);
}
.lang-dropdown-menu[hidden]{display:none;}
.lang-dropdown-item{
  display:block; width:100%; text-align:left; padding:9px 12px;
  border-radius:9px; border:none; background:none; color:var(--paper);
  font-size:0.86rem; cursor:pointer; font-family:inherit;
}
.lang-dropdown-item:hover{background:var(--card-hover);}
.lang-dropdown-item.active{color:var(--primary); font-weight:600; background:rgba(var(--primary-rgb),0.12);}

/* ---------- sandwich menu ---------- */
.menu-toggle{
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:999px; flex-shrink:0;
  border:1px solid var(--border); background:var(--card); color:var(--slate);
  cursor:pointer; transition:background .2s ease, border-color .2s ease, color .2s ease;
}
.menu-toggle:hover{border-color:var(--border-strong); color:var(--paper); background:var(--card-hover);}
.menu-toggle svg{width:18px; height:18px;}

.site-menu-overlay{
  position:fixed; inset:0; z-index:90;
  background:var(--overlay);
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}
.site-menu-overlay.show{opacity:1; pointer-events:auto;}

.site-menu{
  position:fixed; top:0; right:0; bottom:0; z-index:95;
  width:min(340px, 86vw);
  background:var(--bg); border-left:1px solid var(--border-strong);
  padding:20px 20px 28px;
  display:flex; flex-direction:column; gap:4px;
  overflow-y:auto;
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.2,.8,.2,1);
  box-shadow:-24px 0 48px -24px rgba(0,0,0,0.35);
}
.site-menu.show{transform:translateX(0);}

.site-menu-head{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:18px;
}
.site-menu-brand{font-size:1.1rem;}
.site-menu-close{
  width:34px; height:34px; border-radius:50%; flex-shrink:0;
  border:1px solid var(--border); background:var(--card); color:var(--slate);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.site-menu-close:hover{color:var(--paper); border-color:var(--border-strong);}
.site-menu-close svg{width:15px; height:15px;}

.site-menu-user{
  font-size:0.76rem; color:var(--slate-dim);
  padding:0 2px 16px; margin-bottom:10px;
  border-bottom:1px solid var(--border);
  word-break:break-all;
}
.site-menu-user strong{
  display:block; color:var(--paper); font-size:0.92rem; font-weight:600;
  margin-top:3px; word-break:break-all;
}
.site-menu-user[hidden]{display:none;}

.site-menu-label{
  font-size:0.68rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--slate-dim); padding:10px 10px 6px;
}
.site-menu-link{
  display:flex; align-items:center; gap:10px;
  padding:13px 10px; border-radius:12px;
  color:var(--paper); text-decoration:none;
  font-size:0.94rem; font-weight:500;
  transition:background .15s ease;
}
.site-menu-link svg{width:16px; height:16px; flex-shrink:0; color:var(--slate-dim);}
.site-menu-link:hover{background:var(--card-hover);}
.site-menu-link.active{background:rgba(var(--primary-rgb),0.1); color:var(--primary);}
.site-menu-link-soon{opacity:0.55; width:100%; text-align:left; background:none; border:none; font-family:inherit; cursor:pointer;}
.site-menu-link-soon .city-pill-soon{margin-left:auto;}
.site-menu-link.active svg{color:var(--primary);}

.legal-topbar-right{display:flex; align-items:center; gap:10px;}

/* ---------- legal document pages ---------- */
.legal-body{background:var(--bg); color:var(--paper); min-height:100vh;}
.legal-topbar{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 32px;
  backdrop-filter:blur(10px);
  background:var(--topbar-gradient);
  border-bottom:1px solid var(--border);
}
.legal-back{
  display:inline-flex; align-items:center; gap:6px;
  font-size:0.85rem; font-weight:500; color:var(--slate);
  text-decoration:none;
}
.legal-back:hover{color:var(--paper);}
.legal-back svg{width:14px; height:14px;}
.legal-page{max-width:720px; margin:0 auto; padding:48px 24px 100px;}
.legal-page h1{
  font-family:'Fraunces',serif; font-weight:500;
  font-size:clamp(1.8rem,4vw,2.6rem);
  margin:0 0 10px; letter-spacing:-0.01em;
}
.legal-meta{color:var(--slate-dim); font-size:0.85rem; margin:0 0 40px;}
.legal-page section{margin-bottom:32px;}
.legal-page h2{font-size:1.1rem; font-weight:600; margin:0 0 12px;}
.legal-page p{color:var(--slate); font-size:0.95rem; line-height:1.7; margin:0 0 14px;}
.legal-page ul, .legal-page ol{color:var(--slate); font-size:0.95rem; line-height:1.7; margin:0 0 14px; padding-left:22px;}
.legal-page li{margin-bottom:6px;}
.legal-page strong{color:var(--paper);}
.legal-contact-card{
  background:var(--card); border:1px solid var(--border-strong);
  border-radius:var(--radius); padding:20px 22px; margin-top:8px;
}
.legal-contact-card p{margin:0 0 6px; color:var(--slate);}
.legal-contact-card p:last-child{margin-bottom:0;}

@media (max-width:520px){
  .legal-topbar{padding:16px 18px;}
  .legal-page{padding:32px 18px 80px;}
}

@media (max-width:520px){
  .demo-badge{display:none;}
  .member-pill{display:none;}
  .lang-switch{display:none;}
  .auth-badge{display:inline-flex;}
  .lang-dropdown{display:block;}
}

/* ---------- legal doc pages (F10.3, single file, multi-lang blocks) ---------- */
[data-lang-block]{display:none;}
[data-lang-block].active{display:block;}
.legal-doc-footer{
  max-width:720px; margin:0 auto; padding:24px; border-top:1px solid var(--border);
  display:flex; gap:8px 20px; flex-wrap:wrap; align-items:center;
  font-size:0.85rem; color:var(--slate-dim);
}
.legal-doc-footer a{color:var(--slate); text-decoration:underline; text-underline-offset:3px;}
.legal-doc-footer a:hover{color:var(--paper);}
.legal-doc-footer-spacer{flex:1;}

/* ---------- sandwich menu footer (F10.2) ---------- */
.site-menu-spacer{flex:1;}
.site-menu-footer{
  padding:14px 10px 4px; margin-top:10px; border-top:1px solid var(--border);
  font-size:0.76rem; color:var(--slate-dim); line-height:1.6;
}
.site-menu-footer a{color:var(--slate-dim); text-decoration:none;}
.site-menu-footer a:hover{color:var(--paper); text-decoration:underline;}

@media (max-width:520px){
  /* legal doc pages (legal/privacy.html, legal/terms.html) have no mobile
     lang-dropdown markup of their own — keep the plain lang-switch pill
     visible there even though the main app hides it below 520px. */
  .legal-topbar .lang-switch{display:flex;}
}

/* ---------- catalog (F11.1) ---------- */
.catalog-mode-tabs{display:flex; gap:4px; margin-bottom:20px; padding:4px; border-radius:999px; background:var(--card); border:1px solid var(--border); width:fit-content;}
.catalog-mode-tab{
  padding:9px 20px; border-radius:999px; border:none; background:none; color:var(--slate);
  font-size:0.86rem; font-weight:600; cursor:pointer; transition:all .2s ease; font-family:inherit;
}
.catalog-mode-tab.active{background:var(--paper); color:var(--bg);}
.catalog-tabs{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px;}
.catalog-tab{
  display:inline-flex; align-items:center; gap:8px;
  padding:9px 16px; border-radius:999px;
  border:1px solid var(--border); background:var(--card); color:var(--slate);
  font-size:0.86rem; font-weight:600; cursor:pointer; transition:all .2s ease; font-family:inherit;
}
.catalog-tab svg{width:15px; height:15px; flex-shrink:0;}
.catalog-tab.active{background:var(--paper); color:var(--bg); border-color:var(--paper);}
.catalog-tab:hover:not(.active){border-color:var(--border-strong); color:var(--paper);}

.catalog-filters{
  display:flex; flex-wrap:wrap; gap:12px; align-items:center;
  padding:16px; margin-bottom:16px;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
}
.catalog-select{
  padding:9px 14px; border-radius:10px; border:1px solid var(--border-strong);
  background:var(--bg); color:var(--paper); font-size:0.85rem; font-family:inherit; cursor:pointer;
}
.catalog-rating-filter{display:flex; gap:6px;}
.catalog-chip-btn{
  padding:8px 14px; border-radius:999px; border:1px solid var(--border-strong);
  background:var(--bg); color:var(--slate); font-size:0.8rem; cursor:pointer; transition:all .2s ease; font-family:inherit;
}
.catalog-chip-btn.active{background:rgba(var(--primary-rgb),0.14); color:var(--primary); border-color:rgba(var(--primary-rgb),0.4);}
.catalog-checkbox{
  display:inline-flex; align-items:center; gap:7px; font-size:0.85rem; color:var(--slate); cursor:pointer;
}
.catalog-checkbox input{width:16px; height:16px; accent-color:var(--primary); cursor:pointer;}
.catalog-checkbox[hidden]{display:none !important;}

.catalog-toolbar{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  margin-bottom:16px;
}
.catalog-count{font-size:0.84rem; color:var(--slate-dim);}
.catalog-sort{display:flex; gap:8px;}

.catalog-grid{display:grid; grid-template-columns:repeat(3, 1fr); gap:16px;}
@media (max-width:900px){ .catalog-grid{grid-template-columns:repeat(2, 1fr);} }
@media (max-width:600px){ .catalog-grid{grid-template-columns:1fr;} }

.partner-card{
  display:block; text-align:left; width:100%; padding:0;
  border:1px solid var(--border); border-radius:var(--radius); background:var(--card);
  overflow:hidden; cursor:pointer; transition:border-color .2s ease, transform .2s ease; font-family:inherit;
}
.partner-card:hover{border-color:var(--border-strong); transform:translateY(-2px);}
.partner-card-cover{
  height:92px; display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:1.35rem; color:rgba(255,255,255,0.94); letter-spacing:0.02em;
}
.partner-card-cover svg{width:32px; height:32px; color:rgba(255,255,255,0.94);}
.partner-card-body{padding:14px 16px 16px;}
.partner-card-name{font-weight:600; font-size:0.95rem; line-height:1.3;}
.partner-card-cat{
  display:flex; align-items:center; gap:5px; margin-top:5px;
  font-size:0.76rem; color:var(--slate-dim);
}
.partner-card-cat svg{width:13px; height:13px; flex-shrink:0;}
.partner-card-meta-row{display:flex; align-items:center; gap:10px; margin-top:9px; flex-wrap:wrap;}
.partner-card-rating{display:flex; align-items:center; gap:4px; font-size:0.8rem; color:var(--accent);}
.partner-card-reviews{font-size:0.76rem; color:var(--slate-dim);}
.partner-card-badges{display:flex; gap:6px; flex-wrap:wrap; margin-top:8px;}
.partner-badge-verified{
  display:inline-flex; align-items:center; gap:4px;
  font-size:0.68rem; font-weight:600; color:var(--primary);
  background:rgba(var(--primary-rgb),0.12); border-radius:999px; padding:3px 8px;
}
.partner-badge-verified svg{width:11px; height:11px;}
.partner-card-available{
  display:flex; align-items:center; gap:6px; font-size:0.76rem; color:var(--slate-dim); margin-top:9px;
}
.partner-card-available .dot{width:6px; height:6px; border-radius:50%; background:var(--primary); flex-shrink:0;}
.partner-card-price{
  margin-top:10px; padding-top:10px; border-top:1px solid var(--border);
  font-family:'JetBrains Mono',monospace; font-size:0.92rem; font-weight:600; color:var(--paper);
}
.partner-card-price span{font-family:'Inter',sans-serif; font-weight:400; font-size:0.76rem; color:var(--slate-dim); margin-right:4px;}

.catalog-empty{text-align:center; padding:60px 20px; color:var(--slate-dim);}
.catalog-empty p{margin:0 0 16px; font-size:0.94rem;}

/* ---------- partner profile (F11.2) ---------- */
.partner-profile-inner{padding-bottom:40px;}
.partner-hero{border-radius:var(--radius); overflow:hidden; margin-bottom:20px; border:1px solid var(--border);}
.partner-hero-cover{height:140px;}
.partner-hero-info{padding:0 20px 20px; background:var(--card); display:flex; gap:14px; align-items:flex-start;}
.partner-hero-avatar{
  width:56px; height:56px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:1.2rem; color:rgba(255,255,255,0.94);
  margin-top:-42px; border:3px solid var(--card);
}
.partner-hero-title-row{display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding-top:12px;}
.partner-hero-name{font-weight:600; font-size:1.2rem;}
.partner-hero-cat{font-size:0.84rem; color:var(--slate-dim); margin-top:3px;}
.partner-hero-area{display:flex; align-items:center; gap:6px; margin-top:8px; font-size:0.84rem; color:var(--slate);}
.partner-hero-area svg{width:14px; height:14px; flex-shrink:0; color:var(--slate-dim);}

.partner-trust-row{display:flex; flex-wrap:wrap; gap:10px; margin-bottom:20px;}
.partner-trust-chip{
  display:flex; align-items:center; gap:8px;
  padding:10px 14px; border-radius:12px;
  border:1px solid var(--border); background:var(--card);
  font-size:0.82rem; color:var(--slate);
}
.partner-trust-chip svg{width:16px; height:16px; color:var(--primary); flex-shrink:0;}
.partner-trust-chip strong{color:var(--paper); font-weight:600;}

.partner-metrics{display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; margin-bottom:24px;}
@media (max-width:600px){ .partner-metrics{grid-template-columns:1fr;} }
.partner-metric{
  padding:16px; border-radius:var(--radius); border:1px solid var(--border); background:var(--card);
  text-align:center;
}
.partner-metric-value{font-size:1.5rem; font-weight:700; color:var(--paper); font-family:'JetBrains Mono',monospace;}
.partner-metric-label{font-size:0.76rem; color:var(--slate-dim); margin-top:4px;}

.partner-services{display:flex; flex-direction:column; gap:10px;}
.partner-service-card{
  border:1px solid var(--border-strong); border-radius:var(--radius); background:var(--card);
  padding:16px 18px; display:flex; flex-direction:column; gap:12px;
}
.partner-service-top{display:flex; justify-content:space-between; align-items:flex-start; gap:12px;}
.partner-service-name{font-weight:600; font-size:0.94rem;}
.partner-service-desc{font-size:0.82rem; color:var(--slate-dim); margin-top:3px;}
.partner-service-price{font-family:'JetBrains Mono',monospace; font-weight:600; font-size:1rem; flex-shrink:0; white-space:nowrap;}
.partner-service-actions{display:flex; gap:10px; flex-wrap:wrap;}
.partner-service-actions .btn-primary,
.partner-service-actions .btn-secondary{padding:10px 18px; font-size:0.84rem; flex:none;}

.partner-gallery{display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); gap:10px;}
.partner-gallery-item{
  aspect-ratio:4/3; border-radius:12px;
  display:flex; align-items:center; justify-content:center; text-align:center;
  padding:10px; font-size:0.72rem; color:rgba(255,255,255,0.9); line-height:1.3;
}

.partner-reviews{display:flex; flex-direction:column; gap:14px;}
.partner-review{border-bottom:1px solid var(--border); padding-bottom:14px;}
.partner-review:last-child{border-bottom:none; padding-bottom:0;}
.partner-review-top{display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap;}
.partner-review-author{font-weight:600; font-size:0.86rem;}
.partner-review-stars{color:var(--accent); font-size:0.8rem;}
.partner-review-date{font-size:0.74rem; color:var(--slate-dim);}
.partner-review-text{font-size:0.86rem; color:var(--slate); line-height:1.5; margin:6px 0 0;}
.partner-review-verified{
  display:inline-flex; align-items:center; gap:4px; margin-top:6px;
  font-size:0.72rem; color:var(--primary);
}
.partner-review-verified svg{width:12px; height:12px;}

.partner-sticky-cta{
  display:none; position:fixed; bottom:0; left:0; right:0; z-index:40;
  padding:12px 16px; background:var(--surface); border-top:1px solid var(--border-strong);
  box-shadow:0 -8px 24px -12px rgba(0,0,0,0.3);
}
.partner-sticky-cta .btn-primary{width:100%; justify-content:center;}
@media (max-width:720px){
  .partner-sticky-cta.show{display:block;}
  .partner-profile-inner{padding-bottom:90px;}
}

/* ---------- targeted request SLA track (F11.4) ---------- */
.offers-target-panel{
  display:flex; align-items:center; gap:10px;
  margin:0 0 16px; padding:16px 18px;
  border:1px solid var(--border-strong); border-radius:var(--radius);
  background:var(--inset); font-size:0.9rem; color:var(--paper);
}
.offers-target-panel[hidden],
.offers-collect-panel[hidden]{display:none !important;}
.offers-target-panel .pulse{
  width:8px; height:8px; border-radius:50%; background:var(--primary);
  animation:pulse 2s infinite; flex-shrink:0;
}

/* ---------- rate partner (F11.4) ---------- */
.rate-partner-card{
  margin-top:24px; padding:20px; border-radius:var(--radius);
  border:1px solid var(--border); background:var(--card); text-align:center;
}
.rate-partner-title{font-size:0.92rem; font-weight:600; margin-bottom:12px;}
.rate-partner-stars{display:flex; justify-content:center; gap:6px; margin-bottom:14px;}
.rate-partner-star{
  background:none; border:none; cursor:pointer; padding:2px; color:var(--border-strong);
  transition:color .15s ease, transform .15s ease;
}
.rate-partner-star svg{width:28px; height:28px;}
.rate-partner-star.active{color:var(--accent); transform:scale(1.08);}
.rate-partner-comment{
  width:100%; min-height:64px; padding:11px 14px; margin-bottom:12px;
  border-radius:12px; border:1px solid var(--border-strong); background:var(--bg);
  color:var(--paper); font-family:inherit; font-size:0.88rem; resize:vertical;
}
.rate-partner-submit{width:100%;}
.rate-partner-submit:disabled{opacity:0.45; cursor:not-allowed;}
.rate-partner-done{font-size:0.88rem; color:var(--primary); font-weight:600;}
/* F18.2 — gap between the rating block (or its "thanks" state) and the
   restart button on screen-success. Scoped to the id so the shared
   .restart-btn class (also used by #partner-outcome-home) is untouched;
   24px matches the vertical rhythm from F17.11. */
#restart-btn{margin-top:24px;}
/* F18.4 — cross-role button before the restart button on screen-success */
.success-partner-view{margin-top:24px;}

/* ---------- object profile (F12.2) ---------- */
.object-capacity-note{
  margin:12px 0 0; padding:11px 14px; border-radius:12px;
  background:rgba(var(--accent-rgb),0.08); border:1px solid rgba(var(--accent-rgb),0.25);
  color:var(--paper); font-size:0.84rem; line-height:1.45;
}
.object-capacity-note[hidden]{display:none !important;}

/* ---------- trip planner (F13) ---------- */
.trip-category-toggles{display:flex; flex-wrap:wrap; gap:8px;}
.trip-category-toggle{width:auto;}
.trip-category-toggle svg{width:16px; height:16px; flex-shrink:0; vertical-align:-3px; margin-right:4px;}

.trip-card{
  border:1px solid var(--border); background:var(--card);
  border-radius:var(--radius); padding:16px 18px; margin-bottom:14px;
}
.trip-card-header{display:flex; align-items:center; gap:10px; font-weight:600; font-size:0.94rem; margin-bottom:12px;}
.trip-card-header svg{width:18px; height:18px; flex-shrink:0; color:var(--primary);}
.trip-card-status{display:flex; align-items:center; gap:10px; color:var(--slate-dim); font-size:0.88rem;}
.trip-card-spinner{
  width:14px; height:14px; border-radius:50%; flex-shrink:0;
  border:2px solid var(--border-strong); border-top-color:var(--primary);
  animation:spin .8s linear infinite;
}
.trip-mini-offers{display:flex; flex-direction:column; gap:8px;}
.trip-mini-offer{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:10px 12px; border:1px solid var(--border-strong); border-radius:12px; background:var(--inset);
}
.trip-mini-offer-info{display:flex; flex-direction:column; gap:2px; min-width:0;}
.trip-mini-offer-name{font-weight:600; font-size:0.88rem;}
.trip-mini-offer-tagline{color:var(--slate-dim); font-size:0.76rem;}
.trip-mini-offer-actions{display:flex; align-items:center; gap:10px; flex-shrink:0;}
.trip-mini-offer-price{font-size:0.86rem; font-weight:600;}
.trip-card-selected{display:flex; align-items:center; gap:12px;}
.trip-card-check{color:var(--primary); flex-shrink:0; width:18px; height:18px;}
.trip-card-check svg{width:18px; height:18px;}
.trip-card-selected-info{display:flex; flex-direction:column; gap:2px; flex:1; min-width:0;}
.trip-card-selected-name{font-weight:600; font-size:0.9rem;}
.trip-card-selected-price{color:var(--primary); font-size:0.84rem;}

.ticket-trip-sections{
  display:flex; flex-direction:column; gap:8px; width:100%;
  margin:14px 0; padding:14px 16px; border-radius:12px;
  border:1px solid var(--border-strong); background:var(--inset);
}
.ticket-trip-sections[hidden]{display:none !important;}
.ticket-trip-sections-title{font-size:0.78rem; font-weight:600; text-transform:uppercase; letter-spacing:0.04em; color:var(--slate-dim); margin-bottom:2px;}
.ticket-trip-section-row{display:flex; align-items:center; gap:8px; font-size:0.84rem;}
.ticket-trip-section-row svg{width:15px; height:15px; flex-shrink:0; color:var(--primary);}
.ticket-trip-section-label{color:var(--slate-dim); flex-shrink:0;}
.ticket-trip-section-name{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.ticket-trip-section-price{font-weight:600; flex-shrink:0;}
.sheet-order-main svg{width:16px; height:16px; flex-shrink:0; vertical-align:-3px; margin-right:4px; color:var(--primary);}

/* ---------- government channel demo (F15) ---------- */
.sort-row[hidden]{display:none !important;}
.phone-avatar svg{width:18px; height:18px;}

/* ---------- partner path: request queue (F17) ---------- */
.partner-queue-card{
  display:block; cursor:pointer; text-align:left; width:100%;
  font:inherit; color:inherit;
  transition:border-color .2s ease, transform .2s ease;
}
.partner-queue-card:hover{border-color:var(--border-strong); transform:translateY(-1px);}
.partner-queue-card-top{display:flex; align-items:center; gap:10px; margin-bottom:10px;}
.partner-queue-card-top svg{width:18px; height:18px; flex-shrink:0; color:var(--primary);}
.partner-queue-card-summary{font-weight:600; font-size:0.94rem; flex:1; min-width:0;}
.partner-queue-badge{margin-left:auto; flex-shrink:0;}
.partner-queue-badge-new{color:var(--bg); background:var(--primary);}
.partner-queue-badge-sent{color:var(--paper); background:var(--card-hover); border:1px solid var(--border-strong);}
.partner-queue-badge-matched{color:var(--bg); background:var(--success);}
.partner-queue-badge-expired{color:var(--slate-dim); background:none; border:1px solid var(--border);}
.partner-queue-badge-completed{color:var(--bg); background:var(--primary);}
.partner-queue-card-meta{display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:0.8rem; color:var(--slate-dim);}
.partner-queue-card.match-glow{animation:queueMatchGlow 1.6s ease;}
@keyframes queueMatchGlow{
  0%{box-shadow:0 0 0 0 rgba(var(--success-rgb),0.55); border-color:var(--success);}
  70%{box-shadow:0 0 0 10px rgba(var(--success-rgb),0); border-color:var(--success);}
  100%{box-shadow:0 0 0 0 rgba(var(--success-rgb),0); border-color:var(--border);}
}
.partner-queue-empty-hint{color:var(--slate-dim); font-size:0.9rem; padding:20px 0;}

/* ---------- partner path: gamification summary (F17.10) ---------- */
.partner-outcome-gamification{
  margin-top:24px; padding:20px; border-radius:var(--radius);
  border:1px solid var(--border); background:var(--card);
}
.gamification-row{display:flex; align-items:center; justify-content:space-between; gap:12px; margin:10px 0; flex-wrap:wrap;}
.gamification-rating{font-size:1.1rem; font-weight:600; color:var(--accent);}
.gamification-deals{font-size:0.9rem; color:var(--slate);}
.gamification-progress-track{width:100%; height:6px; border-radius:999px; background:var(--border-strong); overflow:hidden; margin:12px 0 8px;}
.gamification-progress-fill{height:100%; width:0; background:var(--primary); border-radius:999px; transition:width .8s ease;}
.gamification-next-tier{margin:0; font-size:0.84rem; color:var(--slate-dim);}
#partner-outcome-home{margin-top:24px;}

/* ============ AI Concierge chat (screen-chat) ============ */
#screen-chat.screen{padding:0;}
.chat-wrap{
  position:fixed; left:0; right:0; top:0; bottom:0;
  display:flex; flex-direction:column;
  max-width:720px; margin:0 auto;
  background:var(--bg);
}
.chat-topbar{
  display:flex; align-items:center; gap:12px;
  padding:14px 18px; padding-top:calc(14px + env(safe-area-inset-top,0));
  border-bottom:1px solid var(--border);
  background:var(--surface);
}
.chat-back{
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:50%;
  border:1px solid var(--border); background:transparent; color:var(--paper);
  cursor:pointer; flex:none;
}
.chat-back svg{width:20px; height:20px;}
.chat-avatar{
  display:flex; align-items:center; justify-content:center;
  width:40px; height:40px; border-radius:50%; flex:none;
  background:rgba(var(--primary-rgb),0.14); color:var(--primary);
}
.chat-avatar svg{width:22px; height:22px;}
.chat-head-name{font-weight:650; font-size:0.98rem;}
.chat-head-status{font-size:0.78rem; color:var(--primary);}
.chat-head-status::before{content:"●"; margin-right:5px; font-size:0.7em; vertical-align:middle;}

.chat-scroll{
  flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding:18px; display:flex; flex-direction:column; gap:12px;
}
.chat-msg{max-width:82%; display:flex; flex-direction:column;}
.chat-msg .chat-text{
  padding:11px 15px; border-radius:16px; font-size:0.92rem; line-height:1.5;
  white-space:pre-wrap; word-wrap:break-word;
}
.chat-msg.ai{align-self:flex-start;}
.chat-msg.ai .chat-text{
  background:var(--surface); border:1px solid var(--border);
  color:var(--paper); border-bottom-left-radius:5px;
}
.chat-msg.user{align-self:flex-end;}
.chat-msg.user .chat-text{
  background:var(--primary); color:#fff; border-bottom-right-radius:5px;
}
:root[data-theme="dark"] .chat-msg.user .chat-text{color:#06231f;}
.chat-msg{opacity:0; transform:translateY(8px); animation:chatIn .35s ease forwards;}
@keyframes chatIn{to{opacity:1; transform:none;}}

.chat-typing{align-self:flex-start; display:flex; gap:4px; padding:12px 16px;
  background:var(--surface); border:1px solid var(--border); border-radius:16px; border-bottom-left-radius:5px;}
.chat-typing span{width:7px; height:7px; border-radius:50%; background:var(--slate-dim);
  animation:typingDot 1s infinite ease-in-out;}
.chat-typing span:nth-child(2){animation-delay:.15s;}
.chat-typing span:nth-child(3){animation-delay:.3s;}
@keyframes typingDot{0%,60%,100%{opacity:.3; transform:translateY(0);} 30%{opacity:1; transform:translateY(-4px);}}

/* place card inside chat */
.chat-place-card{
  align-self:flex-start; max-width:88%;
  background:var(--surface); border:1px solid var(--border);
  border-radius:16px; overflow:hidden; border-bottom-left-radius:5px;
}
.chat-place-photo{
  height:120px; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, rgba(var(--primary-rgb),0.22), rgba(var(--accent-rgb),0.18));
  color:var(--primary);
}
.chat-place-photo svg{width:38px; height:38px; opacity:.85;}
.chat-place-body{padding:13px 15px;}
.chat-place-name{font-weight:650; font-size:1rem; margin-bottom:3px;}
.chat-place-meta{font-size:0.78rem; color:var(--slate); margin-bottom:8px;}
.chat-place-pitch{font-size:0.88rem; line-height:1.5; color:var(--paper);}
.chat-place-tags{display:flex; flex-wrap:wrap; gap:6px; margin-top:10px;}
.chat-tag{font-size:0.72rem; padding:3px 9px; border-radius:20px;
  background:var(--card); color:var(--slate);}

/* inline option buttons */
.chat-options{align-self:flex-start; display:flex; flex-direction:column; gap:8px; max-width:88%; width:100%;}
.chat-opt-label{font-size:0.78rem; color:var(--slate-dim); margin-bottom:2px;}
.chat-opt-btn{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:12px 15px; border-radius:14px; cursor:pointer; text-align:left;
  background:var(--surface); border:1px solid var(--border-strong); color:var(--paper);
  font-size:0.9rem; transition:border-color .15s, background .15s;
}
.chat-opt-btn:hover{border-color:var(--primary); background:var(--card-hover);}
.chat-opt-btn .chat-opt-price{font-weight:650; color:var(--primary); white-space:nowrap;}
.chat-opt-btn .chat-opt-main{display:flex; flex-direction:column; gap:2px;}
.chat-opt-btn .chat-opt-sub{font-size:0.75rem; color:var(--slate);}
.chat-opt-btn:disabled{opacity:.5; cursor:default;}

.chat-cta{align-self:flex-start; max-width:88%;}
.chat-send-guides{
  display:inline-flex; align-items:center; gap:9px;
  padding:13px 20px; border-radius:26px; cursor:pointer;
  background:var(--primary); color:#fff; border:none; font-weight:600; font-size:0.92rem;
}
:root[data-theme="dark"] .chat-send-guides{color:#06231f;}
.chat-send-guides svg{width:18px; height:18px;}
.chat-send-guides:disabled{opacity:.5; cursor:default;}

/* quick suggestion chips */
.chat-suggests{display:flex; flex-wrap:wrap; gap:8px; padding:0 18px 6px;}
.chat-suggest-chip{
  padding:8px 14px; border-radius:20px; cursor:pointer; font-size:0.83rem;
  background:var(--card); border:1px solid var(--border); color:var(--paper);
}
.chat-suggest-chip:hover{border-color:var(--primary);}

/* input bar */
.chat-input-bar{
  display:flex; align-items:flex-end; gap:10px;
  padding:12px 16px; padding-bottom:calc(12px + env(safe-area-inset-bottom,0));
  border-top:1px solid var(--border); background:var(--surface);
}
.chat-input{
  flex:1; resize:none; max-height:120px;
  padding:11px 15px; border-radius:20px; font-family:inherit; font-size:0.92rem;
  background:var(--bg); border:1px solid var(--border-strong); color:var(--paper);
  line-height:1.4;
}
.chat-input:focus{outline:none; border-color:var(--primary);}
.chat-send{
  display:flex; align-items:center; justify-content:center; flex:none;
  width:42px; height:42px; border-radius:50%; border:none; cursor:pointer;
  background:var(--primary); color:#fff;
}
:root[data-theme="dark"] .chat-send{color:#06231f;}
.chat-send svg{width:20px; height:20px;}
.chat-send:disabled{opacity:.45; cursor:default;}

.chat-active .topbar{display:none;}

/* Hero is a splash into the concierge chat — the old B2B request ticker is not shown. */
.ticker-wrap{display:none;}

/* Intent B — structured service request card in chat */
.chat-service-card{
  align-self:flex-start; max-width:88%; width:100%;
  background:var(--surface); border:1px solid var(--border-strong);
  border-radius:16px; border-bottom-left-radius:5px; padding:13px 15px;
}
.chat-service-head{font-weight:650; font-size:0.95rem; margin-bottom:2px;}
.chat-service-rows{margin-top:8px; display:flex; flex-direction:column; gap:6px;}
.chat-service-row{display:flex; justify-content:space-between; gap:12px; font-size:0.86rem;}
.chat-service-key{color:var(--slate);}
.chat-service-val{color:var(--paper); font-weight:500; text-align:right;}
.chat-options-secondary{margin-top:-2px;}
.chat-opt-secondary{border-style:dashed;}
.chat-opt-secondary .chat-opt-main{color:var(--primary);}
.chat-opt-secondary svg{width:18px; height:18px; color:var(--primary);}
