/* Logistics Dispatcher landing page — paper edition.
   Clean information flow (centered hero, alternating feature rows, one idea per section) on warm paper:
   grain, layered paper cards, taped prints, torn section edges, stamps and a few handwritten notes.
   Colours follow the product (dark green actions, mint accents). */

@font-face { font-family: "Inter"; src: url("../fonts/Inter-latin-var.woff2") format("woff2"); font-weight: 100 900; font-display: swap;
  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: "Inter"; src: url("../fonts/Inter-latin-ext-var.woff2") format("woff2"); font-weight: 100 900; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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: "Jakarta"; src: url("../fonts/Jakarta-latin-var.woff2") format("woff2"); font-weight: 200 800; font-display: swap;
  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: "Jakarta"; src: url("../fonts/Jakarta-latin-ext-var.woff2") format("woff2"); font-weight: 200 800; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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: "Caveat"; src: url("../fonts/Caveat-latin-var.woff2") format("woff2"); font-weight: 400 700; font-display: swap; }

:root {
  --paper: #f6f2e9;
  --paper-2: #efe8da;
  --paper-3: #e7decb;
  --sheet: #fffdf8;
  --ink: #17241f;
  --ink-2: #33443d;
  --muted: #5d6b64;
  --dim: #7d877f;
  --line: rgba(74, 60, 34, 0.12);
  --line-2: rgba(74, 60, 34, 0.2);
  --green: #0b5e4b;
  --green-2: #1c7760;
  --green-3: #2e9a6f;
  --mint: #e1f0e7;
  --mint-2: #c7e4d3;
  --amber: #a8620a;
  --amber-bg: #fff0d3;
  --red: #b33a35;
  --red-bg: #fbe6e2;
  --blue: #2c6db3;
  --blue-bg: #e5eefa;
  --tape: rgba(236, 224, 190, 0.78);
  --radius: 22px;
  --nav-h: 76px;
  --wrap: 1160px;
  --font: "Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --display: "Jakarta", "Inter", ui-sans-serif, system-ui, sans-serif;
  --hand: "Caveat", "Segoe Print", "Bradley Hand", cursive;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --pop: cubic-bezier(0.34, 1.56, 0.64, 1);
  --spring: cubic-bezier(.2, .9, .25, 1);
  --paper-shadow: 0 1px 1px rgba(74, 60, 34, 0.08), 0 4px 10px -4px rgba(74, 60, 34, 0.14), 0 22px 40px -26px rgba(74, 60, 34, 0.32);
  --paper-shadow-lg: 0 1px 1px rgba(74, 60, 34, 0.08), 0 10px 22px -10px rgba(74, 60, 34, 0.2), 0 40px 70px -40px rgba(74, 60, 34, 0.42);
  --grain: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .36 0 0 0 0 .3 0 0 0 0 .2 0 0 0 .075 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  --grain-soft: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .36 0 0 0 0 .3 0 0 0 0 .2 0 0 0 .045 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  --fibers: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='360' height='360'><filter id='f'><feTurbulence type='fractalNoise' baseFrequency='.012 .09' numOctaves='2' seed='4'/><feColorMatrix values='0 0 0 0 .4 0 0 0 0 .33 0 0 0 0 .22 0 0 0 .05 0'/></filter><rect width='100%' height='100%' filter='url(%23f)'/></svg>");
  --tear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 24' preserveAspectRatio='none'><path d='M0 24L0 12L9 7L22 6L33 9L40 11L46 10L53 6L63 15L70 8L83 16L94 10L110 6L125 8L132 6L141 15L149 12L161 9L173 6L179 7L192 10L201 12L212 9L226 13L234 12L246 16L259 8L275 6L285 14L292 11L299 13L312 12L327 9L340 12L352 10L366 16L377 13L384 13L396 17L410 8L420 13L426 11L434 6L441 14L448 8L458 15L465 10L476 16L490 15L499 10L509 16L524 7L532 8L540 11L552 8L558 10L568 12L584 13L595 12L607 6L622 14L637 15L647 10L654 13L661 6L669 7L678 6L684 7L691 9L698 15L710 7L718 9L728 6L742 17L753 11L760 6L769 8L784 7L790 16L801 7L813 5L824 17L838 13L847 9L855 14L866 14L875 8L889 17L904 15L918 14L926 11L936 5L942 8L951 13L966 10L982 17L997 9L1006 8L1014 7L1026 16L1040 11L1053 15L1060 13L1075 14L1088 11L1096 14L1105 15L1121 10L1131 16L1144 7L1152 7L1167 15L1174 15L1190 13L1199 12L1200 5L1200 24Z'/></svg>");
  color-scheme: light;
}

