/* =========================================================================
   MyResale WEB responsive shell  (web.css)
   ---------------------------------------------------------------------------
   The 14 proto-*.html are 393–412px MOBILE mockups (a single .app card).
   The injected _inject.web.html already strips the phone-frame chrome and
   makes .app full-width (good for the Android WebView). This stylesheet sits
   ON TOP of that and turns the app into:
     • DESKTOP / tablet (>480px): a CENTERED column, max-width 440px, on a
       tasteful full-height backdrop (the "app on a wall" pattern).
     • MOBILE (<=480px): edge-to-edge full width, no backdrop, no rounding.
   It also re-constrains the fixed overlays (#mrnav, #mrtoast) — which the
   inject pins with left:0;right:0 — to the centered column on desktop so
   the bottom nav doesn't stretch across a wide screen.
   Loaded via <link> that the inject adds as the FIRST thing in <head>, so
   these rules win over the proto's own <style> and the inject's <style>.
   ========================================================================= */

:root{
  --mr-col: 440px;          /* centered app column width on desktop */
  --mr-brand: #11806a;
  --mr-brand2: #0c5f7a;
  --mr-ink: #13161c;
}

/* ---- backdrop (desktop): full-height gradient behind the centered column ---- */
html{ height:100%; }
body{
  min-height:100vh;
  margin:0;
  /* a calm brand-tinted backdrop so the column reads as an app on a surface */
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(17,128,106,.20), transparent 60%),
    linear-gradient(160deg, #eef2f4 0%, #dfe6ea 48%, #d3dde2 100%) !important;
  background-attachment: fixed;
}

/* The .wrap is the proto's outer padding box. Use it to center the column and
   reserve room for the fixed bottom nav (the inject sets nav height ~60px). */
.wrap{
  max-width: var(--mr-col);
  margin: 0 auto !important;
  padding: 0 !important;
  /* height is driven by the .app card's own min-height; the full-height backdrop
     lives on <html> (fixed), so .wrap needs no min-height — forcing 100vh here
     plus the card's top margin would overflow the viewport by the gap amount. */
}

/* The actual app card. On desktop it floats on the backdrop as a phone-like card:
   rounded TOP corners + soft shadow + a little top margin so the backdrop shows
   around it. The card still reaches the viewport bottom (min-height fills the gap
   left by the top margin) so the fixed bottom-nav — which rounds the BOTTOM corners
   — docks flush to it and the two read as one continuous device frame. */
.app, .frame{
  --mr-gap: 22px;                 /* breathing room above the card on the backdrop */
  --mr-radius: 22px;              /* card corner radius (top here, bottom on #mrnav) */
  max-width: var(--mr-col) !important;
  width: 100% !important;
  margin: var(--mr-gap) auto 0 !important;
  min-height: calc(100vh - var(--mr-gap)) !important;
  border-radius: var(--mr-radius) !important;
  box-shadow: 0 18px 60px rgba(13,22,28,.28), 0 4px 14px rgba(13,22,28,.12) !important;
  overflow-x: hidden;
  overflow-y: hidden;             /* clip sticky header to the rounded top corners */
  position: relative;
}
/* Give the plain app card a surface, but DON'T clobber .frame variants that carry
   their own background (e.g. the onboarding .splash gradient behind white text). */
.app{ background:#f6f7f9 !important; }
.frame:not(.splash){ background:#fff; }
/* extra bottom room so content clears the fixed nav */
.app{ padding-bottom: 76px !important; }

/* ---- fixed overlays: re-pin to the centered column (not the whole viewport) ---- */
/* The bottom-nav is the card's footer: same width, docked at the bottom, with the
   card's BOTTOM corners rounded here + a matching shadow so card-top + nav-bottom
   read as one floating device frame on the backdrop. */
#mrnav{
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%);
  width: 100% !important;
  max-width: var(--mr-col) !important;
  box-sizing: border-box;
  border-bottom-left-radius: 22px;
  border-bottom-right-radius: 22px;
  box-shadow: 0 18px 60px rgba(13,22,28,.28), 0 4px 14px rgba(13,22,28,.12);
}
/* (REMOVED 2026-07-13, W2) the ".cta" re-pin block that used to sit here served
   the STATIC protos' fixed bottom CTA bar (proto-06/14, pinned left:0/right:0 by
   the app inject). The protos are gone from public/ and the hybrid app bundles
   its own copies, so on the SSR site the naked .cta selector only ever matched
   the sell-hub HERO BUTTON — a static in-flow <a> — and its translateX(-50%)
   shifted that button half out of view on >480px widths (the 07-03 audit's
   "sell-hero CSS hack"). The button is now .herocta (sell.blade.php); no SSR
   page uses .cta. */
