/* ============================================================================
   Field kit styles (agent app, pwa-v2 parity, 2026-10) — loaded after app.css, same tokens.
   Shared components first; then one marked block per field screen. A stream adds rules ONLY inside its
   own block (keeps parallel branches merge-clean).
   ========================================================================== */

/* Phones: 16 px inputs so iOS does not zoom the page on focus; no grey tap flash; comfortable targets. */
@media (max-width:768px){
  .fi,.fs,.fta{font-size:16px}
  .fi.sm,.fs.sm{font-size:16px}
  button,a,.item,.litem,.chip{-webkit-tap-highlight-color:transparent}
}

/* ── top bar: outbox / offline chip ── */
.obx-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:15px;font-family:var(--font-cond);font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.3);white-space:nowrap}
.obx-chip.red{background:rgba(239,68,68,.12);color:var(--red);border-color:rgba(239,68,68,.35)}
.obx-chip.off{background:var(--bg-2);color:var(--text-m);border-color:var(--line)}
.obx-chip b{font-weight:700}
@media (max-width:420px){.obx-chip span{display:none}.obx-chip{padding:0 8px;gap:4px}}
.offline-bar{display:flex;align-items:center;gap:8px;padding:7px 22px;font-size:12.5px;color:var(--text-m);background:rgba(245,158,11,.07);border-bottom:1px solid rgba(245,158,11,.22)}
@media (max-width:768px){.offline-bar{padding:7px 14px}}

/* ── pills ── */
.pill.pq{background:rgba(245,158,11,.10);color:var(--amber);border-color:rgba(245,158,11,.35);border-style:dashed}

/* ── outbox window ── */
.obx-net{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:8px 10px;border-radius:8px;margin-bottom:10px;background:var(--bg-1);border:1px solid var(--line)}
.obx-net.off{color:var(--amber);border-color:rgba(245,158,11,.3)}
.obx-net .sp{flex:1}
.obx-row{align-items:center}
.obx-l{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.obx-f{padding:10px 0;border-top:1px solid var(--line-soft)}
.obx-opt{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-top:6px;cursor:pointer;font-size:13px;word-break:break-word}
.obx-opt:has(input:checked){border-color:var(--gold);background:var(--gold-d)}
.obx-opt input{margin-top:3px;accent-color:var(--gold)}

/* ── Field hub ── */
.fx-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
@media (max-width:640px){.fx-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}
.fx-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;min-height:108px;padding:14px;border-radius:var(--radius);background:var(--bg-2);border:1px solid var(--line);transition:border-color .15s,transform .15s}
.fx-tile:hover{border-color:var(--gold-b);transform:translateY(-1px)}
.fx-tile:active{transform:translateY(0)}
.fx-tile .fx-i{width:38px;height:38px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:var(--gold-d);color:var(--gold);margin-bottom:4px}
.fx-tile .fx-l{font-weight:600;font-size:14px}
.fx-tile .fx-h{font-size:12px;color:var(--text-d);line-height:1.35}
.fx-tile .fx-n{position:absolute;top:10px;right:10px;min-width:22px;height:22px;border-radius:11px;padding:0 7px;background:rgba(200,168,75,.18);color:var(--gold-l);font-family:var(--font-cond);font-weight:700;font-size:12px;display:inline-flex;align-items:center;justify-content:center}
.fx-tile.red .fx-n{background:rgba(239,68,68,.2);color:var(--red)}
.fx-nudge{display:flex;align-items:center;gap:12px;border-color:var(--gold-b)}
@media (max-width:560px){.fx-nudge{flex-wrap:wrap}.fx-nudge .row{width:100%}}

