.ribbon{background:radial-gradient(ellipse at 50% 85%,#a33b1522,transparent 65%),linear-gradient(180deg,#181e23,#080c10 60%,#191513);box-shadow:inset 0 2px #d4b48c55,inset 0 -2px #7d4b2c55,0 20px 60px #0004}.ribbon:before,.ribbon:after{width:72px;top:18px;bottom:18px;z-index:3;background:repeating-linear-gradient(180deg,#3e3c36 0,#24292c 2px,#12191e 3px,#12191e 23px);border-color:#b2916a66;box-shadow:inset 0 0 25px #0009}.ribbon:before{border-right:2px solid #c48b5366}.ribbon:after{border-left:2px solid #c48b5366}.molten-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.88;mask-image:linear-gradient(0deg,transparent,#000 12%,#000 92%,transparent)}.casting-stage{min-height:290px;width:min(1140px,calc(100% - 185px));padding:34px 12px 24px;z-index:2}.casting-kicker{font-size:10px;letter-spacing:.25em;color:#e0b583;margin-bottom:23px;text-shadow:0 0 14px #ff711e33}.cast-display{min-height:62px;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:0;background:radial-gradient(ellipse,#080d10aa,transparent 75%);padding-block:4px}.ribbon .cast-letter{font-size:clamp(27px,3.5vw,45px);font-weight:700;letter-spacing:.005em}.ribbon .cast-word{margin-inline:9px}.cast-underlay{inset:40px 0 65px;filter:blur(20px)}.casting-rail{height:3px;margin-top:17px;width:78%;background:linear-gradient(90deg,transparent,#d9914f55 30%,#d9914f55 70%,transparent)}.casting-rail:after{width:6px;height:6px;top:-1px;background:#ffe9be;box-shadow:0 0 18px #ff8628,0 0 5px #ffefc4}.casting-footer{width:100%;margin-top:33px;padding:14px 18px;display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #e7b47a44;border-bottom:1px solid #e7b47a22;background:linear-gradient(120deg,#363029dd,#151d24ee 40%,#171a1ded);box-shadow:inset 0 1px #ffddb311,0 8px 22px #0005}.ribbon .casting-footer>span{font-size:9px;letter-spacing:.12em;white-space:nowrap}.ribbon .casting-footer>#cast-count{color:#ffce94;font-size:11px;min-width:55px}.casting-footer>.cast-cycle-label{color:#bea485}.cast-controls{display:flex;align-items:center;border:1px solid #b18e6455;background:#0b1219;flex-shrink:0}.cast-controls button{font:600 10px/1 Foundry,sans-serif;border:0;background:linear-gradient(#2c2e2b,#141b22);color:#eed1ab;min-height:32px;padding:8px 12px;cursor:pointer;transition:background .2s,color .2s}.cast-controls button:hover{background:#674122;color:#fff0cf}.cast-controls button[data-cast-step]{font-size:19px;min-width:34px;padding:3px 9px}.cast-controls .casting-pause{border-inline:1px solid #b18e6433;min-width:116px;letter-spacing:.02em}.cast-heat{display:grid;grid-template-columns:auto 105px 30px;gap:12px;align-items:center;font-size:10px;letter-spacing:.1em;color:#dab487;margin:0;text-transform:uppercase}.cast-heat input{appearance:none;-webkit-appearance:none;width:105px;height:3px;margin:0;padding:0;border:0;border-radius:0;background:linear-gradient(90deg,#8f7562,#ff8d2a,#ffe2a0);box-shadow:0 0 10px #ff711e22;cursor:ew-resize;outline-offset:6px}.cast-heat input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:10px;height:14px;background:linear-gradient(#fff1cc,#ffad5b);border:1px solid #ffd9a8;border-radius:2px;box-shadow:0 0 11px #ff711e77}.cast-heat input::-moz-range-thumb{width:10px;height:14px;background:#ffba72;border:1px solid #ffd9a8;border-radius:2px}.cast-heat output{font-size:9px;letter-spacing:0;color:#ffc98e}.ribbon .casting .cast-letter{animation-name:cast-metal}.ribbon .casting.manual-hold .cast-letter{animation:none;opacity:1;transform:none;color:#e4dace}.casting .cast-ember{bottom:88px}.custom-cursor .cast-controls button{cursor:none}.ribbon.melt-fallback{background:radial-gradient(ellipse at 50% 75%,#a7471733,transparent 65%),#10161b}
@keyframes cast-metal{0%{opacity:0;transform:translateY(13px) rotateX(-55deg);color:#ff7022;text-shadow:0 0 20px #ff711e}12%{opacity:1;transform:none;color:#fff1c9;text-shadow:0 0 12px #ff9d4c99,0 3px 0 #763718}30%{color:#ffd299;text-shadow:0 1px 0 #82451e,0 0 14px #ff711e33}48%,83%{opacity:1;transform:none;color:#e5e4dc;text-shadow:0 1px 0 #585c5e,0 2px 0 #282f34,0 3px 0 #05080b,0 6px 14px #0009}100%{opacity:0;transform:translateY(-3px);color:#a6a7a2;text-shadow:0 2px 0 #000}}
@media(max-width:1000px){.casting-stage{width:calc(100% - 110px)}.ribbon:before,.ribbon:after{width:40px}.casting-footer{gap:12px;padding:12px}.cast-cycle-label{display:none}.cast-heat{grid-template-columns:auto 90px 25px;gap:8px}.cast-heat input{width:90px}}
@media(max-width:700px){.ribbon:before,.ribbon:after{width:10px;top:15px;bottom:15px}.casting-stage{width:calc(100% - 32px);min-height:300px;padding:28px 4px 21px}.casting-kicker{font-size:8px;letter-spacing:.17em;margin-bottom:22px}.ribbon .cast-letter{font-size:clamp(23px,5.9vw,30px)}.ribbon .cast-word{margin-inline:5px}.cast-display{min-height:75px;gap:6px 0}.casting-rail{width:90%;margin-top:13px}.casting-footer{display:grid;grid-template-columns:55px 1fr;padding:12px;gap:14px 12px;margin-top:27px}.ribbon .casting-footer>#cast-count{font-size:10px;grid-column:1;grid-row:1;text-align:left}.cast-controls{grid-column:2;grid-row:1;justify-self:end}.cast-controls button{padding:8px;font-size:9px;min-height:31px}.cast-controls .casting-pause{min-width:102px}.cast-controls button[data-cast-step]{min-width:29px}.cast-heat{grid-column:1/-1;grid-row:2;grid-template-columns:auto 1fr 30px;width:100%;font-size:9px;gap:14px}.cast-heat input{width:100%}.casting .cast-ember{bottom:116px}.ribbon .casting-footer>.cast-cycle-label{display:none}}
@media(prefers-reduced-motion:reduce){.ribbon .casting .cast-letter{animation:none!important;color:#e6c7a2;text-shadow:0 2px #000}.cast-controls button{transition:none}}
/* One shared clock lifts the cast lettering through the molten surface. */
.cast-basin{position:relative;width:100%;height:163px;overflow:hidden;flex-shrink:0;mask-image:linear-gradient(to bottom,#000 0%,#000 86%,transparent 99%)}
.ribbon .cast-display{position:absolute;bottom:62px;left:0;min-height:75px;background:none;padding:0;align-content:center;}
.ribbon .casting .cast-letter{position:relative;animation:none!important;will-change:transform;opacity:0;color:color-mix(in srgb,#ffe1a1 calc((1 - var(--metal,0))*100%),#e5e5df);text-shadow:0 1px #8b542c,0 2px #42474a,0 4px #080c0f,0 0 13px #ff761a44;}
.cast-letter:nth-child(3n+1):after{content:'';position:absolute;left:48%;top:88%;width:4px;height:23px;border-radius:45% 45% 65% 65%;background:linear-gradient(#ffad39,#fff1ad 25%,#ff7a13 65%,#a52c07);box-shadow:0 0 7px #ff6b16aa;opacity:var(--drip,0);transform:translateY(var(--fall,0px)) scaleY(calc(.3 + var(--drip,0)*.7));transform-origin:top;pointer-events:none}
.ribbon .casting-kicker{margin-bottom:0}.ribbon .casting-stage{padding-top:24px;min-height:330px;justify-content:flex-start}.ribbon .casting-rail{margin-top:-15px;z-index:3;opacity:.4}.ribbon .casting-footer{margin-top:22px;z-index:4}.ribbon .cast-ember,.ribbon .casting-rail:before,.ribbon .casting-rail:after,.ribbon .cast-underlay{display:none}
@media(max-width:700px){.ribbon .casting-stage{min-height:363px;padding-top:23px}.cast-basin{height:174px}.ribbon .cast-display{bottom:62px;min-height:92px}.ribbon .casting-footer{margin-top:20px}.cast-letter:nth-child(3n+1):after{width:3px;height:20px}}
@media(prefers-reduced-motion:reduce){.cast-letter:after{display:none}.ribbon .casting .cast-letter{transform:none!important;opacity:1!important}}
/* The phrase is a single solid casting; attached rivulets shed only after emergence. */
.ribbon .cast-display{bottom:64px;will-change:transform;transform-style:flat}
.cast-basin{mask-image:none;clip-path:inset(0 0 15px 0)}
.ribbon .casting .cast-letter{will-change:auto;text-shadow:0 1px 0 #8a5229,0 2px 0 #515557,0 3px 0 #171a1d,0 5px 7px #000b;color:color-mix(in srgb,#ffb954 calc((1 - var(--metal,0))*100%),#d5d8d7)}
.cast-letter:nth-child(3n+1):after{top:93%;left:46%;width:5px;height:var(--length,4px);opacity:calc(var(--drip,0)*var(--drip-fade,1));transform:translateY(var(--fall,0px));border-radius:30% 35% 55% 60%;background:linear-gradient(90deg,#b73207,#ff7815 35%,#ffcc65 52%,#f75508 80%,#9e2706);box-shadow:0 0 4px #ee53064d}
.ribbon .casting-stage{min-height:320px}.ribbon .casting-footer{background:linear-gradient(110deg,#171b1c,#101519);border-top:1px solid #9d4c2444;border-bottom:1px solid #9d4c2422;box-shadow:none}.ribbon:before,.ribbon:after{background:linear-gradient(90deg,#111619,#212324);border-color:#7a4b3033;box-shadow:inset 0 0 20px #0008}
@media(max-width:700px){.ribbon .casting-stage{min-height:330px}.ribbon .casting-footer{display:flex;gap:8px}.cast-letter:nth-child(3n+1):after{width:4px}.ribbon .cast-display{bottom:64px}}
@media(prefers-reduced-motion:reduce){.ribbon .cast-display{transform:none!important}}
/* A front-facing molten surface; the casting travels on the camera axis. */
.cast-basin{perspective:850px;perspective-origin:50% 48%;overflow:visible;clip-path:none;mask-image:none;isolation:isolate}
.ribbon .cast-display{bottom:48px;transform-style:preserve-3d;transform-origin:50% 50%;will-change:transform,opacity,filter}
.ribbon .casting .cast-letter{text-shadow:0 1px #faf0d4,0 2px #747879,0 3px #484b4b,0 4px #292c2c,0 5px #171a1b,0 8px 5px #000b,0 12px 20px #000b}
.molten-canvas{opacity:1;mask-image:linear-gradient(0deg,transparent,#000 16%,#000 90%,transparent)}
.cast-basin:after{content:'';position:absolute;left:17%;right:17%;top:47%;height:35%;border-radius:50%;background:radial-gradient(ellipse,#0008,transparent 68%);opacity:var(--emergence,0);z-index:-1;pointer-events:none;transform:scale(calc(.6 + var(--emergence,0)*.4))}
.ribbon.melt-fallback{background:radial-gradient(ellipse at 50% 48%,#fa6919 0,#a32908 22%,#341209 49%,#0b1014 75%)}
@media(max-width:700px){.ribbon .cast-display{bottom:42px}.cast-basin{perspective:850px}.ribbon .cast-letter{font-size:clamp(21px,5.4vw,28px)}}
@media(prefers-reduced-motion:reduce){.ribbon .cast-display{filter:none!important;opacity:1!important}}
.cast-splash{position:absolute;inset:0;pointer-events:none;z-index:3}
.molten-splash-drop{position:absolute;left:var(--x);top:72%;width:6px;height:13px;opacity:0;border-radius:55% 45% 65% 35%;background:linear-gradient(90deg,#9b2504,#ff6b0d 40%,#ffca56 57%,#dc4505 83%);box-shadow:inset -1px -2px 2px #8b1b04,0 0 5px #ff5c093b;transform-origin:50% 100%;will-change:transform,opacity}
.molten-splash-drop:nth-child(3n){width:4px;height:9px;top:65%}.molten-splash-drop:nth-child(4n){top:77%;height:17px;width:7px}
@media(max-width:700px){.molten-splash-drop{width:4px;height:10px}.molten-splash-drop:nth-child(4n){width:5px;height:13px}}
@media(prefers-reduced-motion:reduce){.cast-splash{display:none}}
/* Keep the disturbance in the liquid surface, without detached streaks or rules. */
.ribbon .casting-rail,.cast-splash,.cast-letter:after{display:none!important}
.ribbon .casting-footer{margin-top:10px}
.ribbon .casting .cast-letter{text-shadow:0 1px #f5e8ce,0 2px #727777,0 3px #3e4243,0 4px #242829,0 7px 7px #000c,0 12px 24px #000a}
@media(max-width:700px){.ribbon .casting-footer{margin-top:10px}}
/* Molten material stays attached to the casting and drains under its own weight. */
.ribbon .cast-word{position:relative;isolation:isolate}
.ribbon .casting .cast-letter{color:transparent;background:linear-gradient(to top,#ef4d08 0%,#ff9b22 calc(var(--coating,0)*72%),#ffd274 calc(var(--coating,0)*100%),#c6cccc calc(var(--coating,0)*100% + 7%),#faf4df 75%,#949e9f 100%);background-clip:text;-webkit-background-clip:text;text-shadow:none;filter:drop-shadow(0 2px 0 #65686a) drop-shadow(0 3px 0 #171b1c) drop-shadow(0 7px 5px #000b)}
.ribbon .cast-word:after{content:'';position:absolute;z-index:2;left:2%;right:2%;top:78%;height:calc(8px + var(--coating,0)*42px);opacity:var(--wet-opacity,0);transform:translateY(calc(var(--drain,0)*23px));transform-origin:top;background:radial-gradient(ellipse at 20% 5%,#ffc05e66,transparent 45%),linear-gradient(90deg,#8e2107,#f75b0b 18%,#ff9d28 34%,#bb3507 50%,#f57913 70%,#7c1f08);clip-path:polygon(0 0,100% 0,98% 20%,93% 34%,89% 28%,85% 43%,82% 82%,78% 100%,74% 87%,73% 53%,68% 34%,60% 30%,55% 48%,51% 69%,47% 73%,43% 61%,40% 37%,34% 29%,30% 43%,28% 81%,24% 94%,20% 82%,18% 47%,13% 33%,7% 28%,2% 18%);filter:drop-shadow(0 2px 2px #591202);pointer-events:none}
.ribbon .cast-word:nth-child(even):after{transform:translateY(calc(var(--drain,0)*29px)) scaleX(-1);height:calc(6px + var(--coating,0)*36px)}
@media(max-width:700px){.ribbon .cast-word:after{height:calc(5px + var(--coating,0)*28px)}.ribbon .cast-word:nth-child(even):after{height:calc(5px + var(--coating,0)*25px)}}
@media(prefers-reduced-motion:reduce){.ribbon .cast-word:after{display:none}.ribbon .casting .cast-letter{background:none;color:#d8dddd;filter:none}}
/* Bare metallic casting, with individual drops and impacts rendered in the pool. */
.ribbon .cast-word:after{display:none!important}
.ribbon .casting .cast-letter{background:none;color:#dfe2df;filter:none;text-shadow:0 1px #faf3dd,0 2px #747a7b,0 3px #424849,0 4px #171b1c,0 7px 8px #000b}
/* Each word has its own camera-axis emergence and associated droplet timing. */
.cast-basin{perspective:none}.ribbon .cast-display{perspective:850px;perspective-origin:50% 50%;transform-style:preserve-3d}.ribbon .cast-word{transform-style:preserve-3d;will-change:transform,opacity,filter}
@media(prefers-reduced-motion:reduce){.ribbon .cast-word{transform:none!important;opacity:1!important;filter:none!important}}
