/* Ferngale store: Direction A, the print wall (locked in projects/ferngale-store/DESIGN.md). Font: Baloo 2, OFL, self-hosted. */
@font-face{font-family:"Baloo 2";src:url(/fonts/baloo2-latin.woff2) format("woff2");font-weight:400 800;font-display:swap}
:root{--cream:#fffaf3;--wall:#f3dfc3;--forest:#2f6b4f;--deep:#1f3b2d;--ink:#2b2118;--saffron:#e2561b;--st:#b2400d;--mu:#ffd978;--mustard:#f2c14e;--sage:#8cc5a5;--muted:#5f5042;--line:#e6d6bf;--r:18px;--mono:ui-monospace,Menlo,Consolas,monospace;--ol:2.5px solid var(--ink);--sh:4px 4px 0 var(--ink);--sh2:7px 7px 0 var(--ink);--spring:cubic-bezier(.34,1.56,.64,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:76px}
body{margin:0;background:var(--cream);color:var(--ink);font:500 17px/1.5 "Baloo 2",ui-rounded,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block;height:auto}a{color:inherit}
h1,h2,h3{font-weight:800;line-height:1.02;margin:0;color:var(--deep);letter-spacing:-.01em}
h1{font-size:clamp(2.6rem,7vw,5.4rem)}h2{font-size:clamp(2rem,4.6vw,3.4rem)}h3{font-size:1.3rem;line-height:1.15}
em{font-style:normal;color:inherit;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M2 7 C30 3 60 10 100 6 S170 3 198 7' fill='none' stroke='%23e2561b' stroke-width='5' stroke-linecap='round' stroke-opacity='.85'/%3E%3C/svg%3E") no-repeat left bottom/100% .32em;padding:0 .04em .08em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
p{margin:.4em 0}
.mono{font:600 .78rem/1.2 var(--mono);letter-spacing:.03em;color:var(--forest)}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}.narrow{max-width:640px;padding-top:30px;padding-bottom:60px}
.skip{position:absolute;left:-999px}.skip:focus{left:10px;top:10px;z-index:200;background:#fff;padding:8px}
:focus-visible{outline:3px solid var(--saffron);outline-offset:2px}
.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;background:#bf4510;color:#fff;border:var(--ol);border-radius:99px;padding:.7em 1.5em;font:800 1.05rem "Baloo 2",sans-serif;text-decoration:none;cursor:pointer;min-height:48px;box-shadow:var(--sh);transition:transform .35s var(--spring),box-shadow .35s var(--spring)}
.btn.alt{background:#fff;color:var(--deep)}.btn.green{background:var(--forest)}
@media(hover:hover){.btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}}
.btn:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink);transition-duration:.08s}
.btn:disabled{opacity:.6;cursor:wait}
.pill{display:inline-block;background:var(--mustard);color:var(--deep);border:2px solid var(--ink);border-radius:99px;padding:.15em .8em;font-weight:800;font-size:.9rem}.pill.o{background:#fff;color:var(--ink)}
/* nav */
.nav{position:sticky;top:0;z-index:40;background:var(--cream);border-bottom:var(--ol)}
.nav .wrap{display:flex;align-items:center;gap:18px;height:64px}.nav .brand{flex:none}.nav img{height:38px;width:auto}
.nav nav{display:flex;gap:6px;margin-left:auto;align-items:center}
.nav nav a{text-decoration:none;font-weight:700;padding:.4em .8em;border-radius:99px;min-height:44px;display:inline-flex;align-items:center;transition:transform .3s var(--spring),background .2s}
.nav nav a:hover{background:var(--wall)}@media(hover:hover){.nav nav a:hover{transform:translateY(-2px)}}
.snd{display:inline-flex;align-items:center;gap:.4em;min-height:44px;min-width:44px;justify-content:center;border:2px solid var(--ink);background:#fff;color:var(--ink);border-radius:99px;font:700 .85rem "Baloo 2",sans-serif;padding:.2em .8em;cursor:pointer;margin-left:6px}
.snd[aria-pressed=true]{background:var(--mustard)}
@media(max-width:700px){.nav nav a.hide-s{display:none}.nav .wrap{height:58px;padding:0 12px;gap:4px}.nav img{height:24px}.nav nav a{font-size:.82rem;padding:.3em .5em;white-space:nowrap}.snd{margin-left:0;padding:.2em}.snd .sl{display:none}}
/* footer */
footer.f{background:var(--deep);color:#d9e6dc;padding:30px 0 90px;font-size:.92rem;margin-top:40px}
footer.f .wrap{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center}footer.f a{color:#fff;display:inline-flex;min-height:40px;align-items:center}.fine{font-size:.85rem;opacity:.85}
/* chapters */
.chap{padding:96px 0 40px}.chap h2{margin:.25em 0 .2em}.sub{max-width:52ch;color:#4b3b2d;font-size:1.15rem}
.h1s{font-size:clamp(2.4rem,6vw,4.4rem);margin:.15em 0}.h2s{font-size:2rem;margin-top:50px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}
.chip{display:inline-flex;align-items:center;border:2px solid var(--ink);border-radius:99px;padding:.45em 1.1em;font:700 1rem "Baloo 2",sans-serif;background:#fff;box-shadow:3px 3px 0 var(--ink);cursor:pointer;min-height:44px;color:var(--ink);text-decoration:none;transition:transform .3s var(--spring)}
.chip.on{background:var(--deep);color:#fff;box-shadow:3px 3px 0 var(--saffron)}@media(hover:hover){.chip:hover{transform:translate(-1px,-2px)}}
.folders{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.shopgrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.fold{position:relative;padding-top:20px;text-decoration:none;display:block;transition:opacity .25s,transform .5s var(--spring)}.fold.dim{opacity:.28}
.fold .tab{position:absolute;top:0;left:14px;background:var(--c);color:#fff;font:800 .85rem var(--mono);padding:.35em 1em;border:var(--ol);border-bottom:0;border-radius:12px 12px 0 0}
.fold .body{background:var(--c);border:var(--ol);box-shadow:var(--sh2);border-radius:6px 22px 22px 22px;padding:16px;color:#fff;min-height:330px;display:flex;flex-direction:column;position:relative;transition:box-shadow .5s var(--spring)}
.fold .h3{color:#fff;font-size:1.5rem;line-height:1.1}.fold p{font-size:.98rem}
.fold .stack{position:relative;margin-top:auto;height:150px;clip-path:inset(-120px -16px -16px -16px)}
.fold .stack img{position:absolute;bottom:-40px;width:46%;border:2px solid var(--ink);border-radius:4px;box-shadow:3px 3px 0 var(--ink);transition:transform .55s var(--spring);background:#fff}
.fold .stack img:nth-child(1){left:6%;transform:rotate(-7deg)}.fold .stack img:nth-child(2){left:28%;transform:rotate(2deg)}.fold .stack img:nth-child(3){left:48%;transform:rotate(9deg)}
.fold .tag{align-self:flex-start;margin-top:8px;background:#00000066;border-radius:99px;padding:.1em .8em;font-weight:700;font-size:.85rem}
.fold .stack.blank i{position:absolute;bottom:-40px;width:46%;height:130px;background:#fff;border:2px dashed var(--ink);border-radius:4px;opacity:.92}
.fold .stack.blank i:nth-child(1){left:6%;transform:rotate(-7deg)}.fold .stack.blank i:nth-child(2){left:28%;transform:rotate(2deg)}.fold .stack.blank i:nth-child(3){left:48%;transform:rotate(9deg)}
@media(hover:hover){a.fold:hover{transform:translate(-3px,-6px) rotate(-.6deg)}a.fold:hover .body{box-shadow:11px 11px 0 var(--ink)}
 a.fold:hover .stack img:nth-child(1){transform:rotate(-15deg) translate(-16px,-16px)}a.fold:hover .stack img:nth-child(2){transform:rotate(1deg) translateY(-26px)}a.fold:hover .stack img:nth-child(3){transform:rotate(17deg) translate(16px,-16px)}}
@media(max-width:900px){.folders{grid-template-columns:1fr 1fr}}@media(max-width:560px){.folders{grid-template-columns:1fr}.fold .body{min-height:250px}}
/* steps, scenes, trust */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:34px}
.step{background:#fff;border:2px solid var(--ink);box-shadow:var(--sh);border-radius:var(--r);padding:22px}
.step .n{font:800 3rem/1 "Baloo 2";color:var(--st)}.step h3{margin:.2em 0}
.scene *{transform-box:fill-box;transform-origin:center}.scene{width:100%;max-width:200px;height:auto;margin:0 0 6px}
.trust{display:grid;grid-template-columns:repeat(4,1fr);margin-top:26px;border:var(--ol);box-shadow:var(--sh);border-radius:var(--r);background:var(--forest);color:#fff;overflow:hidden}
.tp{padding:16px 18px;border-right:1px solid #ffffff55}.tp:last-child{border:0}.tw{display:block;perspective:600px;font-weight:800;font-size:1.1rem;position:relative;padding-bottom:.15em}.tw::after{content:"";position:absolute;left:0;right:0;bottom:0;height:.24em;background:var(--mustard);transform-origin:0 50%}
.tp small{display:block;font-weight:500;font-size:.88rem;margin-top:.3em}
@media(max-width:820px){.steps{grid-template-columns:1fr}.trust{grid-template-columns:1fr 1fr}.tp:nth-child(2){border-right:0}.tp:nth-child(-n+2){border-bottom:1px solid #ffffff55}}
.checked{display:grid;grid-template-columns:.8fr 1.2fr;gap:40px;align-items:center}
.big{font:800 clamp(6rem,16vw,11rem)/.85 "Baloo 2";color:var(--st);font-variant-numeric:tabular-nums}
.ticks{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px;list-style:none;padding:0;margin:18px 0 0}
.ticks li{padding-left:2em;position:relative;font-weight:700}.ticks li::before{content:"";position:absolute;left:0;top:.28em;width:1.2em;height:1.2em;border-radius:50%;background:var(--forest) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 10.5l3.2 3.2L15 7' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") center/80%}
@media(max-width:820px){.checked{grid-template-columns:1fr;gap:10px}.ticks{grid-template-columns:1fr}}
.endcap{background:var(--forest);color:#fff;text-align:center;padding:90px 20px 70px;margin-top:80px}.endcap h2{color:#fff;font-size:clamp(3rem,10vw,7rem)}.endcap p{font-size:1.2rem}.endcap .btn{margin-top:14px}
.endcap em,.flipwrap em{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M2 7 C30 3 60 10 100 6 S170 3 198 7' fill='none' stroke='%23f2c14e' stroke-width='5' stroke-linecap='round' stroke-opacity='.9'/%3E%3C/svg%3E")}
/* ---- reveal animations (only with JS and full motion; otherwise the final state is what shows) ---- */
.js:not(.rm) .step:not(.in) .scene *{opacity:0}
.step.in .scr{animation:pop .28s cubic-bezier(.2,0,0,1) both}.step.in .ring{animation:ringo .9s .25s ease-out both}.step.in .tick{stroke-dasharray:30;animation:draw .5s .45s ease-out both}.step.in .coin{animation:coin .32s cubic-bezier(.2,0,0,1) both}
.step.in .sheet{animation:feed .32s .1s cubic-bezier(.2,0,0,1) both}.step.in .led{animation:blink .5s .1s 3 both}
.step.in .page{animation:hang .9s .1s var(--spring) both;transform-origin:50% 0}.step.in .tape{animation:tapein .35s .6s var(--spring) both;transform-origin:0 50%}.step.in .pin{animation:pindrop .6s .7s var(--spring) both}
@keyframes pop{from{opacity:0;transform:translateY(10px)}to{opacity:1}}@keyframes ringo{0%{opacity:1;transform:scale(.4)}100%{opacity:.35;transform:scale(1.5)}}@keyframes draw{from{opacity:1;stroke-dashoffset:30}to{opacity:1;stroke-dashoffset:0}}
@keyframes coin{0%{opacity:0;transform:translateY(-12px)}100%{opacity:1;transform:none}}
@keyframes feed{0%{opacity:0;transform:translateY(-14px)}100%{opacity:1;transform:none}}@keyframes blink{50%{opacity:.2}}
@keyframes hang{0%{opacity:1;transform:rotate(16deg) translateY(-18px)}100%{opacity:1;transform:rotate(-2deg)}}@keyframes tapein{0%{opacity:1;transform:scaleX(0)}100%{opacity:1;transform:none}}
@keyframes pindrop{0%{opacity:1;transform:translateY(-30px)}100%{opacity:1;transform:none}}
.tw .w{display:inline-block;transform-origin:50% 100%}
.js:not(.rm) .tp:not(.in) .w{opacity:0}.js:not(.rm) .tp:not(.in) .tw::after{transform:scaleX(0)}.js:not(.rm) .tp:not(.in) small{opacity:0}
.tp.in .w{animation:wflip .3s cubic-bezier(.2,0,0,1) both;animation-delay:calc(min(var(--i),3)*40ms)}.tp.in .tw::after{animation:hl .3s .3s cubic-bezier(.2,0,0,1) both}.tp.in small{animation:fadeup .3s .3s cubic-bezier(.2,0,0,1) both}
@keyframes wflip{from{opacity:0;transform:rotateX(-60deg) translateY(30%)}to{opacity:1;transform:none}}@keyframes hl{from{transform:scaleX(0)}}@keyframes fadeup{from{opacity:0;transform:translateY(10px)}}
/* hero */
.hero{height:150vh;position:relative}
.stage{position:sticky;top:64px;height:calc(100svh - 64px);min-height:560px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:20px;max-width:1240px;margin:0 auto;padding:0 20px 24px}
.hero-copy{padding-right:10px;position:relative;z-index:1}.hero-copy h1{margin:.4em 0 .3em}.lead{font-size:1.25rem;max-width:30ch;color:#4b3b2d;line-height:1.35}
.ctas{display:flex;gap:12px;flex-wrap:wrap;margin:22px 0 16px;align-items:center}
.trustline{display:flex;gap:6px 16px;flex-wrap:wrap;font-weight:700;font-size:.92rem;color:var(--forest)}.trustline span::before{content:"";display:inline-block;width:.55em;height:.55em;background:var(--forest);border-radius:50%;margin-right:.45em}
.shapes{position:absolute;inset:0;pointer-events:none;z-index:0;contain:paint}
.hero.off .sh{animation-play-state:paused}.sh{position:absolute;animation:drift var(--d,22s) ease-in-out infinite alternate;will-change:transform}.sh.a{width:150px;left:38%;top:2%;--d:19s}.sh.b{width:110px;left:1%;top:0;--d:25s}.sh.c{width:120px;right:0;top:1%;--d:28s}.sh.d{width:34px;left:47%;bottom:7%;--d:17s}
@keyframes drift{from{transform:translate(0,0) rotate(0)}to{transform:translate(16px,-20px) rotate(9deg)}}
.sw{display:inline-block;overflow:hidden;vertical-align:top;padding:.1em 0 .14em;margin:-.1em 0 -.14em}.sw>span{display:inline-block;animation:up .8s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i)*80ms + 150ms)}
@keyframes up{from{transform:translateY(112%)}}
.sw.cr{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M2 7 C30 3 60 10 100 6 S170 3 198 7' fill='none' stroke='%23e2561b' stroke-width='5' stroke-linecap='round' stroke-opacity='.85'/%3E%3C/svg%3E") no-repeat left bottom/100% .26em;padding-bottom:.2em;margin-bottom:-.2em}
.need{display:grid;font-weight:700;color:var(--forest);font-size:1.08rem;margin:14px 0 0;max-width:34ch}.need .n{grid-area:1/1;opacity:0;transform:translateY(60%);transition:opacity .35s,transform .45s var(--spring)}.need .n.on{opacity:1;transform:none}.need b{color:var(--deep)}
.wall{position:relative;height:100%;max-height:640px;border:var(--ol);box-shadow:var(--sh2);border-radius:26px;background:repeating-linear-gradient(90deg,var(--wall) 0 46px,#efd8b8 46px 92px);container-type:inline-size;z-index:1}
.wall .floor{position:absolute;left:0;right:0;bottom:0;height:11%;background:#d9a977}
.wallclip{position:absolute;inset:0;border-radius:inherit}.layer{position:relative;width:100%;height:100%;clip-path:inset(0 round 23px)}
.bunting{position:absolute;left:0;width:100%;top:20%;height:60px;z-index:1}
.pg{position:absolute;width:36%;aspect-ratio:1/1.414;background:#fff;border:var(--ol);border-radius:4px;box-shadow:5px 5px 0 var(--ink);will-change:transform}
.js:not(.rm) .pg{opacity:0}.pg img{width:100%;height:100%;border-radius:2px;object-fit:cover}
.pg::before{content:"";position:absolute;left:50%;top:-11px;width:44%;height:22px;margin-left:-22%;background:#f2c14ecc;border:2px solid var(--ink);transform:rotate(-2deg);opacity:var(--tape,0);z-index:2}
.ribbon{position:absolute;right:-8px;bottom:14px;z-index:3;background:var(--mustard);border:2px solid var(--ink);border-radius:4px;padding:0 .55em;font:800 .78rem/1.35 "Baloo 2";color:var(--deep);transform:rotate(5deg)}
.call{position:absolute;font:700 .85rem/1.2 "Baloo 2";background:#fff;color:var(--ink);border:2px solid var(--ink);border-radius:4px 10px 10px 4px;box-shadow:3px 3px 0 var(--ink);padding:.3em .7em .3em 1.2em;z-index:5;max-width:34%}
.js:not(.rm) .call{opacity:0}
.call::before{content:"";position:absolute;left:.4em;top:50%;width:.45em;height:.45em;margin-top:-.22em;border-radius:50%;border:2px solid var(--ink);background:var(--cream)}.call.cs{background:var(--mustard)}
.feat{position:absolute;left:4%;bottom:13%;width:56%;z-index:6;display:flex;align-items:center;gap:10px;background:#fff;border:var(--ol);border-radius:10px;box-shadow:var(--sh);padding:8px 12px 8px 8px;text-decoration:none;min-height:44px;transition:transform .35s var(--spring),box-shadow .35s var(--spring)}
@media(hover:hover){.feat:hover{transform:translate(-2px,-3px) rotate(-1deg);box-shadow:6px 6px 0 var(--ink)}}
.feat img{width:46px;aspect-ratio:1/1.414;object-fit:cover;border:2px solid var(--ink);border-radius:3px;flex:none}.feat span{display:grid;line-height:1.15;min-width:0}.feat i{font-style:normal;font:800 .78rem "Baloo 2";color:var(--st)}.feat b{font:800 1.05rem "Baloo 2";color:var(--deep)}.feat u{text-decoration:none;font-weight:700;font-size:.85rem;color:var(--forest)}
.tray{position:absolute;right:4%;width:44%;bottom:2.5%;z-index:4;display:flex;align-items:flex-end;gap:12px;pointer-events:none}.tray .mono{color:var(--deep);font-weight:700;flex:1;padding-bottom:2px;font-size:.78rem}
.trays{width:30%;height:var(--h,3px);min-height:3px;background:#fff;border:2px solid var(--ink);border-radius:3px;box-shadow:0 -4px 0 -1px #fff,0 -5px 0 -1px var(--ink),0 -9px 0 -2px #fff,0 -10px 0 -2px var(--ink)}
/* the printer: CSS 3D box, drawn in code (no model file, no library) */
.prn{--w:44cqw;--h:14cqw;--d:14cqw;position:absolute;left:50%;top:2%;width:var(--w);height:var(--h);margin-left:calc(var(--w)/-2);perspective:120cqw;z-index:7;pointer-events:none}
.pbox{position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(var(--rx,-16deg)) rotateY(var(--ry,-26deg))}
.pf{position:absolute;border:2.5px solid var(--ink);backface-visibility:hidden;box-sizing:border-box}
.pfront{inset:0;transform:translateZ(calc(var(--d)/2));background:#fffdf8}
.pback{inset:0;transform:rotateY(180deg) translateZ(calc(var(--d)/2));background:#e6d6bf}
.pleft,.pright{width:var(--d);height:100%;top:0;left:calc(50% - var(--d)/2);background:#ecdfc9}.pleft{transform:rotateY(-90deg) translateZ(calc(var(--w)/2))}.pright{transform:rotateY(90deg) translateZ(calc(var(--w)/2));background:#e3d3b9}
.ptop,.pbot{width:100%;height:var(--d);left:0;top:calc(50% - var(--d)/2);background:#f9f1e2}.ptop{transform:rotateX(90deg) translateZ(calc(var(--h)/2))}.pbot{transform:rotateX(-90deg) translateZ(calc(var(--h)/2));background:#cdb892}
.ptop .lid{position:absolute;left:8%;right:8%;top:14%;bottom:14%;border:2px solid var(--ink);border-radius:6px;background:#efe3cf}.ptop .hopper{position:absolute;left:22%;right:22%;top:-34%;height:60%;border:2px solid var(--ink);background:#fff;transform:rotateX(-18deg);transform-origin:bottom}
.pfront .led{position:absolute;right:8%;top:14%;width:8%;aspect-ratio:1;border-radius:50%;background:#f2a31b;border:2px solid var(--ink);animation:blink 1s infinite}.pfront.ok .led{background:#35a56a;animation:none}
.pfront .btn1,.pfront .btn2{position:absolute;top:18%;width:6%;aspect-ratio:1;border-radius:50%;background:var(--forest);border:2px solid var(--ink)}.pfront .btn1{left:8%}.pfront .btn2{left:18%;background:var(--mustard)}
.pfront .lcd{position:absolute;left:30%;top:14%;width:34%;height:16%;border:2px solid var(--ink);background:#d6ecdc;border-radius:3px;overflow:hidden}.lcd u{display:block;height:100%;width:var(--lp,0%);background:var(--forest);text-decoration:none}
.pfront .slotline{position:absolute;left:8%;right:8%;top:56%;height:12%;background:var(--ink);border-radius:3px}.pfront .vent{position:absolute;left:12%;right:12%;bottom:8%;height:10%;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 7px)}
.pleft .vent,.pright .vent{position:absolute;left:18%;right:18%;top:30%;bottom:30%;background:repeating-linear-gradient(0deg,var(--ink) 0 2px,transparent 2px 7px)}
.pout{position:absolute;left:8%;width:84%;top:calc(100% - 6px);height:calc(var(--d)*.8);transform-origin:top center;transform:translateZ(calc(var(--d)/2)) rotateX(74deg);background:#fff;border:2.5px solid var(--ink);border-radius:0 0 8px 8px;overflow:hidden}
.feeding .outsheet{--feed:130%}.outsheet{transition:transform .5s;position:absolute;left:12%;right:12%;top:-100%;height:100%;background:#fff;border:2px solid var(--ink);transform:translateY(var(--feed,0%))}.outsheet::after{content:"";position:absolute;left:10%;right:10%;top:30%;height:18%;border-top:3px solid var(--forest);border-bottom:3px solid var(--forest)}
.lite .prn{perspective:none}.lite .pbox{transform:none}.lite .pf:not(.pfront),.lite .pout{display:none}.lite .pfront{transform:none}
@media(max-width:820px){.hero{height:230vh}.stage{grid-template-columns:1fr;grid-template-rows:auto 1fr;align-items:start;gap:10px;padding-top:12px;top:58px;height:calc(100svh - 58px)}
 .hero-copy h1{font-size:2.1rem;margin:.1em 0 .2em}.lead{font-size:.98rem;max-width:none;line-height:1.3}.ctas{margin:8px 0 4px}.ctas .alt,.need{display:none}.btn{min-height:44px}.trustline{display:none}.wall{max-height:none;min-height:56svh}.sh.a{left:55%;width:100px}.sh.b{display:none}.sh.c{width:90px}.sh.d{display:none}.call{font-size:.78rem}.feat{width:62%}.tray{width:52%}.need{font-size:1rem}.prn{--w:70cqw;--h:17cqw;--d:15cqw}}
/* dark printer: the deep-green body and black feed slit of round 1's printer slot, as a 3D box (owner, 9 Oct) */
.prn{--w:66cqw;--h:15cqw;--d:14cqw;top:1.5%;margin-left:calc(var(--w)/-2)}
.pf{border-color:#0c1a12}
.pfront{background:#1f3b2d;box-shadow:inset 0 4px 0 #ffffff1c}.pback{background:#142a1f}
.pleft,.pright{background:#183226}.pright{background:#12281d}
.ptop,.pbot{background:#2b4f3c}.pbot{background:#0f2218}
.ptop .lid{border-color:#0c1a12;background:#244434}.ptop .hopper{border-color:#0c1a12;background:#2f5a43}
.pfront .slotline{background:#000;height:14%;top:54%;box-shadow:0 3px 0 #ffffff14}
.pfront .vent{background:repeating-linear-gradient(90deg,#0c1a12 0 2px,transparent 2px 7px)}
.pleft .vent,.pright .vent{background:repeating-linear-gradient(0deg,#0c1a12 0 2px,transparent 2px 7px)}
.pfront .led,.pfront .btn1,.pfront .btn2{border-color:#0c1a12}.pfront .btn1{background:var(--sage)}
.pfront .lcd{border-color:#0c1a12;background:#cfe6d6}
.pout{border-color:#0c1a12}
/* look inside: every real page */
.flipwrap{position:relative;background:var(--deep);color:#fff}.flipwrap h2{color:#fff}
.flipstick{position:sticky;top:64px;height:calc(100svh - 64px);min-height:560px;display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center;max-width:1180px;margin:0 auto;padding:0 20px}
.caps{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:4px}.caps li{display:flex;gap:12px;padding:.5em .8em;border-radius:12px;opacity:.45;transition:opacity .2s,background .2s;font-weight:700}
.caps li b{font:700 .8rem var(--mono);color:var(--mu);min-width:4.2em;padding-top:.3em}.caps li.on{opacity:1;background:#ffffff22}.caps li span{font-weight:500;display:block;opacity:.9;font-size:.95rem}
.flipcta{margin-top:20px}.flipcta .btn{background:#bf4510}
.book{position:relative;width:min(100%,360px);aspect-ratio:520/736;margin:0 auto;perspective:1400px}
.leaf{position:absolute;inset:0;transform-origin:left center;border:var(--ol);border-radius:4px 10px 10px 4px;background:#fff;box-shadow:8px 8px 0 #0f2218;backface-visibility:hidden;overflow:hidden}.leaf img{width:100%;height:100%;object-fit:cover}
.pcount{position:absolute;bottom:-38px;left:0;right:0;text-align:center;font:700 .8rem var(--mono);color:var(--mu)}
.rail{display:none;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:20px 20px 10px;margin:0 -20px}.rail img{width:62%;max-width:260px;border:2px solid var(--ink);box-shadow:var(--sh);border-radius:6px;scroll-snap-align:center;background:#fff;flex:none}
@media(max-width:820px){.flipwrap{height:auto!important;padding:60px 0 50px}.flipstick{position:static;display:block;height:auto;min-height:0}.book{display:none}.rail{display:flex}.caps{display:none}}
.rm .flipwrap,.lite.rm .flipwrap{height:auto!important}.rm .flipstick{position:static;height:auto;display:block;padding:50px 20px}.rm .book{display:none}.rm .rail{display:flex}.rm .hero{height:auto}.rm .stage{position:static;height:auto}
.sheets{position:fixed;right:14px;bottom:14px;width:34px;height:64px;z-index:45;pointer-events:none}.sheets i{position:absolute;left:0;right:0;bottom:calc(var(--k)*5px);height:38px;background:#fff;border:2px solid var(--ink);border-radius:3px;opacity:0;transform:translateY(-14px) rotate(var(--r));transition:opacity .2s,transform .5s var(--spring)}.sheets i:nth-child(even){background:var(--mustard)}.sheets i:nth-child(3n){background:var(--sage)}.sheets i.on{opacity:1;transform:rotate(var(--r))}
/* product page */
.crumb{font:600 .85rem var(--mono);color:var(--muted);padding:18px 0}.crumb a{color:var(--forest);display:inline-flex;min-height:32px;align-items:center}
.pdp{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:start}.pdp>*{min-width:0}.gal{position:sticky;top:84px}
.pdp h1{font-size:clamp(2.2rem,4.4vw,3.4rem)}.ledep{font-size:1.2rem;max-width:34ch;color:#4b3b2d;line-height:1.3}.price{font:800 2.2rem "Baloo 2";color:var(--st)}.unlock{margin:0 0 6px;font-weight:700;color:var(--forest);font-size:.95rem}
.meta{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.fanwrap{contain:paint;padding:16px 4px 10px;margin:-16px -4px -10px}.fan{position:relative;aspect-ratio:520/736;width:min(78%,340px);margin:0 auto;perspective:1400px;touch-action:pan-y;cursor:grab;user-select:none}.fan.drag{cursor:grabbing}.fan:focus-visible{outline-offset:10px}
.fl{position:absolute;inset:0;transform-origin:50% 100%;will-change:transform}.ff{position:absolute;inset:0;transform-origin:left center;backface-visibility:hidden;border:var(--ol);border-radius:4px 8px 8px 4px;overflow:hidden;background:#fff;box-shadow:var(--sh2)}.ff img{width:100%;height:100%;object-fit:cover;pointer-events:none}
.gctl{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:16px}.gctl button{width:46px;height:46px;border-radius:50%;border:var(--ol);background:#fff;box-shadow:var(--sh);font:800 1.2rem "Baloo 2";cursor:pointer;transition:transform .3s var(--spring)}.gctl button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.gctl .mono{min-width:8em;text-align:center}
.thumbs{display:flex;gap:8px;margin-top:10px;overflow-x:auto;padding:4px 4px 8px}.thumbs button{flex:none;width:68px;min-height:44px;border:2px solid var(--ink);background:#fff;padding:0;border-radius:8px;overflow:hidden;cursor:pointer}.thumbs button.on{box-shadow:3px 3px 0 var(--saffron);background:var(--mustard)}.thumbs img{width:100%;height:96px;object-fit:cover}
.tstrip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0;font-weight:700;font-size:.9rem}.tstrip div{background:var(--wall);border:2px solid var(--ink);box-shadow:var(--sh);border-radius:12px;padding:10px;text-align:center;line-height:1.15}
.inside{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}.inside-cell{background:#fff;border:2px solid var(--ink);box-shadow:var(--sh);border-radius:14px;padding:12px;font-weight:700;line-height:1.15}.inside-cell b{display:block;font:800 1.9rem/1 "Baloo 2";color:var(--forest)}
.buy{background:#fff;border:var(--ol);box-shadow:var(--sh2);border-radius:var(--r);padding:20px;margin-top:16px}.buyh{font-size:1.1rem}
label.f{display:block;font-weight:700;font-size:.95rem;margin-top:10px}input.t,.buy input,.card input{display:block;width:100%;padding:13px 14px;font:500 1rem "Baloo 2",sans-serif;border:2px solid var(--line);border-radius:12px;background:var(--cream);margin-top:4px;min-height:48px;color:var(--ink)}
input:focus{outline:3px solid var(--mustard);border-color:var(--deep)}.hint{display:block;font-weight:500;color:var(--muted);font-size:.85rem}
.buy .btn{width:100%;margin-top:14px;font-size:1.15rem}.formerr{color:#9b1c1c;font-weight:700;margin:10px 0 0}
.after{display:flex;gap:10px;margin-top:14px;font-size:.88rem;font-weight:700;color:var(--forest)}.after span{flex:1}.after b{display:block;font:800 1.2rem "Baloo 2";color:var(--st)}
.scrollx{overflow-x:auto}.cmp{border-collapse:collapse;width:100%;min-width:560px;margin:14px 0}.cmp th,.cmp td{text-align:left;padding:.6em .8em;border-bottom:2px solid var(--line)}.cmp th{color:var(--deep)}.cmp tbody th,.cmp tr>th[scope=row]{font-weight:800;color:var(--forest)}
.accs{max-width:760px;margin:20px 0 60px}details.acc{border-top:2px solid var(--line);padding:10px 0}details.acc:last-of-type{border-bottom:2px solid var(--line)}details.acc summary{font:800 1.2rem "Baloo 2";cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:space-between;list-style:none}details.acc summary::after{content:"+";font-size:1.6rem;color:var(--st)}details[open].acc summary::after{content:"\2212"}
.stickybuy{position:fixed;left:0;right:0;bottom:0;z-index:50;background:#fff;border-top:var(--ol);padding:10px 14px 10px 14px;display:flex;align-items:center;gap:12px;transform:translateY(100%);visibility:hidden;transition:transform .24s cubic-bezier(.2,0,0,1),visibility 0s .24s}.stickybuy.show{transform:none;visibility:visible;transition:transform .24s cubic-bezier(.2,0,0,1)}.rm .stickybuy{transition:none}.stickybuy .price{font-size:1.5rem}.stickybuy .btn{margin-left:auto;padding:.5em 1.6em}
@media(max-width:820px){.pdp{grid-template-columns:1fr;gap:18px}.gal{position:static}.inside{grid-template-columns:1fr 1fr}.fan{width:min(70%,300px)}}
/* order, find, legal (money step: no motion, fades of static content only) */
.card{background:#fff;border:2px solid var(--ink);box-shadow:var(--sh);border-radius:var(--r);padding:22px;margin:14px 0}.card h2{font-size:2rem}.card .btn{margin-top:8px}
.twocol{display:grid;grid-template-columns:1fr 1fr;gap:26px}@media(max-width:820px){.twocol{grid-template-columns:1fr}}
.amount{font:800 2.8rem "Baloo 2";color:var(--deep)}.apps{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}#qr img{width:200px;margin:12px 0;border:10px solid #fff;outline:2px solid var(--line)}
.dl{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px;border-radius:14px;background:var(--cream);box-shadow:inset 0 0 0 2px var(--line);margin-top:10px;font-weight:700;flex-wrap:wrap}.dl.next{background:var(--wall)}
.note{color:var(--muted);font-size:.92rem}.fade{animation:fadein .4s both}@keyframes fadein{from{opacity:0}}
.legal{max-width:820px;margin:0 auto;padding:30px 20px 60px}.legal h1{font-size:clamp(2.2rem,5vw,3.4rem);margin:.4em 0 .3em}.legal h2{font-size:1.5rem;margin-top:1.2em}.legal-short{background:var(--mustard);border:2px solid var(--ink);box-shadow:var(--sh);border-radius:var(--r);padding:20px 24px;margin:18px 0}.legal-short li{margin:.3em 0;font-weight:700}.legal-short ul{margin:.6em 0 0;padding-left:1.1em}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.legal a{color:var(--st)}.legal a.chip{color:var(--ink)}
.legal a.btn{color:#fff}.legal a.chip.on{color:#fff}
.legal-wrap{min-height:40vh}
/* admin dashboard */
.adm{max-width:560px;margin:0 auto;padding:16px 14px 120px;font:500 16px/1.4 system-ui,sans-serif}.adm h1{font:800 1.6rem "Baloo 2",sans-serif;color:var(--deep);margin:6px 0 10px}
.sum{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.sum div,.m3 div{background:#fff;border:2px solid var(--ink);box-shadow:var(--sh);border-radius:12px;padding:12px}.sum b{display:block;font:800 1.6rem "Baloo 2",sans-serif}.sum small{color:var(--muted)}
.ord{background:#fff;border:2px solid var(--ink);box-shadow:var(--sh);border-radius:14px;padding:14px;margin:12px 0;display:grid;grid-template-columns:1fr auto;gap:4px 10px}.ord .amt{font:800 1.5rem "Baloo 2",sans-serif;text-align:right}.ord small{color:var(--muted)}
.ord .row{grid-column:1/-1;display:flex;gap:8px;margin-top:8px}.ord .row .btn{flex:1;font-size:1rem;padding:.4em 1em}
.st{display:inline-block;border-radius:99px;padding:0 .7em;font-size:.8rem;font-weight:700}.st.p{background:#fde3b8;color:#7a4a00}.st.d{background:#d6ecdc;color:#1b5a34}.st.g{background:#e6e6e6;color:#333}
.metrics{border-top:2px solid var(--line);border-bottom:2px solid var(--line);padding:12px 0;margin:12px 0}.m3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.m3 b{display:block;font:800 1.6rem "Baloo 2",sans-serif;color:var(--deep)}.m3 span{font-size:.8rem;color:var(--muted);font-weight:600}
.funnel{list-style:none;margin:0;padding:0;display:grid;gap:6px}.funnel li{display:grid;grid-template-columns:7.5em 1fr 3em;align-items:center;gap:8px;font-size:.85rem;font-weight:700}.funnel i{display:block;height:12px;width:var(--w);background:var(--forest);border-radius:6px}.funnel em{background:none;padding:0;text-align:right}
.sheet{position:fixed;left:0;right:0;bottom:0;background:#fff;border:var(--ol);border-radius:20px 20px 0 0;padding:20px 18px 26px;z-index:90;transform:translateY(110%);max-width:560px;margin:0 auto;transition:transform .25s}.sheet.on{transform:none}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:.7em 1.2em;border-radius:99px;z-index:95;display:none;font-weight:700;max-width:92vw}.toast.on{display:flex;gap:12px;align-items:center}.toast button{background:none;border:0;color:var(--mu);text-decoration:underline;font:inherit;cursor:pointer;min-height:40px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.pg{opacity:1!important}.call{opacity:1!important}.need .n{opacity:1;transform:none}.js .need .n:not(.on){display:none}.sheets i{opacity:1!important}}
#flipname{white-space:nowrap}
.h3{font-size:1.6rem;line-height:1.15;margin-top:1em}

/* product-card hover video (owner, 10 Oct 2026, C-0025): poster/page stack first, the pack's own video fades in over the stack while it plays */
.fold .stack .fv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:2px solid var(--ink);border-radius:4px;box-shadow:3px 3px 0 var(--ink);background:#fff;opacity:0;transition:opacity .2s;z-index:2;pointer-events:none}.fold .stack .fv.on{opacity:1}.fold .stack.vp img{opacity:0}
.rm .fold .fv{display:none}
/* below-fold, unpinned sections skip rendering until near the viewport */
.flipwrap~section{content-visibility:auto;contain-intrinsic-size:auto 640px}.flipwrap~.endcap{contain-intrinsic-size:auto 420px}
/* product page: the page stack shrinks into the Buy button once, then the button presses */
.flyp{position:fixed;z-index:60;pointer-events:none;border:var(--ol);border-radius:4px;background:#fff;box-shadow:3px 3px 0 var(--ink);overflow:hidden;will-change:transform,opacity}.flyp img{width:100%;height:100%;object-fit:cover}
.press{animation:press .12s ease-out}@keyframes press{50%{transform:translate(2px,2px) scale(.97);box-shadow:0 0 0 var(--ink)}}
.fold[hidden]{display:none}
