:root {
    --ink: #0E1819;
    --lime: #DBF263;
    --spink: #FF7CD2;
}

/* ============================================================
   COM.PLEX 2026 homepage styles (css/home26.css)
   Built from prep/hero.html + prep/sections/*.css.
   Load AFTER all.css / responsive.css so overrides win.
   Order: fonts, hero, spks, what, sec3, video(+orgs),
          testimonials, workshops, cta(+code), sec9(sponsors), footer.
   ============================================================ */

/* ---- leon product font (files already in fonts/leon/) ---- */

/* ================= HERO (prep/hero.html) ================= */
/* scoped replacement for the demo page's body rule */
.hblock.h-hero { background:#cdd8ee; font-family:'leonprod',system-ui,sans-serif; color:#0E1819;
  padding:0; margin:0; }
.hblock.h-hero .hero-viewport img, .hblock.h-hero .m-head img { max-width:none; }

.part2 { position:relative; width:367.16px; height:381.84px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22367.16%22%20height%3D%22381.84%22%20viewBox%3D%220%200%20367.16%20381.84%22%3E%3Cpath%20d%3D%22M306.481%2039.9504C450.586%20151.741%20315.149%20442.642%20138.742%20370.475C88.7063%20350.005%2090.0399%20269.175%20147.583%20260.007C176.225%20255.444%20196.783%20279.584%20206.153%20303.896C252.074%20302.014%20281.574%20286.26%20300.112%20267.952C355.699%20213.056%20335.063%20101.214%20267.392%2065.9347C226.773%2044.759%20174.487%2044.9076%20138.336%2052.1379L138.335%2052.1369C96.4679%2060.609%2072.004%2075.9872%2058.5006%2092.5607C45.1117%20108.994%2041.3412%20128.012%2043.5718%20146.39C45.6538%20163.541%2063.8742%20215.223%2089.8062%20209.823C106.235%20206.401%20138.449%20201.202%20143.438%20224.229C153.428%20270.337%2055.1901%20243.283%2038.4664%20229.769C15.4%20211.128%202.7772%20182.263%200.47126%20152.15C-11.4789%20-3.91087%20206.914%20-37.289%20306.481%2039.9504Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22367.16%22%20height%3D%22381.84%22%20viewBox%3D%220%200%20367.16%20381.84%22%3E%3Cpath%20d%3D%22M306.481%2039.9504C450.586%20151.741%20315.149%20442.642%20138.742%20370.475C88.7063%20350.005%2090.0399%20269.175%20147.583%20260.007C176.225%20255.444%20196.783%20279.584%20206.153%20303.896C252.074%20302.014%20281.574%20286.26%20300.112%20267.952C355.699%20213.056%20335.063%20101.214%20267.392%2065.9347C226.773%2044.759%20174.487%2044.9076%20138.336%2052.1379L138.335%2052.1369C96.4679%2060.609%2072.004%2075.9872%2058.5006%2092.5607C45.1117%20108.994%2041.3412%20128.012%2043.5718%20146.39C45.6538%20163.541%2063.8742%20215.223%2089.8062%20209.823C106.235%20206.401%20138.449%20201.202%20143.438%20224.229C153.428%20270.337%2055.1901%20243.283%2038.4664%20229.769C15.4%20211.128%202.7772%20182.263%200.47126%20152.15C-11.4789%20-3.91087%20206.914%20-37.289%20306.481%2039.9504Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part2 .pback { position:absolute; inset:0; background:#F16C21; opacity:1; }
.part2 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,1.0,-64.44,-83.44) scale(0.7143); transform-origin:0 0; }

.part3 { position:relative; width:193.33px; height:401.41px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22193.33%22%20height%3D%22401.41%22%20viewBox%3D%220%200%20193.33%20401.41%22%3E%3Cpath%20d%3D%22M92.4661%201.41908C71.1558%204.31936%2013.4131%2016.5131%203.10215%2085.8069C-22.4622%20257.61%20119.163%20280.652%2092.4665%20246.348C65.7703%20212.045%2081.4677%20133.832%20103.465%20197.637C125.462%20261.442%20115.838%20297.118%20117.901%20364.354C119.55%20418.142%20173.352%20409.178%20191.454%20364.354C204.515%20312.212%20145.26%20316.603%20139.21%20191.463C131.649%2035.0372%20168.082%20-8.87207%2092.4661%201.41908Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22193.33%22%20height%3D%22401.41%22%20viewBox%3D%220%200%20193.33%20401.41%22%3E%3Cpath%20d%3D%22M92.4661%201.41908C71.1558%204.31936%2013.4131%2016.5131%203.10215%2085.8069C-22.4622%20257.61%20119.163%20280.652%2092.4665%20246.348C65.7703%20212.045%2081.4677%20133.832%20103.465%20197.637C125.462%20261.442%20115.838%20297.118%20117.901%20364.354C119.55%20418.142%20173.352%20409.178%20191.454%20364.354C204.515%20312.212%20145.26%20316.603%20139.21%20191.463C131.649%2035.0372%20168.082%20-8.87207%2092.4661%201.41908Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part3 .pback { position:absolute; inset:0; background:#FF01E5; opacity:1; }
.part3 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,1.0,-164.0,-83.0) scale(0.7143); transform-origin:0 0; }

.part5 { position:relative; width:606.02px; height:523.10px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22606.02%22%20height%3D%22523.10%22%20viewBox%3D%220%200%20606.02%20523.10%22%3E%3Cpath%20d%3D%22M99.6023%2075.6562C187.998%207.35033%20306.623%20-10.5178%20406.179%205.45113C456.004%2013.4431%20501.437%2029.9641%20536.197%2053.2431C570.929%2076.5032%20595.496%20106.875%20602.326%20142.602C612.909%20197.96%20599.468%20249.001%20578.647%20290.088C558.552%20329.743%20531.401%20360.504%20511.542%20377.523C510.021%20391.867%20506.357%20420.639%20501.804%20438.849C498.679%20451.349%20489.461%20457.01%20480.233%20458.859C472.695%20460.37%20464.81%20459.489%20458.979%20458.051C444.841%20466.376%20431.824%20476.262%20419.092%20485.941C402.159%20498.813%20385.374%20511.641%20368.009%20518.29C350.083%20525.153%20331.373%20525.522%20311.06%20513.803C299.901%20507.364%20292.629%20499.576%20288.702%20490.874C284.777%20482.175%20284.47%20473.172%20286.177%20464.78C289.528%20448.3%20300.766%20433.398%20309.803%20424.709L311.205%20423.36L313.117%20423.004C341.522%20417.708%20360.683%20409.038%20372.481%20399.403C384.182%20389.847%20388.458%20379.559%20388.07%20370.338C387.286%20351.718%20366.416%20331.336%20329.401%20327.54C301.534%20324.682%20281.386%20337.891%20267.119%20356.405C256.236%20370.528%20249.039%20387.475%20244.95%20401.818C245.257%20401.712%20245.565%20401.61%20245.873%20401.51C250.743%20399.932%20256.536%20398.929%20261.924%20400.367C267.894%20401.961%20272.418%20406.305%20274.388%20413.224C276.214%20419.632%20275.834%20428.076%20273.375%20438.733C266.958%20466.54%20249.271%20481.357%20229.719%20483.135C210.546%20484.878%20191.269%20473.825%20182.324%20453.698C178.856%20445.895%20177.504%20438.911%20178.107%20432.71C178.72%20426.407%20181.317%20421.344%20184.975%20417.486C190.167%20412.013%20197.235%20409.194%20203.428%20407.94L203.428%20403.703C202.663%20403.944%20201.893%20404.167%20201.122%20404.364C197.103%20405.395%20192.13%20406.036%20187.641%20404.544C185.259%20403.752%20182.965%20402.338%20181.188%20400.088C179.426%20397.857%20178.47%20395.182%20178.124%20392.327C177.46%20386.856%20178.945%20380.042%20182.228%20371.835C185.898%20362.661%20187.021%20354.892%20186.056%20348.656C185.122%20342.62%20182.186%20337.627%20176.809%20333.717C165.496%20325.489%20142.695%20321.632%20104.565%20327.498C62.7298%20333.934%2016.3871%20305.128%203.50466%20257.279C-9.53229%20208.856%2011.9322%20143.401%2099.6023%2075.6562ZM314.308%2034.125C194.53%2034.125%2090.5041%20105.722%2052.2752%20182.18C37.3271%20212.076%2038.7565%20236.743%2046.1092%20255.425C53.1096%20273.211%2065.6473%20285.968%2075.5398%20292.645C136.832%20284.414%20173.687%20291.236%20194.629%20304.673C209.995%20314.532%20216.369%20327.671%20217.428%20339.795C218.238%20339.525%20219.052%20339.312%20219.87%20339.16C225.238%20338.165%20229.786%20339.958%20233.125%20343.015C235.09%20344.814%20236.608%20347.009%20237.786%20349.258C262.214%20313.941%20287.488%20291.076%20312.749%20277.864C340.787%20263.2%20368.424%20260.635%20394.053%20265.707C441.717%20275.14%20481.9%20310.818%20506.052%20342.563C532.885%20314.473%20549.91%20286.426%20559.977%20255.777C570.718%20223.076%20573.671%20187.015%20571.721%20144.118C569.94%20104.916%20537.923%2077.3174%20488.358%2059.3378C439.129%2041.4801%20374.977%2034.125%20314.308%2034.125Z%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22606.02%22%20height%3D%22523.10%22%20viewBox%3D%220%200%20606.02%20523.10%22%3E%3Cpath%20d%3D%22M99.6023%2075.6562C187.998%207.35033%20306.623%20-10.5178%20406.179%205.45113C456.004%2013.4431%20501.437%2029.9641%20536.197%2053.2431C570.929%2076.5032%20595.496%20106.875%20602.326%20142.602C612.909%20197.96%20599.468%20249.001%20578.647%20290.088C558.552%20329.743%20531.401%20360.504%20511.542%20377.523C510.021%20391.867%20506.357%20420.639%20501.804%20438.849C498.679%20451.349%20489.461%20457.01%20480.233%20458.859C472.695%20460.37%20464.81%20459.489%20458.979%20458.051C444.841%20466.376%20431.824%20476.262%20419.092%20485.941C402.159%20498.813%20385.374%20511.641%20368.009%20518.29C350.083%20525.153%20331.373%20525.522%20311.06%20513.803C299.901%20507.364%20292.629%20499.576%20288.702%20490.874C284.777%20482.175%20284.47%20473.172%20286.177%20464.78C289.528%20448.3%20300.766%20433.398%20309.803%20424.709L311.205%20423.36L313.117%20423.004C341.522%20417.708%20360.683%20409.038%20372.481%20399.403C384.182%20389.847%20388.458%20379.559%20388.07%20370.338C387.286%20351.718%20366.416%20331.336%20329.401%20327.54C301.534%20324.682%20281.386%20337.891%20267.119%20356.405C256.236%20370.528%20249.039%20387.475%20244.95%20401.818C245.257%20401.712%20245.565%20401.61%20245.873%20401.51C250.743%20399.932%20256.536%20398.929%20261.924%20400.367C267.894%20401.961%20272.418%20406.305%20274.388%20413.224C276.214%20419.632%20275.834%20428.076%20273.375%20438.733C266.958%20466.54%20249.271%20481.357%20229.719%20483.135C210.546%20484.878%20191.269%20473.825%20182.324%20453.698C178.856%20445.895%20177.504%20438.911%20178.107%20432.71C178.72%20426.407%20181.317%20421.344%20184.975%20417.486C190.167%20412.013%20197.235%20409.194%20203.428%20407.94L203.428%20403.703C202.663%20403.944%20201.893%20404.167%20201.122%20404.364C197.103%20405.395%20192.13%20406.036%20187.641%20404.544C185.259%20403.752%20182.965%20402.338%20181.188%20400.088C179.426%20397.857%20178.47%20395.182%20178.124%20392.327C177.46%20386.856%20178.945%20380.042%20182.228%20371.835C185.898%20362.661%20187.021%20354.892%20186.056%20348.656C185.122%20342.62%20182.186%20337.627%20176.809%20333.717C165.496%20325.489%20142.695%20321.632%20104.565%20327.498C62.7298%20333.934%2016.3871%20305.128%203.50466%20257.279C-9.53229%20208.856%2011.9322%20143.401%2099.6023%2075.6562ZM314.308%2034.125C194.53%2034.125%2090.5041%20105.722%2052.2752%20182.18C37.3271%20212.076%2038.7565%20236.743%2046.1092%20255.425C53.1096%20273.211%2065.6473%20285.968%2075.5398%20292.645C136.832%20284.414%20173.687%20291.236%20194.629%20304.673C209.995%20314.532%20216.369%20327.671%20217.428%20339.795C218.238%20339.525%20219.052%20339.312%20219.87%20339.16C225.238%20338.165%20229.786%20339.958%20233.125%20343.015C235.09%20344.814%20236.608%20347.009%20237.786%20349.258C262.214%20313.941%20287.488%20291.076%20312.749%20277.864C340.787%20263.2%20368.424%20260.635%20394.053%20265.707C441.717%20275.14%20481.9%20310.818%20506.052%20342.563C532.885%20314.473%20549.91%20286.426%20559.977%20255.777C570.718%20223.076%20573.671%20187.015%20571.721%20144.118C569.94%20104.916%20537.923%2077.3174%20488.358%2059.3378C439.129%2041.4801%20374.977%2034.125%20314.308%2034.125Z%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part5 .pback { position:absolute; inset:0; background:#FFC9C1; opacity:1; }
.part5 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,1.0,-93.95,-42.52) scale(1.0); transform-origin:0 0; }
.part5 .pa0 { position:absolute; left:-1.95px; top:-0.52px;
  width:589.0px; height:524.0px; mix-blend-mode:lighten; opacity:1; }
