/* Marketing presentation layered on the ORIGINAL, unchanged LiftShift site.css.
   Product interfaces stay in isolated documents and never load this file. */
:root{--blue:var(--lift);--green:var(--shift);--muted-text:var(--muted)}
/* Smooth scrolling for links within a page only: marketing.js adds .smooth-scroll after load, so a link from another page
   lands at once instead of animating while the frames above it settle (link landing check, 2026-10-31). */
html{scroll-padding-top:90px}html.smooth-scroll{scroll-behavior:smooth}
body{overflow-x:clip}
.masthead .wrap{max-width:1280px}
.masthead .brand img{width:28px;height:32px;flex:none}
.masthead .nav{gap:0}
.masthead .nav-top,.masthead .nav-link{font-size:.90625rem}
.masthead .nav-top{padding-left:9px;padding-right:9px}
.masthead .nav-caret{padding-left:3px;padding-right:8px}
.masthead .nav-link,.masthead .nav-item.current .nav-link{padding-inline:9px 3px;box-shadow:none}
.masthead .nav-item>a.nav-top,.masthead .nav-item.current>a.nav-top{padding-inline:9px;box-shadow:none}
.masthead .nav-item.current>.nav-split::after,.masthead .nav-item.current>a.nav-top::after{content:none;display:none}
/* The active rule belongs to the text, excluding link padding and the caret. */
.masthead .nav-label{position:relative;display:inline-block;line-height:1.25;white-space:nowrap}
.masthead .nav-item.current .nav-label::after{content:"";position:absolute;top:calc(100% + 6px);inset-inline:0;height:2px;background:var(--brand-green-deep);pointer-events:none}
.masthead .book{font-size:.875rem;padding-inline:14px}
.main-nav .panel{border-radius:8px}
.main-nav .panel.two{min-width:590px;max-width:min(640px,calc(100vw - 48px))}
.button svg,.text-link svg,.path-link svg{width:17px;height:17px;flex:none}
.button.small{min-height:44px}
.button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.text-link{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:600;text-decoration:none}
.text-link:hover{text-decoration:underline}
.workflow-links{display:flex;flex-wrap:wrap;gap:4px 24px;margin-top:16px}
.blue{color:var(--lift)}
.eyebrow,.feature-label,.label{font:500 .8125rem/1.4 var(--mono);letter-spacing:.035em;color:var(--muted)}
.eyebrow{margin:0 0 14px}
.quiet,.media-caption{font-size:.875rem;line-height:1.6;color:var(--muted)}

.section{padding:clamp(48px,5.5vw,80px) 0}
.section.wash,.wash{background:var(--ground)}
.section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px;margin-bottom:36px;align-items:end}
.section-head h2,.section h2,.content-section h2,.closing h2{font-size:clamp(1.75rem,1.1rem + 1.6vw,2.625rem);line-height:1.12;letter-spacing:-.025em;font-weight:600}
.section-head p{margin:0;max-width:58ch;color:var(--ink-2)}
.balanced-home{background:var(--bg);padding-top:clamp(28px,3.5vw,48px)}
/* Home hero (design pass, 2026-10-30). Desktop: the copy column (kicker, headline, intro, actions, proof points) sits
   beside the product and is centred on it, so the space is shared above and below the copy rather than left under it.
   The product column never drops below 680px, where its next layout needs 656px. Below 1240px it stacks. */
.balanced-home .hero-grid{grid-template-areas:'. vis' 'top vis' 'bot vis' 'proof vis' '. vis';grid-template-columns:minmax(0,5fr) minmax(680px,7fr);grid-template-rows:1fr auto auto auto 1fr;column-gap:48px;row-gap:0;align-items:start}
.balanced-home .hero-top h1 .ln{display:block}
.balanced-home .t-hero{font-size:clamp(2.75rem,.5rem + 3.2vw,3.25rem);line-height:1.03;letter-spacing:-.035em}
.balanced-home .t-hero .ln{text-wrap:balance}
.balanced-home .hero-top .kicker{margin-bottom:18px;font-size:.75rem}
.balanced-home .hero-vis{margin:0;max-width:none;min-width:0}
.balanced-home .hero-product{margin-inline:auto}
/* From 1240px the product column is 680px at every width, and the example's tallest screen there is 828px (measured
   over a full loop, 2026-10-30). Starting the frame at that height keeps the copy centred beside it from moving
   when the example reaches that screen; review/frame_height_check.js fails if it ever moves. */
