/*
 * HouseChalk — the mark, and which one goes where.
 *
 * Load after states.css. Everything here replaces an "HC" initials tile that
 * stood in for the real asset while there was not one.
 *
 * TWO FAMILIES, AND THEY ARE NOT A RECOLOR OF EACH OTHER. The brand ships the
 * mark in green and in blue, and it ships a SECOND lockup for the builder: the
 * same mark knocked out of a filled tile carrying a blueprint grid, with
 * BUILDER set under the wordmark. So the product is named by the LOCKUP and the
 * accent is carried by the COLOR, and the two agree with this deck's roles
 * already — green is the homeowner's, blue is the builder's.
 *
 *     .logo-mark            the plain mark        both products, and NEUTRAL
 *     .logo-lockup          mark + HouseChalk     the homeowner's product
 *     .logo-builder-lockup  + HouseChalk BUILDER  the builder's product
 *
 * NEUTRAL IS A REAL STATE AND IT IS WHY .logo-mark EXISTS. There is one
 * credential store and two products, so log in, forgot, reset, verify and the
 * two-account chooser are shared surfaces. A screen that cannot know which
 * product you hold must not wear either lockup — the plain mark is what it
 * wears, and that is the same argument the login screen already makes about
 * refusing to ask whether you are a homeowner or a builder.
 *
 * IN DARK THE HOMEOWNER MARK GOES WHITE AND THE BUILDER'S DOES NOT. The
 * homeowner mark is an OUTLINE in mid-sage, and an outline that thin on
 * #26302B is a smudge. The builder mark is a FILLED tile with the shape knocked
 * out in white, so it carries its own ground and holds on either theme. One
 * asset changes and one does not, and the reason is the drawing rather than the
 * palette.
 *
 * WHAT IS MISSING FROM THE SET, said plainly rather than worked around.
 *
 * The brand ships the MARK in green and in white, but ships the LOCKUP only in
 * green and blue. logo-lockup-white.svg is derived here: identical geometry,
 * one fill swapped from rgb(89,166,134) to the rgb(235,235,235) the brand's own
 * white mark uses. Nothing was drawn — it is the sibling export that was not
 * made. If a real one arrives, overwrite that file and delete this paragraph.
 *
 * The builder lockup has no light export either, and drawn in dark it was
 * genuinely unreadable rather than merely weak: the HouseChalk label is the
 * same rgb(11,75,136) as the tile, so on a dark card it measured under 2:1.
 * The fix is available because the file is grouped — HouseChalk-Label,
 * Builder-Label, Grid-Fill, Grid-Lines — so logo-builder-lockup-dark.svg flips
 * ONLY the HouseChalk label to the brand's white. The TILE KEEPS ITS BLUE,
 * because a filled tile with a white knockout carries its own ground and needs
 * no theme, and BUILDER keeps rgb(92,135,176), which is the grid's own blue and
 * preserves the light lockup's two-tone relationship instead of flattening both
 * labels into one white. Again: no geometry touched, one fill moved.
 *
 * A NOTE ON WHY THESE DO NOT REUSE .mk. The initials tile sets `background` as
 * a shorthand, which resets background-image at a specificity a single class
 * cannot beat. Rather than fight that with !important on every rule, a logo is
 * its own element: .mk is initials, .logo is a mark, and nothing has to know
 * about both.
 */

.logo {
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  flex: none;
}

.logo-mark            { background-image: url('logo-mark.svg'); }
.logo-lockup          { background-image: url('logo-lockup.svg'); }
.logo-builder-lockup  { background-image: url('logo-builder-lockup.svg'); }
.logo-wordmark        { background-image: url('logo-wordmark-white.svg'); }

/* On the hero gradient the ink does not flip with the theme, for the reason
   hc.css gives at --on-hero: that surface is dark in both. So the splash takes
   the white mark in light mode too. This is not a dark-mode rule. */
.logo-mark.on-hero { background-image: url('logo-mark-white.svg'); }

:root[data-theme="dark"] .logo-mark   { background-image: url('logo-mark-white.svg'); }
:root[data-theme="dark"] .logo-lockup { background-image: url('logo-lockup-white.svg'); }
:root[data-theme="dark"] .logo-builder-lockup { background-image: url('logo-builder-lockup-dark.svg'); }

/* ---- the front door -------------------------------------------------- */
/* Where the "HC" tile used to be. A tile behind the mark would be fighting the
   homeowner outline and would be a tile inside a tile on the builder's. */
.door-head .logo { margin: 0 auto 16px; }
.door-head .logo-mark           { width: 56px;  height: 56px; }
.door-head .logo-lockup         { width: 176px; height: 48px; }
.door-head .logo-builder-lockup { width: 200px; height: 56px; }

/* ---- the splash ------------------------------------------------------ */
.cold .logo-mark     { width: 64px;  height: 64px; }
.cold .logo-wordmark { width: 176px; height: 32px; }

/* ---- an account-less page -------------------------------------------- */
/* states.css already states the rule at .lnk-from: the builder comes first and
   the product mark second and smaller, because a stranger knows Dave and does
   not know us, and a page opening on a brand they have never heard of reads as
   smishing. The slot was described there and never drawn. This is it, and it
   sits at the far end of the row rather than beside the sender, so that no
   reading of the row puts the two marks in the same breath. */
.lnk-from .logo-mark {
  margin-left: auto;
  width: 24px; height: 24px;
  opacity: 0.5;
}

/* ---- the in-app header ------------------------------------------------ */
/* 64 of these, on every app screen, and it is the most-seen brand surface in
   the product. THE MARK ONLY, and no wordmark, which is a change from the
   first pass at this.

   The header's job is orientation and the brand is not the orientation. "The
   Hollis House" is the h1 directly under it, and a colored wordmark above a
   serif house name inverts the hierarchy: the loudest thing on the screen
   should be the house. Signed in, the wordmark also answers a question nobody
   has — which product you are in is already carried by the ACCENT, which is
   the whole job of role-colors.css, and whose account by the dock's eyebrow.
   The wordmark earns its place on the splash and on the two signup screens,
   where the product is introducing itself. Not on screen 400.

   AND THE BUILDER KEEPS HIS DISTINCTION WITHOUT THE WORD, because his mark IS
   the grid tile. So dropping BUILDER from the chrome costs nothing: the two
   products still read apart at 30px, by drawing and by color.

   His tile needs no dark variant either — a filled tile with a white knockout
   carries its own ground — so the header path has one fewer derived asset than
   the lockup version did. */
.brand .logo-mark { width: 32px; height: 32px; }

[data-role="builder"] .brand .logo-mark {
  background-image: url('logo-builder-mark.svg');
}
/* Order matters and specificity does not resolve it: this and the generic dark
   rule above both weigh 0,3,0, so the more specific INTENT has to come later in
   the file. Verified in a browser rather than reasoned about. */
:root[data-theme="dark"] [data-role="builder"] .brand .logo-mark {
  background-image: url('logo-builder-mark.svg');
}

/* ==========================================================================
   THE BLUEPRINT GRID
   ==========================================================================
   THE GRID CLASSES WERE HERE AND ARE GONE. `.blueprint` and
   `.blueprint-on-shell` drew a 32px grid on a page-colored and a solid-chrome
   ground, under a rule that was mostly a restriction: shell, navigation,
   launch, onboarding and empty-state surfaces only, never behind reading copy,
   controls, documents, evidence or media.

   The package removes the pattern outright, so the restriction has nothing
   left to restrict. Worth recording what the deletion actually cost: measured
   2026-09-05, both classes had ZERO call sites in the deck's markup. They were
   declared, documented at length, and never once worn. */
