:root{--cream:#f7f1e1;--parchment:#efe4c8;--leaf-deep:#1e3018;--leaf:#3f7a3a;--pea:#b6f05a;--tomato:#e2503f;--gold:#f5c542;--ink:#14200e;--display:ui-rounded, "SF Pro Rounded", "Nunito", "Quicksand", "Segoe UI", system-ui, sans-serif;--shadow-hud:0 2px 10px #0000008c}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--display);color:var(--cream);-webkit-font-smoothing:antialiased;background:#0d1409}.app{width:100%;height:100%;position:relative}canvas{outline:none;display:block}.hud{pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.hud-corner{text-shadow:var(--shadow-hud);position:absolute}.hud-topleft{top:24px;left:28px}.hud-topright{text-align:right;top:24px;right:28px}.hud-score{letter-spacing:-.02em;color:var(--cream);font-size:46px;font-weight:800;line-height:1}.hud-level{flex-direction:column;align-items:flex-end;font-size:22px;font-weight:800;line-height:1.1;display:flex}.hud-levelname{color:var(--pea);opacity:.9;font-size:15px;font-weight:600}.hud-label{letter-spacing:.14em;text-transform:uppercase;opacity:.7;margin-top:4px;font-size:12px;font-weight:700}.hud-streak{letter-spacing:.06em;color:var(--pea);text-shadow:var(--shadow-hud);opacity:.92;font-size:15px;font-weight:700;position:absolute;top:96px;left:50%;transform:translate(-50%)}.hud-streak-count{font-size:21px;font-weight:800}.hud-beds{align-items:center;gap:8px;display:flex;position:absolute;bottom:26px;left:50%;transform:translate(-50%)}.bed-pip{background:#dcdcd4;border:2px solid #14200ecc;border-radius:999px;width:74px;height:11px;overflow:hidden;box-shadow:0 2px 6px #00000080}.bed-pip-fill{background:#2fe02f;height:100%;transition:width .18s linear,background-color .22s}.bed-pip-hurt .bed-pip-fill{background:#ffbe14}.bed-pip-critical .bed-pip-fill{background:#ff3527;animation:.62s ease-in-out infinite pip-pulse}.bed-pip-dead{background:#dcdcd44d;border-color:#e2503f8c}@keyframes pip-pulse{50%{opacity:.45}}.hud-beds-label{text-shadow:var(--shadow-hud);margin:0 0 0 10px}.hud-spare{color:var(--pea);border:1px solid #b6f05a8c;border-radius:999px;margin-left:10px;padding:2px 7px;font-size:10px}.boss-bar{text-align:center;width:min(520px,52vw);position:absolute;top:22px;left:50%;transform:translate(-50%)}.boss-bar-label{letter-spacing:.24em;text-transform:uppercase;color:var(--tomato);text-shadow:var(--shadow-hud);margin-bottom:5px;font-size:12px;font-weight:800}.boss-bar-track{background:#dcdcd4;border:2px solid #14200ed9;border-radius:999px;height:14px;overflow:hidden;box-shadow:0 3px 10px #0000008c}.boss-bar-fill{background:linear-gradient(90deg,#ff3527,#ff7a3d);height:100%;transition:width .16s linear}.boss-bar-hp{letter-spacing:.08em;text-shadow:var(--shadow-hud);opacity:.85;margin-top:4px;font-size:13px;font-weight:800}.crosshair{width:26px;height:26px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair-dot{background:var(--pea);border-radius:50%;width:3px;height:3px;margin:-1.5px 0 0 -1.5px;position:absolute;top:50%;left:50%;box-shadow:0 0 3px #000000e6}.crosshair-arm{background:var(--cream);opacity:.85;position:absolute;box-shadow:0 0 3px #000000e6}.crosshair-up,.crosshair-down{width:2px;height:7px;margin-left:-1px;left:50%}.crosshair-up{top:0}.crosshair-down{bottom:0}.crosshair-left,.crosshair-right{width:7px;height:2px;margin-top:-1px;top:50%}.crosshair-left{left:0}.crosshair-right{right:0}.resume-prompt{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0c1408b8;border:1px solid #f7f1e129;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:12px 22px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,46px)}.resume-prompt strong{font-size:17px;font-weight:800}.resume-prompt span{opacity:.65;font-size:12px}.banner{pointer-events:none;text-align:center;-webkit-user-select:none;user-select:none;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.banner-streak-text{letter-spacing:-.03em;color:var(--pea);text-shadow:2px 0 #101a0b,-2px 0 #101a0b,0 2px #101a0b,0 -2px #101a0b,2px 2px #101a0b,-2px -2px #101a0b,0 6px #101a0be6,0 12px 36px #000c;font-size:clamp(44px,8vw,96px);font-weight:800;animation:.32s cubic-bezier(.2,1.5,.4,1) both slam,.4s ease-in .95s both banner-out}.banner-godlike-text{letter-spacing:-.035em;background:linear-gradient(180deg, #fff3c4 0%, var(--gold) 55%, #d98f1c 100%);color:#0000;filter:drop-shadow(2px 0 #101a0b)drop-shadow(-2px 0 #101a0b)drop-shadow(0 2px #101a0b)drop-shadow(0 -2px #101a0b)drop-shadow(0 7px #101a0bf2)drop-shadow(0 14px 42px #f5c5428c);-webkit-background-clip:text;background-clip:text;font-size:clamp(56px,11vw,140px);font-weight:800;animation:.38s cubic-bezier(.2,1.6,.35,1) both slam,.5s ease-in 1.7s both banner-out}.banner-portrait{object-fit:cover;border:5px solid var(--gold);border-radius:50%;width:clamp(120px,17vw,200px);height:clamp(120px,17vw,200px);margin:0 auto 14px;animation:.46s cubic-bezier(.2,1.5,.4,1) both portrait-in,.5s ease-in 1.7s both banner-out;display:block;box-shadow:0 12px 44px #000000bf,0 0 0 3px #14200ecc}.banner-sub{letter-spacing:.16em;text-transform:uppercase;text-shadow:1.5px 0 #101a0b,-1.5px 0 #101a0b,0 1.5px #101a0b,0 -1.5px #101a0b,0 4px 14px #000000e6;margin-top:8px;font-size:15px;font-weight:700;animation:.3s ease-out .14s both fade-in,.4s ease-in 1.5s both banner-out}.banner-streak .banner-sub{animation:.3s ease-out .14s both fade-in,.35s ease-in .9s both banner-out}@keyframes slam{0%{opacity:0;transform:scale(2.1)}60%{opacity:1}to{opacity:1;transform:scale(1)}}@keyframes portrait-in{0%{opacity:0;transform:scale(.2)rotate(-22deg)}to{opacity:1;transform:scale(1)rotate(-4deg)}}@keyframes banner-out{to{opacity:0;transform:scale(1.08)}}@keyframes fade-in{0%{opacity:0}}.screen{overscroll-behavior:contain;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);z-index:5;background:radial-gradient(circle at 50% 40%,#14280eb8,#060a04ed);justify-content:center;padding:32px;display:flex;position:absolute;inset:0;overflow-y:auto}.screen-inner{text-align:center;flex-direction:column;align-items:center;gap:18px;width:min(640px,100%);margin:auto;display:flex}.title{letter-spacing:-.035em;text-shadow:0 5px #0c1608d9,0 16px 40px #0009;text-wrap:balance;font-size:clamp(34px,6.4vw,74px);font-weight:800;line-height:1.02}.title-compact{font-size:clamp(26px,4vw,44px)}.title-word{color:var(--cream)}.title-struck{color:var(--cream);opacity:.42;text-decoration:line-through;text-decoration-thickness:.085em;-webkit-text-decoration-color:var(--tomato);text-decoration-color:var(--tomato)}.title-freia{color:var(--pea)}.tagline{opacity:.82;text-wrap:pretty;max-width:46ch;font-size:17px;line-height:1.55}.briefing{text-align:left;background:#f7f1e112;border:1px solid #f7f1e124;border-radius:14px;gap:8px;padding:18px 22px;font-size:15px;list-style:none;display:grid}.briefing li:before{content:"›";color:var(--pea);margin-right:10px;font-weight:800}.briefing strong{color:var(--cream)}.eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--pea);font-size:12px;font-weight:800}.eyebrow-bad{color:var(--tomato)}.result-note{color:#f7f1e1c7;text-wrap:balance;max-width:46ch;margin:14px auto 0;font-size:15px;line-height:1.5}.result-heading{letter-spacing:-.025em;text-wrap:balance;font-size:clamp(28px,5vw,46px);font-weight:800}.stats{flex-wrap:wrap;justify-content:center;gap:12px;margin:4px 0;display:flex}.stat{background:#f7f1e112;border:1px solid #f7f1e124;border-radius:14px;flex-direction:column;gap:3px;min-width:118px;padding:14px 18px;display:flex}.stat-value{color:var(--pea);font-size:30px;font-weight:800;line-height:1}.stat-label{letter-spacing:.13em;text-transform:uppercase;opacity:.65;font-size:11px;font-weight:700}.victory-portrait{object-fit:cover;border:5px solid var(--gold);border-radius:50%;width:150px;height:150px;box-shadow:0 14px 44px #000000b3}.footnote{opacity:.55;font-size:13px}.screen-shop .screen-inner{width:min(880px,100%)}.wallet{align-items:baseline;gap:10px;display:flex}.wallet-value{color:var(--gold);font-size:34px;font-weight:800;line-height:1}.wallet-label{letter-spacing:.15em;text-transform:uppercase;opacity:.65;font-size:12px;font-weight:700}.shop-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:14px;width:100%;display:grid}@media (width<=1080px){.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.shop-path{flex-direction:column;justify-content:flex-start;gap:0;display:flex}.shop-rung{flex-direction:column;display:flex;position:relative}.shop-rung+.shop-rung,.shop-card-upgrade{margin-bottom:0}.shop-arrow{background:linear-gradient(180deg, #b6f05a26, var(--pea));width:2px;height:26px;margin:0 auto;display:block;position:relative}.shop-arrow:after{content:"";border-left:6px solid #0000;border-right:6px solid #0000;border-top:8px solid var(--pea);position:absolute;bottom:-1px;left:50%;transform:translate(-50%)}.shop-card{text-align:left;background:#f7f1e112;border:1px solid #f7f1e124;border-radius:16px;flex-direction:column;gap:10px;padding:16px 18px 18px;transition:border-color .14s,background-color .14s;display:flex;position:relative}.shop-card-upgrade{border-style:dashed;border-color:#b6f05a66}.shop-card-mod{border-style:dashed;border-color:#f5c54273}.shop-mod-tag{background:var(--gold)}.stat-boosted{color:var(--gold)!important}.shop-upgrade-tag{letter-spacing:.16em;text-transform:uppercase;background:var(--pea);color:var(--ink);border-radius:999px;padding:3px 9px;font-size:10px;font-weight:800;position:absolute;top:-9px;left:16px}.shop-model,.guide-model,.guide-model-large{background:radial-gradient(circle at 50% 32%,#eef0e4e6,#96a58c8c);border:1px solid #f7f1e138;border-radius:12px;box-shadow:inset 0 -12px 24px #14200e2e}.shop-model{width:100%;height:108px}.shop-card-equipped{border-color:var(--pea);background:#b6f05a1f}.shop-card-locked{opacity:.55}.shop-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.shop-name{letter-spacing:-.01em;font-size:19px;font-weight:800}.shop-tag{letter-spacing:.14em;text-transform:uppercase;background:var(--pea);color:var(--ink);white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800}.shop-blurb{opacity:.78;text-wrap:pretty;flex:1;font-size:13.5px;line-height:1.5}.shop-stats{border-top:1px solid #f7f1e11f;gap:16px;padding:10px 0 2px;display:flex}.shop-stats dt{letter-spacing:.12em;text-transform:uppercase;opacity:.6;font-size:10px;font-weight:700}.shop-stats dd{color:var(--pea);font-size:19px;font-weight:800;line-height:1.15}.hud-weapon{color:var(--pea);text-shadow:var(--shadow-hud);margin-top:8px;font-size:15px;font-weight:800}.shop-section{align-items:center;gap:14px;width:100%;margin-top:6px;display:flex}.shop-section:after{content:"";background:#f7f1e129;flex:1;height:1px}.shop-section-label{letter-spacing:.2em;text-transform:uppercase;color:var(--pea);font-size:11px;font-weight:800}.shop-grid-tools{grid-template-columns:repeat(auto-fit,minmax(260px,320px));justify-content:center;align-items:start}.shop-done{z-index:7;position:fixed;top:24px;left:24px}.tool-card{max-width:340px}.tool-note{opacity:.6;font-size:11.5px;line-height:1.45}kbd{background:#f7f1e129;border:1px solid #f7f1e147;border-radius:5px;padding:1px 6px;font-family:inherit;font-size:11px;font-weight:800}.tool-rack{align-items:flex-end;gap:18px;display:flex;position:absolute;bottom:24px;left:26px}.tool-slot{border:2px solid var(--pea);background:radial-gradient(circle at 50% 35%,#eef0e4d9,#8c9e8280);border-radius:50%;flex:none;width:84px;height:84px;position:relative;overflow:visible;box-shadow:0 6px 18px #00000080}.tool-slot-empty{filter:grayscale(.8);opacity:.6;border-color:#f7f1e14d}.tool-slot-model{border-radius:50%;width:100%;height:100%;overflow:hidden}.tool-slot-count{background:var(--pea);min-width:28px;color:var(--ink);text-align:center;border-radius:999px;padding:2px 6px;font-size:15px;font-weight:800;line-height:1.25;position:absolute;top:-6px;right:-6px}.tool-slot-of{opacity:.65;font-size:10px}.tool-slot-key{color:var(--pea);background:#0c1408e6;border-color:#b6f05a99;font-size:12px;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)}.screen-guide .screen-inner{width:min(1040px,100%)}.shop-inner{width:min(1240px,100%)}.guide-progress{letter-spacing:.12em;text-transform:uppercase;opacity:.6;font-size:13px;font-weight:700}.guide-grid{grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:14px;width:100%;display:grid}.guide-card{text-align:left;color:inherit;cursor:pointer;background:#f7f1e112;border:1px solid #f7f1e124;border-radius:16px;flex-direction:column;gap:9px;padding:16px;font-family:inherit;transition:border-color .14s,background-color .14s,transform .14s;display:flex}.guide-card:hover{border-color:var(--pea);background:#b6f05a1a;transform:translateY(-2px)}.guide-card:focus-visible{outline:3px solid var(--pea);outline-offset:3px}.guide-card-locked{opacity:.45;cursor:default}.guide-model{width:100%;height:118px}.guide-model-empty{opacity:.5;place-items:center;font-size:34px;font-weight:800;display:grid}.guide-name{font-size:17px;font-weight:800}.guide-blurb{opacity:.72;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;font-size:12.5px;line-height:1.5;display:-webkit-box;overflow:hidden}.guide-more{letter-spacing:.12em;text-transform:uppercase;color:var(--pea);font-size:11px;font-weight:800}.guide-detail{text-align:left;grid-template-columns:minmax(240px,1fr) minmax(280px,1.15fr);align-items:center;gap:22px;width:100%;display:grid}.guide-detail-model{position:relative}.guide-model-large{cursor:grab;touch-action:none;width:100%;height:min(46vh,340px)}.guide-model-large:active{cursor:grabbing}.guide-drag-hint{letter-spacing:.16em;text-transform:uppercase;opacity:.5;pointer-events:none;font-size:10.5px;font-weight:700;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.guide-detail-text{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.guide-detail-name{letter-spacing:-.02em;font-size:clamp(24px,3.4vw,36px);font-weight:800;line-height:1.05}.guide-description{opacity:.85;text-wrap:pretty;font-size:15px;line-height:1.6}.guide-stats{border-top:1px solid #f7f1e124;flex-wrap:wrap;gap:18px;width:100%;padding-top:12px;display:flex}.guide-stats dt{letter-spacing:.13em;text-transform:uppercase;opacity:.6;font-size:10px;font-weight:700}.guide-stats dd{color:var(--pea);font-size:21px;font-weight:800;line-height:1.15}.guide-back{width:auto;margin-top:4px}@media (width<=720px){.guide-detail{grid-template-columns:1fr}}.btn{letter-spacing:.01em;cursor:pointer;border:none;border-radius:999px;padding:15px 34px;font-family:inherit;font-size:18px;font-weight:800;transition:transform .13s,box-shadow .13s,background-color .13s}.btn:focus-visible{outline:3px solid var(--pea);outline-offset:3px}.btn-primary{background:var(--pea);color:var(--ink);box-shadow:0 5px #7fae3c,0 12px 28px #00000073}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 7px #7fae3c,0 16px 34px #00000080}.btn-primary:active{transform:translateY(3px);box-shadow:0 2px #7fae3c,0 8px 18px #00000073}.btn-small{width:100%;padding:11px 18px;font-size:14px}.btn:disabled{cursor:default;opacity:.5;box-shadow:none;transform:none}.btn-ghost{color:var(--cream);background:0 0;border:2px solid #f7f1e152}.btn-ghost:hover{background:#f7f1e11a}.btn-row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.music-toggle{z-index:6;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0c140899;border:1px solid #f7f1e138;border-radius:50%;width:42px;height:42px;font-size:18px;line-height:1;transition:background-color .14s,transform .14s;position:absolute;bottom:18px;right:18px}.music-toggle:hover{background:#0c1408d9;transform:translateY(-1px)}.music-toggle:focus-visible{outline:3px solid var(--pea);outline-offset:2px}.loading{z-index:10;background:#0d1409;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.loading-bar{background:#f7f1e126;border-radius:999px;width:min(320px,60vw);height:7px;overflow:hidden}.loading-fill{background:var(--pea);height:100%;transition:width .16s ease-out}.loading-text{letter-spacing:.16em;text-transform:uppercase;opacity:.6;font-size:13px;font-weight:700}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
