/* Rama Ibrahim: one stylesheet for both pages (bright-4.html, bright-4-coaching.html).
   Colour, type and marks follow the Core Palette Board (R36). One colour set on every screen (R29). */
:root{
  --hot:#FF2E93; --bub:#FF8DB6; --lime:#C6FF1A; --ink:#1A1214; --forest:#1E3B33; --cream:#FFF8F2; --white:#FFFFFF;
  --head:"Shantell Sans","Poppins",system-ui,sans-serif;
  --sect:"Archivo Black","Poppins",system-ui,sans-serif;
  --body:"Poppins",system-ui,-apple-system,"Segoe UI",sans-serif;
  --gut:14px; --r:22px; --pad:clamp(22px,5vw,72px);
  --line:2px solid var(--ink); --drop:6px 6px 0 var(--ink);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip;color-scheme:light}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.6;overflow-x:clip;-webkit-font-smoothing:antialiased}
h1,h2,h3,p{margin:0}
h1,h2,h3{text-wrap:balance}
p{text-wrap:pretty}
a{color:inherit}
img{display:block;max-width:100%}
.panel{margin:var(--gut);border-radius:var(--r);border:var(--line);position:relative;overflow:hidden}
.wrap{max-width:1560px;margin:0 auto;padding:0 calc(var(--pad) + var(--gut) + 2px)}
.panel .wrap{padding:0 var(--pad)}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:999px}
.ways :focus-visible{outline-color:var(--lime)}

/* ---------- marks from the board ---------- */
.mk{display:inline-block;background:var(--lime);color:var(--ink);padding:0 .16em;margin:0 -.04em;border-radius:.06em;transform:rotate(-1.4deg)}
.sq{position:relative;white-space:nowrap}
.sq svg{position:absolute;left:0;bottom:.035em;width:100%;height:.2em;overflow:visible}
.sq path{fill:none;stroke:var(--lime);stroke-width:4.5;stroke-linecap:round;vector-effect:non-scaling-stroke}
.dd{position:absolute;pointer-events:none;overflow:visible}
.hand{font:500 17px/1.3 var(--head)}

/* ---------- button: a pill with a travelling dot ---------- */
.btn{display:inline-flex;align-items:center;gap:14px;min-height:56px;padding:6px 6px 6px 26px;border-radius:999px;border:var(--line);background:var(--b,var(--ink));color:var(--bt,var(--white));
  font:600 17px/1 var(--body);text-decoration:none;transition:transform .35s cubic-bezier(.2,.9,.2,1.2),box-shadow .35s}
