/* Deepening pass, 5 Sep 2026: loads last so it governs the page family's shared rules. */
/* Closing: the loose pieces gather into the mark as the section arrives. */
.closing-mark{position:absolute;left:7%;top:50%;width:360px;height:360px;transform:translateY(-50%);pointer-events:none}
.closing-mark img,.closing-mark canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.closing-mark img{opacity:.96;transition:opacity .2s}
.closing-mark canvas{opacity:0;transition:opacity .2s}
.closing-mark.motion-ready canvas{opacity:1}.closing-mark.motion-ready img{opacity:0}
.closing-mark{width:420px;height:420px}
@media(min-width:701px){.closing>div:last-child{margin-left:40%}}
@media(max-width:1000px) and (min-width:701px){.closing-mark{width:300px;height:300px;left:4%}}
@media(max-width:700px){.closing{display:flex;flex-direction:column;padding-bottom:70px;min-height:0}.closing>div:last-child{margin:0;order:0}.closing h2{font-size:41px}.closing .closing-mark{position:relative;order:1;left:auto;top:auto;bottom:auto;right:auto;transform:none;width:280px;height:280px;margin:44px auto 0}.closing .closing-mark canvas,.closing .closing-mark img{position:absolute;inset:0}}
@media(prefers-reduced-motion:reduce){.closing-mark canvas{display:none!important}.closing-mark img{opacity:.96!important}}

