/* Inline the well so the page is one portable file */
:root { --g-well-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%201200%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23f1efec%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%22-177.2%2C-177.2%20-175.9%2C-142.9%20-174.6%2C-108.7%20-173.2%2C-74.5%20-171.8%2C-40.5%20-170.4%2C-6.5%20-168.9%2C27.4%20-167.4%2C61.2%20-165.9%2C94.8%20-164.4%2C128.4%20-162.9%2C161.8%20-161.4%2C195%20-159.9%2C228.1%20-158.5%2C261.1%20-157.1%2C293.9%20-155.8%2C326.6%20-154.6%2C359.2%20-153.5%2C391.6%20-152.5%2C423.9%20-151.7%2C456.1%20-151%2C488.2%20-150.4%2C520.2%20-150.1%2C552.1%20-149.9%2C584%20-149.9%2C616%20-150.1%2C647.9%20-150.4%2C679.8%20-151%2C711.8%20-151.7%2C743.9%20-152.5%2C776.1%20-153.5%2C808.4%20-154.6%2C840.8%20-155.8%2C873.4%20-157.1%2C906.1%20-158.5%2C938.9%20-159.9%2C971.9%20-161.4%2C1005%20-162.9%2C1038.2%20-164.4%2C1071.6%20-165.9%2C1105.2%20-167.4%2C1138.8%20-168.9%2C1172.6%20-170.4%2C1206.5%20-171.8%2C1240.5%20-173.2%2C1274.5%20-174.6%2C1308.7%20-175.9%2C1342.9%20-177.2%2C1377.2%22%2F%3E%3Cpolyline%20points%3D%22-177.2%2C-177.2%20-142.9%2C-175.9%20-108.7%2C-174.6%20-74.5%2C-173.2%20-40.5%2C-171.8%20-6.5%2C-170.4%2027.4%2C-168.9%2061.2%2C-167.4%2094.8%2C-165.9%20128.4%2C-164.4%20161.8%2C-162.9%20195%2C-161.4%20228.1%2C-159.9%20261.1%2C-158.5%20293.9%2C-157.1%20326.6%2C-155.8%20359.2%2C-154.6%20391.6%2C-153.5%20423.9%2C-152.5%20456.1%2C-151.7%20488.2%2C-151%20520.2%2C-150.4%20552.1%2C-150.1%20584%2C-149.9%20616%2C-149.9%20647.9%2C-150.1%20679.8%2C-150.4%20711.8%2C-151%20743.9%2C-151.7%20776.1%2C-152.5%20808.4%2C-153.5%20840.8%2C-154.6%20873.4%2C-155.8%20906.1%2C-157.1%20938.9%2C-158.5%20971.9%2C-159.9%201005%2C-161.4%201038.2%2C-162.9%201071.6%2C-164.4%201105.2%2C-165.9%201138.8%2C-167.4%201172.6%2C-168.9%201206.5%2C-170.4%201240.5%2C-171.8%201274.5%2C-173.2%201308.7%2C-174.6%201342.9%2C-175.9%201377.2%2C-177.2%22%2F%3E%3Cpolyline%20points%3D%22-76.7%2C-173.3%20-75.2%2C-138.9%20-73.8%2C-104.5%20-72.2%2C-70.2%20-70.6%2C-36%20-68.9%2C-1.9%20-67.2%2C32.1%20-65.5%2C66%20-63.7%2C99.7%20-61.9%2C133.3%20-60%2C166.7%20-58.2%2C199.9%20-56.4%2C232.9%20-54.6%2C265.8%20-52.8%2C298.4%20-51.2%2C330.8%20-49.6%2C363.1%20-48.2%2C395.1%20-46.9%2C427%20-45.7%2C458.7%20-44.8%2C490.2%20-44.1%2C521.7%20-43.6%2C553%20-43.4%2C584.4%20-43.4%2C615.6%20-43.6%2C647%20-44.1%2C678.3%20-44.8%2C709.8%20-45.7%2C741.3%20-46.9%2C773%20-48.2%2C804.9%20-49.6%2C836.9%20-51.2%2C869.2%20-52.8%2C901.6%20-54.6%2C934.2%20-56.4%2C967.1%20-58.2%2C1000.1%20-60%2C1033.3%20-61.9%2C1066.7%20-63.7%2C1100.3%20-65.5%2C1134%20-67.2%2C1167.9%20-68.9%2C1201.9%20-70.6%2C1236%20-72.2%2C1270.2%20-73.8%2C1304.5%20-75.2%2C1338.9%20-76.7%2C1373.3%22%2F%3E%3Cpolyline%20points%3D%22-173.3%2C-76.7%20-138.9%2C-75.2%20-104.5%2C-73.8%20-70.2%2C-72.2%20-36%2C-70.6%20-1.9%2C-68.9%2032.1%2C-67.2%2066%2C-65.5%2099.7%2C-63.7%20133.3%2C-61.9%20166.7%2C-60%20199.9%2C-58.2%20232.9%2C-56.4%20265.8%2C-54.6%20298.4%2C-52.8%20330.8%2C-51.2%20363.1%2C-49.6%20395.1%2C-48.2%20427%2C-46.9%20458.7%2C-45.7%20490.2%2C-44.8%20521.7%2C-44.1%20553%2C-43.6%20584.4%2C-43.4%20615.6%2C-43.4%20647%2C-43.6%20678.3%2C-44.1%20709.8%2C-44.8%20741.3%2C-45.7%20773%2C-46.9%20804.9%2C-48.2%20836.9%2C-49.6%20869.2%2C-51.2%20901.6%2C-52.8%20934.2%2C-54.6%20967.1%2C-56.4%201000.1%2C-58.2%201033.3%2C-60%201066.7%2C-61.9%201100.3%2C-63.7%201134%2C-65.5%201167.9%2C-67.2%201201.9%2C-68.9%201236%2C-70.6%201270.2%2C-72.2%201304.5%2C-73.8%201338.9%2C-75.2%201373.3%2C-76.7%22%2F%3E%3Cpolyline%20points%3D%2223.2%2C-169.1%2024.7%2C-134.4%2026.3%2C-99.8%2028%2C-65.3%2029.8%2C-30.9%2031.6%2C3.4%2033.6%2C37.6%2035.6%2C71.6%2037.7%2C105.5%2039.8%2C139.2%2042%2C172.6%2044.3%2C205.9%2046.5%2C238.9%2048.8%2C271.6%2051%2C304.1%2053.1%2C336.3%2055.2%2C368.2%2057.1%2C399.8%2058.8%2C431.1%2060.3%2C462.2%2061.5%2C493.1%2062.5%2C523.8%2063.2%2C554.3%2063.5%2C584.8%2063.5%2C615.2%2063.2%2C645.7%2062.5%2C676.2%2061.5%2C706.9%2060.3%2C737.8%2058.8%2C768.9%2057.1%2C800.2%2055.2%2C831.8%2053.1%2C863.7%2051%2C895.9%2048.8%2C928.4%2046.5%2C961.1%2044.3%2C994.1%2042%2C1027.4%2039.8%2C1060.8%2037.7%2C1094.5%2035.6%2C1128.4%2033.6%2C1162.4%2031.6%2C1196.6%2029.8%2C1230.9%2028%2C1265.3%2026.3%2C1299.8%2024.7%2C1334.4%2023.2%2C1369.1%22%2F%3E%3Cpolyline%20points%3D%22-169.1%2C23.2%20-134.4%2C24.7%20-99.8%2C26.3%20-65.3%2C28%20-30.9%2C29.8%203.4%2C31.6%2037.6%2C33.6%2071.6%2C35.6%20105.5%2C37.7%20139.2%2C39.8%20172.6%2C42%20205.9%2C44.3%20238.9%2C46.5%20271.6%2C48.8%20304.1%2C51%20336.3%2C53.1%20368.2%2C55.2%20399.8%2C57.1%20431.1%2C58.8%20462.2%2C60.3%20493.1%2C61.5%20523.8%2C62.5%20554.3%2C63.2%20584.8%2C63.5%20615.2%2C63.5%20645.7%2C63.2%20676.2%2C62.5%20706.9%2C61.5%20737.8%2C60.3%20768.9%2C58.8%20800.2%2C57.1%20831.8%2C55.2%20863.7%2C53.1%20895.9%2C51%20928.4%2C48.8%20961.1%2C46.5%20994.1%2C44.3%201027.4%2C42%201060.8%2C39.8%201094.5%2C37.7%201128.4%2C35.6%201162.4%2C33.6%201196.6%2C31.6%201230.9%2C29.8%201265.3%2C28%201299.8%2C26.3%201334.4%2C24.7%201369.1%2C23.2%22%2F%3E%3Cpolyline%20points%3D%22122.1%2C-164.7%20123.7%2C-129.7%20125.3%2C-94.8%20127.1%2C-60%20129%2C-25.3%20131%2C9.3%20133.1%2C43.7%20135.4%2C78%20137.7%2C112.2%20140.2%2C146.1%20142.8%2C179.7%20145.4%2C213.1%20148.1%2C246.2%20150.9%2C278.9%20153.6%2C311.3%20156.3%2C343.2%20159%2C374.8%20161.5%2C405.9%20163.7%2C436.6%20165.8%2C467%20167.5%2C496.9%20168.8%2C526.6%20169.7%2C556.1%20170.2%2C585.4%20170.2%2C614.6%20169.7%2C643.9%20168.8%2C673.4%20167.5%2C703.1%20165.8%2C733%20163.7%2C763.4%20161.5%2C794.1%20159%2C825.2%20156.3%2C856.8%20153.6%2C888.7%20150.9%2C921.1%20148.1%2C953.8%20145.4%2C986.9%20142.8%2C1020.3%20140.2%2C1053.9%20137.7%2C1087.8%20135.4%2C1122%20133.1%2C1156.3%20131%2C1190.7%20129%2C1225.3%20127.1%2C1260%20125.3%2C1294.8%20123.7%2C1329.7%20122.1%2C1364.7%22%2F%3E%3Cpolyline%20points%3D%22-164.7%2C122.1%20-129.7%2C123.7%20-94.8%2C125.3%20-60%2C127.1%20-25.3%2C129%209.3%2C131%2043.7%2C133.1%2078%2C135.4%20112.2%2C137.7%20146.1%2C140.2%20179.7%2C142.8%20213.1%2C145.4%20246.2%2C148.1%20278.9%2C150.9%20311.3%2C153.6%20343.2%2C156.3%20374.8%2C159%20405.9%2C161.5%20436.6%2C163.7%20467%2C165.8%20496.9%2C167.5%20526.6%2C168.8%20556.1%2C169.7%20585.4%2C170.2%20614.6%2C170.2%20643.9%2C169.7%20673.4%2C168.8%20703.1%2C167.5%20733%2C165.8%20763.4%2C163.7%20794.1%2C161.5%20825.2%2C159%20856.8%2C156.3%20888.7%2C153.6%20921.1%2C150.9%20953.8%2C148.1%20986.9%2C145.4%201020.3%2C142.8%201053.9%2C140.2%201087.8%2C137.7%201122%2C135.4%201156.3%2C133.1%201190.7%2C131%201225.3%2C129%201260%2C127.1%201294.8%2C125.3%201329.7%2C123.7%201364.7%2C122.1%22%2F%3E%3Cpolyline%20points%3D%22219.9%2C-160.3%20221.4%2C-125%20223%2C-89.8%20224.8%2C-54.6%20226.7%2C-19.5%20228.7%2C15.4%20230.9%2C50.3%20233.3%2C85%20235.8%2C119.6%20238.5%2C153.9%20241.3%2C187.9%20244.3%2C221.6%20247.4%2C254.9%20250.6%2C287.8%20253.9%2C320.2%20257.2%2C352%20260.5%2C383.3%20263.7%2C414%20266.7%2C444%20269.3%2C473.4%20271.6%2C502.2%20273.5%2C530.5%20274.7%2C558.5%20275.4%2C586.2%20275.4%2C613.8%20274.7%2C641.5%20273.5%2C669.5%20271.6%2C697.8%20269.3%2C726.6%20266.7%2C756%20263.7%2C786%20260.5%2C816.7%20257.2%2C848%20253.9%2C879.8%20250.6%2C912.2%20247.4%2C945.1%20244.3%2C978.4%20241.3%2C1012.1%20238.5%2C1046.1%20235.8%2C1080.4%20233.3%2C1115%20230.9%2C1149.7%20228.7%2C1184.6%20226.7%2C1219.5%20224.8%2C1254.6%20223%2C1289.8%20221.4%2C1325%20219.9%2C1360.3%22%2F%3E%3Cpolyline%20points%3D%22-160.3%2C219.9%20-125%2C221.4%20-89.8%2C223%20-54.6%2C224.8%20-19.5%2C226.7%2015.4%2C228.7%2050.3%2C230.9%2085%2C233.3%20119.6%2C235.8%20153.9%2C238.5%20187.9%2C241.3%20221.6%2C244.3%20254.9%2C247.4%20287.8%2C250.6%20320.2%2C253.9%20352%2C257.2%20383.3%2C260.5%20414%2C263.7%20444%2C266.7%20473.4%2C269.3%20502.2%2C271.6%20530.5%2C273.5%20558.5%2C274.7%20586.2%2C275.4%20613.8%2C275.4%20641.5%2C274.7%20669.5%2C273.5%20697.8%2C271.6%20726.6%2C269.3%20756%2C266.7%20786%2C263.7%20816.7%2C260.5%20848%2C257.2%20879.8%2C253.9%20912.2%2C250.6%20945.1%2C247.4%20978.4%2C244.3%201012.1%2C241.3%201046.1%2C238.5%201080.4%2C235.8%201115%2C233.3%201149.7%2C230.9%201184.6%2C228.7%201219.5%2C226.7%201254.6%2C224.8%201289.8%2C223%201325%2C221.4%201360.3%2C219.9%22%2F%3E%3Cpolyline%20points%3D%22316.4%2C-156.2%20317.8%2C-120.6%20319.2%2C-85%20320.8%2C-49.5%20322.5%2C-13.9%20324.4%2C21.5%20326.5%2C56.9%20328.7%2C92.1%20331.2%2C127.2%20333.8%2C162%20336.7%2C196.6%20339.7%2C230.8%20343%2C264.6%20346.5%2C297.9%20350.1%2C330.6%20353.8%2C362.6%20357.6%2C393.7%20361.4%2C424%20365%2C453.3%20368.3%2C481.7%20371.2%2C509.1%20373.5%2C535.7%20375.1%2C561.7%20376%2C587.3%20376%2C612.7%20375.1%2C638.3%20373.5%2C664.3%20371.2%2C690.9%20368.3%2C718.3%20365%2C746.7%20361.4%2C776%20357.6%2C806.3%20353.8%2C837.4%20350.1%2C869.4%20346.5%2C902.1%20343%2C935.4%20339.7%2C969.2%20336.7%2C1003.4%20333.8%2C1038%20331.2%2C1072.8%20328.7%2C1107.9%20326.5%2C1143.1%20324.4%2C1178.5%20322.5%2C1213.9%20320.8%2C1249.5%20319.2%2C1285%20317.8%2C1320.6%20316.4%2C1356.2%22%2F%3E%3Cpolyline%20points%3D%22-156.2%2C316.4%20-120.6%2C317.8%20-85%2C319.2%20-49.5%2C320.8%20-13.9%2C322.5%2021.5%2C324.4%2056.9%2C326.5%2092.1%2C328.7%20127.2%2C331.2%20162%2C333.8%20196.6%2C336.7%20230.8%2C339.7%20264.6%2C343%20297.9%2C346.5%20330.6%2C350.1%20362.6%2C353.8%20393.7%2C357.6%20424%2C361.4%20453.3%2C365%20481.7%2C368.3%20509.1%2C371.2%20535.7%2C373.5%20561.7%2C375.1%20587.3%2C376%20612.7%2C376%20638.3%2C375.1%20664.3%2C373.5%20690.9%2C371.2%20718.3%2C368.3%20746.7%2C365%20776%2C361.4%20806.3%2C357.6%20837.4%2C353.8%20869.4%2C350.1%20902.1%2C346.5%20935.4%2C343%20969.2%2C339.7%201003.4%2C336.7%201038%2C333.8%201072.8%2C331.2%201107.9%2C328.7%201143.1%2C326.5%201178.5%2C324.4%201213.9%2C322.5%201249.5%2C320.8%201285%2C319.2%201320.6%2C317.8%201356.2%2C316.4%22%2F%3E%3Cpolyline%20points%3D%22411.8%2C-152.9%20412.8%2C-116.9%20413.9%2C-81%20415.1%2C-45.1%20416.5%2C-9.1%20418%2C26.8%20419.6%2C62.6%20421.4%2C98.4%20423.4%2C134.1%20425.6%2C169.5%20428%2C204.8%20430.7%2C239.7%20433.5%2C274.2%20436.7%2C308.1%20440%2C341.3%20443.6%2C373.7%20447.2%2C405%20451%2C435.1%20454.7%2C464%20458.2%2C491.4%20461.3%2C517.4%20463.8%2C542.1%20465.7%2C565.7%20466.6%2C588.6%20466.6%2C611.4%20465.7%2C634.3%20463.8%2C657.9%20461.3%2C682.6%20458.2%2C708.6%20454.7%2C736%20451%2C764.9%20447.2%2C795%20443.6%2C826.3%20440%2C858.7%20436.7%2C891.9%20433.5%2C925.8%20430.7%2C960.3%20428%2C995.2%20425.6%2C1030.5%20423.4%2C1065.9%20421.4%2C1101.6%20419.6%2C1137.4%20418%2C1173.2%20416.5%2C1209.1%20415.1%2C1245.1%20413.9%2C1281%20412.8%2C1316.9%20411.8%2C1352.9%22%2F%3E%3Cpolyline%20points%3D%22-152.9%2C411.8%20-116.9%2C412.8%20-81%2C413.9%20-45.1%2C415.1%20-9.1%2C416.5%2026.8%2C418%2062.6%2C419.6%2098.4%2C421.4%20134.1%2C423.4%20169.5%2C425.6%20204.8%2C428%20239.7%2C430.7%20274.2%2C433.5%20308.1%2C436.7%20341.3%2C440%20373.7%2C443.6%20405%2C447.2%20435.1%2C451%20464%2C454.7%20491.4%2C458.2%20517.4%2C461.3%20542.1%2C463.8%20565.7%2C465.7%20588.6%2C466.6%20611.4%2C466.6%20634.3%2C465.7%20657.9%2C463.8%20682.6%2C461.3%20708.6%2C458.2%20736%2C454.7%20764.9%2C451%20795%2C447.2%20826.3%2C443.6%20858.7%2C440%20891.9%2C436.7%20925.8%2C433.5%20960.3%2C430.7%20995.2%2C428%201030.5%2C425.6%201065.9%2C423.4%201101.6%2C421.4%201137.4%2C419.6%201173.2%2C418%201209.1%2C416.5%201245.1%2C415.1%201281%2C413.9%201316.9%2C412.8%201352.9%2C411.8%22%2F%3E%3Cpolyline%20points%3D%22506.2%2C-150.7%20506.7%2C-114.5%20507.3%2C-78.3%20508%2C-42.1%20508.7%2C-5.9%20509.6%2C30.4%20510.5%2C66.6%20511.5%2C102.9%20512.6%2C139%20513.9%2C175%20515.3%2C210.8%20516.9%2C246.3%20518.6%2C281.5%20520.6%2C316%20522.6%2C349.8%20524.9%2C382.7%20527.3%2C414.4%20529.8%2C444.7%20532.3%2C473.3%20534.8%2C500.1%20537%2C524.9%20538.8%2C548%20540.2%2C569.5%20540.9%2C589.9%20540.9%2C610.1%20540.2%2C630.5%20538.8%2C652%20537%2C675.1%20534.8%2C699.9%20532.3%2C726.7%20529.8%2C755.3%20527.3%2C785.6%20524.9%2C817.3%20522.6%2C850.2%20520.6%2C884%20518.6%2C918.5%20516.9%2C953.7%20515.3%2C989.2%20513.9%2C1025%20512.6%2C1061%20511.5%2C1097.1%20510.5%2C1133.4%20509.6%2C1169.6%20508.7%2C1205.9%20508%2C1242.1%20507.3%2C1278.3%20506.7%2C1314.5%20506.2%2C1350.7%22%2F%3E%3Cpolyline%20points%3D%22-150.7%2C506.2%20-114.5%2C506.7%20-78.3%2C507.3%20-42.1%2C508%20-5.9%2C508.7%2030.4%2C509.6%2066.6%2C510.5%20102.9%2C511.5%20139%2C512.6%20175%2C513.9%20210.8%2C515.3%20246.3%2C516.9%20281.5%2C518.6%20316%2C520.6%20349.8%2C522.6%20382.7%2C524.9%20414.4%2C527.3%20444.7%2C529.8%20473.3%2C532.3%20500.1%2C534.8%20524.9%2C537%20548%2C538.8%20569.5%2C540.2%20589.9%2C540.9%20610.1%2C540.9%20630.5%2C540.2%20652%2C538.8%20675.1%2C537%20699.9%2C534.8%20726.7%2C532.3%20755.3%2C529.8%20785.6%2C527.3%20817.3%2C524.9%20850.2%2C522.6%20884%2C520.6%20918.5%2C518.6%20953.7%2C516.9%20989.2%2C515.3%201025%2C513.9%201061%2C512.6%201097.1%2C511.5%201133.4%2C510.5%201169.6%2C509.6%201205.9%2C508.7%201242.1%2C508%201278.3%2C507.3%201314.5%2C506.7%201350.7%2C506.2%22%2F%3E%3Cpolyline%20points%3D%22600%2C-149.9%20600%2C-113.7%20600%2C-77.4%20600%2C-41.1%20600%2C-4.7%20600%2C31.7%20600%2C68.1%20600%2C104.5%20600%2C140.8%20600%2C177%20600%2C213.1%20600%2C248.9%20600%2C284.2%20600%2C319.1%20600%2C353.2%20600%2C386.3%20600%2C418.2%20600%2C448.6%20600%2C477.2%20600%2C503.8%20600%2C528.2%20600%2C550.5%20600%2C571.1%20600%2C590.5%20600%2C609.5%20600%2C628.9%20600%2C649.5%20600%2C671.8%20600%2C696.2%20600%2C722.8%20600%2C751.4%20600%2C781.8%20600%2C813.7%20600%2C846.8%20600%2C880.9%20600%2C915.8%20600%2C951.1%20600%2C986.9%20600%2C1023%20600%2C1059.2%20600%2C1095.5%20600%2C1131.9%20600%2C1168.3%20600%2C1204.7%20600%2C1241.1%20600%2C1277.4%20600%2C1313.7%20600%2C1349.9%22%2F%3E%3Cpolyline%20points%3D%22-149.9%2C600%20-113.7%2C600%20-77.4%2C600%20-41.1%2C600%20-4.7%2C600%2031.7%2C600%2068.1%2C600%20104.5%2C600%20140.8%2C600%20177%2C600%20213.1%2C600%20248.9%2C600%20284.2%2C600%20319.1%2C600%20353.2%2C600%20386.3%2C600%20418.2%2C600%20448.6%2C600%20477.2%2C600%20503.8%2C600%20528.2%2C600%20550.5%2C600%20571.1%2C600%20590.5%2C600%20609.5%2C600%20628.9%2C600%20649.5%2C600%20671.8%2C600%20696.2%2C600%20722.8%2C600%20751.4%2C600%20781.8%2C600%20813.7%2C600%20846.8%2C600%20880.9%2C600%20915.8%2C600%20951.1%2C600%20986.9%2C600%201023%2C600%201059.2%2C600%201095.5%2C600%201131.9%2C600%201168.3%2C600%201204.7%2C600%201241.1%2C600%201277.4%2C600%201313.7%2C600%201349.9%2C600%22%2F%3E%3Cpolyline%20points%3D%22693.8%2C-150.7%20693.3%2C-114.5%20692.7%2C-78.3%20692%2C-42.1%20691.3%2C-5.9%20690.4%2C30.4%20689.5%2C66.6%20688.5%2C102.9%20687.4%2C139%20686.1%2C175%20684.7%2C210.8%20683.1%2C246.3%20681.4%2C281.5%20679.4%2C316%20677.4%2C349.8%20675.1%2C382.7%20672.7%2C414.4%20670.2%2C444.7%20667.7%2C473.3%20665.2%2C500.1%20663%2C524.9%20661.2%2C548%20659.8%2C569.5%20659.1%2C589.9%20659.1%2C610.1%20659.8%2C630.5%20661.2%2C652%20663%2C675.1%20665.2%2C699.9%20667.7%2C726.7%20670.2%2C755.3%20672.7%2C785.6%20675.1%2C817.3%20677.4%2C850.2%20679.4%2C884%20681.4%2C918.5%20683.1%2C953.7%20684.7%2C989.2%20686.1%2C1025%20687.4%2C1061%20688.5%2C1097.1%20689.5%2C1133.4%20690.4%2C1169.6%20691.3%2C1205.9%20692%2C1242.1%20692.7%2C1278.3%20693.3%2C1314.5%20693.8%2C1350.7%22%2F%3E%3Cpolyline%20points%3D%22-150.7%2C693.8%20-114.5%2C693.3%20-78.3%2C692.7%20-42.1%2C692%20-5.9%2C691.3%2030.4%2C690.4%2066.6%2C689.5%20102.9%2C688.5%20139%2C687.4%20175%2C686.1%20210.8%2C684.7%20246.3%2C683.1%20281.5%2C681.4%20316%2C679.4%20349.8%2C677.4%20382.7%2C675.1%20414.4%2C672.7%20444.7%2C670.2%20473.3%2C667.7%20500.1%2C665.2%20524.9%2C663%20548%2C661.2%20569.5%2C659.8%20589.9%2C659.1%20610.1%2C659.1%20630.5%2C659.8%20652%2C661.2%20675.1%2C663%20699.9%2C665.2%20726.7%2C667.7%20755.3%2C670.2%20785.6%2C672.7%20817.3%2C675.1%20850.2%2C677.4%20884%2C679.4%20918.5%2C681.4%20953.7%2C683.1%20989.2%2C684.7%201025%2C686.1%201061%2C687.4%201097.1%2C688.5%201133.4%2C689.5%201169.6%2C690.4%201205.9%2C691.3%201242.1%2C692%201278.3%2C692.7%201314.5%2C693.3%201350.7%2C693.8%22%2F%3E%3Cpolyline%20points%3D%22788.2%2C-152.9%20787.2%2C-116.9%20786.1%2C-81%20784.9%2C-45.1%20783.5%2C-9.1%20782%2C26.8%20780.4%2C62.6%20778.6%2C98.4%20776.6%2C134.1%20774.4%2C169.5%20772%2C204.8%20769.3%2C239.7%20766.5%2C274.2%20763.3%2C308.1%20760%2C341.3%20756.4%2C373.7%20752.8%2C405%20749%2C435.1%20745.3%2C464%20741.8%2C491.4%20738.7%2C517.4%20736.2%2C542.1%20734.3%2C565.7%20733.4%2C588.6%20733.4%2C611.4%20734.3%2C634.3%20736.2%2C657.9%20738.7%2C682.6%20741.8%2C708.6%20745.3%2C736%20749%2C764.9%20752.8%2C795%20756.4%2C826.3%20760%2C858.7%20763.3%2C891.9%20766.5%2C925.8%20769.3%2C960.3%20772%2C995.2%20774.4%2C1030.5%20776.6%2C1065.9%20778.6%2C1101.6%20780.4%2C1137.4%20782%2C1173.2%20783.5%2C1209.1%20784.9%2C1245.1%20786.1%2C1281%20787.2%2C1316.9%20788.2%2C1352.9%22%2F%3E%3Cpolyline%20points%3D%22-152.9%2C788.2%20-116.9%2C787.2%20-81%2C786.1%20-45.1%2C784.9%20-9.1%2C783.5%2026.8%2C782%2062.6%2C780.4%2098.4%2C778.6%20134.1%2C776.6%20169.5%2C774.4%20204.8%2C772%20239.7%2C769.3%20274.2%2C766.5%20308.1%2C763.3%20341.3%2C760%20373.7%2C756.4%20405%2C752.8%20435.1%2C749%20464%2C745.3%20491.4%2C741.8%20517.4%2C738.7%20542.1%2C736.2%20565.7%2C734.3%20588.6%2C733.4%20611.4%2C733.4%20634.3%2C734.3%20657.9%2C736.2%20682.6%2C738.7%20708.6%2C741.8%20736%2C745.3%20764.9%2C749%20795%2C752.8%20826.3%2C756.4%20858.7%2C760%20891.9%2C763.3%20925.8%2C766.5%20960.3%2C769.3%20995.2%2C772%201030.5%2C774.4%201065.9%2C776.6%201101.6%2C778.6%201137.4%2C780.4%201173.2%2C782%201209.1%2C783.5%201245.1%2C784.9%201281%2C786.1%201316.9%2C787.2%201352.9%2C788.2%22%2F%3E%3Cpolyline%20points%3D%22883.6%2C-156.2%20882.2%2C-120.6%20880.8%2C-85%20879.2%2C-49.5%20877.5%2C-13.9%20875.6%2C21.5%20873.5%2C56.9%20871.3%2C92.1%20868.8%2C127.2%20866.2%2C162%20863.3%2C196.6%20860.3%2C230.8%20857%2C264.6%20853.5%2C297.9%20849.9%2C330.6%20846.2%2C362.6%20842.4%2C393.7%20838.6%2C424%20835%2C453.3%20831.7%2C481.7%20828.8%2C509.1%20826.5%2C535.7%20824.9%2C561.7%20824%2C587.3%20824%2C612.7%20824.9%2C638.3%20826.5%2C664.3%20828.8%2C690.9%20831.7%2C718.3%20835%2C746.7%20838.6%2C776%20842.4%2C806.3%20846.2%2C837.4%20849.9%2C869.4%20853.5%2C902.1%20857%2C935.4%20860.3%2C969.2%20863.3%2C1003.4%20866.2%2C1038%20868.8%2C1072.8%20871.3%2C1107.9%20873.5%2C1143.1%20875.6%2C1178.5%20877.5%2C1213.9%20879.2%2C1249.5%20880.8%2C1285%20882.2%2C1320.6%20883.6%2C1356.2%22%2F%3E%3Cpolyline%20points%3D%22-156.2%2C883.6%20-120.6%2C882.2%20-85%2C880.8%20-49.5%2C879.2%20-13.9%2C877.5%2021.5%2C875.6%2056.9%2C873.5%2092.1%2C871.3%20127.2%2C868.8%20162%2C866.2%20196.6%2C863.3%20230.8%2C860.3%20264.6%2C857%20297.9%2C853.5%20330.6%2C849.9%20362.6%2C846.2%20393.7%2C842.4%20424%2C838.6%20453.3%2C835%20481.7%2C831.7%20509.1%2C828.8%20535.7%2C826.5%20561.7%2C824.9%20587.3%2C824%20612.7%2C824%20638.3%2C824.9%20664.3%2C826.5%20690.9%2C828.8%20718.3%2C831.7%20746.7%2C835%20776%2C838.6%20806.3%2C842.4%20837.4%2C846.2%20869.4%2C849.9%20902.1%2C853.5%20935.4%2C857%20969.2%2C860.3%201003.4%2C863.3%201038%2C866.2%201072.8%2C868.8%201107.9%2C871.3%201143.1%2C873.5%201178.5%2C875.6%201213.9%2C877.5%201249.5%2C879.2%201285%2C880.8%201320.6%2C882.2%201356.2%2C883.6%22%2F%3E%3Cpolyline%20points%3D%22980.1%2C-160.3%20978.6%2C-125%20977%2C-89.8%20975.2%2C-54.6%20973.3%2C-19.5%20971.3%2C15.4%20969.1%2C50.3%20966.7%2C85%20964.2%2C119.6%20961.5%2C153.9%20958.7%2C187.9%20955.7%2C221.6%20952.6%2C254.9%20949.4%2C287.8%20946.1%2C320.2%20942.8%2C352%20939.5%2C383.3%20936.3%2C414%20933.3%2C444%20930.7%2C473.4%20928.4%2C502.2%20926.5%2C530.5%20925.3%2C558.5%20924.6%2C586.2%20924.6%2C613.8%20925.3%2C641.5%20926.5%2C669.5%20928.4%2C697.8%20930.7%2C726.6%20933.3%2C756%20936.3%2C786%20939.5%2C816.7%20942.8%2C848%20946.1%2C879.8%20949.4%2C912.2%20952.6%2C945.1%20955.7%2C978.4%20958.7%2C1012.1%20961.5%2C1046.1%20964.2%2C1080.4%20966.7%2C1115%20969.1%2C1149.7%20971.3%2C1184.6%20973.3%2C1219.5%20975.2%2C1254.6%20977%2C1289.8%20978.6%2C1325%20980.1%2C1360.3%22%2F%3E%3Cpolyline%20points%3D%22-160.3%2C980.1%20-125%2C978.6%20-89.8%2C977%20-54.6%2C975.2%20-19.5%2C973.3%2015.4%2C971.3%2050.3%2C969.1%2085%2C966.7%20119.6%2C964.2%20153.9%2C961.5%20187.9%2C958.7%20221.6%2C955.7%20254.9%2C952.6%20287.8%2C949.4%20320.2%2C946.1%20352%2C942.8%20383.3%2C939.5%20414%2C936.3%20444%2C933.3%20473.4%2C930.7%20502.2%2C928.4%20530.5%2C926.5%20558.5%2C925.3%20586.2%2C924.6%20613.8%2C924.6%20641.5%2C925.3%20669.5%2C926.5%20697.8%2C928.4%20726.6%2C930.7%20756%2C933.3%20786%2C936.3%20816.7%2C939.5%20848%2C942.8%20879.8%2C946.1%20912.2%2C949.4%20945.1%2C952.6%20978.4%2C955.7%201012.1%2C958.7%201046.1%2C961.5%201080.4%2C964.2%201115%2C966.7%201149.7%2C969.1%201184.6%2C971.3%201219.5%2C973.3%201254.6%2C975.2%201289.8%2C977%201325%2C978.6%201360.3%2C980.1%22%2F%3E%3Cpolyline%20points%3D%221077.9%2C-164.7%201076.3%2C-129.7%201074.7%2C-94.8%201072.9%2C-60%201071%2C-25.3%201069%2C9.3%201066.9%2C43.7%201064.6%2C78%201062.3%2C112.2%201059.8%2C146.1%201057.2%2C179.7%201054.6%2C213.1%201051.9%2C246.2%201049.1%2C278.9%201046.4%2C311.3%201043.7%2C343.2%201041%2C374.8%201038.5%2C405.9%201036.3%2C436.6%201034.2%2C467%201032.5%2C496.9%201031.2%2C526.6%201030.3%2C556.1%201029.8%2C585.4%201029.8%2C614.6%201030.3%2C643.9%201031.2%2C673.4%201032.5%2C703.1%201034.2%2C733%201036.3%2C763.4%201038.5%2C794.1%201041%2C825.2%201043.7%2C856.8%201046.4%2C888.7%201049.1%2C921.1%201051.9%2C953.8%201054.6%2C986.9%201057.2%2C1020.3%201059.8%2C1053.9%201062.3%2C1087.8%201064.6%2C1122%201066.9%2C1156.3%201069%2C1190.7%201071%2C1225.3%201072.9%2C1260%201074.7%2C1294.8%201076.3%2C1329.7%201077.9%2C1364.7%22%2F%3E%3Cpolyline%20points%3D%22-164.7%2C1077.9%20-129.7%2C1076.3%20-94.8%2C1074.7%20-60%2C1072.9%20-25.3%2C1071%209.3%2C1069%2043.7%2C1066.9%2078%2C1064.6%20112.2%2C1062.3%20146.1%2C1059.8%20179.7%2C1057.2%20213.1%2C1054.6%20246.2%2C1051.9%20278.9%2C1049.1%20311.3%2C1046.4%20343.2%2C1043.7%20374.8%2C1041%20405.9%2C1038.5%20436.6%2C1036.3%20467%2C1034.2%20496.9%2C1032.5%20526.6%2C1031.2%20556.1%2C1030.3%20585.4%2C1029.8%20614.6%2C1029.8%20643.9%2C1030.3%20673.4%2C1031.2%20703.1%2C1032.5%20733%2C1034.2%20763.4%2C1036.3%20794.1%2C1038.5%20825.2%2C1041%20856.8%2C1043.7%20888.7%2C1046.4%20921.1%2C1049.1%20953.8%2C1051.9%20986.9%2C1054.6%201020.3%2C1057.2%201053.9%2C1059.8%201087.8%2C1062.3%201122%2C1064.6%201156.3%2C1066.9%201190.7%2C1069%201225.3%2C1071%201260%2C1072.9%201294.8%2C1074.7%201329.7%2C1076.3%201364.7%2C1077.9%22%2F%3E%3Cpolyline%20points%3D%221176.8%2C-169.1%201175.3%2C-134.4%201173.7%2C-99.8%201172%2C-65.3%201170.2%2C-30.9%201168.4%2C3.4%201166.4%2C37.6%201164.4%2C71.6%201162.3%2C105.5%201160.2%2C139.2%201158%2C172.6%201155.7%2C205.9%201153.5%2C238.9%201151.2%2C271.6%201149%2C304.1%201146.9%2C336.3%201144.8%2C368.2%201142.9%2C399.8%201141.2%2C431.1%201139.7%2C462.2%201138.5%2C493.1%201137.5%2C523.8%201136.8%2C554.3%201136.5%2C584.8%201136.5%2C615.2%201136.8%2C645.7%201137.5%2C676.2%201138.5%2C706.9%201139.7%2C737.8%201141.2%2C768.9%201142.9%2C800.2%201144.8%2C831.8%201146.9%2C863.7%201149%2C895.9%201151.2%2C928.4%201153.5%2C961.1%201155.7%2C994.1%201158%2C1027.4%201160.2%2C1060.8%201162.3%2C1094.5%201164.4%2C1128.4%201166.4%2C1162.4%201168.4%2C1196.6%201170.2%2C1230.9%201172%2C1265.3%201173.7%2C1299.8%201175.3%2C1334.4%201176.8%2C1369.1%22%2F%3E%3Cpolyline%20points%3D%22-169.1%2C1176.8%20-134.4%2C1175.3%20-99.8%2C1173.7%20-65.3%2C1172%20-30.9%2C1170.2%203.4%2C1168.4%2037.6%2C1166.4%2071.6%2C1164.4%20105.5%2C1162.3%20139.2%2C1160.2%20172.6%2C1158%20205.9%2C1155.7%20238.9%2C1153.5%20271.6%2C1151.2%20304.1%2C1149%20336.3%2C1146.9%20368.2%2C1144.8%20399.8%2C1142.9%20431.1%2C1141.2%20462.2%2C1139.7%20493.1%2C1138.5%20523.8%2C1137.5%20554.3%2C1136.8%20584.8%2C1136.5%20615.2%2C1136.5%20645.7%2C1136.8%20676.2%2C1137.5%20706.9%2C1138.5%20737.8%2C1139.7%20768.9%2C1141.2%20800.2%2C1142.9%20831.8%2C1144.8%20863.7%2C1146.9%20895.9%2C1149%20928.4%2C1151.2%20961.1%2C1153.5%20994.1%2C1155.7%201027.4%2C1158%201060.8%2C1160.2%201094.5%2C1162.3%201128.4%2C1164.4%201162.4%2C1166.4%201196.6%2C1168.4%201230.9%2C1170.2%201265.3%2C1172%201299.8%2C1173.7%201334.4%2C1175.3%201369.1%2C1176.8%22%2F%3E%3Cpolyline%20points%3D%221276.7%2C-173.3%201275.2%2C-138.9%201273.8%2C-104.5%201272.2%2C-70.2%201270.6%2C-36%201268.9%2C-1.9%201267.2%2C32.1%201265.5%2C66%201263.7%2C99.7%201261.9%2C133.3%201260%2C166.7%201258.2%2C199.9%201256.4%2C232.9%201254.6%2C265.8%201252.8%2C298.4%201251.2%2C330.8%201249.6%2C363.1%201248.2%2C395.1%201246.9%2C427%201245.7%2C458.7%201244.8%2C490.2%201244.1%2C521.7%201243.6%2C553%201243.4%2C584.4%201243.4%2C615.6%201243.6%2C647%201244.1%2C678.3%201244.8%2C709.8%201245.7%2C741.3%201246.9%2C773%201248.2%2C804.9%201249.6%2C836.9%201251.2%2C869.2%201252.8%2C901.6%201254.6%2C934.2%201256.4%2C967.1%201258.2%2C1000.1%201260%2C1033.3%201261.9%2C1066.7%201263.7%2C1100.3%201265.5%2C1134%201267.2%2C1167.9%201268.9%2C1201.9%201270.6%2C1236%201272.2%2C1270.2%201273.8%2C1304.5%201275.2%2C1338.9%201276.7%2C1373.3%22%2F%3E%3Cpolyline%20points%3D%22-173.3%2C1276.7%20-138.9%2C1275.2%20-104.5%2C1273.8%20-70.2%2C1272.2%20-36%2C1270.6%20-1.9%2C1268.9%2032.1%2C1267.2%2066%2C1265.5%2099.7%2C1263.7%20133.3%2C1261.9%20166.7%2C1260%20199.9%2C1258.2%20232.9%2C1256.4%20265.8%2C1254.6%20298.4%2C1252.8%20330.8%2C1251.2%20363.1%2C1249.6%20395.1%2C1248.2%20427%2C1246.9%20458.7%2C1245.7%20490.2%2C1244.8%20521.7%2C1244.1%20553%2C1243.6%20584.4%2C1243.4%20615.6%2C1243.4%20647%2C1243.6%20678.3%2C1244.1%20709.8%2C1244.8%20741.3%2C1245.7%20773%2C1246.9%20804.9%2C1248.2%20836.9%2C1249.6%20869.2%2C1251.2%20901.6%2C1252.8%20934.2%2C1254.6%20967.1%2C1256.4%201000.1%2C1258.2%201033.3%2C1260%201066.7%2C1261.9%201100.3%2C1263.7%201134%2C1265.5%201167.9%2C1267.2%201201.9%2C1268.9%201236%2C1270.6%201270.2%2C1272.2%201304.5%2C1273.8%201338.9%2C1275.2%201373.3%2C1276.7%22%2F%3E%3Cpolyline%20points%3D%221377.2%2C-177.2%201375.9%2C-142.9%201374.6%2C-108.7%201373.2%2C-74.5%201371.8%2C-40.5%201370.4%2C-6.5%201368.9%2C27.4%201367.4%2C61.2%201365.9%2C94.8%201364.4%2C128.4%201362.9%2C161.8%201361.4%2C195%201359.9%2C228.1%201358.5%2C261.1%201357.1%2C293.9%201355.8%2C326.6%201354.6%2C359.2%201353.5%2C391.6%201352.5%2C423.9%201351.7%2C456.1%201351%2C488.2%201350.4%2C520.2%201350.1%2C552.1%201349.9%2C584%201349.9%2C616%201350.1%2C647.9%201350.4%2C679.8%201351%2C711.8%201351.7%2C743.9%201352.5%2C776.1%201353.5%2C808.4%201354.6%2C840.8%201355.8%2C873.4%201357.1%2C906.1%201358.5%2C938.9%201359.9%2C971.9%201361.4%2C1005%201362.9%2C1038.2%201364.4%2C1071.6%201365.9%2C1105.2%201367.4%2C1138.8%201368.9%2C1172.6%201370.4%2C1206.5%201371.8%2C1240.5%201373.2%2C1274.5%201374.6%2C1308.7%201375.9%2C1342.9%201377.2%2C1377.2%22%2F%3E%3Cpolyline%20points%3D%22-177.2%2C1377.2%20-142.9%2C1375.9%20-108.7%2C1374.6%20-74.5%2C1373.2%20-40.5%2C1371.8%20-6.5%2C1370.4%2027.4%2C1368.9%2061.2%2C1367.4%2094.8%2C1365.9%20128.4%2C1364.4%20161.8%2C1362.9%20195%2C1361.4%20228.1%2C1359.9%20261.1%2C1358.5%20293.9%2C1357.1%20326.6%2C1355.8%20359.2%2C1354.6%20391.6%2C1353.5%20423.9%2C1352.5%20456.1%2C1351.7%20488.2%2C1351%20520.2%2C1350.4%20552.1%2C1350.1%20584%2C1349.9%20616%2C1349.9%20647.9%2C1350.1%20679.8%2C1350.4%20711.8%2C1351%20743.9%2C1351.7%20776.1%2C1352.5%20808.4%2C1353.5%20840.8%2C1354.6%20873.4%2C1355.8%20906.1%2C1357.1%20938.9%2C1358.5%20971.9%2C1359.9%201005%2C1361.4%201038.2%2C1362.9%201071.6%2C1364.4%201105.2%2C1365.9%201138.8%2C1367.4%201172.6%2C1368.9%201206.5%2C1370.4%201240.5%2C1371.8%201274.5%2C1373.2%201308.7%2C1374.6%201342.9%2C1375.9%201377.2%2C1377.2%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); }