.btn i{width:40px;height:40px;border-radius:50%;background:var(--bd,var(--lime));display:grid;place-items:center;flex:none;transition:transform .45s cubic-bezier(.2,.9,.2,1.2)}
.btn i svg{width:18px;height:18px;stroke:var(--bdi,var(--ink));fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.btn:hover{transform:translate(-2px,-3px) rotate(-1.5deg)}
.btn:hover i{transform:rotate(-45deg) scale(1.06)}
.btn:active{transform:scale(.97)}

/* ---------- header ---------- */
.hero{background:var(--hot);color:var(--ink);display:flex;flex-direction:column;min-height:580px}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px var(--pad) 0;position:relative;z-index:5}
.brand{font:800 25px/1 var(--head);text-decoration:none;color:var(--white);min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}
.nav nav{display:flex;align-items:center;gap:6px}
.nav nav a.l{font:600 16px/1 var(--body);text-decoration:none;padding:13px 16px;border-radius:999px;border:2px solid transparent;white-space:nowrap;transition:background .25s,color .25s,border-color .25s}
.nav nav a.l:hover{background:var(--ink);color:var(--white)}
.nav nav a.l[aria-current]{background:var(--lime);color:var(--ink);border-color:var(--ink)}
.nav .btn{min-height:48px;padding:4px 4px 4px 22px;font-size:16px;margin-left:8px}
.nav .btn i{width:38px;height:38px}
.hero-copy{position:relative;z-index:4;padding:clamp(30px,5vh,48px) 0 96px var(--pad);max-width:calc(var(--pad) + 60%)}
.hero h1{font:800 clamp(38px,4.1vw,60px)/1.26 var(--head);color:var(--white);letter-spacing:0}
.hero h1 .ln{display:block;white-space:nowrap}
.hero h1 .ln>span{display:inline-block}
.hero .sub{font-size:clamp(17px,1.3vw,18.5px);line-height:1.55;max-width:33em;margin-top:clamp(20px,3vh,30px);font-weight:500}
.hero .go{display:flex;align-items:center;flex-wrap:wrap;gap:14px 18px;margin-top:clamp(22px,3.2vh,32px)}
.hero .go .note{display:flex;align-items:center;gap:10px}
.hero .go .note svg{width:44px;height:36px;flex:none;overflow:visible}
.hero .go .note path{fill:none;stroke:var(--lime);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.hero .go .note p{max-width:14.5em;transform:rotate(-2deg)}
.stage{position:absolute;z-index:2;right:0;bottom:0;width:clamp(270px,25vw,360px);height:100%;pointer-events:none}
/* her cut-out ends hard at lower left, lower right and bottom: the lime puck, the pink bump with the header's edge, and the ribbon take those three */
.fig{position:absolute;right:0;bottom:0;width:100%;aspect-ratio:1467/2200;transform:translate(3%,7%)}
.fig .her{position:absolute;inset:0;width:100%;height:100%;max-width:none;z-index:2;transform:translate3d(calc(var(--mx,0)*5px),0,0);transition:transform .7s cubic-bezier(.2,.8,.2,1)}
.fig .puck{position:absolute;z-index:3;width:35%;aspect-ratio:1;left:-7%;top:61%;border-radius:52% 48% 45% 55%/45% 55% 45% 55%;background:var(--lime);border:var(--line);box-shadow:4px 4px 0 var(--ink);
  transform:translate3d(calc(var(--mx,0)*16px),calc(var(--my,0)*10px),0);transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.fig .bump{position:absolute;z-index:3;width:40%;aspect-ratio:1;left:77%;top:57%;border-radius:48% 52% 55% 45%/55% 45% 55% 45%;background:var(--bub);border:var(--line)}
.stage .spark{z-index:4;width:13%;left:-9%;top:30%}

/* ---------- ribbon: her own lines, running ---------- */
.proof{position:relative;z-index:6;margin:-44px -3vw -18px;transform:rotate(-1.8deg);background:var(--ink);color:var(--lime);overflow:hidden}
.proof ul{list-style:none;margin:0;padding:0}
.track{display:flex;width:max-content;will-change:transform}
.track ul{display:flex;align-items:center;flex:none}
.track li{display:flex;align-items:center;white-space:nowrap;font:800 clamp(19px,1.75vw,24px)/1 var(--head);padding:17px 0}
.track li::after{content:"";width:.7em;height:.7em;margin:0 .9em;background:var(--bub);flex:none;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%)}
html:not(.js) .proof{transform:none;margin:var(--gut);border-radius:var(--r)}
html:not(.js) .track{width:auto;display:block}
html:not(.js) .track ul{flex-wrap:wrap;justify-content:center;padding:8px 20px}
html:not(.js) .track li{white-space:normal;padding:8px 0}

/* ---------- standing line: one list, swaps on its own ---------- */
.standing{padding:clamp(44px,5vw,64px) var(--pad) 0;text-align:center}
.standing ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 0}
.standing li{display:flex;align-items:center;font:600 17px/1.35 var(--body)}
.standing li+li::before{content:"";width:.8em;height:.8em;margin:0 1em;background:var(--hot);flex:none;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%)}

/* ---------- what you build ---------- */
.build{padding:clamp(72px,8.5vw,116px) 0 clamp(56px,7vw,96px)}
.standing+.build{padding-top:clamp(48px,5.5vw,76px)}
h2{font:400 clamp(31px,3.9vw,54px)/1.08 var(--sect);letter-spacing:-.03em}
.build h2{max-width:17em}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:clamp(36px,4.5vw,60px);align-items:start}
.tile{color:var(--ink);padding:0 24px 30px;min-height:404px;display:flex;flex-direction:column;position:relative;border:var(--line);box-shadow:var(--drop);transition:transform .5s cubic-bezier(.2,.9,.2,1.15)}
.tile:hover{transform:translateY(-8px) rotate(var(--tw,-1deg))}
.tile.up{border-radius:64px 64px 20px 20px}
.tile.dn{border-radius:20px 20px 64px 64px;flex-direction:column-reverse;padding:30px 24px 0;margin-top:44px}
.tile:nth-child(1){background:var(--bub)} .tile:nth-child(2){background:var(--forest);color:var(--cream);--tw:1deg} .tile:nth-child(3){background:var(--lime)} .tile:nth-child(4){background:var(--hot);--tw:1deg}
.orn{aspect-ratio:1/.7;display:grid;place-items:center;flex:none}
.orn svg{width:46%;height:auto;overflow:visible;transform:rotate(calc(var(--p,0)*var(--turn,40deg)));transition:transform .2s linear}
.tile h3{font:700 clamp(20px,1.6vw,22.5px)/1.22 var(--body);letter-spacing:-.01em}
.tile p{font-size:16px;line-height:1.5;margin-top:10px;font-weight:500}
.tile .tx{flex:1;display:flex;flex-direction:column;justify-content:center;padding:6px 0}