/* Round-two repairs, 5 Sep 2026. */
.closing-mark{width:480px;height:480px}
/* The customer journey is laid as two courses of tesserae; the stones mark stages without a second numbering system. */
.journey-art path{stroke:#d6be9b;stroke-width:12;stroke-dasharray:11 3;stroke-linecap:butt}.journey-art path.course-two{stroke:#c9ad84;stroke-dasharray:11 3;stroke-dashoffset:7}
.journey-stone{width:34px;height:34px;font-size:0;box-shadow:3px 4px #c2c6b3}
/* Chooser: the two columns share a top edge and the scene follows the reader down the choices. */
.services{align-items:start}.service-detail{min-height:0}
/* Founders: the portrait takes the full column height rather than leaving a void beneath it. */
.about{align-items:stretch}.founder-portrait{display:flex;flex-direction:column;height:100%}.founder-portrait img{flex:1;height:auto!important;min-height:430px;object-fit:cover}
/* Roadmap map sits flat in the page's material system. */
.course-map{transform:none;box-shadow:none;border:9px solid #dbc5a1}
@media(max-width:1000px) and (min-width:701px){.closing-mark{width:300px;height:300px}}
@media(max-width:700px){.service-scene{position:relative;top:auto}.founder-portrait img{min-height:0;flex:none}.about{display:block}.closing .closing-mark{width:280px;height:280px}}
/* Closing gather timing: the mark is complete before the reader reaches the footer. */


/* Round three, 5 Sep 2026. */
/* The Roadmap map is laid in the same material: a tessera ground, a tessera river, milestones as medallions. */
.course-map .contours{display:none}.map-river{stroke:#a9b6a1;stroke-width:22;stroke-dasharray:9 3;opacity:.8}.map-road-base{stroke:#c9ad84;stroke-width:10;stroke-dasharray:8 3}.map-stop circle{stroke-width:4}.map-stop text{font-size:27px}.map-place{font-size:13.5px;letter-spacing:1.4px}.map-caption{font-size:12.5px;padding-bottom:15px}
/* The chooser reads as three choices: each row carries a tessera, the active one in imperial red. */
.service-choices>p{font-size:14px}.service-choice{font-size:17px;color:#6f4f45;padding:21px 0;border-bottom:1px solid #d9c3b0}.service-choice.active{color:var(--ink)}.tile-mark{display:inline-block;width:14px;height:14px;flex:none;background:#cdb89c;border-radius:2px;font-size:0;box-shadow:2px 3px #e4d3bf;transform:rotate(6deg);transition:background .25s}.active .tile-mark{background:#963c2e;box-shadow:2px 3px #d9b5a2}
/* Mobile: the D is the subject of the first screen. */
@media(max-width:700px){.nav{height:72px}.hero{padding-top:18px}.hero h1{font-size:58px;margin-top:18px}.hero-description{font-size:15px;max-width:330px}.hero .button{margin-top:22px}.hero-secondary{margin-top:18px}.scroll-note{display:none}.hero-art{margin-top:-36px}.sprint-feature{padding-top:0}}

@media(max-width:420px){.hero .button,.sprint-feature .button,.closing .button{white-space:nowrap;font-size:11.5px;gap:12px;padding:15px 16px}}

/* Round four. Subtraction: the scroll cue repeated the button; the FAQ heading no longer reserves an empty half column. */
.scroll-note{display:none}
.questions{display:block;max-width:960px}.questions h2{margin-bottom:34px}
@media(max-width:700px){.hero-art{margin-top:-30px}.sprint-feature{padding-top:24px}.sprint-feature .eyebrow{margin-top:0}}

/* Subtraction: the scroll-reveal fade was a generic tell and left copy near-invisible in any un-triggered state. Content is always legible. */
.has-motion .reveal.pending{opacity:1;translate:none}.reveal{transition:none}

/* Post-cap integrity fixes: the journey rail is laid at a legible tessera scale. */
.journey{min-height:150px;padding-top:44px}.journey-art{inset:0 0 34px}.journey-art path{stroke-width:22;stroke-dasharray:12 3}.journey-art path.course-two{stroke-dashoffset:8}.journey-stone{width:40px;height:40px}
@media(max-width:700px){.journey{min-height:130px;padding-top:30px}.journey-art path{stroke-width:18;stroke-dasharray:10 3}.journey-stone{width:32px;height:32px}}

/* Founders as a pair: two portraits at one size and crop, captions beneath. */
.founders-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;height:auto}
.founders-pair .founder-portrait{height:auto;display:block}
.founders-pair .founder-portrait img{width:100%;aspect-ratio:3/4;height:auto!important;min-height:0;object-fit:cover;object-position:50% 30%;border-radius:3px;display:block;flex:none}
.founders-pair figcaption{font-size:12px;margin-top:12px}
.about{align-items:center}
@media(max-width:700px){.founders-pair{gap:12px}.founders-pair figcaption{font-size:11px}}

/* The illustrative sample page carries one line of body copy. */
.sample-content>p.sample-body{font-size:8.5px;letter-spacing:0;line-height:1.5;margin:10px 0 0;max-width:250px;color:#324736}

/* About: both founders get the same profile layout; the second mirrors the first. */
.founder-daniel{grid-template-columns:1.1fr 1fr}.founder-daniel figure{order:2}.founder-daniel figure img{aspect-ratio:3/4;height:auto;object-position:50% 30%}.founder-daniel .prose h2{margin-top:23px}
@media(max-width:700px){.founder-daniel figure{order:0}}

/* Production additions (import-mosaic.py). */
.page-privacy .legal-layout:before{content:none!important;display:none!important}
.legal-layout aside .preview-notice{display:none}
.consent{position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fcf8ef;border-top:1px solid #d9c3b0;padding:16px 7%;display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap;box-shadow:0 -8px 24px #5c241d14}
.consent p{font-size:14px;line-height:1.5;max-width:640px}.consent p a{text-decoration:underline;text-underline-offset:4px}
.consent div{display:flex;gap:10px;flex:none}.consent button{font:inherit;font-size:14px;font-weight:600;padding:11px 18px;border:0;border-radius:4px;cursor:pointer}
.consent-reject{background:transparent;color:#735b62}.consent-accept{background:#7b2924;color:#fff8ee;box-shadow:0 3px 0 #4c211b}
.message-preview h3{margin-bottom:12px}.message-preview a{display:inline-block;margin-top:12px;text-decoration:underline}
.contact-form .hp{display:none}
