/* Launchpad — coming soon & maintenance page.
   One signature moment: the split-flap countdown. Everything around it stays quiet. */

:root {
	--alp-bg: #0b1019;
	--alp-bg2: #101827;
	--alp-panel: rgba(255,255,255,.045);
	--alp-line: rgba(255,255,255,.1);
	--alp-text: #eef1f6;
	--alp-muted: #98a3b8;
	--alp-flap: #1a2232;
	--alp-flap2: #161d2b;
	--alp-digit: #f4f1e8;
	--alp-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--alp-r: 18px;
	--alp-ease: cubic-bezier(.22,.7,.2,1);
}
.alp--brandfont { --alp-font: "Launchpad", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
.alp--paper {
	--alp-bg: #e8ecf1;
	--alp-bg2: #f5f7fa;
	--alp-panel: #ffffff;
	--alp-line: #d7dee8;
	--alp-text: #0b1220;
	--alp-muted: #556178;
}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
html:has(body.alp) { background: #0b1019; }
html:has(body.alp--paper) { background: #e8ecf1; }
body.alp { font-family: var(--alp-font); color: var(--alp-text); line-height: 1.6; -webkit-font-smoothing: antialiased; background: transparent; min-height: 100vh; }
body.alp::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: radial-gradient(1100px 700px at 88% -10%, color-mix(in srgb, var(--alp-accent) 26%, transparent), transparent 62%), linear-gradient(180deg, var(--alp-bg2), var(--alp-bg)); }
.alp--paper.alp::before { background: radial-gradient(1000px 640px at 90% -12%, color-mix(in srgb, var(--alp-accent) 16%, transparent), transparent 60%), linear-gradient(180deg, var(--alp-bg2), var(--alp-bg)); }
.alp-photo { position: fixed; inset: 0; z-index: -1; isolation: isolate; background-size: cover; background-position: center; }
.alp-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(8,12,20,.94) 0%, rgba(8,12,20,.82) 45%, rgba(8,12,20,.55) 100%); }
.alp--paper .alp-photo::after { background: linear-gradient(100deg, rgba(240,243,247,.97) 0%, rgba(240,243,247,.9) 50%, rgba(240,243,247,.7) 100%); }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--alp-accent); outline-offset: 3px; }
.alp-sr, .alp-hp { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.alp-wrap { width: 100%; max-width: 1280px; margin: 0 auto; padding: clamp(20px, 3.5vw, 40px) clamp(20px, 5vw, 64px); min-height: 100vh; display: flex; flex-direction: column; }

/* Top */
.alp-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.alp-logo { display: block; height: clamp(40px, 6vw, 58px); width: auto; }
.alp--board .alp-logo { filter: drop-shadow(0 2px 10px rgba(0,0,0,.35)); }
.alp-brand--plate { padding: 10px 16px; border-radius: 14px; background: #fff; box-shadow: 0 10px 30px -14px rgba(0,0,0,.55); }
.alp-brand--plate .alp-logo { height: clamp(34px, 5vw, 48px); filter: none; }
.alp-sitename { font-weight: 800; font-size: 1.25rem; letter-spacing: -.02em; }
.alp-badge { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px 8px 12px; border-radius: 999px; border: 1px solid var(--alp-line); background: var(--alp-panel); font-size: .85rem; font-weight: 600; white-space: nowrap; }
.alp-badge i { width: 8px; height: 8px; border-radius: 50%; background: var(--alp-accent); box-shadow: 0 0 0 0 var(--alp-accent); animation: alp-ping 2s ease-out infinite; }
.alp--maintenance .alp-badge i { --dot: #f5b83d; background: #f5b83d; }
@keyframes alp-ping { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--dot, var(--alp-accent)) 65%, transparent); } 80%, 100% { box-shadow: 0 0 0 9px transparent; } }

