/* feat-assist: styles for the 09-28 traveller features. Theme tokens only (var(--ink) …), never literal colours.
   sc-  Scam check (scamcheck.js)   tc-  Travel cards (travelcards.js)   tou-  Tours & tickets (tours.js) */

/* ---------------------------------------------------------------- Scam check */
#scam-body{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
/* Thumb-sized, over the theme's 36 px .btn.sm. */
#scam-body .btn,#voice-cards .btn{min-height:44px}
.sc-form{display:grid;gap:8px}
.sc-lab{font-weight:600}
.sc-text{width:100%;min-height:9.5em;box-sizing:border-box;padding:12px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font:inherit;font-size:16px;line-height:1.4;resize:vertical}
.sc-text:focus-visible{outline:2px solid var(--datum);outline-offset:1px}
.sc-count{justify-self:end}
.sc-acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
/* On a phone the row keeps clear of the companion's round button: see the
   .vc-form/.sc-acts/.pl-chips rule beside .vc-form in app.css. */
.sc-shot-row{display:flex;align-items:center;gap:8px;min-width:0}
.sc-add,.sc-go{min-height:44px}
.sc-go{min-width:120px;font-size:16px}
.sc-thumb{position:relative;display:inline-block}
.sc-thumb img{display:block;width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.sc-x{position:absolute;top:-10px;right:-10px;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);
  background:var(--panel-2);color:var(--ink);font-size:20px;line-height:1;cursor:pointer}
.sc-privacy{margin:0}
.sc-out{margin-top:14px}
.sc-card{border:1px solid var(--line);border-left-width:6px;border-radius:12px;padding:14px 14px 10px;background:var(--panel);color:var(--ink)}
.sc-card.is-bad{border-color:var(--magenta)}
.sc-card.is-warn{border-color:var(--warn)}
.sc-card.is-ok{border-color:var(--ok)}
.sc-card.is-unsure{border-color:var(--ink-3)}
.sc-level{display:flex;align-items:center;gap:10px;font-size:1.25rem}
.sc-ico{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;font-size:18px;flex:none;
  background:var(--panel-2);color:var(--ink)}
.is-bad .sc-level strong,.is-bad .sc-ico{color:var(--magenta)}
.is-warn .sc-level strong,.is-warn .sc-ico{color:var(--warn)}
.is-ok .sc-level strong,.is-ok .sc-ico{color:var(--ok)}
.is-bad .sc-ico{background:color-mix(in srgb,var(--magenta) 16%,transparent)}
.is-warn .sc-ico{background:color-mix(in srgb,var(--warn) 16%,transparent)}
.is-ok .sc-ico{background:color-mix(in srgb,var(--ok) 16%,transparent)}
.sc-sum{margin:10px 0 4px;font-size:1.02rem;line-height:1.45}
.sc-sec{margin-top:12px}
.sc-sec h3{margin:0 0 6px;font-size:.95rem}
.sc-list{margin:0;padding-left:20px;display:grid;gap:5px;line-height:1.4;overflow-wrap:anywhere}
.sc-todo li::marker{color:var(--datum)}
.sc-flags{margin-top:12px}
.sc-flags summary{padding:12px 0;cursor:pointer;color:var(--ink-2);list-style:none}
.sc-flags summary::-webkit-details-marker{display:none}
.sc-flags summary::before{content:'▸ ';color:var(--datum)}
.sc-flags[open] summary::before{content:'▾ '}
.sc-hard{color:var(--magenta)}
.sc-soft{color:var(--warn)}
.sc-official{display:flex;flex-wrap:wrap;gap:6px}
.sc-official .btn{min-height:44px;display:inline-flex;align-items:center;text-decoration:none}
.sc-pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:.9rem;color:var(--ink-2);margin:0;
  max-height:14em;overflow:auto;background:var(--panel-2);padding:8px;border-radius:8px}