/* ── tick-off rows (shopping items, checklists): one big target per row ── */
.chk{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 12px;margin-bottom:6px;border-radius:8px;background:var(--bg-1);border:1px solid var(--line);border-left:3px solid var(--line);text-align:left}
.chk:hover{border-color:var(--gold-b)}
.chk .box{width:24px;height:24px;flex-shrink:0;border-radius:6px;border:2px solid var(--text-d);display:inline-flex;align-items:center;justify-content:center}
.chk .t{flex:1;min-width:0;font-weight:600;font-size:14px}
.chk .t small{display:block;font-weight:400;color:var(--text-d);font-size:12px}
.chk .r{font-family:var(--font-cond);font-size:12px;color:var(--text-m);white-space:nowrap}
.chk.found{border-left-color:var(--green)}.chk.found .box{background:var(--green);border-color:var(--green);color:#04120a}
.chk.sub{border-left-color:var(--amber)}.chk.sub .box{border-color:var(--amber);color:var(--amber)}
.chk.na{border-left-color:var(--red);opacity:.8}.chk.na .box{border-color:var(--red);color:var(--red)}
.chk.na .t{text-decoration:line-through;text-decoration-color:var(--text-d)}

/* ── photos ── */
.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.thumb{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;background:var(--bg-3);border:1px solid var(--line);flex-shrink:0;cursor:pointer;display:inline-block}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb img:not([src]){visibility:hidden}
.thumb.q{border-style:dashed;border-color:rgba(245,158,11,.5);cursor:default}
.thumb-q{position:absolute;right:3px;bottom:3px;width:20px;height:20px;border-radius:10px;background:rgba(6,9,26,.75);color:var(--amber);display:flex;align-items:center;justify-content:center}
.thumb.broken::after{content:'—';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-d)}
.thumb-add{width:72px;height:72px;border-radius:8px;border:1px dashed var(--line);color:var(--text-d);display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-family:var(--font-cond);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}
.thumb-add:hover{border-color:var(--gold);color:var(--gold)}

/* ── signature pad (always white paper, both themes) ── */
.sig-wrap{position:relative;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
canvas.sig{display:block;width:100%;height:220px;touch-action:none;cursor:crosshair}
.sig-hint{position:absolute;left:16px;bottom:14px;color:#9aa3b8;font-size:13px;pointer-events:none;border-top:1px dashed #c5cbd8;padding-top:4px;width:calc(100% - 32px)}

/* ── contact buttons, progress steps ── */
.fx-contact{display:flex;gap:8px;flex-wrap:wrap}
.fx-contact .btn{text-decoration:none}
.fx-steps{display:flex;list-style:none;gap:0;margin:4px 0 12px;padding:0;overflow-x:auto;scrollbar-width:none}
.fx-steps li{flex:1;min-width:50px;display:flex;flex-direction:column;align-items:center;gap:5px;position:relative;font-family:var(--font-cond);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-d);text-align:center}
.fx-steps li::before{content:'';position:absolute;top:6px;left:-50%;width:100%;height:2px;background:var(--line);z-index:0}
.fx-steps li:first-child::before{display:none}
.fx-steps li .d{width:14px;height:14px;border-radius:50%;background:var(--bg-2);border:2px solid var(--line);position:relative;z-index:1}
.fx-steps li.done{color:var(--text-m)}.fx-steps li.done .d{background:var(--green);border-color:var(--green)}.fx-steps li.done::before{background:var(--green)}
.fx-steps li .t{hyphens:auto;word-break:break-word}
@media (max-width:420px){.fx-steps li{font-size:9.5px;letter-spacing:.03em}}
.fx-steps li.cur{color:var(--gold-l);font-weight:700}.fx-steps li.cur .d{border-color:var(--gold);background:var(--gold-d);box-shadow:0 0 0 3px var(--gold-d)}.fx-steps li.cur::before{background:var(--green)}

/* ── sticky primary action on phones (sits above the tab bar) ── */
.actbar{display:flex;gap:8px;align-items:center;margin-top:14px}
@media (max-width:768px){
  .actbar{position:sticky;bottom:calc(58px + env(safe-area-inset-bottom,0px));z-index:20;background:var(--bg);padding:10px 0 4px;margin:14px 0 0;border-top:1px solid var(--line-soft)}
  .actbar .btn{flex:1;justify-content:center;min-height:44px}
}

/* ── bottom sheet: openModal(html, 'sheet') — a normal window on desktop, slides up from the bottom on phones ── */
@media (max-width:768px){
  .ov:has(.mod.sheet){align-items:flex-end;padding:0}
  .mod.sheet{max-width:none;border-radius:16px 16px 0 0;border-bottom:0;padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));max-height:92dvh}
}

