/* Laundry franchise pages. Sits on the industry template (education-story v2)
   and only adds the components that template does not have. Colours and type
   come from the template tokens: --ink --mut --yel --lemon --sand --lav --line
   --blue --purp --teal --os (Oswald) --g (Geist).
   Layout rule: two-column blocks split on the golden ratio, 38.2 / 61.8. */

#education-v2.laundry{--gold-a:38.2fr;--gold-b:61.8fr;--card-line:#DEDAD0}

/* breadcrumb row with the language switch */
.laundry .crumbrow{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.laundry .crumbrow .education-breadcrumb{margin:0}
.laundry .crumbrow .sep{color:var(--mut2,#8a877c)}
.laundry .crumbrow .here{color:var(--teal)}
.lang-switch{display:inline-flex;padding:4px;border:1px solid var(--ink);border-radius:99px;gap:2px;background:#fff}
.lang-switch button{font:500 14px/1 var(--g);height:34px;padding:0 16px;border:0;border-radius:99px;background:transparent;color:var(--ink);cursor:pointer}
.lang-switch button[aria-pressed=true]{background:var(--ink);color:#fff}
.lang-switch button:focus-visible{outline:2px solid var(--purp);outline-offset:2px}

.laundry .prepared{display:inline-flex;align-items:center;gap:10px;width:fit-content;margin:0;padding:8px 14px;border-radius:99px;background:var(--lemon);font:500 14px/1.2 var(--g);color:var(--ink)}
.laundry .prepared-dot{width:8px;height:8px;border-radius:50%;background:var(--yel);box-shadow:0 0 0 3px #fff}

/* shared golden split */
.laundry .gold{display:grid;grid-template-columns:var(--gold-a) var(--gold-b);gap:clamp(40px,5.5vw,104px);align-items:center}
.laundry .gold.flip{grid-template-columns:var(--gold-b) var(--gold-a)}
.laundry .gold-a{display:flex;flex-direction:column;gap:24px;min-width:0}
.laundry .gold-b{min-width:0;display:flex;flex-direction:column;gap:16px}
.laundry .fig-note{margin:0;font:400 14px/1.4 var(--g);color:var(--mut)}

/* 1. challenge picker */
.laundry .cpick{display:grid;grid-template-columns:var(--gold-a) var(--gold-b);gap:clamp(24px,3vw,48px);align-items:stretch}
.laundry .cp-list{display:flex;flex-direction:column;gap:12px}
.laundry .cp-list button{position:relative;flex:1 1 0;display:flex;flex-direction:column;justify-content:center;gap:4px;text-align:left;padding:16px 20px 16px 52px;border:1px solid var(--card-line);border-radius:16px;background:#fff;cursor:pointer;color:var(--ink);transition:border-color .2s,background .2s}
.laundry .cp-list button::before{content:"";position:absolute;left:20px;top:50%;margin-top:-8px;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--mut);background:#fff}
.laundry .cp-list button[aria-checked=true]{background:var(--lemon);border-color:var(--ink)}
.laundry .cp-list button[aria-checked=true]::before{border-color:var(--ink);box-shadow:inset 0 0 0 4px #fff;background:var(--ink)}
.laundry .cp-list button:hover{border-color:var(--ink)}
.laundry .cp-list button:focus-visible{outline:2px solid var(--purp);outline-offset:2px}
.laundry .cp-list b{font:500 18px/1.3 var(--g)}
.laundry .cp-list span{font:400 15px/1.45 var(--g);color:var(--mut)}
.laundry .cp-panel{display:flex;flex-direction:column;gap:24px;padding:clamp(24px,2.4vw,40px);border:1px solid var(--card-line);border-radius:24px;background:#fff}
.laundry .cp-what{font:500 13px/1 var(--g);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.laundry .cp-head{display:flex;flex-direction:column;gap:14px}
.laundry .cp-head h3{margin:0;font:300 clamp(26px,2.1vw,38px)/1.18 var(--os)!important;max-width:34ch}
.laundry .cp-tags{display:flex;flex-wrap:wrap;gap:8px}
.laundry .ctag{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:99px;background:#EFE8FD;color:#5B37B8;font:500 13px/1 var(--g)}
.laundry .cp-body{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:clamp(20px,2.4vw,40px);align-items:stretch}
.laundry .cp-artbox{position:relative;min-height:200px;border-radius:18px;background:var(--sand)}
.laundry .cp-art{position:absolute;inset:clamp(12px,1.6vw,24px);width:calc(100% - 2*clamp(12px,1.6vw,24px));height:calc(100% - 2*clamp(12px,1.6vw,24px));object-fit:contain;display:block}
.laundry .cp-flow{display:flex;flex-direction:column;gap:16px}
.laundry .cp-switch{display:inline-flex;align-items:center;gap:10px;width:fit-content;padding:0;border:0;background:none;cursor:pointer;font:500 14px/1 var(--g);color:var(--mut)}
.laundry .cp-switch i{position:relative;width:44px;height:24px;border-radius:99px;background:var(--line,#CEDCD9);transition:background .2s}
.laundry .cp-switch i::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}
.laundry .cp-switch[aria-checked=true] i{background:var(--ink)}
.laundry .cp-switch[aria-checked=true] i::after{transform:translateX(20px)}
.laundry .cp-switch[aria-checked=false] span:first-child,.laundry .cp-switch[aria-checked=true] span:last-child{color:var(--ink)}
.laundry .cp-switch:focus-visible{outline:2px solid var(--purp);outline-offset:4px;border-radius:6px}
.laundry .cp-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.laundry .cp-steps li{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--card-line);border-radius:12px;font:400 15px/1.4 var(--g);color:var(--ink);background:#fff}
.laundry .cp-steps .n{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;font:500 13px/1 var(--g);background:#ECEAE3;color:var(--mut)}
.laundry .cp-steps[data-mode=with] li{background:#FFFCF0}
.laundry .cp-steps[data-mode=with] .n{background:var(--yel);color:var(--ink)}
.laundry .cp-note{margin:0;font:400 13px/1.4 var(--g);color:var(--mut)}
.laundry .cp-foot{display:flex;align-items:center;gap:16px 24px;flex-wrap:wrap;padding-top:20px;border-top:1px solid var(--card-line)}
.laundry .cp-foot .cp-note{flex:1 1 220px}
.laundry .cp-panel.swap{animation:cp-in .28s ease-out}
@keyframes cp-in{from{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:none}}

/* 2. connected network */
.laundry .net-fig{margin:0;padding:clamp(16px,3vw,48px);border-radius:28px;background:var(--sand)}
.laundry .net-art{display:block;width:100%;height:auto}
.laundry .net-art .nl{font:500 22px var(--g);fill:var(--ink)}
.laundry .net-art .nl-layer{font:400 30px var(--os);fill:var(--ink)}
.laundry .net-art .nl-sub{font:400 17px var(--g);fill:#3B3A33}
.laundry .net-points{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,48px);border-top:1px solid var(--ink);padding-top:28px}
.laundry .np{display:flex;flex-direction:column;gap:10px}
.laundry .np-n{font:400 15px/1 'Geist Pixel Triangle',monospace;color:var(--teal)}
.laundry .np h3{margin:0;font:300 clamp(24px,1.9vw,34px)/1.2 var(--os)!important}
.laundry .np p{margin:0;font:400 var(--education-body,18px)/1.55 var(--g);color:var(--mut);max-width:34ch}

.laundry .net-wrap{display:flex;flex-direction:column;gap:10px;min-width:0}
.laundry .net-swipe{display:none}
/* 3. owner phones: two clay phones in a V, same finish as the Design Fiction devices.
   Text inside each phone is sized in cqw of the phone, so it scales with the frame. */
.laundry .phones{position:relative;margin:0;padding:clamp(44px,4.4vw,72px) clamp(20px,2.4vw,40px);border-radius:clamp(24px,2.6vw,44px);
 background:radial-gradient(120% 90% at 15% 0%,#fff7ef 0%,transparent 55%),radial-gradient(90% 80% at 100% 100%,#f3dccf 0%,transparent 60%),linear-gradient(160deg,#f5f1ea,#ece6dc);
 box-shadow:inset 0 2px 0 #ffffffcc,inset 0 -10px 30px #b4a08214;overflow:hidden}
.laundry .phones-v{position:relative;z-index:1;display:flex;justify-content:center;align-items:center;--gap:clamp(8px,1.2vw,20px);gap:var(--gap);perspective:1800px;--pw:clamp(210px,18.5vw,300px)}
.laundry .phones-floor{position:absolute;left:20%;right:20%;bottom:clamp(26px,2.6vw,42px);height:28px;border-radius:50%;background:radial-gradient(closest-side,#23346433,transparent);filter:blur(4px)}
.laundry .clay-phone{position:relative;flex:none;width:var(--pw);aspect-ratio:9/19;padding:calc(var(--pw)*.034);border-radius:calc(var(--pw)*.17);container-type:inline-size;
 background:linear-gradient(150deg,#ffffff 0%,#f3f1ec 42%,#e3dfd6 100%);
 box-shadow:inset 0 2px 1px #ffffffe6,inset 0 -6px 14px #6e604614,inset 6px 0 14px #ffffff80,0 2px 4px #23346414,0 22px 40px -22px #23346459,0 60px 110px -50px #23346466;
 transform-origin:50% 100%;transition:transform .8s cubic-bezier(.22,.8,.24,1),opacity .55s ease}
.laundry .clay-phone::before{content:"";position:absolute;right:-3px;top:24%;width:4px;height:12%;border-radius:4px;background:#e1ddd3}
/* Each phone carries three poses: --t-from (off stage), --t-center (alone, straight on) and --t-v (its place in the V). */
.laundry .ph-a{--t-center:translateX(calc((var(--pw) + var(--gap)) / 2));--t-from:translateX(calc((var(--pw) + var(--gap)) / 2)) translateY(22%) rotateX(28deg) scale(.84);--t-v:rotateY(12deg) rotateZ(-4.5deg);--t-over:rotateY(17deg) rotateZ(-5.5deg);transform:var(--t-v)}
.laundry .ph-b{--t-from:translateX(60%) rotateY(-78deg) scale(.8);--t-v:rotateY(-12deg) rotateZ(4.5deg);--t-over:rotateY(-5deg) rotateZ(3.5deg);transform:var(--t-v)}
.laundry .phones[data-stage=v].settled:hover .ph-a{transform:rotateY(8deg) rotateZ(-3deg)}
.laundry .phones[data-stage=v].settled:hover .ph-b{transform:rotateY(-8deg) rotateZ(3deg)}
/* owners section: head on top, then one wide stage with the phones in the middle and the four points as callouts */
.laundry .own-stage{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(20px,2.6vw,48px);
 padding:clamp(40px,4.4vw,72px) clamp(24px,3vw,56px);border-radius:clamp(24px,2.6vw,44px);overflow:hidden;
 background:radial-gradient(120% 90% at 15% 0%,#fff7ef 0%,transparent 55%),radial-gradient(90% 80% at 100% 100%,#f3dccf 0%,transparent 60%),linear-gradient(160deg,#f5f1ea,#ece6dc);
 box-shadow:inset 0 2px 0 #ffffffcc,inset 0 -10px 30px #b4a08214}
.laundry .own-stage .phones{background:none;box-shadow:none;padding:0;border-radius:0;overflow:visible}
.laundry .own-stage .phones-v{--pw:clamp(230px,17.5vw,296px)}
.laundry .own-stage .phones-floor{bottom:-18px}
.laundry .own-notes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:clamp(14px,1.6vw,24px)}
.laundry .own-notes.l{align-items:flex-end;text-align:right}
.laundry .own-notes.r{align-items:flex-start}
.laundry .own-notes li{display:flex;flex-direction:column;gap:8px;width:100%;max-width:300px;padding:18px 20px;border-radius:18px;background:#ffffffd9;
 box-shadow:0 1px 0 #ffffff inset,0 14px 30px -22px #23346459;font:400 clamp(16px,1.05vw,19px)/1.45 var(--g);color:var(--ink)}
.laundry .own-notes .on-n{font:400 14px/1 'Geist Pixel Triangle',monospace;color:var(--teal)}
.laundry #owners .fig-note{margin-top:-8px}
/* choreography, driven by data-stage from laundry.js */
.laundry .phones[data-stage=pre] .clay-phone{opacity:0;transition:none}
.laundry .phones[data-stage=a] .ph-a{animation:ph-rise 1.15s cubic-bezier(.2,.9,.25,1) both}
.laundry .phones[data-stage=a] .ph-b{opacity:0}
.laundry .phones[data-stage=v] .ph-a{animation:ph-swing-a 1.25s cubic-bezier(.55,0,.2,1) both}
.laundry .phones[data-stage=v] .ph-b{animation:ph-swing-b 1.35s cubic-bezier(.2,.85,.25,1) .1s both}
.laundry .phones[data-stage=v].settled .clay-phone{animation:none}
.laundry .phones[data-stage=out] .clay-phone{animation:ph-out .7s cubic-bezier(.5,0,.75,0) both}
.laundry .phones[data-stage=out] .ph-b{animation-delay:.08s}
.laundry .phones-floor{transition:transform 1s cubic-bezier(.2,.8,.2,1),opacity .6s}
.laundry .phones[data-stage=pre] .phones-floor,.laundry .phones[data-stage=out] .phones-floor{opacity:0;transform:scaleX(.4)}
.laundry .phones[data-stage=a] .phones-floor{transform:scaleX(.5) translateX(0)}
@keyframes ph-rise{0%{opacity:0;transform:var(--t-from);filter:blur(8px)}55%{opacity:1;filter:blur(0)}78%{transform:var(--t-center) translateY(-2.5%)}100%{opacity:1;transform:var(--t-center)}}
@keyframes ph-swing-a{0%{transform:var(--t-center)}62%{transform:var(--t-over)}100%{transform:var(--t-v)}}
@keyframes ph-swing-b{0%{opacity:0;transform:var(--t-from)}40%{opacity:1}68%{transform:var(--t-over)}100%{opacity:1;transform:var(--t-v)}}
@keyframes ph-out{to{opacity:0;transform:var(--t-v) translateY(10%) scale(.92);filter:blur(4px)}}
/* screen: off until the phone wakes, then a light sweep */
.laundry .phones[data-stage] .ph-screen::after{content:"";position:absolute;inset:0;z-index:6;border-radius:inherit;pointer-events:none;
 background:linear-gradient(110deg,transparent 35%,#ffffff66 48%,transparent 62%) 130% 0/260% 100% no-repeat,#15151b}
.laundry .clay-phone.awake .ph-screen::after{animation:ph-wake 1s cubic-bezier(.4,0,.2,1) forwards}
@keyframes ph-wake{0%{opacity:1;background-position:130% 0,0 0}45%{opacity:1}100%{opacity:0;background-position:-40% 0,0 0}}
.laundry .ph-screen{position:relative;height:100%;display:flex;flex-direction:column;gap:3.6cqw;padding:3cqw 5cqw 5cqw;border-radius:calc(var(--pw)*.14);background:#fff;overflow:hidden;font-family:var(--g);color:var(--ink);box-shadow:inset 0 0 0 1px #ece8df}
.laundry .ph-status{display:flex;align-items:center;justify-content:space-between;font:500 4.2cqw/1 var(--g);padding:1cqw 2cqw 0;flex:none}
.laundry .ph-island{width:28cqw;height:8cqw;border-radius:99px;background:#16161a}
.laundry .ph-icons{display:flex;gap:1.2cqw;align-items:flex-end}
.laundry .ph-icons i{display:block;width:1.6cqw;border-radius:1px;background:var(--ink)}
.laundry .ph-icons i:nth-child(1){height:2.2cqw}.laundry .ph-icons i:nth-child(2){height:3.2cqw}.laundry .ph-icons i:nth-child(3){height:4.2cqw}
.laundry .ph-body{display:flex;flex-direction:column;gap:3cqw;min-height:0;flex:1}
.laundry .ph-week{flex-direction:column;gap:2.4cqw;padding:3.4cqw;border-radius:4.5cqw;border:1px solid #ece8df;font:500 3.6cqw/1.2 var(--g);color:var(--mut)}
.laundry .ph-bars{display:flex;align-items:flex-end;gap:2.2cqw;height:12cqw}
.laundry .ph-bars i{flex:1;border-radius:1cqw;background:var(--lav)}
.laundry .ph-bars i.wk{background:var(--yel)}
.laundry .ph-tabs{flex:none;display:flex;justify-content:space-around;align-items:center;padding:3cqw 2cqw 0;border-top:1px solid #f0ece4}
.laundry .ph-tabs i{width:6cqw;height:6cqw;border-radius:1.6cqw;border:.7cqw solid #c9c4b8}
.laundry .ph-tabs i.t-list{border-radius:50%}
.laundry .ph-tabs i.t-chat{border-radius:2cqw 2cqw 2cqw .4cqw}
.laundry .ph-tabs i.on{border-color:var(--ink);background:var(--yel)}
.laundry .ph-note{position:absolute;left:4cqw;right:4cqw;top:12cqw;z-index:2;align-items:center;gap:3cqw;padding:3.6cqw;border-radius:6cqw;background:#ffffffee;box-shadow:0 10px 24px -10px #23346466,0 0 0 1px #ece8df;font:400 4.1cqw/1.35 var(--g)}
.laundry .ph-note b{display:block;font-weight:500}
.laundry .ph-appicon{flex:none;display:grid;place-items:center;width:10cqw;height:10cqw;border-radius:3cqw;background:var(--yel);font:500 5cqw/1 var(--os)}
.laundry .clay-phone .m-top{display:flex;justify-content:space-between;align-items:center;font:500 4.2cqw/1.2 var(--g);color:var(--mut);margin-top:2cqw}
.laundry .clay-phone .m-app{font:500 4.6cqw/1.2 var(--g);color:var(--ink)}
.laundry .clay-phone .m-live{width:2.8cqw;height:2.8cqw;border-radius:50%;background:#2DBE6C;box-shadow:0 0 0 1.2cqw #DDF5E7}
.laundry .clay-phone .m-kicker{margin:0;font:500 3.6cqw/1 var(--g);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.laundry .clay-phone .m-store{margin:0;font:300 8.4cqw/1.1 var(--os)}
.laundry .clay-phone .m-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2.4cqw}
.laundry .clay-phone .m-list li{gap:2.6cqw;padding:3cqw 3.2cqw;border-radius:4.5cqw;background:var(--sand)}
.laundry .clay-phone .m-list .dot{flex:none;width:2.8cqw;height:2.8cqw;margin-top:1.4cqw;border-radius:.8cqw}
.laundry .clay-phone .m-list .r1 .dot{background:var(--yel)}.laundry .clay-phone .m-list .r2 .dot{background:var(--blue)}.laundry .clay-phone .m-list .r3 .dot{background:var(--purp)}
.laundry .clay-phone .m-list p{margin:0;font:400 4.5cqw/1.36 var(--g)!important}
.laundry .clay-phone .m-list b{font-weight:500}
.laundry .clay-phone .m-chips{flex-wrap:wrap;gap:2cqw}
.laundry .clay-phone .m-chips span{display:inline-flex;align-items:center;padding:2cqw 3.2cqw;border:1px solid var(--ink);border-radius:99px;font:400 3.8cqw/1.2 var(--g);transition:background .25s,color .25s}
.laundry .clay-phone .chip-go.tap{background:var(--ink);color:#fff;animation:ph-tap .5s ease-out}
.laundry .ph-thread{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-end;gap:2.8cqw;overflow:hidden}
.laundry .clay-phone .b{max-width:90%;padding:3cqw 3.6cqw;border-radius:5cqw;font:400 4.6cqw/1.36 var(--g)}
.laundry .clay-phone .b p{margin:0;font:400 4.6cqw/1.36 var(--g)!important;color:inherit}
.laundry .clay-phone .me{align-self:flex-end;background:var(--ink);color:#fff;border-bottom-right-radius:1.6cqw}
.laundry .clay-phone .ai{align-self:flex-start;flex-direction:column;gap:2.4cqw;background:var(--sand);border-bottom-left-radius:1.6cqw}
.laundry .clay-phone .ai.ok{background:var(--lemon)}
.laundry .clay-phone .src{width:fit-content;padding:1.4cqw 3cqw;border-radius:99px;background:#fff;border:1px solid var(--card-line);font:500 3.4cqw/1.3 var(--g);color:#5B37B8}
.laundry .clay-phone .typing{flex-direction:row;gap:1.6cqw;padding:3.6cqw 4.4cqw}
.laundry .clay-phone .typing i{width:2cqw;height:2cqw;border-radius:50%;background:var(--mut);animation:ph-dot 1s infinite ease-in-out}
.laundry .clay-phone .typing i:nth-child(2){animation-delay:.15s}.laundry .clay-phone .typing i:nth-child(3){animation-delay:.3s}
.laundry .clay-phone .m-input{flex:none;padding:3.2cqw 4.4cqw;border:1px solid var(--card-line);border-radius:99px;font:400 3.7cqw/1.3 var(--g);color:var(--mut)}

/* animation steps: hidden until the player turns them on */
.laundry .phones .anim{display:none}
.laundry .phones .anim.on{display:flex;animation:ph-in .42s cubic-bezier(.2,.8,.2,1) both}
.laundry .phones .m-list li.anim.on,.laundry .phones .ph-note.anim.on{display:flex}
.laundry .phones .src.anim.on{display:inline-flex}
.laundry .phones .ph-note.anim.on{animation:ph-drop .5s cubic-bezier(.2,.8,.2,1) both}
.laundry .phones .ph-note.anim.out{animation:ph-up .4s ease-in both}
.laundry .phones.resetting .ph-screen>*:not(.ph-status){transition:opacity .35s;opacity:0}
@keyframes ph-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ph-drop{from{opacity:0;transform:translateY(-120%)}to{opacity:1;transform:none}}
@keyframes ph-up{to{opacity:0;transform:translateY(-120%)}}
@keyframes ph-dot{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-1.2cqw)}}
@keyframes ph-tap{0%{transform:scale(1)}40%{transform:scale(.94)}100%{transform:scale(1)}}

/* 4. weekly demand */
.laundry .rush{margin:0;display:flex;flex-direction:column;gap:18px;padding:clamp(20px,2.4vw,36px);border:1px solid var(--card-line);border-radius:24px;background:#fff}
.laundry .rush-tabs{display:inline-flex;width:fit-content;padding:4px;gap:4px;border-radius:99px;background:var(--sand)}
.laundry .rush-tabs button{font:500 14px/1 var(--g);height:36px;padding:0 16px;border:0;border-radius:99px;background:transparent;color:var(--ink);cursor:pointer}
.laundry .rush-tabs button[aria-pressed=true]{background:var(--ink);color:#fff}
.laundry .rush-tabs button:focus-visible{outline:2px solid var(--purp);outline-offset:2px}
.laundry .rush-art{display:block;width:100%;height:auto}
.laundry .rush-art .bar{transform-box:fill-box;transform-origin:50% 100%;transition:transform .7s cubic-bezier(.2,.8,.2,1),fill .4s}
.laundry .rush-art .wd{fill:var(--lav)}.laundry .rush-art .wk{fill:var(--yel)}
.laundry .rush[data-mode=with] .rush-art .bar{transform:scaleY(var(--k))}
.laundry .rush[data-mode=with] .rush-art .wd{fill:var(--blue)}
.laundry .rush-art .gl{stroke:#ECEAE3;stroke-width:1.5}
.laundry .rush-art .axis{stroke:var(--ink);stroke-width:2}
.laundry .rush-art .dl{font:400 15px var(--g);fill:var(--mut)}
.laundry .rush-art .ax{font:500 14px var(--g);fill:var(--mut)}

/* 5. loyalty segments */
.laundry .segs{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2vw,28px)}
.laundry .seg{display:flex;flex-direction:column;gap:12px;padding-bottom:4px}
.laundry .seg-art{border-radius:20px;background:var(--sand);padding:16px 20px 8px}
.laundry .seg-art img{display:block;width:100%;height:auto}
.laundry .seg h3{margin:8px 0 0;font:300 clamp(24px,1.8vw,30px)/1.2 var(--os)!important}
.laundry .seg>p{margin:0;font:400 16px/1.5 var(--g);color:var(--mut)}
.laundry .seg-rule{display:flex;flex-direction:column;gap:8px;margin-top:auto;padding:14px 16px;border-radius:14px;background:var(--lemon)}
.laundry .seg-rule .tag{background:#fff}
.laundry .seg-rule p{margin:0;font:400 15px/1.45 var(--g);color:var(--ink)}

/* how we work: phase label */
.laundry .phk{color:var(--teal);font-weight:500;font-size:.95rem}
.laundry #how .body a,.laundry .capture-privacy a{color:inherit}

@media (prefers-reduced-motion:reduce){.laundry .phones .anim{display:flex!important;animation:none!important}.laundry .phones .typing,.laundry .phones .ph-note{display:none!important}.laundry .clay-phone{transition:none}.laundry .net-art .pkt{display:none}.laundry .rush-art .bar{transition:none}.laundry .cp-panel.swap{animation:none}}

@media (max-width:1100px){
 .laundry .own-stage{grid-template-columns:1fr 1fr;grid-template-areas:"ph ph" "l r"}
 .laundry .own-stage .phones{grid-area:ph}
 .laundry .own-notes.l{grid-area:l;align-items:stretch;text-align:left}
 .laundry .own-notes.r{grid-area:r;align-items:stretch}
 .laundry .own-notes li{max-width:none}
 .laundry .gold,.laundry .gold.flip,.laundry .cpick{grid-template-columns:1fr}
 .laundry .cp-list button{flex:none}
 .laundry .gold.flip .gold-b{order:2}
 .laundry .segs{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
 .laundry .own-stage{grid-template-columns:1fr;grid-template-areas:"ph" "l" "r"}
 .laundry .cp-body,.laundry .net-points{grid-template-columns:1fr}
 .laundry .cp-artbox{min-height:0;aspect-ratio:550/290}
 .laundry .phones-v,.laundry .own-stage .phones-v{--pw:min(62vw,262px);flex-direction:column;align-items:center;gap:0}
 .laundry .ph-a{--t-center:translateX(0);--t-from:translateY(18%) rotateX(28deg) scale(.86);--t-v:translateX(-6%) rotate(-3deg);--t-over:translateX(-7%) rotate(-4.5deg)}
 .laundry .ph-b{--t-from:translateY(34%) rotateX(40deg) scale(.84);--t-v:translateX(6%) rotate(3deg);--t-over:translateX(7%) rotate(1.5deg);margin-top:-14%}
 .laundry .phones[data-stage=v].settled:hover .ph-a,.laundry .phones[data-stage=v].settled:hover .ph-b{transform:var(--t-v)}
 .laundry .phones-floor{display:none}
 .laundry .segs{grid-template-columns:1fr}
 .laundry .net-fig{padding:12px 0 12px 12px;border-radius:20px;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
 .laundry .net-art{width:760px;max-width:none}
 .laundry .net-swipe{display:block}
 .laundry .net-fig::after{content:"";display:block}
 .laundry .rush-art .dl{font-size:24px}.laundry .rush-art .ax{font-size:22px}
 .laundry .rush-tabs button{height:auto;min-height:36px;padding:8px 14px;line-height:1.2;text-align:left}
}