.sc-disclaimer{margin:12px 0 2px;padding-top:10px;border-top:1px solid var(--line);color:var(--ink-2);font-size:.9rem}
.sc-err{color:var(--magenta)}
.sc-sits{display:flex;flex-wrap:wrap;gap:6px}
.sc-sit{min-height:40px}
.sc-rec{min-height:44px}
.sc-rec.is-on{border-color:var(--magenta);color:var(--magenta)}
.sc-rec-note{margin:0}
.sc-quick{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 2px}
.sc-quick .btn{min-height:44px}
.sc-say{list-style:none;padding-left:0}
.sc-say-b{display:grid;gap:2px;width:100%;text-align:left;padding:9px 11px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line);background:var(--panel-2);color:var(--ink);font:inherit}
.sc-say-l{font-size:1.05rem;font-weight:600}
.sc-follow{display:grid;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.sc-follow-text{min-height:4.5em}
.sc-follow .btn{justify-self:start;min-height:44px}

/* ------------------------------------------------------------ Travel cards */
#voice-cards{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
.tc-root{display:grid;gap:8px;min-width:0}
.tc-seg .seg-b{min-height:44px;font-size:.92rem;padding:8px 6px}
.tc-pane{display:grid;gap:10px;min-width:0}
.tc-pane > .fine{margin:0}
.tc-search{display:flex;gap:6px}
.tc-q{flex:1;min-width:0;min-height:44px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font:inherit;font-size:16px}
.tc-search .btn,.tc-quick .btn{min-height:44px}
.tc-quick{margin:0}
.tc-results{display:grid;gap:6px}
.tc-hit{display:grid;gap:2px;text-align:left;min-height:48px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;
  background:var(--panel);color:var(--ink);font:inherit;cursor:pointer;overflow-wrap:anywhere}
.tc-hit:focus-visible,.tc-chip:focus-visible,.tc-item-t:focus-visible{outline:2px solid var(--datum);outline-offset:2px}
.tc-group{border:1px solid var(--line);border-radius:10px;padding:8px 10px 10px;margin:0;min-width:0}
.tc-group legend{padding:0 4px;font-weight:600}
.tc-chips{display:flex;flex-wrap:wrap;gap:6px}
.tc-chip{min-height:44px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);
  color:var(--ink-2);font:inherit;font-size:.92rem;cursor:pointer}
.tc-chip[aria-pressed="true"]{background:var(--datum);border-color:var(--datum);color:var(--on-accent);font-weight:600}
.tc-radio{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:6px 0;margin:0;line-height:1.35;cursor:pointer;
  font-size:.95rem;text-transform:none;letter-spacing:normal;color:var(--ink)}
.tc-radio input{width:20px;height:20px;margin:2px 0 0;flex:none;accent-color:var(--datum)}
.tc-lang{display:grid;gap:4px;margin:0}
.tc-lang select{min-height:44px;padding:8px;border-radius:8px;border:1px solid var(--line);background:var(--panel);
  color:var(--ink);font:inherit;font-size:16px;max-width:100%}
.tc-make{min-height:48px;font-size:16px}
.tc-out:empty{display:none}
.tc-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel);color:var(--ink);display:grid;gap:8px;
  overflow-wrap:anywhere}
.tc-line{display:grid;gap:2px}
.tc-t{font-size:1.05rem;line-height:1.4}
.tc-title .tc-t{font-size:1.35rem;font-weight:700}
.tc-intro .tc-t{font-weight:600}
.tc-item .tc-t{padding-left:12px;border-left:3px solid var(--datum)}
.tc-warn .tc-t{font-weight:700;color:var(--magenta)}
.tc-addr .tc-t{color:var(--ink-2)}
.tc-coords .tc-t{font-variant-numeric:tabular-nums}
.tc-r{font-size:.85rem;color:var(--ink-2)}
/* Check lines under each card line: English, then the traveller's own language. */
.tc-x{display:flex;align-items:baseline;gap:6px;font-size:.92rem;line-height:1.35;color:var(--ink-2)}
.tc-tag{flex:none;font-size:.62rem;font-weight:700;letter-spacing:.04em;line-height:1.3;padding:1px 4px;
  border:1px solid var(--line);border-radius:4px;color:var(--ink-2);background:var(--panel-2)}