/* ============================================================
   Page-level styles (outside cascade layers, so they win cleanly)
   ============================================================ */

/* No heading should ever spill outside its box, whatever the content */
h1, h2, h3, h4 { overflow-wrap: break-word; }

/* ---- Hero ---- */
.lp-hero { min-height: min(92vh, 860px); display: flex; align-items: center; }

/* interactive "pucker" grid, a canvas that draws the spacetime well and
   bends its lines inward around the cursor. Sits lowest, above the gradient. */
.lp-grid { position: absolute; inset: 0; z-index: 0; pointer-events: none; }

/* scattered stars, generated in JS, sits above the grid, below content */
.lp-stars { position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.lp-star { position: absolute; border-radius: 50%; background: rgb(var(--g-canvas-line)); }
.lp-star.is-twinkle { animation: lp-twinkle var(--dur, 4s) ease-in-out infinite; animation-delay: var(--delay, 0s); }
@keyframes lp-twinkle { 0%, 100% { opacity: var(--o, .6); } 50% { opacity: .12; } }

/* rare drifting meteors, sits with the stars, behind all content */
.lp-meteors { position: absolute; inset: 0; z-index: 1; pointer-events: none; }

/* comet cursor, a canvas laid over the hero. It sits ABOVE the hero content
   (z-index 4 vs the content's 3) so the cursor draws on top of the buttons
   instead of sliding underneath them. pointer-events:none keeps clicks working. */
.lp-comet { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
/* Hide the native cursor only where the comet is actually drawn. Both extra
   conditions are load-bearing: reduced motion hides the comet canvas, and
   without the guard those visitors got `cursor: none` over an empty hero and
   lost their pointer. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .lp-hero.comet-on, .lp-hero.comet-on a, .lp-hero.comet-on button { cursor: none; }
}
/* keep hero text/CTAs above the grid + star + comet layers */
.lp-hero .g-hero__inner { position: relative; z-index: 3; }
@media (prefers-reduced-motion: reduce) { .lp-comet, .lp-meteors { display: none; } .lp-star.is-twinkle { animation: none; } }
/* ---- Hero headline measure ------------------------------------------------
   The headline was sized off the viewport (clamp with 5.4vw, capping at
   5.25rem) but it wraps inside a *column*. At 1440px that meant 84px type in a
   558px column: about twelve and a half characters a line, so "underlying" was
   a line by itself and the block ran to four or five lines of one or two words
   each. Tall, ragged, and nothing to do with how wide the screen was.

   Two changes. The text column takes more of the grid, and the type is now
   measured against that column rather than the window. A container query unit
   is the honest tool here: 10.8cqw holds the headline at roughly seventeen
   characters a line at every width, which is where a display line stops
   looking like a list of words. The vw clamp stays as the fallback, tuned down
   so browsers without container queries land in the same neighbourhood. */
.lp-hero__grid {
  display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap: clamp(1.5rem, 4vw, 4rem); align-items: center; width: 100%;
}
.lp-hero__col { min-width: 0; }
.lp-hero__title {
  font-size: clamp(2.6rem, 1.2rem + 3.6vw, 4.35rem);
  margin-bottom: var(--g-space-md);
  /* Even the rag out rather than leaving a two-word orphan on the last line. */
  text-wrap: balance;
}
@supports (container-type: inline-size) {
  .lp-hero__col { container-type: inline-size; }
  .lp-hero__title { font-size: clamp(2.6rem, 10.8cqw, 4.5rem); }
}
/* This was `inline-flex` with the default `nowrap`, left over from when it
   held a logo lockup. Three stats and two separators cannot fit one phone
   line, and nowrap meant they did not try, the row simply ran off the side.
   It wraps now, and it wraps between facts rather than through them. */
.lp-hero__credit {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: .35rem .8rem;
  margin-top: var(--g-space-lg); font-size: var(--g-fs-small); color: var(--g-text-muted);
}
/* Each fact is its own inline-flex box so the separator dot below can be a
   flex item with `flex: none`. That has a cost that is easy to miss: inside a
   flex container a bare text node becomes an *anonymous flex item*, and the
   collapsible whitespace at its edges is thrown away. In "312K subscribers"
   the number is an element and the word is a text node, so the space between
   them was being eaten and the two ran together. It is a layout rule removing
   a space that the markup does have, which is why nothing looks wrong in the
   HTML.

   `gap` puts the word space back as a real gap, and unlike an &nbsp; in the
   markup it fixes the whole row rather than the one place it was noticed.
   0.25em is DM Sans's word space. The dot then has to give the same amount
   back, or the space it was carrying would be a quarter of an em wider than
   the one on the item before it. */
.lp-hero__credit > span {
  display: inline-flex; align-items: center; white-space: nowrap; gap: 0.25em;
}
.lp-hero__credit > span + span::before {
  content: ""; width: 3px; height: 3px; border-radius: 50%; flex: none;
  background: var(--g-border-strong); margin-right: calc(.8rem - 0.25em);
}
.lp-hero__credit svg { height: 1.5rem; width: auto; opacity: 0.9; }
/* ---- Three-body orbit canvas (replaces the hero portrait) ---- */
.lp-orbit {
  width: min(115%, 38rem); margin-inline: auto; margin-right: -4%; position: relative;
}
/* The 115% width plus the negative right margin let the orbit spill about 86px
   past its column - deliberate on a wide screen, where the page has 120px+ of
   margin either side to spill into. Between the tablet breakpoint and ~1300px
   there is no such margin: the container is already at its 1200px maximum, so
   the spill lands outside the viewport and the page scrolls sideways. Keep the
   bleed only where there is room for it. */
@media (min-width: 861px) and (max-width: 1360px) {
  .lp-orbit { width: min(100%, 38rem); margin-right: auto; }
}
/* The hero field is Cosmos Blue, which pulls every trail cool, a warm Sisal
   body composited over it reads blue. A soft Royal-Black well behind the
   canvas lets the three bodies keep their own colour, and focuses the eye. */
.lp-orbit::before {
  content: ""; position: absolute; inset: -6% -6% 8%;
  background: radial-gradient(closest-side, rgba(3,3,3,.82), rgba(3,3,3,.55) 55%, rgba(3,3,3,0) 100%);
  pointer-events: none;
}
.lp-orbit__stage { position: relative; }
.lp-orbit canvas {
  display: block; width: 100%; aspect-ratio: 1 / 1; position: relative;
}

/* ---- Touch play area ------------------------------------------------------
   On a touch screen there is no hover, so the third mass is driven by a finger
   drag, and a finger drag is also how you scroll. Rather than kill scrolling
   across the whole hero (which would trap the reader on a screen the orbit
   nearly fills), one deliberately small patch centred on the pair opts out of
   panning. Inside it a drag plays the orbit; a few dozen pixels outside it the
   page scrolls as usual, so there is always an easy way past.
   Sized to cover the strong-influence radius (R_NEAR in hero.js) with margin. */
.lp-orbit__hit {
  position: absolute; left: 50%; top: 50%;
  width: 70%; aspect-ratio: 1 / 1; transform: translate(-50%, -50%);
  border-radius: 50%; z-index: 2;
  pointer-events: none;          /* inert for mice, the comet owns the pointer */
}
/* any-pointer, not pointer: a touchscreen laptop should get the play area even
   though its primary pointer is a mouse. Pointer events bubble to the hero
   either way, so switching this on costs mouse users nothing. */
@media (any-pointer: coarse) {
  .lp-orbit__hit {
    pointer-events: auto;
    touch-action: none;          /* the browser stops treating a drag here as a scroll */
    -webkit-user-select: none; user-select: none;
    -webkit-touch-callout: none;
    -webkit-tap-highlight-color: transparent;
  }
}

/* ---- Copy lock on touch ---------------------------------------------------
   A press-and-drag over the hero used to start a text selection: the magnifier
   appeared, the handles came up, and the gravity interaction was lost behind a
   selection the reader never wanted. Hero copy is not the sort of text anyone
   long-presses to quote, so on touch devices it is simply not selectable.
   Deliberately scoped to the hero, body copy further down the page stays
   selectable, quotable and translatable. */
@media (pointer: coarse) {
  .lp-hero, .lp-hero * {
    -webkit-user-select: none; user-select: none;
    -webkit-touch-callout: none;
    -webkit-tap-highlight-color: transparent;
  }
  /* …but never lock a field the reader has to type into. */
  .lp-hero input, .lp-hero textarea {
    -webkit-user-select: text; user-select: text;
  }
}
.lp-orbit__cap {
  margin: 0; text-align: center; position: relative;
  font-family: var(--g-font-mono);
  font-size: var(--g-fs-caption);
  letter-spacing: .04em;
  color: var(--g-text-subtle);
}
.lp-orbit__cap span { color: var(--g-text-muted); transition: color var(--g-dur) var(--g-ease-orbit); }
.lp-orbit__cap #lp-orbit-name { font-weight: var(--g-w-medium); }
@media (max-width: 860px) {
  .lp-hero__grid { grid-template-columns: minmax(0, 1fr); text-align: center; }
  .lp-hero { min-height: 0; padding-block: var(--g-space-3xl); }
  .g-hero__inner .g-cluster { justify-content: center; }
  /* The orbit used to be pulled above the copy on a phone (order: -1), where a
     square canvas plus its caption ate most of the first screen and the
     headline started below the fold. It reads better as the reward *after*
     the pitch: title, lede, buttons, then the thing you can play with, which
     also puts it under the thumb rather than under the status bar. */
  .lp-orbit { order: 0; width: min(78%, 20rem); margin-inline: auto;
              margin-top: var(--g-space-xl); }
  .lp-hero__credit { justify-content: center; }
}

/* ---- Button interaction --------------------------------------------------
   The hero hides the native cursor for the comet, which is white, and a white
   comet on a white button reads as nothing happening. So the primary button
   inverts on hover: the fill goes Cosmos Blue and the label goes white, which
   makes the state change unmistakable and lets the comet stay visible on top. */
.g-btn--primary:hover,
.g-btn--primary:focus-visible {
  --_bg: var(--g-solid-bg-hover);
  --_fg: var(--g-solid-fg-hover);
  --_bd: var(--g-solid-bg);
  box-shadow: var(--g-glow-md), 0 0 0 4px rgb(var(--g-tint) / 0.20);
}
.g-btn--primary .g-btn__icon { transition: transform var(--g-dur) var(--g-ease-orbit); }
.g-btn--primary:hover .g-btn__icon { transform: translateX(2px); }
/* ...but never on the header CTA: on mobile it's an icon-only circle, so the
   nudge just knocks the glyph off-centre. */
.lp-header__cta:hover .g-btn__icon,
.lp-header__cta:focus-visible .g-btn__icon { transform: none; }

/* ---- Section head with an "all" link (PBS pattern) ---- */
.lp-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--g-space-sm); margin-bottom: var(--g-space-xl); flex-wrap: nowrap; }
/* The h2 keeps a 1rem bottom margin, so flex-end was aligning the link to the
   margin box and dropping it below the heading. Zero it out, and let the
   heading shrink so the link stays on the heading's line at every width. */
