/* Jravel — application styles (extracted from index.html) */
  :root{
    --tekhelet:#122A4F;      /* deep blue */
    --tekhelet-700:#0E1E3D;  /* night */
    --tekhelet-500:#2B6CB0;  /* dye blue */
    --gold:#C9A24B;
    --gold-soft:#E3C982;
    --parchment:#F6F1E7;
    --parchment-2:#EFE8D8;
    --ink:#1C2434;
    --muted:#6B7488;
    --line:#E2D8C2;
    --white:#ffffff;
    --ok:#2F855A;
    --shadow:0 8px 30px rgba(14,30,61,.12);
    --tab-h:64px;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html,body{margin:0;padding:0}
  body{
    font-family:'Assistant',system-ui,-apple-system,sans-serif;
    color:var(--ink); background:var(--parchment);
    padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));
    min-height:100vh; -webkit-font-smoothing:antialiased;
  }
  body[dir="rtl"]{font-family:'Assistant',system-ui,sans-serif}
  h1,h2,h3,.serif{font-family:'Frank Ruhl Libre',Georgia,serif}
  button{font-family:inherit;cursor:pointer;border:none;background:none}
  .app{max-width:560px;margin:0 auto;position:relative}

  /* ---------- Header / hero ---------- */
  .hero{
    background:radial-gradient(120% 90% at 80% -10%, #1c3a6b 0%, var(--tekhelet) 45%, var(--tekhelet-700) 100%);
    color:#EAF1FB; padding:14px 18px 20px;
    border-bottom-left-radius:26px;border-bottom-right-radius:26px;
    box-shadow:var(--shadow); position:relative; overflow:hidden;
  }
  .hero::after{ /* subtle star of david texture */
    content:"✡"; position:absolute; font-size:230px; right:-40px; top:-70px;
    color:#ffffff; opacity:.04; pointer-events:none;
  }
  .topbar{display:flex;align-items:center;justify-content:space-between;gap:10px}
  .brand{display:flex;align-items:baseline;gap:8px}
  .brand .mark{font-family:'Frank Ruhl Libre',serif;font-weight:900;font-size:26px;letter-spacing:.5px;color:#fff}
  .brand .mark b{color:var(--gold-soft)}
  .brand .tag{font-size:11px;color:#A9C0E2;letter-spacing:2px;text-transform:uppercase}
  .lang{display:flex;background:rgba(255,255,255,.10);border-radius:999px;padding:3px}
  .lang button{color:#cfe0f7;font-size:13px;font-weight:600;padding:5px 12px;border-radius:999px}
  .lang button.on{background:var(--gold);color:#23210f}
  .loc{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:15px;color:#DCE7F7}
  .loc .pin{color:var(--gold-soft)}
  .loc .editloc{margin-inline-start:auto;font-size:12px;color:#A9C0E2;text-decoration:underline;background:none}
  .loc #placeName{cursor:pointer}
  .hdr-note{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:12px;font-size:13px;color:#DCE7F7}
  .hdr-note .hdr-tef{color:var(--gold-soft);font-weight:700}

  /* ---------- Sun arc signature ---------- */
  .arcwrap{margin-top:14px;text-align:center}
  .zarc{background:radial-gradient(120% 90% at 80% -10%, #1c3a6b 0%, var(--tekhelet) 45%, var(--tekhelet-700) 100%);border-radius:18px;padding:12px 12px 14px;margin-bottom:14px;text-align:center;color:#EAF1FB;box-shadow:var(--shadow)}
  .arcsvg{width:100%;max-width:420px;height:150px;display:block;margin:0 auto}
  .arc-meta{display:flex;justify-content:space-between;max-width:420px;margin:2px auto 0;font-size:12px;color:#A9C0E2}
  .tefillin-pill{
    display:inline-flex;align-items:center;gap:8px;margin-top:6px;
    padding:7px 15px;border-radius:999px;font-weight:700;font-size:14px;
  }
  .tefillin-pill.open{background:rgba(201,162,75,.18);color:var(--gold-soft);border:1px solid rgba(201,162,75,.5)}
  .tefillin-pill.closed{background:rgba(255,255,255,.08);color:#A9C0E2;border:1px solid rgba(255,255,255,.15)}
  .dot{width:9px;height:9px;border-radius:50%}
  .dot.on{background:var(--gold);box-shadow:0 0 0 4px rgba(201,162,75,.25)}
  .dot.off{background:#6e7e9c}

  /* ---------- Currency strip ---------- */
  .fx{
    display:flex;align-items:center;gap:10px;justify-content:center;
    margin-top:14px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);
    border-radius:14px;padding:9px 12px;font-size:14px;color:#EAF1FB;
  }
  .fx .ils{color:var(--gold-soft);font-weight:700}
  .fx small{color:#9fb6da}

  /* ---------- Content ---------- */
  .screen{padding:16px 16px 6px;display:none}
  .screen.active{display:block;animation:fade .25s ease}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  .sec-title{font-size:20px;font-weight:700;margin:4px 2px 12px;display:flex;align-items:center;gap:9px}
  .sec-title small{font-family:'Assistant';font-size:12px;font-weight:500;color:var(--muted);letter-spacing:.5px}

  .card{background:var(--white);border:1px solid var(--line);border-radius:16px;box-shadow:0 2px 10px rgba(18,42,79,.05);overflow:hidden}
  .card + .card{margin-top:12px}

  /* Zmanim board */
  .next-z{display:flex;align-items:center;gap:12px;background:linear-gradient(100deg,#fff, #fbf6ea);padding:14px 16px}
  .next-z .lbl{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
  .next-z .nm{font-size:18px;font-weight:700;font-family:'Frank Ruhl Libre',serif}
  .next-z .tm{margin-inline-start:auto;font-size:22px;font-weight:700;color:var(--tekhelet)}
  .zrow{display:flex;align-items:center;padding:12px 16px;border-top:1px solid var(--line)}
  .zrow:first-child{border-top:none}
  .zrow .zn{font-weight:600}
  .zrow .zn span{display:block;font-size:11.5px;color:var(--muted);font-weight:500}
  .zrow .zt{margin-inline-start:auto;font-variant-numeric:tabular-nums;font-weight:700;font-size:16px;color:var(--ink)}
  .zrow.hl{background:linear-gradient(90deg,rgba(201,162,75,.12),transparent)}
  .zrow.hl .zt{color:#9a7a2c}

  /* Prayer list */
  .prayer-item{display:flex;align-items:center;gap:13px;padding:15px 16px;border-top:1px solid var(--line)}
  .prayer-item:first-child{border-top:none}
  .prayer-item .ic{width:42px;height:42px;border-radius:12px;background:var(--parchment-2);display:grid;place-items:center;font-size:20px;flex:none}
  .prayer-item .nm{font-weight:700;font-size:16px}
  .prayer-item .he{font-family:'Frank Ruhl Libre',serif;color:var(--tekhelet-500);font-size:15px}
  .prayer-item .sub{font-size:12.5px;color:var(--muted)}
  .prayer-item .go{margin-inline-start:auto;color:var(--muted);font-size:20px}
  .prayer-item.soon{opacity:.55}
  .badge-soon{font-size:10px;background:var(--parchment-2);color:var(--muted);padding:2px 7px;border-radius:6px;margin-inline-start:6px;vertical-align:middle}
  .badge-ai{font-size:10px;font-weight:800;background:linear-gradient(160deg,#1c3a6b,#0E1E3D);color:#fff;padding:2px 7px;border-radius:6px;margin-inline-start:6px;vertical-align:middle}

  /* Nearby */
  .filters{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;-webkit-overflow-scrolling:touch}
  .filters button{white-space:nowrap;border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:999px;font-weight:600;font-size:13px}
  .filters button.on{background:var(--tekhelet);color:#fff;border-color:var(--tekhelet)}
  #map{height:200px;border-radius:16px;border:1px solid var(--line);margin-bottom:12px;z-index:0}
  .place{display:flex;align-items:center;gap:12px;padding:13px 14px;border-top:1px solid var(--line)}
  .place:first-child{border-top:none}
  .place .pic{width:46px;height:46px;border-radius:11px;background:var(--parchment-2);display:grid;place-items:center;font-size:21px;flex:none}
  .place .nm{font-weight:700;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .place .meta{font-size:12.5px;color:var(--muted);margin-top:2px}
  .place .dist{margin-inline-start:auto;text-align:end;flex:none}
  .place .dist b{font-size:15px;color:var(--tekhelet)}
  .place .dist span{display:block;font-size:11px;color:var(--muted)}
  .spons{font-size:10px;font-weight:800;letter-spacing:.5px;color:#7a5e16;background:linear-gradient(90deg,var(--gold-soft),#f0dca2);padding:2px 8px;border-radius:6px;text-transform:uppercase}
  .stars{color:var(--gold);font-size:13px;letter-spacing:1px}

  /* Generic / placeholder panels */
  .pad{padding:18px 16px}
  .lead{color:var(--muted);font-size:14.5px;line-height:1.6}
  .cta{display:inline-flex;align-items:center;gap:8px;background:var(--tekhelet);color:#fff;font-weight:700;padding:12px 18px;border-radius:12px;font-size:15px;margin-top:14px}
  .cta.gold{background:var(--gold);color:#23210f}
  .feat{display:flex;gap:11px;padding:12px 0;border-top:1px solid var(--line)}
  .feat:first-of-type{border-top:none}
  .feat .fi{font-size:20px}
  .feat b{display:block}

  /* Admin preview */
  .admin-row{display:flex;align-items:center;gap:10px;padding:12px 14px;border-top:1px solid var(--line)}
  .admin-row:first-child{border-top:none}
  .admin-row .nm{font-weight:700}
  .admin-row .tags{font-size:12px;color:var(--muted)}
  .toggle{margin-inline-start:auto;display:flex;gap:6px;align-items:center}
  .chip{font-size:12px;font-weight:700;padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:#fff}
  .chip.on{background:var(--gold);border-color:var(--gold);color:#23210f}
  .chip.live{background:var(--ok);border-color:var(--ok);color:#fff}
  .chip.pend{background:#fff;color:var(--muted)}

  /* ---------- Bottom tab bar ---------- */
  .tabbar{
    position:fixed;left:0;right:0;bottom:0;z-index:50;
    height:calc(var(--tab-h) + env(safe-area-inset-bottom));
    padding-bottom:env(safe-area-inset-bottom);
    background:rgba(255,255,255,.92);backdrop-filter:blur(12px);
    border-top:1px solid var(--line);display:flex;
    max-width:560px;margin:0 auto;
  }
  .tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:11px;font-weight:600}
  .tabbar button .ti{font-size:21px;line-height:1}
  .tabbar button.on{color:var(--tekhelet)}
  .tabbar button.on .ti{transform:translateY(-1px)}

  /* ---------- Modal ---------- */
  .modal{position:fixed;inset:0;z-index:100;display:none;background:rgba(14,30,61,.45)}
  .modal.open{display:block}
  .sheet{
    position:absolute;left:0;right:0;bottom:0;max-width:560px;margin:0 auto;
    background:var(--parchment);border-top-left-radius:22px;border-top-right-radius:22px;
    max-height:88vh;overflow:auto;padding:8px 18px calc(24px + env(safe-area-inset-bottom));
    animation:up .28s cubic-bezier(.2,.8,.2,1);
  }
  @keyframes up{from{transform:translateY(100%)}to{transform:none}}
  .grab{width:42px;height:5px;border-radius:3px;background:#cdbf9f;margin:10px auto 6px}
  .sheet h2{font-size:24px;margin:6px 0 2px}
  .sheet .he-title{font-family:'Frank Ruhl Libre',serif;color:var(--tekhelet-500);font-size:18px;margin-bottom:14px}
  .ptext{font-size:18px;line-height:2;white-space:pre-wrap}
  .ptext.he{font-family:'Frank Ruhl Libre',serif;direction:rtl;text-align:right;font-size:21px;line-height:2.1}
  .ptext.translit{color:var(--muted);font-style:italic;font-size:15px;line-height:1.9;margin-top:12px}
  .ptext.en{margin-top:12px;font-size:15.5px;line-height:1.8;color:#333}
  .divider{height:1px;background:var(--line);margin:16px 0}
  .closebtn{position:sticky;top:0;float:inline-end;font-size:24px;color:var(--muted);background:none;padding:4px 6px}

  .hint{font-size:12px;color:var(--muted);margin:10px 2px;text-align:center}

  /* forms */
  .field{margin:10px 0}
  .field label{display:block;font-size:12.5px;color:var(--muted);margin:0 2px 5px;font-weight:600}
  .field input,.field select,.field textarea{
    width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;
    font-family:inherit;font-size:15px;background:#fff;color:var(--ink);
  }
  .field textarea{min-height:70px;resize:vertical}
  .field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--tekhelet-500);border-color:transparent}
  .btn{display:block;width:100%;text-align:center;background:var(--tekhelet);color:#fff;font-weight:700;padding:13px;border-radius:12px;font-size:15px;margin-top:6px}
  .btn.gold{background:var(--gold);color:#23210f}
  .btn.ghost{background:#fff;color:var(--tekhelet);border:1px solid var(--line)}
  .btn:disabled{opacity:.55}
  .row2{display:flex;gap:10px}.row2>*{flex:1}
  .msg{font-size:13px;padding:9px 12px;border-radius:10px;margin-top:8px}
  .msg.err{background:#fdeaea;color:#9b2c2c}
  .msg.ok{background:#e9f5ee;color:var(--ok)}
  .whoami{display:flex;align-items:center;gap:12px;padding:4px 2px 12px}
  .whoami .av{width:46px;height:46px;border-radius:50%;background:var(--tekhelet);color:#fff;display:grid;place-items:center;font-size:20px;font-weight:700}
  .toggle-row{display:flex;align-items:center;gap:10px;padding:10px 2px}
  .switch{margin-inline-start:auto;width:46px;height:27px;border-radius:999px;background:#cfd6e2;position:relative;transition:.2s}
  .switch.on{background:var(--ok)}
  .switch i{position:absolute;top:3px;inset-inline-start:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:.2s}
  .switch.on i{inset-inline-start:22px}
  .seg{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 4px}
  .seg button{flex:1 1 28%;min-width:90px;padding:9px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:600;color:var(--muted);font-size:13px}
  .seg button.on{background:var(--tekhelet);color:#fff;border-color:var(--tekhelet)}
  .status-tag{font-size:11px;font-weight:800;padding:3px 8px;border-radius:6px;text-transform:uppercase}
  .status-tag.approved{background:#e9f5ee;color:var(--ok)}
  .status-tag.pending{background:#fbf2dd;color:#9a7a2c}
  .status-tag.rejected{background:#fdeaea;color:#9b2c2c}

  /* ---------- Install banner ---------- */
  .installbar{
    display:none;align-items:center;gap:11px;max-width:560px;margin:0 auto;
    padding:10px 14px;background:linear-gradient(100deg,#122A4F,#0E1E3D);color:#EAF1FB;
  }
  .installbar.show{display:flex}
  .installbar .ii{font-size:22px}
  .installbar .it{flex:1;font-size:13px;line-height:1.35}
  .installbar .it b{display:block;font-size:14px}
  .installbar button.go{background:var(--gold);color:#23210f;font-weight:800;padding:8px 14px;border-radius:10px;font-size:13px;flex:none}
  .installbar button.x{color:#9fb6da;font-size:20px;padding:2px 6px;flex:none}

  /* ---------- City search (hero) ---------- */
  .searchrow{display:flex;gap:8px;margin-top:12px}
  .searchrow input{
    flex:1;padding:11px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.18);
    background:rgba(255,255,255,.10);color:#fff;font-family:inherit;font-size:15px;
  }
  .searchrow input::placeholder{color:#A9C0E2}
  .searchrow input:focus{outline:2px solid var(--gold-soft);border-color:transparent}
  .searchrow button{background:var(--gold);color:#23210f;font-weight:800;padding:0 16px;border-radius:12px;font-size:14px}

  /* ---------- Destinations carousel ---------- */
  .carousel{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 12px;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}
  .carousel::-webkit-scrollbar{display:none}
  .dcard{
    position:relative;flex:0 0 78%;max-width:300px;height:172px;border-radius:18px;overflow:hidden;
    scroll-snap-align:start;box-shadow:var(--shadow);cursor:pointer;color:#fff;border:1px solid rgba(0,0,0,.06);
  }
  .dcard .ph{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .4s}
  .dcard:active .ph{transform:scale(1.04)}
  .dcard .emoji{position:absolute;inset:0;display:grid;place-items:center;font-size:62px;opacity:.9;filter:drop-shadow(0 4px 10px rgba(0,0,0,.35))}
  .dcard .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,16,34,.05) 30%,rgba(8,16,34,.78) 100%)}
  .dcard .info{position:absolute;left:0;right:0;bottom:0;padding:12px 14px}
  .dcard .info .cty{font-family:'Frank Ruhl Libre',serif;font-weight:800;font-size:20px;line-height:1.1}
  .dcard .info .sub{font-size:12px;color:#e7eefb;opacity:.92;margin-top:2px}
  .dcard .pin{position:absolute;top:10px;inset-inline-start:10px;background:rgba(14,30,61,.55);backdrop-filter:blur(4px);
    font-size:11px;font-weight:700;padding:4px 9px;border-radius:999px}
  .dcard.here .pin{background:var(--gold);color:#23210f}

  /* ---------- Destination sheet ---------- */
  .dhero{height:150px;border-radius:16px;margin:6px 0 12px;background-size:cover;background-position:center;position:relative;overflow:hidden;display:grid;place-items:center}
  .dhero .emoji{font-size:64px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.4))}
  .dhero .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,16,34,.1),rgba(8,16,34,.5))}
  .dgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
  .dgrid button{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid var(--line);border-radius:13px;background:#fff;font-weight:700;font-size:15px;color:var(--ink)}
  .dgrid button .e{font-size:22px}

  /* ---------- Travelers ---------- */
  .tv-bar{display:flex;align-items:center;gap:10px;padding:14px 16px}
  .tv-bar .av{width:42px;height:42px;border-radius:50%;background:var(--tekhelet);color:#fff;display:grid;place-items:center;font-weight:700;flex:none}
  #tmap{height:170px;border-radius:16px;border:1px solid var(--line);margin:0 0 12px;z-index:0}
  .seg-svc{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}
  .seg-svc button{flex:1;min-width:72px;padding:9px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:600;color:var(--muted);font-size:13px}
  .seg-svc button.on{background:var(--tekhelet);color:#fff;border-color:var(--tekhelet)}
  .mpost{padding:13px 16px;border-top:1px solid var(--line)}
  .mpost:first-child{border-top:none}
  .mpost .top{display:flex;align-items:center;gap:9px}
  .mpost .svc{font-weight:800;font-size:16px}
  .mpost .when{margin-inline-start:auto;font-weight:800;color:var(--tekhelet);font-variant-numeric:tabular-nums}
  .mpost .meta{font-size:12.5px;color:var(--muted);margin-top:3px}
  .mpost .need{font-size:12px;font-weight:800;color:#9a7a2c;background:#fbf2dd;padding:2px 8px;border-radius:6px}
  .mpost .acts{display:flex;gap:8px;margin-top:10px}
  .mpost .acts button{flex:1;padding:9px;border-radius:10px;font-weight:700;font-size:13px;border:1px solid var(--line);background:#fff;color:var(--tekhelet)}
  .mpost .acts button.j{background:var(--tekhelet);color:#fff;border-color:var(--tekhelet)}
  .mpost .acts button.in{background:#e9f5ee;color:var(--ok);border-color:#cfe9da}
  .convo{display:flex;align-items:center;gap:12px;padding:13px 16px;border-top:1px solid var(--line);cursor:pointer}
  .convo:first-child{border-top:none}
  .convo .av{width:42px;height:42px;border-radius:50%;background:var(--parchment-2);display:grid;place-items:center;font-weight:700;color:var(--tekhelet);flex:none}
  .convo .last{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
  .unread{margin-inline-start:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--gold);color:#23210f;font-size:12px;font-weight:800;display:grid;place-items:center}
  .tabdot{position:absolute;top:8px;margin-inline-start:14px;width:8px;height:8px;border-radius:50%;background:var(--gold);display:none}
  .tabbar button{position:relative}

  /* ---------- Flights ---------- */
  .flight{padding:13px 16px;border-top:1px solid var(--line)}
  .flight:first-child{border-top:none}
  .flight .rt{display:flex;align-items:center;gap:8px;font-weight:800;font-size:16px}
  .flight .rt .arrow{color:var(--gold)}
  .flight .fno{margin-inline-start:auto;font-size:12px;font-weight:800;color:var(--tekhelet);background:var(--parchment-2);padding:3px 8px;border-radius:6px}
  .flight .meta{font-size:12.5px;color:var(--muted);margin-top:3px}
  .flight .matches{margin-top:9px;display:flex;flex-direction:column;gap:7px}
  .flight .mrow{display:flex;align-items:center;gap:9px;background:var(--parchment);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
  .flight .mrow .av{width:30px;height:30px;border-radius:50%;background:var(--tekhelet);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}
  .flight .mrow .nm{font-weight:700;font-size:13.5px}
  .flight .mrow button{margin-inline-start:auto;font-size:12px;font-weight:700;color:var(--tekhelet);border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px}
  .flight .nomatch{font-size:12.5px;color:var(--muted);margin-top:7px;font-style:italic}
  .flight .frm{margin-top:9px}
  .flight .frm button{font-size:12px;font-weight:700;border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;color:var(--muted)}

  /* ---------- Match (meet travelers) ---------- */
  .match-card{position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(160deg,#1c3a6b,#0E1E3D);color:#fff;min-height:330px;display:flex;flex-direction:column;justify-content:flex-end;box-shadow:var(--shadow)}
  .match-card .mphoto{position:absolute;inset:0;background-size:cover;background-position:center}
  .match-card .mbig{position:absolute;inset:0;display:grid;place-items:center;font-size:90px;opacity:.9}
  .match-card .mscrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,16,34,.12) 35%,rgba(8,16,34,.85))}
  .match-card .mbody{position:relative;padding:18px}
  .match-card .mname{font-family:'Frank Ruhl Libre',serif;font-weight:800;font-size:24px}
  .match-card .mmeta{font-size:13.5px;color:#e7eefb;margin-top:4px;line-height:1.5}
  .match-card .mtags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
  .match-card .mtag{font-size:11px;font-weight:700;background:rgba(255,255,255,.16);padding:4px 9px;border-radius:999px}
  .swipe-acts{display:flex;gap:10px;margin-top:12px}
  .swipe-acts button{flex:1;padding:13px;border-radius:13px;font-weight:800;font-size:15px;border:1px solid var(--line);background:#fff}
  .swipe-acts .pass{color:var(--muted)}
  .swipe-acts .like{background:var(--gold);color:#23210f;border-color:var(--gold)}
  .swipe-mini{display:flex;gap:14px;justify-content:center;margin-top:12px}
  .swipe-mini button{font-size:12px;color:var(--muted);text-decoration:underline;background:none}
  .chips-wrap{display:flex;flex-wrap:wrap;gap:7px;margin:6px 0}
  .chip-sel{font-size:13px;font-weight:600;padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink)}
  .chip-sel.on{background:var(--tekhelet);color:#fff;border-color:var(--tekhelet)}

  /* ---------- Place detail + reviews ---------- */
  .pd-hero{height:130px;border-radius:14px;margin:4px 0 12px;background:linear-gradient(160deg,#1c3a6b,#0E1E3D);background-size:cover;background-position:center;display:grid;place-items:center;color:#fff;overflow:hidden}
  .pd-hero .e{font-size:54px;filter:drop-shadow(0 3px 8px rgba(0,0,0,.4))}
  .pd-acts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0 6px}
  .pd-acts a,.pd-acts button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:11px 4px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--tekhelet);font-weight:700;font-size:12px;text-decoration:none}
  .pd-acts .ic2{font-size:19px}
  .stars{color:var(--gold);letter-spacing:1px}
  .stars .off{color:#d9cfb6}
  .ratebar{display:flex;align-items:center;gap:8px;margin:6px 0 2px}
  .ratebar b{font-size:20px}
  .review{padding:12px 0;border-top:1px solid var(--line)}
  .review:first-child{border-top:none}
  .review .rh{display:flex;align-items:center;gap:9px}
  .review .av{width:32px;height:32px;border-radius:50%;background:var(--parchment-2);display:grid;place-items:center;font-weight:700;color:var(--tekhelet);font-size:13px;flex:none}
  .review .rb{font-size:14px;line-height:1.5;margin-top:6px;white-space:pre-wrap}
  .review img.rphoto{width:100%;max-height:210px;object-fit:cover;border-radius:10px;margin-top:8px}
  .star-pick{display:flex;gap:8px;font-size:30px;color:#d9cfb6;cursor:pointer;margin:4px 0}
  .star-pick span.on{color:var(--gold)}

  /* ---------- Shabbat & calendar card ---------- */
  .shab{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
  .shab>div{background:#fff;padding:12px 14px}
  .shab .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
  .shab .v{font-weight:700;font-size:16px;margin-top:2px;font-family:'Frank Ruhl Libre',serif}
  .shab .full{grid-column:1 / -1;background:linear-gradient(100deg,#fff,#fbf6ea)}
  .shab .full.warn .v{color:#9a7a2c}

  /* ---------- Plan-your-Shabbat quick row ---------- */
  .planrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
  .planrow button{display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 4px;border:1px solid var(--line);border-radius:13px;background:#fff;font-weight:700;font-size:11.5px;color:var(--tekhelet)}
  .planrow button .e{font-size:20px}

  /* ---------- Emergency (#17) ---------- */
  .sos{position:fixed;z-index:60;inset-inline-end:14px;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 14px);
    width:54px;height:54px;border-radius:50%;background:#c0392b;color:#fff;font-weight:900;font-size:12px;
    box-shadow:0 8px 24px rgba(192,57,43,.45);display:flex;align-items:center;justify-content:center;border:3px solid #fff}
  @media(min-width:592px){ .sos{inset-inline-end:calc(50% - 280px + 14px)} }
  .sos-call{display:block;text-align:center;background:#c0392b;color:#fff;font-weight:800;padding:14px;border-radius:13px;font-size:17px;text-decoration:none;margin:4px 0 12px}
  .ecat{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:14px 0 2px}
  .erow{display:flex;align-items:center;gap:11px;padding:11px 0;border-top:1px solid var(--line)}
  .erow:first-child{border-top:none}
  .erow .ei{width:38px;height:38px;border-radius:10px;background:var(--parchment-2);display:grid;place-items:center;font-size:19px;flex:none}
  .erow .en{font-weight:700;font-size:14.5px}
  .erow .em{font-size:12px;color:var(--muted)}
  .erow .ea{margin-inline-start:auto;display:flex;gap:6px;flex:none}
  .erow .ea a{font-size:12px;font-weight:700;color:var(--tekhelet);border:1px solid var(--line);border-radius:8px;padding:7px 10px;text-decoration:none}

  /* ---------- Hospitality (#16) ---------- */
  .hosp{padding:13px 16px;border-top:1px solid var(--line)}
  .hosp:first-child{border-top:none}
  .hosp .ht{display:flex;align-items:center;gap:8px}
  .hosp .badge{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px}
  .hosp .badge.offer{background:#e9f5ee;color:var(--ok)}
  .hosp .badge.request{background:#fbf2dd;color:#9a7a2c}
  .hosp .hn{font-weight:700}
  .hosp .when{margin-inline-start:auto;font-weight:700;color:var(--tekhelet);font-size:13px}
  .hosp .meta{font-size:12.5px;color:var(--muted);margin-top:3px}
  .hosp .acts{display:flex;gap:8px;margin-top:9px}
  .hosp .acts button{flex:1;padding:9px;border-radius:10px;font-weight:700;font-size:13px;border:1px solid var(--line);background:#fff;color:var(--tekhelet)}
  .hosp .acts button.j{background:var(--tekhelet);color:#fff;border-color:var(--tekhelet)}

  /* ---------- City score (#19) ---------- */
  .cscore{display:flex;align-items:center;gap:14px;padding:14px 16px}
  .cscore .num{font-family:'Frank Ruhl Libre',serif;font-weight:900;font-size:34px;color:var(--tekhelet);line-height:1}
  .cscore .num small{font-size:15px;color:var(--muted);font-weight:600}
  .cscore .lbl{font-weight:800;font-size:15px}
  .cscore .b{font-size:12px;color:var(--muted);margin-top:3px}

  /* ---------- Events / alerts (#21 / #23) ---------- */
  .evk{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;background:var(--parchment-2);color:#5a4a2a}
  .alk{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;background:#fdeaea;color:#9b2c2c}

  /* ---------- Reputation (#30) ---------- */
  .repu{display:flex;align-items:center;gap:13px}
  .repu .lv{width:46px;height:46px;border-radius:12px;background:linear-gradient(160deg,var(--gold-soft),var(--gold));display:grid;place-items:center;font-size:22px;flex:none}
  .repu .lvl{font-weight:800;font-size:16px}
  .repu .pts{font-size:12.5px;color:var(--muted)}

  /* ---------- AI assistant (#20) ---------- */
  .ai-hero{height:92px;border-radius:14px;margin:4px 0 12px;background:radial-gradient(120% 120% at 80% -10%,#1c3a6b,#0E1E3D);display:grid;place-items:center;font-size:42px}
  .ai-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:2px}
  .ai-chip{font-size:12.5px;font-weight:700;padding:7px 12px;border-radius:999px;background:var(--parchment-2);color:var(--tekhelet);border:1px solid var(--line);cursor:pointer}

  /* ---------- Chat ---------- */
  .chat-wrap{display:flex;flex-direction:column;height:64vh}
  .chat-scroll{flex:1;overflow:auto;padding:6px 2px;display:flex;flex-direction:column;gap:8px}
  .bub{max-width:78%;padding:9px 13px;border-radius:15px;font-size:14.5px;line-height:1.4;word-wrap:break-word}
  .bub.me{align-self:flex-end;background:var(--tekhelet);color:#fff;border-bottom-right-radius:5px}
  .bub.them{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
  .bub .ts{display:block;font-size:10px;opacity:.6;margin-top:3px}
  .chat-in{display:flex;gap:8px;padding-top:8px}
  .chat-in input{flex:1;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font-family:inherit;font-size:15px}
  .chat-in button{background:var(--tekhelet);color:#fff;font-weight:700;padding:0 16px;border-radius:12px}
  .empty{padding:22px 16px;text-align:center;color:var(--muted);font-size:14px;line-height:1.6}

/* ============================================================================
   Jravel 2.0 design refresh — calmer, travel-grade, mobile-first.
   Layered after the base styles so it wins without rewriting them.
   ========================================================================== */
:root{
  --surface:#F7F8FA;          /* soft neutral app background */
  --card:#FFFFFF;
  --line-soft:#E7EAF0;
  --brand:#122A4F;            /* single refined brand color (tekhelet) */
  --brand-ink:#0E1E3D;
  --accent:#B98A2F;           /* restrained gold accent */
  --ok-soft:#EAF6EE; --ok-ink:#1F7A3D;
  --warn-soft:#FCF3E3; --warn-ink:#8a6414;
  --bad-soft:#FDECEC; --bad-ink:#9b2c2c;
  --radius:14px;
}
body{ background:var(--surface); }
.card{ background:var(--card); border:1px solid var(--line-soft); box-shadow:0 1px 2px rgba(14,30,61,.04); border-radius:var(--radius); }
.sec-title{ margin:18px 2px 10px; font-size:18px; }
h2.sec-title, h3.sec-title{ margin-block:18px 10px; }
button{ min-height:44px; }                 /* mobile tap targets */
.lang button, .editloc, .closebtn, .saveb, .tcheck, .chipbtn, .filters button{ min-height:36px; }
:focus-visible{ outline:3px solid #7FB3E8; outline-offset:2px; border-radius:6px; }
.visually-hidden{ position:absolute!important; width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0; }
.muted{ color:var(--muted); }

/* header: calmer, less gradient */
.hero{ background:var(--brand-ink); }
.loc{ align-items:center; }
.loc .pin{ width:16px;height:16px;flex:none;color:var(--gold,#D9B54A); }
.locname{ background:none;border:0;color:#fff;font:inherit;font-weight:600;padding:4px 2px;cursor:pointer;min-height:36px; }
.hdr-tef{ font-weight:600; }

/* primary action grid */
.pgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:2px 0 6px; }
.pcard{
  display:flex; flex-direction:column; align-items:flex-start; gap:6px;
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--radius);
  padding:14px; text-align:start; cursor:pointer; min-height:104px;
  box-shadow:0 1px 2px rgba(14,30,61,.04); transition:transform .06s ease;
}
.pcard:active{ transform:scale(.98); }
.pcard svg{ width:26px;height:26px;color:var(--brand); }
.pcard .pt{ font-weight:700; font-size:15.5px; color:var(--ink); }
.pcard .ps{ font-size:12.5px; color:var(--muted); }

.next-card{ padding:14px 16px; margin-top:10px; }
.next-card .linkbtn{ margin-top:6px; }
.linkbtn{ background:none;border:0;color:var(--tekhelet-500);font:inherit;font-weight:600;font-size:13.5px;padding:6px 0;cursor:pointer; }
.shab.compact{ margin-top:10px; }
.status-card{ padding:14px 16px; border-inline-start:4px solid var(--accent); }

/* prayer-item now a real button */
button.prayer-item{ width:100%; background:none; border:0; border-top:1px solid var(--line-soft); font:inherit; text-align:start; cursor:pointer; }
button.prayer-item:first-child{ border-top:0; }
.prayer-item .txt{ display:flex; flex-direction:column; min-width:0; flex:1; }
.prayer-item .sub{ color:var(--muted); font-size:12.5px; }

/* sub-tabs (Prayer & Shabbat) */
.subtabs{ display:flex; gap:8px; margin:2px 0 12px; }
.subtabs button{
  flex:1; padding:10px 8px; border-radius:10px; border:1px solid var(--line-soft);
  background:var(--card); font:inherit; font-weight:600; color:var(--muted); cursor:pointer;
}
.subtabs button.on{ background:var(--brand); color:#fff; border-color:var(--brand); }

/* explore filters */
.filters.sub button{ font-size:12.5px; padding:8px 12px; }
.filters button[aria-pressed="true"], .filters button.on{ background:var(--brand); color:#fff; border-color:var(--brand); }

/* trust + open badges */
.tbadge{ display:inline-block; font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:6px; vertical-align:middle; }
.tbadge.partner{ background:#EAF1FB; color:#1D4E89; }
.tbadge.verified{ background:var(--ok-soft); color:var(--ok-ink); }
.tbadge.community{ background:#EEF1F6; color:#4A5568; }
.tbadge.unverified{ background:var(--warn-soft); color:var(--warn-ink); }
.tb-upd{ font-size:10.5px; color:var(--muted); }
.openb{ display:inline-block; font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:6px; margin-inline-start:6px; }
.openb.open{ background:var(--ok-soft); color:var(--ok-ink); }
.openb.closed{ background:var(--bad-soft); color:var(--bad-ink); }
.notice-warn{ font-size:12.5px; color:var(--warn-ink); background:var(--warn-soft); padding:8px 10px; border-radius:8px; }
.cert-ok{ font-size:12.5px; color:var(--ok-ink); }
.cert-none{ font-size:12.5px; color:var(--muted); }

/* place rows: save heart + distance column */
.place .endcol{ display:flex; flex-direction:column; align-items:center; gap:4px; flex:none; }
.saveb{ background:none; border:0; font-size:20px; line-height:1; color:#B7BecD; cursor:pointer; padding:4px 8px; }
.saveb.on{ color:#C43D3D; }
.place.small{ padding:10px 12px; }

/* skeleton loaders */
.skel-list{ padding:8px; }
.skel-card{ display:flex; gap:12px; padding:10px 8px; align-items:center; }
.skel{ background:linear-gradient(90deg,#EDEFF3 25%,#F7F8FA 50%,#EDEFF3 75%); background-size:200% 100%; animation:skel 1.2s infinite; border-radius:8px; }
.skel.pic{ width:52px; height:52px; flex:none; }
.skel-lines{ flex:1; display:flex; flex-direction:column; gap:8px; }
.skel.line{ height:12px; } .skel.line.w70{ width:70%; } .skel.line.w40{ width:40%; }
@keyframes skel{ 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* detail sheet */
.pd-trust{ display:flex; align-items:center; gap:8px; margin:4px 0; }
.pd-secacts{ display:flex; gap:8px; flex-wrap:wrap; margin:10px 0 4px; }
.chipbtn{ background:var(--card); border:1px solid var(--line-soft); border-radius:999px; padding:8px 14px; font:inherit; font-weight:600; font-size:13px; cursor:pointer; color:var(--ink); }
.chipbtn.on{ background:var(--brand); color:#fff; border-color:var(--brand); }
.chipbtn.warn{ color:var(--bad-ink); }
.pd-row{ display:flex; gap:10px; padding:8px 0; border-top:1px solid var(--line-soft); font-size:13.5px; }
.pd-row b{ flex:none; min-width:92px; color:var(--muted); font-weight:600; }
.ok-msg{ background:var(--ok-soft); color:var(--ok-ink); padding:10px 12px; border-radius:10px; margin-top:8px; font-weight:600; }
.err-msg{ background:var(--bad-soft); color:var(--bad-ink); padding:10px 12px; border-radius:10px; margin-top:8px; font-weight:600; }
.input{ width:100%; box-sizing:border-box; padding:12px 14px; border:1px solid var(--line-soft); border-radius:10px; font:inherit; font-size:15px; margin:6px 0; background:#fff; }
.flabel{ font-size:12.5px; font-weight:600; color:var(--muted); display:block; }
.pills{ display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.pills button{ background:var(--card); border:1px solid var(--line-soft); border-radius:999px; padding:8px 13px; font:inherit; font-size:13px; cursor:pointer; }
.pills button.on{ background:var(--brand); color:#fff; border-color:var(--brand); }
.pad{ padding:14px 16px; }

/* onboarding */
.onboard{ position:fixed; inset:0; z-index:60; background:linear-gradient(170deg,var(--brand-ink),#183258 70%); display:flex; align-items:center; justify-content:center; padding:20px; }
.ob-card{ width:100%; max-width:420px; background:var(--card); border-radius:18px; padding:26px 22px; text-align:center; max-height:88vh; overflow:auto; }
.ob-logo{ font-family:'Frank Ruhl Libre',serif; font-size:30px; color:var(--brand); font-weight:900; margin-bottom:6px; }
.ob-logo b{ color:var(--accent); }
.ob-card h1{ font-size:22px; margin:4px 0 8px; }
.ob-card p{ color:var(--muted); font-size:14.5px; line-height:1.5; margin:0 0 12px; }
.ob-why{ font-weight:600; color:var(--ink)!important; }
.ob-card .btn{ width:100%; margin-top:8px; }
.ob-pop{ font-size:12px; font-weight:700; color:var(--muted); margin:14px 0 8px; text-transform:uppercase; letter-spacing:.4px; }
.ob-cities{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.ob-cities button{ background:var(--surface); border:1px solid var(--line-soft); border-radius:999px; padding:8px 14px; font:inherit; font-size:13.5px; cursor:pointer; }
.ob-done{ width:56px; height:56px; margin:0 auto 10px; border-radius:50%; background:var(--ok-soft); color:var(--ok-ink); font-size:28px; display:grid; place-items:center; }

/* trips */
.tr-dates{ display:flex; gap:10px; }
.tr-dates label{ flex:1; }
.trip{ margin-top:10px; }
.trip-h{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.tdates{ font-size:12.5px; color:var(--muted); }
.tprog{ font-size:12.5px; font-weight:700; color:var(--ok-ink); flex:none; }
.tbar{ height:6px; background:var(--surface); border-radius:99px; margin:8px 0 10px; overflow:hidden; }
.tfill{ height:100%; background:linear-gradient(90deg,var(--brand),#2B6CB0); border-radius:99px; transition:width .3s ease; }
.tstep{ display:flex; align-items:center; gap:10px; padding:7px 0; }
.tstep.done .tlabel{ text-decoration:line-through; color:var(--muted); }
.tcheck{ width:26px; height:26px; flex:none; border-radius:8px; border:2px solid var(--line-soft); background:#fff; cursor:pointer; color:var(--ok-ink); font-weight:800; }
.tstep.done .tcheck{ background:var(--ok-soft); border-color:var(--ok-ink); }
.tlabel{ background:none; border:0; font:inherit; font-size:14px; text-align:start; cursor:pointer; color:var(--ink); padding:4px 0; }
.trip-acts{ display:flex; gap:8px; margin-top:8px; }

/* moderation queue */
.mq-h{ font-weight:800; font-size:13px; margin:10px 0 6px; color:var(--muted); text-transform:uppercase; letter-spacing:.4px; }
.mq-item{ display:flex; justify-content:space-between; gap:10px; padding:10px 0; border-top:1px solid var(--line-soft); font-size:14px; }
.mq-acts{ display:flex; flex-direction:column; gap:6px; flex:none; }

/* tab bar: 6 tabs with SVG icons */
.tabbar{ display:flex; }
.tabbar button{ flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; font-size:10.5px; padding:8px 2px calc(8px + env(safe-area-inset-bottom)); min-height:56px; }
.tabbar button svg{ width:22px; height:22px; }
.tabbar button .ti{ display:none; }

/* RTL niceties for new components */
[dir="rtl"] .pcard{ text-align:right; }
[dir="rtl"] .pd-row b{ min-width:auto; }