.tc-acts{margin:4px 0 0}
.tc-acts .btn{min-height:44px;min-width:64px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.tc-say.is-on,.tc-say-sm.is-on{outline:2px solid var(--datum)}
.tc-kept{margin:0}
.tc-saved{display:flex;align-items:stretch;gap:6px}
.tc-item-t{flex:1;min-width:0;display:grid;gap:2px;text-align:left;min-height:52px;padding:8px 10px;border:1px solid var(--line);
  border-radius:10px;background:var(--panel);color:var(--ink);font:inherit;cursor:pointer}
.tc-item-t b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-say-sm,.tc-del{flex:none;width:48px;min-height:48px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);
  color:var(--ink);font:inherit;font-size:1.1rem;cursor:pointer}
.tc-del{font-size:1.5rem;line-height:1}

/* Show: the card held up to someone. Big, plain, high contrast. */
.tc-show{position:fixed;inset:0;z-index:10000;background:var(--panel);color:var(--ink);overflow:auto;
  display:flex;align-items:safe center;justify-content:center;cursor:pointer;
  padding:max(20px,env(safe-area-inset-top,0px)) max(18px,env(safe-area-inset-right,0px))
          max(20px,env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px))}
.tc-show:focus{outline:none}
.tc-show-in{width:100%;max-width:1100px;display:grid;gap:14px;overflow-wrap:anywhere}
.tc-sl{display:grid;gap:4px}
.tc-st{font-size:clamp(1.4rem,6.4vw,2.6rem);line-height:1.25;font-weight:600}
.tc-s-title .tc-st{font-size:clamp(2.6rem,13vw,5rem);font-weight:800;line-height:1.12}
.tc-s-intro .tc-st{font-size:clamp(1.3rem,6vw,2.4rem)}
.tc-s-item .tc-st{font-size:clamp(2rem,10vw,3.6rem);font-weight:800;padding-left:14px;border-left:6px solid var(--magenta)}
.tc-s-warn .tc-st{font-weight:800;color:var(--magenta)}
.tc-s-addr .tc-st{font-size:clamp(1.6rem,7.5vw,2.8rem)}
.tc-s-coords .tc-st{font-size:clamp(1.1rem,4.6vw,1.6rem);font-variant-numeric:tabular-nums;color:var(--ink-2)}
.tc-sr{font-size:clamp(.95rem,3.6vw,1.3rem);color:var(--ink-2)}
.tc-sx{display:flex;align-items:baseline;gap:8px;font-size:clamp(1rem,3.9vw,1.35rem);line-height:1.35;
  color:var(--ink-2);font-weight:400}
.tc-sx .tc-tag{font-size:clamp(.62rem,2.4vw,.8rem)}
.tc-shint{font-size:.85rem;color:var(--ink-3);text-align:center}
@media (orientation:landscape) and (max-height:500px){
  .tc-show .tc-show-in{gap:8px}
  .tc-show .tc-st{font-size:clamp(1.1rem,6vh,2rem)}
  .tc-show .tc-s-title .tc-st{font-size:clamp(2rem,13vh,4rem)}
  .tc-show .tc-s-item .tc-st{font-size:clamp(1.6rem,10vh,3rem)}
  .tc-show .tc-s-addr .tc-st{font-size:clamp(1.3rem,8vh,2.4rem)}
  .tc-show .tc-s-coords .tc-st{font-size:clamp(1rem,5vh,1.4rem)}
  .tc-show .tc-sx{font-size:clamp(.9rem,4vh,1.15rem)}
}