.lp-head .g-section-head { margin-bottom: 0; min-width: 0; }
.lp-head .g-section-head h2 { margin-bottom: 0; }
.lp-head__link { flex: none; white-space: nowrap; font-size: var(--g-fs-small); font-weight: var(--g-w-medium); color: var(--g-text-muted); text-decoration: none; display: inline-flex; align-items: center; gap: var(--g-space-3xs); }
.lp-head__link:hover { color: var(--g-text); }
.lp-head__link svg { width: 1rem; height: 1rem; flex: none; }
@media (max-width: 560px) {
  .lp-head { margin-bottom: var(--g-space-lg); }
}
@media (max-width: 380px) {
  /* Below this the link can't sit beside the heading without wrapping into an
     odd half-indent, so stack it deliberately. */
  .lp-head { flex-direction: column; align-items: flex-start; gap: var(--g-space-2xs); }
}

.lp-filter:hover { color: var(--g-text); border-color: var(--g-border-strong); }
.lp-filter.is-active { background: var(--g-white-tint); color: var(--g-cosmos-600); border-color: var(--g-white-tint); }

/* ---- Featured episode (large, PBS "Watch Now" hero-of-section) ---- */
.lp-featured { display: grid; grid-template-columns: 1.4fr 1fr; gap: 0; overflow: hidden; align-items: stretch; }
.lp-featured__media { position: relative; min-height: 100%; background: var(--g-grad-deep-space); overflow: hidden; }
.lp-featured__media::after { content:''; position:absolute; inset:0; background: radial-gradient(circle at 50% 50%, rgb(3 3 3 / .35), transparent 60%); z-index:2; pointer-events:none; }
.lp-featured__body { padding: clamp(1.5rem, 3vw, 2.5rem); display: flex; flex-direction: column; justify-content: center; }
.lp-play {
  position: absolute; inset: 0; display: grid; place-items: center; z-index: 4;
  background: none; border: 0; cursor: pointer; color: var(--g-white-tint);
}
.lp-play span {
  width: 4.5rem; height: 4.5rem; border-radius: 50%;
  border: 1.5px solid rgb(241 239 236 / 0.7); background: rgb(3 3 3 / 0.35);
  display: grid; place-items: center; backdrop-filter: blur(4px);
  transition: transform var(--g-dur) var(--g-ease-orbit), background-color var(--g-dur) var(--g-ease-orbit);
}
.lp-featured:hover .lp-play span { transform: scale(1.08); background: rgb(0 48 73 / 0.6); }
.lp-play svg { width: 1.4rem; height: 1.4rem; margin-left: 3px; }
@media (max-width: 760px) { .lp-featured { grid-template-columns: minmax(0, 1fr); } .lp-featured__media { aspect-ratio: 16/9; min-height: 0; } }

