/* ============================================================
   MARKETPLACE PORTAL — v2 (Oct 2026)
   Agent portal, admin, traveller trip page, partner sign-up.
   Builds on style.css tokens. No new brand colours or fonts.
   ============================================================ */

body.portal{background:var(--sand-50);min-height:100vh;display:flex;flex-direction:column;}
.portal-main{flex:1;padding-block:clamp(1.25rem,1rem + 1.5vw,2.5rem) 5rem;}
.portal-container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:var(--gutter);}
.portal .ico{width:1.15em;height:1.15em;flex:none;vertical-align:-.18em;}
.portal .ico-sm{width:1em;height:1em;}
.portal .ico-lg{width:1.6em;height:1.6em;}
.portal .ico-xl{width:3rem;height:3rem;color:var(--ocean-500);}
.ico-ok{color:var(--tea-600);} .ico-no{color:var(--terra-600);}

/* ---------- Header ---------- */
.portal-header{background:linear-gradient(120deg,var(--ocean-950),var(--ocean-900) 60%,var(--ocean-700));color:var(--sand-50);position:sticky;top:0;z-index:30;box-shadow:0 8px 24px -16px rgba(7,29,36,.6);}
.portal-bar{max-width:1200px;margin-inline:auto;padding:.65rem var(--gutter);display:flex;align-items:center;gap:.6rem 1.1rem;flex-wrap:wrap;}
.portal-header .brand{color:var(--sand-50);}
.portal-header .brand .island{fill:var(--sand-50);}
.portal-header .brand .dot-end{stroke:var(--ocean-900);}
.portal-area{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--saffron-400);border:1px solid rgba(242,183,95,.35);padding:.25rem .6rem;border-radius:var(--radius-pill);}
.portal-nav{margin-left:auto;}
.portal-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.2rem;}
.portal-nav a{display:inline-flex;align-items:center;gap:.45rem;min-height:40px;padding:.4rem .85rem;border-radius:var(--radius-pill);color:rgba(251,248,242,.88);text-decoration:none;font-size:.9rem;font-weight:500;transition:background .2s,color .2s;}
.portal-nav a:hover{background:rgba(251,248,242,.1);color:#fff;}
.portal-nav a.active{background:var(--saffron-500);color:var(--ink-900);}
.portal a:focus-visible,.portal button:focus-visible,.portal input:focus-visible,.portal select:focus-visible,.portal textarea:focus-visible,.portal summary:focus-visible{outline:3px solid var(--saffron-500);outline-offset:2px;}
@media (max-width:820px){
  .portal-nav{margin-left:0;width:calc(100% + 2 * var(--gutter));margin-inline:calc(-1 * var(--gutter));overflow-x:auto;scrollbar-width:none;padding-inline:var(--gutter);}
  .portal-nav::-webkit-scrollbar{display:none;}
  .portal-nav ul{flex-wrap:nowrap;}
  .portal-nav a{white-space:nowrap;font-size:.86rem;padding:.35rem .75rem;}
}

/* ---------- Footer ---------- */
.portal-footer{border-top:1px solid var(--border);padding-block:1.4rem;font-size:.86rem;color:var(--text-muted);}
.portal-footer .portal-container{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;}
.portal-footer a{color:inherit;}

/* ---------- Type ---------- */
.portal h1{font-family:var(--font-display);font-weight:400;font-size:clamp(2rem,1.55rem + 1.8vw,3.1rem);line-height:1.06;letter-spacing:-.01em;margin:.2rem 0 .6rem;}
.portal h1 em{color:var(--terra-600);}
.portal h2{font-family:var(--font-display);font-weight:400;font-size:clamp(1.45rem,1.25rem + .8vw,1.95rem);line-height:1.15;margin:0 0 .8rem;display:flex;align-items:center;gap:.5rem;}
.portal h2 .ico{color:var(--ocean-500);width:.9em;height:.9em;}
.portal h3{font-size:1.06rem;margin:0 0 .5rem;display:flex;align-items:center;gap:.45rem;}
.portal h4{font-size:.95rem;margin:1rem 0 .35rem;}
.page-intro{max-width:720px;color:var(--text-muted);margin:0 0 1.5rem;font-size:1.05rem;}
.eyebrow-sm{display:inline-block;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-accent);font-weight:600;}
.muted{color:var(--text-muted);} .mt-0{margin-top:0;}
.help{font-size:.88rem;color:var(--text-muted);margin:.15rem 0 0;line-height:1.5;}
.opt{font-weight:400;color:var(--text-muted);font-size:.8rem;}
.back-link{display:inline-flex;align-items:center;gap:.4rem;color:var(--ocean-700);font-weight:600;text-decoration:none;margin-bottom:1rem;font-size:.95rem;}
.back-link:hover{text-decoration:underline;}
.ref-pill{display:inline-block;vertical-align:middle;font-family:var(--font-body);font-size:.85rem;letter-spacing:.06em;font-weight:600;background:var(--saffron-100);color:#7A4E10;padding:.2em .7em;border-radius:var(--radius-pill);margin-left:.3rem;}

/* ---------- Page hero band ---------- */
.p-hero{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:clamp(1.2rem,1rem + 1.5vw,2rem);margin-bottom:1.5rem;overflow:hidden;box-shadow:var(--shadow-soft);}
.p-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(233,162,59,.18),transparent 70%);pointer-events:none;}
.p-hero.dark{background:linear-gradient(135deg,var(--ocean-900),var(--ocean-700));color:var(--sand-50);border:0;}
.p-hero.dark .eyebrow-sm{color:var(--saffron-400);} .p-hero.dark .page-intro,.p-hero.dark .help{color:rgba(251,248,242,.8);}
.p-hero-top{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;flex-wrap:wrap;}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.7rem;margin-top:1.1rem;}
.fact{display:flex;gap:.7rem;align-items:flex-start;background:var(--sand-50);border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem;}
.fact .ico{color:var(--ocean-500);width:1.3rem;height:1.3rem;margin-top:.15rem;}
.fact span{display:flex;flex-direction:column;font-weight:600;font-size:.95rem;line-height:1.35;min-width:0;overflow-wrap:anywhere;}
.fact small{font-weight:500;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);}

