.forja-root{--bg:#0b1120;--panel:#111a2e;--ink:#f8fafc;--muted:#94a3b8;--gold:#fbbf24;--gold-deep:#f59e0b;--ok:#22c55e;--bad:#f87171;--accent:#a855f7;background:radial-gradient(1200px 500px at 50% -10%, #f59e0b1a, transparent 60%), radial-gradient(900px 600px at 50% 110%, #a855f71a, transparent 60%), var(--bg);min-height:100vh;color:var(--ink);padding-bottom:4rem;position:relative;overflow:hidden}.fx-canvas{pointer-events:none;z-index:50;position:fixed;inset:0}.embers{pointer-events:none;z-index:0;position:absolute;inset:0}.embers span{bottom:-10px;left:var(--l);width:var(--s);height:var(--s);opacity:0;animation:ember-rise var(--t) linear var(--d) infinite;background:#fbbf24;border-radius:50%;position:absolute;box-shadow:0 0 8px 2px #fbbf2499}@keyframes ember-rise{0%{opacity:0;transform:translate(0)}10%{opacity:.7}60%{opacity:.35;transform:translate(18px,-60vh)}to{opacity:0;transform:translate(-12px,-100vh)}}.forja-nav,.forja-main{z-index:1;max-width:1040px;margin:0 auto;padding-left:5%;padding-right:5%;position:relative}.forja-nav{padding-top:2rem;padding-bottom:.5rem}.back-link{color:var(--ink);backdrop-filter:blur(8px);background:#ffffff14;border:1px solid #ffffff26;border-radius:99px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .2s,transform .2s;display:inline-flex}.back-link:hover{background:#ffffff29;transform:translate(-2px)}.forja-main{flex-direction:column;gap:1.25rem;display:flex}.forja-header{text-align:center}.forja-header h1{letter-spacing:-.02em;background:linear-gradient(#fff 30%,#fde68a 100%);color:#0000;filter:drop-shadow(0 0 22px #f59e0b59);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.2rem,5vw,3.2rem);font-weight:800}.forja-header p{color:var(--muted);margin:.4rem 0 0;font-size:1.05rem}.bank-count{color:var(--gold);background:#fbbf241a;border:1px solid #fbbf2440;border-radius:99px;margin-left:.4rem;padding:.15rem .6rem;font-size:.8rem;font-weight:700;display:inline-block}.module-selector{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.module-btn{--c:#a855f7;color:var(--muted);cursor:pointer;background:#ffffff08;border:1px solid #94a3b84d;border-radius:99px;align-items:center;gap:.45rem;padding:.55rem 1.05rem;font-size:.88rem;font-weight:700;transition:all .25s cubic-bezier(.2,.8,.2,1);display:inline-flex}.module-btn:hover:not(.active){color:var(--ink);border-color:var(--c);transform:translateY(-2px)}.module-btn.active{background:var(--c);border-color:var(--c);color:#fff;box-shadow:0 0 0 4px color-mix(in srgb, var(--c) 25%, transparent), 0 8px 24px -6px var(--c)}.module-btn .stars{letter-spacing:1px;color:#ffffff59;font-size:.72rem}.module-btn .stars b{color:var(--gold);font-weight:400}.module-btn.active .stars{color:#ffffff73}.module-btn.active .stars b{color:#fff7d6}.forge-panel{border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);box-shadow:0 30px 60px -20px #0009, inset 0 1px 0 #ffffff0d, 0 0 60px -30px var(--accent);background:linear-gradient(#1e293bd9,#0f172aeb);border-radius:24px;min-height:560px;padding:1.6rem 2.2rem 2rem;transition:border-color .4s,box-shadow .4s;position:relative}.hud{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.module-title{color:var(--accent);text-transform:uppercase;letter-spacing:.1em;font-size:1.05rem;font-weight:800;transition:color .4s}.module-desc{color:var(--muted);margin-top:.15rem;font-size:.92rem}.hud-tools{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.streak{font-variant-numeric:tabular-nums;color:var(--muted);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:99px;align-items:center;gap:.3rem;padding:.35rem .75rem;font-weight:800;transition:all .3s;display:inline-flex}.streak .flame{filter:grayscale()opacity(.5);transition:filter .3s}.streak.hot{color:#fed7aa;background:#f973161f;border-color:#f9731680}.streak.hot .flame{filter:none;animation:.9s ease-in-out infinite alternate flame-flicker}.streak.bump{animation:.45s cubic-bezier(.3,1.6,.5,1) bump}@keyframes flame-flicker{0%{transform:scale(1)rotate(-4deg)}to{transform:scale(1.15)rotate(4deg)}}@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.3)}to{transform:scale(1)}}.icon-toggle{cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1f;border-radius:50%;width:38px;height:38px;font-size:1rem;transition:all .2s}.icon-toggle:hover{background:#ffffff1f}.icon-toggle[aria-pressed=false]{opacity:.35;filter:grayscale()}.progress{align-items:center;gap:.9rem;margin:1.1rem 0 1.4rem;display:flex}.progress-track{background:#ffffff12;border-radius:99px;flex:1;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--gold-deep), var(--gold), #fef3c7, var(--gold));background-size:200% 100%;border-radius:99px;width:0%;height:100%;transition:width .6s cubic-bezier(.2,.8,.2,1);animation:2.4s linear infinite shimmer;box-shadow:0 0 12px #fbbf2480}@keyframes shimmer{0%{background-position:200% 0}to{background-position:0 0}}.progress-label{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;min-width:3.5rem;font-size:.85rem;font-weight:700}.play-area.enter .anvil{animation:.5s cubic-bezier(.2,.8,.2,1) both rise-in}.play-area.enter .rune{animation:.5s cubic-bezier(.3,1.4,.5,1) both rune-in;animation-delay:calc(.12s + var(--i) * 70ms)}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes rune-in{0%{opacity:0;transform:translateY(18px)scale(.9)}to{opacity:1;transform:none}}.anvil{text-align:center;background:radial-gradient(at 50% 120%,#f59e0b1a,#0000 60%),#0206178c;border:1px solid #ffffff0f;border-radius:18px;justify-content:center;align-items:center;min-height:150px;padding:2.2rem 2.5rem;display:flex;position:relative}.anvil.strike{animation:.35s cubic-bezier(.3,1.5,.5,1) strike}@keyframes strike{0%{transform:translateY(0)}30%{transform:translateY(4px)scale(.995)}to{transform:none}}.review-tag{letter-spacing:.08em;text-transform:uppercase;color:#fde68a;background:#fbbf241f;border:1px solid #fbbf244d;border-radius:99px;padding:.15rem .55rem;font-size:.72rem;font-weight:800;position:absolute;top:.7rem;left:.9rem}.sentence{color:#e2e8f0;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.4rem,3.2vw,2.05rem);line-height:1.75}.forge-word{white-space:nowrap;color:#fff;background:linear-gradient(180deg, transparent 62%, color-mix(in srgb, var(--accent) 22%, transparent) 62%);border-radius:10px;padding:.05em .25em;font-weight:700;transition:background .4s}.forge-word.forged{background:linear-gradient(#0000 62%,#fbbf2447 62%);animation:1.2s ease-out word-glow}@keyframes word-glow{0%{text-shadow:0 0 #0000}30%{text-shadow:0 0 24px #fbbf24e6}to{text-shadow:0 0 #0000}}.slot{vertical-align:baseline;min-width:calc(var(--w,1) * .68em + .35em);text-align:center;color:#0000;border-bottom:3px dashed color-mix(in srgb, var(--accent) 80%, white);border-radius:2px;margin:0 .04em;padding:0 .08em;transition:min-width .35s cubic-bezier(.2,.8,.2,1),border-color .3s;animation:1.8s ease-in-out infinite slot-breathe;display:inline-block;position:relative}.slot:after{content:"?";color:color-mix(in srgb, var(--accent) 70%, white);opacity:.85;font-family:system-ui,sans-serif;font-weight:800;position:absolute;inset:0}@keyframes slot-breathe{0%,to{box-shadow:0 6px 12px -10px #0000}50%{box-shadow:0 10px 16px -10px var(--accent)}}.slot.shake{border-bottom-color:var(--bad);animation:.42s cubic-bezier(.36,.07,.19,.97) shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}.slot.filled{min-width:0;color:var(--gold);border-bottom-color:#0000;margin:0;padding:0;animation:none}.slot.filled:after{content:none}.slot.filled .forged-letters{animation:.55s cubic-bezier(.3,1.6,.5,1) both hammer-in,1.6s ease-out both heat;display:inline-block}@keyframes hammer-in{0%{opacity:0;transform:translateY(-.9em)scale(1.5)}55%{opacity:1;transform:translateY(.06em)scale(.92,1.08)}to{transform:none}}@keyframes heat{0%{color:#fff;text-shadow:0 0 18px #fff,0 0 30px #fbbf24}40%{color:#fde68a;text-shadow:0 0 14px #f59e0b}to{color:#fbbf24;text-shadow:0 0 10px #fbbf2473}}.feedback{justify-content:center;align-items:center;min-height:168px;margin:1.2rem 0 1rem;display:flex}.fb-idle{color:var(--muted);text-align:center;opacity:.85;font-size:.98rem}.fb-card{border-radius:16px;width:100%;padding:1rem 1.3rem;animation:.45s cubic-bezier(.2,.9,.3,1.2) both card-in}@keyframes card-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}.fb-hint{background:#fbbf2412;border:1px solid #fbbf244d}.fb-hint .fb-head{color:#fde68a}.fb-rule{background:linear-gradient(135deg,#22c55e1a,#fbbf2412);border:1px solid #22c55e59}.fb-rule .fb-head{color:#86efac}.fb-head{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.35rem;font-size:1.05rem;font-weight:800;display:flex}.fb-head .rule-name{color:var(--ink);opacity:.9;font-weight:700}.fb-text{color:#e2e8f0;margin:0;font-size:1.02rem;line-height:1.5}.fb-examples{flex-wrap:wrap;gap:.45rem;margin-top:.7rem;display:flex}.fb-examples span{color:#cbd5e1;background:#ffffff0d;border:1px solid #ffffff14;border-radius:8px;padding:.2rem .65rem;font-family:Georgia,serif;font-size:1rem}.fb-examples mark{color:var(--gold);background:0 0;font-weight:800}.fb-mnemonic{color:#c4b5fd;margin-top:.6rem;font-size:.92rem}.fb-exception{color:var(--muted);margin-top:.35rem;font-size:.85rem;font-style:italic}.runes{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));max-width:calc(var(--cols,3) * 213px + 1rem);justify-content:center;gap:1rem;margin:0 auto;display:grid}.rune{cursor:pointer;color:var(--ink);background:linear-gradient(160deg,#1e293b,#0f172a);border:2px solid #334155;border-radius:18px;flex-direction:column;align-items:center;gap:.1rem;padding:1.1rem .5rem 1rem;font-family:system-ui,sans-serif;font-size:2.2rem;font-weight:800;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s,border-color .2s,background .2s,opacity .3s;display:flex;position:relative;box-shadow:0 8px #0b1324,0 14px 24px -8px #0009}.rune:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 70%, white);box-shadow:0 12px 0 #0b1324, 0 20px 30px -10px var(--accent);transform:translateY(-4px)}.rune:active:not(:disabled){transform:translateY(5px);box-shadow:0 3px #0b1324,0 6px 10px -6px #0009}.rune:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.rune-key{color:#64748b;border:1px solid #334155;border-radius:5px;padding:0 .3rem;font-size:.7rem;font-weight:800;line-height:1.3;position:absolute;top:.45rem;left:.6rem}.rune-sub{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.68rem;font-weight:700}.rune.wrong{color:#f87171bf;cursor:not-allowed;background:linear-gradient(160deg,#7f1d1d59,#0f172a);border-color:#f8717199;text-decoration:line-through 3px;animation:.42s cubic-bezier(.36,.07,.19,.97) shake}.rune.correct{border-color:var(--gold);color:#1f1300;background:linear-gradient(160deg,#fde68a,#f59e0b);animation:.5s cubic-bezier(.3,1.6,.5,1) correct-pop;box-shadow:0 8px #92400e,0 0 40px -6px #fbbf24cc}.rune.correct .rune-key,.rune.correct .rune-sub{color:#78350f;border-color:#b45309}.rune.dim{opacity:.25;transform:scale(.96)}.rune:disabled{cursor:default}@keyframes correct-pop{0%{transform:scale(1)}40%{transform:scale(1.08)translateY(-4px)}to{transform:none}}.continue-row{justify-content:center;min-height:64px;margin-top:1.4rem;display:flex}.btn-continue{background:linear-gradient(135deg, var(--gold), var(--gold-deep));color:#1f1300;cursor:pointer;border:none;border-radius:99px;align-items:center;gap:.7rem;padding:.85rem 2rem;font-size:1.1rem;font-weight:800;transition:transform .15s;animation:.4s cubic-bezier(.2,.9,.3,1.2) both card-in;display:inline-flex;box-shadow:0 10px 30px -8px #f59e0bb3}.btn-continue:hover{transform:translateY(-2px)}.btn-continue:focus-visible{outline-offset:3px;outline:3px solid #fff}.btn-continue kbd,.kbd-tip kbd{opacity:.7;border:1px solid;border-radius:5px;padding:.1rem .4rem;font-family:ui-monospace,monospace;font-size:.72rem;font-weight:700}.kbd-tip{text-align:center;color:#64748b;margin:0;font-size:.82rem}.toast{color:#1f1300;opacity:0;pointer-events:none;z-index:5;background:linear-gradient(135deg,#f97316,#f59e0b);border-radius:99px;padding:.5rem 1.2rem;font-size:.95rem;font-weight:800;transition:all .4s cubic-bezier(.3,1.5,.5,1);position:absolute;top:1rem;left:50%;transform:translate(-50%,-20px);box-shadow:0 10px 30px -8px #f97316cc}.toast.show{opacity:1;transform:translate(-50%)}.summary{text-align:center;padding:.5rem 0;animation:.5s cubic-bezier(.2,.8,.2,1) both rise-in}.summary-stars{letter-spacing:.4rem;margin-bottom:.4rem;font-size:3.4rem}.summary-stars span{color:#334155;display:inline-block}.summary-stars span.on{color:var(--gold);text-shadow:0 0 24px #fbbf24b3;animation:.6s cubic-bezier(.3,1.8,.5,1) both star-pop}@keyframes star-pop{0%{opacity:0;transform:scale(0)rotate(-90deg)}to{opacity:1;transform:none}}.summary h2{color:var(--ink);margin:0 0 .3rem;font-size:1.9rem}.summary .sub{color:var(--muted);margin:0 0 1.5rem}.summary-stats{grid-template-columns:repeat(3,1fr);gap:1rem;max-width:560px;margin:0 auto 1.6rem;display:grid}.summary-stats div{background:#ffffff0a;border:1px solid #ffffff14;border-radius:14px;padding:.9rem .5rem}.summary-stats b{color:var(--gold);font-variant-numeric:tabular-nums;font-size:1.8rem;display:block}.summary-stats span{color:var(--muted);font-size:.82rem;font-weight:600}.summary h3{color:#fde68a;letter-spacing:.1em;text-transform:uppercase;margin:0 0 .8rem;font-size:.85rem}.review-list{text-align:left;gap:.7rem;max-width:720px;margin:0 auto 1.6rem;display:grid}.summary-actions{flex-wrap:wrap;justify-content:center;gap:.8rem;display:flex}.btn-ghost{color:var(--ink);cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:99px;padding:.85rem 1.6rem;font-size:1rem;font-weight:700;transition:all .2s}.btn-ghost:hover{background:#ffffff14}@media (width<=720px){.forge-panel{min-height:0;padding:1.2rem 1rem 1.5rem}.hud{flex-direction:column}.anvil{padding:1.8rem 1rem}.rune{padding:.9rem .3rem .8rem;font-size:1.7rem}.runes{gap:.6rem}.feedback{min-height:200px}.summary-stats b{font-size:1.4rem}}@media (prefers-reduced-motion:reduce){.forja-root *,.forja-root :before,.forja-root :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.embers{display:none}}