/* ── per-screen blocks: each stream adds rules only between its own markers ── */
/* [shopping] views-shopping.js */
.shop-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.shop-chips{display:contents}
.shop-filters{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
.shop-filters .fbar{flex:1;min-width:0;margin-bottom:0}
.shop-q{max-width:240px}
.shop-item{width:100%;text-align:left;align-items:flex-start}
.shop-item .item-s{display:block}
.shop-item .pdot{margin-top:6px}
.shop-item .item-r{align-self:center;color:var(--text-d)}
.shop-link{font-family:var(--font-cond);font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--gold-l);padding:2px 0}
.shop-link:hover{text-decoration:underline}
.shop-late{color:var(--red)}
.shop-prog{display:flex;align-items:center;gap:8px;margin-top:8px;min-width:0}
td .shop-prog{margin-top:0}
.shop-prog .pb{display:block;flex:1;min-width:48px;max-width:180px;background:var(--bg-3)}
.shop-prog .pf{display:block}
.shop-prog .pf.done{background:var(--green)}
.shop-prog span:not(.pb):not(.pf){font-family:var(--font-cond);font-size:11.5px;color:var(--text-m);white-space:nowrap}
.shop-sum{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:-2px 0 10px;font-size:12px}
.shop-sum .shop-prog{margin-top:0;flex:0 1 220px}
.shop-sum .shop-prog .pb{max-width:none}
.shop-meta{gap:8px;flex-wrap:wrap}
.shop-notes{white-space:pre-wrap;word-break:break-word}
.shop-none{font-size:13px}
.shop-empty-sub{max-width:360px;margin:6px auto 0;font-size:12.5px;line-height:1.5;color:var(--text-d)}
/* item rows: the box and the name are two separate targets (tick / details) */
.shop-chk{padding:0;gap:0;align-items:stretch}
.shop-tick{flex-shrink:0;width:52px;min-height:56px;display:flex;align-items:center;justify-content:center;border-radius:7px 0 0 7px}
.shop-tick:hover .box{border-color:var(--gold)}
.shop-chk-b{flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:56px;padding:8px 12px 8px 0;text-align:left;border-radius:0 7px 7px 0}
.shop-tick:focus-visible,.shop-chk-b:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.shop-chk .t small{white-space:normal;word-break:break-word}
.shop-chk .t .pill{margin-top:5px}
.chk .t small.shop-oc{font-family:var(--font-cond);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:10.5px;margin-top:2px}
.chk .t small.shop-oc.sub{color:var(--amber)}.chk .t small.shop-oc.na{color:var(--red)}
/* receipts */
.shop-rc{align-items:center}
.shop-rc .thumb{width:52px;height:52px}
.shop-rc .thumb img{color:transparent;font-size:0}
.shop-rc-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.shop-rc-b b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shop-rc-b .dim{font-size:12px}
.shop-rc-n{white-space:pre-wrap;word-break:break-word}
.shop-rc-b .pill{align-self:flex-start}
.shop-rc .money{font-weight:600;white-space:nowrap}
/* sheets */
.shop-sheet-sub{font-size:13px;color:var(--text-m);margin:-6px 0 12px}
.shop-seg{display:flex;width:100%}
.shop-seg button{flex:1;justify-content:center;min-height:40px}
.shop-seg button.on.found{color:var(--green)}.shop-seg button.on.sub{color:var(--amber)}.shop-seg button.on.na{color:var(--red)}
.shop-prev{display:block;width:100%;max-height:200px;object-fit:contain;border-radius:8px;background:var(--bg-3);border:1px solid var(--line)}
/* the drawer foot is already pinned to the bottom of the drawer: the action bar sits in it, full width */
.drawer-f .shop-act{width:100%;margin:0}
.shop-act .sp{flex:1}
.shop-done{display:inline-flex;align-items:center;gap:6px;color:var(--green)}
@media (max-width:768px){
  .shop-filters{flex-direction:column-reverse;align-items:stretch;gap:8px}
  .shop-q{max-width:none}
  .shop-seg button{min-height:44px}
  .drawer-f .shop-act{position:static;padding:0;border-top:0;background:none}
  .shop-act .sp{display:none}
  .shop-act .shop-done{flex:1;justify-content:center;min-height:44px}
  .mod.sheet .ma.shop-ma3{display:grid;grid-template-columns:1fr 1fr}
  .mod.sheet .ma.shop-ma3 .bp{grid-column:1/-1;order:-1;justify-content:center}
  .mod.sheet .ma.shop-ma3 .bg{justify-content:center}
}
/* [/shopping] */