/* thumbnail specimen (built from tokens, house style) */
.lp-thumb { position: absolute; inset: 0; display: flex; align-items: center; padding: 7%; overflow: hidden; }
/* Thumbnail headlines must scale with the CARD, not the viewport. The old
   clamp(..., 3vw, 2.4rem) set a 38px headline inside a ~148px card box on
   desktop, so long words like "SPACETIME" overflowed and were clipped.
   Container queries size the text against the thumbnail itself; the plain
   clamp below is the fallback for browsers without container support. */
.lp-thumb h3 {
  position: relative; z-index: 2;
  font-size: clamp(0.9rem, 1.6vw, 1.5rem);
  font-weight: var(--g-w-black); text-transform: uppercase;
  letter-spacing: -0.02em; line-height: 1.05; margin: 0;
  max-width: 74%;
  overflow-wrap: break-word; hyphens: auto;
}
@supports (container-type: inline-size) {
  .g-video-card__thumb, .lp-featured__media { container-type: inline-size; }
  .g-video-card__thumb .lp-thumb h3 { font-size: clamp(0.9rem, 8.4cqw, 1.75rem); }
  .lp-featured__media .lp-thumb h3 { font-size: clamp(1.1rem, 5.6cqw, 2.4rem); }
}
/* Featured headline gets more room as the card narrows */
.lp-featured__headline { max-width: 58%; }
@media (max-width: 760px) { .lp-featured__headline { max-width: 78%; } }
.lp-thumb__mark { position: absolute; top: 6%; right: 5%; width: 7%; min-width: 22px; opacity: 0.75; z-index: 3; }