@media(min-width:1240px){.balanced-home .hero-product iframe{min-height:828px}}
/* Stacked, from 944px the product is 880px wide and its tallest screen is 856px, so the page below doesn't jump once
   after load. Narrower, its width follows the screen; the frame grows once there. */
@media(min-width:944px) and (max-width:1239px){.balanced-home .hero-product iframe{min-height:856px}}
.balanced-home .hero-bot{margin-top:24px}
.balanced-home .hero-bot .lede{margin-top:0;font-size:1.125rem;line-height:1.55}
.hero-product{width:100%;overflow:hidden;min-width:0}
.hero-product iframe{display:block;border:0;width:100%;background:transparent}
.home-proof{grid-area:proof;display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:32px 0 0;padding:24px 0 0;list-style:none;border-top:1px solid var(--line);font-size:.875rem;font-weight:550;color:var(--ink-2)}
.home-proof li{display:flex;align-items:center;gap:9px;margin:0}
.home-proof i{width:7px;height:7px;border-radius:50%;background:var(--shift);flex:none}
.pl-mod .pl-go svg{width:18px;height:18px}
.home-feature-panels .pl-mod{padding-bottom:22px}
.home-feature-panels .pl-mod dd p{margin-top:0}
.demo-viewport{max-width:100%;overflow:auto;overscroll-behavior-x:contain;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}
.demo-viewport iframe{display:block;border:0;width:100%;max-width:none}
.reason-list{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;margin:0;border-top:1px solid var(--line-strong)}
.reason-list li{padding:25px 30px 20px 0}
.reason-list li+li{border-left:1px solid var(--line);padding-left:30px}
.reason-number{font:500 .8125rem var(--mono);color:var(--lift)}
.reason-list h3{font-size:1.25rem;line-height:1.3;margin:14px 0 12px}
.reason-list p{font-size:1rem;line-height:1.6;color:var(--ink-2)}
.page-hero{padding:clamp(42px,5vw,72px) 0;background:var(--bg);border-bottom:1px solid var(--line)}
.page-hero:not(.platform-intro)>.wrap{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:32px 64px;align-items:end}
.page-hero:not(.platform-intro) h1{font-size:clamp(2.25rem,3.4vw,3.3rem);line-height:1.07;font-weight:700;letter-spacing:-.03em;max-width:19ch}
.page-hero .intro{font-size:1.125rem;line-height:1.6;color:var(--ink-2);max-width:65ch}
.page-hero .button{margin-top:12px}
.page-hero .quiet{margin-top:16px}
.page-hero.compact{padding:44px 0 48px}
html:has(.feature-subnav){scroll-padding-top:145px}
.product-visual{margin:0;border:1px solid var(--frame-line);border-radius:10px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow-lg)}
.figure-top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:var(--lift-tint);border-bottom:1px solid var(--line)}
.figure-top .label{font-size:.6875rem;letter-spacing:.015em;color:var(--ink-2)}
.product-visual>a{display:block;background:#fff}
.product-visual img{display:block;width:100%;height:auto;max-width:none}
.product-visual figcaption{display:flex;justify-content:space-between;gap:16px;padding:13px 16px;font-size:.75rem;line-height:1.5;color:var(--muted)}
.product-visual figcaption a{white-space:nowrap;font-weight:600}
.technical-columns{display:grid;grid-template-columns:1fr 1fr;gap:60px}
.technical-columns article{border-top:1px solid var(--line-strong);padding-top:22px}
.technical-columns h3{font-size:1.4rem;line-height:1.3;margin:14px 0 16px}
.technical-columns p{font-size:1rem;line-height:1.7;color:var(--ink-2)}
.technical-columns .feature-label{color:var(--lift)}
.content-section{padding:46px 0;border-top:1px solid var(--line);background:var(--surface)}
.content-section:nth-of-type(odd){background:var(--bg)}
.content-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:28px 64px;align-items:start}
.content-grid h2{font-size:clamp(1.65rem,2.1vw,2.2rem);line-height:1.16}
.content-body>p{color:var(--ink-2);max-width:77ch}
.content-body ul{color:var(--ink-2);line-height:1.7}
.content-body li+li{margin-top:8px}
.detail-rows{border-top:1px solid var(--line);margin:20px 0}
.detail-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:20px;border-bottom:1px solid var(--line);padding:20px 0}
.detail-row h3{font-size:1rem;line-height:1.4}
.detail-row p{font-size:.9375rem;line-height:1.65;color:var(--ink-2);margin:0}
.screenshot-row{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:48px;align-items:center}
.screenshot-row h2+p{margin-top:22px;color:var(--ink-2)}
.demo-intro{padding:40px 0 32px}
.demo-intro>.wrap{display:flex;justify-content:space-between;align-items:flex-end;gap:30px}
.demo-intro h1{font-size:clamp(2rem,3vw,3rem);line-height:1.1}
.demo-intro p:not(.eyebrow){font-size:1rem;line-height:1.6;color:var(--ink-2);max-width:80ch;margin-top:20px}
.demo-intro .text-link{flex:none}
.demo-stage{padding-bottom:45px}
.foot-balanced{grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));gap:42px}
.foot-balanced .brand img{width:36px;height:41px}
.foot-balanced>div:first-child p{font-size:.875rem}
.foot-balanced .ft{font-weight:600;font-size:.875rem}
.foot-balanced ul a{font-size:.875rem;min-height:38px;line-height:1.4}
.resource-list{padding:0!important;list-style:none;margin:0;border-top:1px solid var(--line)}
.resource-list li{margin:0!important;border-bottom:1px solid var(--line)}
.resource-list a{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 0;text-decoration:none;font-weight:600}
.resource-list small{display:block;margin-top:5px;color:var(--muted);font-size:.875rem;font-weight:400}
.resource-list svg{width:18px;height:18px;flex:none}
.faq-list details{border-bottom:1px solid var(--line);padding:18px 0}
.faq-list summary{font-weight:600;cursor:pointer;color:var(--ink);line-height:1.45}
.faq-list details p{margin-top:16px;font-size:1rem;color:var(--ink-2)}
.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.table-scroll table{width:100%;border-collapse:collapse;min-width:650px;font-size:.9375rem}
.table-scroll th,.table-scroll td{text-align:left;padding:18px 20px;border-bottom:1px solid var(--line);vertical-align:top}
.table-scroll thead{background:var(--lift-tint);color:var(--ink)}
.table-scroll td{color:var(--ink-2)}
.page-hero:has([data-contact-title])>.wrap,.page-hero.compact:has(>.wrap>h1)>.wrap{display:block}
.page-hero [data-contact-title]{max-width:100%}
.page-hero [data-contact-help]{margin-top:22px;max-width:75ch}
.contact-layout{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:70px;padding-top:44px;padding-bottom:72px}
.contact-form{display:grid;gap:22px;background:var(--surface);padding:28px;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.contact-form .field{margin:0}
.contact-form label{font-size:.875rem;font-weight:600}
.contact-form input,.contact-form select,.contact-form textarea{font-size:1rem;border-radius:5px}
.contact-form .button,.draft-panel .button{background:var(--lift);color:var(--on-lift);border:1px solid transparent;border-radius:4px;min-height:48px;padding:12px 20px;font:600 1rem var(--sans);display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;text-decoration:none;width:fit-content}
.contact-form .quiet{margin:0;font-size:.8125rem}
.contact-form .button:hover,.draft-panel .button:hover{background:var(--lift-hover)}
.side-block{padding:22px 0;border-top:1px solid var(--line)}
.side-block:first-child{padding-top:0;border-top:0}
.side-block h2{font-size:1.6rem;line-height:1.2;margin:12px 0 18px}
.side-block p{font-size:.9375rem;color:var(--ink-2)}
.side-block li{font-size:.9375rem;line-height:1.6;margin-bottom:9px;color:var(--ink-2)}
.side-block .label{font-size:.75rem}
.draft-panel{padding:28px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.draft-panel h2{font-size:2rem;margin-bottom:18px}
.draft-panel textarea{width:100%;min-height:280px;padding:16px;background:var(--ground);color:var(--ink);font:400 .875rem/1.6 var(--mono);border:1px solid var(--line-strong);border-radius:5px;margin:12px 0 20px}
.form-actions{display:flex;flex-wrap:wrap;gap:12px}
.draft-panel .button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.inline-back{padding:0;background:none;border:0;cursor:pointer;color:var(--lift);font:600 .9375rem var(--sans);min-height:44px;text-decoration:underline}
.status{font-size:.875rem;color:var(--shift);margin-top:16px}
/* Contact form modes (contact_form.py): send posts to the Worker after a Turnstile check, draft prepares an email. */
.contact-form[data-mode="send"] [data-for-mode="draft"],.contact-form[data-mode="draft"] [data-for-mode="send"]{display:none}
.contact-form .form-actions{align-items:center}
.contact-form .status{margin:0}.contact-form .status:empty{display:none}
.contact-form .status[data-tone="error"]{color:var(--ax-warn-ink)}
.contact-form [aria-invalid="true"]{border-color:var(--ax-warn-ink);box-shadow:0 0 0 1px var(--ax-warn-ink)}
.contact-check:empty,.contact-form[data-mode="draft"] .contact-check{display:none}
/* A field no person sees or reaches (aria-hidden, tabindex -1); a filled one marks an automated sender. */
.contact-trap{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.image-dialog{width:calc(100vw - 40px);max-width:1820px;height:auto;max-height:calc(100vh - 40px);padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-lg)}
.image-dialog::backdrop{background:#07101dd9}
.dialog-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 16px;font-size:.875rem;border-bottom:1px solid var(--line)}
.dialog-links{display:flex;gap:18px;align-items:center}
.icon-button{display:inline-grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);cursor:pointer;flex:none}
.icon-button svg{width:20px;height:20px}
.image-scroll{max-height:calc(100vh - 115px);overflow:auto;background:#fff}
.image-scroll img{display:block;width:100%;min-width:1000px;height:auto;max-width:none}
.search-context-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:36px 52px;align-items:center}
.relationship-guide ol{list-style:none;margin:0 0 16px;padding:0}
.relationship-guide li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:19px 0;border-bottom:1px solid var(--line)}
.relationship-guide li:first-child{padding-top:0}
.relationship-guide li>span{font:500 .75rem/1.8 var(--mono);color:var(--lift)}
.relationship-guide h3{font-size:1rem;line-height:1.4;margin:0 0 6px}
.relationship-guide li p{font-size:.9375rem;line-height:1.6;color:var(--ink-2);margin:0}
.relationship-guide>.quiet{margin:12px 0 0;font-size:.8125rem}
@media(forced-colors:active){.masthead .nav-item.current .nav-label::after{background:LinkText}}
@media(max-width:900px){.search-context-grid{grid-template-columns:1fr;gap:28px}.relationship-guide ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.relationship-guide li{display:block;border-bottom:0;border-top:1px solid var(--line);padding:16px 0 0}.relationship-guide li:first-child{padding-top:16px}.relationship-guide h3{margin-top:10px}}
@media(max-width:600px){.relationship-guide ol{grid-template-columns:1fr;gap:0}.relationship-guide li{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;padding:18px 0}.relationship-guide h3{margin-top:0}}
@media(min-width:1101px) and (max-width:1220px){.masthead .wrap{padding-inline:24px;gap:8px}.masthead .nav-top,.masthead .nav-link{font-size:.8125rem}.masthead .brand{gap:7px}.masthead .brand .w1,.masthead .brand .w2{font-size:1rem}.masthead .book{font-size:.8125rem;padding-inline:10px}}
@media(max-width:1100px){.masthead .nav-top,.masthead .nav-link{font-size:1.0625rem}.masthead .nav-top{min-height:56px}.masthead .nav-split{width:100%}.masthead .nav-split>.nav-link{flex:1;min-height:56px}.masthead .nav-caret{width:50px;min-height:56px}.main-nav .panel.two{min-width:0;max-width:none;grid-template-columns:1fr 1fr}.masthead .nav-mobile-cta .text-link{padding-inline:10px}.masthead .nav.open{top:69px}.balanced-home .hero-bot .lede{font-size:1rem}.home-proof{font-size:.8125rem}}
@media(max-width:1239px){.balanced-home .hero-grid{grid-template-areas:'top' 'bot' 'vis' 'proof';grid-template-columns:minmax(0,1fr);grid-template-rows:none;gap:25px}.balanced-home .hero-bot{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 30px;margin-top:0}.balanced-home .hero-bot .lede{font-size:1.125rem}.balanced-home .hero-vis{margin-top:8px}.balanced-home .hero-product{max-width:880px}.home-proof{flex-direction:row;align-items:center;justify-content:space-between;gap:12px 24px;margin-top:3px;padding-top:22px}}
@media(max-width:900px){.home-proof{flex-wrap:wrap;justify-content:flex-start}.platform-intro-grid,.screenshot-row,.content-grid,.closing>.wrap,.section-head,.page-hero:not(.platform-intro)>.wrap{grid-template-columns:minmax(0,1fr);gap:28px}.page-hero:not(.platform-intro) h1{max-width:25ch}.content-section{padding:38px 0}.content-grid h2{max-width:28ch}.reason-list{grid-template-columns:1fr}.reason-list li{padding:24px 0;display:grid;grid-template-columns:32px minmax(0,1fr) minmax(0,1.4fr);gap:24px;align-items:start}.reason-list li+li{border-left:0;padding-left:0;border-top:1px solid var(--line)}.reason-list h3{margin:0}.reason-list p{margin:0}.technical-columns{gap:32px}.contact-layout{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:32px}.foot-balanced{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.foot-balanced>div:first-child{grid-column:1/-1}.demo-intro>.wrap{flex-direction:column;align-items:flex-start}html:has(.feature-subnav){scroll-padding-top:90px}}
@media(max-width:600px){.main-nav .panel.two{grid-template-columns:1fr}.balanced-home{padding-top:28px}.balanced-home .t-hero{font-size:2.65rem}.balanced-home .hero-bot{display:block}.balanced-home .hero-product{margin-top:6px}.home-proof{display:grid;gap:12px}.pl-mods{gap:14px}.reason-list li{grid-template-columns:24px minmax(0,1fr);gap:12px}.reason-list p{grid-column:2}.reason-list h3{font-size:1.125rem}.page-hero:not(.platform-intro) h1{font-size:2.125rem}.page-hero .intro{font-size:1rem}.page-hero{padding:32px 0}.page-hero.compact{padding:32px 0}.figure-top{padding:10px 12px}.figure-top .label:last-child{display:none}.product-visual figcaption{flex-direction:column;gap:6px;padding:12px}.product-visual figcaption a{min-height:30px}.technical-columns{grid-template-columns:1fr;gap:26px}.detail-row{grid-template-columns:1fr;gap:8px}.contact-layout{grid-template-columns:1fr;padding-top:28px;gap:40px}.contact-form,.draft-panel{padding:20px}.field-grid{grid-template-columns:1fr}.dialog-toolbar{align-items:flex-start;font-size:.8125rem}.dialog-toolbar>span{display:none}.dialog-links{width:100%;justify-content:space-between}.foot-balanced{grid-template-columns:1fr 1fr;gap:28px 20px}.foot-balanced>div:last-child{grid-column:1/-1}.foot-balanced>div:last-child ul{grid-template-columns:1fr 1fr;gap:0 20px}.content-body{min-width:0}.workflow-links{gap:0 18px}.image-dialog{width:calc(100vw - 20px);max-height:calc(100vh - 20px)}}
@media(prefers-reduced-motion:reduce){html,html.smooth-scroll{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media print{.masthead,.feature-subnav,.image-dialog,.site-foot{display:none}.sec,.section,.content-section,.page-hero,.closing{padding:24px 0;break-inside:auto}iframe{max-height:none}.pl-mod{break-inside:avoid}}

@media(min-width:901px){#features .pl-mods{grid-template-columns:repeat(2,minmax(0,1fr))}}

.product-visual.portrait{width:100%;max-width:480px;margin-inline:auto}