/* ---------- work with me ---------- */
.ways{background:var(--forest);color:var(--cream);padding:clamp(60px,7vw,100px) 0 clamp(60px,7vw,100px)}
.ways h2 em{font-style:normal;color:var(--lime)}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:clamp(36px,4.5vw,60px)}
.card{color:var(--ink);border-radius:20px;border:var(--line);box-shadow:var(--drop);padding:clamp(26px,3vw,40px);position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;min-height:420px;
  transition:transform .6s cubic-bezier(.2,.9,.2,1.1)}
.card.a{background:var(--hot);border-top-left-radius:84px;transform:rotate(-1deg)} .card.b{background:var(--bub);border-top-right-radius:84px;transform:rotate(1deg);margin-top:36px}
.card:hover{transform:rotate(0) translateY(-6px)}
.who{display:inline-flex;align-items:center;min-height:36px;padding:5px 15px;border-radius:999px;background:var(--lime);color:var(--ink);border:2.5px solid var(--ink);font:800 16px/1 var(--head);position:relative;z-index:1;transform:rotate(-4deg)}
.card.a .who{margin-left:auto;transform:rotate(4deg)}
.card h3{font:400 clamp(25px,2.5vw,35px)/1.12 var(--sect);letter-spacing:-.03em;margin-top:clamp(28px,3.4vw,48px);position:relative;z-index:1;max-width:16em}
.card p{margin-top:16px;font-size:clamp(16px,1.25vw,17.5px);line-height:1.55;max-width:31em;font-weight:500;position:relative;z-index:1}
.card .btn{margin-top:auto;position:relative;z-index:1}
.card .sp{height:28px;flex:none}
.card .blob{position:absolute;border-radius:48% 52% 55% 45%/55% 45% 55% 45%;border:var(--line);width:200px;aspect-ratio:1;right:-70px;bottom:-96px;transform:translate3d(0,calc(var(--p,0)*-40px),0)}
.card.a .blob{background:var(--bub)} .card.b .blob{background:var(--lime)}
.card.tall{padding-bottom:clamp(112px,10vw,140px)}
.both{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px 32px;margin-top:clamp(44px,5vw,68px)}
.both p{font:800 clamp(23px,2.5vw,34px)/1.2 var(--head);max-width:16em}
.both .btn{--b:var(--lime);--bt:var(--ink);--bd:var(--ink);--bdi:var(--lime)}

/* ---------- story ---------- */
.story{background:var(--bub);color:var(--ink);padding:clamp(60px,7vw,100px) 0}
.story .wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(32px,6vw,88px);align-items:start}
.stack{position:sticky;top:60px;aspect-ratio:1/1.1;max-width:380px;width:100%}
.stack>*{position:absolute}
.stack .ph{left:6%;top:0;width:80%;aspect-ratio:1;border-radius:50%;background:var(--hot);border:var(--line);overflow:hidden;z-index:2}
.stack .ph b{position:absolute;inset:0;display:grid;place-items:center;font:800 clamp(110px,12vw,168px)/1 var(--head);color:var(--white);letter-spacing:-.04em}
.stack .s1{left:0;bottom:0;width:56%;aspect-ratio:2/1;border-radius:999px 999px 0 0;background:var(--lime);border:var(--line);z-index:3;transform:translate3d(0,calc(var(--p,0)*-30px),0)}
.stack .s2{right:0;bottom:7%;width:34%;aspect-ratio:1;border-radius:50%;background:var(--cream);border:var(--line);z-index:3;transform:translate3d(0,calc(var(--p,0)*-60px),0)}
.stack .s3{right:3%;top:2%;width:22%;aspect-ratio:1;background:var(--ink);z-index:1;border-radius:0 64px 0 0;transform:translate3d(0,calc(var(--p,0)*34px),0)}
.story h2{max-width:13em}
.story .body p{font-size:clamp(17px,1.3vw,18.5px);line-height:1.62;margin-top:22px;max-width:34em}
.story .body p:first-of-type{margin-top:clamp(26px,3vw,40px)}
.story .body p.last{font:800 clamp(24px,2.6vw,35px)/1.2 var(--head);margin-top:clamp(30px,3.6vw,46px);max-width:17em}
.story strong{font-weight:700}

