/* ==========================================================================
   PLUSH74 — DIRECTION A SKIN: MOBILE (/m/) + responsive overrides
   File: assets/css/p74-skin-mobile.css
   Created: 2026-08-07 (empty stub, UI apply pass group "traps").
   Filled: 2026-08-07, UI apply pass group "mobile".

   WHERE THE /m/ STYLING ACTUALLY LIVES
   ------------------------------------
   The /m/ kit is `template-parts/m/helpers.php` (the <style> block inside
   m_page_head()), plus the per-page $extra_css strings in
   templates/template-m-*.php. Both are emitted INLINE, i.e. AFTER this
   stylesheet — so a plain rule here can never override them. Anything that
   belongs to a `.m-*` class must be edited there, not here.

   THIS FILE IS ONLY FOR: fragments rendered INSIDE a /m/ page by code that
   is not part of the /m/ product (mu-plugins, SW_Win) and that ship their
   own inline <style> in the BODY. Those beat the head CSS on source order,
   so they are neutralised here by SPECIFICITY (`body.m-body …`), which wins
   regardless of order.

   RULES (unchanged from the stub)
   - NO box-shadow / text-shadow. The two `box-shadow:none` below are
     NEUTRALISERS for shadows painted by plush74-booking-tracker.php — there
     is no other way to remove an already-declared shadow.
   - 0 radius on panels/cards/inputs/chips; var(--r) = 6px on buttons ONLY.
   - Buttons: yellow fill + ink text + 1px ink border. Never yellow TEXT,
     never a dark fill with yellow text.
   - Fonts per text selector only, never a blanket font-family override.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Booking tracker (mu-plugins/plush74-booking-tracker.php) as rendered in
      the /m/ chat details sheet. Its own <style> paints 8px/6px/4px radii,
      50% dots and three box-shadows.
   -------------------------------------------------------------------------- */