/* ---- About ---- */
/* About runs straight into the subscribe band, so two full section paddings
   stacked up to 240px of dead space. Trim both sides of that seam. */
#about { padding-bottom: calc(var(--g-section-y) * 0.4); }
#subscribe { padding-top: calc(var(--g-section-y) * 0.4); }
.lp-about { display: grid; grid-template-columns: 1fr 1.15fr; gap: clamp(2rem,5vw,4.5rem); align-items: center; }
.lp-about__portrait { width: min(112%, 34rem); margin-left: -6%; position: relative; }
.lp-about__portrait img {
  display: block; width: 100%; height: auto;
  filter: drop-shadow(0 0 48px rgba(241, 239, 236, 0.14))
          drop-shadow(0 20px 44px rgba(3, 3, 3, 0.5));
}
@media (max-width: 780px) { .lp-about { grid-template-columns: minmax(0, 1fr); } .lp-about__portrait { width: min(76%, 22rem); margin-inline: auto; } }

/* ---- Newsletter band ---- */
.lp-cta-band { position: relative; overflow: hidden; background: var(--g-grad-deep-space); border-radius: var(--g-radius-lg); padding: clamp(2.5rem, 5vw, 4.5rem); text-align: center; isolation: isolate; }
@media (max-width: 420px) { .lp-cta-band { padding: var(--g-space-xl) var(--g-space-md); } }
.lp-cta-band__inner { position: relative; z-index: 2; max-width: 40rem; margin-inline: auto; }
.lp-cta-band .g-inline-form { justify-content: center; max-width: 30rem; margin-inline: auto; }