/* ---------- close ---------- */
.close{background:var(--hot);color:var(--ink);text-align:center;padding:clamp(64px,8vw,112px) 0 clamp(52px,6vw,84px)}
.close h2{font:800 clamp(38px,5.2vw,72px)/1.12 var(--head);letter-spacing:0;color:var(--white)}
.close .sub{font-size:clamp(17px,1.4vw,19px);max-width:27em;margin:clamp(24px,3vw,36px) auto 0;font-weight:500}
.close .btn{margin-top:clamp(26px,3vw,36px)}
.sig{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:clamp(34px,4vw,52px);font:500 clamp(24px,2.3vw,31px)/1 var(--head);transform:rotate(-3deg)}
.sig svg{width:30px;height:27px;overflow:visible;transform:rotate(12deg)}
.close .spark{width:clamp(34px,3.6vw,50px);left:clamp(18px,4.5vw,64px);top:clamp(22px,3.4vw,48px)}

footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px 20px;padding:8px calc(var(--gut) + 18px) 22px;font:500 16px/1 var(--body)}
footer a{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 6px;border-radius:999px}
footer a:hover{text-decoration:underline;text-underline-offset:4px}
footer .n{font:800 22px/1 var(--head)}
footer div{display:flex;flex-wrap:wrap;gap:4px 14px}