/* [fuel] views-fuel.js */
.fuel-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.fuel-kpis .kpi:not([onclick]){cursor:default}
.fuel-kpis .kpi:not([onclick]):hover{transform:none;border-color:var(--line)}
.fuel-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.fuel-bar .fbar{margin:0;flex:1;min-width:0}
.fuel-q{max-width:260px}
.chip.fuel-warn:not(.on){border-color:rgba(245,158,11,.45);color:var(--amber)}
.fuel-item{width:100%;text-align:left;align-items:center}
.fuel-item .item-s{display:block}
.fuel-item.nc{border-left-color:var(--amber)}
.fuel-item.pend{border-style:dashed;border-left-style:solid;border-left-color:var(--amber)}
.fuel-amt{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:600;font-size:13.5px;white-space:nowrap}
.fuel-rowbtn{padding:0;text-align:left}
.fuel-table tr.fuel-nc td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
.fuel-table tr.fuel-pend td{background:rgba(245,158,11,.04)}
.fuel-notes{white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
.fuel-form .dsec:first-of-type{margin-top:0}
.fuel-form .fta{min-height:0}
.fuel-paidnote{font-size:12px;line-height:1.3;align-self:center}   /* next to Edit when only the accountant may mark paid */
/* Save / Cancel stay in reach while the long sheet scrolls (sticky inside the modal's own scroll box; the negative
   offsets cancel the modal's padding so nothing shows through underneath). */
.fuel-ma{position:sticky;bottom:-24px;z-index:2;background:var(--bg-2);margin:18px -24px -24px;padding:12px 24px 24px;border-top:1px solid var(--line-soft)}
@media (max-width:768px){
  .mod:not(.sheet) .fuel-ma{bottom:-18px;margin:14px -18px -18px;padding:10px 18px 18px}
  .fuel-bar{flex-direction:column;align-items:stretch;gap:8px}
  .fuel-q{max-width:none;min-height:40px}
  .fuel-chips .chip{min-height:34px}
  .fuel-item{min-height:64px}
  .drawer-f .fuel-act{flex:1;justify-content:center;min-height:44px}
  .mod.sheet .fuel-ma{bottom:calc(-18px - env(safe-area-inset-bottom,0px));margin:14px -16px calc(-18px - env(safe-area-inset-bottom,0px));padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px))}
  .mod.sheet .fuel-ma .btn{flex:1;justify-content:center}
}
/* [/fuel] */