/* small reveal on scroll (respects reduced-motion via the system reset) */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity var(--g-dur-slow) var(--g-ease-orbit), transform var(--g-dur-slow) var(--g-ease-orbit); }
.reveal.is-in { opacity: 1; transform: none; }

/* ---- Hero lede, split into two weights -----------------------------------
   The copy is three sentences of real information. Set at one size it read as
   a paragraph to be got through; the eye skipped it and went to the buttons.
   Splitting it costs nothing in words and buys a clear entry point: the
   promise at lead size, the detail a step quieter for whoever wants it. */
.lp-hero__lede {
  margin-bottom: var(--g-space-xs); color: var(--g-text);
  max-width: 34ch; text-wrap: pretty;
}
.lp-hero__sub {
  font-size: var(--g-fs-small); line-height: 1.6;
  color: var(--g-text-muted); max-width: 54ch; margin: 0; text-wrap: pretty;
}
@media (max-width: 860px) {
  .lp-hero__lede, .lp-hero__sub { margin-inline: auto; }
}
.lp-hero__credit a { color: inherit; text-decoration-color: var(--g-border-strong); }
.lp-hero__credit a:hover { color: var(--g-text); }

/* ---- Fields band ---------------------------------------------------------
   One line, directly under the hero, answering the question a non-physicist
   asks first. Set as data rather than prose, a list of nouns is read in a
   glance, a sentence claiming breadth is read as marketing.

   As a static wrapped list it was ten quiet words that the eye filed as a
   footer and skipped. Moving turns it into the one thing on the page that
   asks to be looked at, which is exactly the job: it is the answer to
   "is this for me?", and it has to be noticed to work. Same type size, same
   band height, the change is in the layout, not the volume. */