#mrtoast{ /* keep centered over the column */
  left: 50% !important;
  transform: translateX(-50%) !important;
}
/* the slide-in menu & bottom sheet overlays cover the whole viewport (dim),
   but their inner panel should align to the column on desktop */
#mrmenu .c{ max-width: 320px; }
#mrsheet .c{ left: 50% !important; right:auto !important; transform: translateX(-50%); width:100%; max-width: var(--mr-col); }

/* ---- both mouse AND touch: don't let desktop hover kill tap targets ---- */
*{ -webkit-tap-highlight-color: transparent; }
button, .btn, .tile, .row, .evcard, .lot, .chip, .tab2, .mra, a{ cursor: pointer; }
body{ -webkit-text-size-adjust: 100%; }

/* kill any stray horizontal scrollbar from the 393px-fixed children */
html, body{ overflow-x: hidden !important; }

/* hide leftover phone-frame caption/labels even before the inject's <style> loads */
.cap, .flabel{ display:none !important; }

/* =========================================================================
   MOBILE: <=480px -> edge to edge, no backdrop, no float
   ========================================================================= */
@media (max-width: 480px){
  body{
    background:#f6f7f9 !important;
    background-attachment: scroll;
  }
  .wrap{ max-width:100%; }
  .app, .frame{
    max-width:100% !important;
    width:100% !important;
    margin:0 auto !important;
    min-height:100vh !important;
    border-radius:0 !important;
    box-shadow:none !important;
    border-left:0; border-right:0;
  }
  #mrnav{ max-width:100% !important; width:100% !important; left:0 !important; transform:none !important; }
  #mrnav{ border-radius:0 !important; box-shadow:none !important; }
  #mrsheet .c{ left:0 !important; transform:none !important; max-width:100%; }
}

/* very small height (landscape phone) — let the app scroll naturally */
@media (max-height: 520px){
  .app, .frame{ min-height: auto !important; }
}