/* [shipping] views-shipping.js */
/* list: phone cards are real buttons (keyboard + screen reader), desktop rows have a ref button */
button.item.ship-item{width:100%;text-align:left;font:inherit;color:inherit;align-items:center}
.ship-item .item-s{display:block}
.ship-item .item-r{flex-direction:row;align-items:center;gap:6px;color:var(--text-d)}
.ship-ref{font-family:var(--font-cond);font-weight:700;letter-spacing:.04em;color:var(--teal);min-height:30px;padding:0 2px;margin-right:6px}
.ship-ref:hover{text-decoration:underline}
.ship-q{max-width:280px}
@media (max-width:768px){.fbar .fi.ship-q{max-width:none;width:100%;min-width:0}}
/* detail */
.ship-none{font-size:13px}
.ship-addr{white-space:pre-wrap;font-size:13px;line-height:1.5;margin:10px 0}
.ship-notes{white-space:pre-wrap}
.ship-files{margin-top:10px}
.ship-sig .thumb{width:150px;background:#fff}
.ship-sig .thumb img{object-fit:contain}
.ship-map{display:inline-flex;align-items:center;gap:4px;color:var(--teal);text-decoration:none}
.ship-map:hover{text-decoration:underline}
.drawer-f .ship-act{margin:0;width:100%}
@media (max-width:768px){.drawer-f .ship-act{position:static;padding:0;border:0;background:none}}
/* sheets */
.ship-fs{border:0;padding:0;margin:0 0 12px;min-width:0}
.ship-fs legend{padding:0;float:left;width:100%}
.ship-opt{display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin-top:6px;cursor:pointer;font-size:13.5px;clear:both}
.ship-opt:has(input:checked){border-color:var(--gold);background:var(--gold-d)}
.ship-opt input{margin-top:3px;accent-color:var(--gold);flex-shrink:0;width:16px;height:16px}
.ship-opt small{display:block;color:var(--text-d);font-size:12px;margin-top:2px}
.ship-alt{width:100%;justify-content:center;margin:0 0 14px;white-space:normal}
.ship-scan{min-height:38px;padding:0 12px}
.ship-dthumb{cursor:default}
.ship-x{position:absolute;top:3px;right:3px;width:26px;height:26px;border-radius:13px;background:rgba(6,9,26,.75);color:#fff;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center}
@media (max-width:768px){.ship-scan{min-height:44px;min-width:44px;justify-content:center}.ship-alt{min-height:44px}}
.ship-loaded{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-m);margin-bottom:8px}
.ship-lead{font-size:13px;line-height:1.5;margin:-4px 0 12px}
/* [/shipping] */

/* [concierge] views-concierge.js */

.conc-hint{display:flex;gap:8px;align-items:flex-start;margin:-4px 0 12px;padding:9px 12px;border-radius:8px;background:var(--bg-2);color:var(--text-d);font-size:12.5px;line-height:1.4}
.conc-ven{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conc-form .fr{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (max-width:768px){
  .conc-sel,.conc-take,.conc-edit{min-height:44px}
  .conc-form .fi,.conc-form .fs,.conc-form .fta{font-size:16px;min-height:44px}
}
/* [/concierge] */

/* [movements] views-movements.js */
.mov-ic{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;flex-shrink:0;background:var(--bg-3);color:var(--text-d)}
.mov-ic.in{background:rgba(34,197,94,.12);color:var(--green)}
.mov-ic.out{background:rgba(31,168,201,.12);color:var(--teal)}
.mov-x{opacity:.55}
.mov-sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.mov-q{max-width:260px}
.mov-cut{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mov-note{white-space:normal;margin-top:4px}
.mov-count{margin:10px 2px 0;font-size:11px}
.mov-help{font-size:12px;margin:0 0 8px}
.mov-help:empty{display:none}
.mov-seg{display:flex;width:100%}
.mov-seg button{flex:1;justify-content:center;min-height:40px}
@media (max-width:768px){
  .mov-seg button{min-height:44px}
  .mov-q{max-width:none;width:100%;min-height:44px}
  .mov-item{cursor:default}
}
/* [/movements] */

/* [approvals] */
.appr-open{background:none;border:0;padding:0;margin:0;color:var(--text);font:inherit;font-weight:600;text-align:left;cursor:pointer}
.appr-open:hover{color:var(--gold-l)}
.appr-late{color:var(--red)}
.appr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.appr-item:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media (max-width:768px){
  .appr-item{min-height:56px}
  .appr-fb{min-height:44px}
}
/* [/approvals] */

/* [capture] views-capture.js + views-alerts.js */
/* Photos & crew: yacht picker + Photos | Crew switch */
.cap-bar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.cap-vlab{display:flex;flex-direction:column;min-width:0}
.cap-vlab .fl{margin-bottom:4px}
.cap-vsel{min-width:220px;max-width:340px}
.cap-vone{min-height:38px;display:flex;align-items:center}
.cap-seg button{min-height:32px}
.cap-take{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.cap-big{min-height:48px;padding:10px 22px;font-size:13px}
.cap-day{font-family:var(--font-cond);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-d);margin:12px 0 6px}
.cap-day:first-of-type{margin-top:0}
.cap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}
.cap-fig{margin:0;min-width:0}
.cap-grid .thumb.cap-tile{width:100%;height:auto;aspect-ratio:1/1;padding:0;display:block}
.cap-tile:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.cap-file{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-m)}
.cap-fig figcaption{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-top:4px;font-family:var(--font-cond);font-size:11px;color:var(--text-d);white-space:nowrap;overflow:hidden}
.cap-fig figcaption span:first-child{overflow:hidden;text-overflow:ellipsis}
/* the photo sheet */
.cap-prev{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:-4px 0 12px;padding-bottom:2px}
.cap-prev img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line);flex-shrink:0}
.cap-more{width:64px;height:64px;flex-shrink:0;border-radius:8px;border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--font-cond);color:var(--text-d)}
.cap-kinds{border:0;padding:0;margin:0 0 12px}
.cap-opt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin-top:6px;cursor:pointer;min-height:44px}
.cap-opt:has(input:checked){border-color:var(--gold);background:var(--gold-d)}
.cap-opt input{margin-top:3px;accent-color:var(--gold);width:16px;height:16px;flex-shrink:0}
.cap-opt b{display:block;font-size:13.5px}
.cap-opt small{display:block;color:var(--text-d);font-size:12px}
.cap-gps{min-height:36px}
/* crew on board */
.crew-sec .dsec{margin-top:4px}
.crew-sec + .crew-sec .dsec{margin-top:14px}
.crew-list{list-style:none;margin:0;padding:0}
.crew-row{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line-soft);min-height:48px}
.crew-row:last-child{border-bottom:0}
.crew-m{flex:1;min-width:0}
.crew-n{font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crew-r{font-size:12px;color:var(--text-d)}
.crew-d{font-family:var(--font-cond);font-size:12px;color:var(--text-m);white-space:nowrap}
.crew-none{font-size:13px;padding:4px 0}
.crew-off{margin-top:12px}
.crew-off summary,.al-snz summary{cursor:pointer;list-style:none;font-family:var(--font-cond);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--text-d);padding:8px 0;min-height:40px;display:flex;align-items:center;gap:6px}
.crew-off summary::-webkit-details-marker,.al-snz summary::-webkit-details-marker{display:none}
.crew-off summary .ic,.al-snz summary .ic{transition:transform .15s}
.crew-off[open] summary .ic,.al-snz[open] summary .ic{transform:rotate(90deg)}
.crew-off summary:hover,.al-snz summary:hover{color:var(--text)}
.crew-note{font-size:12.5px}
/* alerts */
.al-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.al-sec{margin-bottom:14px}
.al-sec .dsec{margin-top:4px}
.al-none{font-size:13px;padding:6px 0 4px}
.al-row{display:flex;align-items:stretch;background:var(--bg-1);border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:8px;margin-bottom:8px;transition:border-color .14s,background .14s}
.al-row:hover{border-color:var(--gold-b)}
.al-row.sev-critical{border-left-color:var(--red)}
.al-row.sev-warning{border-left-color:var(--amber)}
.al-row.unread{background:var(--bg-2)}
.al-main{flex:1;min-width:0;display:flex;gap:10px;align-items:flex-start;padding:11px 4px 11px 12px;text-align:left;min-height:56px;border-radius:8px 0 0 8px}
.al-dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0;background:transparent;border:1.5px solid var(--text-d)}
.al-row.unread .al-dot{border-color:transparent;background:var(--teal)}
.al-row.unread.sev-critical .al-dot{background:var(--red)}
.al-row.unread.sev-warning .al-dot{background:var(--amber)}
.al-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.al-t{font-size:13.5px;font-weight:500;color:var(--text-m);overflow-wrap:anywhere}
.al-row.unread .al-t{font-weight:700;color:var(--text)}
.al-s{font-size:12.5px;color:var(--text-m);overflow-wrap:anywhere}
.al-m{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:3px;font-family:var(--font-cond);font-size:11px;color:var(--text-d)}
.al-act{align-self:center;width:44px;height:44px;flex-shrink:0;margin-right:4px}
.al-moreall{margin-top:2px}
.al-body{font-size:13.5px;line-height:1.55;color:var(--text-m);margin:0 0 12px;white-space:pre-wrap;overflow-wrap:anywhere}
.al-acts{display:flex;flex-direction:column;gap:6px}
.al-acts .btn{justify-content:flex-start;width:100%;min-height:44px}
.al-lbl{margin:8px 0 0}
@media (max-width:768px){
  .cap-bar{align-items:stretch}
  .cap-vlab{flex:1 1 100%}
  .cap-vsel{max-width:none;min-width:0;width:100%;min-height:44px}
  .cap-seg{display:flex;width:100%}
  .cap-seg button{flex:1;justify-content:center;min-height:42px}
  .cap-big{width:100%;justify-content:center;min-height:52px}
  .cap-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
}
/* [/capture] */