.fields {
  border-bottom: 1px solid var(--g-hairline);
  background: var(--g-bg-deep);
  padding-block: var(--g-space-sm);
  overflow: hidden;
}
.fields__in { display: flex; align-items: center; gap: var(--g-space-md); }

/* The label is the fixed point the ticker runs past, so it gets a rule to
   sit against rather than floating in front of moving text. */
.fields__lab {
  margin: 0; flex: none;
  display: inline-flex; align-items: center; gap: .5rem;
  padding-right: var(--g-space-md);
  border-right: 1px solid var(--g-hairline);
  font-family: var(--g-font-mono); font-size: var(--g-fs-eyebrow);
  letter-spacing: .14em; text-transform: uppercase; color: var(--g-text-subtle);
  line-height: 1.4;
}
.fields__lab::before {
  content: ""; width: .4rem; height: .4rem; border-radius: 50%;
  background: var(--g-accent); flex: none;
}

/* The rail. The mask is what makes it read as a continuous strip rather than
   words being clipped by a box edge, they arrive and leave, rather than
   appearing and vanishing. */
.fields__ticker {
  flex: 1 1 auto; min-width: 0;
  display: flex; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 3rem,
                        #000 calc(100% - 3rem), transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 3rem,
                #000 calc(100% - 3rem), transparent 100%);
}
.fields__list {
  display: flex; flex: none; list-style: none; margin: 0; padding: 0;
  animation: fields-roll 42s linear infinite;
}