/* desktop backdrop behind the centered app column */
@media (min-width:481px){html{background:linear-gradient(160deg,#0c5f7a 0%,#082e3a 100%) fixed !important;min-height:100%}body{background:transparent !important}}

/* =========================================================================
   RESPONSIVE TIERS — added 2026-06-29 (task: desktop/tablet adaptivity).
   The protos are mobile-only (375–412px); above just centered a 440px column
   ("phone on a wall"). These tiers give real tablet + desktop layouts WITHOUT
   touching the mobile (<=480px) block above. Desktop-only, so :has()/grid are
   safe — the Android app always renders the mobile width and never sees these.
   ========================================================================= */

/* ---- TABLET (481–1023px): a roomier centered app card, still single-column ---- */
@media (min-width: 481px) and (max-width: 1023px){
  :root{ --mr-col: 600px; }
}

/* ---- DESKTOP (>=1024px): a REAL desktop site — top nav, wide hero, multi-column ---- */
@media (min-width: 1024px){
  /* light desktop surface instead of the "phone on a teal wall" backdrop */
  html{ background: #eef1f3 !important; }
  body{ background: transparent !important; padding-top: 60px !important; }

  /* default content column = comfortable reading width for form/flow/detail pages
     (sell, signup, want, payment, onboarding, event detail, cabinet, contact) */
  :root{ --mr-col: 660px; }

  /* === TOP NAVIGATION (replaces the bottom mobile tab bar on desktop) === */
  #mrnav{
    position: fixed !important; top: 0 !important; bottom: auto !important;
    left: 0 !important; right: 0 !important; transform: none !important;
    width: 100% !important; max-width: none !important; box-sizing: border-box;
    height: 60px !important; padding: 0 32px 0 220px !important;
    flex-direction: row !important; justify-content: flex-end !important; align-items: center !important;
    gap: 6px !important;
    background: #fff !important;
    border-top: 0 !important; border-bottom: 1px solid #e6e8ec !important;
    border-radius: 0 !important; box-shadow: 0 1px 3px rgba(13,22,28,.06) !important;
    z-index: 99990 !important;
  }
  #mrnav::before{                                   /* brand, left-aligned */
    content: "myresale"; position: absolute; left: 32px; top: 0; height: 60px;
    display: flex; align-items: center; font-weight: 800; font-size: 21px; color: #13161c; letter-spacing: -.3px;
  }
  #mrnav a{
    flex: 0 0 auto !important; flex-direction: row !important; gap: 7px !important;
    padding: 8px 13px !important; border-radius: 9px !important;
    font-size: 15px !important; color: #4b5563 !important; height: auto !important;
  }
  #mrnav a:hover{ background: #f2f5f7 !important; }
  #mrnav a.mract{ color: #11806a !important; background: #eef6f3 !important; font-weight: 700 !important; }
  #mrnav a .e{ font-size: 18px !important; }
  /* desktop-only nav links (News) join the horizontal nav here */
  #mrnav a.mrdt{ display: flex !important; }
  /* the central red "+" FAB becomes a "+ Sell" button at the right end */
  #mrnav a:has(.fab){ order: 9 !important; }
  #mrnav .fab{
    width: auto !important; height: auto !important; margin: 0 !important;
    border-radius: 9px !important; padding: 9px 15px !important; font-size: 15px !important;
    box-shadow: none !important; line-height: 1 !important;
    /* W4 W-3: the desktop FAB carries TEXT ("+ Sell") — darken to the 4.5:1-safe
       coral (mobile keeps brand #ff5a5f: icon-only "+" needs just 3:1 = 3.05 ok).
       !important because the layout's inline <style> (#mrnav .fab) loads later. */
    background: #d6383d !important; font-weight: 800 !important;
  }
  #mrnav a:has(.fab) .fab::after{ content: " Sell"; font-weight: 700; }

  /* clear the fixed top bar; drop the redundant per-page sticky header on desktop */
  .hdr{ display: none !important; }
  .app, .frame{ margin-top: 22px !important; min-height: calc(100vh - 82px) !important; }
  .app{ padding-bottom: 40px !important; }

  /* === CONTENT WIDTH: wide on grid pages, article-width on the event detail,
         readable 660px on form/flow pages (sell, onboarding, cabinet) === */
  .wrap:has(.tiles), .wrap:has(.list), .wrap:has(.grp){ max-width: 1180px !important; }
  .app:has(.tiles), .app:has(.list), .app:has(.grp){ max-width: 1180px !important; }
  /* event/reservation detail (.cover page): a roomy readable column, not a phone */
  .wrap:has(.cover), .app:has(.cover){ max-width: 840px !important; }

  /* === HOME: spacious desktop hero — slogan left, search + CTA at a readable
         width (NOT stretched to the full 1180px band) === */
  .hero{ padding: 54px 48px 48px !important; }
  .hero h1{ font-size: 42px !important; line-height: 1.1 !important; max-width: 760px; letter-spacing: -1px !important; }
  .hero .sub, .hero p{ max-width: 640px; font-size: 18px !important; margin-top: 10px !important; }
  .hero .search{ max-width: 620px; margin-top: 24px !important; padding: 15px 18px !important; }
  .hero .ctapair{ max-width: 470px; margin-top: 14px !important; padding: 0 !important; }
  /* sell-hub hero button (renamed .cta -> .herocta in W2; the old name collided
     with the proto fixed-bar re-pin and its translateX(-50%) — see the removed
     block above). Same readable width as the home hero's CTA band. */
  .hero .herocta{ max-width: 470px; }

  /* category tiles: one 5-across row (theatre/concerts/sports/museums/dining) */
  .tiles{ grid-template-columns: repeat(5, 1fr) !important; gap: 12px !important; }
  .tile{ padding: 16px 6px !important; font-size: 15px !important; }
  .tile .em{ font-size: 26px !important; }

  /* roomier section rhythm on desktop */
  .sec{ padding: 26px 24px 6px !important; }
  .sec h2{ font-size: 20px !important; margin-bottom: 14px !important; }
  .trust{ margin: 18px 24px 6px !important; padding: 16px !important; font-size: 15px !important; }

  /* turn home/city carousels into real multi-column grids on desktop */
  .sec:has(.hscroll) .hscroll{
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
    gap: 16px !important; overflow: visible !important;
  }
  .sec .hscroll .evcard{ min-width: 0 !important; width: auto !important; }
  .sec .hscroll .evcard .ph{ height: 140px !important; }

  /* === CATEGORY / CITY / VENUE / SEARCH / NEWS: responsive card grid === */
  .app:has(.list) .list{
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) !important;
    gap: 16px !important; align-items: start; padding: 8px 24px 16px !important;
  }
  .app:has(.list) .list .row{
    background:#fff; border:1px solid #e6e8ec; border-radius:14px;
    margin:0 !important; padding:12px !important;
  }

  /* breadcrumb / page head / CTA pair / FAQ: desktop paddings + readable measure */
  .crumb{ padding: 16px 24px 0 !important; }
  .head{ padding: 8px 24px 12px !important; }
  .head h1{ font-size: 30px !important; line-height: 1.15 !important; letter-spacing: -.6px !important; }
  .head p{ max-width: 78ch; font-size: 16px !important; }
  .ctapair{ max-width: 560px; padding-left: 24px !important; padding-right: 24px !important; }
  .empty .ctapair{ margin-left: auto !important; margin-right: auto !important; }
  .faq{ margin: 22px 24px 28px !important; }
  .faq h2{ font-size: 18px !important; }
  .faq .qa p{ max-width: 78ch; }
  .chipsec{ padding: 18px 24px 0 !important; }
  .chipsec h2{ font-size: 18px !important; }
  .empty{ padding: 40px 24px !important; }

  /* search page: the sticky mobile search bar becomes a static in-flow row */
  .sbar{ position: static !important; padding: 18px 24px !important; }
  .sform{ max-width: 760px; }
  /* search "Browse by category" block: join the 24px desktop rhythm (was stuck
     at the mobile 16px padding / 16px heading — a W1 leftover), and stop its
     nested .ctapair from double-indenting (24px outer + 24px inner). */
  .browse{ padding: 16px 24px 6px !important; }
  .browse h2{ font-size: 20px !important; margin-bottom: 14px !important; }
  .browse .ctapair{ padding-left: 0 !important; padding-right: 0 !important; }

  /* === EVENT DETAIL (.cover pages): taller cover + desktop paddings === */
  .app:has(.cover) .cover{ height: 240px !important; padding: 22px 24px !important; }
  .app:has(.cover) .cover h1{ font-size: 30px !important; }
  .app:has(.cover) .evmeta{ padding: 14px 24px !important; font-size: 15px !important; }
  .app:has(.cover) .odates{ padding: 12px 24px 14px !important; }
  /* chips WRAP on desktop (no clipped horizontal scroll row) */
  .app:has(.cover) .odates .chips{ flex-wrap: wrap; overflow: visible !important; }
  .app:has(.cover) .counters{ padding: 14px 24px !important; gap: 10px !important; }
  .app:has(.cover) .ctapair{ padding: 0 24px 10px !important; }
  .app:has(.cover) .lh{ padding: 8px 24px !important; }
  .app:has(.cover) .lot, .app:has(.cover) .emptylots{ margin: 0 24px 12px !important; }

  /* === HOME FOOTER: multi-column desktop footer (brand / cities / categories),
         legal line across the bottom. .fbrand is hidden on mobile. === */
  .foot{
    display: grid !important;
    grid-template-columns: 1.4fr 1fr 1fr;
    gap: 10px 48px;
    padding: 30px 24px 34px !important;
    margin-top: 26px !important;
  }
  .foot .fbrand{ display: block !important; }
  .foot .flogo{ font-weight: 800; font-size: 20px; letter-spacing: -.5px; color: #13161c; margin-bottom: 8px; }
  .foot .flogo b{ color: #11806a; }
  .foot .fbrand p{ max-width: 34ch; line-height: 1.5; }
  .foot .legal{ grid-column: 1 / -1; border-top: 1px solid #e6e8ec; padding-top: 14px; margin-top: 10px; }

  /* tame oversized splash headings (onboarding) on wide screens */
  .splash h2{ max-width: 760px; margin-left:auto; margin-right:auto; }

  /* NOTE: a true 2-column EVENT DETAIL (info left / offers right) needs a small
     DOM rearrange — done via the inject on desktop in a follow-up; for now the
     detail page is a clean centered 840px column. */
}

/* =========================================================================
   SSR SHARED COMPONENTS — added 2026-07-03 (audit SSR-VS-PROTO Б-1/Б-2/Б-3).
   ONE copy of the proto component styles every content blade uses (element
   reset, sticky header, breadcrumb, page head, CTA pair, list rows as white
   cards, chips, empty state, FAQ card) so a page can never "forget" them —
   the category page previously shipped with NO component styles at all.
   Values are verbatim from proto-01/proto-02 (design tokens: teal #11806a,
   coral #ff5a5f, card border #e6e8ec, radius 14px, pills 20px).
   Page-level @section('head') <style> blocks load AFTER this file, so a page
   may still re-skin a component (e.g. the home hero's white-outline
   .btn-ghost). The desktop tier above keeps working: its rules carry higher
   specificity and/or !important.
   ========================================================================= */

/* the protos assume a global reset; give the SSR pages the part that matters */
h1,h2,h3,h4,p,ul,ol,figure{margin:0;padding:0}

/* sticky mobile header (proto-01; desktop tier hides .hdr and shows #mrnav) */
.hdr{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px;background:#fff;border-bottom:1px solid #e6e8ec}
.logo{font-weight:800;font-size:20px;letter-spacing:-.5px;color:#13161c}
.logo b{color:#11806a}

/* breadcrumb (proto-02/03) */
.crumb{padding:10px 16px 0;color:#8a919c;font-size:14px}
.crumb a{color:#11806a;font-weight:600}

/* page head: H1 + count pill + intro (proto-02/03) */
.head{padding:6px 16px 10px}
.head h1{font-size:22px;letter-spacing:-.3px}
.head .cnt{margin-top:6px;display:inline-block;background:#eef6f3;border:1px solid #cfe7df;color:#0a5e4d;font-weight:700;font-size:14px;padding:5px 11px;border-radius:20px}
.head p{color:#4b5563;font-size:15px;margin-top:10px}

/* dual CTA (coral sell + teal ghost) */
.ctapair{display:flex;gap:10px;padding:8px 16px}
.btn{flex:1;text-align:center;padding:13px;border-radius:12px;font-weight:700;font-size:15px;border:0;display:block}
/* W4 (W-3 a11y): text-bearing coral CTAs darken to #d6383d — white 15px text on
   the brand #ff5a5f was 3.05:1 (< WCAG 4.5). #e7484d (3.87) and #d93f44 (4.43)
   still miss; #d6383d gives 4.67:1. Brand coral stays on non-text surfaces
   (the mobile FAB "+" icon needs only 3:1). Weight bumped 700 -> 800. */
.btn-sell{background:#d6383d;color:#fff;font-weight:800}
.btn-ghost{background:#fff;color:#11806a;border:1.5px solid #11806a}

/* list rows as WHITE CARDS (proto-02; owner card = native v0.28 EventGroupCard):
   thumb 64px r11 on a SOFT BRAND-TEAL gradient (category emoji placeholder);
   last line = colored "📅 date" (.cnt .d, dark red #C62828 — matches native v0.37
   light theme, WCAG >=4.5:1 on white; was coral #ff5a5f) + muted "🎫 N" (.cnt .q). */
.list{padding:6px 16px 4px}
.list .row{display:flex;gap:12px;align-items:center;background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:12px;margin-bottom:11px;color:#13161c}
.list .thumb{width:64px;height:64px;border-radius:11px;background:linear-gradient(135deg,rgba(17,128,106,.18),rgba(12,95,122,.30)),#fff;display:flex;align-items:center;justify-content:center;font-size:26px;overflow:hidden;flex:none}
/* W5 (design-review/DECISIONS-AUDIT-2026-07-15.md §2.2-5): 2 extra gradient
   variants so neighbouring no-photo cards don't render an identical tile —
   mirrors the app's 3-gradient rotation (Screens.kt CategoryPlaceholder). Base
   .thumb above stays variant 0 (CategoryEmoji::gradientClass() seed%3==0). */
.list .thumb.g1{background:linear-gradient(135deg,rgba(17,128,106,.20),rgba(17,128,106,.36)),#fff}
.list .thumb.g2{background:linear-gradient(135deg,rgba(12,95,122,.20),rgba(12,95,122,.36)),#fff}
.list .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.list .row .t{font-weight:700;font-size:16px;line-height:1.25}
.list .row .m{color:#6b7280;font-size:14px;margin-top:2px}
.list .row .cnt{font-size:14px;margin-top:4px}
.list .row .cnt .d{color:#c62828;font-weight:700}
.list .row .cnt .q{color:#6b7280;font-weight:600;margin-left:6px}

/* pill chips (footer cities/categories etc.) */
.chip{display:inline-block;background:#eef0f2;border-radius:20px;padding:6px 11px;font-size:14px;color:#374151}

/* chip-row section (category "Popular cities" — W2, native CategoryScreen parity) */
.chipsec{padding:12px 16px 0}
.chipsec h2{font-size:16px;letter-spacing:-.2px;margin-bottom:9px}
.chipsec .chips{display:flex;flex-wrap:wrap;gap:8px}

/* graceful empty state (list pages) */
.empty{padding:26px 16px;text-align:center;color:#4b5563}
.empty .t{font-weight:700;font-size:17px;color:#13161c;margin-bottom:6px}
.empty .m{font-size:15px;margin-bottom:16px}

/* FAQ as a white card (proto-03/06; audit Б-4) */
.faq{margin:14px 16px 18px;background:#fff;border:1px solid #e6e8ec;border-radius:14px;overflow:hidden}
.faq h2{font-size:16px;letter-spacing:-.2px;padding:13px 14px 8px}
.faq .qa{padding:11px 14px;border-top:1px solid #eef0f2;font-size:14px;color:#374151}
.faq .qa h3{font-size:14px;font-weight:700;margin:0 0 4px}
.faq .qa p{color:#4b5563}

/* =========================================================================
   W3 SHARED COMPONENTS — added 2026-07-15 (first transactional pages:
   /login, /register, /sell/new). Form controls (.finput, .fpills radio-pills,
   .flab labels), the sell form's ⚡ accelerator card (.acc), the event
   autocomplete card (.sugbox), "✓ from link" tag, fee hint, success flash and
   the auth card. Same design tokens as everything above: teal #11806a, coral
   #ff5a5f, card border #e6e8ec, radius 14px, pills 20px, accents #eef6f3.
   Mobile-first; the small ≥1024px block at the end only joins the desktop
   24px gutter rhythm (the 660px form column comes from --mr-col above).
   ========================================================================= */

/* ---- generic form controls ---- */
.flab{display:block;font-weight:700;font-size:13.5px;color:#13161c;margin:14px 0 6px}
.flab .req{color:#d6383d} /* W4 W-3: was coral #ff5a5f (2.9:1 on #f6f7f9) */
.finput{display:block;width:100%;box-sizing:border-box;background:#fff;border:1.5px solid #e6e8ec;border-radius:12px;padding:12px 13px;font-size:16px;color:#13161c;font-family:inherit;line-height:1.3;-webkit-appearance:none;appearance:none}
.finput::placeholder{color:#9aa1ab}
.finput:focus{outline:none;border-color:#11806a;box-shadow:0 0 0 3px rgba(17,128,106,.13)}
textarea.finput{min-height:96px;resize:vertical}
.frow2{display:flex;gap:10px}
.frow2>div{flex:1;min-width:0}
/* radio-pill rows (category / currency): the real radios are visually hidden,
   the labels are the 20px pills; :checked + focus states restyle the label */
.fpills{display:flex;flex-wrap:wrap;gap:8px}
.fpills .pillopt{position:relative;display:inline-flex}
.fpills input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.fpills label{display:inline-block;background:#fff;border:1.5px solid #e6e8ec;border-radius:20px;padding:8px 14px;font-size:14px;font-weight:600;color:#374151;cursor:pointer;user-select:none}
.fpills input:checked+label{background:#eef6f3;border-color:#11806a;color:#0a5e4d}
.fpills input:focus-visible+label{outline:2px solid #11806a;outline-offset:2px}
/* per-field validation error + the top-of-form summary */
.ferr{color:#c62828;font-size:13px;font-weight:600;margin-top:6px}
.formerr{margin:12px 0 2px;background:#fdecec;border:1px solid #f3bcbf;color:#8a1f24;border-radius:10px;padding:10px 12px;font-size:13.5px;line-height:1.45}
.formerr ul{margin:0;padding-left:18px}
/* the sell form itself is the padded column section */
.fsec{padding:4px 16px 10px}
.pubbtn{width:100%;margin-top:16px;font-family:inherit;cursor:pointer}

/* ---- ⚡ "paste a link" accelerator card (app Variant B mirror) ---- */
.acc{margin:12px 16px 0;background:#eef6f3;border:1.5px solid #11806a;border-radius:15px;padding:13px}
.acc .fast{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.8px;color:#0a5e4d}
.acc .at{font-weight:800;font-size:16px;letter-spacing:-.2px;color:#13161c;margin-top:4px}
.accrow{display:flex;gap:8px;margin-top:10px;align-items:stretch}
.accrow .finput{flex:1;min-width:0}
.accbtn{flex:none;background:#11806a;color:#fff;border:0;border-radius:12px;font-weight:700;font-size:15px;padding:0 16px;font-family:inherit;cursor:pointer}
.accbtn[disabled]{opacity:.55;cursor:default}
.acc .ah{color:#0a5e4d;font-size:13px;line-height:1.45;margin-top:9px}
/* soft amber "couldn't read that link" hint (hidden until .show) */
.acchint{display:none;margin-top:9px;background:#fff7e6;border:1px solid #f0d9a8;color:#7a5a10;border-radius:10px;padding:9px 11px;font-size:13px;line-height:1.45}
.acchint.show{display:block}
/* "— or fill in the details —" divider between accelerator and manual fields */
.ordiv{margin:14px 16px 0;text-align:center;color:#8a919c;font-size:13px;font-weight:600}

/* ---- "✓ from link" tag next to a label the accelerator filled ---- */
.fromlink{display:inline-block;margin-left:8px;background:#eef6f3;border:1px solid #cfe7df;color:#0a5e4d;font-size:11px;font-weight:700;border-radius:20px;padding:2px 8px;vertical-align:middle}

/* ---- event autocomplete: white bordered card in NORMAL FLOW right under the
       title field (no fixed overlay — stays visible over a mobile keyboard) ---- */
.sugbox{display:none;background:#fff;border:1px solid #e6e8ec;border-radius:12px;margin-top:8px;overflow:hidden}
.sugbox.open{display:block}
.sugbox .sh{font-size:12px;font-weight:700;color:#6b7280;padding:9px 13px 5px}
.sug{display:block;width:100%;text-align:left;background:#fff;border:0;border-top:1px solid #eef0f2;padding:9px 13px;font-family:inherit;cursor:pointer}
.sug:hover{background:#f6f8f9}
.sug .st{font-weight:700;font-size:14px;color:#13161c;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sug .sm{color:#6b7280;font-size:13px;margin-top:2px}

/* ---- static fee hint + success flash ---- */
.feenote{margin:16px 0 0;background:#fff;border:1px dashed #cfd6dd;border-radius:12px;padding:11px 13px;color:#4b5563;font-size:13.5px;line-height:1.45}
.flash-ok{margin:12px 16px 0;background:#eef6f3;border:1.5px solid #11806a;border-radius:14px;padding:13px 14px}
.flash-ok .ft{font-weight:800;font-size:16px;color:#0a5e4d}
.flash-ok .fm{font-size:14px;color:#13161c;margin-top:4px;line-height:1.4}
.flash-ok .fa{margin-top:8px;font-size:14px;font-weight:700}
.flash-ok .fa a{color:#11806a;text-decoration:underline}

/* ---- "Signed in as …" + Sign out (the sell form's session row) ---- */
.signedrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 16px;color:#6b7280;font-size:13px}
.signedrow span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.signedrow form{margin:0;flex:none}
.signedrow button{background:none;border:0;padding:4px 0;color:#11806a;font-weight:700;font-size:13px;font-family:inherit;cursor:pointer;text-decoration:underline}

/* ---- auth pages: small centered white card ---- */
.authwrap{display:flex;justify-content:center;padding:26px 16px 10px}
.authcard{background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:22px 18px 20px;width:100%;max-width:420px}
.authcard .ab{font-weight:800;font-size:22px;letter-spacing:-.5px;text-align:center;color:#13161c}
.authcard .ab b{color:#11806a}
.authcard h1{font-size:20px;letter-spacing:-.3px;text-align:center;margin-top:12px}
.authcard .asub{color:#6b7280;font-size:14px;text-align:center;margin-top:5px;line-height:1.45}
.acheck{display:flex;gap:8px;align-items:center;font-size:14px;color:#374151;margin-top:13px;cursor:pointer}
.acheck input{width:17px;height:17px;accent-color:#11806a;margin:0}
.asubmit{width:100%;margin-top:15px;font-family:inherit;cursor:pointer}
.aswap{text-align:center;font-size:14px;color:#6b7280;margin-top:15px}
.aswap a{color:#11806a;font-weight:700}

/* ---- desktop (≥1024px): join the 24px gutter rhythm; the form column is
       already the readable 660px via --mr-col ---- */
@media (min-width:1024px){
  .signedrow{padding:0 24px}
  .acc,.flash-ok{margin-left:24px;margin-right:24px}
  .ordiv{margin-left:24px;margin-right:24px}
  .fsec{padding-left:24px;padding-right:24px}
  .authwrap{padding-top:36px}
}

/* =========================================================================
   W4 SHARED COMPONENTS — added 2026-07-24 (buyer-side pages: the /payment
   unlock preview, /alerts post-a-want + request list, /cabinet account page).
   Same design tokens as everything above: teal #11806a, safe coral #d6383d,
   card border #e6e8ec, radius 14px, pills 20px, amber #fff7e6/#f0d9a8/#7a5a10
   (the .acchint palette). Mobile-first; the ≥1024px addendum at the end only
   joins the desktop 24px gutter rhythm.
   ========================================================================= */

/* honest-state banner (amber): "payments aren't enabled yet" */
.banner-amber{margin:12px 16px 0;background:#fff7e6;border:1.5px solid #f0d9a8;color:#7a5a10;border-radius:14px;padding:12px 14px;font-size:14px;line-height:1.5}
.banner-amber b{font-weight:800}

/* status pills (requests: Waiting/Matched/…; listings: Live/Sold/…) */
.pill{display:inline-block;flex:none;font-size:12px;font-weight:800;letter-spacing:.2px;border-radius:20px;padding:3px 10px;white-space:nowrap}
.pill-ok{background:#eef6f3;border:1px solid #cfe7df;color:#0a5e4d}
.pill-wait{background:#fff7e6;border:1px solid #f0d9a8;color:#7a5a10}
.pill-off{background:#eef0f2;border:1px solid #e6e8ec;color:#4b5563}

/* uppercase section label (the event page's .lh skin, shared + 4.5:1 color) */
.seclab{padding:14px 16px 6px;font-size:14px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.4px}
/* small helper line under a section label ("Manage from the app for now") */
.subhint{padding:0 16px 6px;color:#5b6470;font-size:13.5px;line-height:1.45}

/* white card rows for "my" lists (my listings / my requests) */
.mycard{margin:0 16px 11px;background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:13px}
.mycard .mrow{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.mycard .mt{font-weight:700;font-size:15px;line-height:1.3}
.mycard .mm{color:#4b5563;font-size:14px;margin-top:4px}
.mycard .mnote{margin-top:8px;font-size:13.5px;color:#374151;background:#f7f8fa;border-radius:9px;padding:8px 10px}
.mycard .macts{margin-top:9px;display:flex;gap:16px;align-items:center}
.mycard .macts form{margin:0}
.mlink{color:#11806a;font-weight:700;font-size:14px;text-decoration:underline}
/* text-button (the request Cancel) — 4.67:1 coral on white */
.linkbtn{background:none;border:0;padding:4px 0;color:#d6383d;font-weight:700;font-size:14px;font-family:inherit;cursor:pointer;text-decoration:underline}

/* /payment: event-context + fee-explainer cards */
.paycard{margin:12px 16px 0;background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:14px}
.paycard .pt{font-weight:800;font-size:17px;line-height:1.25}
.paycard .pm{color:#4b5563;font-size:14px;margin-top:5px;line-height:1.45}
.paycard .pp{margin-top:8px;font-weight:800;font-size:16px}
.feelist{margin:10px 0 0;padding-left:19px;color:#374151;font-size:14px;line-height:1.5}
.feelist li{margin-top:6px}

/* ---- desktop (≥1024px): join the 24px gutter rhythm ---- */
@media (min-width:1024px){
  .banner-amber,.paycard,.mycard{margin-left:24px;margin-right:24px}
  .seclab{padding-left:24px;padding-right:24px}
  .subhint{padding-left:24px;padding-right:24px}
}