/* [contacts] driver contact access (views-transport.js) */
.trc{padding:2px 0 4px}
.trc .dsec{margin-top:0}
.trc-who{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:2px 0 8px;font-size:14px}
.trc-who .dim{font-size:12px}
.trc-note{font-size:12.5px;margin:2px 0 8px}
.trc-yacht{display:flex}
.trc-more{gap:8px;flex-wrap:wrap;margin-top:8px}
.trc-for{font-size:12.5px;margin:-4px 0 12px}
.trc-p{padding:10px 0;border-top:1px solid var(--line-soft)}
.trc-p:first-of-type{border-top:0}
.trc-pn{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:8px;font-size:14px}
.trc-pn .dim{font-size:12.5px}
.trc-pn .pill{margin-left:auto}
.trc-none{font-size:12.5px}
/* phones: the call / WhatsApp buttons are the first, biggest thing — full-width thumb targets */
@media (max-width:768px){
  .trc .fx-contact,.trc-sheet .fx-contact{gap:8px}
  .trc .fx-contact .btn,.trc-sheet .fx-contact .btn{flex:1 1 0;min-width:0;min-height:48px;justify-content:center;font-size:15px}
  .trc-yacht .btn{flex:1;min-height:48px;justify-content:center;font-size:15px}
}

/* [/contacts] */