/* a critically damped spring (no bounce): quick start, long soft landing */
@supports (transition-timing-function: linear(0, 1)) { :root { --spring: linear(0, .031 3%, .103 6%, .228 10%, .359 14%, .510 19%, .657 25%, .782 32%, .874 40%, .939 50%, .975 62%, .993 78%, 1); } }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 16px); }
body { margin: 0; background: var(--paper); color: var(--muted); font-family: var(--font); font-size: 17px; line-height: 1.62; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; }
body::before { content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none; background: var(--grain), var(--fibers); opacity: 1; }
img, video { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4 { margin: 0; color: var(--ink); font-family: var(--display); font-weight: 800; letter-spacing: -0.025em; }
.pn { margin-left: -0.1em; }
h2 { font-size: clamp(1.9rem, 1.3rem + 2vw, 2.9rem); line-height: 1.12; text-wrap: balance; }
h3 { font-size: 1.1rem; line-height: 1.3; font-weight: 750; letter-spacing: -0.012em; }
p { margin: 0; }
b, strong { color: var(--ink); font-weight: 650; }
::selection { background: var(--mint-2); color: var(--ink); }
:focus-visible { outline: 2px solid var(--green-3); outline-offset: 3px; border-radius: 6px; }
.ic { width: 1.15em; height: 1.15em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: -0.2em; }
.mono { font-family: var(--mono); font-size: 0.85em; }
.red { color: var(--red) !important; }
.skip { position: fixed; left: 12px; top: -60px; z-index: 100; background: var(--green); color: #fff; padding: 10px 14px; border-radius: 10px; font-weight: 600; transition: top .2s; }
.skip:focus { top: 12px; }
main, .footer { position: relative; z-index: 1; }
.wrap { width: min(var(--wrap), calc(100% - 48px)); margin-inline: auto; }

/* ------------------------------------------------------------------ buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .55em; height: 48px; padding: 0 22px; border-radius: 999px; border: 1px solid transparent; font-weight: 650; font-size: .98rem; cursor: pointer; white-space: nowrap; transition: transform .18s var(--ease), box-shadow .18s var(--ease), background .2s, border-color .2s; }
.btn--sm { height: 42px; padding: 0 18px; font-size: .93rem; }
.btn--lg { height: 54px; padding: 0 26px; font-size: 1.02rem; }
.btn--primary { color: #fff; background: var(--green); box-shadow: 0 3px 0 #073f33, 0 10px 22px -12px rgba(11, 94, 75, .8); }
.btn--primary:hover { transform: translateY(-1px); box-shadow: 0 4px 0 #073f33, 0 14px 26px -12px rgba(11, 94, 75, .85); }
.btn--primary:active { transform: translateY(2px); box-shadow: 0 1px 0 #073f33, 0 6px 14px -10px rgba(11, 94, 75, .8); }
.btn--ghost { color: var(--ink); background: var(--sheet); border-color: var(--line-2); box-shadow: 0 2px 0 rgba(74, 60, 34, .12); }
.btn--ghost:hover { transform: translateY(-1px); border-color: rgba(74, 60, 34, .3); }
.btn .ic { width: 1.05em; height: 1.05em; }

/* ------------------------------------------------------------------ navigation (floating paper strip) */
.nav { position: fixed; top: 12px; left: 0; right: 0; z-index: 50; pointer-events: none; }
.nav__bar { pointer-events: auto; width: min(1180px, calc(100% - 24px)); margin-inline: auto; height: 62px; display: flex; align-items: center; gap: 18px; padding: 0 10px 0 18px; border-radius: 999px; background: rgba(255, 253, 248, .96); border: 1px solid var(--line); box-shadow: 0 1px 0 rgba(255, 255, 255, .8) inset, 0 8px 24px -16px rgba(74, 60, 34, .45); }
.brand { display: inline-flex; align-items: center; gap: 10px; color: var(--ink); font-family: var(--display); font-weight: 800; font-size: .98rem; line-height: 1.02; letter-spacing: -0.02em; }
.brand img { width: 32px; height: 32px; }
.nav__links { display: flex; gap: 2px; margin-left: auto; }
.nav__links a { padding: 8px 13px; border-radius: 999px; color: var(--ink-2); font-size: .93rem; font-weight: 550; transition: background .2s, color .2s; }
.nav__links a:hover { background: var(--mint); color: var(--green); }
.lang { display: inline-flex; padding: 3px; border-radius: 999px; background: var(--paper-2); border: 1px solid var(--line); }
.lang a { padding: 5px 10px; border-radius: 999px; font-size: .78rem; font-weight: 750; color: var(--dim); letter-spacing: .03em; }
.lang a.is-active { background: var(--sheet); color: var(--green); box-shadow: 0 1px 3px rgba(74, 60, 34, .18); }
.nav__toggle { display: none; margin-left: auto; width: 44px; height: 44px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--sheet); cursor: pointer; position: relative; }
.nav__toggle span { position: absolute; left: 13px; right: 13px; height: 1.8px; background: var(--ink); transition: transform .3s var(--ease), top .3s var(--ease); }
.nav__toggle span:first-child { top: 17px; }
.nav__toggle span:last-child { top: 25px; }
.nav__toggle[aria-expanded="true"] span:first-child { top: 21px; transform: rotate(45deg); }
.nav__toggle[aria-expanded="true"] span:last-child { top: 21px; transform: rotate(-45deg); }
.nav__menu { pointer-events: auto; width: calc(100% - 24px); margin: 8px auto 0; padding: 12px; border-radius: 22px; background: var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow-lg); display: grid; gap: 2px; }
.nav__menu[hidden] { display: none; }
.nav__menu > a { padding: 12px 14px; border-radius: 12px; color: var(--ink); font-weight: 600; }
.nav__menu > a:hover { background: var(--mint); }
.nav__menu .btn { margin-top: 8px; color: #fff; }
.lang--menu { margin-top: 6px; justify-self: start; }
.lang--menu a { padding: 8px 14px; font-size: .9rem; }

/* ------------------------------------------------------------------ paper primitives */
/* grain lives in the backgrounds: blended overlays made every card (and every video frame) a compositing job */
.card { position: relative; background: var(--grain-soft) var(--sheet); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--paper-shadow); }
.eyebrow { display: inline-flex; align-items: center; gap: 10px; font-size: .78rem; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; color: var(--green-2); }
.eyebrow__n { display: inline-grid; place-items: center; min-width: 34px; height: 26px; padding: 0 7px; border-radius: 8px; background: var(--green); color: #fff; letter-spacing: .04em; box-shadow: 0 2px 0 #073f33; transform: rotate(-2deg); }
.lead { margin-top: 14px; font-size: clamp(1.02rem, .97rem + .25vw, 1.14rem); line-height: 1.65; color: var(--ink-2); }
.fine { margin-top: 12px; font-size: .82rem; line-height: 1.55; color: var(--dim); }
.fine--center { text-align: center; max-width: 720px; margin: 28px auto 0; }
.hand { font-family: var(--hand); font-weight: 700; font-size: 1.6rem; line-height: 1.1; color: var(--green-2); }
.hand--small { font-size: 1.35rem; margin-top: 14px; }
.pcut { position: relative; display: inline-grid; place-items: center; width: 36px; height: 36px; flex: none; border-radius: 11px; background: var(--mint); color: var(--green); box-shadow: 2px 3px 0 var(--mint-2), 0 1px 0 rgba(255, 255, 255, .8) inset; }
.pcut .ic { width: 19px; height: 19px; }
.pcut--lg { width: 46px; height: 46px; border-radius: 14px; }
.pcut--lg .ic { width: 23px; height: 23px; }
.tape { position: absolute; z-index: 3; width: 96px; height: 26px; background: var(--tape); box-shadow: 0 1px 2px rgba(74, 60, 34, .12); clip-path: polygon(0 12%, 5% 0, 11% 14%, 17% 2%, 24% 12%, 31% 0, 38% 10%, 45% 2%, 52% 12%, 60% 0, 67% 12%, 74% 2%, 81% 12%, 88% 0, 95% 10%, 100% 4%, 100% 88%, 95% 100%, 88% 86%, 81% 100%, 74% 88%, 67% 100%, 60% 88%, 52% 100%, 45% 90%, 38% 100%, 31% 88%, 24% 100%, 17% 88%, 11% 100%, 5% 88%, 0 96%); }
.tape::after { content: ""; position: absolute; inset: 0; background: var(--grain); opacity: .9; }
.tape--l { top: -12px; left: 18px; transform: rotate(-5deg); }
.tape--r { top: -11px; right: 22px; transform: rotate(4deg); }
.stamp { position: absolute; display: inline-block; padding: 6px 12px; border: 3px solid currentColor; border-radius: 10px; color: var(--green); font-family: var(--display); font-weight: 800; font-size: .9rem; letter-spacing: .08em; text-transform: uppercase; background: rgba(255, 253, 248, .6); transform: rotate(-9deg); -webkit-mask: var(--grain), linear-gradient(#000, #000); -webkit-mask-composite: xor; mix-blend-mode: multiply; }

/* reveal: when a block is reached it rises into place on a soft spring while the paper settles
   (site.js sets rv; what is on screen at load stays as painted) */
.rv .reveal:not(.is-in) { opacity: 0; translate: 0 56px; rotate: -.6deg; }
.rv .reveal.is-in { transition: opacity .8s var(--spring), translate 1s var(--spring), rotate 1.1s var(--spring); }

/* appear: the first screen builds itself from the first paint (pure CSS, it never waits for the script):
   tagline, headline word by word out of a blur, the lead, buttons, then the taped print rises and settles */
.appear { animation: appear 1s var(--spring) both; animation-delay: var(--d, 0s); }
@keyframes appear { from { opacity: 0; translate: 0 var(--rise, 24px); } }
.w { display: inline-block; animation: wordIn .9s var(--spring) both; animation-delay: calc(var(--w0, 0s) + var(--i, 0) * var(--ws, 60ms)); }
@keyframes wordIn { from { opacity: 0; filter: blur(var(--blur, 12px)); translate: 0 .3em; } }
.hero h1 { --w0: .08s; --ws: 75ms; }
.hero__lead { --w0: .5s; --ws: 14ms; --blur: 7px; }
.hero__lead .w { animation-duration: .7s; }
.hero__ctas { --d: .85s; }
.works { --d: 1s; }
.hero .caption { --d: 1.3s; }

/* ------------------------------------------------------------------ hero */
.hero { padding: calc(var(--nav-h) + 56px) 0 40px; text-align: center; }
.hero__text { max-width: 1080px; }
.tagline { display: inline-block; padding: 6px 14px; border-radius: 999px; background: var(--paper-2); border: 1px solid var(--line); font-size: .9rem; font-weight: 600; color: var(--ink-2); }
.hero h1 { margin-top: 18px; font-size: clamp(2.6rem, 1.3rem + 4.6vw, 5rem); line-height: 1.04; letter-spacing: -0.04em; }
.hero h1 > span { display: block; }
.mark { position: relative; display: inline-block; color: var(--green); white-space: nowrap; }
.mark__line { position: absolute; left: -2%; right: -2%; bottom: -0.1em; width: 104%; height: .32em; overflow: visible; }
.mark__line path { fill: none; stroke: var(--green-3); stroke-width: 6; stroke-linecap: round; stroke-dasharray: 260; stroke-dashoffset: 260; animation: draw 1s var(--ease) both; animation-delay: calc(var(--w0, 0s) + var(--i, 0) * var(--ws, 60ms) + .45s); }
@keyframes draw { to { stroke-dashoffset: 0; } }
.hero__lead { max-width: 720px; margin: 20px auto 0; font-size: clamp(1.04rem, .98rem + .3vw, 1.2rem); line-height: 1.65; color: var(--ink-2); }
.hero__ctas { margin-top: 28px; display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.works { margin-top: 30px; display: grid; gap: 12px; justify-items: center; }
.works__label { font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--dim); }
.works ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.works li { display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border-radius: 999px; background: var(--sheet); border: 1px solid var(--line); font-size: .86rem; font-weight: 650; color: var(--ink-2); box-shadow: 0 2px 0 rgba(74, 60, 34, .08); }
.works li .ic { color: var(--green-2); width: 16px; height: 16px; }

/* the centrepiece: a big print on a mint backing sheet, like a photo on a desk, with notes pinned around it */
.wrap--stage { --wrap: 1300px; }
.hero-stage { position: relative; margin: 48px auto 0; padding: 0 56px; --d: .6s; --rise: 120px; animation-name: appearPaper; animation-duration: 1.2s; }
.hero-stage::before { content: ""; position: absolute; left: 76px; right: 38px; top: 18px; aspect-ratio: 16 / 9.3; border-radius: 12px; background: var(--grain) var(--mint); border: 1px solid var(--mint-2); box-shadow: var(--paper-shadow); rotate: 1.7deg; }
@keyframes appearPaper { from { opacity: 0; translate: 0 var(--rise); rotate: 1.5deg; } }
.print { position: relative; margin: 0; padding: 10px 10px 12px; background: var(--grain) var(--sheet); border-radius: 8px; box-shadow: var(--paper-shadow-lg); transform: rotate(-.8deg); }
.print video { width: 100%; height: auto; border-radius: 4px; background: var(--paper-3); aspect-ratio: 3 / 2; object-fit: cover; }
.print--hero { transform: rotate(-.5deg); padding: 12px 12px 14px; }
.print--hero .tape { width: 128px; height: 32px; }
.print--hero .tape--l { left: 34px; top: -14px; }
.print--hero .tape--r { right: 38px; top: -13px; }
.print--hero video { aspect-ratio: 16 / 9; }
.note { position: absolute; z-index: 4; display: grid; gap: 1px; padding: 12px 16px 12px 16px; min-width: 200px; text-align: left; background: var(--sheet); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--paper-shadow); }
.note b { font-family: var(--display); font-size: .98rem; }
.note small { font-size: .82rem; color: var(--muted); }
.hero-stage .note { min-width: 236px; padding: 14px 18px; }
.hero-stage .note b { font-size: 1.06rem; }
.hero-stage .note small { font-size: .86rem; }
.pin { position: absolute; top: -7px; left: 50%; width: 14px; height: 14px; margin-left: -7px; border-radius: 50%; box-shadow: inset -2px -2px 0 rgba(0, 0, 0, .18), 0 2px 3px rgba(0, 0, 0, .25); }
.pin--red { background: #d9534a; }
.pin--blue { background: #3a7fd0; }
.pin--green { background: var(--green-3); }
.note--1 { left: 0; top: 13%; transform: rotate(-3deg); }
.note--2 { right: 0; top: 38%; transform: rotate(2.5deg); }
.note--3 { left: 4%; bottom: 9%; transform: rotate(1.5deg); }
.note--3::after { content: "✓"; position: absolute; right: -12px; top: -12px; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; background: var(--green); color: #fff; font-weight: 800; box-shadow: 0 2px 0 #073f33; }
.hand--hero { position: absolute; z-index: 4; left: 27%; bottom: -54px; display: flex; align-items: flex-end; gap: 4px; transform: rotate(-4deg); font-size: 2.1rem; }
.hand__arrow { width: 52px; height: 38px; fill: none; stroke: var(--green-2); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; transform: scale(-1, -1) rotate(-12deg); }
.hero-stage .note { animation: drop .7s var(--pop) both, bob 6s ease-in-out infinite; }
.hero-stage .note--1 { animation-delay: 1.7s, 2.4s; }
.hero-stage .note--2 { animation-delay: 2.1s, 2.8s; }
.hero-stage .note--3 { animation-delay: 2.5s, 3.2s; }
.hero-stage .hand--hero { animation: fadeUp .8s var(--ease) 3.1s both; }
@keyframes drop { from { opacity: 0; translate: 0 -18px; scale: 1.06; } to { opacity: 1; translate: 0 0; scale: 1; } }
@keyframes bob { 0%, 100% { translate: 0 0; } 50% { translate: 0 -5px; } }
@keyframes fadeUp { from { opacity: 0; translate: 0 8px; } to { opacity: 1; translate: 0 0; } }
.caption { margin-top: 62px; text-align: center; font-size: .82rem; color: var(--dim); }

/* ------------------------------------------------------------------ sections */
.section { position: relative; --pad: clamp(84px, 9vw, 128px); padding: var(--pad) 0; }
.section--sheet { --bg: var(--sheet); background: var(--bg); }
.section--sunk { --bg: var(--paper-2); background: var(--bg); }
/* torn top edge, drawn inside the section's own top strip (the strip is transparent), because content-visibility
   clips painting to the section box */
.torn { margin-top: -22px; padding-top: calc(var(--pad) + 22px); background: linear-gradient(transparent 22px, var(--bg) 0); }
.torn::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 24px; background: var(--bg); -webkit-mask: var(--tear) center / 100% 100% no-repeat; mask: var(--tear) center / 100% 100% no-repeat; pointer-events: none; }
/* sections away from the screen are neither laid out nor painted until they come near: the first paint on a phone
   no longer waits for the whole page. The estimates are each section's content height without its padding (what
   contain-intrinsic-size sizes); once rendered the browser remembers the real size (auto). site.js renders all of
   them (cv-all) before an in-page jump, so links land exactly. */
main > .section { content-visibility: auto; contain-intrinsic-size: auto var(--est, 490px); }
.cv-all main > .section { content-visibility: visible; }
#verbessern { --est: 520px; } #team { --est: 462px; } #start { --est: 557px; }
#produkt, #sicherheit, #belege { --est: 745px; } #vergleich, #kontakt { --est: 660px; }
#funktionen { --est: 1465px; } #faq { --est: 926px; }
@media (max-width: 1100px) { #funktionen { --est: 2150px; } #belege { --est: 860px; } #start { --est: 690px; } }
@media (max-width: 900px) {
  main > .section { --est: 900px; }
  #verbessern, #team { --est: 880px; } #produkt { --est: 1150px; } #vergleich, #kontakt, #faq { --est: 1050px; }
  #sicherheit { --est: 1400px; } #belege { --est: 1250px; } #start { --est: 1100px; } #funktionen { --est: 2900px; }
}
@media (max-width: 640px) {
  main > .section { --est: 1040px; } #verbinden { --est: 827px; }
  #verbessern, #team { --est: 1020px; } #produkt { --est: 1200px; } #vergleich, #kontakt, #faq { --est: 1100px; }
  #sicherheit { --est: 1610px; } #belege { --est: 1410px; } #start { --est: 1255px; } #funktionen { --est: 3170px; }
}
.torn + .section:not(.torn), .torn + .section.feature { box-shadow: none; }
.head { max-width: 760px; margin-bottom: clamp(36px, 5vw, 56px); }
.head h2 { margin-top: 12px; }
.head--center { margin-inline: auto; text-align: center; }

/* ------------------------------------------------------------------ feature rows */
.feature { padding: clamp(64px, 8vw, 110px) 0; }
.feature__grid { display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(36px, 6vw, 88px); align-items: center; }
.feature__grid--flip .feature__media { order: 2; }
.feature__text h2 { margin-top: 14px; }
.feature__p { margin-top: 16px; font-size: 1.04rem; line-height: 1.68; color: var(--ink-2); }
.pills { list-style: none; margin: 26px 0 0; padding: 0; display: grid; gap: 10px; }
.pills li { display: flex; align-items: center; gap: 14px; padding: 10px 16px 10px 10px; border-radius: 16px; background: var(--sheet); border: 1px solid var(--line); box-shadow: 0 2px 0 rgba(74, 60, 34, .07); font-size: .96rem; font-weight: 550; color: var(--ink); }

.media { position: relative; padding: 26px 26px 30px; border-radius: 28px; background: var(--fibers) var(--paper-2); border: 1px solid var(--line); box-shadow: inset 0 2px 10px rgba(74, 60, 34, .06); }
.feature__grid--flip .media .print { transform: rotate(.8deg); }

/* overlay slips (paper UI notes) */
.slip { position: absolute; z-index: 4; right: -44px; bottom: -48px; width: min(54%, 300px); padding: 13px 13px 12px; background: var(--sheet); border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--paper-shadow-lg); transform: rotate(1.5deg); opacity: 0; translate: 0 16px; transition: opacity .5s var(--ease), translate .6s var(--pop); }
.feature__grid--flip .slip { right: auto; left: -44px; transform: rotate(-1.5deg); }
.slip.is-on { opacity: 1; translate: 0 0; }
.slip::before { content: ""; position: absolute; top: -9px; left: 50%; width: 70px; height: 18px; margin-left: -35px; background: var(--tape); transform: rotate(-3deg); }
.slip [data-t] { opacity: 0; translate: 0 6px; transition: opacity .4s var(--ease), translate .45s var(--pop), background .4s, border-color .4s; }
.slip [data-t].is-on { opacity: 1; translate: 0 0; }
.slip__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.slip__time { font-family: var(--mono); font-size: .78rem; color: var(--dim); }
.slip__title { margin-top: 8px; font-family: var(--display); font-weight: 750; font-size: .9rem; line-height: 1.35; color: var(--ink); }
.slip__sub { margin-top: 4px; font-size: .82rem; color: var(--muted); line-height: 1.45; }
.slip__label { display: flex; align-items: center; gap: 7px; font-size: .78rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; color: var(--green-2); }
.slip__ex { margin-left: auto; font-style: normal; font-family: var(--hand); font-size: 1.15rem; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--amber); }
.slip__done { margin-top: 10px; display: flex; align-items: center; gap: 8px; padding: 7px 9px; border-radius: 9px; background: var(--mint); color: var(--green); font-weight: 650; font-size: .78rem; line-height: 1.35; }
.chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 999px; font-size: .74rem; font-weight: 750; }
.chip .ic { width: 13px; height: 13px; }
.chip--red { color: var(--red); background: var(--red-bg); }
.chip--green { color: var(--green); background: var(--mint); }
.chip--amber { color: var(--amber); background: var(--amber-bg); }
.facts { margin: 10px 0 0; display: grid; gap: 6px; }
.facts div { display: flex; justify-content: space-between; gap: 10px; padding: 6px 9px; border-radius: 8px; background: var(--paper); font-size: .78rem; }
.facts dt { color: var(--muted); }
.facts dd { margin: 0; font-weight: 700; color: var(--ink); text-align: right; }
.levers { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 6px; }
.levers li { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 9px; background: var(--paper); border: 1px solid transparent; font-size: .76rem; font-weight: 600; line-height: 1.25; color: var(--ink); }
.levers li.win.is-on { background: var(--mint); border-color: var(--mint-2); }
.v { flex: none; font-style: normal; font-size: .68rem; font-weight: 750; padding: 2px 8px; border-radius: 999px; display: inline-flex; align-items: center; gap: 4px; }
.v .ic { width: 12px; height: 12px; stroke-width: 2.6; }
.v--amber { color: var(--amber); background: var(--amber-bg); }
.v--grey { color: var(--dim); background: #ecebe6; }
.v--green { color: #fff; background: var(--green); }
.slip__actions { margin-top: 12px; display: flex; gap: 8px; }
.fake-btn { display: inline-flex; align-items: center; height: 30px; padding: 0 14px; border-radius: 999px; background: var(--green); color: #fff; font-weight: 700; font-size: .84rem; box-shadow: 0 3px 0 #073f33; }
.fake-btn--ghost { background: var(--sheet); color: var(--ink-2); border: 1px solid var(--line-2); box-shadow: 0 2px 0 rgba(74, 60, 34, .1); }
.slip .fake-btn[data-t] { opacity: 1; translate: 0 0; }
.slip .fake-btn[data-t].is-on { transform: translateY(3px); box-shadow: 0 0 0 #073f33; background: #0a5243; }
.slip .fake-btn--ghost { transition: opacity .15s; }
.slip:has(.stamp.is-on) .fake-btn--ghost { opacity: 0; }
.slip--decision .stamp { right: 10px; bottom: 50px; font-size: .74rem; padding: 5px 9px; background: var(--sheet); mix-blend-mode: normal; }
.slip .stamp[data-t] { opacity: 0; scale: 1.8; translate: 0 0; transition: opacity .12s linear, scale .28s var(--pop); }
.slip .stamp[data-t].is-on { opacity: .92; scale: 1; }
.trow { display: grid; grid-template-columns: 70px 1fr; align-items: center; gap: 10px; margin-top: 10px; font-size: .8rem; font-weight: 650; color: var(--muted); }
.trow ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.trow li { height: 18px; border-radius: 7px; background: #e9e4d8; border: 1px solid var(--line); }
.trow li.w.is-on { background: #cfead9; border-color: #8fcaa9; }
.trow li.l.is-on { background: #f7d6d2; border-color: #e3a19a; }
.trow li.t.is-on { background: #eceae3; }
.trow--idea span { color: var(--green); }

/* 01 connect board */
.media--board { padding: 22px; }
.board { position: relative; aspect-ratio: 600 / 420; border-radius: 18px; background: var(--sheet); border: 1px dashed var(--line-2); background-image: radial-gradient(rgba(74, 60, 34, .12) 1px, transparent 1.4px); background-size: 18px 18px; overflow: visible; }
.board__strings { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.board__strings path { fill: none; stroke: var(--green-3); stroke-width: 2.2; stroke-linecap: round; stroke-dasharray: 4 6; opacity: 0; }
.tag { position: absolute; z-index: 2; width: 33%; display: flex; align-items: center; gap: 9px; padding: 9px 10px; border-radius: 12px; background: var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow); opacity: 0; }
.tag__ic { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; background: var(--mint); color: var(--green); flex: none; }
.tag__ic .ic { width: 17px; height: 17px; }
.tag__t { display: grid; min-width: 0; line-height: 1.2; }
.tag__t b { font-family: var(--display); font-size: .9rem; }
.tag__t small { font-size: .68rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tag__ok { position: absolute; top: -8px; right: -8px; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--green); color: #fff; scale: 0; box-shadow: 0 2px 0 #073f33; }
.tag__ok .ic { width: 13px; height: 13px; stroke-width: 3; }
.tag--l1 { left: 0; top: 6%; } .tag--l2 { left: 0; top: 41%; } .tag--l3 { left: 0; top: 76%; }
.tag--r1 { right: 0; top: 6%; } .tag--r2 { right: 0; top: 41%; } .tag--r3 { right: 0; top: 76%; }
.folder { position: absolute; z-index: 2; left: 36%; top: 24%; width: 28%; min-height: 52%; padding: 22px 10px 12px; border-radius: 4px 12px 12px 12px; background: #f3e3b8; border: 1px solid rgba(120, 90, 30, .25); box-shadow: var(--paper-shadow); opacity: 0; }
.folder::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--fibers); pointer-events: none; }
.folder__tab { position: absolute; left: -1px; top: -19px; padding: 2px 10px; border-radius: 8px 8px 0 0; background: #f3e3b8; border: 1px solid rgba(120, 90, 30, .25); border-bottom: 0; font-family: var(--mono); font-size: .66rem; font-weight: 700; color: #7a5a14; }
.folder__title { display: flex; align-items: center; gap: 5px; font-family: var(--display); font-weight: 800; font-size: .8rem; color: #5b4310; }
.folder__title .ic { width: 15px; height: 15px; }
.folder__lines { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 5px; }
.folder__lines li { padding: 4px 6px; border-radius: 5px; background: var(--sheet); font-size: .66rem; font-weight: 650; color: var(--ink-2); line-height: 1.25; box-shadow: 0 1px 0 rgba(120, 90, 30, .2); opacity: 0; }
.stamp--folder { left: 50%; bottom: -16px; margin-left: -52px; font-size: .74rem; padding: 4px 10px; opacity: 0; }
.media--board.is-in .tag { animation: drop .6s var(--pop) forwards; animation-delay: calc(var(--i) * .12s); }
.media--board.is-in .folder { animation: drop .6s var(--pop) .5s forwards; }
.media--board.is-in .board__strings path { animation: string 3.2s linear forwards, dash 1.6s linear infinite; animation-delay: calc(.9s + var(--i) * .22s), calc(.9s + var(--i) * .22s); }
.media--board.is-in .tag__ok { animation: popIn .35s var(--pop) forwards; animation-delay: calc(1.2s + var(--i) * .22s); }
.media--board.is-in .folder__lines li { animation: fadeUp .4s var(--ease) forwards; animation-delay: calc(1.5s + var(--i) * .28s); }
.media--board.is-in .stamp--folder { animation: stampIn .35s var(--pop) 2.9s forwards; }
@keyframes string { from { opacity: 0; } 8% { opacity: 1; } to { opacity: 1; } }
@keyframes dash { to { stroke-dashoffset: -20; } }
@keyframes popIn { from { scale: 0; } to { scale: 1; } }
@keyframes stampIn { from { opacity: 0; scale: 1.8; } to { opacity: .92; scale: 1; } }

/* ------------------------------------------------------------------ product glimpse */
.tour { border-radius: 26px; }
.tour__tabs { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; margin-bottom: 26px; }
.tour__tabs button { display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; border-radius: 999px; border: 1px solid var(--line); background: var(--paper); color: var(--ink-2); cursor: pointer; font-weight: 650; font-size: .93rem; transition: background .2s, color .2s, box-shadow .2s, transform .2s; }
.tour__tabs button:hover { transform: translateY(-1px); color: var(--green); }
.tour__tabs button[aria-selected="true"] { background: var(--green); border-color: var(--green); color: #fff; box-shadow: 0 3px 0 #073f33; }
.tour__pane { display: grid; grid-template-columns: 1.55fr .75fr; gap: clamp(22px, 3vw, 40px); align-items: start; }
.tour__pane[hidden] { display: none; }
.tour__pane.is-entering > * { animation: fadeUp .5s var(--ease) both; }
.tour__note { padding: 22px; border-radius: 18px; background: var(--paper); border: 1px solid var(--line); }
.tour__note h3 { font-size: 1.2rem; }
.tour__note p { margin-top: 10px; font-size: .95rem; color: var(--ink-2); }
.seg { display: inline-flex; margin-top: 18px; padding: 4px; border-radius: 999px; background: var(--sheet); border: 1px solid var(--line); }
.seg button { border: 0; background: transparent; padding: 7px 14px; border-radius: 999px; cursor: pointer; color: var(--ink-2); font-weight: 650; font-size: .88rem; }
.seg button.is-on { background: var(--green); color: #fff; }
.shot { position: relative; margin: 0; border-radius: 14px; overflow: hidden; border: 1px solid var(--line); box-shadow: var(--paper-shadow-lg); aspect-ratio: 1296 / 658; background: #e8efe9; }
.shot__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .5s ease; }
.shot__img.is-on { opacity: 1; }

/* the product's own screens (kept in the product's UI colours) */
.app { --ui-ink: #0f231d; --ui-ink-2: #3f5a51; --ui-ink-3: #6b8279; --ui-line: #dbe8e3; border-radius: 14px; overflow: hidden; background: #f7fbf9; color: var(--ui-ink); font-size: 14px; line-height: 1.45; border: 1px solid var(--line); box-shadow: var(--paper-shadow-lg); }
.app__bar { display: flex; align-items: center; gap: 6px; padding: 10px 14px; background: #eef4f1; border-bottom: 1px solid var(--ui-line); }
.app__bar i { width: 10px; height: 10px; border-radius: 50%; background: #c9d8d2; }
.app__bar span { margin-left: 10px; font-size: 12px; color: var(--ui-ink-3); font-family: var(--mono); }
.app__body { padding: clamp(16px, 2vw, 24px); }
.app b, .app strong { color: var(--ui-ink); }
.ui-eyebrow { font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: #2f6f5a; font-weight: 700; }
.ui-h { margin-top: 6px; font-family: var(--font); color: var(--ui-ink); font-size: clamp(1.05rem, .92rem + .5vw, 1.35rem); line-height: 1.25; letter-spacing: -.015em; font-weight: 750; }
.ui-h--sm { font-size: 1.08rem; }
.ui-p { margin-top: 8px; color: var(--ui-ink-2); font-size: 13.5px; }
.ui-grid { display: grid; gap: 8px; margin-top: 14px; }
.ui-grid--4 { grid-template-columns: repeat(4, 1fr); }
.ui-grid--3 { grid-template-columns: repeat(3, 1fr); }
.ui-cell { padding: 10px 11px; border-radius: 10px; border: 1px solid var(--ui-line); background: #f1f7f4; min-width: 0; }
.ui-cell small { display: block; font-size: 11px; color: var(--ui-ink-3); }
.ui-cell b { display: block; margin-top: 3px; font-size: 13.5px; line-height: 1.3; }
.ui-cell em { display: block; margin-top: 3px; font-style: normal; font-size: 11px; color: var(--ui-ink-3); }
.ui-cell--red { background: #fff4f5; border-color: #f5c9d0; }
.ui-cell--red b { color: #c2334a; }
.ui-cell--mint { background: #eef8f3; border-color: #c6e6d6; }
.ui-green { color: #0e7a55 !important; }
.ui-split { display: grid; grid-template-columns: .95fr 1.05fr; gap: 20px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--ui-line); }
.ui-label { font-weight: 700; font-size: 12.5px; color: var(--ui-ink); margin-bottom: 8px; }
.ui-label--gap { margin-top: 16px; }
.ui-small { font-size: 12.5px; color: var(--ui-ink-2); }
.ui-event { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--ui-ink-2); }
.ui-event i { width: 8px; height: 8px; border-radius: 50%; background: #127a5c; box-shadow: 0 0 0 3px #d7efe5; flex: none; }
.ui-levers { list-style: none; margin: 0; padding: 0; }
.ui-levers li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid #e8f0ed; font-size: 12.5px; }
.ui-levers li:last-child { border-bottom: 0; }
.ui-levers li[hidden] { display: none; }
.ui-levers li.ui-more { color: #0e7a55; }
.ui-levers li.muted span { color: var(--ui-ink-3); }
.ui-levers li b { font-size: 12.5px; white-space: nowrap; }
.ui-badge { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 6px; font-style: normal; font-size: 10.5px; background: #e9efed; color: var(--ui-ink-2); font-weight: 650; white-space: nowrap; }
.ui-badge--amber { background: #fff4de; color: #9a5b00; }
.ui-badge--mint { background: #dff3ea; color: #0b5a45; margin-left: 0; }
.ui-foot { margin-top: 14px; font-size: 11.5px; color: var(--ui-ink-3); }
.ui-result { display: flex; align-items: center; gap: 12px; }
.ui-okicon { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: #e3f3ec; color: #0e7a55; flex: none; }
.ui-okicon .ic { width: 22px; height: 22px; stroke-width: 2.2; }
.ui-compare { display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; align-items: center; margin-top: 14px; }
.ui-arrow { color: var(--ui-ink-3); }
.ui-steps { margin: 0; padding: 0; list-style: none; counter-reset: s; display: grid; gap: 8px; }
.ui-steps li { counter-increment: s; position: relative; padding-left: 28px; font-size: 12.5px; color: var(--ui-ink-2); }
.ui-steps li::before { content: counter(s); position: absolute; left: 0; top: 0; width: 19px; height: 19px; border-radius: 50%; background: #155e4b; color: #fff; font-size: 11px; display: grid; place-items: center; font-weight: 700; }
.ui-risks { margin: 0; padding-left: 16px; display: grid; gap: 6px; font-size: 12.5px; color: var(--ui-ink-2); }
.ui-banner { display: flex; gap: 12px; padding: 12px 14px; border-radius: 12px; background: #fff8ea; border: 1px solid #f3dca8; }
.ui-banner b { font-size: 13.5px; }
.ui-banner p { font-size: 12.5px; color: var(--ui-ink-2); margin-top: 2px; }
.ui-bang { flex: none; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: #d98a00; color: #fff; font-weight: 800; }
.ui-decision { margin-top: 14px; padding: 16px; border-radius: 14px; background: #fff; border: 1px solid var(--ui-line); }
.ui-decision__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.ui-deadline { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #9a5b00; background: #fff4de; padding: 3px 9px; border-radius: 8px; }
.ui-deadline b { color: #9a5b00; }
.ui-actions { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.ui-btn { height: 38px; padding: 0 16px; border-radius: 10px; border: 1px solid var(--ui-line); background: #fff; color: #0a5546; font-weight: 650; font-size: 13px; cursor: pointer; transition: transform .15s; }
.ui-btn:hover { transform: translateY(-1px); }
.ui-btn--primary { background: #0a5546; color: #fff; border-color: #0a5546; box-shadow: 0 3px 0 #073f33; }
.ui-reject { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--ui-line); }
.ui-reasons { display: flex; flex-wrap: wrap; gap: 6px; }
.ui-reasons span { padding: 5px 10px; border-radius: 8px; border: 1px solid var(--ui-line); font-size: 12px; color: var(--ui-ink-2); background: #f5f9f7; }
.ui-note { margin-top: 10px; font-size: 11.5px; color: var(--ui-ink-3); }
.ui-approved[hidden] { display: none; }
.ui-approved { margin-top: 14px; display: flex; align-items: center; gap: 8px; font-size: 13px; color: #0b5a45; background: #e6f5ee; padding: 9px 12px; border-radius: 10px; }
.ui-rail { list-style: none; padding: 14px 0 0; margin: 16px 0 0; border-top: 1px solid var(--ui-line); display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; }
.ui-rail li { display: grid; grid-template-columns: auto 1fr; column-gap: 8px; align-items: center; font-size: 12px; }
.ui-rail li i { grid-row: span 2; font-style: normal; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: #eef3f1; color: var(--ui-ink-3); font-weight: 700; font-size: 12px; }
.ui-rail li small { color: var(--ui-ink-3); font-size: 10.5px; }
.ui-rail li.done i { background: #155e4b; color: #fff; }
.ui-rail li.now i { background: #fff; color: #155e4b; box-shadow: inset 0 0 0 2px #155e4b; }

/* ------------------------------------------------------------------ comparison */
.compare { max-width: 980px; margin-inline: auto; border-radius: 24px; overflow: hidden; background: var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow-lg); }
.crow { display: grid; grid-template-columns: .8fr 1fr 1.2fr; }
.crow > * { display: flex; align-items: center; gap: 10px; padding: 16px 22px; border-top: 1px solid var(--line); font-size: .95rem; }
.crow b { font-family: var(--display); font-weight: 750; color: var(--ink); }
.crow--head > * { border-top: 0; padding-block: 16px; font-size: .78rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; color: var(--dim); background: var(--paper); }
.crow--head .crow__ld { background: var(--green); color: #fff; letter-spacing: .08em; }
.crow__ld img { width: 18px; height: 18px; filter: brightness(0) invert(1); }
.crow__old { color: var(--muted); }
.crow__new { color: var(--ink); font-weight: 600; background: #f1f8f3; }
.crow__new .ic { flex: none; width: 22px; height: 22px; padding: 4px; border-radius: 50%; background: var(--green); color: #fff; stroke-width: 3; }
.js .compare .crow:not(.crow--head) { opacity: 0; translate: -10px 0; }
.compare.is-in .crow:not(.crow--head) { animation: slideIn .5s var(--ease) forwards; animation-delay: calc(.15s + var(--i) * .12s); }
@keyframes slideIn { to { opacity: 1; translate: 0 0; } }

/* ------------------------------------------------------------------ bento */
.bento { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.bento .card { padding: 22px; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.bento .card h3 { margin-top: 2px; }
.bento .card p { font-size: .92rem; line-height: 1.55; }
.bento__twin { grid-column: span 2; flex-direction: row !important; align-items: stretch !important; gap: 20px !important; }
.bento__shot { flex: 1.3; border-radius: 12px; overflow: hidden; border: 1px solid var(--line); min-height: 170px; }
.bento__shot img { width: 100%; height: 100%; object-fit: cover; }
.bento__twin .bento__txt { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 10px; }
.bento__txt { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.bento__wide { grid-column: span 2; flex-direction: row !important; align-items: center !important; gap: 22px !important; }
.st { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-size: .72rem; font-weight: 750; white-space: nowrap; }
.st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.st--av { color: #0e7050; background: #e0f2e8; }
.st--new { color: var(--amber); background: var(--amber-bg); }
.st--next { color: var(--blue); background: var(--blue-bg); }
.auto { width: 100%; padding: 14px; border-radius: 14px; background: var(--paper); border: 1px solid var(--line); }
.auto__row { display: flex; align-items: center; gap: 10px; font-family: var(--display); font-size: .9rem; color: var(--ink); }
.toggle { position: relative; width: 44px; height: 24px; border-radius: 999px; background: #d9d3c4; transition: background .35s; flex: none; }
.toggle span { position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .25); transition: translate .35s var(--pop); }
.is-in .toggle { background: var(--green-3); transition-delay: .5s; }
.is-in .toggle span { translate: 20px 0; transition-delay: .5s; }
.auto__queue { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 6px; }
.auto__queue li { display: flex; align-items: center; gap: 8px; height: 22px; padding: 0 8px; border-radius: 7px; background: var(--sheet); border: 1px solid var(--line); }
.auto__queue i { width: 8px; height: 8px; border-radius: 50%; background: #e1a13a; transition: background .3s; }
.auto__queue span { height: 6px; border-radius: 3px; background: #e7e1d3; flex: 1; max-width: calc(80% - var(--i) * 18%); }
.is-in .auto__queue li i { background: var(--green-3); transition-delay: calc(1s + var(--i) * .5s); }
.pcut--plane .ic { transition: translate .9s var(--ease), rotate .9s var(--ease); }
.is-in .pcut--plane .ic { animation: fly 1.4s var(--ease) .6s both; }
@keyframes fly { 0% { translate: 0 0; } 45% { translate: 22px -18px; opacity: 0; } 55% { translate: -22px 18px; opacity: 0; } 100% { translate: 0 0; opacity: 1; } }
.pcut--lock .ic path { transition: translate .4s var(--pop) .8s; translate: 0 -3px; }
.is-in .pcut--lock .ic path { translate: 0 0; }
.score { flex: 1; height: 120px; display: flex; align-items: flex-end; gap: 8px; padding: 12px; border-radius: 14px; background: var(--paper); border: 1px solid var(--line); }
.score span { flex: 1; height: var(--h); border-radius: 6px 6px 2px 2px; background: linear-gradient(180deg, #5fb48b, var(--green)); transform-origin: bottom; scale: 1 .08; transition: scale .8s var(--pop); transition-delay: calc(.3s + var(--i) * .12s); }
.is-in .score span { scale: 1 1; }
.bento__wide .bento__txt { flex: 1.3; }
.roadmap { margin-top: 22px; padding: 18px 22px; border-radius: 20px; border: 1.5px dashed rgba(44, 109, 179, .35); background: rgba(229, 238, 250, .45); display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; }
.roadmap__label { display: inline-flex; align-items: center; gap: 10px; font-weight: 750; color: var(--ink); }
.roadmap ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.roadmap li { padding: 6px 12px; border-radius: 999px; background: var(--sheet); border: 1px solid var(--line); font-size: .86rem; font-weight: 600; color: var(--ink-2); }

/* ------------------------------------------------------------------ trust, stats, roles, steps */
.trust { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.trust .card, .role { padding: 26px; }
.trust h3, .role h3 { margin-top: 16px; }
.trust p { margin-top: 8px; font-size: .94rem; line-height: 1.6; }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.stat { padding: 26px 22px; display: flex; flex-direction: column; gap: 12px; }
.stat p:last-child { font-size: .92rem; line-height: 1.55; color: var(--ink-2); }
.stat__num { font-family: var(--display); font-size: clamp(2.2rem, 1.6rem + 1.8vw, 3.1rem); line-height: 1; font-weight: 800; letter-spacing: -0.04em; color: var(--green); font-variant-numeric: tabular-nums; }
.stat__num--word { font-size: clamp(1.8rem, 1.3rem + 1.4vw, 2.5rem); }
.ring { position: relative; width: 88px; height: 88px; }
.ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ring circle { fill: none; stroke-width: 11; }
.ring__bg { stroke: var(--mint); }
.ring__fg { stroke: var(--green-3); stroke-linecap: round; stroke-dasharray: 314.2; stroke-dashoffset: 314.2; transition: stroke-dashoffset 1.6s var(--ease); }
.stat.is-in .ring__fg { stroke-dashoffset: calc(314.2 * (1 - var(--v) / 100)); }
.ring span { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--display); font-size: 1.25rem; font-weight: 800; color: var(--green); }
.honest { margin: 26px auto 0; max-width: 920px; padding: 22px 26px; border-radius: 20px; background: #fff9ea; border: 1px solid rgba(168, 98, 10, .2); box-shadow: var(--paper-shadow); transform: rotate(-.3deg); }
.honest .hand { color: var(--amber); }
.honest ul { margin: 10px 0 0; padding-left: 20px; display: grid; gap: 6px; font-size: .95rem; color: var(--ink-2); }
.roles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.ticks { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 9px; }
.ticks li { position: relative; padding-left: 28px; font-size: .95rem; line-height: 1.5; color: var(--ink-2); }
.ticks li::before { content: ""; position: absolute; left: 0; top: 2px; width: 19px; height: 19px; border-radius: 50%; background: var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b5e4b' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18 8'/%3E%3C/svg%3E") center / 12px no-repeat; }
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; counter-reset: st; }
.steps .card { padding: 24px 22px; }
.steps__n { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; font-family: var(--display); font-weight: 800; font-size: 1.15rem; color: var(--green); background: var(--mint); box-shadow: 2px 3px 0 var(--mint-2); }
.steps .card:first-child .steps__n { background: var(--green); color: #fff; box-shadow: 2px 3px 0 #073f33; }
.steps h3 { margin-top: 16px; font-size: 1.15rem; }
.steps__meta { margin-top: 4px; font-size: .8rem; font-weight: 700; color: var(--green-2); }
.steps p:last-child { margin-top: 10px; font-size: .92rem; line-height: 1.58; color: var(--ink-2); }

/* ------------------------------------------------------------------ contact */
.contact { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 56px); padding: clamp(26px, 4vw, 48px); border-radius: 30px; }
.contact h2 { margin-top: 12px; }
.form { display: grid; gap: 14px; }
.form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form label { display: grid; gap: 6px; font-size: .86rem; font-weight: 650; color: var(--ink-2); }
.form input, .form select, .form textarea { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line-2); background: var(--paper); color: var(--ink); font-size: .96rem; transition: border-color .2s, box-shadow .2s, background .2s; }
.form textarea { resize: vertical; min-height: 92px; }
.form select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235d6b64' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; background-size: 16px; padding-right: 38px; }
.form input:focus, .form select:focus, .form textarea:focus { outline: none; border-color: var(--green-3); background: #fff; box-shadow: 0 0 0 3px rgba(46, 154, 111, .16); }
.form input.is-invalid { border-color: var(--red); }
.form .btn { justify-self: start; margin-top: 4px; }
.form[hidden], .form__done[hidden] { display: none; }
.form__hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.form__status { margin: 0; min-height: 1.3em; font-size: .9rem; color: var(--ink-2); }
.form__status:empty { min-height: 0; }
.form__status.is-error { color: var(--red); }
.form__done { display: grid; gap: 10px; align-content: center; justify-items: start; outline: none; }
.form__done h3 { margin: 0; }
.form__done p { margin: 0; color: var(--ink-2); }
.form__tick { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--mint, #e1f0e7); color: var(--green-2); }
.form__tick .ic { width: 24px; height: 24px; }

/* ------------------------------------------------------------------ faq */
.faq { max-width: 860px; }
.faq__list { display: grid; gap: 10px; }
.faq details { border-radius: 16px; background: var(--paper); border: 1px solid var(--line); transition: background .2s, border-color .2s; }
.faq details[open] { background: var(--sheet); border-color: var(--mint-2); box-shadow: var(--paper-shadow); }
.faq summary { list-style: none; cursor: pointer; padding: 18px 58px 18px 22px; position: relative; color: var(--ink); font-family: var(--display); font-weight: 750; font-size: 1.02rem; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 18px; top: 50%; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; display: grid; place-items: center; background: var(--mint); color: var(--green); font-size: 1.2rem; font-weight: 700; transition: rotate .3s var(--ease); }
.faq details[open] summary::after { rotate: 45deg; }
.faq details p { padding: 0 22px 20px; font-size: .96rem; line-height: 1.65; color: var(--ink-2); }

/* ------------------------------------------------------------------ footer */
.footer { background: var(--paper-2); padding: 60px 0 30px; border-top: 1px solid var(--line); }
.footer__inner { display: grid; grid-template-columns: 1fr 1.4fr; gap: 40px; }
.footer__brand p { margin-top: 12px; font-size: .92rem; color: var(--muted); max-width: 320px; }
.footer__nav { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.footer__nav div { display: grid; gap: 10px; align-content: start; font-size: .92rem; }
.footer__nav b { font-size: .74rem; text-transform: uppercase; letter-spacing: .14em; color: var(--dim); font-weight: 750; }
.footer__nav a { color: var(--ink-2); }
.footer__nav a:hover { color: var(--green); }
.footer__fine { display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-top: 44px; padding-top: 20px; border-top: 1px solid var(--line); font-size: .8rem; color: var(--dim); }

/* ------------------------------------------------------------------ responsive */
@media (max-width: 1100px) {
  .nav__links { display: none; }
  .nav__cta { margin-left: auto; }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .steps { grid-template-columns: repeat(2, 1fr); }
  .bento { grid-template-columns: repeat(2, 1fr); }
  .bento__twin, .bento__wide { grid-column: span 2; }
}
@media (max-width: 900px) {
  .nav__cta, .nav__bar > .lang { display: none; }
  .nav__toggle { display: block; }
  .feature__grid { grid-template-columns: 1fr; gap: 56px; }
  .feature__grid--flip .feature__media { order: 0; }
  .feature__text { max-width: 640px; }
  .tour__pane { grid-template-columns: 1fr; }
  .trust, .roles { grid-template-columns: repeat(2, 1fr); }
  .contact { grid-template-columns: 1fr; }
  .hero-stage { padding: 0 24px; }
  .hero-stage::before { left: 40px; right: 12px; top: 14px; }
  .note--1 { left: -6px; } .note--2 { right: -6px; }
}
@media (max-width: 640px) {
  body { font-size: 16px; }
  .wrap { width: calc(100% - 32px); }
  .hero { padding-top: calc(var(--nav-h) + 40px); }
  .hero h1 { font-size: clamp(2.2rem, 1.1rem + 6vw, 3rem); }
  .hero__ctas .btn { flex: 1 1 100%; }
  .hero-stage { padding: 0; margin-top: 40px; }
  .hero-stage::before { left: 12px; right: -6px; top: 10px; }
  .print--hero .tape { width: 96px; height: 26px; }
  .hand--hero { font-size: 1.8rem; }
  .note { position: relative; left: auto !important; right: auto !important; top: auto !important; bottom: auto !important; margin-top: 14px; min-width: 0; }
  .hero-stage .note--1, .hero-stage .note--3 { margin-right: 18%; }
  .hero-stage .note--2 { margin-left: 18%; }
  .hand--hero { position: relative; left: auto; bottom: auto; justify-content: center; margin-top: 10px; }
  .caption { margin-top: 24px; }
  .media { padding: 16px 16px 20px; border-radius: 22px; }
  .slip { position: relative; right: auto !important; left: auto !important; bottom: auto; width: auto; margin: -18px 10px 0; }
  .media--board { padding: 12px; }
  .tag { width: 34%; padding: 6px 7px; gap: 6px; }
  .tag__ic { width: 24px; height: 24px; }
  .tag__t small { display: none; }
  .tag__t b { font-size: .8rem; }
  .folder { left: 36.5%; width: 27%; padding: 16px 6px 8px; }
  .folder__lines li { font-size: .56rem; padding: 3px 4px; }
  .folder__title { font-size: .66rem; }
  .stamp--folder { font-size: .62rem; margin-left: -40px; }
  .crow { grid-template-columns: 1fr; }
  .crow > * { padding: 8px 18px; border-top: 0; }
  .crow b { padding-top: 16px; border-top: 1px solid var(--line); }
  .crow--head { display: none; }
  .crow__new { margin: 0 12px 14px; border-radius: 10px; }
  .bento, .trust, .roles, .stats, .steps { grid-template-columns: 1fr; }
  .bento__twin, .bento__wide { grid-column: auto; flex-direction: column !important; }
  .form__row { grid-template-columns: 1fr; }
  .form .btn { justify-self: stretch; }
  .footer__inner { grid-template-columns: 1fr; }
  .footer__nav { grid-template-columns: repeat(2, 1fr); }
  .ui-grid--4, .ui-grid--3 { grid-template-columns: repeat(2, 1fr); }
  .ui-split, .ui-compare { grid-template-columns: 1fr; }
  .ui-rail { grid-template-columns: repeat(5, auto); overflow-x: auto; }
  .ui-rail li { grid-template-columns: auto; justify-items: center; text-align: center; }
  .ui-rail li i { grid-row: auto; }
  .ui-rail small { display: none; }
  .tour__tabs button span { display: none; }
  .tour__tabs button[aria-selected="true"] span { display: inline; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; animation-delay: 0s !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .rv .reveal, .appear, .w, .hero-stage .note, .hero-stage .hand--hero, .slip, .slip [data-t], .tag, .folder, .folder__lines li, .stamp--folder, .board__strings path, .js .compare .crow { opacity: 1 !important; translate: none !important; }
  .tag__ok { scale: 1; }
}

/* ================================================================== planning (2026-10)
   The weekly workbook and what is done with it: the sheet being read, the week plan (certainty against cost, deadlines,
   one click to adopt), the numbers behind a rate and a client's margin, the look-ahead, the assistant. Coded paper
   visuals in the same language as the board and the slips above; [data-anim] blocks replay when they come back. */
.section--intro { padding: clamp(56px, 7vw, 92px) 0 0; }
.section--intro .head { margin-bottom: 0; }
.section--intro + .feature { padding-top: clamp(44px, 6vw, 72px); }

/* 01 the workbook, read */
.media--sheet { padding: 24px 22px 30px; }
.xls { position: relative; border-radius: 14px; background: var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow); overflow: hidden; font-size: .74rem; }
.xls__bar { display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: #e9f2ec; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: .7rem; color: var(--green-2); }
.xls__bar .ic { width: 15px; height: 15px; color: var(--green); }
.xls__bar span { margin-left: auto; color: var(--dim); }
.xls table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.xls col.c-l { width: 23%; } .xls col.c-m { width: 21%; }
.xls th, .xls td { padding: 6px 6px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; color: var(--ink-2); }
.xls th { background: var(--paper); font-weight: 700; color: var(--muted); text-align: center; font-size: .68rem; }
.xls td.l { text-align: left; font-weight: 700; color: var(--ink); font-size: .7rem; }
.xls td.m { text-align: left; color: var(--muted); font-size: .7rem; }
.xls tbody tr { position: relative; transition: background .35s; }
.xls tbody tr td:first-child { position: relative; }
.xls tbody tr td:first-child::after { content: ""; position: absolute; right: 4px; top: 50%; width: 14px; height: 14px; margin-top: -7px; border-radius: 50%; background: var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18 8'/%3E%3C/svg%3E") center / 9px no-repeat; scale: 0; }
.media--sheet.is-in .xls tbody tr { animation: rowRead .5s var(--ease) forwards; animation-delay: calc(.5s + var(--i) * .32s); }
.media--sheet.is-in .xls tbody tr td:first-child::after { animation: popIn .3s var(--pop) forwards; animation-delay: calc(.75s + var(--i) * .32s); }
@keyframes rowRead { 0% { background: transparent; } 40% { background: #d6eedf; } 100% { background: #edf7f1; } }
.xls__sec td::after { display: none; }
.xls__sec td { background: var(--paper); color: var(--green-2) !important; font-weight: 750; font-size: .64rem !important; letter-spacing: .1em; text-transform: uppercase; text-align: left !important; padding-block: 4px !important; }
.media--sheet .stamp { right: 18px; bottom: -10px; font-size: .74rem; padding: 5px 10px; background: var(--sheet); mix-blend-mode: normal; opacity: 0; }
.media--sheet.is-in .stamp { animation: stampIn .35s var(--pop) 3.1s forwards; }
.hand--sheet { position: absolute; left: 20px; bottom: -40px; font-size: 1.55rem; transform: rotate(-3deg); opacity: 0; }
.media--sheet.is-in .hand--sheet { animation: fadeUp .6s var(--ease) 3.4s forwards; }

/* 02 the week plan */
.media--plan { padding: 22px; }
.planc { position: relative; padding: 16px 16px 18px; border-radius: 16px; background: var(--grain-soft) var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow); }
.planc__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.planc__head b { font-family: var(--display); font-size: .98rem; }
.planc__curve { display: block; width: 100%; height: auto; margin-top: 8px; overflow: visible; }
.planc__curve .g { stroke: var(--line-2); stroke-width: 1; }
.planc__curve .t { stroke: var(--green-3); stroke-width: 1.4; stroke-dasharray: 4 4; }
.planc__curve text { font: 700 9px var(--font); fill: var(--dim); }
.planc__curve .area { fill: var(--mint); opacity: .7; }
.planc__curve .line { fill: none; stroke: var(--green); stroke-width: 2.6; stroke-linejoin: round; stroke-dasharray: 700; stroke-dashoffset: 700; }
.planc__curve .dot { fill: var(--sheet); stroke: var(--ink); stroke-width: 2; }
.planc__curve .mk { fill: var(--green-3); stroke: var(--sheet); stroke-width: 2; scale: 0; transform-box: fill-box; transform-origin: center; }
.planc__curve .mk--best { fill: var(--green); }
.planc__curve .lab { font: 800 10px var(--display); fill: var(--ink); opacity: 0; }
.media--plan.is-in .planc__curve .line { animation: draw 1.4s var(--ease) .2s forwards; }
.media--plan.is-in .planc__curve .mk { animation: popIn .35s var(--pop) forwards; animation-delay: calc(1s + var(--i) * .25s); }
.media--plan.is-in .planc__curve .lab { animation: fadeUp .4s var(--ease) forwards; animation-delay: calc(1.1s + var(--i) * .25s); }
.planc__tiers { margin-top: 10px; display: grid; gap: 7px; }
.tier { position: relative; display: grid; grid-template-columns: auto 1fr; align-items: center; column-gap: 12px; row-gap: 4px; padding: 8px 10px; border-radius: 12px; background: var(--paper); border: 1px solid var(--line); opacity: 0; }
.tier--best { background: linear-gradient(110deg, var(--mint), var(--sheet) 75%); border-color: var(--mint-2); }
.media--plan.is-in .tier { animation: drop .55s var(--pop) forwards; animation-delay: calc(1.5s + var(--i) * .18s); }
.tier__ring { --v: 90; grid-row: span 2; position: relative; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: conic-gradient(var(--green-3) calc(var(--v) * 1%), var(--mint) 0); font: 800 .62rem var(--display); color: var(--green); }
.tier__ring::before { content: ""; position: absolute; inset: 5px; border-radius: 50%; background: var(--sheet); }
.tier__ring span { position: relative; }
.tier__t { display: grid; line-height: 1.15; min-width: 0; }
.tier__t small { font-size: .68rem; font-weight: 700; color: var(--muted); }
.tier__t b { font-family: var(--display); font-size: 1.05rem; }
.tier__chips { grid-column: 2; display: flex; flex-wrap: wrap; gap: 4px; }
.tier__chips i { display: inline-flex; align-items: center; gap: 3px; padding: 2px 7px; border-radius: 999px; background: var(--sheet); border: 1px solid var(--line); font-style: normal; font-size: .64rem; font-weight: 750; color: var(--ink-2); }
.tier__chips .ic { width: 11px; height: 11px; color: var(--green-2); }
.tier__badge { position: absolute; top: -8px; right: 12px; padding: 1px 8px; border-radius: 999px; background: var(--green); color: #fff; font-style: normal; font-size: .62rem; font-weight: 750; box-shadow: 0 2px 0 #073f33; }
.planc__dl { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 5px; }
.planc__dl > span { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; border-radius: 8px; background: var(--paper); border: 1px solid var(--line); font-size: .66rem; font-weight: 700; color: var(--ink-2); opacity: 0; }
.planc__dl > span b { font-family: var(--mono); font-size: .64rem; color: var(--ink); }
.planc__dl em { font-style: normal; font-weight: 800; }
.planc__dl .ok em { color: var(--green-2); } .planc__dl .wait em { color: var(--amber); } .planc__dl .bad em { color: var(--red); }
.planc__dl .ic { width: 12px; height: 12px; color: var(--muted); }
.media--plan.is-in .planc__dl > span { animation: fadeUp .4s var(--ease) forwards; animation-delay: calc(2s + var(--i) * .12s); }
.planc__act { position: relative; margin-top: 12px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.planc__act small { flex-basis: 100%; }
.planc__act small { font-size: .7rem; color: var(--muted); }
.media--plan.is-in .planc__act .fake-btn { animation: press .3s ease 2.8s forwards; }
@keyframes press { 50% { transform: translateY(3px); box-shadow: 0 0 0 #073f33; background: #0a5243; } 100% { transform: translateY(3px); box-shadow: 0 0 0 #073f33; background: #0a5243; } }
.stamp--plan { right: 4px; bottom: 2px; font-size: .74rem; padding: 4px 10px; background: var(--sheet); mix-blend-mode: normal; opacity: 0; }
.media--plan.is-in .stamp--plan { animation: stampIn .35s var(--pop) 3.1s forwards; }

/* 03 the numbers: a rate taken apart, money per client */
.media--duo { padding: 22px; display: grid; gap: 14px; }
.mini { padding: 13px 14px 14px; border-radius: 14px; background: var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow); }
.mini:nth-child(2) { transform: rotate(.6deg); margin-left: 18px; }
.mini__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.mini__head b { font-family: var(--display); font-size: .86rem; }
/* a waterfall like the app's: bars stand on the axis (base, end) or float from where the last one ended (--b); the
   plot is the column minus the label row, so heights and offsets are scaled by .78 */
.wf { margin-top: 12px; display: grid; grid-template-columns: repeat(6, 1fr); gap: 7px; height: 120px; }
.wf span { position: relative; height: 100%; }
.wf i { position: absolute; left: 0; right: 0; bottom: calc(18px + var(--b, 0%) * .78); height: calc(var(--h, 0%) * .78); border-radius: 6px 6px 2px 2px; background: var(--mint-2); transform-origin: bottom; scale: 1 0; }
.wf .base i { background: var(--green-3); } .wf .end i { background: var(--green); }
.wf .up i { background: #9fd3bb; }
.wf .flat i { height: 2px; border-radius: 2px; background: var(--line-2); }
.wf .down i { background: #efb3a7; }
.wf em { position: absolute; left: -4px; right: -4px; bottom: calc(21px + (var(--b, 0%) + var(--h, 0%)) * .78); text-align: center; font-style: normal; font: 800 .66rem var(--display); color: var(--ink); opacity: 0; }
.wf .flat em { color: var(--dim); }
.wf small { position: absolute; left: -4px; right: -4px; bottom: 0; text-align: center; font-size: .6rem; font-weight: 700; color: var(--muted); white-space: nowrap; }
.media--duo.is-in .wf i { animation: growY .7s var(--pop) forwards; animation-delay: calc(.3s + var(--i) * .14s); }
.media--duo.is-in .wf em { animation: fadeUp .4s var(--ease) forwards; animation-delay: calc(.6s + var(--i) * .14s); }
@keyframes growY { to { scale: 1 1; } }
.cl { margin-top: 10px; display: grid; gap: 7px; }
.cl > div { display: grid; grid-template-columns: 6.6rem 1fr 2.6rem; align-items: center; gap: 8px; font-size: .72rem; font-weight: 700; color: var(--ink-2); }
.cl > div > span { height: 10px; border-radius: 999px; background: var(--paper-2); overflow: hidden; }
.cl > div > span i { display: block; height: 100%; width: var(--w); border-radius: inherit; background: var(--green-3); transform-origin: left; scale: 0 1; }
.cl .thin span i { background: #e0913a; } .cl .loss span i { background: var(--red); }
.cl b { font-family: var(--display); text-align: right; font-size: .78rem; }
.cl .loss b { color: var(--red); }
.media--duo.is-in .cl span i { animation: growX .8s var(--pop) forwards; animation-delay: calc(1.2s + var(--i) * .14s); }
@keyframes growX { to { scale: 1 1; } }
.mini__note { margin-top: 9px; display: inline-flex; align-items: center; gap: 6px; padding: 4px 9px; border-radius: 8px; background: var(--red-bg); color: var(--red); font-size: .68rem; font-weight: 750; opacity: 0; }
.mini__note .ic { width: 12px; height: 12px; }
.media--duo.is-in .mini__note { animation: fadeUp .45s var(--ease) 2.1s forwards; }

/* 04 the look-ahead: absence by week, one more vacation, the peak */
.media--ahead { padding: 22px; display: grid; gap: 14px; }
.heat { margin-top: 10px; display: grid; grid-template-columns: 6.2rem repeat(8, 1fr); gap: 4px; align-items: center; }
.heat > small { font-size: .58rem; font-weight: 700; color: var(--dim); text-align: center; }
.heat > b { font-size: .66rem; font-weight: 700; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.heat > i { height: 16px; border-radius: 5px; background: var(--paper-2); opacity: 0; }
.heat > i.h1 { background: var(--mint); } .heat > i.h2 { background: #f6e7bf; } .heat > i.h3 { background: #f0c27f; } .heat > i.h4 { background: #df8a5e; }
.heat > i.f { background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, .6), rgba(255, 255, 255, .6) 3px, transparent 3px, transparent 6px); }
.media--ahead.is-in .heat > i { animation: fadeIn .35s ease forwards; animation-delay: calc(.2s + var(--i) * .035s); }
@keyframes fadeIn { to { opacity: 1; } }
.vac { margin-top: 10px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.vac > span { padding: 3px 9px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--sheet); font-size: .66rem; font-weight: 700; color: var(--ink-2); }
.vac > span.on { background: var(--green); border-color: var(--green); color: #fff; }
.vac__ok { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 9px; background: var(--mint); color: var(--green); font-size: .7rem; font-weight: 750; opacity: 0; }
.vac__ok .ic { width: 12px; height: 12px; stroke-width: 2.8; }
.media--ahead.is-in .vac__ok { animation: fadeUp .45s var(--ease) 1.4s forwards; }
.pk { position: relative; margin-top: 20px; display: flex; align-items: flex-end; gap: 4px; height: 76px; }
.pk i { flex: 1; height: var(--h); border-radius: 4px 4px 2px 2px; background: var(--mint-2); position: relative; overflow: hidden; transform-origin: bottom; scale: 1 0; }
.pk i::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: var(--x, 0%); background: #e0913a; }
.pk i.bf { background: var(--green-3); }
.media--ahead.is-in .pk i { animation: growY .6s var(--pop) forwards; animation-delay: calc(1.6s + var(--i) * .06s); }
.pk__bf { position: absolute; top: -15px; transform: translateX(-2px); font: 800 .6rem var(--display); color: var(--amber); }
.hand--peak { margin-top: 6px; font-size: 1.3rem; color: var(--amber); transform: rotate(-2deg); opacity: 0; }
.media--ahead.is-in .hand--peak { animation: fadeUp .5s var(--ease) 2.5s forwards; }

/* 05 the assistant */
.media--chat { padding: 26px 22px 30px; display: grid; gap: 12px; }
.bub { max-width: 88%; padding: 11px 14px; border-radius: 16px; font-size: .86rem; line-height: 1.5; box-shadow: var(--paper-shadow); opacity: 0; }
.bub--q { justify-self: end; background: var(--green); color: #fff; border-bottom-right-radius: 5px; }
.bub--a { justify-self: start; background: var(--sheet); border: 1px solid var(--line); color: var(--ink-2); border-bottom-left-radius: 5px; }
.bub--a b { color: var(--ink); }
.bub__src { margin-top: 8px; display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 8px; background: #f1f8f4; border: 1px solid #cfe6d9; font-size: .68rem; font-weight: 700; color: var(--green-2); }
.bub__src .ic { width: 12px; height: 12px; }
.typing { justify-self: start; display: inline-flex; gap: 4px; padding: 10px 13px; border-radius: 14px; background: var(--sheet); border: 1px solid var(--line); opacity: 0; }
.typing i { width: 6px; height: 6px; border-radius: 50%; background: var(--dim); animation: bob 1s ease-in-out infinite; }
.typing i:nth-child(2) { animation-delay: .15s; } .typing i:nth-child(3) { animation-delay: .3s; }
.media--chat.is-in .bub--q { animation: drop .5s var(--pop) .2s forwards; }
.media--chat.is-in .typing { animation: typing 1.3s ease .8s forwards; }
@keyframes typing { 0% { opacity: 0; } 15%, 85% { opacity: 1; } 100% { opacity: 0; height: 0; padding-block: 0; margin-top: -12px; } }
.media--chat.is-in .bub--a { animation: drop .55s var(--pop) 2.1s forwards; }

/* the product glimpse: the week plan in the app's colours */
.ui-tiers { margin-top: 14px; display: grid; gap: 8px; }
.ui-tier { display: grid; grid-template-columns: auto 1fr; align-items: center; column-gap: 12px; row-gap: 4px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--ui-line); background: #fff; }
.ui-tier--on { background: #eef8f3; border-color: #9fd3bb; box-shadow: 0 0 0 2px rgba(46, 154, 111, .18); }
.ui-tier .tier__ring { width: 44px; height: 44px; font-size: .66rem; }
.ui-tier .tier__ring::before { background: #fff; }
.ui-tier--on .tier__ring::before { background: #eef8f3; }
.ui-tier small { display: block; font-size: 11px; color: var(--ui-ink-3); font-weight: 650; }
.ui-tier b { display: block; font-size: 1.1rem; }
.ui-tier .tier__chips i { background: #f1f7f4; border-color: var(--ui-line); }
.ui-trade { display: inline-flex; align-items: center; gap: 10px; margin-top: 14px; padding: 7px 12px; border-radius: 12px; background: #f1f7f4; font-size: 12px; color: var(--ui-ink-2); }
.ui-trade b { font-size: 14px; }
.ui-trade i { font-style: normal; font-weight: 800; color: #2e9a6f; font-size: 1.1rem; }
.ui-dl { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.ui-dl span { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; border-radius: 9px; border: 1px solid var(--ui-line); background: #fff; font-size: 11.5px; color: var(--ui-ink-2); }
.ui-dl b { font-family: var(--mono); font-size: 11px; }
.ui-dl em { font-style: normal; font-weight: 800; }
.ui-dl .ok em { color: #0e7a55; } .ui-dl .wait em { color: #9a5b00; } .ui-dl .bad em { color: #c2334a; }

/* evidence: the planning row */
.stats--two { margin-top: 16px; grid-template-columns: repeat(2, 1fr); }
.stat__pair { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.stat__pair span { font-family: var(--display); font-size: clamp(2.2rem, 1.6rem + 1.8vw, 3.1rem); line-height: 1; font-weight: 800; letter-spacing: -0.04em; color: var(--green); font-variant-numeric: tabular-nums; }
.stat__pair span + span { color: var(--dim); font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.2rem); }
.stat__pair small { display: block; font-size: .72rem; font-weight: 700; letter-spacing: .02em; color: var(--muted); }

/* bento: the two groups */
.bento__label { grid-column: 1 / -1; display: flex; align-items: center; gap: 12px; margin-top: 10px; font-family: var(--display); font-weight: 800; font-size: 1.05rem; color: var(--ink); }
.bento__label:first-child { margin-top: 0; }
.bento__label::after { content: ""; flex: 1; height: 1px; background: var(--line-2); }
.bento__plan { grid-column: span 2; flex-direction: row !important; align-items: center !important; gap: 22px !important; }
.bento__plan .bento__txt { flex: 1.2; }
.minicurve { flex: 1; height: 120px; padding: 10px 12px; border-radius: 14px; background: var(--paper); border: 1px solid var(--line); }
.minicurve svg { width: 100%; height: 100%; overflow: visible; }
.minicurve path { fill: none; stroke: var(--green); stroke-width: 3; stroke-linejoin: round; stroke-dasharray: 400; stroke-dashoffset: 400; transition: stroke-dashoffset 1.4s var(--ease) .3s; }
.minicurve circle { fill: var(--green-3); stroke: var(--sheet); stroke-width: 2; }
.minicurve circle.o { fill: var(--sheet); stroke: var(--ink); }
.minicurve line { stroke: var(--green-3); stroke-width: 1.4; stroke-dasharray: 5 5; opacity: .6; }
.is-in .minicurve path { stroke-dashoffset: 0; }

#wochenplan, #woche, #zahlen, #vorausschau, #fragen { --est: 560px; }
#stoerungen { --est: 190px; }
@media (max-width: 900px) { #wochenplan, #woche, #zahlen, #vorausschau, #fragen { --est: 1000px; } #stoerungen { --est: 230px; } }
@media (max-width: 640px) {
  #wochenplan, #woche, #zahlen, #vorausschau, #fragen { --est: 1080px; } #stoerungen { --est: 260px; }
  .xls th.d3, .xls td.d3, .xls th.d4, .xls td.d4, .xls th.d5, .xls td.d5 { display: none; }
  .xls col.d3, .xls col.d4, .xls col.d5 { width: 0; }
  .xls col.c-l { width: 29%; } .xls col.c-m { width: 33%; }
  .xls td.l, .xls td.m { font-size: .66rem; }
  .tour__tabs { gap: 5px; }
  .tour__tabs button { padding: 10px 13px; }
  .hand--sheet { position: relative; left: auto; bottom: auto; margin-top: 10px; }
  .mini:nth-child(2) { margin-left: 0; transform: none; }
  .heat { grid-template-columns: 4.8rem repeat(8, 1fr); }
  .stats--two { grid-template-columns: 1fr; }
  .bento__plan { grid-column: auto; flex-direction: column !important; }
  .minicurve { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .xls tbody tr { background: #edf7f1; } .xls tbody tr td:first-child::after { scale: 1; }
  .tier, .planc__dl > span, .planc__curve .lab, .bub, .heat > i, .vac__ok, .hand--peak, .hand--sheet, .mini__note { opacity: 1 !important; }
  .planc__curve .line, .minicurve path { stroke-dashoffset: 0 !important; }
  .planc__curve .mk, .wf i, .cl span i, .pk i { scale: 1 !important; }
  .typing { display: none; }
}
.bub--mini { opacity: 1; max-width: 46%; font-size: .8rem; transform: rotate(-1deg); }
#funktionen { --est: 2480px; }
@media (max-width: 1100px) { #funktionen { --est: 3300px; } }
@media (max-width: 900px) { #funktionen { --est: 4300px; } }
@media (max-width: 640px) { #funktionen { --est: 4900px; } .bub--mini { max-width: 100%; } }

/* ================================================================== what the AI takes on (2026-10-01)
   Three paper sheets from minutes to months; every row is a job the AI takes on and links to the section that shows
   it. Each sheet settles in on its own (a tall [data-anim] block would wait for 30 % of itself on phones), then its
   rows drop in and get their tick one after the other: work being taken over. */
.section--jobs .head { margin-bottom: clamp(28px, 4vw, 44px); }
.jobs { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.jobs__axis { position: absolute; left: 4%; right: 4%; top: -16px; height: 2px; background: repeating-linear-gradient(90deg, var(--green-3) 0 9px, transparent 9px 15px); opacity: .55; }
.jobs__axis i { position: absolute; right: -2px; top: -4px; width: 10px; height: 10px; border-top: 2px solid var(--green-3); border-right: 2px solid var(--green-3); transform: rotate(45deg); }
.jobs__col { padding: 16px 12px 12px; border-radius: 20px; background: var(--grain-soft) var(--sheet); border: 1px solid var(--line); box-shadow: var(--paper-shadow); }
.jobs__col:nth-child(2) { transform: rotate(-.5deg); } .jobs__col:nth-child(4) { transform: rotate(.5deg); }
.jobs__h { display: flex; align-items: center; gap: 8px; margin: 0 4px 10px; font: 800 .74rem var(--display); letter-spacing: .1em; text-transform: uppercase; color: var(--green-2); }
.jobs__h .ic { width: 16px; height: 16px; }
.job { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 9px 8px; border-radius: 14px; color: inherit; text-decoration: none; opacity: 0; transition: background .2s, translate .2s; }
.job + .job { margin-top: 2px; }
.job:hover, .job:focus-visible { background: var(--paper); translate: 3px 0; }
.job b { display: block; font: 750 .98rem/1.25 var(--display); color: var(--ink); }
.job small { display: block; margin-top: 1px; font-size: .8rem; line-height: 1.35; color: var(--muted); }
.job::after { content: ""; width: 20px; height: 20px; border-radius: 50%; background: var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18 8'/%3E%3C/svg%3E") center / 12px no-repeat; scale: 0; }
.jobs__col.is-in .job { animation: drop .5s var(--pop) forwards; animation-delay: calc(.3s + var(--i) * .08s); }
.jobs__col.is-in .job::after { animation: popIn .3s var(--pop) forwards; animation-delay: calc(1s + var(--i) * .14s); }
.jobs__ask { grid-column: 1 / -1; justify-self: center; display: inline-flex; align-items: center; gap: 10px; margin-top: 8px; padding: 11px 18px; border-radius: 999px; background: var(--green); color: #fff; text-decoration: none; font-weight: 700; font-size: .95rem; box-shadow: 0 3px 0 #073f33; transition: translate .2s, box-shadow .2s; }
.jobs__ask:hover { translate: 0 -1px; box-shadow: 0 4px 0 #073f33; }
.jobs__ask .ic { width: 18px; height: 18px; }
#aufgaben { --est: 820px; }
@media (max-width: 900px) {
  .jobs { grid-template-columns: 1fr; max-width: 560px; margin-inline: auto; }
  .jobs__axis { display: none; }
  .jobs__col:nth-child(2), .jobs__col:nth-child(4) { transform: none; }
  #aufgaben { --est: 1500px; }
}
@media (prefers-reduced-motion: reduce) {
  .job { opacity: 1 !important; } .job::after { scale: 1 !important; }
}

/* the Impressum (#impressum), at the end of the footer */
.footer__legal { margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--line); }
.footer__legal h2 { font-size: 1.05rem; letter-spacing: 0; margin-bottom: 14px; }
.footer__legal-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; font-size: .88rem; color: var(--ink-2); }
.footer__legal-cols p { margin: 0; line-height: 1.65; }
.footer__legal-cols .footer__legal-k { margin-bottom: 6px; font-size: .74rem; text-transform: uppercase; letter-spacing: .14em; color: var(--dim); font-weight: 750; line-height: 1.4; }
.footer__legal a { color: var(--ink-2); text-decoration: underline; text-underline-offset: 2px; }
.footer__legal a:hover { color: var(--green); }
.footer__legal + .footer__fine { margin-top: 28px; }
@media (max-width: 640px) { .footer__legal-cols { grid-template-columns: 1fr; gap: 16px; } }

/* the privacy policy (#datenschutz), folded under the Impressum; the footer link opens it */
.footer__privacy { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--line); }
.footer__privacy > summary { display: flex; align-items: baseline; gap: 12px; cursor: pointer; list-style: none; }
.footer__privacy > summary::-webkit-details-marker { display: none; }
.footer__privacy > summary h2 { font-size: 1.05rem; letter-spacing: 0; }
.footer__privacy-hint { font-size: .84rem; color: var(--green-2); text-decoration: underline; text-underline-offset: 2px; }
.footer__privacy[open] .footer__privacy-hint { display: none; }
.footer__privacy-body { max-width: 780px; margin-top: 12px; font-size: .88rem; line-height: 1.65; color: var(--ink-2); }
.footer__privacy-body h3 { margin: 16px 0 4px; font-size: .92rem; letter-spacing: 0; }
.footer__privacy-body p { margin: 0; }
.footer__privacy-body .footer__privacy-k { font-size: .74rem; text-transform: uppercase; letter-spacing: .14em; color: var(--dim); font-weight: 750; }
.footer__privacy a, .form .fine a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.footer__privacy + .footer__fine { margin-top: 28px; }