/* ---------- Panels & layout ---------- */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:clamp(1.1rem,.9rem + 1vw,1.7rem);box-shadow:var(--shadow-soft);margin-bottom:1.25rem;}
.panel > :last-child{margin-bottom:0;}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;}
.panel-head h2,.panel-head h3{margin:0;}
.cols{display:grid;gap:1.25rem;grid-template-columns:minmax(0,1fr);align-items:start;}
@media (min-width:980px){.cols{grid-template-columns:minmax(0,1fr) 330px;}}
.side{display:grid;gap:1.25rem;}
.narrow{max-width:500px;margin-inline:auto;}
.callout{display:flex;gap:.9rem;padding:1rem 1.1rem;border-radius:12px;margin-top:1rem;}
.callout-success{background:#E8F2EB;color:var(--ink-900);} .callout-success > .ico{color:var(--tea-600);}
.callout h3{margin:0 0 .3rem;}
.privacy-note{display:flex;gap:.45rem;align-items:flex-start;margin-top:1rem;}
.empty-state{text-align:center;padding:2.5rem 1.5rem;}
.empty-state p{color:var(--text-muted);max-width:420px;margin-inline:auto;}

details.trip-panel > summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;}
details.trip-panel > summary::-webkit-details-marker{display:none;}
details.trip-panel > summary h2{margin:0;}
details.trip-panel > summary::after{content:"Show";font-size:.85rem;font-weight:600;color:var(--ocean-700);}
details.trip-panel[open] > summary::after{content:"Hide";}
details.trip-panel[open] > summary{margin-bottom:1rem;}

.decision{display:flex;gap:1.2rem;justify-content:space-between;align-items:center;flex-wrap:wrap;border-left:4px solid var(--saffron-500);}
.decision h2{margin-bottom:.2rem;}
.decision-actions{display:flex;gap:.8rem;align-items:flex-start;flex-wrap:wrap;}
.decision-actions .disclose{margin-top:0;}

/* ---------- Stats ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.9rem;margin-bottom:1.5rem;}
.stat{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1rem 1.1rem 1rem;box-shadow:var(--shadow-soft);text-decoration:none;color:inherit;display:block;transition:transform .2s var(--ease),box-shadow .2s;}
a.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);}
.stat .ico{position:absolute;right:1rem;top:1rem;color:var(--ocean-500);opacity:.7;}
.stat strong{display:block;font-family:var(--font-display);font-size:2.4rem;font-weight:400;line-height:1;color:var(--ocean-900);margin-top:.2rem;}
.stat span{font-size:.84rem;color:var(--text-muted);display:block;margin-top:.35rem;line-height:1.35;}
.stat.hot{background:linear-gradient(135deg,var(--saffron-100),#fff);border-color:#F1D3A3;}

/* ---------- Tabs / filters ---------- */
.tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem;}
.tabs a{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .9rem;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--ink-900);text-decoration:none;font-size:.88rem;font-weight:600;}
.tabs a .count{background:var(--sand-100);border-radius:var(--radius-pill);padding:0 .5em;font-size:.78rem;}
.tabs a.active{background:var(--ocean-900);border-color:var(--ocean-900);color:var(--sand-50);}
.tabs a.active .count{background:rgba(255,255,255,.15);}