/* ---------- motion (only when the reader accepts it; nothing but the ribbon keeps moving) ---------- */
@media (prefers-reduced-motion:no-preference){
  .js .hero h1 .ln>span{opacity:0;transform:translateY(46%);animation:rise .9s cubic-bezier(.16,1,.3,1) forwards}
  .js .hero h1 .ln:nth-child(2)>span{animation-delay:.12s}
  .js .hero h1 .mk{clip-path:inset(-10% 100% -10% -2%);animation:swipe .55s cubic-bezier(.6,0,.2,1) .85s forwards}
  .js .hero .sq svg{clip-path:inset(-60% 100% -60% -2%);animation:swipe2 .5s cubic-bezier(.6,0,.2,1) .8s forwards}
  .js .hero .sub,.js .hero .go,.js .nav{opacity:0;animation:fade .8s ease .45s forwards}
  .js .nav{animation-delay:.05s}
  .js .hero .go .note path{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .4s ease 1.25s forwards}
  .js .fig .her{opacity:0;animation:herin .9s cubic-bezier(.16,1,.3,1) .45s forwards}
  .js .fig .puck,.js .fig .bump{scale:0;animation:pop .6s cubic-bezier(.2,1.4,.3,1) .1s forwards}
  .js .fig .bump{animation-delay:.2s}
  .js .stage .spark{scale:0;animation:twinkle .9s cubic-bezier(.2,1.4,.3,1) 1.15s forwards}
  .js .rv{opacity:0;translate:0 44px;rotate:var(--rr,0deg);transition:opacity .7s ease,translate .9s cubic-bezier(.16,1,.3,1),rotate .9s cubic-bezier(.16,1,.3,1);transition-delay:var(--d,0s)}
  .js .rv.in{opacity:1;translate:0 0;rotate:0deg}
  .js .rv .mk{clip-path:inset(-10% 100% -10% -2%);transition:clip-path .55s cubic-bezier(.6,0,.2,1) .35s}
  .js .rv.in .mk{clip-path:inset(-10% -2% -10% -2%)}
  .js .rv .sq svg{clip-path:inset(-60% 100% -60% -2%);transition:clip-path .5s cubic-bezier(.6,0,.2,1) .4s}
  .js .rv.in .sq svg{clip-path:inset(-60% -2% -60% -2%)}
  .js .close .spark{scale:0;transition:scale .7s cubic-bezier(.2,1.4,.3,1) .5s}
  .js .close.seen .spark{scale:1}
}
@keyframes rise{to{opacity:1;transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes swipe{to{clip-path:inset(-10% -2% -10% -2%)}}
@keyframes swipe2{to{clip-path:inset(-60% -2% -60% -2%)}}
@keyframes fade{to{opacity:1}}
@keyframes pop{to{scale:1}}
@keyframes twinkle{0%{scale:0;rotate:-40deg}60%{scale:1.25;rotate:8deg}100%{scale:1;rotate:0deg}}
@keyframes herin{from{opacity:0;translate:0 5%}to{opacity:1;translate:0 0}}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .proof{transform:none;margin:var(--gut);border-radius:var(--r)}
  .track{width:auto;display:block} .track ul{flex-wrap:wrap;justify-content:center;padding:8px 20px} .track ul[aria-hidden]{display:none}
  .track li{white-space:normal;padding:8px 0} .track li:last-child::after{display:none}
  .btn,.tile,.card,.stage *{transition:none}
  .btn:hover,.tile:hover{transform:none}
}

/* ---------- small tablets and phone ---------- */
@media (max-width:1040px){
  .tiles{grid-template-columns:1fr 1fr}
  .tile{min-height:360px} .tile.dn{margin-top:0}
  .tile:nth-child(3){border-radius:20px 20px 64px 64px;flex-direction:column-reverse;padding:30px 24px 0}
  .tile:nth-child(2){border-radius:64px 64px 20px 20px;flex-direction:column;padding:0 24px 30px}
  .tile:nth-child(4){border-radius:20px 20px 64px 64px}
  .nav .btn{display:none}
  .hero-copy{max-width:calc(var(--pad) + 58%)}
  .hero h1 .ln{white-space:normal}
}
@media (max-width:760px){
  :root{--gut:8px;--r:18px;--drop:4px 4px 0 var(--ink)}
  body{font-size:16.5px}
  .hero{min-height:0}
  .nav{padding:10px 8px 0 18px;gap:0 4px;flex-wrap:wrap}
  .brand{font-size:19.5px}
  .nav nav{gap:0}
  .nav nav a.l{font-size:15px;padding:13px 10px}
  .nav nav a.l[href^='#']{display:none}
  .hero-copy{max-width:none;padding:20px 20px 0}
  .hero h1{font-size:clamp(34px,9.7vw,40px);line-height:1.16}
  .hero .go{flex-direction:column;align-items:stretch;gap:12px}
  .hero .go .btn{justify-content:space-between}
  .hero .go .note{align-items:flex-start;padding-left:6px;max-width:59%;position:relative;z-index:5}
  .hero .go .note svg{width:34px;height:30px;transform:rotate(-96deg) scaleY(-1);margin-top:-2px}
  .hero .go .note p{max-width:none;transform:rotate(-1.5deg);font-size:16.5px}
  .stage{position:relative;right:auto;bottom:auto;width:auto;height:262px;margin-top:-84px}
  .fig{width:51%}
  .stage .spark{width:9%;left:9%;top:auto;bottom:27%}
  .proof{margin:-30px -6vw -12px;transform:rotate(-3deg)}
  .track li{padding:14px 0}
  .standing li{font-size:16px} .standing li+li::before{display:none} .standing ul{flex-direction:column;gap:6px}
  .tiles{grid-template-columns:1fr;gap:16px}
  .tile,.tile:nth-child(n){min-height:0;flex-direction:row;align-items:center;padding:22px 20px 22px 6px;gap:2px}
  .tile:nth-child(odd){border-radius:44px 18px 18px 44px}
  .tile:nth-child(even){border-radius:18px 44px 44px 18px;flex-direction:row-reverse;padding:22px 6px 22px 20px}
  .orn{width:27%;aspect-ratio:1} .orn svg{width:62%}
  .tile h3{font-size:19.5px} .tile p{font-size:15.5px;margin-top:6px}
  .cards{grid-template-columns:1fr;gap:20px}
  .card{min-height:0;border-radius:18px} .card.a{border-top-left-radius:56px;transform:rotate(-.8deg)} .card.b{border-top-right-radius:56px;margin-top:0;transform:rotate(.8deg)}
  .card .btn,.both .btn{width:100%;justify-content:space-between}
  .card .blob{width:150px;right:-60px;bottom:-76px}
  .card.tall{padding-bottom:96px}
  .story .wrap{grid-template-columns:1fr}
  .stack{position:relative;top:auto;max-width:230px;margin:0 auto}
  .close .btn{width:calc(100% - 2*var(--pad));justify-content:space-between;max-width:420px}
  .close .spark{left:18px;top:22px}
  footer{padding:6px 14px 18px;font-size:15px}
  footer div{gap:0 6px}
  footer a{padding:0 4px}
}