/* The rail is a signal, not a control: it does not stop under the cursor and
   it cannot be selected. Both for the same reason, a strip of moving text
   that reacts to a pointer invites people to try to grab it, and on a phone a
   long press on a moving line puts up selection handles over the one band on
   the page whose whole job is to be glanced at. */
.fields {
  -webkit-user-select: none; user-select: none;
  -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent;
}

.fields__list li {
  display: inline-flex; align-items: center; white-space: nowrap;
  font-size: var(--g-fs-small); line-height: 1.4; color: var(--g-text-muted);
}
/* The separator belongs *between* two fields, so it is drawn before each item
   with equal margins on both sides. As an ::after with padding on the item it
   inherited .85rem on one side and .85rem + the next item's padding on the
   other, sitting a third of the way off centre, closer to the word it
   followed. */
.fields__list li::before {
  content: ""; width: 3px; height: 3px; border-radius: 50%; flex: none;
  align-self: center;
  background: var(--g-border-strong); margin-inline: .95rem;
}
@keyframes fields-roll { from { transform: none; } to { transform: translateX(-100%); } }

@media (prefers-reduced-motion: reduce) {
  /* The site-wide reduced-motion rule only clamps duration and iteration count,
     which on a ticker is worse than useless: it would jump the track to its end
     position and park the first copy off-screen. Kill the animation by name and
     drop the duplicates, leaving a plain scrollable row. */
  .fields__list { animation: none; }
  .fields__list[aria-hidden] { display: none; }
  .fields__ticker { overflow-x: auto; scrollbar-width: none; }
  .fields__ticker::-webkit-scrollbar { display: none; }
}

@media (max-width: 620px) {
  /* Side by side, the label leaves the rail about a word and a half wide. */
  .fields__in { flex-direction: column; align-items: stretch; gap: .3rem; }
  .fields__lab { border-right: 0; padding-right: 0; }
}

/* ---- Reading time --------------------------------------------------------
   A label and a value, not a sentence. The mono label sets it apart from the
   prose above it so the eye can find the commitment without reading for it -
   which is the only reason anyone looks for a reading time. */
.lp-rt { margin: var(--g-space-md) 0 0; }
.lp-rt dt {
  font-family: var(--g-font-mono); font-size: var(--g-fs-caption);
  letter-spacing: .1em; text-transform: uppercase;
  color: var(--g-text-subtle); margin-bottom: .15rem;
}
.lp-rt dd { margin: 0; font-size: var(--g-fs-small); color: var(--g-text-muted); }