.part4 { position:relative; width:461.65px; height:465.49px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22461.65%22%20height%3D%22465.49%22%20viewBox%3D%220%200%20461.65%20465.49%22%3E%3Cpath%20d%3D%22M131.889%2074.3637C63.1714%2096.3312%2024.9183%20134.774%2014.3816%20151.25C7.05169%20156.971%20-5.54652%20173.767%202.69964%20195.185C10.9458%20216.603%2011.6329%20234.772%2010.9457%20241.18C4.34873%20274.131%2025.6055%20286.945%2037.0585%20289.233C24.9641%20343.603%2051.2603%20373.214%2065.9201%20381.223C62.9423%20346.669%2067.5693%20284.154%20109.9%20310.515C162.813%20343.466%20206.105%20288.547%20208.166%20277.563C210.228%20266.579%20222.597%20258.342%20270.7%20263.834C309.182%20268.227%20320.635%20250.562%20321.551%20241.18C310.556%20166.353%20353.162%20156.055%20356.597%20151.25C353.162%2099.7637%20363.469%20124.477%20374.464%2078.4826C383.26%2041.6869%20346.061%2035.234%20326.362%2036.607C290.078%2039.3529%20297.5%2030.4286%20305.746%2025.6232C329.935%2011.3443%20319.948%202.74038%20311.931%200.223287C287.742%20-1.97347%20268.409%2012.58%20261.767%2020.1314C212.29%2036.607%20217.787%2046.9043%20131.889%2074.3637Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%280.965926%2C0.258819%2C-0.258819%2C0.965926%2C98.668%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22461.65%22%20height%3D%22465.49%22%20viewBox%3D%220%200%20461.65%20465.49%22%3E%3Cpath%20d%3D%22M131.889%2074.3637C63.1714%2096.3312%2024.9183%20134.774%2014.3816%20151.25C7.05169%20156.971%20-5.54652%20173.767%202.69964%20195.185C10.9458%20216.603%2011.6329%20234.772%2010.9457%20241.18C4.34873%20274.131%2025.6055%20286.945%2037.0585%20289.233C24.9641%20343.603%2051.2603%20373.214%2065.9201%20381.223C62.9423%20346.669%2067.5693%20284.154%20109.9%20310.515C162.813%20343.466%20206.105%20288.547%20208.166%20277.563C210.228%20266.579%20222.597%20258.342%20270.7%20263.834C309.182%20268.227%20320.635%20250.562%20321.551%20241.18C310.556%20166.353%20353.162%20156.055%20356.597%20151.25C353.162%2099.7637%20363.469%20124.477%20374.464%2078.4826C383.26%2041.6869%20346.061%2035.234%20326.362%2036.607C290.078%2039.3529%20297.5%2030.4286%20305.746%2025.6232C329.935%2011.3443%20319.948%202.74038%20311.931%200.223287C287.742%20-1.97347%20268.409%2012.58%20261.767%2020.1314C212.29%2036.607%20217.787%2046.9043%20131.889%2074.3637Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%280.965926%2C0.258819%2C-0.258819%2C0.965926%2C98.668%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part4 .pback { position:absolute; inset:0; background:#00B7FE; opacity:1; }
.part4 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(-1.0,0.0,0.0,-1.0,487.93,365.14) scale(0.7143); transform-origin:0 0; }
.part4 .pa0 { position:absolute; left:64.93px; top:60.14px;
  width:318.0px; height:252.0px; mix-blend-mode:overlay; opacity:1; }

/* .part5 moved to all.css — reused by the hamburger menu decor (site-wide) */

.part6 { position:relative; width:305.29px; height:355.16px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22305.29%22%20height%3D%22355.16%22%20viewBox%3D%220%200%20305.29%20355.16%22%3E%3Cpath%20d%3D%22M113.165%205.3812C192.966%20-15.1979%20208.1%2026.6466%20204.661%2073.2929C204.033%2081.8058%20201.411%2089.0757%20197.499%2095.2522C205.906%20113.581%20219.291%20156.544%20185.537%20168.644C183.363%20192.415%20174.702%20210.865%20168.2%20217.348C186.774%20210.754%20213.604%20212.074%20211.884%20233.233C209.986%20256.586%20202.597%20250.961%20177.831%20275.656C153.066%20300.351%20111.79%20307.896%2087.0238%20285.946C67.2113%20268.385%2082.8962%20232.897%2093.2152%20217.348C80.5574%20210.214%2077.3928%20177.333%2077.3927%20161.784C77.4442%20161.681%2077.4972%20161.5%2077.5701%20161.248C39.1047%20162.259%2030.8193%20133.809%2013.4147%20114.452C-4.4716%2094.5582%20-4.47153%2073.2929%2013.4147%2050.6557C31.301%2028.0185%2033.3648%2025.9605%20113.165%205.3812Z%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20transform%3D%22matrix%280.933077%2C0.359677%2C-0.359677%2C0.933077%2C107.515%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22305.29%22%20height%3D%22355.16%22%20viewBox%3D%220%200%20305.29%20355.16%22%3E%3Cpath%20d%3D%22M113.165%205.3812C192.966%20-15.1979%20208.1%2026.6466%20204.661%2073.2929C204.033%2081.8058%20201.411%2089.0757%20197.499%2095.2522C205.906%20113.581%20219.291%20156.544%20185.537%20168.644C183.363%20192.415%20174.702%20210.865%20168.2%20217.348C186.774%20210.754%20213.604%20212.074%20211.884%20233.233C209.986%20256.586%20202.597%20250.961%20177.831%20275.656C153.066%20300.351%20111.79%20307.896%2087.0238%20285.946C67.2113%20268.385%2082.8962%20232.897%2093.2152%20217.348C80.5574%20210.214%2077.3928%20177.333%2077.3927%20161.784C77.4442%20161.681%2077.4972%20161.5%2077.5701%20161.248C39.1047%20162.259%2030.8193%20133.809%2013.4147%20114.452C-4.4716%2094.5582%20-4.47153%2073.2929%2013.4147%2050.6557C31.301%2028.0185%2033.3648%2025.9605%20113.165%205.3812Z%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20transform%3D%22matrix%280.933077%2C0.359677%2C-0.359677%2C0.933077%2C107.515%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part6 .pback { position:absolute; inset:0; background:#D9D9D9; opacity:1; }
.part6 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,-1.0,-207.0,408.0) scale(0.7143); transform-origin:0 0; }
.part6 .pa0 { position:absolute; left:68.0px; top:40.0px;
  width:209.0px; height:289.0px; mix-blend-mode:normal; opacity:1; }

.part7 { position:relative; width:493.03px; height:350.17px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22493.03%22%20height%3D%22350.17%22%20viewBox%3D%220%200%20493.03%20350.17%22%3E%3Cpath%20d%3D%22M36.1236%20204.292C5.41952%20193.303%20-7.74034%20173.385%204.59673%20136.298C12.1962%20113.452%2044.3479%20114.32%2059.4259%20119.814C84.6471%2097.8363%20122.936%2092.3418%20138.928%2092.3418C148.248%2070.3639%20195.355%2062.58%20217.744%2061.4353C240.679%2021.2136%20296.624%2050.9256%20310.953%203.74338C335.626%20-9.99283%20366.467%2018.8535%20413.071%2014.0458C450.355%2010.1997%20466.986%2024.8059%20470.642%2032.5897C491.202%2044.2655%20480.922%2044.9523%20489.832%2063.4962C496.959%2078.3313%20490.517%20104.934%20486.405%20116.381C485.72%20150.721%20470.642%20163.084%20470.642%20167.205C467.9%20190.831%20455.792%20204.979%20450.081%20209.1C447.339%20225.584%20437.059%20235.657%20432.262%20238.633C431.576%20259.924%20415.128%20256.49%20415.128%20258.55C415.676%20276.133%20400.735%20282.36%20393.196%20283.276C379.489%20305.254%20339.509%20319.906%20321.233%20324.484C293.271%20346.462%20250.641%20349.667%20232.822%20348.523C200.473%20355.116%20160.859%20340.281%20145.096%20332.039C107.264%20330.94%2092.78%20306.856%2090.267%20294.951C77.6564%20298.798%2070.3916%20288.77%2068.3355%20283.276C56.8215%20284.924%2048.917%20271.6%2046.404%20264.732C30.5037%20267.479%2027.4424%20252.14%2027.8993%20244.127C18.0301%20228.743%2029.27%20211.16%2036.1236%20204.292Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22493.03%22%20height%3D%22350.17%22%20viewBox%3D%220%200%20493.03%20350.17%22%3E%3Cpath%20d%3D%22M36.1236%20204.292C5.41952%20193.303%20-7.74034%20173.385%204.59673%20136.298C12.1962%20113.452%2044.3479%20114.32%2059.4259%20119.814C84.6471%2097.8363%20122.936%2092.3418%20138.928%2092.3418C148.248%2070.3639%20195.355%2062.58%20217.744%2061.4353C240.679%2021.2136%20296.624%2050.9256%20310.953%203.74338C335.626%20-9.99283%20366.467%2018.8535%20413.071%2014.0458C450.355%2010.1997%20466.986%2024.8059%20470.642%2032.5897C491.202%2044.2655%20480.922%2044.9523%20489.832%2063.4962C496.959%2078.3313%20490.517%20104.934%20486.405%20116.381C485.72%20150.721%20470.642%20163.084%20470.642%20167.205C467.9%20190.831%20455.792%20204.979%20450.081%20209.1C447.339%20225.584%20437.059%20235.657%20432.262%20238.633C431.576%20259.924%20415.128%20256.49%20415.128%20258.55C415.676%20276.133%20400.735%20282.36%20393.196%20283.276C379.489%20305.254%20339.509%20319.906%20321.233%20324.484C293.271%20346.462%20250.641%20349.667%20232.822%20348.523C200.473%20355.116%20160.859%20340.281%20145.096%20332.039C107.264%20330.94%2092.78%20306.856%2090.267%20294.951C77.6564%20298.798%2070.3916%20288.77%2068.3355%20283.276C56.8215%20284.924%2048.917%20271.6%2046.404%20264.732C30.5037%20267.479%2027.4424%20252.14%2027.8993%20244.127C18.0301%20228.743%2029.27%20211.16%2036.1236%20204.292Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part7 .pback { position:absolute; inset:0; background:#ECA2F1; opacity:1; }
.part7 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,1.0,-3.9,-74.98) scale(0.7143); transform-origin:0 0; }
.part7 .pa0 { position:absolute; left:107.1px; top:39.02px;
  width:399.0px; height:316.0px; mix-blend-mode:multiply; opacity:1; }

.part8 { position:relative; width:144.83px; height:226.80px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22144.83%22%20height%3D%22226.80%22%20viewBox%3D%220%200%20144.83%20226.80%22%3E%3Cpath%20d%3D%22M100.23%205.90269C84.6301%20-6.49731%2054.5976%202.64225%2052.7301%2014.9027C44.0718%2071.7473%2042.7301%2073.4025%2011.7301%20129.902C-19.2699%20186.402%2016.7301%20177.902%2055.2301%20214.902C93.7301%20251.902%20118.23%20195.402%20138.23%20143.902C158.23%2092.4025%20127.23%2061.4025%20118.23%2052.4025C109.23%2043.4025%20119.73%2021.4027%20100.23%205.90269Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22144.83%22%20height%3D%22226.80%22%20viewBox%3D%220%200%20144.83%20226.80%22%3E%3Cpath%20d%3D%22M100.23%205.90269C84.6301%20-6.49731%2054.5976%202.64225%2052.7301%2014.9027C44.0718%2071.7473%2042.7301%2073.4025%2011.7301%20129.902C-19.2699%20186.402%2016.7301%20177.902%2055.2301%20214.902C93.7301%20251.902%20118.23%20195.402%20138.23%20143.902C158.23%2092.4025%20127.23%2061.4025%20118.23%2052.4025C109.23%2043.4025%20119.73%2021.4027%20100.23%205.90269Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part8 .pback { position:absolute; inset:0; background:#DBF263; opacity:1; }
.part8 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,1.0,-107.17,-26.18) scale(0.5714); transform-origin:0 0; }


.part10 { position:relative; width:336.00px; height:601.64px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22336.00%22%20height%3D%22601.64%22%20viewBox%3D%220%200%20336.00%20601.64%22%3E%3Cpath%20d%3D%22M57.93%20144.669C48.291%20124.364%2067.8649%2093.0619%2078.8567%2079.9486C82.4911%2044.7947%20176.391%205.00906%20193.636%200.410607C187.295%208.5224%20176.261%2029.6952%20182.856%2049.492C191.1%2074.238%20187.929%2081.8521%20187.929%2098.984C187.929%20116.116%20214.563%20109.136%20213.929%20139.593C213.295%20170.049%20234.855%20205.582%20236.124%20206.851C243.733%20221.445%20234.221%20229.059%20234.221%20230.328C245.889%20247.079%20239.083%20258.458%20234.221%20262.054C244.875%20263.577%20247.961%20269.033%20248.172%20271.571C251.977%20307.739%20324.269%20341.368%20324.269%20344.54C344.562%20391.24%20333.993%20416.029%20326.172%20422.585C339.869%20459.133%20309.895%20486.883%20293.196%20496.189L307.147%20510.783C290.026%20535.529%20340.123%20598.98%20248.172%20601.518C174.612%20603.548%20151.571%20579.945%20149.246%20567.889C116.778%20562.813%2089.6369%20527.703%2080.1248%20510.783C71.2468%20504.226%2050.9543%20485.529%2040.808%20463.194C28.1252%20435.276%2050.3202%20423.22%2017.3449%20391.494C-9.03542%20366.114%200.434165%20341.579%208.46649%20332.485C-4.21634%20320.302%201.9137%20306.258%206.56407%20300.759C6.56407%20272.84%2020.5152%20254.44%2027.4907%20248.729C23.0518%20248.094%2013.7935%20238.831%2012.2716%20206.851C10.7496%20174.872%2042.0764%20152.072%2057.93%20144.669Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22336.00%22%20height%3D%22601.64%22%20viewBox%3D%220%200%20336.00%20601.64%22%3E%3Cpath%20d%3D%22M57.93%20144.669C48.291%20124.364%2067.8649%2093.0619%2078.8567%2079.9486C82.4911%2044.7947%20176.391%205.00906%20193.636%200.410607C187.295%208.5224%20176.261%2029.6952%20182.856%2049.492C191.1%2074.238%20187.929%2081.8521%20187.929%2098.984C187.929%20116.116%20214.563%20109.136%20213.929%20139.593C213.295%20170.049%20234.855%20205.582%20236.124%20206.851C243.733%20221.445%20234.221%20229.059%20234.221%20230.328C245.889%20247.079%20239.083%20258.458%20234.221%20262.054C244.875%20263.577%20247.961%20269.033%20248.172%20271.571C251.977%20307.739%20324.269%20341.368%20324.269%20344.54C344.562%20391.24%20333.993%20416.029%20326.172%20422.585C339.869%20459.133%20309.895%20486.883%20293.196%20496.189L307.147%20510.783C290.026%20535.529%20340.123%20598.98%20248.172%20601.518C174.612%20603.548%20151.571%20579.945%20149.246%20567.889C116.778%20562.813%2089.6369%20527.703%2080.1248%20510.783C71.2468%20504.226%2050.9543%20485.529%2040.808%20463.194C28.1252%20435.276%2050.3202%20423.22%2017.3449%20391.494C-9.03542%20366.114%200.434165%20341.579%208.46649%20332.485C-4.21634%20320.302%201.9137%20306.258%206.56407%20300.759C6.56407%20272.84%2020.5152%20254.44%2027.4907%20248.729C23.0518%20248.094%2013.7935%20238.831%2012.2716%20206.851C10.7496%20174.872%2042.0764%20152.072%2057.93%20144.669Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part10 .pback { position:absolute; inset:0; background:#4D49FC; opacity:1; }
.part10 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(-1.0,0.0,0.0,-1.0,520.0,670.0) scale(1.0); transform-origin:0 0; }
.part10 .pa0 { position:absolute; left:-20.0px; top:-69.0px;
  width:440.0px; height:788.0px; mix-blend-mode:hard-light; opacity:1; }
.part10 .pa1 { position:absolute; left:19.0px; top:-38.0px;
  width:264.0px; height:769.0px; mix-blend-mode:color-burn; opacity:1; }
.part10 .pa2 { position:absolute; left:-10.0px; top:337.0px;
  width:345.0px; height:188.0px; mix-blend-mode:normal; opacity:1; }


.part12 { position:relative; width:464.90px; height:438.03px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22464.90%22%20height%3D%22438.03%22%20viewBox%3D%220%200%20464.90%20438.03%22%3E%3Cpath%20d%3D%22M102.82%2012.6803C110.148%205.63643%20117.746%20-0.691067%20130.556%200.0608923C137.589%200.474042%20144.372%201.48089%20148.544%208.40632C153.858%2017.2285%20159.402%2029.6635%20160.882%2049.8898C162.62%2049.9979%20164.401%2050.1448%20166.247%2050.3734C170.415%2050.8895%20174.768%2051.7688%20178.623%2052.8515L178.807%2052.904L178.986%2052.9715C184.372%2055.0822%20188.586%2057.1073%20191.64%2059.3224C194.755%2061.5831%20196.947%2064.2552%20197.751%2067.6716C198.149%2069.3654%20199.249%2073.3219%20197.616%2077.198C197.163%2078.2708%20196.406%2079.0173%20195.921%2079.4437C195.382%2079.9174%20194.779%2080.333%20194.249%2080.6734C193.782%2080.9729%20193.1%2081.3736%20192.472%2081.7419C192.54%2081.7842%20192.609%2081.8302%20192.678%2081.8731C193.876%2082.6124%20195.254%2083.448%20196.536%2084.3325C198.949%2085.9977%20202.003%2088.4587%20203.055%2092.1155C203.544%2093.8112%20203.576%2095.7034%20203.535%2097.218C203.512%2098.0747%20203.447%2099.1256%20203.389%20100.049C203.605%2099.9447%20203.829%2099.8387%20204.06%2099.7374C206.585%2098.6315%20209.942%2097.7927%20214.186%2098.4965C217.6%2099.0625%20221.715%20100.021%20225.419%20101.368C228.913%20102.639%20232.838%20104.532%20235.016%20107.385C236.153%20108.874%20236.868%20110.753%20237.371%20112.271C237.793%20113.546%20238.366%20115.585%20238.687%20116.619C238.82%20116.49%20238.953%20116.354%20239.092%20116.226C240.615%20114.817%20242.928%20113.11%20246.215%20112.683C252.705%20111.84%20264.043%20110.679%20274.966%20118.243C278.457%20120.66%20283.245%20124.159%20287.331%20127.983C289.373%20129.894%20291.321%20131.962%20292.857%20134.083C294.361%20136.159%20295.671%20138.56%20296.077%20141.116C296.518%20143.888%20295.707%20146.7%20294.893%20149.008C294.465%20150.22%20293.956%20151.494%20293.472%20152.723C292.977%20153.98%20292.488%20155.237%20292.04%20156.536C290.266%20161.68%20289.251%20167.166%20291.736%20173.407C293.501%20177.839%20297.215%20182.572%20301.375%20188.328C305.295%20193.752%20309.56%20200.048%20310.999%20206.788C313.056%20216.426%20319.319%20229.056%20315.501%20255.388C314.356%20263.287%20312.771%20271.391%20310.969%20278.118C310.069%20281.478%20309.095%20284.555%20308.078%20287.12C307.098%20289.591%20305.942%20291.93%20304.55%20293.534C302.689%20295.678%20300.383%20298.222%20297.712%20300.305C295.04%20302.389%20291.742%20304.22%20287.871%20304.59C285.405%20304.826%20282.774%20304.177%20280.631%20303.533C279.505%20303.195%20278.366%20302.809%20277.31%20302.45C276.229%20302.082%20275.234%20301.743%20274.288%20301.456C272.467%20300.903%20271.339%20300.724%20270.704%20300.744C270.393%20302.077%20270.229%20303.484%20269.95%20305.471C269.675%20307.43%20269.313%20309.726%20268.593%20312.396C267.14%20317.781%20264.315%20324.401%20258.171%20333.196C255.286%20337.324%20252.005%20341.842%20248.712%20345.283C247.064%20347.003%20245.287%20348.59%20243.433%20349.729C241.605%20350.851%20239.353%20351.749%20236.891%20351.529C233.755%20351.247%20230.975%20349.913%20228.628%20348.496C226.397%20347.149%20223.901%20345.293%20222.018%20344.031C218.03%20341.356%20215.214%20340.195%20212.256%20341.132C212.245%20341.165%20212.234%20341.2%20212.222%20341.237C212.157%20341.442%20212.089%20341.664%20212.005%20341.954C211.925%20342.227%20211.829%20342.559%20211.72%20342.898C211.502%20343.575%20211.196%20344.417%20210.722%20345.268C209.208%20347.987%20206.161%20352.254%20202.253%20356.226C198.387%20360.155%20193.298%20364.185%20187.643%20365.873C184.234%20366.889%20178.491%20368.354%20172.062%20368.759C165.673%20369.162%20158.237%20368.542%20151.716%20365.044C145.363%20361.636%20141.851%20358.283%20139.441%20355.581C138.077%20354.051%20137.623%20353.414%20136.813%20352.56C136.192%20351.904%20135.926%20351.78%20135.812%20351.739C135.534%20351.638%20134.812%20351.521%20133.319%20351.514C131.746%20351.506%20130.462%20351.588%20128.4%20351.607C124.951%20351.639%20120.131%20351.488%20116.399%20349.021C112.323%20346.324%20105.419%20341.877%20103.581%20334.204C102.948%20331.558%20102.874%20327.582%20102.907%20323.681C102.924%20321.651%20102.972%20319.497%20103.019%20317.371C103.067%20315.232%20103.112%20313.112%20103.12%20311.095C103.134%20307.866%20103.046%20305.142%20102.798%20303.158C100.707%20304.679%2097.1349%20306.776%2092.0868%20307.642C89.2344%20308.131%2084.2975%20308.871%2079.0625%20308.872C73.9568%20308.872%2067.9124%20308.177%2063.2864%20305.273C58.4127%20302.212%2053.1071%20297.266%2052.4591%20290.573C51.9654%20285.471%2051.3929%20278.425%2051.7168%20271.276C52.0373%20264.206%2053.2454%20256.575%2056.6281%20250.551C59.0756%20246.194%2063.6974%20242.05%2068.7151%20238.592C73.0327%20235.617%2077.9436%20232.955%2082.6991%20230.921C82.6161%20230.84%2082.5258%20230.763%2082.4404%20230.677L82.3917%20230.629L82.3467%20230.58C80.3767%20228.469%2078.6592%20226.495%2077.3042%20224.769C75.9993%20223.106%2074.8602%20221.46%2074.2225%20220.049L74.0612%20219.696L73.975%20219.321C72.9485%20214.819%2072.8272%20207.159%2073.8363%20200.711C68.2795%20200.118%2059.3292%20199.585%2051.3381%20196.613C38.6617%20191.899%2023.4019%20184.217%2015.5982%20172.241C12.1192%20166.902%205.96444%20161.7%203.13634%20146.653C-0.987847%20124.709%20-1.3657%20110.231%203.93864%2098.9763C7.18272%2092.0939%2012.3771%2083.4694%2014.8672%2071.1133C17.4364%2058.3631%2017.8374%2049.451%2017.799%2043.2952C17.7784%2040.0096%2017.652%2037.9428%2017.6152%2035.707C17.5854%2033.89%2017.5945%2031.7141%2018.3426%2029.9185C20.3196%2025.175%2026.4433%2017.4893%2035.7495%2014.9409C40.081%2013.7549%2047.7926%2011.9934%2055.9832%2011.2069C64.0104%2010.4362%2073.2092%2010.5229%2080.0673%2013.61C81.2348%2014.1357%2082.1771%2014.9489%2082.8903%2015.672C83.6267%2016.4189%2084.3167%2017.2801%2084.941%2018.1052C86.3516%2019.9696%2087.2837%2021.4135%2088.6414%2023.0989C89.9113%2024.6752%2090.988%2025.6931%2091.9256%2026.1957C92.3889%2026.4439%2092.7915%2026.5575%2093.234%2026.5218C93.5602%2025.8614%2094.1713%2024.5638%2094.8348%2023.3089C96.3625%2020.4199%2098.7519%2016.5914%20102.82%2012.6803Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%280.400929%2C-0.916109%2C0.916109%2C0.400929%2C0.000%2C290.141%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22464.90%22%20height%3D%22438.03%22%20viewBox%3D%220%200%20464.90%20438.03%22%3E%3Cpath%20d%3D%22M102.82%2012.6803C110.148%205.63643%20117.746%20-0.691067%20130.556%200.0608923C137.589%200.474042%20144.372%201.48089%20148.544%208.40632C153.858%2017.2285%20159.402%2029.6635%20160.882%2049.8898C162.62%2049.9979%20164.401%2050.1448%20166.247%2050.3734C170.415%2050.8895%20174.768%2051.7688%20178.623%2052.8515L178.807%2052.904L178.986%2052.9715C184.372%2055.0822%20188.586%2057.1073%20191.64%2059.3224C194.755%2061.5831%20196.947%2064.2552%20197.751%2067.6716C198.149%2069.3654%20199.249%2073.3219%20197.616%2077.198C197.163%2078.2708%20196.406%2079.0173%20195.921%2079.4437C195.382%2079.9174%20194.779%2080.333%20194.249%2080.6734C193.782%2080.9729%20193.1%2081.3736%20192.472%2081.7419C192.54%2081.7842%20192.609%2081.8302%20192.678%2081.8731C193.876%2082.6124%20195.254%2083.448%20196.536%2084.3325C198.949%2085.9977%20202.003%2088.4587%20203.055%2092.1155C203.544%2093.8112%20203.576%2095.7034%20203.535%2097.218C203.512%2098.0747%20203.447%2099.1256%20203.389%20100.049C203.605%2099.9447%20203.829%2099.8387%20204.06%2099.7374C206.585%2098.6315%20209.942%2097.7927%20214.186%2098.4965C217.6%2099.0625%20221.715%20100.021%20225.419%20101.368C228.913%20102.639%20232.838%20104.532%20235.016%20107.385C236.153%20108.874%20236.868%20110.753%20237.371%20112.271C237.793%20113.546%20238.366%20115.585%20238.687%20116.619C238.82%20116.49%20238.953%20116.354%20239.092%20116.226C240.615%20114.817%20242.928%20113.11%20246.215%20112.683C252.705%20111.84%20264.043%20110.679%20274.966%20118.243C278.457%20120.66%20283.245%20124.159%20287.331%20127.983C289.373%20129.894%20291.321%20131.962%20292.857%20134.083C294.361%20136.159%20295.671%20138.56%20296.077%20141.116C296.518%20143.888%20295.707%20146.7%20294.893%20149.008C294.465%20150.22%20293.956%20151.494%20293.472%20152.723C292.977%20153.98%20292.488%20155.237%20292.04%20156.536C290.266%20161.68%20289.251%20167.166%20291.736%20173.407C293.501%20177.839%20297.215%20182.572%20301.375%20188.328C305.295%20193.752%20309.56%20200.048%20310.999%20206.788C313.056%20216.426%20319.319%20229.056%20315.501%20255.388C314.356%20263.287%20312.771%20271.391%20310.969%20278.118C310.069%20281.478%20309.095%20284.555%20308.078%20287.12C307.098%20289.591%20305.942%20291.93%20304.55%20293.534C302.689%20295.678%20300.383%20298.222%20297.712%20300.305C295.04%20302.389%20291.742%20304.22%20287.871%20304.59C285.405%20304.826%20282.774%20304.177%20280.631%20303.533C279.505%20303.195%20278.366%20302.809%20277.31%20302.45C276.229%20302.082%20275.234%20301.743%20274.288%20301.456C272.467%20300.903%20271.339%20300.724%20270.704%20300.744C270.393%20302.077%20270.229%20303.484%20269.95%20305.471C269.675%20307.43%20269.313%20309.726%20268.593%20312.396C267.14%20317.781%20264.315%20324.401%20258.171%20333.196C255.286%20337.324%20252.005%20341.842%20248.712%20345.283C247.064%20347.003%20245.287%20348.59%20243.433%20349.729C241.605%20350.851%20239.353%20351.749%20236.891%20351.529C233.755%20351.247%20230.975%20349.913%20228.628%20348.496C226.397%20347.149%20223.901%20345.293%20222.018%20344.031C218.03%20341.356%20215.214%20340.195%20212.256%20341.132C212.245%20341.165%20212.234%20341.2%20212.222%20341.237C212.157%20341.442%20212.089%20341.664%20212.005%20341.954C211.925%20342.227%20211.829%20342.559%20211.72%20342.898C211.502%20343.575%20211.196%20344.417%20210.722%20345.268C209.208%20347.987%20206.161%20352.254%20202.253%20356.226C198.387%20360.155%20193.298%20364.185%20187.643%20365.873C184.234%20366.889%20178.491%20368.354%20172.062%20368.759C165.673%20369.162%20158.237%20368.542%20151.716%20365.044C145.363%20361.636%20141.851%20358.283%20139.441%20355.581C138.077%20354.051%20137.623%20353.414%20136.813%20352.56C136.192%20351.904%20135.926%20351.78%20135.812%20351.739C135.534%20351.638%20134.812%20351.521%20133.319%20351.514C131.746%20351.506%20130.462%20351.588%20128.4%20351.607C124.951%20351.639%20120.131%20351.488%20116.399%20349.021C112.323%20346.324%20105.419%20341.877%20103.581%20334.204C102.948%20331.558%20102.874%20327.582%20102.907%20323.681C102.924%20321.651%20102.972%20319.497%20103.019%20317.371C103.067%20315.232%20103.112%20313.112%20103.12%20311.095C103.134%20307.866%20103.046%20305.142%20102.798%20303.158C100.707%20304.679%2097.1349%20306.776%2092.0868%20307.642C89.2344%20308.131%2084.2975%20308.871%2079.0625%20308.872C73.9568%20308.872%2067.9124%20308.177%2063.2864%20305.273C58.4127%20302.212%2053.1071%20297.266%2052.4591%20290.573C51.9654%20285.471%2051.3929%20278.425%2051.7168%20271.276C52.0373%20264.206%2053.2454%20256.575%2056.6281%20250.551C59.0756%20246.194%2063.6974%20242.05%2068.7151%20238.592C73.0327%20235.617%2077.9436%20232.955%2082.6991%20230.921C82.6161%20230.84%2082.5258%20230.763%2082.4404%20230.677L82.3917%20230.629L82.3467%20230.58C80.3767%20228.469%2078.6592%20226.495%2077.3042%20224.769C75.9993%20223.106%2074.8602%20221.46%2074.2225%20220.049L74.0612%20219.696L73.975%20219.321C72.9485%20214.819%2072.8272%20207.159%2073.8363%20200.711C68.2795%20200.118%2059.3292%20199.585%2051.3381%20196.613C38.6617%20191.899%2023.4019%20184.217%2015.5982%20172.241C12.1192%20166.902%205.96444%20161.7%203.13634%20146.653C-0.987847%20124.709%20-1.3657%20110.231%203.93864%2098.9763C7.18272%2092.0939%2012.3771%2083.4694%2014.8672%2071.1133C17.4364%2058.3631%2017.8374%2049.451%2017.799%2043.2952C17.7784%2040.0096%2017.652%2037.9428%2017.6152%2035.707C17.5854%2033.89%2017.5945%2031.7141%2018.3426%2029.9185C20.3196%2025.175%2026.4433%2017.4893%2035.7495%2014.9409C40.081%2013.7549%2047.7926%2011.9934%2055.9832%2011.2069C64.0104%2010.4362%2073.2092%2010.5229%2080.0673%2013.61C81.2348%2014.1357%2082.1771%2014.9489%2082.8903%2015.672C83.6267%2016.4189%2084.3167%2017.2801%2084.941%2018.1052C86.3516%2019.9696%2087.2837%2021.4135%2088.6414%2023.0989C89.9113%2024.6752%2090.988%2025.6931%2091.9256%2026.1957C92.3889%2026.4439%2092.7915%2026.5575%2093.234%2026.5218C93.5602%2025.8614%2094.1713%2024.5638%2094.8348%2023.3089C96.3625%2020.4199%2098.7519%2016.5914%20102.82%2012.6803Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%280.400929%2C-0.916109%2C0.916109%2C0.400929%2C0.000%2C290.141%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part12 .pback { position:absolute; inset:0; background:#DBF263; opacity:1; }
.part12 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(-0.0,1.0,-1.0,-0.0,476.0,-83.0) scale(0.7143); transform-origin:0 0; }
.part12 .pa0 { position:absolute; left:26.0px; top:77.0px;
  width:391.0px; height:285.0px; mix-blend-mode:color-dodge; opacity:1; }

.part14 { position:relative; width:212.37px; height:485.31px;
  -webkit-mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22212.37%22%20height%3D%22485.31%22%20viewBox%3D%220%200%20212.37%20485.31%22%3E%3Cpath%20d%3D%22M77.1846%20356.781C75.609%20334.723%2073.2461%20245.828%2085.0631%20227.447C-54.794%20229.503%20-0.0127239%2039.9933%2090.9938%203.59082C144.29%20-17.7274%20251.945%2062.0959%20197.322%2079.7372C163.841%2090.5502%20137.45%2078.5555%20126.421%20136.851C112.635%20209.721%20165.81%20172.302%20163.841%20251.08C162.265%20314.103%20192.34%20417.342%20184.576%20467.809C182.135%20483.674%20155.769%20489.819%20141.873%20481.785C99.8578%20457.495%2078.7602%20378.839%2077.1846%20356.781Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E'); mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22212.37%22%20height%3D%22485.31%22%20viewBox%3D%220%200%20212.37%20485.31%22%3E%3Cpath%20d%3D%22M77.1846%20356.781C75.609%20334.723%2073.2461%20245.828%2085.0631%20227.447C-54.794%20229.503%20-0.0127239%2039.9933%2090.9938%203.59082C144.29%20-17.7274%20251.945%2062.0959%20197.322%2079.7372C163.841%2090.5502%20137.45%2078.5555%20126.421%20136.851C112.635%20209.721%20165.81%20172.302%20163.841%20251.08C162.265%20314.103%20192.34%20417.342%20184.576%20467.809C182.135%20483.674%20155.769%20489.819%20141.873%20481.785C99.8578%20457.495%2078.7602%20378.839%2077.1846%20356.781Z%22%20fill%3D%22%23000%22%20transform%3D%22matrix%281.000000%2C0.000000%2C0.000000%2C1.000000%2C0.000%2C0.000%29%22/%3E%3C/svg%3E');
  -webkit-mask-size:100% 100%; mask-size:100% 100%; mask-repeat:no-repeat; isolation:isolate; }
.part14 .pback { position:absolute; inset:0; background:#C51162; opacity:1; }
.part14 .pgrad { position:absolute; left:0; top:0;
  transform:matrix(1.0,0.0,0.0,1.0,-134.33,-12.8) scale(0.7143); transform-origin:0 0; }

/* The assemble movement is two plain translate()s transitioned on .hpart (below),
   NOT a lerp through an inherited --assembly custom property. That property, being
   inherited from :root, dirtied the computed style of the whole document every
   frame of the 1.5s, and a transform built by calc() from a custom property can
   never reach the compositor — so the movement ran on the main thread. */
/* the design clips at the BG band (1920x2240, clipsContent=true), NOT at the
   hero fold — the assembled stem overhangs 79px into the section below.
   overflow:clip + clip-margin paints that overhang without adding scrollbars;
   browsers without clip-margin fall back to clipping at the fold. */
.hero-viewport { position:relative; height:59.1667vw; /* 1136/1920 — width-responsive only */
  overflow:clip; overflow-clip-margin:57.5vw; /* 1104/1920 band overhang */ }
/* When no speaker gallery renders (showProgram off / zero speakers), the ink
   .b-what block sits right below the hero and paints over the stem's 79px
   overhang (it is positioned + z-index:18) — cropping the brain at the fold.
   The gap lives on .b-what.inv itself: PHP sets `inv` exactly in the
   no-gallery case. A margin on the block, not a sibling selector from
   .hero-spk, on purpose: until 2026-07 a stray </div> after the hero in
   page-home.php ejected .b-what from section.home-alt during parsing, so
   +/:has(+) silently never matched (fixed since) — this form survives any
   such markup regression. The margin strip shows the hero BG band +
   grain + stem, which keep painting past the fold through .hero-viewport's
   overflow-clip-margin; browsers without clip-margin (Safari) clip at the
   fold as they always have and show a plain whitespace band instead. */
@media (min-width:901px) {
  .hblock.b-what.inv { margin-top:calc(79 / 1920 * 100vw + 40px); }
}

.hero-bg { position:absolute; inset:0;
  background:url(../images/hero26/bg-base.svg) top center/100% auto; pointer-events:none; }
/* desktop: the BG band artwork (1920x2240) runs past the hero fold, behind the
   speakers-section title runway, ending at the photo-strip top (design y=1487
   = fold + 431: 260 runway + 111 title + 60 gap). The overhang paints through
   the viewport's overflow-clip-margin (1104px). 700px (not 431) so the edge
   lands INSIDE the always-taller-than-that photo strip — the opaque photos
   (.spks is positioned, later in tree) cover it, and a wrapped/taller title
   can't open a white gap above the photos. hero-bg is positioned, so it paints
   over static content of later sections — .spks26 .bl-title is lifted to
   position:relative to stay above it (see spks section). */
@media (min-width:901px) {
  .hero-bg { bottom:auto; height:95.625vw; /* (1136+700)/1920 — into the photo strip */ }
}
/* hero-squiggles.svg = the Figma 'Pattern' frame (42:1664), squiggles only:
   1920x1494, stroke #0E1819 @10%, no bg gradients and no baked noise. */
.hero-pattern { position:absolute; left:0; top:0; width:1920px; height:1494px; pointer-events:none; }
/* the Pattern is a child of the BG band in the design (full 1920-wide, content
   to y=1494 ~ the photo-strip top), NOT of the brain group — anchor it to the
   page origin at band scale (vw/1920), cancelling the stage's fit-height
   transform. Vars from js/hero26.js fit(); identity fallback keeps the old
   stage-scaled placement if JS hasn't run. Stays above the brain parts, below
   nav/content (stage child order). */
@media (min-width:901px) {
  .hero-pattern { transform:translate(var(--pat-x,0px),var(--pat-y,0px)) scale(var(--pat-k,1));
    transform-origin:0 0; }
}
.hero-stage { position:absolute; left:50%; top:50%; width:1920px; height:1136px;
  transform:translate(-50%,-50%) scale(var(--stage-scale,1)); }
/* --scatter-dx pushes the whole scattered cluster left so it clears the
   .hero-content text box (stage x 1049-1760): part 9 is the deepest intruder
   (scattered x 976-1395) and needs 346px. The term is weighted (1 - assembly)
   so it decays to zero as the brain assembles — the assembled --ax/--ay stay
   exactly on the design. Left-edge cropping is intended (user call): at this
   shift part 10 is left with a ~7px sliver and part 12 with ~100px. Tune the
   single value below if the left edge needs to give any of them back.
   This 346px is the DESKTOP value and is about clearing text; mobile sets its
   own pair below, for containment, and has no .hero-content beside the brain
   to clear (the copy flows below it in .m-hero-content). */
:root { --scatter-dx:0px; --scatter-dy:0px; }
@media (min-width:901px) { :root { --scatter-dx:346px; } }
/* Mobile re-centres the scatter instead of clearing text with it. The authored
   scatter is biased right and up — its bbox centre is stage (810.5,544.5)
   against the assembled (662.5,645). Unshifted, fit() would have to scale the
   brain down to fit a cluster that is off-centre on both axes, and the
   assembled brain would then sit visibly left of the band's middle. These two
   put the scattered cluster concentric with the assembled one, which makes the
   scattered bbox strictly CONTAIN the assembled one — so fit() sizes the band
   to one box and both states are contained. Subtracted, as dx is on desktop:
   dx pulls left, and a negative dy pushes down. */
@media (max-width:900px) { :root { --scatter-dx:148px; --scatter-dy:-100.5px; } }
.hpart { position:absolute; left:0; top:0; width:0; height:0;
  transform: translate(calc(var(--sx) - var(--scatter-dx)), calc(var(--sy) - var(--scatter-dy)));
  transition: transform 1.5s cubic-bezier(.25,.8,.3,1); }
:root.assembled .hpart { transform: translate(var(--ax), var(--ay)); }
/* ?asm test hook (js/hero26.js): land assembled with no animation */
:root.no-anim .hpart { transition:none; }
/* pin parts at the wrapper origin — static flow would start at the RIGHT
   edge under dir=rtl and shift every part left by its own width */
.hpart .part { position:absolute; left:0; top:0; cursor:pointer; }
/* the parts are the hero's one control: a tap toggles scatter/assemble
   (js/hero26.js). Hit-testing stops at .part's own box — the mask clips paint
   but NOT pointer events, and .pgrad's 700x700 canvas (plus the .pa* art) hangs
   far outside the mask, which would make the brain clickable from way off it. */
.hpart .part > * { pointer-events:none; }
  /* part 14 */ .hpart14 { --ax:613.3px; --ay:729.8px; --sx:633.3px; --sy:709.8px; }
  /* part 13 */ .hpart13 { --ax:398.0px; --ay:606.0px; --sx:308.0px; --sy:806.0px; }
  /* part 10 */ .hpart10 { --ax:197.0px; --ay:276.0px; --sx:264.0px; --sy:306.0px; }
  /* part 11 */ .hpart11 { --ax:653.4px; --ay:111.9px; --sx:753.4px; --sy:-28.1px; }
  /* part 12 */ .hpart12 { --ax:271.0px; --ay:124.0px; --sx:168.0px; --sy:24.0px; }
  /* part  4 */ .hpart4 { --ax:415.1px; --ay:74.9px; --sx:365.1px; --sy:-115.1px; }
  /* part  9 */ .hpart9 { --ax:676.0px; --ay:156.0px; --sx:976.0px; --sy:44.0px; }
  /* part  8 */ .hpart8 { --ax:983.2px; --ay:410.2px; --sx:984.2px; --sy:392.2px; }
  /* part  7 */ .hpart7 { --ax:609.9px; --ay:568.0px; --sx:959.9px; --sy:854.0px; }
  /* part  6 */ .hpart6 { --ax:462.0px; --ay:361.0px; --sx:602.0px; --sy:211.0px; }
  /* part  5 */ .hpart5 { --ax:339.0px; --ay:311.5px; --sx:359.0px; --sy:351.5px; }
  /* part  3 */ .hpart3 { --ax:420.0px; --ay:402.0px; --sx:430.0px; --sy:182.0px; }
  /* part  2 */ .hpart2 { --ax:519.4px; --ay:364.4px; --sx:639.4px; --sy:404.4px; }
  /* part  1 */ .hpart1 { --ax:628.0px; --ay:473.0px; --sx:878.0px; --sy:643.0px; }
/* The hero's single grain. bg-base.svg is now the clean export (radial washes
   only — no baked NOISE, no squiggles; the squiggles stay in .hero-pattern so
   they keep painting ABOVE the brain parts, as in Figma).
   It previously carried the Figma NOISE baked in (filter0_n_8_1246 @ .25) while
   this div added a second copy on top; the double only stayed hidden because
   this div's old recipe (constant grey + overlay) was a mathematical no-op. */
.hero-grain { position:absolute; inset:0; pointer-events:none;
  background-image:var(--figma-noise);
  opacity: var(--noise-opacity); }
/* The grain belongs to the BG BAND, not to the hero fold — in the design the
   NOISE is an effect ON Hero/BG (42:1660, y 0..2240), the same node that paints
   the gradient. So it gets the band's box, not inset:0: at inset:0 it stopped at
   the fold and left the speakers runway (band gradient, no grain) bare.
   Same 95.625vw as .hero-bg, so band and grain end on the same line, inside the
   photo strip. The photos are NOT grained, which is the design: they live in the
   `spks` frame (42:1737) — a SIBLING of Hero, outside BG's effect — and being
   positioned + later in the tree they paint over the overhang.
   .spks26 .bl-title (z-index:1) likewise stays above this. */
@media (min-width:901px) {
  .hero-grain { bottom:auto; height:95.625vw; }
}
/* ---- nav (Figma: hero/nav at 160,47 1600x52; sits above Pattern) ---- */
.hero-nav { position:absolute; left:160px; top:47px; width:1600px; height:52px; }
.hero-nav .nav-date { position:absolute; left:0; top:-5px; font-size:42px; line-height:1; font-weight:400; }
.hero-nav .nav-venue { position:absolute; left:0; top:41px; font-size:15px; line-height:1; font-weight:700; }
/* sales promo — uxiTheme::printSalesPromo() output placed in the nav (Figma "nav left":
   divider x228, four 43px columns at x259 + 55px pitch, caption x479). The remind CTA
   inside it stays hidden (all.css .h-promo.dt .cta { display:none }). */
.h-hero .hero-nav .h-promo { position:absolute; left:228px; top:-7px; width:372px; height:52px;
  padding:0; display:block; color:#0E1819; }
.h-hero .hero-nav .h-promo::after { content:none; } /* all.css radial vignette */
.h-hero .hero-nav .h-promo::before { content:''; position:absolute; left:0; top:0; width:2px; height:52px;
  background: #DBF263; } /* nav divider (Figma Vector 24) */
.h-hero .hero-nav .h-promo .time-box { display:flex; flex:none; line-height:1; justify-content: flex-start; gap:12px; padding-left:20px; }
.h-hero .hero-nav .h-promo .num-box { top:0; width:43px; text-align:center; }
.h-hero .hero-nav .h-promo .num-box .num { font-size:29px; line-height:1; margin-top:6px; }
.h-hero .hero-nav .h-promo .num-box .n-label { font-size:16px; line-height:1; margin-top:9px; }
.h-hero .hero-nav .h-promo.dt .promise { position:absolute; left:251px; top:7px; padding:0; display:block;
  font-size:16px; line-height:1.3; }
.h-hero .hero-nav .h-promo.tkt .promise { padding:0; font-size:16px; line-height:1.3; }
/* ticket-count stage variant: inline row (no Figma mock; theme-style) */
.h-hero .hero-nav .h-promo.tkt { display:flex; align-items:center; justify-content:flex-start;
  width:auto; padding-left:31px; grid-column-gap:8px; font-size:16px; }
.h-hero .hero-nav .h-promo.tkt .promise, .h-hero .hero-nav .h-promo.tkt .dln-box-int { white-space:nowrap; }
.h-hero .hero-nav .h-promo.tkt .num, .h-hero .hero-nav .h-promo.tkt .per { font-size:29px; } /* nav numeral scale */
.hero-nav .logo { position:absolute; left:1241px; top:-7px; }
.hero-nav .logo img { display:block; width:314px; height:66px; }
/* Figma burger (Component 18): two thin 25x2 bars, 14 tall — the canonical
   2026 hamburger; the site header (.mh-handle a) mirrors it in white */
.hero-nav .burger { position:absolute; left:1575px; top:19px; width:25px; height:14px; display:block; }
.hero-nav .burger::before, .hero-nav .burger::after { content:''; position:absolute; left:0; width:25px; height:2px; background:#0E1819; }
.hero-nav .burger::before { top:0; } .hero-nav .burger::after { bottom:0; }
/* ---- content (Figma: hero/content at 1049,322 711x491) ---- */
.hero-content { position:absolute; left:1049px; top:250px; width:711px; height:491px;
  text-align:right; color:#0E1819; }
.hero-content h1, .hero-content .promo-title { margin:0 0 40px;
  font-size:70px; line-height:75px; font-weight:400; }
.hero-content .hero-desc { width:598px; margin:0;
  font-size:20px; line-height:30px; }
.hero-content .hero-desc p { margin:0; font:inherit; }
/* CTA flows after the data-driven copy (design gap p->cta = 40px); the
   design y=429 is reproduced exactly at design-length content */
/* .h-hero-scoped to outrank all.css:904 `.hero-content .cta{margin-top:102px}` */
.h-hero .hero-content .cta { position:relative; width:390px; height:62px; margin:40px 0 0; }
.h-hero .cta-but a { color:inherit; text-decoration:none; display:flex; align-items:center; justify-content:center; height:100%; }
.h-hero .cta-but.cta-main { position:absolute; right:0; top:0; width:232px; height:62px;
  background:var(--lime); border-radius:800px; font-size:29px; line-height:37px;
  transform-origin:center center; transition:transform .3s ease, background .3s ease; }
/* the hero pill sits on the wrapper div (the <a> is stripped bare below), so the
   canonical `.cta-but.cta-main a:hover` in all.css can't reach it — same fill and
   lift, re-hung on the div. Covers the mobile .m-hero-content pill too. */
.h-hero .cta-but.cta-main:hover { background:var(--cta-hover-grad); transform:scale(1.04); }
/* the 158x62 box owns the row placement so the link itself can shrink-wrap — a
   border-bottom on the box would sit ~15px under the text (cf. .b-audience.sec3,
   whose secondary link this mirrors). Centring the flex item does the rest. */
.h-hero .cta-but.cta-sec { position:absolute; right:232px; top:0; width:158px; height:62px; font-size:20px;
  display:flex; align-items:center; justify-content:center; }
/* a 2px rule instead of text-decoration, so it can go lime on hover like the
   other secondary links. This rule also absorbs the all.css neutralize that the
   strip further down applies to the main CTA — kept here so the border and its
   3px gap aren't overwritten by that later `border:0; padding:0`. */
.h-hero .cta-but.cta-sec a { width:auto; height:auto; background:transparent;
  font-family:inherit; color:inherit; font-weight:400; text-decoration:none;
  border:0; border-bottom:2px solid var(--ink); border-radius:0;
  padding:0 0 3px; transition:border-color .2s ease; }
.h-hero .cta-but.cta-sec a:hover { border-bottom-color:var(--lime); }

/* ---- scroll-down affordance ----------------------------------------------
   Fixed to the fold, not to the hero: .hero-viewport is 59.1667vw (~1136px at
   1920), so the hero's own bottom edge sits well below the fold on desktop.
   z-index 120 clears `.home #header` (100) but stays under an open
   `.menu .menu-holder` (500). One-shot: uxilive-home.js adds .gone on the
   first click or scroll and never takes it back. ---- */
.hero-scrolldown { position:fixed; left:50%; bottom:24px; z-index:120;
  width:56px; height:56px; padding:0; border:0; border-radius:50%;
  background:var(--ink); cursor:pointer; -webkit-appearance:none; appearance:none;
  transform:translateX(-50%); animation:sd-bounce 1.6s ease-in-out infinite;
  transition:opacity .3s ease, visibility .3s ease; }
/* The chevron is the mask's shape, not its colour — a mask samples alpha, so the
   stroke below only has to be opaque (#fff by convention; it is NOT a colour
   choice). The visible fill is the lime background this masks. */
.hero-scrolldown::before { content:''; position:absolute; inset:0; background:var(--lime);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E") no-repeat center / 24px 24px;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E") no-repeat center / 24px 24px; }
/* hover swaps the two brand tokens rather than tinting the ink — the bounce owns
   `transform`, so the main CTA's scale-on-hover isn't available here */
.hero-scrolldown:hover { background:var(--lime); }
.hero-scrolldown:hover::before { background:var(--ink); }
.hero-scrolldown.gone { opacity:0; visibility:hidden; pointer-events:none; animation:none; }
/* the base transform is re-declared in the keyframes: an animated transform
   replaces it outright while running */
@keyframes sd-bounce {
  0%, 100% { transform:translate(-50%, 0); }
  50%      { transform:translate(-50%, -9px); }
}

/* ---- mobile: hero banner + flowed content (no mobile design in file; theme-style) ---- */
.h-hero .m-head, .h-hero .m-hero-content { display:none; }
@media (max-width:900px) {
  .h-hero .hero-nav, .h-hero .hero-content { display:none; }
  /* `.home #header` (absolute, z-index:100 — all.css) covers this whole strip and
     won every burger tap. It cannot be out-stacked from here: #main is itself a
     stacking context (all.css `position:relative; z-index:1`), so any z-index on
     a hero descendant is scoped inside it and the whole subtree stays at layer 1,
     under the header. Nor can #header be lowered — .menu-holder is its child and
     needs z-index:500 when open. So the header is made click-through instead,
     below. */
  .h-hero .m-head { display:flex; flex-direction:row-reverse; align-items:center; justify-content:space-between;
    padding:14px 20px; }
  .h-hero .m-head img { width:190px; height:40px; display:block; }
  /* 25x14 is the drawn icon; the padding grows the tap target to 45x44 and the
     matching negative margin keeps the bars where the design puts them. The
     bars are offset by the padding so their spacing stays exactly 14px. */
  .h-hero .m-head .burger { position:relative; width:25px; height:14px; display:block;
    padding:15px 10px; margin:-15px -10px; }
  .h-hero .m-head .burger::before, .m-head .burger::after { content:''; position:absolute; left:10px; width:25px; height:2px; background:#0E1819; }
  .h-hero .m-head .burger::before { top:15px; } .m-head .burger::after { bottom:15px; }
  /* Before the bar arrives, #header has nothing on screen here: .mini-header is
     already visibility:hidden + pointer-events:none and translated off (above),
     and .menu-holder is parked at right:-100vw. Only its box survives, over
     .m-head. Drop it out of hit-testing so the burger underneath is reachable.
     Both exclusions matter: .navbar-fixed-top is the real bar (must be
     clickable), and .menu is the open overlay (.menu-holder is inside #header,
     so leaving this on would make the menu itself click-through). */
  body.homepage:not(.navbar-fixed-top):not(.menu) #header { pointer-events:none; }
  /* A fixed band, not a share of the fold: the brain is a banner here, and a
     vh-derived height re-scaled the brain on every mobile URL-bar show/hide.
     fit() reads this value — keep it the single source of truth and tune it
     here alone. */
  :root { --hero-h:435px; }
  /* overflow-clip-margin is a DESKTOP affordance (see .hero-viewport above): it
     lets the 1920x2240 BG band paint past the fold behind the speakers runway.
     There is no band overhang here — the surface is painted on .h-hero instead
     (below) — so the margin has nothing to paint and only lets the oversized
     stage bleed over .m-head and .m-hero-content. Clip to the band. */
  .hero-viewport { height:var(--hero-h); overflow-clip-margin:0; }
  /* ---- the hero surface belongs to the BLOCK here, not to the brain band ----
     On desktop .hero-nav and .hero-content live INSIDE .hero-viewport, so a
     surface painted there covers them. On mobile .m-head and .m-hero-content
     are SIBLINGS of the band, so the band-scoped surface stopped at the brain
     and left the header and the copy on the flat #cdd8ee fallback. Paint it on
     .h-hero and one surface runs behind all three.
     `cover`, not the desktop `100% auto`: at 100% width the artwork's own
     1920x2240 aspect is ~as tall as the block on a wide phone, but nowhere near
     it at 390 — the wash would have ended partway down the copy and dropped to
     the flat colour. `cover` keeps the artwork's aspect (so the brain sits on
     the same vivid part of the fold it always has, rather than on a stretched
     slice of it) and guarantees the surface reaches the bottom at every width;
     the cost is a horizontal crop to the middle of the wash on narrow phones,
     which is where its mass already is. The block runs long enough to show the
     runway rows below the fold — as on desktop, where the band overhangs behind
     the speakers runway, that is one continuous artwork, not a seam. */
  .hblock.h-hero { position:relative;
    background:#cdd8ee url(../images/hero26/bg-base.svg) top center/cover no-repeat; }
  /* the band's own surface would now paint the same artwork at a different
     scale on top of the block's, seaming at the band edges — one surface only.
     The grain moves with it: at --noise-opacity .12 a band-only grain reads as
     a banding artefact against the ungrained header and copy. */
  .hero-bg, .hero-grain { display:none; }
  /* last child of .h-hero and positioned, so it paints over the brain and the
     copy exactly as .hero-grain does over the stage and .hero-content on
     desktop — the design's NOISE is an effect ON the BG, above its content. */
  .hblock.h-hero::after { content:''; position:absolute; inset:0; pointer-events:none;
    background-image:var(--figma-noise); opacity:var(--noise-opacity); }
  .hero-stage { left:0; top:0; transform-origin:0 0;
    transform:translate(var(--stage-tx,0px),var(--stage-ty,0px)) scale(var(--stage-scale,1)); }
  .h-hero .m-hero-content { display:block; padding:8px 24px 40px; text-align:right; }
  .h-hero .m-hero-content h1, .h-hero .m-hero-content h2 { font-size:clamp(30px,8.5vw,40px); line-height:1.1; font-weight:400; margin:0 0 16px; }
  .h-hero .m-hero-content .hero-desc { font-size:17px; line-height:1.55; margin:0 0 24px; }
  .h-hero .m-hero-content .hero-desc p { margin:0 0 12px; font:inherit; }
  .h-hero .m-hero-content .cta { display:flex; flex-direction:row; align-items:center; gap:8px; justify-content: center;}
  .h-hero .m-hero-content .cta-but { position:static; }
  .h-hero .m-hero-content .cta-but.cta-main {
      width: auto;
      height: 2.5em;
      font-size: 1.6em;
      padding-left: 1em;
      padding-right: 1em;
  }
  .h-hero .cta-but.cta-sec a {
    font-size:0.8em;
  }
  .h-hero .m-hero-content .cta-but.cta-sec { width:auto; height:56px; padding:0 16px; }
  /* the sales promo (printSalesPromo) moves below the hero content on mobile —
     hero26.js reparents it out of the hidden .hero-nav. position/top/height/color/
     justify reset the legacy bar styling (all.css:1406 .h-promo{position:absolute;
     top:0;color:#fff}, responsive.css .h-promo height/justify overrides). */
  .h-hero .m-hero-content .h-promo { display:flex; flex-direction:column; align-items:center; gap:10px;
    position:static; top:auto; height:auto; z-index:auto; color:inherit; justify-content:flex-start;
    margin-top:28px; padding:14px 18px; background:rgba(255,255,255,.55); border-radius:16px; width:calc(100% - 36px); margin-right:0; margin-left:auto; margin-bottom:20px;}
  .h-hero .m-hero-content .h-promo::after { content:none; }
  .h-hero .m-hero-content .h-promo .cta { display:none; } /* remind link — not used in 2026 */
  .h-hero .m-hero-content .h-promo .promise { padding:0; display:block; font-size:15px; line-height:1.3; white-space:nowrap; }
  .h-hero .m-hero-content .h-promo .time-box { display:flex; flex-direction:row-reverse; flex:none; gap:12px; line-height:1; }
  .h-hero .m-hero-content .h-promo .num-box { text-align:center; min-width:38px; }
  .h-hero .m-hero-content .h-promo .num-box .num { display:block; font-size:24px; line-height:1; }
  .h-hero .m-hero-content .h-promo .num-box .n-label { display:block; font-size:13px; line-height:1; margin-top:5px; }
}
@media (prefers-reduced-motion: reduce) {
  .hpart { transition:none; }
  /* default to the assembled geometry, so these users never get the scatter
     animation pushed at them. But a tap on a part is asked-for motion: honour the
     toggle (instantly, per transition:none) instead of leaving the control dead.
     Specificity: .hpart (0,1,0) < :root:not(.assembled) .hpart (0,3,0) <
     :root.touched:not(.assembled) .hpart (0,4,0); the transition:none ties the
     base rule and wins on source order — this block stays after the .hpart rule. */
  :root:not(.assembled) .hpart { transform: translate(var(--ax), var(--ay)); }
  :root.touched:not(.assembled) .hpart {
    transform: translate(calc(var(--sx) - var(--scatter-dx)), var(--sy)); }
  .gblob, .gc { animation-play-state:paused !important; }
  /* the arrow still reads as a button standing still — only the bounce goes */
  .hero-scrolldown { animation:none; }
}

/* --- neutralize legacy all.css / responsive.css rules on the new hero --- */
.hblock.h-hero, .hblock.h-hero.hblock { aspect-ratio:auto; height:auto; min-height:0;
  padding:0; margin:0; transition:none; display:block; }
.hblock.h-hero::before, .hblock.h-hero::after { content:none; }
.hero-spk { background:#cdd8ee; }
@media (min-width:901px) { .h-hero .hero-content { display:block; } }
/* (all.css's .hero-content .cta margin-top is neutralized by the design rule
   in the hero-content section above, which now carries the same specificity) */
.h-hero .hero-content .cta .cta-but-row1::after { content:none; }
/* (.cta-but.cta-sec a used to be in this list; it now carries the same
   neutralize inline with its own design rule above, because that rule needs a
   border-bottom and a padding this one would flatten) */
.h-hero .cta-but.cta-main a, .h-hero .m-hero-content .cta-but.cta-main a {
  background:transparent; border:0; font-family:inherit;
  color:inherit; font-weight:400; padding:0; }
/* all.css's `.cta-but.cta-main a:hover` still matches this bare <a>; its scale
   would nest inside the wrapper's and compound to ~1.08. The wrapper owns the
   hover here, so the <a> must not transform. */
.h-hero .cta-but.cta-main a:hover { transform:none; }
.h-hero .cta-but.cta-sec a::before, .h-hero .cta-but.cta-sec a::after { content:none; }
/* leonprod Hebrew glyphs sit low in their em box: flex-centering leaves the
   label below the pill's middle. Lift the label span only. */
.h-hero .cta-but.cta-main .main { position:relative; top:-3px; }
/* the hero nav replaces the theme mini-header at the top of the homepage;
   the mini-header returns as the fixed navbar on scroll (js: .navbar-fixed-top) */
body.homepage:not(.navbar-fixed-top) .mini-header { visibility:hidden; pointer-events:none; }


/* ============================================================================
   Every section preview harness ran under a global `* { box-sizing:border-box }`
   reset that the theme (all.css) does NOT have — the legacy theme is content-box
   everywhere. Rules below that pair width with padding (e.g. .b-orgs .holder)
   need it, so scope the reset to the 2026 section roots. Hero excluded:
   prep/hero.html was built without the reset.
   ============================================================================ */
.b-sp-gallery.spks26, .b-sp-gallery.spks26 *, .b-sp-gallery.spks26 *::before, .b-sp-gallery.spks26 *::after,
.b-what, .b-what *, .b-what *::before, .b-what *::after,
.b-audience.sec3, .b-audience.sec3 *, .b-audience.sec3 *::before, .b-audience.sec3 *::after,
.b-video, .b-video *, .b-video *::before, .b-video *::after,
.b-orgs, .b-orgs *, .b-orgs *::before, .b-orgs *::after,
.b-testimons, .b-testimons *, .b-testimons *::before, .b-testimons *::after,
.b-workshops, .b-workshops *, .b-workshops *::before, .b-workshops *::after,
.b-cta, .b-cta *, .b-cta *::before, .b-cta *::after,
.b-code, .b-code *, .b-code *::before, .b-code *::after {
    box-sizing: border-box;
}


/* ================= SECTION: spks (prep/sections/spks.css) ================= */
/* ============================================================================
   COM.PLEX 2026 homepage — part "spks" (speakers strip under the hero)
   Figma: figma-v2-raw.json > '1' > 'spks' (node 42:1737), section-relative.

   Namespaced under the block root class combo .b-sp-gallery.spks26 —
   OVERRIDES the legacy block styles (all.css:1847-2246, responsive.css:
   2181-2383, 3726-3770) without editing them. Load AFTER all.css/responsive.css.
   All selectors here are >= 0,3,0 specificity so they beat the legacy
   0,2,0 rules regardless of order; mobile values are re-asserted inside
   the media query because of that.

   Image urls are theme-relative (../images/...) assuming this file ships
   in the theme css/ dir next to all.css; spks-preview.html rewrites them
   to assets/spks/ copies.

   Kept untouched on purpose (JS/hover/carousel mechanics):
   .spks flex row, .item flex sizing, .spk-photo grayscale cover,
   .hoverized (z10) + .spk-video-overlay, .gal-nav (z50) mobile arrows.
   ============================================================================ */

/* ---- block root: was .hblock.inv black — now transparent over the hero BG
       gradient continuation (hero-owned, runs to y=2240) / white page ------ */
.hblock.b-sp-gallery.spks26 {
    background: transparent;
    padding-top: 260px;                 /* Figma: spks frame padding-top 260 below hero bottom (y=1056) */
}

/* The design's `spks` frame starts at y=1056 — the HERO frame's height (42:1659).
   The fold here renders 1136 tall instead, because .hero-viewport is sized to
   the BG band's bg1 (42:1662, h=1136), which in the design overshoots the hero
   frame and runs on behind this section. So everything below started 80 design-px
   low: title at design y≈1398 instead of its 1316, photo strip at ≈1570 instead
   of 1487 — and that is the whole reason the squiggles "ended a bit above" the
   photos. .hero-pattern is right (1494 tall, ending 7px INTO the strip, exactly
   as Figma clips it at 42:1664); the strip was the thing out of place.
   Pull the section back onto its design origin. -80 expressed against the same
   vw scale the fold uses, so the two track at every width. Nothing is hidden by
   the overlap: this section is transparent over a band that paints continuously
   through it, so there is no seam to expose. Fixing the fold height itself would
   re-centre .hero-stage and move the brain 40px — this is the surgical half. */
@media (min-width:901px) {
    .hblock.b-sp-gallery.spks26 {
        margin-top: calc(-80 / 1920 * 100vw);
    }
}

/* ---- header: Frame 1000000851 (160,1316) 1600x111, centered --------------
   position:relative lifts the title into the positioned paint phase: the
   hero's extended BG band + Pattern (positioned, earlier in tree) continue
   behind this header — a static title would be painted over by them. */
.hblock.b-sp-gallery.spks26 .bl-title {
    position: relative;
    z-index: 1;
    font-family: 'leonprod', sans-serif;   /* was anomalia serif */
    color: #0E1819;                        /* was #fff on .inv */
    width: min(1600px, calc(100% - 40px)); /* 1600px box = 160px side margins @1920 */
    max-width: 1600px;
    margin: 0 auto;
    padding: 0 0 60px;                     /* 60 = Figma itemSpacing header->strip (was 150/60) */
    text-align: center;
}

/* H2 — node 42:1739: leonprod 400, 70/80, center, #0E1819 */
.b-sp-gallery.spks26 .bl-title h2 {
    font-weight: 400;
    font-size: 70px;
    line-height: 80px;
    color: #0E1819;
    margin: 0;
}

/* subtitle — node 42:1740: leonprod 400, 29/36.95, center, #0E1819 */
.b-sp-gallery.spks26 .bl-title h3 {
    font-weight: 400;
    font-size: 29px;
    line-height: 1.274;                    /* 36.946px intrinsic */
    color: #0E1819;
    margin: 30px 0 0;                      /* ~= Figma 40px cap-to-cap gap (leadingTrim CAP_HEIGHT) */
}

/* exact cap-height trimming where supported (both nodes have leadingTrim) */
@supports (text-box: trim-both cap alphabetic) {
    .b-sp-gallery.spks26 .bl-title h2,
    .b-sp-gallery.spks26 .bl-title h3 {
        text-box: trim-both cap alphabetic;
    }
    .b-sp-gallery.spks26 .bl-title h3 {
        margin-top: 40px;                  /* true Figma gap once cap-trimmed */
    }
}

/* ---- strip: node 42:1741 (0,1487) 1920x954 full-bleed -------------------- */
.b-sp-gallery.spks26 .spks {
    position: relative;                    /* anchors the ::after tint */
    height: 49.6875vw;                     /* 954/1920 (was 53.125vw) */
    max-height: 954px;                     /* design height @1920 (was 90vh) */
    /* background:#000 inherited from all.css — fully covered by the 5 photos */
}

/* #9EC5FF @20%, blend mode COLOR — tint layer ON TOP of the photo strip.
   z-order: photos z1 < tint z2 < .hoverized z10 < .gal-nav z50 */
.b-sp-gallery.spks26 .spks::after {
    content: "";
    position: absolute;
    inset: 0;
    background: #9EC5FF;
    opacity: 0.2;
    mix-blend-mode: color;
    pointer-events: none;
    z-index: 2;
}

/* ---- "לתוכנית הכנס" CTA under the strip ------------------------------------
   Was the legacy big arrow, absolutely placed over the photos (top:50%/left:2%,
   all.css:2321) and hidden here because it is not in the 2026 design. It is now
   an in-flow, centered pill at every breakpoint: strip above, .b-what below.
   #sp_cta stays as the scroll anchor (uxilive-home.js:58). Shape/fill/arrow/hover
   all come from the shared .cta-but.cta-main a (all.css:3600). */
.b-sp-gallery.spks26 .cta {
    display: block;
    position: static;
    margin: 0;
    padding: 120px 20px;
    text-align: center;
    background: var(--ink);
}

/* The .cta used to be carousel chrome, so three legacy rules still reach it and
   would now fire off a button that sits below the strip:
     .lefties / .last-sel faded it while speakers 4-5 were hovered
        (all.css:2334/2345; uxilive-home.js:96-102 still tags .spks26 .lefties),
     .cta:hover scaled the whole box (all.css:2338) — the pill has its own
        :hover scale (all.css:3620), and two transforms compound,
     hovering it dimmed all five photos to 0.6 via .ctahov (all.css:2366,
        uxilive-home.js:87-95).
   It is a section CTA now: keep it lit, keep the strip alone. */
.b-sp-gallery.spks26.lefties .cta,
.b-sp-gallery.spks26.last-sel .cta {
    opacity: 1;
}

.b-sp-gallery.spks26 .cta:hover {
    transform: none;
}

.b-sp-gallery.spks26 .gal-wrap.ctahov .item {
    opacity: 1;
}

/* ============================================================================
   Mobile — keep the legacy carousel mechanics (responsive.css:2181-2383),
   reskin colors for the light background. Values duplicated at .spks26
   specificity so the desktop overrides above don't clobber them.
   ============================================================================ */
@media only screen and (max-width: 768px) {

    .hblock.b-sp-gallery.spks26 {
        padding-top: 40px;                 /* light bg: no 260px gradient runway on mobile */
    }

    .hblock.b-sp-gallery.spks26 .bl-title {
        width: 100%;
        padding: 42px 16px 32px;           /* responsive.css .bl-title pattern (42/32) */
        box-sizing: border-box;
    }

    .b-sp-gallery.spks26 .bl-title h2 {
        font-size: 40px;                   /* suggested scale @390 viewport */
        line-height: 46px;
    }

    .b-sp-gallery.spks26 .bl-title h3 {
        font-size: 20px;
        line-height: 26px;
        margin-top: 12px;
    }

    @supports (text-box: trim-both cap alphabetic) {
        .b-sp-gallery.spks26 .bl-title h3 {
            margin-top: 18px;
        }
    }

    /* re-assert legacy carousel geometry (responsive.css:2248-2264) over the
       desktop .spks26 rules above */
    .b-sp-gallery.spks26 .spks {
        max-height: 150vw;
        height: calc(90vh - 60px);
        width: 390vw;                      /* 5 x 78vw items */
        overflow: visible;
    }

    .b-sp-gallery.spks26 .spks .item {
        width: 78vw;
        flex: 1 0 78%;
        height: 100%;
    }

    /* tint stays on .spks so it scrolls with the strip; still under
       .gal-nav (z50) / .hoverized (z10), pointer-events:none */

    /* CTA under the strip: the same centered pill as desktop, tighter rhythm.
       responsive.css:2168 still pushes the legacy absolute geometry at
       .b-sp-gallery .cta (0,2,0) — the base rule above outranks it (0,3,0). */
    .b-sp-gallery.spks26 .cta {
        padding: 60px 20px;
    }

    /* .gal-nav prev/next white arrows on black .back squares stay as-is —
       still legible over the blue-tinted photos (responsive.css:2284-2369) */
}


/* ============================================================================
   spks26 — speaker hover panel (Figma floating node 42:2391 "Frame 8338")
   Design mock: photo 392x934 (42:2390, full colour) + bottom panel 392x167,
   top-LEFT corner radius 124, filled by an "Animate 10 / Variant1" instance
   (500x500 at panel-local (0,-129), clipped). Name: Leon 40/100 #0E1819,
   title: 22/26.4, both right-aligned; text box at (74,38) 294x91.
   Implemented as the existing .spk-info (kept for JS hooks) rising on
   hover/focus-within with a gcanvas (js/hero26-gradient.js) inside; the
   2025 hoverized-clone + video overlay is disabled for .spks26 in
   js/uxilive-home.js. Units: design px -> vw via item width (20vw = 392px
   mock, f = 20/392).
   ============================================================================ */

/* panel must not paint outside the tile while parked below it */
.b-sp-gallery.spks26 .spks .item {
    overflow: hidden;
}

/* hovered/focused photo regains colour (design mock photo is full colour) */
.b-sp-gallery.spks26 .spks .item:hover .spk-photo a,
.b-sp-gallery.spks26 .spks .item:focus-within .spk-photo a {
    filter: none;
}

/* 2025 video-overlay treatment: gone (belt & braces — JS no longer builds it) */
.b-sp-gallery.spks26 .spk-video-overlay {
    display: none !important;
}

/* the panel itself */
.b-sp-gallery.spks26 .spk.item .spk-info {
    display: block;                          /* overrides .home ... display:none */
    position: absolute;
    right: 0;
    bottom: 0;
    left: auto;
    width: 100%;
    height: auto;
    min-height: 8.52vw;                      /* 167px @392-wide mock */
    padding: 1.94vw 1.22vw 1.6vw;            /* 38 top / 24 sides */
    margin: 0;
    border-radius: 6.33vw 0 0 0;             /* rectangleCornerRadii [124,0,0,0] */
    overflow: hidden;
    /* fallback wash while the canvas boots / no JS (pastel like the design) */
    background: linear-gradient(160deg, #C9E9FF 0%, #DFF7C9 55%, #EFFBD8 100%);
    z-index: 3;                              /* photos z1 < tint z2 < panel z3 < .gal-nav z50 */
    font-family: 'leonprod', sans-serif;
    text-align: right;
    transform: translateY(102%);
    transition: transform 0.35s ease;
    pointer-events: none;                    /* whole tile is one click target */
}

.b-sp-gallery.spks26 .spks .item:hover .spk-info,
.b-sp-gallery.spks26 .spks .item:focus-within .spk-info {
    transform: translateY(0);
}

/* animated gradient fill — Animate 10 500x500 box at panel-local (0,-129),
   clipped by the panel (overflow:hidden + radius). Canvas internal aspect is
   the component frame (700x375); the Figma instance stretches it to 500x500,
   so we stretch the same way. */
.b-sp-gallery.spks26 .spk-info .gcanvas {
    position: absolute;
    left: 0;
    top: -6.58vw;                            /* -129px */
    width: 25.51vw;                          /* 500px */
    height: 25.51vw;
    max-width: none;
    display: block;
    z-index: 0;
    pointer-events: none;
}

/* text above the canvas */
.b-sp-gallery.spks26 .spk.item .spk-info-wrap {
    position: relative;
    z-index: 2;
    display: block;
    width: auto;
    margin: 0;
}

/* name — Leon 40/100 #0E1819, right-aligned, no 2025 peach tag/rotation */
.b-sp-gallery.spks26 .spk.item .spk-name {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 2.04vw;                       /* 40px */
    line-height: 1;
    color: #0E1819;
    text-align: right;
    display: block;
    width: auto;
    max-width: 100%;
    margin: 0;
    padding: 0;
    background: none;
    transform: none;
    right: auto;
}

/* title/role — Leon 22/26.4 #0E1819 */
.b-sp-gallery.spks26 .spk.item .spk-role {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 1.12vw;                       /* 22px */
    line-height: 1.2;
    color: #0E1819;
    text-align: right;
    display: block;
    max-width: 100%;
    margin: 1.02vw 0 0;                      /* 20px name->title gap */
    padding: 0;
    background: none;
    transform: none;
    right: auto;
}

.b-sp-gallery.spks26 .spk.item .spk-info a {
    color: #0E1819;
    text-decoration: none;
}

/* cap-height trimming (both design text nodes are cap-trimmed; makes the
   38/20/38 rhythm land on the 167px panel exactly) */
@supports (text-box: trim-both cap alphabetic) {
    .b-sp-gallery.spks26 .spk.item .spk-name,
    .b-sp-gallery.spks26 .spk.item .spk-role {
        text-box: trim-both cap alphabetic;
    }
}

/* touch devices: no hover — the panel is simply always up */
@media (hover: none) {
    .b-sp-gallery.spks26 .spk.item .spk-info {
        transform: none;
        transition: none;
    }
    .b-sp-gallery.spks26 .spks .item .spk-photo a {
        filter: none;
    }
}

/* mobile carousel (78vw tiles): rescale the panel, keep it static.
   f = 78/392 per design px. */
@media only screen and (max-width: 768px) {
    .b-sp-gallery.spks26 .spk.item .spk-info {
        transform: none;
        transition: none;
        min-height: 33.2vw;
        padding: 7.56vw 4.78vw 6.3vw;
        border-radius: 24.7vw 0 0 0;
    }
    .b-sp-gallery.spks26 .spk-info .gcanvas {
        top: -25.7vw;
        width: 99.5vw;
        height: 99.5vw;
    }
    .b-sp-gallery.spks26 .spk.item .spk-name {
        font-size: 7.96vw;
    }
    .b-sp-gallery.spks26 .spk.item .spk-role {
        font-size: 4.38vw;
        margin-top: 3.98vw;
    }
    /* carousel photos show in colour on mobile */
    .b-sp-gallery.spks26 .spks .item .spk-photo a {
        filter: none;
    }
}


/* ================= SECTION: what (prep/sections/what.css) ================= */
/* ============================================================
   Section "what" — Figma section '2' (node 42:1742), 1920x854
   Scoped under .b-what. Overrides the legacy all.css rules
   (.b-what turquoise bg + planets are replaced by this design).
   Layers: bg gradient (section) -> noise (::before) -> .holder
   content -> .what-pattern line-art (topmost, per design).
   ============================================================ */

.b-what {
    position: relative;
    z-index: 18;
    overflow: hidden;
    padding: 0; /* overrides all.css 9em/8em — .holder carries the 160px paddings */
    color: #0E1819;
    font-family: 'leonprod', 'leonprod', "Times New Roman", times, serif;
    /* white base + mint/lilac radial glow, center 696px@1920 = 36.25% */
    background: radial-gradient(2029px 1125px at 36.25% 40px,
        #FFFFFF 2.4%, #DFFCC7 14.4%, #FFFFFF 28.3%, #E8C0FF 82.6%, #FFFFFF 100%) #FFFFFF;
}

/* film-grain noise: Figma NOISE effect (size .5, black @ .25) — same
   feTurbulence recipe as prep/pattern.svg filter0_n_8_1246 */
.b-what::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image: var(--figma-noise);
    opacity: var(--noise-opacity);
    background-repeat: repeat;
}

/* --- layout: two columns on the 1205px design grid ------------- */
.b-what .holder {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: row;      /* overrides all.css column */
    align-items: flex-start;  /* overrides all.css center */
    gap: 80px;
    width: auto;              /* overrides all.css 80% */
    max-width: 1205px;        /* 475 + 80 + 650 */
    margin: 0 auto;
    /* 150px top (not 160): Figma y=160 is CAP-top (leadingTrim), the web line
       box adds ~10px half-leading/ascent gap above the caps */
    padding: 150px 0 160px;   /* overrides all.css padding-bottom:0 */
}

/* heading — right column in RTL (first in DOM) */
.b-what .bl-title {
    flex: 0 0 auto;
    width: 475px;
    margin: 0;
    padding: 0;               /* overrides generic .bl-title 150px/60px */
    max-width: none;
    text-align: right;
    font-family: inherit;
}

.b-what .bl-title h2 {
    /* pull the h2 cap-top up to the body column's cap-top (Figma aligns both
       at y=160 with CAP_HEIGHT trim; the 70/80 line box sits ~17px lower) */
    margin: -0.24em 0 0;
    font-weight: 400;         /* overrides generic bold */
    font-size: 70px;          /* overrides generic 4em */
    line-height: 80px;
    letter-spacing: 0;
    text-align: right;
    color: #0E1819;
}

/* body copy — left column */
.b-what .bl-content {
    flex: 0 0 auto;
    width: 650px;
    max-width: none;          /* overrides all.css var(--maxblock) */
    font-size: 22px;          /* overrides all.css 1.1em */
    line-height: 33px;
    letter-spacing: 0.44px;
    text-align: right;
    color: #0E1819;
}

.b-what .bl-content p {
    margin: 0 0 40px;         /* Figma paragraph gap */
}

.b-what .bl-content p:last-child {
    margin-bottom: 0;
}

/* links: the 2px black / lime-on-hover underline comes from the shared
   `.b-what .bl-content a` rule in all.css */

/* decorative line-art pattern — topmost, 10% strokes over the title */
.b-what .what-pattern {
    position: absolute;
    top: -5px;
    left: calc(50% + 443.5px); /* pattern center is 443.5px left-canvas-right of section center */
    transform: translateX(-50%);
    width: 1145px;
    height: 723px;
    z-index: 2;
    pointer-events: none;
}

.b-what .what-pattern img {
    display: block;
    width: 100%;
    height: 100%;
}

/* legacy planet decorations are gone in this design */
.b-what .bl-title::before,
.b-what .bl-title::after,
.b-what .holder::before,
.b-what .holder::after {
    display: none;
    content: none;
    animation: none;
}

/* ============================================================
   Responsive — theme responsive.css conventions
   ============================================================ */

@media (max-width: 1400px) {
    .b-what .holder {
        max-width: none;
        width: auto;
        padding: 140px 4em;
    }

    .b-what .bl-title {
        width: auto;
        flex: 0 0 39%;
    }

    .b-what .bl-content {
        width: auto;
        flex: 1;
    }
}

@media (max-width: 1024px) {
    .b-what .holder {
        padding: 120px 4em;
        gap: 60px;
    }

    .b-what .bl-title h2 {
        font-size: clamp(44px, 5.5vw, 70px);
        line-height: 1.14em;
    }

    .b-what .what-pattern {
        opacity: 0.85;
    }
}

@media (max-width: 768px) {
    /* stack: heading above body (theme's main stack point for this block) */
    .b-what .holder {
        flex-direction: column;
        align-items: stretch;
        gap: 40px;
        padding: 80px 4em;
    }

    .b-what .bl-title,
    .b-what .bl-content {
        flex: 0 0 auto;
        width: 100%;
    }

    .b-what .bl-title h2 {
        font-size: 44px;
        line-height: 1.14em;
    }

    /* 10%-opacity lines over a narrow column just add mud */
    .b-what .what-pattern {
        display: none;
    }
}

@media (max-width: 600px) {
    .b-what .holder {
        width: 90%;
        margin: 0 auto;
        padding: 80px 0;
    }
}

@media (max-width: 450px) {
    .b-what .bl-title h2 {
        font-size: 38px;
    }

    .b-what .bl-content {
        font-size: 18px;
        line-height: 1.5em;
        letter-spacing: 0.36px;
    }

    .b-what .bl-content p {
        margin-bottom: 1.2em;
    }
}

@media (max-width: 380px) {
    .h-hero .m-hero-content .cta {
        flex-direction: column;
    }
}

/* ============================================================
   what — inverse state. page-home.php adds .inv when the speaker
   gallery above it is hidden: ink block, white type, and the
   testimonials' white-squiggle patterns standing in for pat-what
   (whose ink strokes are invisible on ink).
   ============================================================ */

.hblock.b-what.inv {
    background: var(--ink);
    color: #fff;
}

.b-what.inv .bl-title h2,
.b-what.inv .bl-content {
    color: #fff;
}

/* links: the shared all.css rule paints them ink-on-ink here —
   flip to white, keep the lime hover accent */
.b-what.inv .bl-content a {
    color: #fff;
    border-bottom-color: #fff;
}

.b-what.inv .bl-content a:hover {
    color: #fff;
    border-color: var(--lime);
}

/* same assets and treatment as .b-testimons .tst-pattern (white
   squiggles @10%, difference blend), topmost like .what-pattern.
   Boxes are the native SVGs at ~60%, bled off opposite corners so
   the strokes frame the columns the way they frame the cards. */
.b-what.inv .tst-pattern {
    position: absolute;
    z-index: 2;
    mix-blend-mode: difference;
    pointer-events: none;
}

.b-what.inv .tst-pattern img {
    display: block;
    width: 100%;
    height: 100%;
}

.b-what.inv .tst-pat-a { right: -140px; top: -430px; width: 551px; height: 824px; }
.b-what.inv .tst-pat-b { left: -170px; bottom: -300px; width: 619px; height: 644px; }

@media (max-width: 1024px) {
    .b-what.inv .tst-pattern {
        opacity: 0.85;
    }
}

/* same rationale as .what-pattern: 10% lines over a narrow column are mud */
@media (max-width: 768px) {
    .b-what.inv .tst-pattern {
        display: none;
    }
}


/* ================= SECTION: sec3 (prep/sections/sec3.css) ================= */
/* ============================================================
   SEC3 — "למי מתאים יום ההרצאות?"  (Figma 42:1753, frame '3')
   Scope: everything is namespaced under .b-audience.sec3
   Desktop geometry: 1920x1060 design frame -> vw units (px/19.2)
   for the ribbon decor, px for the content typography.
   RTL page; left/right below are PHYSICAL (design coordinates).
   ============================================================ */

.b-audience.sec3 {
    position: relative;
    overflow: visible;
    background: #FFFFFF;
    box-sizing: border-box;
    min-height: 55.2083vw;                 /* 1060/1920 */
    padding: 16.2240vw 0 16.1719vw;        /* content y=311.5, bottom gap 310.5 */
    color: #0E1819;
}

/* Figma NOISE effect (black @25%) — subtle film grain, kept gentle */
.b-audience.sec3::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background-image: var(--figma-noise);
    opacity: var(--noise-opacity);
}

/* ---- scaffolding (mirrors theme .holder/.splitbox so the preview
       is standalone; same values as all.css) ------------------- */
.b-audience.sec3 .holder {
    max-width: var(--maxsection, 1620px);
    margin: 0 auto;
    position: relative;
    z-index: 10;
}

.b-audience.sec3 .splitbox {
    display: flex;
}

/* min-width:0 is load-bearing: flex items default to min-width:auto, which
   floors the column at its min-content (596px — the one-row CTA, see below).
   Without it the column stops shrinking under ~1292px and marches left into
   the ribbon zone, which clips at 49.6875vw and keeps tracking the viewport. */
.b-audience.sec3 .splitbox .split-right,
.b-audience.sec3 .splitbox .split-left {
    flex-basis: 50%;
    min-width: 0;
}

.b-audience.sec3 .split-right {
    box-sizing: border-box;
    padding-right: 12px;             /* holder right edge 1770 -> design column edge 1758 */
}

/* =================== content column (42:1754) =================== */

.b-audience.sec3 .bl-title {
    width: auto;
    margin: 0;
    padding: 0;
    text-align: right;
    font-family: 'leonprod', sans-serif;
}

.b-audience.sec3 .bl-title h2 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 70px;
    line-height: 80px;               /* Figma lineHeightPx */
    margin: -24px 0 34px;            /* leading-trim calibration: ink top at 311.5, para top at 481.5 (screenshot-measured) */
    color: #0E1819;
}

.b-audience.sec3 .bcontent {
    font-family: 'leonprod', sans-serif;
    font-size: 20px;
    line-height: 30px;
    padding-left: 0;
    max-width: 589px;
    text-align: right;
}

.b-audience.sec3 .bcontent p {
    margin: 0 0 14px;
}

.b-audience.sec3 .bcontent p:last-child {
    margin-bottom: 0;
}

/* ---- CTA row (42:1757): primary pill right, outlined link pill left,
       boxes touch, bottom-aligned, flush right ------------------ */
.b-audience.sec3 .cta {
    margin-top: 40px;
}

.b-audience.sec3 .cta-but-row {
    margin-top: 0;
    display: flex;
    align-items: flex-end;
    justify-content: flex-start;     /* RTL: starts at the physical right */
}

.b-audience.sec3 .cta-but {
    font-size: 20px;
}

/* only the SECONDARY link is stripped of the shared button styling — the main
   CTA keeps the lime pill from all.css */
.b-audience.sec3 .cta-but.cta-sec a {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    color: #0E1819;
    text-decoration: none;
    background: none;
    border: none;
    padding: 0;
    transform: none;
}

.b-audience.sec3 .cta-but.cta-main {
    font-size: 29px;
}

/* shape/fill/hover come from the shared `.cta-but.cta-main a` rule (all.css);
   only the Figma fixed width is section-specific */
.b-audience.sec3 .cta-but.cta-main a {
    width: 271px;
}

/* the 313x55 box (Figma row placement) lives on the .cta-but so the link itself
   can shrink-wrap — a border-bottom on the box would sit ~14px under the text */
.b-audience.sec3 .cta-but.cta-sec {
    margin-top: 0;
    width: 313px;
    height: 55px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Design (Figma 42:1758): plain link — the frame's #6891A9 stroke has
   visible:false, so NO border/pill; a 2px rule replaces the text-decoration. */
.b-audience.sec3 .cta-but.cta-sec a {
    width: auto;
    height: auto;
    border: none;
    border-bottom: 2px solid var(--ink);
    border-radius: 0;
    padding-bottom: 3px;
    font-size: 20px;
    line-height: 30px;
    text-decoration: none;
    transition: border-color 0.2s ease;
}

.b-audience.sec3 .cta-but.cta-sec a:hover {
    color: #0E1819;
    border-color: var(--lime);
}

.b-audience.sec3 .cta-but.cta-sec a::after {
    display: none;                   /* kill the theme's purple underline bar */
}

/* =================== ribbons (Frame 1000000818, 42:1762) ===================
   Clip container on the physical LEFT half; extends ~64px below the
   section bottom (1124 vs 1060) so ribbon C bleeds over the seam. */

.b-audience.sec3 .aud-ribbons {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;                       /* trim at the block bottom (user request) */
    width: 49.6875vw;                /* 954  */
    overflow: hidden;
    z-index: 5;
    pointer-events: none;
}

/* ---- pill recipe: place by (cx - w/2, cy - h/2) + rotate around center */
.b-audience.sec3 .ribbon {
    position: absolute;
    height: 4.1146vw;                /* 79 */
    border: 0; /* review round: tickers must have no border at all */
    border-radius: 999px;
    overflow: hidden;
    box-sizing: border-box;
    /* ribbons are the ONE anomalia exception (user request) — non-bold */
    font-family: anomalia, "Times New Roman", times, serif;
    font-weight: 400;
    font-size: 2.6042vw;             /* 50 */
    text-transform: uppercase;
    color: #0E1819;
}

/* animated mesh-gradient surface — the same "Animate N" canvas system as
   the hero (js/hero26-gradient.js). Each pill clips a 1000x1000 design-px
   gcanvas slice; placement derived from anim-map.json (bboxInSection +
   rtInParent) converted to the pill's local frame. Units are em
   (1em = 50 design px = the ribbon font-size) so the mobile font-size
   overrides rescale the canvas with the pill. Base background-color
   stays visible beyond the canvas extents, exactly like Figma. */
.b-audience.sec3 .ribbon .gcanvas {
    position: absolute;
    width: 20em;                     /* 1000 design px */
    height: 20em;
    z-index: 0;
    pointer-events: none;
    /* fade the canvas into the pill's base background-color where the
       1000px gradient square ends mid-pill: the variants tween, so the
       canvas edge color drifts from the static base fill — an unmasked
       edge reads as a hard seam (seen on rb-e) at most phases. */
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}

.b-audience.sec3 .ribbon-int {
    position: relative;
    z-index: 1;
    display: flex;
    width: max-content;
    height: 100%;
    align-items: center;
    animation: sec3-marquee 30s linear infinite;
    will-change: transform;
}

.b-audience.sec3 .ribbon.rev .ribbon-int {
    animation-name: sec3-marquee-rev;
}

.b-audience.sec3 .ribbon .mq {
    display: flex;
    align-items: center;
    gap: 1.5625vw;                   /* 30 */
    padding-left: 1.5625vw;          /* trailing gap -> seamless 50% loop */
    white-space: nowrap;
}

.b-audience.sec3 .ribbon .mq span {
    font-weight: 400;
}


/* ---- per-ribbon placement — EXACT Figma matrices (figma-v2-tickers-geometry.json,
   Group 42:1763). Each pill is anchored by its end-circle A centre
   (transform-origin h/2 h/2) and rotated by the design angle, so the two
   design fold joints meet by construction: A/B ends at (891,460) ±2px,
   C/D ends at (815,700) ±8px. px/19.2 = vw; gcanvas em = designpx/50,
   canvas rotates about its own origin (transform-origin:0 0). ---- */
.b-audience.sec3 .ribbon .gcanvas { transform-origin: 0 0; }

/* A 42:1764 — pink, -4.99deg, z1 */
.b-audience.sec3 .rb-a {
    left: -9.5684vw;
    top: 26.6258vw;
    width: 58.2171vw;
    transform-origin: 2.0573vw 2.0573vw;
    transform: rotate(-4.99deg);
    z-index: 1;
    border-color: #D983FA;
    background-color: #ECA2F1;
}
/* animate3 v3 (42:1769) */
.b-audience.sec3 .rb-a .gcanvas {
    left: 5.394em;
    top: -12em;
    transform: rotate(19.99deg);
}

/* B 42:1801 — purple, +15.02deg, z2 (its end B meets A's end B) */
.b-audience.sec3 .rb-b {
    left: -7.8184vw;
    top: 7.8864vw;
    width: 58.2171vw;
    transform-origin: 2.0573vw 2.0573vw;
    transform: rotate(15.02deg);
    z-index: 2;
    border-color: var(--ink);
    background-color: #884FFF;
}
/* animate1 v3 (42:1806) — aligned with the pill */
.b-audience.sec3 .rb-b .gcanvas {
    left: 2.41em;
    top: -10.77em;
}

/* C 42:1838 — green, -23.03deg, z3 */
.b-audience.sec3 .rb-c {
    left: -26.9351vw;
    top: 63.1466vw;
    width: 77.2576vw;
    transform-origin: 2.0573vw 2.0573vw;
    transform: rotate(-23.03deg);
    z-index: 3;
    border-color: var(--ink);
    background-color: #0A5C34;
}
/* animate2 v1 (42:1843) */
.b-audience.sec3 .rb-c .gcanvas {
    left: 20.064em;
    top: -16.096em;
    transform: rotate(38.03deg);
}

/* D 42:1861 — blue, +8deg, z4 (its end B meets C's end B) */
.b-audience.sec3 .rb-d {
    left: -12.8587vw;
    top: 26.8046vw;
    width: 58.2292vw;
    transform-origin: 2.0573vw 2.0573vw;
    transform: rotate(8deg);
    z-index: 4;
    border-color: #D983FA;
    background-color: #4E49FD;
}
/* animate17 v3 (42:1866) */
.b-audience.sec3 .rb-d .gcanvas {
    left: 4.506em;
    top: -8.814em;
    transform: rotate(7deg);
}

/* E 42:1880 — orange, -18deg, z5 (top; runs off the top-right) */
.b-audience.sec3 .rb-e {
    left: -16.913vw;
    top: 12.6952vw;
    width: 77.2576vw;
    transform-origin: 2.0573vw 2.0573vw;
    transform: rotate(-18deg);
    z-index: 5;
    border-color: #D983FA;
    background-color: #FF7237;
}
/* animate25 v1 (42:1885) */
.b-audience.sec3 .rb-e .gcanvas {
    left: 11.902em;
    top: -13.04em;
    transform: rotate(33deg);
}

/* marquee: 0 -> 50% keeps the window fed in RTL (theme marquee pattern);
   loop distance == one .mq copy incl. its trailing padding */
@keyframes sec3-marquee {
    from { transform: translateX(0); }
    to   { transform: translateX(50%); }
}

@keyframes sec3-marquee-rev {
    from { transform: translateX(50%); }
    to   { transform: translateX(0); }
}

@media (prefers-reduced-motion: reduce) {
    .b-audience.sec3 .ribbon-int {
        animation: none;
    }
    /* the gcanvas renderer freezes itself under reduced motion */
}

/* ============================================================
   TABLET — the split layout survives down to 768 (as 2025's does); only the
   CTA row has to give. Desktop puts both CTAs side by side (271 + 313 = 584),
   which is the min-content floor under .split-right. Half the holder falls
   below 584+12 once the viewport drops under ~1292px, so stack them from
   there and the column tracks 50% again, staying clear of the 49.6875vw
   ribbon clip at every width.
   ============================================================ */

@media only screen and (max-width: 1292px) and (min-width: 769px) {
    .b-audience.sec3 .cta-but-row {
        flex-direction: column;
        align-items: flex-start;     /* RTL: flush to the physical right */
        gap: 10px;
    }

    /* the 313px box only exists to seat the link in the desktop row; stacked it
       just overflows the column (313 > half the holder under ~838px) and the
       link inside measures 213px regardless */
    .b-audience.sec3 .cta-but.cta-sec {
        width: auto;
        max-width: 100%;
    }
}

/* ============================================================
   MOBILE — theme responsive.css .b-audience patterns:
   block layout, centered text, E+B ribbons above the heading
   (title padding-top clears them), A+D+C below the CTA.
   ============================================================ */

@media only screen and (max-width: 768px) {
    .b-audience.sec3 {
        min-height: 0;
        height: auto;
        padding: 0 0 380px;
        overflow: hidden;
    }

    .b-audience.sec3 .holder {
        padding-left: 20px;
        padding-right: 20px;
        width: calc(100% - 40px);
    }

    .b-audience.sec3 .splitbox {
        display: block;
        position: relative;
    }

    .b-audience.sec3 .split-right {
        padding-right: 0;
    }

    .b-audience.sec3 .bl-title {
        padding-top: 340px;
        padding-bottom: 16px;
        text-align: center;
        width: 100%;
    }

    .b-audience.sec3 .bl-title h2 {
        font-size: 40px;
        line-height: 46px;
        margin: 0;
    }

    .b-audience.sec3 .bcontent {
        width: 100%;
        max-width: none;
        padding-left: 0;
        text-align: center;
        font-size: 18px;
        line-height: 27px;
    }

    .b-audience.sec3 .cta {
        margin-top: 30px;
    }

    .b-audience.sec3 .cta-but-row {
        flex-direction: column;
        align-items: center;
        gap: 10px;
    }

    /* ribbons: free-floating over the whole section */
    .b-audience.sec3 .aud-ribbons {
        position: absolute;
        inset: 0;
        width: auto;
        height: auto;
        overflow: visible;
    }

    /* desktop anchors each pill ~8px from its LEFT END so the Figma fold
       joints meet; rotating a >100vw bar about that point swings its far
       end up/down by width*sin(angle), so top/bottom stop describing the
       painted band. Mobile has no fold joints to honour — rotate about the
       centre (2025's default) so top/bottom place the band directly. */
    .b-audience.sec3 .ribbon {
        height: 48px;
        font-size: 30px;
        transform-origin: 50% 50%;
    }

    .b-audience.sec3 .ribbon .mq {
        gap: 16px;
        padding-left: 16px;
    }

    /* Placement matches the 2025 band centres (measured at 390px):
       top pair 12 / 128 from the section top; bottom fan 232 / 112 / 33
       from the section bottom. top = centre - height/2. */

    /* above the heading — steep pair crossing at the section top */
    .b-audience.sec3 .rb-e {
        top: -12px;
        left: -15vw;
        width: 130vw;
        max-width: none;
    }

    .b-audience.sec3 .rb-b {
        top: 104px;
        left: -20vw;
        width: 140vw;
        max-width: none;
    }

    /* below the CTA — fan runs shallow, shallow, steep (2025 t3/t4/t5 order).
       The fan reads as a mass rather than parallel stripes because D and C are
       pushed left and END mid-screen (~x300 / ~x288 at 390w, as 2025 t4/t5 do),
       so the bars converge left and leave the right side open. Full-width bars
       here would read as three evenly-gapped stripes instead. */
    .b-audience.sec3 .rb-a {
        top: auto;
        bottom: 208px;
        left: -5vw;
        width: 140vw;
        max-width: none;
    }

    .b-audience.sec3 .rb-d {
        top: auto;
        bottom: 88px;
        left: -33vw;
        width: 110vw;
        max-width: none;
    }

    /* mobile-only angle: the desktop -23.03deg is a Figma fold-joint angle, and
       mobile has no joints to honour. At -23deg a full-width bar is 268px tall,
       so it crosses D and dumps 101px below the section; -15deg matches 2025 t5
       and nests it under D instead. */
    .b-audience.sec3 .rb-c {
        top: auto;
        bottom: 9px;
        left: -28vw;
        width: 102vw;
        max-width: none;
        transform: rotate(-15deg);
    }
}

@media only screen and (max-width: 600px) {
    .b-audience.sec3 {
        padding-bottom: 340px;
    }

    .b-audience.sec3 .bl-title {
        padding-top: 245px;
    }

    .b-audience.sec3 .ribbon {
        height: 42px;
        font-size: 26px;
    }

    /* same 2025 band centres, re-derived for the 42px pill (centre -+ 21) */
    .b-audience.sec3 .rb-e {
        top: -9px;
    }

    .b-audience.sec3 .rb-b {
        top: 107px;
    }

    .b-audience.sec3 .rb-a {
        bottom: 211px;
    }

    .b-audience.sec3 .rb-d {
        bottom: 91px;
    }

    .b-audience.sec3 .rb-c {
        bottom: 12px;
    }
}

@media only screen and (max-width: 380px) {
    .b-audience.sec3 .cta-but.cta-sec {
        width: 290px;
    }
}


/* ================= SECTION: video (prep/sections/video.css) ================= */
/* ============================================================================
   COM.PLEX 2026 homepage — part "video"
   Band 1: .b-video  (Figma frame `video` 42:1909, 1920x1421, section '4' y=0)
   Band 2: .b-orgs   (Figma frame `5a`    42:1904, 1920x556,  section '4' y=5576)
   Design bg #0E1819, all text #FFFFFF, font 'leonprod' 400 (fonts/leon/leon.css).
   INTEGRATION: load AFTER css/all.css — rules below intentionally override the
   legacy light-bg .b-video / .b-orgs styling (all.css 2372-2624, 3195-3300).
   ============================================================================ */

/* ----------------------------------------------------------------------------
   BAND 1 — .b-video
   Geometry @1920: H2 line at y~159.5 (ink 164..220), sub ink 251..276,
   thumbnail 162..1760 x 353.5..1258.5 (1598x905), play 151px at thumb center,
   band height 1421.
---------------------------------------------------------------------------- */
.b-video {
    position: relative;
    background: #0E1819;        /* overrides all.css radial gradient */
    padding: 0;                 /* overrides all.css 0 160px (gutters live on .b-video-int) */
}

.b-video .holder {
    position: relative;
    max-width: 1920px;
    margin: 0 auto;
    padding: 143px 0 162px;     /* top: H2 ink lands at y=164 (measured); bottom: 1421-1258.5 */
}

.b-video .bl-title {
    width: auto;
    max-width: 1141px;
    margin: 0 auto;
    padding: 0;
    text-align: center;
    color: #fff;
}

.b-video .bl-title h2 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 70px;
    line-height: 75px;
    letter-spacing: 0;
    color: #fff;
    margin: 0;
}

.b-video .bl-title h3 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 29px;
    line-height: 36.95px;
    letter-spacing: 0;
    color: #fff;
    max-width: 1088px;
    margin: 24px auto 0;        /* sub ink lands at y=250.7 (measured) */
}

/* --- thumbnail box (poster + tint + play) --- */
.b-video .b-video-int {
    position: relative;
    /* above the band's film grain (.b-video::after, z-index 20 in all.css). The
       2026 block embeds the player permanently instead of behind the legacy
       .playing lightbox, so without this the grain lands on moving picture and
       reads as compression artefacts. */
    z-index: 21;
    width: calc(100% - 320px);  /* 160px side gutters at 1920 -> 1598px wide (design 162/160) */
    /* never taller than the visible area under the 117px top bar; the width
       clamp keeps the 1598/905 ratio so the box shrinks instead of squashing */
    max-width: min(1598px, calc((100vh - 117px) * 1598 / 905));
    max-height: calc(100vh - 117px);
    height: auto;               /* overrides all.css height:100% */
    max-height: none;           /* overrides all.css max-height:95vh */
    aspect-ratio: 1598 / 905;
    margin: 74px auto 0;        /* thumb top y=353.5 (measured) */
    overflow: hidden;
}

.b-video .video-wrap {
    display: block;   /* all.css hides it until the legacy .playing lightbox state */
    position: absolute;
    inset: 0;
    background: var(--ink);
}

.b-video .video-wrap iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}


/* ----------------------------------------------------------------------------
   BAND 2 — .b-orgs (Figma `5a`, 1920x556)
   RTL: text col RIGHT (x 1314..1760, 160 from right edge), logos LEFT
   (x 107..940, full band height). H2 70/80 right, 4 lines (br,br + natural wrap).
---------------------------------------------------------------------------- */
.b-orgs {
    background: #0E1819;
}

.b-orgs .holder {
    width: 100%;                 /* overrides all.css calc(100% - 100px) */
    max-width: 1920px;           /* overrides --maxsection */
    margin: 0 auto;
    padding: 0 160px 0 107px;    /* design column edges at 1920 */
}

.b-orgs .splitbox {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    min-height: 556px;
}

.b-orgs .split-right {
    flex: 0 0 446px;
    max-width: 446px;
}

.b-orgs .split-left {
    flex: 0 0 833px;
    max-width: 833px;
    height: 556px;
    min-height: 556px;           /* initOrgs() sets inline height to .bl-title height; keep design box */
    overflow: hidden;
    padding: 0;                  /* overrides all.css padding-top:90px */
    display: block;              /* overrides all.css flex */
}

.b-orgs .bl-title {
    width: 100%;
    margin: 0;
    padding: 66px 0 0;           /* H2 ink lands at band y=88.4 (measured; Figma box y=84 leading-trimmed) */
    text-align: right;
    color: #fff;
}

.b-orgs .bl-title h2 {
    display: block;              /* overrides all.css display:table-caption */
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 70px;
    line-height: 80px;
    letter-spacing: 0;
    color: #fff;
    margin: 0;
    width: auto;
}

.b-orgs .bl-title h3 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 29px;
    line-height: 36.95px;
    letter-spacing: 0;
    color: #fff;
    margin: 21px 0 0;            /* sub ink lands at band y=414.3 (measured) */
}

/* --- logos: live org loop styled as the design's 833x558 white-logo wall --- */
.b-orgs .orgs-wrap {
    overflow: hidden;
    height: 100%;
}

.b-orgs .orgs {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    grid-column-gap: 120px;
    overflow: hidden;
    height: 100%;
}

.b-orgs .orgs-column {
    color: #fff;
    cursor: pointer;
    flex: 0 0 290px;
    /* own bg = blend backdrop for the imgs inside this (transformed) column,
       so screen-blend can knock out black/white logo plates (design: LINEAR_DODGE) */
    background: #0E1819;
}

.b-orgs .orgs-column.orgs-right {
    animation: marquee_v 102s linear infinite;
    will-change: transform;
}

.b-orgs .orgs-column.orgs-left {
    animation: marquee_v_rev 90s linear infinite;
    will-change: transform;
}

.stop .b-orgs .orgs-column {
    animation-play-state: paused;
}

.b-orgs .org {
    width: 290px;
    height: 140px;               /* FIXED box height — the column height must NOT depend
                                    on when the logos load. The marquee scrolls by
                                    translateY(-50%) = exactly one of the two identical
                                    copies; if a logo's box grew on load the 50% anchor
                                    drifted and WebKit (which resolves the % against the
                                    pre-load height and caches it on the will-change
                                    layer) scrolled into empty space. Fixed box = exact
                                    seam from frame 1 on every engine. */
    margin-bottom: 84px;
    display: flex;               /* center the logo inside the fixed box */
    align-items: center;
    justify-content: center;
}

.b-orgs .org img {
    /* sized by the equal-area script in hero26.js; this is the no-JS fallback */
    width: auto;
    max-width: 100%;
    max-height: 100%;            /* track the fixed .org box, not a magic 140 */
    line-height: 0;
    object-fit: contain; /* equal-area JS sets explicit w/h; the narrow cell clamps
                            width via max-width and the fixed box clamps height, so
                            contain preserves the logo aspect (no squish, no clip). */
    /* dark-band treatment: white/grayscale logos (Figma PNG is the visual target);
       invert flips the light-bg logo art, screen-blend drops resulting black plates */
    filter: grayscale(1) invert(1) brightness(1.35);
    mix-blend-mode: screen;
    opacity: 0.95;
}

.b-orgs .org img:hover {
    filter: grayscale(1) invert(1) brightness(1.7);
    opacity: 1;
    transition: all 0.3s ease;
}

/* marquee keyframes — duplicates of all.css marquee_v/marquee_v_rev (kept for
   standalone preview; harmless duplicate at integration, or drop this pair) */
@keyframes marquee_v {
    from { transform: translateY(0); }
    to   { transform: translateY(-50%); }
}

@keyframes marquee_v_rev {
    from { transform: translateY(-50%); }
    to   { transform: translateY(0); }
}

/* ============================================================================
   RESPONSIVE — theme ladder (responsive.css conventions)
   ============================================================================ */

@media (max-width: 1600px) {
    .b-orgs .holder {
        padding: 0 100px 0 60px;
    }

    .b-orgs .split-left {
        flex-basis: 700px;
        max-width: 700px;
    }

    .b-orgs .org {
        width: 250px;
    }

    .b-orgs .orgs-column {
        flex-basis: 250px;
    }

    .b-orgs .orgs {
        grid-column-gap: 90px;
    }
}

@media (max-width: 1400px) {
    .b-video .holder {
        padding-top: 120px;
        padding-bottom: 130px;
    }

    .b-video .bl-title h2 {
        font-size: 60px;
        line-height: 66px;
    }

    .b-video .bl-title h3 {
        font-size: 26px;
        line-height: 33px;
    }

    .b-video .b-video-int {
        width: calc(100% - 240px);
        margin-top: 60px;
    }

    .b-orgs .bl-title h2 {
        font-size: 60px;
        line-height: 70px;
    }

    .b-orgs .bl-title h3 {
        font-size: 26px;
        line-height: 33px;
    }

    .b-orgs .split-right {
        flex-basis: 390px;
        max-width: 390px;
    }

    .b-orgs .split-left {
        flex-basis: 560px;
        max-width: 560px;
        height: 480px;
        min-height: 480px;
    }

    .b-orgs .splitbox {
        min-height: 480px;
    }

    .b-orgs .org {
        width: 200px;
    }

    .b-orgs .orgs-column {
        flex-basis: 200px;
    }

    .b-orgs .orgs {
        grid-column-gap: 70px;
    }
}

@media (max-width: 1024px) {
    /* theme: .b-video{padding:0} .holder{padding-bottom:0} — dark band keeps its own padding */
    .b-video .holder {
        padding-top: 90px;
        padding-bottom: 100px;
    }

    .b-video .b-video-int {
        width: calc(100% - 80px);
    }

    .b-orgs .holder {
        padding: 0 50px 0 30px;
    }

    .b-orgs .split-right {
        flex-basis: 330px;
        max-width: 330px;
    }

    .b-orgs .bl-title h2 {
        font-size: 50px;
        line-height: 58px;
    }

    .b-orgs .split-left {
        flex-basis: 460px;
        max-width: 460px;
    }
}

@media (max-width: 768px) {
    /* theme pattern: block padding 47/55, .bl-title padding-top 70px */
    .b-video .holder {
        padding: 70px 0 55px;
    }

    .b-video .bl-title {
        width: calc(100% - 40px);
    }

    .b-video .bl-title h2 {
        font-size: 42px;
        line-height: 48px;
    }

    .b-video .bl-title h3 {
        font-size: 19px;
        line-height: 26px;
        margin-top: 12px;
    }

    .b-video .b-video-int {
        width: calc(100% - 40px);   /* theme mobile gutter pattern */
        margin-top: 36px;
    }

    /* theme pattern: .b-orgs .splitbox{display:block}, title centered, logos below */
    .b-orgs .holder {
        width: calc(100% - 40px);
        padding: 0;
    }

    .b-orgs .splitbox {
        display: block;
        min-height: 0;
    }

    .b-orgs .split-right {
        max-width: none;
    }

    .b-orgs .bl-title {
        padding: 70px 0 0;
        text-align: center;
    }

    .b-orgs .bl-title h2 {
        font-size: 42px;
        line-height: 50px;
        max-width: 500px;
        margin: 0 auto;
    }

    .b-orgs .bl-title h2 br {
        display: none;              /* designer pattern: centered, natural wrap on mobile */
    }

    .b-orgs .bl-title h3 {
        font-size: 19px;
        line-height: 26px;
        margin-top: 14px;
    }

    .b-orgs .bl-title h3 br {
        display: none;
    }

    .b-orgs .split-left {
        margin: 32px auto 0;
        max-width: none;
        height: 80vh;               /* theme: .split-left{height:80vh} at <=768 */
        max-height: 640px;          /* keep the logo wall sane in tall viewports */
        min-height: 0;
    }

    .b-orgs .orgs {
        justify-content: center;
        grid-column-gap: 90px;
        height: 100%;
    }

    .b-orgs .org,
    .b-orgs .orgs-column {
        width: 160px;               /* theme <=1280 org size */
        flex-basis: 160px;
    }

    .b-orgs .org {
        margin-bottom: 60px;
    }
}

@media (max-width: 600px) {
    .b-video .bl-title h2 {
        font-size: 36px;
        line-height: 42px;
    }

    .b-orgs .org,
    .b-orgs .orgs-column {
        width: 95px;                /* theme <=600 org size */
        flex-basis: 95px;
    }

    .b-orgs .orgs {
        grid-column-gap: 70px;      /* theme <=600 gap */
    }

    .b-orgs .org {
        height: 95px;               /* match the 95px cell so the fixed box stays snug */
        margin-bottom: 44px;
    }

    .b-orgs .split-left {
        height: 70vh;
        max-height: 560px;
    }
}


/* ================= SECTION: testimonials (prep/sections/testimonials.css) ================= */
/* ============================================================================
   COM.PLEX 2026 HP — Testimonials block (Figma section '4' > 'Testimonials')
   Scope: .b-testimons only. Load AFTER all.css + responsive.css so equal-
   specificity overrides win. Design canvas: 1590 x 1495.5 inside a 1920 frame,
   section bg #0E1819, font 'leonprod' (theme fonts/leon/leon.css).

   --u is the proportional design unit: 1px at >=1690px viewport, scaling
   linearly below it ((100vw - 100px) / 1590), so type/padding/radius track the
   percent-based card grid exactly (spec §7, 1024-1690 proportional scaling).

   Asset paths are relative to this file's location (prep/sections/); on theme
   integration move assets/testimonials/* into the theme and re-point the urls.
   ========================================================================== */

.b-testimons {
    --u: min(1px, calc((100vw - 100px) / 1590));
    background: #0E1819; /* section-4 bg; drop if the section wrapper provides it */
    color: #fff;
    padding-bottom: 0;
    overflow: hidden;
}

/* block-level spacing placeholder — final rhythm comes from section-4 assembly */
.b-testimons .holder {
    padding-top: calc(120 * var(--u));
    padding-bottom: calc(120 * var(--u));
    background: none;
}

/* the old mobile-only star/blob decorations do not exist in the new design */
.b-testimons .holder .decor {
    display: none;
}
.b-testimons::before,
.b-testimons .holder::before {
    display: none;
}


/* ---- testimonials line-art pattern (Figma 42:2033 + 42:2037, white
   squiggles @10%, difference blend) — anchored to .gal-wrap like the cards,
   uncropped (pieces extend left of and above the cards box) ---- */
.b-testimons .gal-wrap .tst-pattern {
    position: absolute;
    z-index: 3;                 /* above the cards, like the orgs pattern */
    mix-blend-mode: difference;
    pointer-events: none;
}
.b-testimons .gal-wrap .tst-pattern img { display: block; width: 100%; height: 100%; }
.b-testimons .gal-wrap .tst-pat-a { left: -20.56%; top: -12.92%; width: 57.80%; height: 91.78%; }
.b-testimons .gal-wrap .tst-pat-b { left: 36.05%; top: 23.06%; width: 64.84%; height: 71.72%; }

/* ---- title (JS initTestimonials moves .bl-title after the 4th card on
   desktop; these rules take over once it lands inside .testimons) ---------- */
.b-testimons .bl-title,
.b-testimons .testimons .bl-title {
    padding: 0;
    margin: 0;
    max-width: none;
    text-align: center;
    color: #fff;
}
.b-testimons .bl-title .bl-title-int {
    max-width: none;
    margin: 0;
}
.b-testimons .bl-title h2 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: calc(70 * var(--u));
    line-height: calc(80 * var(--u));
    letter-spacing: 0;
    color: #fff;
    margin: 0;
}
.b-testimons .bl-title h3 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: calc(29 * var(--u));
    /* 21px box, vertically centered glyphs => subtitle center at +250.5 from title top */
    line-height: calc(21 * var(--u));
    letter-spacing: 0;
    color: #fff;
    margin: 0;
    max-width: none;
}

/* ---- card visuals (all breakpoints) -------------------------------------- */
.b-testimons .testimon.item .testimon-int {
    position: absolute;
    inset: 0;
    width: auto;
    max-width: none;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: calc(48 * var(--u));
    border: none;
    border-radius: calc(24 * var(--u));
    overflow: hidden;
    /* Fallback while the canvas boots. Flat --ink (= the section bg) rather than
       the design base gradient: that gradient's bottom stop was #0BFF06, and any
       sub-pixel bleed below the canvas (fractional card heights on mobile, where
       the canvas sits flush at inset:0 instead of overscanning) painted it as a
       1-2px neon-green hairline along the card's rounded bottom edge. */
    background-color: var(--ink);
    color: #fff;
    font-size: inherit;
    line-height: normal;
}
/* animated card backgrounds — live gcanvas instances (same renderer as the
   hero). Geometry = the Figma 'Animate NN' instance box inside each card,
   expressed as % of the card (offset_cardRel / sizePx over 403 x cardH,
   spec-testimonials.json); item-6/7 get ~1% overscan so the 400px-wide
   instances still cover the 403px card. */
.b-testimons .testimon .testimon-int .gcanvas {
    position: absolute;
    display: block;
    z-index: 0;
    height: auto;
    aspect-ratio: 1 / 1;
    pointer-events: none;
}
.b-testimons .testimon.item-1 .testimon-int .gcanvas { left: -11.98%; top: -14.81%; width: 124.07%; } /* animate17 500px @(-48.28,-57) in 403x385 */
.b-testimons .testimon.item-2 .testimon-int .gcanvas { left: -4.71%;  top: 0.14%;   width: 105.21%; } /* animate25 424px @(-19,0.5) in 403x352 */
.b-testimons .testimon.item-3 .testimon-int .gcanvas { left: -12.03%; top: -35.94%; width: 124.07%; transform: rotate(90deg); } /* animate23 500px @(-48.48,-126.5), design instance rotated 90deg */
.b-testimons .testimon.item-4 .testimon-int .gcanvas { left: -11.85%; top: 0;       width: 124.07%; transform: scaleY(-1); } /* animate21 500px @(-47.77,0), design instance mirrored vertically */
.b-testimons .testimon.item-5 .testimon-int .gcanvas { left: -12.41%; top: -131.12%; width: 173.70%; }
/* animate19 window moved from the design's (0,0) crop to (50,375): the
   top-left corner is ~100%% blue for most of the cycle; this window keeps
   blue/magenta/orange interplay at every cycle state (min-colorfulness
   search over 9 samples: 141 vs 71). User-requested deviation. */
.b-testimons .testimon.item-6 .testimon-int .gcanvas { left: -0.4%;   top: -6.53%;  width: 101%; }    /* animate20 400px @(0.83,-18.68) in 403x286 */
.b-testimons .testimon.item-7 .testimon-int .gcanvas { left: -0.5%;   top: -2.41%;  width: 101%; }    /* animate12 400px @(0,-8.5) in 403x352 */

/* quote/cite above the canvas */
.b-testimons .testimon .testimon-int blockquote,
.b-testimons .testimon .testimon-int cite {
    position: relative;
    z-index: 1;
}

.b-testimons .testimon .testimon-int blockquote {
    margin: 0;
    padding: 0;
    font-family: 'leonprod', sans-serif;
    font-weight: 700;
    font-size: calc(22 * var(--u));
    line-height: calc(33 * var(--u));
    letter-spacing: calc(0.44 * var(--u));
    text-align: right;
    color: #fff;
    overflow: hidden; /* crop only — line-clamp can't ellipsize over <p> children */
    min-height: 0;    /* the quote yields space to the credits, never the reverse */
}
.b-testimons .testimon .testimon-int blockquote p {
    margin: 0;
}
/* Credits are never clamped or ellipsized — they get however many lines the
   name + role + org need. On the fixed-height desktop cards the space comes out
   of the quote above (min-height:0 + overflow:hidden lets it crop instead). */
.b-testimons .testimon .testimon-int cite {
    display: block;
    flex: 0 0 auto;
    margin-top: auto;
    padding-top: calc(12 * var(--u));
    font-family: 'leonprod', sans-serif;
    font-style: normal;
    font-weight: 400;
    font-size: calc(20 * var(--u));
    line-height: calc(25.48 * var(--u));
    letter-spacing: calc(0.4 * var(--u));
    text-align: right;
    color: #fff;
}

/* ============================================================================
   DESKTOP / TABLET (>=769px): absolute scatter on the 1590x1495.5 canvas
   ========================================================================== */
@media only screen and (min-width: 769px) {

    .b-testimons .gal-wrap {
        width: calc(100% - 100px);
        max-width: 1590px;
        margin: 0 auto;
        position: relative;
    }

    /* the scatter canvas */
    .b-testimons .gal-wrap .testimons {
        display: block;
        position: relative;
        width: 100%;
        aspect-ratio: 1590 / 1495.5;
        padding: 0;
        color: #fff;
    }

    /* title centered inside the canvas (group-rel x=556 y=581.04, 468 wide) */
    .b-testimons .gal-wrap .testimons .bl-title {
        display: block;
        position: absolute;
        left: 34.9686%;
        top: 38.8526%;
        width: 29.434%;
        z-index: 0; /* below the cards, as in the design */
    }

    /* cards: group-relative boxes from the Figma card table (C1..C7) */
    .b-testimons .gal-wrap .testimon.item {
        position: absolute;
        display: block;
        width: 25.3459%;
        max-width: none;
        margin: 0;
        z-index: 1;
    }
    .b-testimons .gal-wrap .testimon.item-1 { left: 54.3572%; top: 71.4143%; aspect-ratio: 403 / 385; }
    .b-testimons .gal-wrap .testimon.item-2 { left: 20.8805%; top: 76.4627%; aspect-ratio: 403 / 352; }
    .b-testimons .gal-wrap .testimon.item-3 { left: 70.6918%; top: 10.5316%; aspect-ratio: 403 / 352; }
    .b-testimons .gal-wrap .testimon.item-4 { left: 37.3585%; top: 0;        aspect-ratio: 403 / 385; }
    .b-testimons .gal-wrap .testimon.item-5 { left: 3.8994%;  top: 15.0786%; aspect-ratio: 403 / 286; }
    .b-testimons .gal-wrap .testimon.item-6 { left: 74.6541%; top: 42.6279%; aspect-ratio: 403 / 286; }
    .b-testimons .gal-wrap .testimon.item-7 { left: 0;        top: 43.5641%; aspect-ratio: 403 / 352; }

    /* no slider on desktop */
    .b-testimons .gal-wrap .gal-nav {
        display: none;
    }
}

/* ============================================================================
   MOBILE (<=768px): theme gallery slider pattern (initGallery steps
   margin-right by 100vw), title above the slider, uniform M-proportion cards
   ========================================================================== */
@media only screen and (max-width: 768px) {

    .b-testimons {
        --u: 1px; /* mobile uses fixed sizes, not canvas scaling */
        padding-bottom: 70px;
    }

    .b-testimons .holder {
        padding-top: 0;
        padding-bottom: 0;
        position: relative;
    }

    /* title stays in its original DOM spot (JS moves it on desktop only) */
    .b-testimons .bl-title {
        position: relative;
        padding: 55px 25px 35px;
        z-index: 1;
    }
    .b-testimons .bl-title h2 {
        font-size: min(34px, 8.7vw);
        line-height: 1.18;
    }
    .b-testimons .bl-title h3 {
        font-size: 18px;
        line-height: 24px;
        margin-top: 10px;
    }

    .b-testimons .gal-wrap {
        width: 100%;
        position: relative;
        z-index: 10;
    }

    .b-testimons .gal-wrap .testimons {
        display: flex;
        flex-wrap: nowrap;
        justify-content: flex-start;
        align-items: flex-start;
        width: 800vw;
        margin-right: 0;
        padding-top: 0;
        overflow: visible;
        grid-column-gap: 0;
        -webkit-transition: all 0.5s 0s ease;
        -moz-transition: all 0.5s 0s ease;
        -o-transition: all 0.5s 0s ease;
        transition: all 0.5s 0s ease;
    }

    .b-testimons .gal-wrap .testimons .testimon.item {
        position: relative;
        width: calc(100vw - 100px);
        max-width: none;
        margin: 0 50px;
        aspect-ratio: auto; /* was 403/352 — height now grows with the quote */
        align-self: flex-start;
    }

    /* Flexible-height cards: the content drives the card height (no fixed crop),
       and the gradient canvas fills the whole card so the CSS fallback gradient
       never shows through below a square canvas. Mobile only; desktop keeps the
       tuned Figma scatter. */
    .b-testimons .gal-wrap .testimons .testimon.item .testimon-int {
        position: relative;
        inset: auto;
        min-height: calc((100vw - 100px) * 0.8734); /* old 403:352 height as a floor */
    }
    .b-testimons .gal-wrap .testimons .testimon.item .testimon-int .gcanvas {
        position: absolute;
        inset: 0;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        aspect-ratio: auto;
        transform: none;
    }
    /* never truncate on mobile — the card grows instead, so the quote is not
       cropped either (the credits are already unclamped at every breakpoint) */
    .b-testimons .gal-wrap .testimons .testimon .testimon-int blockquote {
        overflow: visible;
    }

    .b-testimons .testimon.item .testimon-int {
        padding: 36px;
        border-radius: 24px;
    }
    .b-testimons .testimon .testimon-int blockquote {
        font-size: 17px;
        line-height: 25px;
        letter-spacing: 0.34px;
    }
    .b-testimons .testimon .testimon-int cite {
        font-size: 15px;
        line-height: 19px;
        letter-spacing: 0.3px;
        padding-top: 10px;
    }

    /* slider arrows — white variants for the dark background */
    .b-testimons .gal-wrap .gal-nav {
        display: block;
        position: absolute;
        top: calc(50% - 64px);
        width: 100%;
        height: 128px;
        z-index: 50;
    }
    .b-testimons .gal-nav .nav-ctl {
        position: absolute;
        height: 100%;
        top: 0;
        width: 82px;
        right: 0;
        -webkit-transition: all 0.3s 0s ease;
        -moz-transition: all 0.3s 0s ease;
        -o-transition: all 0.3s 0s ease;
        transition: all 0.3s 0s ease;
    }
    .b-testimons .gal-nav .nav-ctl.next {
        right: auto;
        left: 0;
    }
    .b-testimons .gal-nav .nav-ctl a {
        height: 100%;
        width: 100%;
        display: block;
    }
    .b-testimons .gal-nav .nav-ctl.prev a {
        background: url(../images/hp26/testimonials/right-arrow-white6.svg) no-repeat center center;
        background-size: 85%;
    }
    .b-testimons .gal-nav .nav-ctl.next a {
        background: url(../images/hp26/testimonials/left-arrow-white6.svg) no-repeat 9px center;
        background-size: 85%;
    }
    .b-testimons .gal-nav .nav-ctl.disable {
        opacity: 0;
        display: none;
    }
}


/* ================= SECTION: workshops =================================== */
/* Workshops block styling MOVED to all.css (desktop) + responsive.css
   (responsive) so page-program.php gets the same 2026 design. Only the
   homepage loaded home26.css, so the block was homepage-only before. */

/* ================= SECTION: cta (prep/sections/cta.css) ================= */
/* ====================================================================
   COM.PLEX 2026 — HP section 5: CTA strip (.b-cta) + code-of-conduct card (.b-code)
   Figma: Design > Complex_2026_HP > Frame 1000000866 > '5' (42:2046), 1920x1249.
   Spec: prep/sections/spec-cta.md / spec-cta.json.

   Scope: everything is namespaced under .b-cta / .b-code.
   Integration notes:
   - Supersedes old .b-cta rules (all.css:2388-2404), .b-code rules
     (all.css:2345-2366 + 3301-3508) and the responsive.css .b-code rules.
   - Overrides the shared `.cta-but.cta-main.arrow-left a` arrow background
     (all.css:1116) INSIDE these two blocks only.
   - JS states (js/uxilive-home.js, untouched): `.decor.off` = sad colors,
     `.decor.sad` = sad faces. Default = happy.
   - Asset urls point at assets/cta/ (preview layout). When moved into the
     theme, relocate to images/b-cta26/ and adjust url()s.
   - Figma boxes are cap-height-trimmed; measured Leon cap offsets from the
     CSS line-box top: 31px for 70/80 text, 11px for 22/33 text. All vertical
     paddings/margins below already compensate for this.
   ==================================================================== */

.b-cta,
.b-code {
    --ink: #0E1819;
    --lime: #DBF263;
    --spink: #FF7CD2;
}

.b-cta, .b-cta *,
.b-code, .b-code *,
.b-cta *::before, .b-cta *::after,
.b-code *::before, .b-code *::after {
    box-sizing: border-box;
}

/* ================================================================
   Part A — CTA strip (Figma 'CTA' 42:2047): 711x154 at (604.5, 160)
   ================================================================ */

.b-cta {
    background: #fff;
    padding: 129px 20px 0; /* Figma cap-top 160 - 31px measured cap offset (70/80 Leon) */
}

.b-cta .holder {
    max-width: var(--maxsection, 1620px);
    margin: 0 auto;
    padding: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.b-cta .bl-title {
    padding: 0;
    margin: 0 0 42px; /* Figma: headline cap-bottom 210 -> pill top 251 */
    font-size: 1em;
    width: auto;
}

.b-cta .bl-title h2 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 70px;
    line-height: 80px;
    letter-spacing: 0;
    color: var(--ink);
    text-align: center;
    margin: 0;
    padding: 0;
}

.b-cta .cta {
    margin: 0;
}

/* ---- lime pill button: the shape/fill/arrow/hover all come from the shared
        `.cta-but.cta-main a` rule in all.css. Only the Figma label size and the
        section-specific glow live here (Figma 42:2050 / 42:2063). ---- */

.b-cta .cta-but.cta-main,
.b-code .cta-but.cta-main,
.b-sp-gallery.spks26 .cta-but.cta-main {
    font-size: 29px;
    display: inline-block;
    position: relative;
}

.b-cta .cta-but.cta-main.arrow-left a,
.b-code .cta-but.cta-main.arrow-left a {
    box-shadow: 15px 40px 80px 10px rgba(255, 255, 255, 0.7); /* Figma white glow */
}

/* ================================================================
   Part B — code-of-conduct card (Figma '5b' 42:2054 > card 42:2055)
   card: 1598x775, centered, overflow hidden, square corners
   ================================================================ */

.b-code {
    padding: 160px 160px 0; /* strip bottom (313) -> card top (474) */
    background: #fff;
}

.b-code .holder {
    position: relative;
    overflow: hidden;
    isolation: isolate; /* contain the blend modes to the card */
    max-width: 1598px;
    min-height: 775px;
    margin: 0 auto;
    background: #fff;
}

/* ---- animated gradient background: the design's three stacked live
   "Animate" canvases (anim-map.json section 5), card-relative boxes as %
   of the 1598x775 card. z-order bottom->top: animate18 (rotated 180deg,
   1597x775 @ 1,0) -> animate4 (1620x775 @ 1,0) -> animate10 (flipped X,
   1650x884 @ -29,0). All three are opaque; a slow cross-fade cycles the
   stack (the Figma prototype's layer cross-fade). ---- */

.b-code .b-code-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    background: linear-gradient(to top, #0BFF06, #00A4AE); /* pre-boot fallback */
    pointer-events: none;
}

.b-code .b-code-bg .bg-cv {
    position: absolute;
    display: block;
    top: 0;
}

/* design boxes start at x=1px; stretched to 0 so no fallback sliver peeks out */
.b-code .bg-cv1 { left: 0;      width: 100%;    height: 100%;    transform: rotate(180deg); }
.b-code .bg-cv2 { left: 0;      width: 101.44%; height: 100%;    animation: ctaXfade2 54s linear infinite; }
.b-code .bg-cv3 { left: -1.82%; width: 103.25%; height: 114.06%; transform: scaleX(-1);
                  animation: ctaXfade3 54s linear infinite; }

/* 54s = 3 x the 18s gradient cycle; each layer holds for a third */
@keyframes ctaXfade3 {
    0%, 30%  { opacity: 1; }
    36%, 94% { opacity: 0; }
    100%     { opacity: 1; }
}

@keyframes ctaXfade2 {
    0%, 63%  { opacity: 1; }
    70%, 96% { opacity: 0; }
    100%     { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .b-code .bg-cv2, .b-code .bg-cv3 { animation: none; }
}

/* Mobile: one static layer, no cross-fade. The stack is three full-card
   canvases — the heaviest thing on the page — so data-mobile-static (blocks.php)
   freezes each to a single frame there; cycling three FROZEN frames is just a
   slideshow, and two of them fail contrast against the card's --ink #0E1819 text.
   Measured worst-case (5th-percentile luminance, AA body text needs 4.5:1):
   animate18 p2 = 9.98, animate10 p1 = 7.82 but bottoms out at 3.27, animate4 p3
   = 2.30. animate18 is the only uniformly light one, and it is already bg-cv1 —
   so keep it and drop the other two. display:none also means their canvases
   never intersect, so no Renderer is ever built for them. Breakpoint must stay
   in step with MOBILE in js/hero26-gradient.js. */
@media (max-width: 900px) {
    .b-code .bg-cv2, .b-code .bg-cv3 { display: none; }
}

/* ---- card layout: content col right (836,111 card-rel, 682 wide),
        decor left (board/toggle at x=81) ---- */

.b-code .b-code-wrap {
    position: relative;
    z-index: 1;
    padding: 80px 80px 90px 53px; /* content cap-top 111 - 31px cap offset */
}

/* (the card's grain comes from the shared section-grain rule in all.css --
   .b-code::after already spans the whole section at z-index 2, above both
   .b-code-bg and .b-code-wrap, so b-code and b-sponsors stay identical) */

.b-code .splitbox {
    display: flex;
    justify-content: space-between;
    grid-column-gap: 40px;
}

.b-code .split-right {
    flex: 0 0 682px;
    max-width: 682px;
}

.b-code .split-left {
    flex: 0 1 auto;
    display: flex;
}

/* ---- content column: all text dark #0E1819 (NOT white) ---- */

.b-code .bl-title {
    padding: 0;
    width: auto;
    margin: 0 0 31px; /* Figma: title cap-bottom 241 -> body cap-top 281 */
}

.b-code .bl-title h2 {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 70px;
    line-height: 80px;
    letter-spacing: 0;
    color: var(--ink);
    text-align: right;
    margin: 0;
    padding: 0;
}

.b-code .bl-title a {
    color: var(--ink);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.b-code .bl-title a:hover {
    color: var(--ink);
    opacity: 0.75;
}

.b-code .bl-content {
    font-family: 'leonprod', sans-serif;
    font-weight: 400;
    font-size: 22px;
    line-height: 33px;
    letter-spacing: 0.44px;
    color: var(--ink);
    text-align: right;
}

.b-code .bl-content p {
    margin: 0; /* Figma: plain line break, no paragraph gap */
}

/* links: the 2px black / lime-on-hover underline comes from the shared
   `.b-code .bl-content a` rule in all.css */

.b-code .cta {
    margin-top: 32px; /* Figma: body cap-bottom 561 -> pill top 602 */
    text-align: right;
}

/* ---- decor: toggle + 6x6 board + 5 smileys ----
   Geometry via --u (cell pitch 62.043px; cells 62.782 overlap -0.739).
   Board 373x373 at card-rel (81, 258.54); toggle 125x58.93 at (81, 136.54). */

.b-code .decor {
    --u: 62.04px;
    --face: calc(var(--u) * 0.983); /* 61px at desktop */
    display: flex;
    flex-direction: column;
    align-items: flex-end; /* RTL column: flex-end = LEFT edge (switch + board left-aligned) */
    margin: 56px 0 0 28px; /* wrap padL 53 + 28 = 81 = Figma x; top 80 + 56 = 136.5 */
}

.b-code .switch {
    position: relative;
    width: 125px;
    height: 59px;
    padding: 0;
    border-radius: 29.5px;
    background: var(--ink);
    cursor: pointer;
    margin: 0 0 63px; /* Figma gap 63.07 to board */
    display: block;
    transition: background 0.3s ease;
}

.b-code .switch-int {
    position: absolute;
    top: 5.4px;
    right: 5.4px; /* happy: knob on the RIGHT */
    width: 48.2px;
    height: 48.2px;
    border-radius: 50%;
    background: var(--lime);
    transition: transform 0.3s ease, background 0.3s ease;
}

.b-code .off .switch {
    /* !important + opacity:1 beat all.css:3403 (.off .switch kpink !important
       + opacity:0.35) which washed the sad toggle pink over the gradient */
    /* var(--ink) + var(--spink) @ 25%, flattened — the sibling rules below are
       ink, so this composite is based on ink too (it was #3F2035, over black) */
    background: #4A3147 !important;
    opacity: 1;
}

.b-code .off .switch .switch-int {
    transform: translateX(-62px); /* sad: knob to the LEFT (x 71.43 -> 9.43) */
    background: var(--ink);
}

.b-code .board {
    position: relative;
    width: calc(var(--u) * 6 + 0.75px);
    height: calc(var(--u) * 6 + 0.75px);
    background-color: transparent;
    background-image:
        linear-gradient(to right, #fff 1.5px, transparent 1.5px),
        linear-gradient(to bottom, #fff 1.5px, transparent 1.5px);
    background-size: var(--u) var(--u);
    background-position: 0 0;
    box-shadow: inset 0 0 0 1.5px #fff; /* outer frame incl. right/bottom edges */
    margin: 0;
    transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

.b-code .off .board {
    background-color: var(--ink);
    background-image:
        linear-gradient(to right, var(--spink) 1.5px, transparent 1.5px),
        linear-gradient(to bottom, var(--spink) 1.5px, transparent 1.5px);
    box-shadow: inset 0 0 0 1.5px var(--spink);
}

/* faces: 61px lime circle centered in its cell, dark features */

.b-code .bitem {
    position: absolute;
    width: var(--face);
    height: var(--face);
    border-radius: 50%;
    background: var(--lime);
    border: 0 solid transparent;
    transition: background 0.3s ease, transform 0.5s ease, border 0.3s ease;
}

.b-code .bitem::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: url(../images/hp26/cta/code-smiley.svg) no-repeat center;
    background-size: 50%;
    transition: background-image 0.1s 0.05s ease;
}

/* occupied cells (row, col from top-left): (0,5) (1,1) (3,3) (4,0) (5,4) — uniform lime, no glow per design */

.b-code .bitem.smiley-1 { /* blue */
    left: calc(var(--u) * 5 + (var(--u) - var(--face)) / 2 + 0.75px);
    top:  calc((var(--u) - var(--face)) / 2 + 0.75px);
}

.b-code .bitem.smiley-2 { /* pink */
    left: calc(var(--u) * 1 + (var(--u) - var(--face)) / 2 + 0.75px);
    top:  calc(var(--u) * 1 + (var(--u) - var(--face)) / 2 + 0.75px);
}

.b-code .bitem.smiley-3 { /* purple */
    left: calc(var(--u) * 3 + (var(--u) - var(--face)) / 2 + 0.75px);
    top:  calc(var(--u) * 3 + (var(--u) - var(--face)) / 2 + 0.75px);
}

.b-code .bitem.smiley-4 { /* green */
    left: calc((var(--u) - var(--face)) / 2 + 0.75px);
    top:  calc(var(--u) * 4 + (var(--u) - var(--face)) / 2 + 0.75px);
}

.b-code .bitem.smiley-5 { /* yellow */
    left: calc(var(--u) * 4 + (var(--u) - var(--face)) / 2 + 0.75px);
    top:  calc(var(--u) * 5 + (var(--u) - var(--face)) / 2 + 0.75px);
}

/* neutralize the 2025 board leaking from all.css: per-cell nth-child
   backgrounds (kturq/kpink) and .smiley drop-shadow glows. Design: every
   cell #DBF263, face #0E1819, no glow. nth-child(n) matches the legacy
   specificity; the .off sad-state rules below still win (later in file). */
.b-code .bitem:nth-child(n) {
    background: var(--lime);
    filter: none;
}

/* sad state: black faces with pink stroke + frown */

.b-code .off .bitem {
    background: var(--ink);
    border: 2px solid var(--spink);
    transform: rotateY(180deg);
    filter: none;
}

.b-code .sad .bitem::after {
    background-image: url(../images/hp26/cta/code-sad2.svg);
}

/* ================================================================
   Responsive — mirrors the theme's responsive.css .b-code treatment
   ================================================================ */

@media only screen and (max-width: 1400px) {
    .b-cta {
        padding-top: 90px;
    }

    .b-code {
        padding: 90px 90px 0;
    }
}

@media only screen and (max-width: 1280px) {
    .b-cta .bl-title h2,
    .b-code .bl-title h2 {
        font-size: 54px;
        line-height: 62px;
    }

    /* the pill is em-based (all.css) — the label size scales the whole button */
    .b-cta .cta-but.cta-main,
    .b-code .cta-but.cta-main,
    .b-sp-gallery.spks26 .cta-but.cta-main {
        font-size: 26px;
    }

    .b-code .holder {
        min-height: 0;
    }

    .b-code .b-code-wrap {
        padding: 70px 60px 70px 40px;
    }

    .b-code .split-right {
        flex: 0 1 55%;
    }

    .b-code .bl-content {
        font-size: 20px;
        line-height: 30px;
        letter-spacing: 0.4px;
    }

    /* board 373 -> ~303, faces scale along (responsive.css:792-878 pattern) */
    .b-code .decor {
        --u: 50.4px;
        margin: 20px 0 0 0;
    }

    .b-code .switch {
        width: 86px;
        height: 36px;
        border-radius: 18px;
        margin-bottom: 40px;
    }

    .b-code .switch-int {
        width: 30px;
        height: 30px;
        top: 3px;
        right: 3px;
    }

    .b-code .off .switch .switch-int {
        transform: translateX(-47px);
    }
}

@media only screen and (max-width: 1024px) {
    .b-code .b-code-wrap {
        padding-top: 56px;
    }
}

@media only screen and (max-width: 768px) {
    .b-cta {
        padding: 70px 20px 0;
    }

    .b-cta .bl-title {
        margin-bottom: 18px;
    }

    .b-cta .bl-title h2,
    .b-code .bl-title h2 {
        font-size: 40px;
        line-height: 48px;
    }

    .b-code {
        padding: 70px 20px 0;
    }

    /* card goes column: content on top, decor below (responsive.css:2763-2787) */
    .b-code .b-code-wrap {
        padding: 70px;
    }

    .b-code .splitbox {
        flex-direction: column;
        grid-gap: 2em;
    }

    .b-code .split-right {
        flex: 0 1 auto;
        max-width: none;
    }

    .b-code .bl-title {
        margin-bottom: 16px;
    }

    /* board above switch; board shrinks with the viewport (wrap pad 70x2 + 40) */
    .b-code .decor {
        --u: min(50.4px, calc((100vw - 180px) / 6));
        flex-direction: column-reverse;
        margin: 0;
    }

    .b-code .switch {
        margin: 20px 0 0;
    }

    .b-code .board {
        margin-top: 12px;
    }
}

@media only screen and (max-width: 600px) {
    .b-cta .bl-title h2,
    .b-code .bl-title h2 {
        font-size: 34px;
        line-height: 42px;
    }

    /* card edge-to-edge (responsive.css:4436, 4503-4511) */
    .b-code {
        padding: 60px 0 0;
    }

    .b-code .holder {
        padding: 0;
        width: 100%;
        max-width: none;
    }

    .b-code .b-code-wrap {
        padding: 70px 5%;
    }

    .b-code .decor {
        --u: min(50.4px, calc((90vw - 4px) / 6));
    }
}

@media only screen and (max-width: 400px) {
    /* hide the decor entirely (responsive.css:4585-4591) */
    .b-code .split-left {
        display: none;
    }

    .b-code .cta {
        margin-bottom: 32px;
    }
}



/* ---- HP floating bar: arrival ---------------------------------------------
   The bar now lands at the hero's midpoint (js/uxilive_fe.js), not at 85px, so
   it can no longer rely on the old near-in-place switch to fixed going unseen —
   it slides in from above instead. Two mechanics because the theme has two:
   >1024 the fixed element is #header and it paints the bar edge-to-edge
   (.mini-header is capped at --maxsection); <=1024 .mini-header is itself fixed
   (responsive.css) and #header's offset cannot move it. ---- */
@media (min-width:1025px) {
  /* `top`, never `transform`: .menu-holder is a position:fixed fullscreen overlay
     nested inside #header (all.css), and ANY transform here would make #header its
     containing block and collapse the menu into the 117px bar. `top` creates no
     containing block. Fixed at all times so the slide-out animates too — position
     is not transitionable, so letting it flip absolute<->fixed with the class
     would make the bar jump away instead of leave. Parked at -117px (the whole
     height of #header: .mini-header is its only in-flow child and no-head-ticker
     is unconditional) it is a transparent, off-viewport box — nothing to see and
     nothing to click. */
  body.homepage #header { position:fixed; transition:top .3s ease, background .3s ease; }
  body.homepage:not(.navbar-fixed-top) #header { top:-117px; }
  /* hold the bar's contents visible through the slide-out: the rule above sets
     visibility:hidden, and all.css gives .mini-header no transition above 1024 */
  body.homepage .mini-header { transition:visibility .3s ease; }
}
@media (max-width:1024px) {
  /* .mini-header is fixed here and already carries `transition: all .3s`
     (responsive.css), which covers transform and visibility — only the off-state
     is missing. */
  body.homepage:not(.navbar-fixed-top) .mini-header { transform:translateY(-100%); }
}

/* ---- hero+footer only mode -------------------------------------------
   Homepage shows just the hero and the footer; every other homepage
   section, the site header/menu, and the sales countdown are hidden.
   #header covers the sticky/floating-bar reveal too (the position:fixed
   rules above), so it can never slide back in on scroll. .h-promo is the
   countdown — it lives inside the hero (desktop .hero-nav, or reparented
   into .m-hero-content on mobile by hero26.js) so one rule catches both
   locations. .b-sponsors is printed by footer.php just before <footer>,
   not inside it, so it needs its own rule to stay hidden. .b-code
   (printBehaviorCodeBlock()) is printed after </section> closes
   .home-alt, so it's a sibling too, not a .home-alt child. */
body.homepage #header,
body.homepage .h-promo,
body.homepage .b-sponsors,
body.homepage .b-code,
body.homepage .home-alt > *:not(.hero-spk) {
    display: none !important;
}