/* Main */
.alp-main { flex: 1; display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, .85fr); gap: clamp(32px, 6vw, 96px); align-items: center; padding: clamp(32px, 6vh, 72px) 0; }
.alp-main--solo { grid-template-columns: minmax(0, 1fr); max-width: 860px; }
.alp-h { margin: 0 0 20px; font-size: clamp(2.4rem, 5.2vw, 4.5rem); line-height: 1; letter-spacing: -.035em; font-weight: 750; text-wrap: balance; max-width: 15ch; animation: alp-rise .9s var(--alp-ease) both; }
.alp-lead { margin: 0; max-width: 34em; font-size: clamp(1.05rem, 1.4vw, 1.2rem); color: var(--alp-muted); animation: alp-rise .9s .08s var(--alp-ease) both; }
@keyframes alp-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* Split-flap countdown */
.alp-count { margin-top: clamp(26px, 4vh, 40px); animation: alp-rise .9s .16s var(--alp-ease) both; }
.alp-count__label { margin: 0 0 12px; font-size: .9rem; font-weight: 600; color: var(--alp-muted); }
.alp-flaps { display: flex; align-items: flex-start; gap: clamp(6px, 1.2vw, 14px); flex-wrap: nowrap; }
.alp-unit { display: grid; gap: 10px; justify-items: center; }
.alp-digits { display: flex; gap: clamp(3px, .5vw, 6px); }
.alp-unit__l { font-size: .75rem; font-weight: 600; color: var(--alp-muted); }
.alp-colon { align-self: flex-start; width: 6px; height: clamp(64px, 8vw, 104px); position: relative; }
.alp-colon::before, .alp-colon::after { content: ""; position: absolute; left: 0; width: 6px; height: 6px; border-radius: 50%; background: var(--alp-muted); opacity: .7; }
.alp-colon::before { top: 33%; } .alp-colon::after { top: 60%; }
.alp-fd { --h: clamp(64px, 8vw, 104px); position: relative; display: block; width: calc(var(--h) * .68); height: var(--h); perspective: 400px; font-weight: 700; font-size: calc(var(--h) * .74); line-height: var(--h); color: var(--alp-digit); text-align: center; font-variant-numeric: tabular-nums; border-radius: 10px; box-shadow: 0 18px 30px -16px rgba(0,0,0,.6), 0 2px 0 rgba(0,0,0,.25); }
.alp-fd__h { position: absolute; left: 0; right: 0; height: 50%; overflow: hidden; background: var(--alp-flap); backface-visibility: hidden; }
.alp-fd__t { top: 0; border-radius: 10px 10px 0 0; background: linear-gradient(180deg, color-mix(in srgb, var(--alp-flap) 82%, #fff), var(--alp-flap)); }
.alp-fd__b { bottom: 0; border-radius: 0 0 10px 10px; background: var(--alp-flap2); }
.alp-fd__h > span { display: block; height: var(--h); }
.alp-fd__b > span { transform: translateY(-50%); }
.alp-fd::after { content: ""; position: absolute; left: 0; right: 0; top: calc(50% - 1px); height: 2px; background: rgba(0,0,0,.55); z-index: 3; }
.alp-fd::before { content: ""; position: absolute; top: calc(50% - 4px); width: 4px; height: 8px; left: -1px; background: rgba(0,0,0,.6); border-radius: 0 2px 2px 0; z-index: 4; box-shadow: calc(var(--h) * .68 - 2px) 0 0 rgba(0,0,0,.6); }
.alp-fd__fl { z-index: 2; transform-origin: 50% 100%; }
.alp-fd__fl.alp-fd__b { transform-origin: 50% 0; }
.alp-fd__fl.is-down { animation: alp-flip-t .28s ease-in forwards; }
.alp-fd__fl.is-up { transform: rotateX(90deg); animation: alp-flip-b .28s .28s ease-out forwards; }
@keyframes alp-flip-t { from { transform: rotateX(0); filter: brightness(1); } to { transform: rotateX(-90deg); filter: brightness(.6); } }
@keyframes alp-flip-b { from { transform: rotateX(90deg); filter: brightness(1.4); } to { transform: rotateX(0); filter: brightness(1); } }
.alp-count__date { margin: 14px 0 0; font-size: .9rem; color: var(--alp-muted); }
.alp-count.is-zero .alp-flaps { opacity: .5; }
.alp-count__zero { margin: 14px 0 0; font-weight: 700; font-size: 1.1rem; }

/* Notify form */
.alp-form { margin-top: clamp(26px, 4vh, 36px); max-width: 520px; animation: alp-rise .9s .24s var(--alp-ease) both; }
.alp-form__t { margin: 0 0 10px; font-weight: 600; }
.alp-form__row { display: flex; gap: 6px; padding: 6px; border-radius: 999px; background: var(--alp-panel); border: 1px solid var(--alp-line); transition: border-color .2s, box-shadow .2s; }
.alp-form__row:focus-within { border-color: var(--alp-accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--alp-accent) 22%, transparent); }
.alp-form input[type="email"] { flex: 1; min-width: 0; border: 0; background: none; color: var(--alp-text); font: 500 1rem var(--alp-font); padding: 0 16px; }
.alp-form input[type="email"]::placeholder { color: var(--alp-muted); opacity: .8; }
.alp-form input[type="email"]:focus { outline: none; }
.alp-form button { display: inline-flex; align-items: center; gap: 8px; border: 0; border-radius: 999px; padding: 13px 22px; background: var(--alp-accent); color: var(--alp-on-accent); font: 700 .95rem var(--alp-font); cursor: pointer; transition: transform .2s var(--alp-ease), filter .2s; }
.alp-form button:hover { transform: translateY(-1px); filter: brightness(1.08); }
.alp-form button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s var(--alp-ease); }
.alp-form button:hover svg { transform: translateX(3px); }
.alp-form button[disabled] { opacity: .6; cursor: progress; }
.alp-form__c { margin: 10px 0 0 4px; font-size: .8rem; color: var(--alp-muted); }
.alp-form__msg { margin: 10px 0 0 4px; font-weight: 600; min-height: 1.6em; }
.alp-form__msg.is-ok { color: #5fd39a; } .alp--paper .alp-form__msg.is-ok { color: #11804d; }
.alp-form__msg.is-err { color: #ff8a80; } .alp--paper .alp-form__msg.is-err { color: #b42318; }
.alp-form.is-done .alp-form__row { display: none; }

/* Launch checklist */
.alp-board { border-radius: var(--alp-r); background: var(--alp-panel); border: 1px solid var(--alp-line); padding: clamp(22px, 3vw, 32px); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); animation: alp-rise .9s .3s var(--alp-ease) both; }
.alp--paper .alp-board { box-shadow: 0 24px 50px -30px rgba(11,18,32,.35); }
.alp-board__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.alp-board h2 { margin: 0; font-size: 1.05rem; font-weight: 700; letter-spacing: -.01em; }
.alp-pct { margin: 0; font-size: 2.4rem; font-weight: 750; letter-spacing: -.03em; line-height: 1; font-variant-numeric: tabular-nums; }
.alp-bar { height: 6px; border-radius: 6px; background: var(--alp-line); overflow: hidden; margin: 14px 0 18px; }
.alp-bar span { display: block; height: 100%; width: var(--p); border-radius: inherit; background: var(--alp-accent); transform-origin: left; animation: alp-grow 1.4s .5s var(--alp-ease) both; }
@keyframes alp-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.alp-steps { list-style: none; margin: 0; padding: 0; }
.alp-step { display: grid; grid-template-columns: 26px 1fr auto; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--alp-line); animation: alp-rise .7s calc(.5s + var(--i) * .08s) var(--alp-ease) both; }
.alp-step__ico { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--alp-line); position: relative; }
.alp-step--done .alp-step__ico { background: var(--alp-accent); border-color: var(--alp-accent); }
.alp-step--done .alp-step__ico::after { content: ""; position: absolute; left: 6px; top: 3px; width: 5px; height: 10px; border: solid var(--alp-on-accent); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.alp-step--now .alp-step__ico { border-color: var(--alp-accent); }
.alp-step--now .alp-step__ico::after { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: var(--alp-accent); animation: alp-pulse 1.6s ease-in-out infinite; }
@keyframes alp-pulse { 50% { transform: scale(.55); opacity: .5; } }
.alp-step__t { font-weight: 600; }
.alp-step--next .alp-step__t { color: var(--alp-muted); }
.alp-step__s { font-size: .75rem; font-weight: 600; color: var(--alp-muted); }
.alp-step--now .alp-step__s { color: var(--alp-accent); }
.alp--board .alp-step--now .alp-step__s { color: color-mix(in srgb, var(--alp-accent) 55%, #fff); }

/* Footer */
.alp-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; padding-top: 22px; border-top: 1px solid var(--alp-line); font-size: .9rem; }
.alp-contact { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.alp-contact a, .alp-contact span { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; color: var(--alp-text); }
.alp-contact a:hover { color: var(--alp-accent); }
.alp-contact svg, .alp-social svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
.alp-social { list-style: none; display: flex; gap: 8px; margin: 0; padding: 0; }
.alp-social a { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--alp-line); color: var(--alp-text); transition: border-color .2s, color .2s; }
.alp-social a:hover { border-color: var(--alp-accent); color: var(--alp-accent); }
.alp-legal { margin: 0; width: 100%; color: var(--alp-muted); font-size: .8rem; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px; }
.alp-credit { display: inline-flex; align-items: center; gap: .45em; color: var(--alp-muted); text-decoration: none; font-size: .8rem; letter-spacing: .01em; }
.alp-credit strong { position: relative; color: var(--alp-text); font-weight: 650; }
.alp-credit strong::after { content: ""; position: absolute; left: 0; right: 0; bottom: -3px; height: 1.5px; background: var(--alp-accent); transform: scaleX(0); transform-origin: left; transition: transform .45s cubic-bezier(.2,.7,.2,1); }
a.alp-credit:hover strong::after, a.alp-credit:focus-visible strong::after { transform: scaleX(1); }
.alp-credit:focus-visible { outline: 2px solid var(--alp-accent); outline-offset: 4px; border-radius: 4px; }
.alp-heart { display: inline-grid; place-items: center; width: 1em; height: 1em; vertical-align: -.1em; }
.alp-heart svg { width: 1em; height: 1em; fill: #e5484d; transform-origin: center; }
.alp-heart svg { animation: alp-beat 1.4s ease-in-out infinite; }
.alp-credit:hover .alp-heart svg { animation-duration: .9s; }
@keyframes alp-beat { 0%, 100% { transform: scale(1); } 15% { transform: scale(1.25); } 30% { transform: scale(1); } 45% { transform: scale(1.18); } 60% { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) { .alp-heart svg, .alp-credit:hover .alp-heart svg { animation: none; } .alp-credit strong::after { transition: none; } }

@media (max-width: 900px) {
	.alp-main { grid-template-columns: 1fr; padding-top: 44px; }
	.alp-h { max-width: none; }
}
@media (max-width: 520px) {
	.alp-fd { --h: 56px; }
	.alp-colon { height: 56px; width: 4px; }
	.alp-colon::before, .alp-colon::after { width: 4px; height: 4px; }
	.alp-flaps { gap: 5px; }
	.alp-form__row { flex-direction: column; border-radius: 18px; }
	.alp-form input[type="email"] { padding: 12px 14px; }
	.alp-form button { justify-content: center; }
	.alp-badge { font-size: .75rem; padding: 6px 10px; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-delay: 0s !important; transition-duration: .01ms !important; }
}

/* Construction scene */
.alp-scene { margin: 8px calc(clamp(20px, 5vw, 64px) * -1) 0; pointer-events: none; }
.alp-sc { display: block; width: 100%; height: auto; max-height: 240px; overflow: visible;
	--sc-line: rgba(255,255,255,.2); --sc-far: rgba(255,255,255,.035); --sc-farline: rgba(255,255,255,.07); --sc-slab: #141c2b; --sc-win: rgba(255,255,255,.06); --sc-lit: #ffd36b; --sc-steel: #9fb2cc; --sc-crane: var(--alp-accent); }
.alp--paper .alp-sc { --sc-line: #b6c1d0; --sc-far: rgba(11,18,32,.035); --sc-farline: rgba(11,18,32,.08); --sc-slab: #ffffff; --sc-win: #dfe6ef; --sc-lit: #ffd36b; --sc-steel: #54657e; }
.alp-sc line, .alp-sc path { stroke: var(--sc-line); stroke-width: 1.5; fill: none; stroke-linecap: round; }
.sc-far rect { fill: var(--sc-far); stroke: var(--sc-farline); }
.sc-ground { stroke-width: 2 !important; }
.sc-slab { fill: var(--sc-slab); stroke: var(--sc-line); }
.sc-win { fill: var(--sc-win); }
.sc-lit { fill: var(--sc-lit); opacity: .85; animation: sc-flick 9s var(--d, 2s) infinite; }
@keyframes sc-flick { 0%, 92%, 100% { opacity: .85; } 94% { opacity: .25; } 96% { opacity: .85; } 97% { opacity: .4; } }
.sc-floor { transform-box: fill-box; transform-origin: 50% 100%; animation: sc-rise .55s calc(.4s + var(--i) * .14s) cubic-bezier(.3,1.4,.5,1) both; }
@keyframes sc-rise { from { transform: scaleY(0); opacity: 0; } to { transform: scaleY(1); opacity: 1; } }
.sc-steel line { stroke: var(--sc-steel); stroke-width: 2.4; stroke-dasharray: 1; stroke-dashoffset: 1; animation: sc-draw .5s calc(.6s + var(--i) * .14s + var(--j, 0) * .08s) ease-out forwards; }
.sc-steel .sc-beam { animation-delay: calc(1.2s + var(--i) * .14s); }
.sc-steel .sc-brace { stroke-width: 1.5; animation-delay: calc(1.4s + var(--i) * .14s); }
@keyframes sc-draw { to { stroke-dashoffset: 0; } }
.sc-crane line, .sc-crane path { stroke: var(--sc-crane); stroke-width: 2; }
.sc-crane .sc-lace { stroke-width: 1.1; opacity: .75; }
.sc-crane .sc-thick { stroke-width: 4; }
.sc-cw { fill: var(--sc-crane); opacity: .7; }
.sc-cab { fill: var(--sc-crane); }
.sc-tr { fill: var(--sc-crane); }
.sc-cable { stroke: var(--sc-line) !important; stroke-width: 1.2 !important; }
.sc-ibeam { fill: var(--sc-steel); }
.sc-trolley { transform: translateX(800px); animation: sc-trolley 11s ease-in-out infinite; }
@keyframes sc-trolley { 0%, 100% { transform: translateX(860px); } 45%, 55% { transform: translateX(720px); } }
.sc-hook { animation: sc-bob 11s ease-in-out infinite; }
@keyframes sc-bob { 0%, 100% { transform: translateY(-30px); } 45%, 55% { transform: translateY(0); } }
.sc-load { transform-box: fill-box; transform-origin: 50% 0; animation: sc-sway 3.2s ease-in-out infinite; }
@keyframes sc-sway { 0%, 100% { transform: rotate(-2.5deg); } 50% { transform: rotate(2.5deg); } }
.sc-beacon { fill: #ff5a4f; animation: sc-blink 1.4s steps(1) infinite; }
.sc-beacon--amber, .sc-work { fill: #f5b83d; }
.sc-work { animation: sc-blink 1s steps(1) infinite; filter: drop-shadow(0 0 6px #f5b83d); }
@keyframes sc-blink { 50% { opacity: .15; } }
.sc-scaf line { stroke: var(--sc-steel); stroke-width: 1.2; opacity: .8; }
.alp-foot--scene { border-top: 0; padding-top: 18px; }
@media (max-width: 700px) {
	.alp-scene { margin-inline: -20px; overflow: hidden; }
	.alp-sc { width: 170%; margin-left: -62%; }
	.sc-far { display: none; }
}

/* Wall scene: framing to drywall */
.alp-sc--wall { --sw-steel: #9fb0c6; --sw-gyp: #d6dce5; --sw-gyp-line: #b7c1cf; --sw-screw: #7c889b; --sw-mud: #f8fafc; --sw-paint: #f3f5f8; --sw-batt: #e8c873; --sw-batt-line: #c49a3c; --sw-tool: var(--alp-accent); --sw-text: var(--alp-muted); }
.alp--paper .alp-sc--wall { --sw-gyp: #d5dce6; --sw-mud: #fbfcfd; --sw-gyp-line: #b3bfcf; --sw-paint: #fbfcfd; }
.sw-steps text { fill: var(--sw-text); font: 600 12px var(--alp-font); }
.sw-steps circle { fill: none; stroke: var(--sc-line); stroke-width: 1.6; }
.sw-step--done circle { fill: var(--alp-accent); stroke: var(--alp-accent); }
.sw-step--done text { fill: var(--alp-text); }
.sw-step--now circle { stroke: var(--alp-accent); stroke-width: 2.4; animation: alp-pulse 1.6s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.sw-step--now text { fill: var(--alp-text); font-weight: 750; }
.sw-step--next { opacity: .55; }
.sw-deck { fill: var(--sc-line); opacity: .6; }
.sw-track rect { fill: var(--sw-steel); }
.sw-l { transform-box: view-box; transform-origin: 200px 0; animation: sw-wipe .8s var(--alp-ease) both; }
@keyframes sw-wipe { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.sw-track { animation-delay: .3s; } .sw-insul { animation-delay: 2.1s; } .sw-board { animation-delay: 2.9s; } .sw-tape { animation-delay: 3.8s; } .sw-paint { animation-delay: 4.6s; }
.sw-stud { transform-box: fill-box; transform-origin: 50% 100%; animation: sc-rise .35s calc(1s + var(--j) * .05s) cubic-bezier(.3,1.4,.5,1) both; }
.sw-stud line { stroke: rgba(40,52,70,.55); stroke-width: 1; }
.sw-dim line { stroke: var(--alp-accent); stroke-width: 1; }
.sw-dim text { fill: var(--alp-accent); font: 700 11px var(--alp-font); text-anchor: middle; }
.sw-dim { opacity: 0; animation: alp-rise .5s 2s both; }
.sw-batt-bg { fill: var(--sw-batt); opacity: .55; }
.sw-batt path, .sw-insul pattern path { stroke: var(--sw-batt-line); }
#sw-batt path { stroke: var(--sw-batt-line); opacity: .7; }
.sw-gyp { fill: var(--sw-gyp); stroke: var(--sw-gyp-line); stroke-width: 1; }
.sw-screw { fill: var(--sw-screw); }
.sw-mud { fill: var(--sw-mud); stroke: rgba(150,165,185,.35); stroke-width: 1; filter: drop-shadow(0 0 3px rgba(255,255,255,.5)); }
.sw-dab { fill: var(--sw-mud); stroke: rgba(150,165,185,.3); stroke-width: .8; }
.sw-paint rect { fill: var(--sw-paint); }
.sw-tool { opacity: 0; animation: alp-fadein .4s forwards; }
@keyframes alp-fadein { to { opacity: 1; } }
.sw-tool--stud { animation-delay: 2s; }
.sw-tool--stud rect { transform-box: fill-box; animation: sw-lift 2.4s 2s ease-in-out infinite; }
@keyframes sw-lift { 0%, 100% { transform: translateY(-46px); opacity: .5; } 50% { transform: translateY(0); opacity: 1; } }
.sw-tool--gun { animation-delay: 3.9s; }
.sw-tool--gun .sw-gun { animation: sw-gun 4.8s 3.9s ease-in-out infinite; transform: translate(var(--x), 70px); }
@keyframes sw-gun { 0%, 100% { transform: translate(var(--x), 70px); } 22% { transform: translate(var(--x), 70px) translateX(-3px); } 50% { transform: translate(var(--x), 200px); } 72% { transform: translate(var(--x), 200px) translateX(-3px); } }
.sw-tool--knife { animation-delay: 4.8s; }
.sw-tool--knife .sw-knife, .sw-tool--fix .sw-knife { transform: translate(var(--x), 70px); animation: sw-sweep 3.6s 4.8s ease-in-out infinite; }
@keyframes sw-sweep { 0%, 100% { transform: translate(var(--x), 60px); } 50% { transform: translate(var(--x), 196px); } }
.sw-tool--fix { animation-delay: 1s; }
.sw-tool--fix .sw-knife { animation: sw-fix 2.6s 1s ease-in-out infinite; }
@keyframes sw-fix { 0%, 100% { transform: translate(calc(var(--x) - 26px), 128px) rotate(-8deg); } 50% { transform: translate(calc(var(--x) + 26px), 146px) rotate(8deg); } }
.sw-tool--roller { animation-delay: 5.6s; }
.sw-tool--roller .sw-roller { transform: translate(var(--x), 80px); animation: sw-sweep 3s 5.6s ease-in-out infinite; }
.sw-body { fill: var(--sw-tool); }
.sw-metal { fill: #c4cdd9; stroke: #5f6c80; stroke-width: 1.4; }
.sw-batt-pack { fill: #2b3445; }
.sw-roll { fill: #f6f8fb; stroke: #9aa6b8; }
.sw-frame { fill: none; stroke: #7c889b !important; stroke-width: 2.4 !important; }
.sw-patch__mud { fill: #f9fafc; stroke: #e3e8ef; filter: drop-shadow(0 0 6px rgba(255,255,255,.4)); }
.sw-patch__crack { stroke: #8a96a8 !important; stroke-width: 1.4 !important; }
.sw-bucket path { fill: #e9edf2; stroke: #9aa6b8 !important; }
.sw-bucket .sw-rim { stroke-width: 3 !important; }
.sw-bucket .sw-handle { fill: none; }
@media (max-width: 700px) {
	.alp-sc--wall { width: 150%; margin-left: -25%; }
	.sw-steps text { font-size: 15px; }
}

/* Maintenance: the wall is already finished; only the patch work moves. */
.alp-sc--done .sw-l, .alp-sc--done .sw-stud, .alp-sc--done .sw-dim { animation: none; opacity: 1; transform: none; }
.alp-sc--done .sw-tool--fix { animation-delay: .4s; }
.alp-sc--done .sw-tool--fix .sw-knife { animation-delay: .4s; }
.alp-sc .sw-metal { fill: #c4cdd9; stroke: #5f6c80; stroke-width: 1.4; }
.alp-sc .sw-patch__crack { fill: none; }

/* 3D wall: framing to drywall, in the progress card */
.alp-board--wall { padding-top: clamp(16px, 2vw, 22px); }
.w3 { margin: 0 0 18px; --w3-slab-t: #232d3e; --w3-slab-f: #1a2231; --w3-slab-e: #141b28; --w3-trk-t: #cfd8e3; --w3-trk-f: #93a1b5; --w3-trk-e: #6f7c90; --w3-st-t: #e3e9f1; --w3-st-f: #aebbcd; --w3-st-e: #7b889c; --w3-ins: #d6b26b; --w3-ins-l: #a9813a; --w3-gyp-f: #dfe5ec; --w3-gyp-t: #f6f8fb; --w3-gyp-e: #b4bdca; --w3-screw: #6c788c; --w3-mud: #f7f9fb; --w3-paint: #eef2f6; }
.alp--paper .w3 { --w3-slab-t: #d3dae4; --w3-slab-f: #bcc6d3; --w3-slab-e: #aab5c4; --w3-gyp-f: #d9e0e9; --w3-paint: #f7f9fb; }
.w3-svg { display: block; width: 100%; height: auto; overflow: visible; }
.w3-svg polygon { stroke-linejoin: round; }
.m-slab.w3-t { fill: var(--w3-slab-t); } .m-slab.w3-f { fill: var(--w3-slab-f); } .m-slab.w3-e { fill: var(--w3-slab-e); }
.w3-chalk { stroke: var(--alp-accent); stroke-width: 1; stroke-dasharray: 3 4; opacity: .7; }
.m-track.w3-t { fill: var(--w3-trk-t); } .m-track.w3-f { fill: var(--w3-trk-f); } .m-track.w3-e { fill: var(--w3-trk-e); }
.m-steel.w3-t { fill: var(--w3-st-t); } .m-steel.w3-f { fill: var(--w3-st-f); } .m-steel.w3-e { fill: var(--w3-st-e); }
.m-steel, .m-track { stroke: rgba(30,40,58,.35); stroke-width: .5; }
.w3-web { fill: none; stroke: #5b677a; stroke-width: .8; }
.m-ins.w3-f { fill: url(#w3-ins); stroke: rgba(120,90,40,.35); stroke-width: .5; }
.w3-ins-bg { fill: var(--w3-ins); } .w3-ins-line { fill: none; stroke: var(--w3-ins-l); stroke-width: .9; opacity: .7; }
.m-gyp.w3-f { fill: var(--w3-gyp-f); stroke: #aeb8c6; stroke-width: .6; } .m-gyp.w3-t { fill: var(--w3-gyp-t); stroke: #c7cfda; stroke-width: .4; } .m-gyp.w3-e { fill: var(--w3-gyp-e); }
.w3-screw { fill: var(--w3-screw); }
.w3-mud { fill: var(--w3-mud); stroke: rgba(150,165,185,.4); stroke-width: .6; }
.w3-dab { fill: var(--w3-mud); }
.w3-paint { fill: var(--w3-paint); stroke: #c6cfdb; stroke-width: .6; }
.w3-patch { fill: #fbfcfd; stroke: #dfe5ec; filter: drop-shadow(0 0 4px rgba(255,255,255,.6)); }
.w3-crack { fill: none; stroke: #55627a; stroke-width: 1.7; stroke-linejoin: round; }

.w3-a { animation-duration: .6s; animation-delay: var(--d, 0s); animation-fill-mode: both; animation-timing-function: cubic-bezier(.3,1.25,.5,1); }
.w3-drop { animation-name: w3-drop; } .w3-slide { animation-name: w3-slide; } .w3-fade { animation-name: w3-fade; animation-timing-function: ease; }
.w3-puff { animation-name: w3-puff; transform-box: fill-box; transform-origin: 50% 100%; }
@keyframes w3-drop { from { opacity: 0; transform: translateY(-46px); } to { opacity: 1; transform: none; } }
@keyframes w3-slide { from { opacity: 0; transform: translate(-26px, 22px); } to { opacity: 1; transform: none; } }
@keyframes w3-puff { from { opacity: 0; transform: scaleY(.25); } to { opacity: 1; transform: none; } }
@keyframes w3-fade { from { opacity: 0; } to { opacity: 1; } }
.w3-tool, .w3-tag { opacity: 0; animation: w3-fade .4s var(--d, 3s) forwards; }
.w3-bob { animation: w3-bob 4.4s ease-in-out infinite; }
@keyframes w3-bob { 0%, 100% { transform: translateY(-46px); } 18% { transform: translate(-3px, -46px); } 50% { transform: translateY(42px); } 68% { transform: translate(-3px, 42px); } }
.w3-sweep { animation: w3-sweep 3.4s ease-in-out infinite; }
@keyframes w3-sweep { 0%, 100% { transform: translateY(-62px); } 50% { transform: translateY(58px); } }
.w3-lift { animation: w3-lift 2.4s ease-in-out infinite; }
@keyframes w3-lift { 0%, 100% { transform: translateY(-40px); opacity: .55; } 55% { transform: translateY(0); opacity: 1; } }
.w3-fix { animation: w3-fix 2.4s ease-in-out infinite; }
@keyframes w3-fix { 0%, 100% { transform: translate(-16px, -4px) rotate(-10deg); } 50% { transform: translate(16px, 6px) rotate(8deg); } }
.w3-tag line { stroke: var(--alp-accent); stroke-width: 1.4; }
.w3-tag circle { fill: var(--alp-accent); }
.w3-tag rect { fill: var(--alp-accent); }
.w3-tag text { fill: var(--alp-on-accent); font: 700 14px var(--alp-font); text-anchor: middle; }
.w3--done .w3-a { animation: none; }
.w3-steps { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: .78rem; font-weight: 600; }
.w3-step { display: inline-flex; align-items: center; gap: 6px; color: var(--alp-muted); }
.w3-step span { width: 9px; height: 9px; border-radius: 50%; border: 1.6px solid var(--alp-line); }
.w3-step--done { color: var(--alp-text); } .w3-step--done span { background: var(--alp-accent); border-color: var(--alp-accent); }
.w3-step--now { color: var(--alp-text); font-weight: 750; } .w3-step--now span { border-color: var(--alp-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--alp-accent) 25%, transparent); animation: alp-pulse 1.6s ease-in-out infinite; }
.w3-step--next { opacity: .6; }

.w3 .sw-body { fill: var(--alp-accent); } .w3 .sw-batt-pack { fill: #2b3445; } .w3 .sw-metal { fill: #c4cdd9; stroke: #5f6c80; stroke-width: 1.4; }
.w3 .sw-roll { fill: #f6f8fb; stroke: #9aa6b8; } .w3 .sw-frame { fill: none; stroke: #7c889b; stroke-width: 2.4; }
.alp-board--wall .w3 { margin-inline: -8px; }

/* Tools, redrawn */
.alp-sc .sw-blade, .w3 .sw-blade { fill: #cfd7e2; stroke: #5f6c80; stroke-width: 1.3; stroke-linejoin: round; }
.alp-sc .sw-blade-hi, .w3 .sw-blade-hi { stroke: #fff; stroke-width: 1.2; opacity: .7; fill: none; }
.alp-sc .sw-ferrule, .w3 .sw-ferrule { fill: #9aa6b7; stroke: #5f6c80; stroke-width: 1; }
.alp-sc .sw-hole, .w3 .sw-hole { fill: #0b1220; opacity: .6; }
.w3 .sw-pole { stroke: #c9b07a; stroke-width: 5; stroke-linecap: round; fill: none; }
.w3 .sw-pad { fill: var(--alp-accent); }
.w3 .sw-paper { fill: #d9c79a; }
.w3 .sw-swivel { fill: #5f6c80; }

/* Taping: knife runs down the seam, mud follows it */
.w3-tape { animation: w3-tape 3.6s 4.4s ease-in-out infinite both; }
@keyframes w3-tape { 0% { transform: translateY(-84px); opacity: 0; } 8% { opacity: 1; } 80% { transform: translateY(80px); opacity: 1; } 90%, 100% { transform: translateY(80px); opacity: 0; } }
.w3-trail { fill: var(--w3-mud);  transform-box: fill-box; transform-origin: 50% 0; animation: w3-trail 3.6s 4.4s ease-in-out infinite both; }
@keyframes w3-trail { 0%, 6% { transform: scaleY(0); opacity: 1; } 80% { transform: scaleY(1); opacity: 1; } 92% { opacity: 1; } 100% { transform: scaleY(1); opacity: 0; } }

/* Sand & finish: pole sander working the surface */
.w3-sand { animation: w3-sand 2.8s 5.1s ease-in-out infinite; }
@keyframes w3-sand { 0%, 100% { transform: translate(0, -60px) rotate(-4deg); } 25% { transform: translate(10px, -10px) rotate(3deg); } 50% { transform: translate(-4px, 50px) rotate(-3deg); } 75% { transform: translate(8px, 0) rotate(4deg); } }

/* Maintenance: crack → mesh tape → mud coat → sanding → smooth, every 11s */
.mt-mesh, .mt-mud, .mt-smooth, .mt-knife, .mt-sander, .mt-dust circle, .mt-t, .mt-ok { animation-duration: 11s; animation-iteration-count: infinite; animation-delay: .6s; animation-fill-mode: both; animation-timing-function: ease-in-out; }
.mt-mesh { transform-box: fill-box; transform-origin: center; animation-name: mt-mesh; }
@keyframes mt-mesh { 0%, 12% { opacity: 0; transform: scale(.7); } 18% { opacity: 1; transform: none; } 95% { opacity: 1; } 100% { opacity: 0; } }
.mt-mud { fill: #dde3ea; stroke: #dde3ea; stroke-width: 8; stroke-linejoin: round; transform-box: fill-box; transform-origin: 0 50%; animation-name: mt-mud; animation-timing-function: linear; }
@keyframes mt-mud { 0%, 28% { transform: scaleX(0); opacity: 1; } 54% { transform: scaleX(1); } 95% { opacity: 1; } 100% { transform: scaleX(1); opacity: 0; } }
.mt-smooth { fill: var(--w3-paint); stroke: var(--w3-paint); stroke-width: 10; stroke-linejoin: round; animation-name: mt-smooth; }
@keyframes mt-smooth { 0%, 70% { opacity: 0; } 84% { opacity: 1; } 95% { opacity: 1; } 100% { opacity: 0; } }
.mt-knife { animation-name: mt-knife; animation-timing-function: linear; }
@keyframes mt-knife { 0%, 25% { opacity: 0; transform: translate(var(--kx0), var(--ky0)); } 28% { opacity: 1; transform: translate(var(--kx0), var(--ky0)); } 54% { opacity: 1; transform: translate(var(--kx1), var(--ky1)); } 58%, 100% { opacity: 0; transform: translate(var(--kx1), var(--ky1)); } }
.mt-sander { animation-name: mt-sander; }
@keyframes mt-sander { 0%, 58% { opacity: 0; transform: translate(calc(var(--sx) - 16px), var(--sy)); } 61% { opacity: 1; transform: translate(calc(var(--sx) - 16px), var(--sy)); } 64% { transform: translate(calc(var(--sx) + 16px), calc(var(--sy) - 7px)); } 67% { transform: translate(calc(var(--sx) - 12px), calc(var(--sy) + 8px)); } 70% { transform: translate(calc(var(--sx) + 14px), calc(var(--sy) + 4px)); } 73% { transform: translate(calc(var(--sx) - 16px), calc(var(--sy) - 5px)); } 76% { transform: translate(calc(var(--sx) + 10px), calc(var(--sy) + 7px)); } 79% { opacity: 1; transform: translate(var(--sx), var(--sy)); } 83%, 100% { opacity: 0; transform: translate(var(--sx), var(--sy)); } }
.mt-dust circle { fill: #fff; transform-box: fill-box; transform-origin: center; animation-name: mt-dust; animation-delay: calc(.6s + var(--i) * .12s); }
@keyframes mt-dust { 0%, 61% { opacity: 0; transform: scale(.3); } 66% { opacity: .8; } 80% { opacity: 0; transform: translateY(-18px) scale(1.6); } 100% { opacity: 0; } }
.mt-tag { opacity: 1; animation: none; }
.mt-t { opacity: 0; }
.mt-t1 { animation-name: mt-t1; } .mt-t2 { animation-name: mt-t2; } .mt-t3 { animation-name: mt-t3; } .mt-t4 { animation-name: mt-t4; } .mt-t5 { animation-name: mt-t5; }
@keyframes mt-t1 { 0%, 12% { opacity: 1; } 14%, 100% { opacity: 0; } }
@keyframes mt-t2 { 0%, 13% { opacity: 0; } 15%, 26% { opacity: 1; } 28%, 100% { opacity: 0; } }
@keyframes mt-t3 { 0%, 27% { opacity: 0; } 29%, 56% { opacity: 1; } 58%, 100% { opacity: 0; } }
@keyframes mt-t4 { 0%, 57% { opacity: 0; } 59%, 82% { opacity: 1; } 84%, 100% { opacity: 0; } }
@keyframes mt-t5 { 0%, 83% { opacity: 0; } 85%, 97% { opacity: 1; } 100% { opacity: 0; } }
.w3-tag .mt-ok { fill: #12a150; opacity: 0; animation-name: mt-ok; }
@keyframes mt-ok { 0%, 83% { opacity: 0; } 85%, 97% { opacity: 1; } 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
	.mt-mesh, .mt-mud, .mt-smooth, .mt-knife, .mt-sander, .mt-dust circle, .mt-t, .mt-ok { animation: none !important; }
	.mt-smooth, .mt-t5 { opacity: 1; } .mt-knife, .mt-sander, .mt-t1, .mt-t2, .mt-t3, .mt-t4 { opacity: 0; }
}

/* Phones: center the whole footer — contact, social, copyright and credit. */
@media (max-width: 640px) {
	.alp-foot { flex-direction: column; justify-content: center; text-align: center; gap: 16px; }
	.alp-contact { flex-direction: column; align-items: center; gap: 10px; }
	.alp-contact a, .alp-contact span { justify-content: center; }
	.alp-social { justify-content: center; }
	.alp-legal { flex-direction: column; align-items: center; text-align: center; gap: 8px; }
	.alp-credit { justify-content: center; }
}

.alp-ts { margin-top: 10px; }
.alp-ts:empty { display: none; }