body.m-body .plush74-tracker {
  border: 1px solid var(--ink, #0a0a0a);
  border-radius: 0;
  background: var(--paper, #fff);
}
body.m-body .plush74-tracker h3.plush74-tracker__title {
  color: var(--grey, #6b6b6b);
  font-weight: 400;
  letter-spacing: .09em;
}
body.m-body .plush74-tracker__stage-label {
  font-family: 'Maison Neue', 'Maison Neue Book', -apple-system, sans-serif;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .01em;
  color: var(--ink, #0a0a0a);
}
/* progress rail: a 1px internal hairline, not a 2px grey bar */
body.m-body .plush74-tracker__steps::before {
  height: 1px;
  top: 11px;
  background: var(--line-2, #e2e2e2);
}
/* status marks are SQUARES with an ink hairline — the §9 status vocabulary */
body.m-body .plush74-tracker__dot {
  width: 20px; height: 20px;
  border-radius: 0;
  border: 1px solid var(--ink, #0a0a0a);
  background: var(--paper, #fff);
  color: var(--ink, #0a0a0a);
  box-shadow: none;            /* neutraliser — see header */
}
body.m-body .plush74-tracker__step--done .plush74-tracker__dot {
  background: var(--yellow, #E9FF75);
  color: var(--ink, #0a0a0a);
  box-shadow: none;            /* neutraliser — see header */
}
/* current = solid ink fill with WHITE glyph; the pulse keyframes animate a
   box-shadow, so the animation is dropped rather than re-tinted */
body.m-body .plush74-tracker__step--current .plush74-tracker__dot {
  background: var(--ink, #0a0a0a);
  color: #fff;
  animation: none;
}
body.m-body .plush74-tracker__label { color: var(--grey, #6b6b6b); }
body.m-body .plush74-tracker__step--done .plush74-tracker__label,
body.m-body .plush74-tracker__step--current .plush74-tracker__label {
  color: var(--ink, #0a0a0a);
  font-weight: 400;
}
body.m-body .plush74-tracker__cta {
  background: var(--wash, #fafaf7);
  border: 1px solid var(--line-2, #e2e2e2);
  border-radius: 0;
}
body.m-body .plush74-tracker__cta h4 {
  font-family: 'Maison Neue', 'Maison Neue Book', -apple-system, sans-serif;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .01em;
  font-size: 14px;
}
/* the one button geometry: 6px, ink hairline, yellow fill, book cut */
body.m-body .plush74-tracker__btn {
  border-radius: 6px;
  border: 1px solid var(--ink, #0a0a0a);
  background: var(--paper, #fff);
  color: var(--ink, #0a0a0a);
  font-family: 'Maison Neue Book', 'Maison Neue', -apple-system, sans-serif;
  font-weight: 400;
  font-size: 13px;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: 11px 18px;
}
body.m-body .plush74-tracker__btn--primary,
body.m-body .plush74-tracker__btn--primary:hover {
  background: var(--yellow, #E9FF75);
  color: var(--ink, #0a0a0a);
}

/* --------------------------------------------------------------------------
   2. Contract button (mu-plugins/plush74-p74-contracts.php → p74_ic_chat_button_html)
      inside the /m/ chat sheet. It carries a hard-coded inline style attribute,
      so only the two off-system properties are forced back.
   -------------------------------------------------------------------------- */
body.m-body .m-host-actions a[style] {
  border-radius: 6px !important;
  font-weight: 400 !important;
}

/* --------------------------------------------------------------------------
   3. SW_Win map embed inside the /m/ listing page — square corners, hairline.
   -------------------------------------------------------------------------- */
body.m-body .m-map-swmap .sw_win_wrapper,
body.m-body .m-map-swmap .sw_win_map,
body.m-body .m-map-swmap img {
  border-radius: 0;
}

/* ==========================================================================
   FIX ROUND — 2026-08-07 (group "mobile", verification follow-up)
   Three third-party fragments that render INSIDE a /m/ page and ship their
   own CSS. All are neutralised by `body.m-body` specificity, never by source
   order (see the header note: the /m/ head CSS is emitted inline, after this
   file, so order can never be relied on here).
   ========================================================================== */

/* --------------------------------------------------------------------------
   4. Google Maps chrome in the LOCATION section of /m/listing/.
      The Maps JS injects its own <style> at runtime (after every one of our
      sheets) painting `box-shadow: rgba(0,0,0,.3) 0 1px 4px -1px` on the
      zoom/fullscreen control stack, plus 2px radii on the buttons. It is the
      only remaining box-shadow anywhere in the /m/ product. It cannot be
      fixed at the source file, and an already-declared shadow can only be
      removed by re-declaring it — hence `!important` (theirs is not
      important, so this wins regardless of injection order).
   -------------------------------------------------------------------------- */
body.m-body .gm-style .gmnoprint,
body.m-body .gm-style .gmnoprint > div,
body.m-body .gm-style .gm-bundled-control,
body.m-body .gm-style .gm-bundled-control div,
body.m-body .gm-style .gm-control-active,
body.m-body .gm-style button {
  box-shadow: none !important;
}
/* same controls: square them off — 0 radius is the panel/control vocabulary */
body.m-body .gm-style .gm-bundled-control div,
body.m-body .gm-style .gm-control-active,
body.m-body .gm-style button {
  border-radius: 0 !important;
}

/* --------------------------------------------------------------------------
   5. Generated initials avatar (mu-plugins/plush74-avatar.php, the inline-SVG
      branch that emits <span class="plush74-av-initials"><svg><text>).
      The <text> carries a hard-coded font-family/font-weight PRESENTATION
      ATTRIBUTE (-apple-system,…,Arial,sans-serif / 600), which is the only
      non-Maison-Neue text left on /m/account/ and /m/profile/.
      A presentation attribute has zero specificity, so a plain declaration
      wins — no !important needed and none used.
      NOTE: this is a SCOPED patch for the /m/ product only. The same avatar
      renders in CRM/dashboard surfaces and the file also has a second,
      URL-served SVG branch (returned as an <img>, unreachable from CSS) —
      both need the central fix in plush74-avatar.php. Logged as follow-up.
   -------------------------------------------------------------------------- */
body.m-body .plush74-av-initials svg text {
  font-family: 'Maison Neue', 'MaisonNeue-Book', 'Maison Neue Book', sans-serif;
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   6. Helper widget launcher (mu-plugins/plush74-helper-assets/helper.css)
      vs the /m/listing/ sticky CTA bar.
      helper.css lifts the launcher to `bottom: 72px + safe-bottom` for the
      /m/ shell, which clears the 55px tab bar but lands exactly on top of
      `.m-sticky-cta` (bottom: safe-bottom + 60px, height 56px → occupies
      60–116px). Measured: the 44x44 launcher covered ~1936px^2 of the yellow
      REQUEST button. Since the restyle made the launcher an opaque yellow
      square it now reads as part of the bar, so the overlap is worse than
      cosmetic.
      Lift it to 126px (= 60 CTA offset + 56 CTA height + 10 gap) and take the
      panel up with it. Scoped with :has() so ONLY pages that actually render
      a sticky CTA move — the tab-bar-only pages keep helper.css's 72px.
      Specificity (0,3,1) beats helper.css's `[data-p74h-shell="m"] .p74h-launch`
      (0,2,0), so this holds whichever sheet loads last. Browsers without
      :has() simply drop the rule and keep today's behaviour.
   -------------------------------------------------------------------------- */
body.m-body:has(.m-sticky-cta) .p74h-launch {
  bottom: calc(126px + env(safe-area-inset-bottom, 0px));
}
body.m-body:has(.m-sticky-cta) .p74h-panel {
  bottom: calc(182px + env(safe-area-inset-bottom, 0px));
}