/* ------------------------------------------------------- Tours & tickets */
#near-tours:empty{display:none}
#near-tours{margin-bottom:10px}
.tou-ctl{display:grid;gap:6px;margin-bottom:8px}
.tou-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tou-cur{min-height:44px;padding:6px 8px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);
  font:inherit;font-size:16px}
.tou-sort{display:flex;margin:0}
.tou-sort button{flex:1;min-height:44px;font:inherit;font-size:.9rem}
.tou-list{display:grid;gap:8px}
.tou-card{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px;
  border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);text-decoration:none;
  -webkit-tap-highlight-color:transparent}
.tou-card:active{background:var(--panel-2)}
.tou-card:focus-visible{outline:2px solid var(--datum);outline-offset:2px}
.tou-pic{width:72px;height:72px;border-radius:9px;overflow:hidden;background:var(--panel-2)}
.tou-pic img{width:100%;height:100%;object-fit:cover;display:block}
.tou-body{display:grid;gap:3px;min-width:0}
.tou-name{font-weight:600;line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tou-meta{color:var(--warn)}
.tou-tags{display:flex;flex-wrap:wrap;gap:4px}
.tou-tag{font-size:12px;line-height:1.2;padding:3px 7px;border-radius:999px;background:var(--panel-2);color:var(--ink-2)}
.tou-free{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}
.tou-price{display:grid;justify-items:end;gap:1px;text-align:right;max-width:7.5em}
.tou-price b{font-size:1rem;white-space:nowrap}
.tou-links{display:flex;flex-wrap:wrap;align-items:center;gap:2px 12px;margin-top:8px}
.tou-link{display:inline-flex;align-items:center;min-height:44px;color:var(--datum)}
.tou-links > .fine{display:inline-flex;align-items:center;min-height:44px}
.tou-foot{margin:6px 0 0}
.tou-status{margin:4px 0 8px}
@media (max-width:380px){ .tou-card{grid-template-columns:60px minmax(0,1fr) auto} .tou-pic{width:60px;height:60px} }

/* ------------------------------------------------ Interpreter: Speak & type
   voice.js keeps only the newest line on the page, in the card under the
   microphone; the whole conversation opens from the row under it, and the
   engine note sits under the typed box. */
.vc-latest{margin:0 0 8px}
.vc-latest .vc-hint{padding:10px 0}
.vc-hist{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:44px;margin:0 0 12px;
  padding:8px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);
  font:inherit;font-size:.95rem;text-align:left;cursor:pointer}
.vc-hist[hidden]{display:none}
.vc-hist:focus-visible{outline:2px solid var(--datum);outline-offset:2px}
.vc-hist-go{color:var(--ink-3);font-size:1.3rem;line-height:1}
.vc-history{padding-bottom:env(safe-area-inset-bottom,0px)}
.vc-form + .vc-engine{margin:-6px 0 16px}
.vc-engine:empty{display:none}

/* ------------------------------------------------ Interpreter: Photo
   scan.js puts a status line above the photo and moves #scan-result up to
   right under it (one row of buttons; the lines open in a pop). The photo
   is held short enough on a phone that this row stays above the nav. */
#scan-panel.in-interp #scan-shot{max-height:min(60vh,max(240px,calc(100dvh - 430px)))}
#scan-panel.in-interp #scan-video{max-height:min(44dvh,max(240px,calc(100dvh - 430px)))}
#scan-panel #scan-result{margin:0 0 8px}
#scan-panel #scan-result:empty{display:none}
.scan-acts{margin:0}
.scan-status{display:flex;align-items:center;gap:8px;margin:-2px 0 8px;min-width:0}
.scan-status:empty{display:none}
.scan-status.is-bad{color:var(--magenta)}
.scan-pop .scan-h:first-child{margin-top:0}
.scan-pop .btn.is-on{background:var(--datum);border-color:var(--datum);color:var(--on-accent)}
