/* ---------------------------------------------------------------------------
   Homepage stylesheet.

   Everything down to the "NavLogic additions" banner is the compiled stylesheet
   from the new homepage design, kept verbatim so the layout, type scale and
   palette stay exactly as designed. Local changes live in the block at the end.
   --------------------------------------------------------------------------- */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/geist-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/geist-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/geist-mono-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/geist-mono-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
:root { --font-geist-sans: 'Geist', Arial, Helvetica, sans-serif; --font-geist-mono: 'Geist Mono', ui-monospace, monospace; }

/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.start{inset-inline-start:var(--spacing)}.grow{flex-grow:1}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:root{--orange:#ff5700;--orange-dark:#d94700;--ink:#181818;--muted:#676767;--line:#e7e3df;--cream:#f7f4ef;--paper:#fffdf9}*{box-sizing:border-box}html{scroll-behavior:smooth;text-rendering:optimizelegibility}body{background:var(--paper);color:var(--ink);font-family:var(--font-geist-sans), Arial, Helvetica, sans-serif;margin:0}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}::selection{background:var(--orange);color:#fff}.page-shell{width:min(1240px,100% - 48px);margin:0 auto}.section{padding:126px 0}.site-header{z-index:50;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffdf9e6;border-bottom:1px solid #1c1c1c1a;height:78px;position:sticky;top:0}.nav-shell{justify-content:space-between;align-items:center;gap:30px;width:min(1320px,100% - 48px);height:100%;margin:0 auto;display:flex}.brand{flex:none;align-items:center;display:inline-flex}.brand img{width:143px;height:auto;display:block}.nav-links{gap:32px;margin-left:auto;display:flex}.nav-links a,.footer-links a{color:#5e5c59;font-size:13px;font-weight:650;transition:color .2s}.nav-links a:hover,.footer-links a:hover{color:var(--orange)}.button{border:1px solid var(--orange);background:var(--orange);color:#fff;border-radius:4px;justify-content:center;align-items:center;gap:18px;min-height:54px;padding:0 24px;font-size:14px;font-weight:720;transition:transform .2s,background .2s,box-shadow .2s;display:inline-flex;box-shadow:0 12px 28px #ff57002e}.button:hover{background:var(--orange-dark);transform:translateY(-2px);box-shadow:0 16px 34px #ff570040}.button:focus-visible,a:focus-visible{outline:2px solid var(--orange);outline-offset:4px}.button-small{min-height:44px;box-shadow:none;padding:0 18px;font-size:13px}.arrow{font-size:20px;line-height:1}.hero{background:#fffdf9;position:relative;overflow:hidden}.hero:before{content:"";opacity:.42;pointer-events:none;background-image:linear-gradient(#e8e2db 1px,#0000 1px),linear-gradient(90deg,#e8e2db 1px,#0000 1px);background-size:72px 72px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000c,#0000 78%);mask-image:linear-gradient(#000c,#0000 78%)}.hero-glow{filter:blur(2px);pointer-events:none;border-radius:999px;position:absolute}.hero-glow-one{background:radial-gradient(circle,#ff57002b,#0000 68%);width:560px;height:560px;top:-300px;right:15%}.hero-glow-two{background:radial-gradient(circle,#ffbe9947,#0000 68%);width:420px;height:420px;bottom:-280px;left:10%}.hero-grid{z-index:1;grid-template-columns:1.03fr .97fr;align-items:center;gap:74px;min-height:760px;padding:86px 0 92px;display:grid;position:relative}.hero-copy{max-width:685px}.eyebrow-pill{color:#8e3c10;letter-spacing:.09em;text-transform:uppercase;background:#ffffffb8;border:1px solid #f0c9b4;border-radius:999px;align-items:center;gap:10px;padding:9px 13px;font-size:11px;font-weight:760;display:inline-flex}.live-dot{background:var(--orange);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 5px #ff57001a}.hero h1{letter-spacing:-.062em;max-width:680px;margin:25px 0 0;font-size:clamp(56px,5.25vw,82px);font-weight:620;line-height:.97}.hero h1 span,.section-heading h2 span,.forwarders-title h2 span{color:var(--orange)}.hero-subheadline{color:#5f5d59;max-width:674px;margin:28px 0 0;font-size:17px;line-height:1.68}.hero-actions{align-items:center;gap:28px;margin-top:34px;display:flex}.text-link{color:#3f3d3a;align-items:center;gap:10px;font-size:14px;font-weight:700;display:inline-flex}.text-link span{color:var(--orange);font-size:18px}.hero-assurance{border-top:1px solid var(--line);flex-wrap:wrap;gap:9px 24px;margin-top:38px;padding-top:22px;display:flex}.hero-assurance span{color:#6c6965;letter-spacing:.055em;text-transform:uppercase;padding-left:15px;font-size:11px;font-weight:700;position:relative}.hero-assurance span:before{content:"";background:var(--orange);border-radius:50%;width:6px;height:6px;position:absolute;top:5px;left:0}.operator-console{color:#fff;background:#1d1d1d;border:1px solid #262626;border-radius:10px;position:relative;overflow:hidden;box-shadow:24px 28px #efeae4,0 36px 80px #1914103d}.operator-console:after{content:"AI";color:#ffffff06;pointer-events:none;font-size:210px;font-weight:800;line-height:1;position:absolute;bottom:-48px;right:-5px}.console-topbar{border-bottom:1px solid #ffffff17;justify-content:space-between;align-items:center;gap:20px;padding:27px 28px 24px;display:flex}.console-label{color:#fd9360;font-family:var(--font-geist-mono), monospace;letter-spacing:.13em;margin:0 0 7px;font-size:10px;font-weight:700}.console-topbar h2{letter-spacing:-.025em;margin:0;font-size:21px}.active-badge{color:#9ee2ba;text-transform:uppercase;background:#68cd9114;border:1px solid #68cd9133;border-radius:3px;align-items:center;gap:8px;padding:8px 10px;font-size:10px;font-weight:750;display:inline-flex}.active-badge span{background:#55c887;border-radius:50%;width:6px;height:6px;animation:2s ease-out infinite active-pulse;box-shadow:0 0 0 4px #55c8871f}.console-scan{z-index:3;opacity:0;pointer-events:none;background:linear-gradient(90deg,#0000,#ff5700cc,#0000);width:100%;height:1px;animation:5.5s ease-in-out infinite console-scan;position:absolute;top:92px;left:0;box-shadow:0 0 18px #ff570073}.email-card{background:linear-gradient(135deg,#ff570021,#ff57000a);border:1px solid #ff570059;border-radius:5px;gap:14px;margin:22px 22px 0;padding:17px;animation:5.5s ease-in-out infinite email-breathe;display:flex}.email-icon{background:var(--orange);color:#fff;width:39px;height:39px;font-family:var(--font-geist-mono), monospace;border-radius:3px;flex:none;place-items:center;font-weight:800;display:grid}.email-content{flex:1;min-width:0}.email-line{justify-content:space-between;gap:14px;display:flex}.email-line strong{font-size:12px}.email-line span,.email-content p{color:#ffffff73;font-size:10px}.email-content p{margin:6px 0 0}.decision-path{margin:9px 22px 0;padding:6px 0;position:relative}.path-line{background:#ffffff1f;width:1px;position:absolute;top:30px;bottom:30px;left:16px;overflow:hidden}.path-line:after{content:"";background:linear-gradient(to bottom, transparent, var(--orange), transparent);animation:3.6s ease-in-out infinite path-flow;position:absolute;inset:0;transform:translateY(-100%)}.decision-path article{z-index:1;grid-template-columns:33px 1fr auto;align-items:center;gap:12px;padding:14px 0;display:grid;position:relative}.path-check{width:33px;height:33px;color:var(--orange);background:#24201d;border:1px solid #ff570066;border-radius:50%;place-items:center;font-size:12px;font-weight:800;animation:5.5s ease-in-out infinite task-complete;display:grid}.path-step-two .path-check{animation-delay:.55s}.path-step-three .path-check{animation-delay:1.1s}.decision-path strong{font-size:12px;display:block}.decision-path p{color:#ffffff6b;margin:4px 0 0;font-size:10px}.decision-path small{color:#fd9360;font-family:var(--font-geist-mono), monospace;font-size:9px}.console-footer{z-index:1;background:#00000026;border-top:1px solid #ffffff14;justify-content:space-between;gap:16px;padding:18px 22px;font-size:10px;display:flex;position:relative}.console-footer span{color:#ffffff8c}.console-footer i{background:#55c887;border-radius:50%;width:6px;height:6px;margin-right:7px;display:inline-block}.console-footer strong{color:#fd9360;text-transform:uppercase;letter-spacing:.05em}.hero-rail{z-index:1;border-top:1px solid var(--line);background:#f7f4efdb;position:relative}.hero-rail-inner{justify-content:center;align-items:center;gap:28px;min-height:80px;display:flex}.hero-rail-inner span{color:#8a8782;text-transform:uppercase;letter-spacing:.08em;font-size:11px}.hero-rail-inner strong{font-family:var(--font-geist-mono), monospace;letter-spacing:.08em;font-size:11px}.hero-rail-inner i{background:var(--orange);border-radius:50%;width:4px;height:4px}.section-heading{grid-template-columns:1.3fr .7fr;align-items:end;gap:100px;display:grid}.kicker{color:var(--orange);letter-spacing:.16em;text-transform:uppercase;margin:0 0 20px;font-size:11px;font-weight:800}.section-heading h2,.daily-intro h2,.forwarders-title h2,.cta-inner h2{letter-spacing:-.05em;margin:0;font-size:clamp(42px,4.4vw,66px);font-weight:610;line-height:1.01}.section-heading>p{color:var(--muted);margin:0;font-size:15px;line-height:1.75}.how-section{background:var(--cream)}.logic-flow{grid-template-columns:repeat(4,1fr);gap:16px;margin-top:70px;display:grid;position:relative}.logic-track{z-index:0;background:#d9d2ca;height:1px;position:absolute;top:44px;left:11%;right:11%}.logic-card{z-index:1;background:#fffdf9c7;border:1px solid #ded8d0;border-radius:6px;flex-direction:column;min-height:390px;padding:22px;transition:transform .25s,border-color .25s,box-shadow .25s;display:flex;position:relative}.logic-card:hover{border-color:#ff570073;transform:translateY(-7px);box-shadow:0 20px 50px #2b231d14}.logic-top{justify-content:space-between;align-items:center;display:flex}.logic-number{border:1px solid var(--orange);background:var(--paper);width:44px;height:44px;color:var(--orange);font-family:var(--font-geist-mono), monospace;border-radius:50%;place-items:center;font-size:11px;font-weight:800;display:grid}.logic-top .arrow{color:#b8b0a8}.operator-mark{color:#fff;font-family:var(--font-geist-mono), monospace;letter-spacing:.09em;background:#1d1d1d;border-radius:2px;padding:7px;font-size:8px}.card-eyebrow{letter-spacing:.12em;text-transform:uppercase;margin:36px 0 10px;font-weight:800;color:#9b572f!important;font-size:9px!important}.logic-card h3{letter-spacing:-.035em;max-width:210px;min-height:55px;margin:0;font-size:23px;line-height:1.12}.logic-card>p{color:#706c67;margin:20px 0 24px;font-size:13px;line-height:1.65}.logic-meta{border-top:1px solid var(--line);color:#918b84;font-family:var(--font-geist-mono), monospace;letter-spacing:.03em;text-transform:uppercase;margin-top:auto;padding-top:17px;font-size:9px}.daily-section{color:#fff;background:#1b1b1b;position:relative;overflow:hidden}.daily-section:before{content:"OUTPUT";color:#ffffff06;letter-spacing:-.08em;font-size:clamp(110px,17vw,250px);font-weight:800;line-height:1;position:absolute;top:70px;right:-35px}.daily-intro{text-align:center;max-width:820px;margin:0 auto}.kicker-light{color:#fd9360}.daily-intro>p:last-child{color:#ffffff8c;max-width:640px;margin:25px auto 0;font-size:16px;line-height:1.7}.shipment-board{background:#222;border:1px solid #ffffff21;border-radius:8px;margin-top:70px;overflow:hidden;box-shadow:0 30px 90px #0000004d}.shipment-board-top{background:#262626;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:22px 28px;display:flex}.shipment-board-top>div:first-child{align-items:center;gap:16px;display:flex}.board-label{background:var(--orange);font-family:var(--font-geist-mono), monospace;letter-spacing:.1em;border-radius:2px;padding:7px 9px;font-size:8px;font-weight:800}.shipment-board-top strong{font-size:13px}.board-status{color:#a7a29d;text-transform:uppercase;align-items:center;gap:8px;font-size:10px;display:flex}.board-status span{background:#55c887;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 5px #55c8871a}.journey{grid-template-columns:repeat(5,1fr);padding:52px 28px 44px;display:grid;position:relative}.journey-line{background:#ffffff1a;height:2px;position:absolute;top:77px;left:11%;right:11%}.journey-line span{background:linear-gradient(90deg, var(--orange), #ffad82);width:100%;height:100%;display:block}.journey-step{z-index:1;padding:0 13px;position:relative}.journey-node{border:1px solid var(--orange);width:94px;height:50px;color:var(--orange);font-family:var(--font-geist-mono), monospace;text-align:center;text-transform:uppercase;background:#222;border-radius:4px;place-items:center;margin-bottom:26px;padding:0 8px;font-size:8px;font-weight:800;line-height:1.25;display:grid;box-shadow:0 0 0 7px #222}.journey-status{color:#fd9360;font-family:var(--font-geist-mono), monospace;letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px;font-size:8px;font-weight:700;display:inline-block}.journey-step h3{letter-spacing:-.025em;margin:0;font-size:17px}.journey-step p{color:#ffffff6e;max-width:175px;margin:10px 0 0;font-size:11px;line-height:1.55}.shipment-summary{background:#191919;border-top:1px solid #ffffff1a;grid-template-columns:.7fr .7fr .7fr 1.9fr;align-items:stretch;display:grid}.shipment-summary>div,.shipment-summary>p{border-right:1px solid #ffffff1a;margin:0;padding:21px 24px}.shipment-summary span{color:#ffffff59;font-family:var(--font-geist-mono), monospace;letter-spacing:.08em;font-size:8px;display:block}.shipment-summary strong{color:#fd9360;margin-top:8px;font-size:17px;display:block}.shipment-summary>p{color:#ffffff94;border-right:0;align-items:center;gap:12px;font-size:11px;line-height:1.5;display:flex}.summary-check{background:#55c8871f;border-radius:50%;flex:none;place-items:center;width:27px;height:27px;color:#7ad8a2!important;font-size:10px!important;display:grid!important}.proof-section{background:var(--paper)}.proof-heading{align-items:center}.proof-grid{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin-top:72px;display:grid}.proof-grid article{border-right:1px solid var(--line);min-height:300px;padding:38px 29px}.proof-grid article:first-child{padding-left:0}.proof-grid article:last-child{border-right:0;padding-right:0}.proof-value{letter-spacing:-.06em;margin:0;font-weight:620;line-height:1;color:var(--orange)!important;font-size:54px!important}.proof-grid h3{letter-spacing:-.025em;text-transform:capitalize;margin:62px 0 0;font-size:18px}.proof-grid article>p:last-child{color:var(--muted);margin:13px 0 0;font-size:12px;line-height:1.65}.forwarders-section{background:var(--cream)}.forwarders-grid{grid-template-columns:.8fr 1.2fr;align-items:start;gap:120px;display:grid}.forwarders-title{position:sticky;top:130px}.forwarders-title>p:last-child{max-width:470px;color:var(--muted);margin:28px 0 0;font-size:15px;line-height:1.75}.principles{border-top:1px solid #d9d2ca}.principles article{border-bottom:1px solid #d9d2ca;grid-template-columns:52px 1fr;gap:28px;padding:38px 0;display:grid}.principles article>span{color:var(--orange);font-family:var(--font-geist-mono), monospace;font-size:11px}.principles h3{letter-spacing:-.035em;margin:0;font-size:24px}.principles p{color:var(--muted);margin:14px 0 0;font-size:13px;line-height:1.7}.cta-section{background:var(--orange);color:#fff;padding:100px 0;position:relative;overflow:hidden}.cta-glow{border:1px solid #fff3;border-radius:50%;width:600px;height:600px;position:absolute;top:-320px;right:-160px;box-shadow:0 0 0 70px #ffffff09,0 0 0 140px #ffffff06}.cta-inner{z-index:1;grid-template-columns:1.2fr .8fr;align-items:end;gap:100px;display:grid;position:relative}.cta-inner .kicker{color:#ffffffa3}.cta-inner>div:last-child>p{color:#ffffffbd;max-width:430px;margin:0 0 28px;font-size:15px;line-height:1.7}.button-white{color:var(--orange);box-shadow:none;background:#fff;border-color:#fff}.button-white:hover{color:#fff;box-shadow:none;background:#191919;border-color:#191919}footer{color:#fff;background:#181818;padding:58px 0 26px}footer .brand img{filter:brightness(0)invert()}.footer-top{justify-content:space-between;gap:50px;padding-bottom:48px;display:flex}.footer-top>div:first-child>p{color:#ffffff6b;margin:19px 0 0;font-size:12px}.footer-links{flex-wrap:wrap;align-items:flex-start;gap:28px;display:flex}.footer-links a{color:#ffffff9e}.footer-bottom{color:#ffffff52;font-family:var(--font-geist-mono), monospace;letter-spacing:.05em;text-transform:uppercase;border-top:1px solid #ffffff1a;justify-content:space-between;gap:30px;padding-top:24px;font-size:9px;display:flex}@keyframes active-pulse{0%,to{box-shadow:0 0 0 4px #55c8871f}50%{box-shadow:0 0 0 8px #55c88700}}@keyframes console-scan{0%,12%{opacity:0;transform:translateY(0)}18%{opacity:.65}72%{opacity:.4}86%,to{opacity:0;transform:translateY(355px)}}@keyframes email-breathe{0%,to{border-color:#ff570047;box-shadow:0 0 #ff570000}16%,32%{border-color:#ff5700b3;box-shadow:0 0 24px #ff570014}}@keyframes path-flow{0%{transform:translateY(-100%)}55%,to{transform:translateY(100%)}}@keyframes task-complete{0%,to{box-shadow:none;background:#24201d;transform:scale(1)}18%,28%{background:#ff57002b;transform:scale(1.1);box-shadow:0 0 0 6px #ff57000f}38%{box-shadow:none;background:#24201d;transform:scale(1)}}@media (width<=1020px){.hero-grid{grid-template-columns:1fr;gap:64px;padding-top:74px}.hero-copy{max-width:780px}.operator-console{max-width:680px}.section-heading{grid-template-columns:1fr;gap:28px}.section-heading>p{max-width:690px}.logic-flow{grid-template-columns:repeat(2,1fr)}.logic-track{display:none}.journey{grid-template-columns:repeat(5,minmax(180px,1fr));overflow-x:auto}.journey-line{min-width:760px;left:100px;right:100px}.shipment-summary{grid-template-columns:repeat(3,1fr)}.shipment-summary>p{border-top:1px solid #ffffff1a;grid-column:1/-1}.proof-grid{grid-template-columns:repeat(2,1fr)}.proof-grid article:nth-child(2){border-right:0}.proof-grid article:nth-child(-n+2){border-bottom:1px solid var(--line)}.proof-grid article:first-child,.proof-grid article:nth-child(3){padding-left:0}.forwarders-grid{grid-template-columns:1fr;gap:70px}.forwarders-title{position:static}}@media (width<=760px){.page-shell,.nav-shell{width:min(100% - 30px,1240px)}.section{padding:84px 0}.site-header{height:68px}.brand img{width:122px}.nav-links{display:none}.button-small{min-height:40px;padding:0 13px}.hero-grid{gap:52px;min-height:auto;padding:62px 0 74px}.hero h1{font-size:clamp(48px,14vw,68px)}.hero-subheadline{font-size:15px}.hero-actions{flex-direction:column;align-items:flex-start;gap:20px}.operator-console{box-shadow:10px 12px #efeae4,0 28px 60px #19141033}.console-topbar{align-items:flex-start;padding:21px 18px}.console-topbar h2{font-size:17px}.active-badge{padding:7px}.email-card,.decision-path{margin-left:14px;margin-right:14px}.console-footer{flex-direction:column;padding:16px}.hero-rail-inner{flex-wrap:wrap;gap:13px 18px;padding:22px 0}.hero-rail-inner>span{text-align:center;width:100%}.logic-flow{grid-template-columns:1fr;margin-top:48px}.logic-card{min-height:335px}.daily-intro{text-align:left}.daily-intro>p:last-child{margin-left:0}.shipment-board{margin-top:48px}.shipment-board-top{align-items:flex-start;padding:20px}.shipment-board-top>div:first-child{flex-direction:column;align-items:flex-start;gap:10px}.journey{padding-left:20px;padding-right:20px}.shipment-summary{grid-template-columns:1fr 1fr}.shipment-summary>div:nth-child(3){border-top:1px solid #ffffff1a;grid-column:1/-1}.shipment-summary>p{grid-column:1/-1}.proof-grid{grid-template-columns:1fr;margin-top:50px}.proof-grid article,.proof-grid article:first-child,.proof-grid article:nth-child(3),.proof-grid article:last-child{border-right:0;border-bottom:1px solid var(--line);min-height:auto;padding:32px 0}.proof-grid article:last-child{border-bottom:0}.proof-grid h3{margin-top:30px}.forwarders-grid{gap:48px}.principles article{grid-template-columns:36px 1fr;gap:15px}.cta-section{padding:78px 0}.cta-inner{grid-template-columns:1fr;gap:35px}.footer-top{flex-direction:column}.footer-links{grid-template-columns:1fr 1fr;display:grid}.footer-bottom{flex-direction:column}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* ===========================================================================
   NavLogic additions
   Everything above is the design as delivered. Below are the local changes:
   the site's own brand lockup in the nav, the live globe replacing the hero's
   mock console, and the product screenshots.
   =========================================================================== */

/* --- Brand lockup ---------------------------------------------------------
   The design ships a single 143px wordmark. The site's mark + wordmark are two
   separate SVGs, so the fixed width is released and each is sized by height. */
.brand { gap: 12px; }
/* Their rule is `.brand img { width:143px; height:auto }` — same specificity as
   a bare `.brand img` override but higher than a lone class, so the two sizing
   rules below have to be qualified or `height:auto` wins and the mark renders
   at its intrinsic size. */
.brand img.brand-mark { width: auto; height: 30px; }
.brand img.brand-word { width: auto; height: 18px; }

@media (max-width: 760px) {
  .brand img.brand-mark { height: 26px; }
  .brand img.brand-word { height: 16px; }
}

/* The footer inverts its logo to sit on the dark background. The site has a
   purpose-made light wordmark, so use that instead of a filtered copy — an
   inverted mark would lose the orange. */
footer .brand img { filter: none; }

/* --- Hero globe -----------------------------------------------------------
   Replaces the design's animated console mock. hero-scene.js measures this
   element to size the renderer, so the box drives the scene rather than the
   viewport: a square keeps the globe centred and fully visible at every width,
   instead of the off-centre bleed the old full-width hero used. */
.hero-globe {
  /* Absolute, so its size never feeds back into the hero's height. The hero is
     sized by the copy; the globe is free to run oversized and bleed off the
     right and bottom, clipped by .hero's overflow:hidden. In flow (as a grid
     cell) a 165%-wide square forced the hero to 1065px tall. */
  position: absolute;
  top: 50%;
  left: 60%;
  width: min(1020px, 74vw);
  aspect-ratio: 1 / 1;
  transform: translateY(-50%);
  pointer-events: none;
  opacity: 0;
  transition: opacity .9s ease;
}
.hero-globe.is-ready { opacity: 1; }
.hero-globe canvas { display: block; width: 100%; height: 100%; }

/* One column: the copy sets the hero's height and the globe floats over the
   space to its right. */
.hero-grid { grid-template-columns: minmax(0, 1fr); }

/* 1200px is where the copy's 685px max-width stops leaving usable room beside
   it. Below that the globe drops behind the copy, low and faint, rather than
   crossing the headline at full strength. */
@media (max-width: 1200px) {
  .hero-globe {
    top: auto;
    bottom: -22%;
    left: 50%;
    width: min(760px, 116vw);
    transform: translateX(-50%);
  }
  .hero-globe.is-ready { opacity: .5; }
}
@media (max-width: 760px) {
  .hero-globe { bottom: -18%; width: 132vw; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-globe { transition: none; }
}

/* --- Anchor offset ---------------------------------------------------------
   Handled by scroll-padding-top on the scroll container below, which covers
   both anchor jumps and snap positions. A scroll-margin-top on the sections as
   well would ADD to it, leaving every snap 172px (2 x 86) short — which is
   exactly what it did. One offset only. */

/* --- Scroll snapping -------------------------------------------------------
   Carried over from the previous homepage: each section takes the viewport as
   you scroll. Off below 760px, where snapping fights natural touch scrolling
   and the sections are taller than the screen, and off under reduced motion.
   scroll-padding-top keeps a snapped section clear of the sticky header. */
html {
  scroll-padding-top: 86px;
  /* Mandatory: proximity was measurably never firing on a normal wheel
     gesture, so it read as no snapping at all. Mandatory only works when every
     section fits the viewport — hence the trimming above — so it is switched
     off below 700px tall, where the tallest section can no longer fit and
     mandatory would trap its middle. */
  scroll-snap-type: y mandatory;
}
/* Declared on html only. With it on body as well the page ends up with two snap
   containers and the scroll-padding is applied twice, so every section rests
   172px (2 x 86) short of where it should. */



main > section {
  scroll-snap-align: start;
}

/* The footer is far shorter than a screen, so a start-aligned snap asks for a
   scroll position past the end of the document. The browser falls back to the
   previous snap point and the bottom of the footer becomes unreachable.
   End-aligning it makes the very bottom of the page the snap position instead,
   whatever height the footer happens to be. */
footer {
  scroll-snap-align: end;
}

@media (max-width: 760px) {
  html {
    scroll-padding-top: 0;
    scroll-snap-type: none !important;
  }
  main > section,
  footer {
    scroll-snap-align: none;
    scroll-snap-stop: normal;
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
    scroll-snap-type: none;
  }
}

/* --- Fitting sections to the viewport -------------------------------------
   Scroll snapping only feels right when a snapped section fits the screen. At
   the design's 126px section padding, #how and #daily-work came out 940px and
   1028px against a 900px viewport, so the browser could never settle anywhere
   but their tops and the middles were unreachable. Trimming the padding and the
   hero's min-height brings every section within a normal laptop viewport. */
.section { padding: clamp(48px, 6vh, 96px) 0; }
/* The hero is exactly one viewport tall, with the connected-systems rail
   pinned to its bottom, so it is always a clean snap target regardless of the
   window height. Previously its fixed min-height plus the rail made it the one
   section that could not fit a short laptop screen. */
.hero {
  display: flex;
  flex-direction: column;
  min-height: 100svh;
}
.hero-grid {
  flex: 1 1 auto;
  min-height: 0;
  align-content: center;
  padding: clamp(24px, 4vh, 56px) 0 clamp(24px, 4vh, 56px);
}
.hero-rail { flex: 0 0 auto; }
.hero-rail-inner { min-height: 64px; }
.logic-flow { margin-top: clamp(40px, 5vh, 62px); }
.shipment-board { margin-top: clamp(26px, 3.5vh, 48px); }
.proof-grid { margin-top: clamp(40px, 5vh, 60px); }
.proof-grid article { min-height: 0; padding: clamp(26px, 3vh, 34px) 29px; }
.logic-card { min-height: 0; }
.logic-card h3 { min-height: 0; }
.card-eyebrow { margin-top: clamp(20px, 3vh, 32px) !important; }
.journey { padding: clamp(26px, 3vh, 42px) 28px clamp(20px, 2.4vh, 34px); }
.cta-section { padding: clamp(64px, 7vh, 92px) 0; }

/* --- One section, one screen ----------------------------------------------
   Snapping landed on each section's top correctly, but the sections were
   shorter than the window, so every landing left a strip of the next section
   showing underneath — which is why the page read as permanently offset.
   Giving each snap target the height of the scrollport (less the nav clearance
   the snap position already allows for) makes a snapped section fill the screen
   exactly, and centring the contents means a short section gains even space
   above and below instead of hugging the top.
   Scoped to exactly the window sizes where snapping is on (see the gate at the
   end of the file) — stretching sections without snapping only adds dead
   whitespace. */
@media (min-width: 1180px) and (min-height: 720px) {
  main > section {
    min-height: calc(100svh - 86px);
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  /* The hero is exempt: it sits at the top of the document, so its snap
     position is 0 with no nav clearance subtracted. It sets its own 100svh and
     its own flex layout above. */

  /* The CTA is the last snap target and the footer sits under it, so the two
     are sized to share one screen — that way the final snap shows the footer
     whole. --site-footer-h comes from site-footer.css, which owns the layout
     that determines it. */
  .cta-section {
    min-height: calc(100svh - 86px - var(--site-footer-h, 148px));
  }
}

/* --- Shared header ---------------------------------------------------------
   The homepage now renders the same <site-header> component as every other
   page, so the nav can no longer drift between them. That nav is position:fixed
   and overlays the page, so the hero has to reserve its own top clearance —
   previously the hand-written sticky header took that space in flow.
   The brand-lockup rules that lived here are gone with it. */
.hero-grid { padding-top: calc(78px + clamp(40px, 5vh, 64px)); }

@media (max-width: 760px) {
  .hero-grid { padding-top: calc(68px + clamp(32px, 4vh, 48px)); }
}

/* Further trimming so the two tallest sections clear a real laptop viewport —
   without this #daily-work and #how exceed it and mandatory snapping traps
   their middles. */
.daily-intro > p:last-child { margin-top: clamp(14px, 2vh, 25px); }
.shipment-board-top { padding: 16px 28px; }
.shipment-summary > div,
.shipment-summary > p { padding: 15px 24px; }
.logic-flow { margin-top: clamp(30px, 4vh, 56px); }
.proof-grid { margin-top: clamp(30px, 4vh, 54px); }

/* --- Short viewports -------------------------------------------------------
   Most laptops give roughly 700-780px of viewport once browser chrome is
   accounted for. At the full type scale the hero and the two densest sections
   exceed that, which is what stopped mandatory snapping from working. Scaling
   the vertical rhythm down here keeps every section inside one screen so the
   snap stays usable, without touching the design on larger displays. */
@media (min-width: 761px) and (max-height: 840px) {
  .hero h1 { font-size: clamp(42px, 4vw, 60px); margin-top: 0; }
  .hero-subheadline { margin-top: 18px; font-size: 15.5px; line-height: 1.6; }
  .hero-actions { margin-top: 24px; }
  .hero-assurance { margin-top: 22px; padding-top: 16px; }
  .hero-rail-inner { min-height: 54px; }

  .section-heading h2,
  .daily-intro h2,
  .forwarders-title h2,
  .cta-inner h2 { font-size: clamp(34px, 3.4vw, 48px); }
  .kicker { margin-bottom: 12px; }

  .logic-card { padding: 18px; }
  .logic-card h3 { font-size: 20px; }
  .logic-card > p { margin: 14px 0 18px; }
  .card-eyebrow { margin-top: clamp(14px, 2vh, 24px) !important; }

  .daily-intro > p:last-child { margin-top: 12px; font-size: 15px; }
  .journey-step h3 { font-size: 15px; }
  .journey-node { height: 44px; margin-bottom: 18px; }
  .proof-value { font-size: 44px !important; }
  .proof-grid h3 { margin-top: clamp(24px, 4vh, 48px); }
  .principles article { padding: 26px 0; }
  .principles h3 { font-size: 21px; }
}

/* #daily-work is the one section whose content, not its min-height, sets its
   height — the shipment board has a fixed number of rows. On a 760px viewport it
   still ran 7px over a screen and on a 700px one 66px over, and anything a
   mandatory snap cannot fit is content the reader can never scroll to. A second,
   tighter pass over just the parts that carry vertical weight. */
@media (min-width: 761px) and (max-height: 780px) {
  .section { padding: 34px 0; }
  .daily-intro > p:last-child { margin-top: 10px; font-size: 14.5px; }
  .shipment-board { margin-top: 18px; }
  .shipment-board-top { padding: 12px 24px; }
  .journey { padding: 20px 28px 14px; }
  .journey-node { height: 40px; margin-bottom: 14px; }
  .journey-step p { margin-top: 7px; }
  .shipment-summary > div,
  .shipment-summary > p { padding: 11px 20px; }
}

/* --- Size gate -------------------------------------------------------------
   Mandatory snapping is only safe while every section fits the window: anything
   that overflows has a middle the reader can never scroll to, because the
   browser refuses to rest anywhere but a snap point. Measured, the binding
   constraint is #how — its four cards drop to a 2x2 grid at 1020px and the text
   in them wraps harder as the columns narrow, so the section runs 39px over a
   1024x800 window and 88px over a 1024x720 one. Measured across a width x height
   grid, 1180x720 is the smallest window where every section fits; at 1180x700 it
   was still 11px over. Below the gate snapping switches off rather than trapping
   content — plain scrolling is the graceful degradation here, a section you
   cannot scroll through is not. */
@media (max-width: 1179px), (max-height: 719px) {
  html { scroll-snap-type: none; }
  main > section, footer { scroll-snap-align: none; }
}