/* [/pyramid] Pyramid v2 B14: read-only day cards, week heat map, passage + tender chips (shared with Movements and the clearance case) */
.pyra-card{background:var(--bg-2);border:1px solid var(--line);border-left:4px solid var(--pyra-c,var(--line));border-radius:var(--radius);padding:12px 14px;margin-bottom:10px}
.pyra-hd{display:flex;align-items:center;gap:10px}
.pyra-nm{flex:1;min-width:0}.pyra-nm b{font-family:var(--font-display);font-size:15px;color:var(--text)}
.pyra-meta{font-size:12px;color:var(--text-d);display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pyra-cnt{font-family:var(--font-cond);font-size:12px;font-weight:700;color:var(--text-m);background:var(--bg-3);border-radius:10px;padding:2px 9px}
.pyra-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;flex-shrink:0;font-family:var(--font-cond);font-size:13px;font-weight:700;background:var(--bg-4);color:var(--text-m);border:1px solid var(--line)}
.pyra-badge.on{background:var(--pyra-c);border-color:var(--pyra-c);color:#fff;text-shadow:0 0 2px rgba(0,0,0,.55)}
.pyra-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:8px 0 2px}
.pyra-pass{display:inline-flex;align-items:center;gap:4px;border-radius:20px;padding:2px 9px;font-family:var(--font-cond);font-size:11px;font-weight:700;letter-spacing:.05em;border:1px solid transparent}
.pyra-pass.pyra-ok{background:rgba(34,197,94,.12);color:var(--green);border-color:rgba(34,197,94,.3)}
.pyra-pass.pyra-check{background:rgba(245,158,11,.12);color:var(--amber);border-color:rgba(245,158,11,.3)}
.pyra-pass.pyra-blocked{background:rgba(239,68,68,.12);color:var(--red);border-color:rgba(239,68,68,.3)}
.pyra-pass.pyra-needs_opening{background:rgba(59,130,246,.14);color:#60a5fa;border-color:rgba(59,130,246,.35)}
.pyra-haz{display:inline-flex;align-items:center;gap:4px;max-width:100%;border-radius:20px;padding:2px 9px;font-family:var(--font-cond);font-size:11px;font-weight:700;letter-spacing:.05em;border:1px solid transparent}
.pyra-haz-info{background:rgba(100,116,139,.15);color:var(--text-d);border-color:rgba(100,116,139,.3)}.pyra-haz-caution{background:rgba(245,158,11,.12);color:var(--amber);border-color:rgba(245,158,11,.3)}.pyra-haz-danger{background:rgba(239,68,68,.12);color:var(--red);border-color:rgba(239,68,68,.3)}
.pyra-hlazy{display:inline-flex;gap:6px;flex-wrap:wrap}
.pyra-unc{font-weight:500;opacity:.8}
.pyra-why{font-size:11.5px;color:var(--text-d);margin:3px 0 2px;flex-basis:100%}
.pyra-tchip{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap;background:var(--bg-3);border:1px solid var(--line);border-radius:8px;padding:2px 8px;font-size:11.5px;color:var(--text-m)}
.pyra-tname{font-weight:700;color:var(--text)}
.pyra-tbadge{display:inline-block;border-radius:5px;padding:1px 7px;font-family:var(--font-cond);font-size:10.5px;font-weight:700;letter-spacing:.06em;border:1px solid var(--gold-b);background:var(--gold-d);color:var(--gold)}
.pyra-tbadge.mer{border-color:rgba(31,168,201,.35);background:rgba(31,168,201,.1);color:var(--teal)}
.pyra-hint{font-size:11px;color:var(--amber);background:rgba(245,158,11,.08);border-radius:10px;padding:1px 8px}
.pyra-item{display:flex;gap:9px;align-items:flex-start;padding:7px 0;border-top:1px solid var(--line)}
.pyra-item.fin .pyra-ttl{text-decoration:line-through;opacity:.6}
.pyra-dot{width:11px;height:11px;border-radius:50%;margin-top:4px;flex-shrink:0;border:2px solid var(--text-d);box-sizing:border-box}
.pyra-dot.doing{border-color:var(--amber);background:linear-gradient(90deg,var(--amber) 50%,transparent 50%)}.pyra-dot.done{border-color:var(--green);background:var(--green)}
.pyra-it{min-width:0;flex:1}.pyra-ttl{font-size:14px;color:var(--text);overflow-wrap:anywhere}
.pyra-sub{display:flex;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--text-d)}
.pyra-dept{color:var(--teal)}.pyra-dept.pyra-ship{color:var(--gold)}.pyra-hi{color:var(--red);font-weight:700}
.pyra-none{font-size:12.5px;color:var(--text-d);padding:8px 0 2px;border-top:1px solid var(--line)}
.pyra-carried{padding:3px 0}
.pyra-heat-w{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-2)}
.pyra-heat{border-collapse:separate;border-spacing:3px;width:100%;min-width:360px}
.pyra-heat th{font-family:var(--font-cond);font-size:11px;font-weight:600;color:var(--text-m);padding:4px 2px;text-align:center}
.pyra-heat th small{display:block;font-size:12px;color:var(--text)}
.pyra-heat th.pyra-today{color:var(--gold)}
.pyra-heat th.pyra-yh{text-align:left;position:sticky;left:0;background:var(--bg-2);z-index:1;white-space:nowrap;max-width:46vw;overflow:hidden;text-overflow:ellipsis;padding-right:8px}
.pyra-yn{margin-left:6px;font-size:12.5px;color:var(--text)}
.pyra-heat td{position:relative;min-width:38px;height:38px;text-align:center;border-radius:6px;font-family:var(--font-cond);font-size:13px;font-weight:700;color:var(--text);background:var(--bg-3)}
.pyra-heat td.pyra-h0{color:var(--text-d)}
.pyra-heat td.pyra-h1{background:rgba(31,168,201,.18)}.pyra-heat td.pyra-h2{background:rgba(31,168,201,.36)}
.pyra-heat td.pyra-h3{background:rgba(31,168,201,.58)}.pyra-heat td.pyra-h4{background:rgba(31,168,201,.82);color:#fff}
.pyra-hp{position:absolute;top:1px;right:3px;font-size:10px;font-weight:700}.pyra-hp.blocked{color:var(--red)}.pyra-hp.check{color:var(--amber)}.pyra-hp.needs_opening{color:#60a5fa}
.pyra-leg{font-size:11.5px;margin-top:8px}
.mov-pass .pyra-lazy{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}

/* Marina requests (agent/js/views-marina.js) */
.mrq-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:10px}.mrq-kpi{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column}
.mrq-kpi b{font-size:20px;font-family:var(--font-display)}.mrq-kpi span{font-size:11px;color:var(--text-d)}
.mrq-row{cursor:pointer;align-items:flex-start;gap:10px}.mrq-bl{color:#ef4444;font-weight:700;font-size:11.5px}.mrq-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}
.mrq-haz{display:inline-block;border-radius:9px;padding:0 8px;font-size:11px;background:rgba(245,158,11,.16);color:#f59e0b}.mrq-haz.bad{background:rgba(239,68,68,.16);color:#ef4444}
.mrq-unv{display:inline-block;border-radius:9px;padding:0 7px;font-size:10.5px;background:rgba(245,158,11,.16);color:#f59e0b}.mrq-crew{display:inline-block;border-radius:9px;padding:0 7px;font-size:10.5px;background:rgba(59,130,246,.16);color:#60a5fa}
.mrq-link{margin-left:4px;font-size:12px}.mrq-quick,.mrq-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.mrq-say{white-space:pre-wrap;font-size:12.5px;background:rgba(255,255,255,.04);border-radius:8px;padding:6px 8px;margin-top:4px}
.mrq-linkline{font-size:12px;background:rgba(59,130,246,.12);border-radius:8px;padding:6px 10px;margin-bottom:6px}.mrq-draft{border:1px solid var(--line);border-radius:8px;padding:8px;margin:6px 0}