/* ---------- Tables ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:14px;background:var(--surface);}
table.data{width:100%;border-collapse:collapse;font-size:.93rem;}
table.data th,table.data td{text-align:left;padding:.75rem .95rem;border-bottom:1px solid var(--border);vertical-align:top;}
table.data th{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);background:var(--sand-100);white-space:nowrap;font-weight:600;}
table.data tbody tr:hover{background:#FDFBF7;}
table.data tr:last-child td{border-bottom:0;}
table.data a{color:var(--ocean-700);font-weight:600;}
.empty{padding:2rem;text-align:center;color:var(--text-muted);}

/* ---------- Badges ---------- */
.badge{display:inline-flex;align-items:center;gap:.3em;padding:.22em .75em;border-radius:var(--radius-pill);font-size:.76rem;font-weight:600;white-space:nowrap;background:var(--sand-100);color:var(--ink-900);border:1px solid var(--border);}
.badge::before{content:"";width:.5em;height:.5em;border-radius:50%;background:currentColor;opacity:.75;}
.badge-new,.badge-offered,.badge-pending,.badge-submitted{background:var(--saffron-100);border-color:#F1D3A3;color:#7A4E10;}
.badge-sent_to_agents,.badge-matching,.badge-quoted{background:var(--ocean-100);border-color:#BFD4D6;color:var(--ocean-700);}
.badge-quotes_received,.badge-accepted,.badge-approved,.badge-won{background:#E5F0E8;border-color:#C5DCCB;color:var(--tea-600);}
.badge-closed,.badge-expired,.badge-declined,.badge-lost,.badge-superseded,.badge-revoked,.badge-withdrawn{background:#EFEDEA;color:var(--ink-600);}
.badge-rejected,.badge-suspended{background:#F9E3E1;border-color:#EFC2BE;color:var(--error);}
.badge-verified{background:var(--tea-600);color:#fff;border-color:var(--tea-600);}
.badge-verified::before{content:"✓";width:auto;height:auto;background:none;opacity:1;font-size:.9em;}

/* ---------- Detail list ---------- */
.detail-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.9rem 1.5rem;margin:0;}
.detail-list div{min-width:0;}
.detail-list dt{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);}
.detail-list dd{margin:.15rem 0 0;font-weight:500;overflow-wrap:anywhere;}
.notes{margin-top:1rem;padding:1rem 1.1rem;background:var(--sand-100);border-radius:12px;}
.notes h4{margin-top:0;}

/* ---------- Forms ---------- */
.portal input:not([type]),.portal input[type=password],.portal input[type=url]{width:100%;min-height:50px;padding:.8rem 1rem;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1rem;font-family:inherit;}
.portal input:not([type]):focus,.portal input[type=password]:focus,.portal input[type=url]:focus{border-color:var(--ocean-500);outline:none;box-shadow:0 0 0 3px rgba(42,107,120,.18);}
.portal input,.portal select,.portal textarea{border-radius:10px!important;}
.portal input:disabled{opacity:.65;}
.portal .field input:not([type=checkbox]):not([type=radio]),.portal .field select,.portal .field textarea{width:100%;}
.form-stack{display:grid;gap:1rem;}
.form-actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin-top:1.2rem;}
.inline-form{display:inline;}
fieldset.plain{border:0;padding:0;margin:0 0 1.2rem;min-width:0;}
fieldset.plain legend{font-weight:600;font-size:.9rem;padding:0;margin-bottom:.6rem;display:flex;align-items:center;gap:.4rem;}
.field-error{display:flex;align-items:center;gap:.4rem;color:var(--error);font-size:.88rem;font-weight:600;margin:.35rem 0 .2rem;}
[aria-invalid=true]{border-color:var(--error)!important;}
.error-summary{border:2px solid var(--error);background:#FDF3F2;border-radius:14px;padding:1rem 1.2rem;margin-bottom:1.2rem;}
.error-summary h3{color:var(--error);margin:0 0 .4rem;}
.error-summary ul{margin:0;padding-left:1.2rem;display:grid;gap:.25rem;}
.error-summary a{color:var(--error);font-weight:700;}
.btn-danger{--btn-fg:var(--error);--btn-bd:rgba(179,38,30,.4);}
.btn-danger:hover{--btn-bg:var(--error);--btn-fg:#fff;--btn-bd:var(--error);}
.btn .ico{width:1.1em;height:1.1em;}
.link-btn{background:none;border:0;padding:0;color:var(--ocean-700);font-weight:600;text-decoration:underline;cursor:pointer;font:inherit;}
.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--ink-600);cursor:pointer;flex:none;transition:background .2s,color .2s,border-color .2s;}
.icon-btn:hover{background:#F9E3E1;color:var(--error);border-color:#EFC2BE;}
.chip-btn{display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;border:1px dashed var(--ocean-500);background:transparent;color:var(--ocean-700);border-radius:var(--radius-pill);padding:.35rem .8rem;font:inherit;font-size:.84rem;font-weight:600;cursor:pointer;min-height:34px;}
.chip-btn:hover{background:var(--ocean-100);border-style:solid;}
details.disclose{border:1px solid var(--border);border-radius:10px;padding:.55rem .9rem;margin-top:.8rem;background:var(--surface);}
details.disclose summary{cursor:pointer;font-weight:600;min-height:32px;display:flex;align-items:center;color:var(--ocean-700);}

/* ---------- Quote builder ---------- */
.quote-builder{counter-reset:qb;}
.qb-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin:1.5rem 0 1rem;}
.qb-head h2{margin-bottom:.1rem;}
.tpl-picker{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.7rem .9rem;min-width:min(100%,300px);}
.tpl-picker .row{display:flex;gap:.5rem;margin-top:.35rem;}
.tpl-picker select{min-height:42px;flex:1;}
.qb-section{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.3rem clamp(1rem,.8rem + 1vw,1.6rem) 1.4rem;margin-bottom:1rem;box-shadow:var(--shadow-soft);scroll-margin-top:90px;}
.qb-section.has-error{border-color:var(--error);box-shadow:0 0 0 3px rgba(179,38,30,.1);}
.qb-section > header{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem;}
.qb-section > header h3{margin:0;font-family:var(--font-display);font-weight:400;font-size:1.45rem;}
.qb-section > header .help{margin-left:auto;}
.qb-num{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:var(--ocean-900);color:var(--sand-50);font-weight:700;font-size:.9rem;flex:none;}
.qb-section.has-error .qb-num{background:var(--error);}
.qb-section .field + .field{margin-top:.9rem;}

/* Day timeline */
.days{list-style:none;margin:0 0 .8rem;padding:0;position:relative;display:grid;gap:.8rem;}
.days::before{content:"";position:absolute;left:1.55rem;top:1.2rem;bottom:1.2rem;width:2px;background:repeating-linear-gradient(var(--saffron-500) 0 6px,transparent 6px 11px);}
.day{position:relative;display:grid;grid-template-columns:3.2rem minmax(0,1fr) auto;gap:.7rem;align-items:start;}
.day-num{position:relative;z-index:1;display:grid;place-items:center;text-align:center;width:3.1rem;height:3.1rem;border-radius:50%;background:var(--sand-50);border:2px solid var(--saffron-500);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;line-height:1;color:var(--ink-600);}
.day-num b{display:block;font-family:var(--font-display);font-size:1.25rem;font-weight:400;color:var(--ocean-900);letter-spacing:0;margin-top:.1rem;}
.day-fields{display:grid;gap:.6rem;grid-template-columns:repeat(2,minmax(0,1fr));background:var(--sand-50);border:1px solid var(--border);border-radius:12px;padding:.7rem .8rem;}
.day-fields .field.full{grid-column:1/-1;}
.day-fields .field + .field{margin-top:0!important;}
@media (min-width:1100px){
  .day-fields{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);}
  .day-fields .field.full{grid-column:auto;}
  .day-fields .field.f-where{order:-2;} .day-fields .field.f-plan{order:-1;} .day-fields .field.f-stay{order:0;}
  .day + .day .day-fields label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  .day + .day .day-num{margin-top:0;}
  .day:first-child .icon-btn{margin-top:1.55rem;}
  .day-fields textarea{min-height:44px!important;height:44px;resize:vertical;}
  .days{gap:.55rem;}
}
.day-fields label{font-size:.78rem!important;display:flex;align-items:center;gap:.3rem;}
.day-fields textarea{min-height:64px!important;}
.day-fields input,.day-fields textarea{min-height:44px!important;padding:.6rem .8rem!important;font-size:.95rem!important;}
@media (max-width:620px){.day{grid-template-columns:2.6rem minmax(0,1fr);}.day-num{width:2.6rem;height:2.6rem;}.days::before{left:1.25rem;}.day .icon-btn{grid-column:2;justify-self:end;margin-top:-.4rem;}.day-fields{grid-template-columns:1fr;}}

/* Included / not included */
.inc-grid{display:grid;gap:1.4rem;grid-template-columns:minmax(0,1fr);}
@media (min-width:760px){.inc-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
.tick-list{display:grid;gap:.45rem;margin-bottom:.8rem;}
.tick{position:relative;display:flex;gap:.6rem;align-items:flex-start;padding:.55rem .75rem;border:1.5px solid var(--border);border-radius:10px;cursor:pointer;font-size:.92rem;line-height:1.4;background:var(--surface);transition:border-color .15s,background .15s;}
.tick input{position:absolute;opacity:0;pointer-events:none;}
.tick span{display:flex;gap:.6rem;align-items:flex-start;}
.tick span::before{content:"";flex:none;display:grid;place-items:center;width:1.25rem;height:1.25rem;margin-top:.05rem;border-radius:6px;border:1.5px solid var(--sand-200);background:#fff;font-size:.78rem;font-weight:700;color:#fff;}
.tick:hover{border-color:var(--ocean-500);}
.tick:has(input:checked){border-color:var(--tea-600);background:#F1F7F3;}
.tick input:checked + span::before{content:"✓";background:var(--tea-600);border-color:var(--tea-600);}
.tick-no:has(input:checked){border-color:var(--terra-600);background:#FBF1EE;}
.tick-no input:checked + span::before{content:"✕";background:var(--terra-600);border-color:var(--terra-600);}
.tick:has(input:focus-visible){outline:3px solid var(--saffron-500);outline-offset:2px;}

/* Price */
.price-head{display:flex;gap:1rem 1.5rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1rem;}
.price-head .field{width:160px;}
.seg{display:inline-flex;margin:0 0 3px!important;border:1.5px solid var(--border);border-radius:var(--radius-pill);padding:3px;background:var(--sand-50);}
.seg legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
.seg label{position:relative;cursor:pointer;}
.seg input{position:absolute;opacity:0;}
.seg span{display:block;padding:.55rem 1rem;border-radius:var(--radius-pill);font-size:.9rem;font-weight:600;color:var(--ink-600);}
.seg input:checked + span{background:var(--ocean-900);color:var(--sand-50);}
.seg input:focus-visible + span{outline:3px solid var(--saffron-500);}
.price-lines{display:grid;gap:.5rem;}
.price-line{display:grid;grid-template-columns:minmax(0,1fr) 150px 40px;gap:.5rem;align-items:center;}
.price-line input{min-height:46px!important;}
.price-line-head{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);}
.price-total{display:flex;justify-content:space-between;align-items:baseline;padding:.9rem 1rem;margin-top:.9rem;border-radius:12px;background:var(--ocean-900);color:var(--sand-50);}
.price-total strong{font-family:var(--font-display);font-weight:400;font-size:1.8rem;}
[data-add-line],[data-add-day]{margin-top:.6rem;}
@media (max-width:520px){.price-line{grid-template-columns:minmax(0,1fr) 110px 40px;}}

/* Presets */
.preset-grid{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:.8rem;}
.preset{position:relative;cursor:pointer;}
.preset input{position:absolute;opacity:0;}
.preset > span{display:flex;flex-direction:column;gap:.25rem;height:100%;padding:.85rem 1rem;border:1.5px solid var(--border);border-radius:12px;background:var(--surface);transition:border-color .15s,background .15s;}
.preset strong{font-size:.95rem;}
.preset small{font-size:.82rem;color:var(--text-muted);line-height:1.45;}
.preset:hover > span{border-color:var(--ocean-500);}
.preset input:checked + span{border-color:var(--ocean-900);background:var(--ocean-100);box-shadow:inset 0 0 0 1px var(--ocean-900);}
.preset input:focus-visible + span{outline:3px solid var(--saffron-500);outline-offset:2px;}

/* Validity & save */
.valid-row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;}
.valid-row .field{width:220px;}
.quick{display:flex;gap:.4rem;flex-wrap:wrap;padding-bottom:.4rem;}
.save-tpl{margin-top:1.2rem;padding:1rem;border-radius:12px;background:var(--sand-50);border:1px dashed var(--sand-200);display:grid;gap:.7rem;}
.save-tpl .field{max-width:380px;}

/* Sticky summary + mobile bar */
.sticky-summary{position:sticky;top:90px;}
.sum-list{margin:0 0 1rem;display:grid;gap:.55rem;}
.sum-list div{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px dashed var(--border);padding-bottom:.45rem;}
.sum-list dt{color:var(--text-muted);font-size:.88rem;}
.sum-list dd{margin:0;font-weight:700;text-align:right;}
.qb-nav{list-style:none;margin:0;padding:0;counter-reset:n;display:grid;gap:.2rem;}
.qb-nav li{counter-increment:n;}
.qb-nav a{display:flex;align-items:center;gap:.6rem;padding:.45rem .5rem;border-radius:8px;color:var(--ink-900);text-decoration:none;font-size:.92rem;}
.qb-nav a::before{content:counter(n);display:grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--sand-100);font-size:.75rem;font-weight:700;}
.qb-nav a:hover{background:var(--sand-100);}
.qb-nav li.err a{color:var(--error);font-weight:700;}
.qb-nav li.err a::before{background:var(--error);color:#fff;content:"!";}
.mobile-bar{display:none;}
@media (max-width:979px){
  .sticky-summary{display:none;}
  .mobile-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:25;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem var(--gutter) calc(.7rem + env(safe-area-inset-bottom));background:var(--ocean-900);color:var(--sand-50);box-shadow:0 -10px 30px -14px rgba(7,29,36,.6);}
  .mobile-bar strong{font-family:var(--font-display);font-weight:400;font-size:1.3rem;margin-left:.3rem;}
  body.portal:has(.mobile-bar) .portal-footer{padding-bottom:5rem;}
}

/* ---------- Lead cards (dashboards) ---------- */
.card-list{display:grid;gap:.8rem;}
.lead-card{display:grid;gap:.45rem;padding:1rem 1.2rem;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:inherit;text-decoration:none;transition:border-color .2s,box-shadow .2s,transform .2s var(--ease);}
a.lead-card:hover{border-color:var(--ocean-500);box-shadow:var(--shadow-soft);transform:translateY(-1px);}
.lead-card .top{display:flex;justify-content:space-between;gap:1rem;align-items:center;flex-wrap:wrap;}
.lead-card .ref{font-weight:700;letter-spacing:.05em;}
.lead-meta{display:flex;flex-wrap:wrap;gap:.35rem 1rem;font-size:.88rem;color:var(--ink-600);}
.lead-meta span{display:inline-flex;align-items:center;gap:.35rem;}
.lead-meta .ico{color:var(--ocean-500);}
.lead-card.is-new{border-left:4px solid var(--saffron-500);}
.reasons{list-style:none;padding:0;margin:.2rem 0 0;display:flex;flex-wrap:wrap;gap:.35rem;}
.reasons li{font-size:.8rem;background:var(--sand-100);padding:.15em .65em;border-radius:var(--radius-pill);}
.score{font-family:var(--font-display);font-size:1.7rem;color:var(--ocean-700);}
.match-card{cursor:pointer;}
.match-card:has(input:checked){border-color:var(--ocean-900);box-shadow:inset 0 0 0 1px var(--ocean-900);background:var(--ocean-100);}

/* ---------- Quote comparison (traveller) ---------- */
.compare{display:grid;gap:1.2rem;grid-template-columns:minmax(0,1fr);}
@media (min-width:760px){.compare.n2,.compare.n3{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (min-width:1100px){.compare.n3{grid-template-columns:repeat(3,minmax(0,1fr));}}
.quote-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-soft);overflow:hidden;}
.quote-card.is-accepted{border-color:var(--tea-600);box-shadow:0 0 0 2px var(--tea-600),var(--shadow-lift);}
.quote-card header{position:relative;padding:1.2rem 1.25rem 1.1rem;background:linear-gradient(160deg,var(--ocean-900),var(--ocean-700));color:var(--sand-50);}
.quote-card header h3{font-family:var(--font-display);font-weight:400;font-size:1.5rem;line-height:1.15;margin:.35rem 0 .2rem;}
.quote-card .agency{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-weight:600;font-size:.92rem;color:rgba(251,248,242,.85);}
.quote-card .price{font-family:var(--font-display);font-size:2.3rem;line-height:1;color:var(--saffron-400);margin:.7rem 0 .2rem;}
.quote-card .price small{font-family:var(--font-body);font-size:.85rem;color:rgba(251,248,242,.75);}
.quote-card header .help{color:rgba(251,248,242,.75);}
.quote-card .tag{position:absolute;top:1rem;right:1rem;background:var(--saffron-500);color:var(--ink-900);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.25em .7em;border-radius:var(--radius-pill);}
.quote-card .body{padding:1.1rem 1.25rem;display:grid;gap:.5rem;flex:1;align-content:start;}
.quote-card .body h4{margin:.7rem 0 .15rem;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}
.quote-card .body p{margin:0;font-size:.95rem;}
.quote-card .actions{padding:1rem 1.25rem 1.2rem;border-top:1px solid var(--border);display:grid;gap:.6rem;background:var(--sand-50);}
.check-list{list-style:none;margin:0;padding:0;display:grid;gap:.3rem;font-size:.93rem;}
.check-list li{display:flex;gap:.5rem;align-items:flex-start;}
.check-list .ico{margin-top:.15em;}
.mini-days{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.6rem;}
.mini-days li{display:grid;grid-template-columns:2.2rem 1fr;gap:.6rem;}
.mini-days .d{display:grid;place-items:center;width:2.2rem;height:2.2rem;border-radius:50%;border:1.5px solid var(--saffron-500);font-family:var(--font-display);font-size:1rem;}
.mini-days strong{display:block;font-size:.95rem;}
.mini-days p{font-size:.9rem!important;color:var(--ink-600);}
.mini-days small{display:inline-flex;align-items:center;gap:.3rem;color:var(--text-muted);font-size:.8rem;}
.breakdown{width:100%;font-size:.9rem;border-collapse:collapse;}
.breakdown td{padding:.3rem 0;border-bottom:1px dashed var(--border);}
.breakdown td:last-child{text-align:right;white-space:nowrap;}

/* ---------- Message thread ---------- */
.thread{list-style:none;margin:0 0 1rem;padding:0;display:grid;gap:.6rem;max-height:420px;overflow-y:auto;}
.thread li{max-width:85%;padding:.65rem .95rem;border-radius:14px 14px 14px 4px;background:var(--sand-100);}
.thread li.mine{justify-self:end;background:var(--ocean-100);border-radius:14px 14px 4px 14px;}
.thread .meta{display:block;font-size:.74rem;color:var(--text-muted);margin-bottom:.15rem;}
.thread p{margin:0;font-size:.95rem;overflow-wrap:anywhere;}

/* ---------- Progress (traveller) ---------- */
.progress-steps{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;padding:0;margin:1.2rem 0 0;counter-reset:s;}
.progress-steps li{counter-increment:s;position:relative;display:flex;flex-direction:column;gap:.45rem;font-size:.82rem;color:var(--text-muted);font-weight:600;line-height:1.25;}
.progress-steps li::before{content:counter(s);display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:var(--sand-200);font-size:.8rem;font-weight:700;color:var(--ink-900);position:relative;z-index:1;}
.progress-steps li::after{content:"";position:absolute;top:1rem;left:2rem;right:-.4rem;height:2px;background:var(--sand-200);}
.progress-steps li:last-child::after{display:none;}
.progress-steps li.done{color:var(--ink-900);}
.progress-steps li.done::before{background:var(--tea-600);color:#fff;content:"✓";}
.progress-steps li.done::after{background:var(--tea-600);}
.progress-steps li.current{color:var(--ink-900);}
.progress-steps li.current::before{background:var(--saffron-500);box-shadow:0 0 0 5px rgba(233,162,59,.25);}

/* ---------- Admin options page ---------- */
.opt-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.opt-grid .panel{margin:0;}
.opt-grid textarea{width:100%;font-size:.93rem;line-height:1.6;}
.options-form > .panel{margin-top:1.25rem;}
.preset-edit{display:grid;gap:.8rem;}
.preset-row{display:grid;gap:.7rem;grid-template-columns:200px minmax(0,1fr);padding:.8rem;border:1px solid var(--border);border-radius:12px;background:var(--sand-50);}
@media (max-width:640px){.preset-row{grid-template-columns:1fr;}}
.sticky-actions{position:sticky;bottom:0;padding:1rem;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);background:linear-gradient(to top,var(--sand-50) 70%,transparent);z-index:5;}
.tpl-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem;}
.tpl-list li{display:flex;justify-content:space-between;align-items:center;gap:.8rem;padding:.6rem .8rem;border:1px solid var(--border);border-radius:10px;}
.tpl-list small{display:block;color:var(--text-muted);font-size:.78rem;}

.pre{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;background:var(--sand-100);padding:1rem;border-radius:10px;overflow-x:auto;}
.stack-sm{display:grid;gap:.6rem;}

/* ---------- Traveller hero ---------- */
.trip-hero .progress-steps li{color:rgba(251,248,242,.65);}
.trip-hero .progress-steps li.done,.trip-hero .progress-steps li.current{color:var(--sand-50);}
.trip-hero .progress-steps li::before{background:rgba(251,248,242,.18);color:var(--sand-50);}
.trip-hero .progress-steps li::after{background:rgba(251,248,242,.18);}
.trip-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.4rem;}
.trip-chips span{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .8rem;border-radius:var(--radius-pill);background:rgba(251,248,242,.1);font-size:.88rem;}
@media (max-width:759px){.compare-summary{display:none;}}
.trip-hero .progress-steps li.done::before{background:var(--tea-600);}
.trip-hero .progress-steps li.done::after{background:var(--tea-600);}
.trip-hero .progress-steps li.current::before{background:var(--saffron-500);color:var(--ink-900);}
/* The public site pads every <section>; portal pages control their own spacing. */
:where(.portal) section{padding-block:0;}
:where(.portal-main) section + section,:where(.portal-main) .compare + *{margin-top:1.25rem;}

/* Agency logo on portal pages */
.ag-logo{width:64px;height:64px;flex:none;border-radius:14px;object-fit:contain;background:#fff;border:1px solid var(--border);padding:4px;}
.ag-logo-lg{width:88px;height:88px;border-radius:16px;}
.ag-mono{display:grid;place-items:center;background:linear-gradient(135deg,var(--ocean-900),var(--ocean-500));color:var(--sand-50);font-family:var(--font-display);font-size:2rem;border:0;padding:0;}
.logo-row{display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap;}
.logo-row input[type=file]{font-size:.85rem;max-width:100%;}

/* ---------- Lead credits ---------- */
.credit-balance{display:flex;align-items:baseline;gap:.5rem;margin:0;}
.credit-balance strong{font-family:var(--font-display);font-size:clamp(2.6rem,6vw,3.6rem);line-height:1;color:var(--ocean-900);font-weight:400;}
.credit-balance span{color:var(--text-muted);}
.credit-card{display:grid;gap:.4rem;}
.credit-note{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin:.6rem 0 0;padding:.55rem .8rem;border-radius:10px;background:var(--ocean-100);color:var(--ocean-700);font-size:.9rem;}
.credit-note.is-low{background:#FBEBDD;color:var(--terra-600);}
.credit-note a{font-weight:600;}
.text-warn{color:var(--terra-600);font-weight:600;}
.credit-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;}
.credit-table .pos{color:var(--tea-600);font-weight:600;}
.credit-table .neg{color:var(--ink-600);}
.bank-box{margin:1rem 0;padding:1rem 1.1rem;border:1px dashed var(--saffron-500);border-radius:12px;background:#FFF8EC;}
.bank-box .pre{background:transparent;padding:.4rem 0;font-size:.95rem;}
.bank-box p{margin:.2rem 0 0;}
.steps-list{list-style:decimal;padding-left:1.2rem;display:grid;gap:.55rem;margin:.4rem 0 0;}
.plain-list{list-style:disc;padding-left:1.1rem;display:grid;gap:.45rem;margin:0 0 .8rem;}
.balance-list{list-style:none;padding:0;margin:.6rem 0 0;display:grid;gap:.35rem;}
.balance-list li{display:flex;justify-content:space-between;gap:.8rem;padding:.5rem .7rem;border:1px solid var(--border);border-radius:10px;}
.balance-list li span{font-variant-numeric:tabular-nums;font-weight:600;}
.credit-table td.nowrap{white-space:nowrap;}
.credit-table.compact{font-size:.86rem;}
.credit-table.compact th,.credit-table.compact td{padding:.5rem .6rem;}
