/* The hidden attribute must win over any author display rule. Without this, a styled
   element (display:flex/grid/block) ignores [hidden] entirely and renders empty. */
[hidden]{display:none!important}
/* Nothing of the battle is shown until the first authoritative snapshot has rendered, so the
   page never flashes placeholder numbers at a visitor. No artwork here: the splash must paint
   before anything else has downloaded. */
.boot{position:fixed;inset:0;z-index:999;display:grid;place-items:center;align-content:center;gap:16px;padding:24px;text-align:center;background:radial-gradient(120% 90% at 50% 0%,#1d4a2c,#0d2a16 70%);transition:opacity .4s ease}
.boot-mark{width:44px;height:44px}
.boot-ring{width:30px;height:30px;border-radius:50%;border:3px solid #ffffff26;border-top-color:#d6f5a8;animation:boot-spin .9s linear infinite}
.boot p{margin:0;max-width:34ch;color:#dfeac8;font:600 16px/1.45 'Cormorant Garamond',Georgia,serif}
.boot a{color:#d6f5a8}
.boot.boot-done{opacity:0;pointer-events:none}
/* Shown when the running page is older than the deployed build. */
.update-bar{position:fixed;left:50%;bottom:18px;z-index:900;transform:translateX(-50%);display:flex;align-items:center;gap:14px;max-width:calc(100vw - 32px);padding:10px 12px 10px 18px;border:2px solid #6b4424;border-radius:999px;background:#f6edd6;color:#1c2e16;font:600 15px/1.3 Outfit,sans-serif;box-shadow:0 8px 24px #04190f66}
.update-bar button{flex:none;padding:8px 15px;border:0;border-radius:999px;background:#295d38;color:#fff7e5;font:750 14px/1 Outfit,sans-serif;cursor:pointer}
.update-bar button:hover{background:#1d4a2c}
@media(max-width:420px){.update-bar{font-size:14px;padding-left:14px}}
@keyframes boot-spin{to{transform:rotate(1turn)}}
@media(prefers-reduced-motion:reduce){.boot-ring{animation:none;border-top-color:#ffffff26}}
:root{
  color-scheme:light;
  --ink:#1c2e16;
  --ink-soft:#3d4e32;
  --cream:#f6edd6;
  --cream-2:#fff8e8;
  --wood:#6b4424;
  --wood-dark:#3e2814;
  --leaf:#2f7a3a;
  --leaf-2:#173f22;
  --sky:#8ec8ea;
  --gold:#e7b45a;
  font-family:Outfit,"Segoe UI",sans-serif;
  color:var(--ink);
  background:#1b4a28;
  font-synthesis:none;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#6b4424 transparent}
body{margin:0;min-width:320px;font-size:16px;line-height:1.5;background:#1b4a28}
::-webkit-scrollbar{width:12px;height:12px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#6b4424;border:3px solid transparent;border-radius:999px;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:#3e2814;background-clip:padding-box}
button,input{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
::selection{background:#2f7a3a;color:#fff8e8}
.world{position:relative;z-index:1;height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:88px 16px 24px}
.sky{position:absolute;inset:0;background:url('/art/field.jpg') center 58% / cover no-repeat;z-index:0}
.sun,.cloud,.bird,.hills,.tree{display:none}
.weather-fx{position:absolute;inset:0;z-index:2;pointer-events:none}
.sun{position:absolute;z-index:1;top:11%;right:11%;width:92px;height:92px;border-radius:50%;background:radial-gradient(circle,#fff8d4,#ffd36a 58%,#ffb347);box-shadow:0 0 40px 16px #ffd36a88,0 0 120px 40px #ffe7a444}
.cloud{position:absolute;z-index:1;height:28px;background:#fff;border-radius:40px;opacity:.92;animation:drift 56s linear infinite}
.cloud:before,.cloud:after{content:"";position:absolute;background:#fff;border-radius:50%}
.cloud:before{width:34px;height:34px;top:-18px;left:16px}
.cloud:after{width:24px;height:24px;top:-12px;left:42px}
.cloud-a{width:110px;top:14%;left:-12%;animation-duration:62s}
.cloud-b{width:78px;top:22%;left:18%;animation-duration:78s;animation-delay:-20s;opacity:.8}
.cloud-c{width:96px;top:9%;left:48%;animation-duration:70s;animation-delay:-40s}
.bird{position:absolute;z-index:1;top:16%;left:-8%;width:16px;height:8px;border-top:2px solid #2c4254;border-radius:50% 50% 0 0;animation:fly 26s linear infinite}
.bird-b{top:24%;animation-delay:-12s;animation-duration:34s}
.hills,.ground,.dirt,.meadow,.flowers,.sun,.cloud,.bird,.tree{display:none!important}
.tree{position:absolute;z-index:2;bottom:33%;width:130px;filter:drop-shadow(0 8px 0 #14301833)}
.tree svg{width:100%;height:auto;display:block}
.tree-a{left:2%;width:150px}
.tree-b{left:13%;width:96px;bottom:35%}
.tree-c{right:3%;width:160px}
.tree-d{right:14%;width:100px;bottom:36%}
.ground,.dirt,.meadow,.flowers{display:none}
.meadow{position:absolute;left:0;right:0;bottom:0;height:220px;pointer-events:none;transform-origin:50% 100%}
.meadow i{position:absolute;bottom:0;width:10px;border-radius:12px 12px 2px 2px;transform-origin:50% 100%;background:linear-gradient(#c6ef86,#2f8a3c 50%,#145226)}
.meadow-back{z-index:3;animation:sway 4.2s ease-in-out infinite}
.meadow-back i{left:calc(var(--i) * .92%);height:calc(42px + mod(var(--i), 6) * 16px);transform:rotate(calc((mod(var(--i), 7) - 3) * 4deg))}
.meadow-front{z-index:6;height:170px;animation:sway 5s ease-in-out infinite reverse}
.meadow-front i{left:calc(var(--i) * 1.28%);width:12px;height:calc(78px + mod(var(--i), 5) * 22px);background:linear-gradient(#e7f8b8,#3d9a44 38%,#0f4a22);transform:rotate(calc((mod(var(--i), 5) - 2) * 6deg))}
.flowers{position:absolute;z-index:3;left:0;right:0;bottom:0;height:34%;pointer-events:none}
.flowers i{position:absolute;left:var(--x);bottom:var(--y);width:7px;height:7px;border-radius:50%;background:#ffe56a;box-shadow:0 -7px 0 #fff,0 7px 0 #fff,-7px 0 0 #fff,7px 0 0 #fff}
.nav{position:absolute;z-index:9;top:0;left:0;right:0;min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px;background:linear-gradient(rgba(20,36,16,.22),transparent 78%)}
.brand{display:flex;align-items:center;gap:10px;color:#f6edd6;font-size:24px;font-weight:800;letter-spacing:-.03em;line-height:1;text-shadow:0 2px 8px #143018}
.brand-mark{width:22px;height:22px;flex:none}
.brand-tld{color:#d6f5a8}
.nav-right{display:flex;align-items:center;gap:10px}
.daymark{display:flex;flex-direction:column;align-items:flex-end;gap:1px;color:#f6edd6;text-shadow:0 2px 8px #143018}
.daymark em{font-style:normal;font-size:11px;font-weight:700;letter-spacing:.28em;text-transform:uppercase}
.daymark b{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:20px;font-weight:600;letter-spacing:.06em;line-height:1}
.online-dot{width:8px;height:8px;border-radius:50%;background:#2f9a4a;box-shadow:0 0 0 4px #2f9a4a33;flex:none}
.creature-slot{position:relative;z-index:4;width:min(680px,100%);display:flex;flex-direction:column;align-items:center}
.nameplate{width:max-content;max-width:min(520px,92vw);margin-bottom:4px;padding:0;text-align:center;background:none;border:0;box-shadow:none}
.versus{margin:0;color:#f6edd6;font-size:12px;font-weight:700;letter-spacing:.34em;text-transform:uppercase;text-shadow:0 2px 8px #143018}
.versus:after{content:"";display:block;width:36px;height:1px;margin:10px auto 0;background:#f6edd6aa}
.world-name{margin:8px 0 0;line-height:.82}
.world-name em{font-style:normal;color:#f7f3e6;font-size:clamp(76px,8vw,118px);font-weight:800;letter-spacing:-.065em;text-shadow:0 3px 0 #1a2e16,0 12px 24px rgba(16,32,14,.5)}
.world-name em.is-craig{letter-spacing:-.04em}
.plate-meta{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:12px}
.life{display:inline;margin:0;color:#f6edd6;font:600 12px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.18em;text-transform:uppercase;text-shadow:0 2px 8px #143018}
#mood{display:inline-block;margin:0;padding:4px 10px;border-radius:999px;background:#1c3a22;color:#f6edd6;font:600 12px/1.2 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.08em}
.weather{margin:8px 0 0;min-height:1.3em;color:#1c3a22;font-size:15px;font-weight:700;text-align:center}
.bark{margin:8px 0 0;min-height:1.4em;color:#1c3a22;font-size:16px;font-weight:600;text-align:center;text-shadow:0 1px 0 rgba(255,250,236,.85)}
body.field-night .bark,body.field-night .weather,body.field-drizzle .bark,body.field-drizzle .weather,body.field-storm .bark,body.field-storm .weather,body.field-dusk .bark,body.field-dusk .weather{color:#f4efe2;text-shadow:0 1px 2px rgba(6,12,24,.8)}
.sprite{position:relative;z-index:4;width:min(440px,78vw);height:min(320px,36vh);margin:2px 0 0}
.entity{position:relative;z-index:2;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 18px 10px #14301855)}
.entity-float{transform-origin:220px 198px;animation:float 4.6s ease-in-out infinite}
.entity-eyes .eye{fill:#cbb0ea}
.entity-eyes .core{fill:#f7f0ff}
.pupils path{fill:#16080c}
.entity.angry .entity-eyes .eye{fill:#ff241c}
.entity.angry .entity-eyes .core{fill:#fff0ea}
.entity.dead{filter:grayscale(1) drop-shadow(0 18px 10px #14301855);opacity:.55}
.entity.dead .entity-float{animation:none;transform:translateY(12px) rotate(12deg)}
.entity-eyes{transform-box:fill-box;transform-origin:center}
.slash{position:absolute;z-index:4;left:0;top:6%;width:100%;height:88%;pointer-events:none;opacity:0;overflow:visible}
.slash path{fill:#fff1d2;filter:drop-shadow(0 0 10px #ff9a44)}
.slash-core{fill:none;stroke:#fffaf4;stroke-width:5;stroke-linecap:round;filter:none}
.world.attacking .slash-one{animation:slash .42s ease-out .05s both}
.world.attacking .slash-two{animation:slash .36s ease-out .22s both}
.world.hit-shake .entity-float{animation:shake .42s cubic-bezier(.36,.07,.19,.97)}
.world.miss-flash .entity{animation:dodge .5s ease-in-out}
.impact{position:absolute;z-index:8;top:40%;left:50%;margin:0;color:#fffdf8;font-size:clamp(48px,6vw,84px);font-weight:800;letter-spacing:-.04em;line-height:1;text-shadow:0 3px 0 #5a2418,0 0 24px #ff6d64;pointer-events:none;opacity:0;white-space:nowrap}
.impact.active{animation:damage 1.35s ease-out forwards}
.impact.heal{color:#e9ffe8;text-shadow:0 3px 0 #145228,0 0 20px #7dcc62}
.impact.miss,.impact.disaster{color:#fff8e8}
.impact-burst{position:absolute;inset:0;z-index:7;pointer-events:none}
.impact-burst i{position:absolute;top:42%;left:50%;width:8px;height:8px;border-radius:1px;background:#ffe1c4;box-shadow:0 0 10px #ff8a5a;opacity:0}
.world.attacking .impact-burst i{animation:burst .8s ease-out forwards}
.impact-burst i:nth-child(1){--dx:0px;--dy:-110px}
.impact-burst i:nth-child(2){--dx:-100px;--dy:-60px}
.impact-burst i:nth-child(3){--dx:100px;--dy:-70px}
.impact-burst i:nth-child(4){--dx:80px;--dy:60px}
.impact-burst i:nth-child(5){--dx:-70px;--dy:70px}
.impact-burst i:nth-child(6){--dx:12px;--dy:-40px;width:5px;height:5px}
.hud{position:relative;z-index:8;width:min(560px,100%);display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 0 0}
.action{width:min(560px,100%);text-align:center}
.cooldown:empty{display:none}
.attack{position:relative;display:flex;align-items:center;gap:14px;width:100%;min-height:96px;padding:10px 16px 10px 10px;border:3px solid #6b4424;border-radius:18px;color:#3a2410;text-align:left;background:linear-gradient(180deg,#f6e2a8,#e0a84a 46%,#c4842e);box-shadow:0 6px 0 #5a3818,0 10px 0 #1e4a22;overflow:visible}
.attack:hover:not(:disabled){transform:translateY(-2px)}
.attack:active:not(:disabled){transform:translateY(4px);box-shadow:0 2px 0 #5a3818}
.attack:focus-visible{outline:3px solid #fffdf8;outline-offset:3px}
.attack:not(:disabled){animation:ready 2.6s ease-in-out infinite}
.attack-icon{position:relative;z-index:1;width:76px;height:76px;flex:none;border-radius:50%;overflow:hidden;background:transparent;box-shadow:0 0 0 3px #f0d7a4,0 4px 0 #5a3818}
.attack-icon img{position:absolute;inset:-10%;width:120%;height:120%;max-width:none;object-fit:cover;display:block}
.attack:disabled .slot,.attack.on-cooldown .slot{display:none}
.slot{position:absolute;z-index:6;top:-8px;left:-8px;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#f6edd6;color:#1c2e16;border:2px solid #6b4424;font:700 16px/1 "IBM Plex Mono",ui-monospace,monospace;box-shadow:0 2px 0 #3e2814}
.cd-veil{position:absolute;inset:0;border-radius:inherit;padding:3px;background:conic-gradient(from -90deg,#f6edd6 calc(var(--cd,0) * 360deg),transparent 0);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.attack:not(.on-cooldown) .cd-veil{opacity:0}
.attack-copy{position:relative;z-index:1;display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.attack-copy b{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}
.attack-copy small{color:#4a3018;font-size:15px;font-weight:650;font-weight:600;line-height:1.3}
.attack-arrow{position:relative;z-index:1;width:28px;height:28px;margin-left:auto;flex:none}
.attack.on-cooldown,.attack:disabled{animation:none;color:#f6edd6;background:#2c4030;border-color:#f0d7a4;box-shadow:0 6px 0 #143018;cursor:not-allowed}
.attack.on-cooldown .attack-copy small,.attack:disabled .attack-copy small{color:#f3e6c4}
.style-row{display:flex;justify-content:center;gap:16px;margin:8px 0 2px}
.style-row span{display:flex;align-items:center;gap:7px;color:#f6edd6;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 2px 8px #143018}
.style-row img{width:40px;height:40px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #f0d7a4}
.cooldown,.downhill{margin:0;color:#f6edd6;font-size:15px;font-weight:600;text-align:center;text-shadow:0 2px 8px #143018}
.downhill{display:inline-flex;align-items:center;gap:6px;margin-top:2px;padding-bottom:2px;border-bottom:1px solid #f6edd688}
.downhill:hover{color:#fff}
.turnstile-wrap:empty{display:none}
.turnstile-wrap{margin-top:4px}
.result{width:min(520px,100%);margin-bottom:6px;padding:16px 16px 14px;text-align:center;background:#f4e6c4 url('/art/parchment.jpg') center / cover;color:#1c2e16;border:3px solid #6b4424;border-radius:16px;box-shadow:0 6px 0 #3e2814}
.result.hidden{display:none}
.result-label{color:#6b4424;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.result h2{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin:6px 0;font-size:clamp(28px,4vw,40px);letter-spacing:-.03em;line-height:1.05;color:#1f6a32}
.result-style{width:44px;height:44px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #6b4424}
.result h2.heal{color:#1f7a4a}
.result h2.legendary,.result h2.crit{color:#a85a12}
.result>strong{display:block;font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.result p{margin:6px auto 0;max-width:440px;color:#3d4e32;font-size:16px}
.result p.bonus,.result p.finish{color:#8a4e10;font-weight:700}
.result button{margin-top:10px;border:0;border-radius:999px;background:#2f7a3a;color:#f6edd6;padding:10px 14px;font-size:14px;font-weight:700}
body.field-dawn .sky{background-image:url('/art/field-dawn.jpg')}
body.field-mist .sky{background-image:url('/art/field-mist.jpg')}
body.field-drizzle .sky{background-image:url('/art/field-rain.jpg')}
body.field-storm .sky{background-image:url('/art/field-storm.jpg')}
body.field-golden .sky{background-image:url('/art/field-golden.jpg')}
body.field-dusk .sky{background-image:url('/art/field-dusk.jpg')}
body.field-night .sky{background-image:url('/art/field-night.jpg')}
.weather-fx i{position:absolute;width:150px;height:108px;background:center/contain no-repeat;opacity:0;filter:drop-shadow(0 10px 6px #14301855)}
.weather-fx i:nth-child(1){background-image:url('/art/butterfly-a.webp');top:9%;left:5%}
.weather-fx i:nth-child(2){background-image:url('/art/butterfly-b.webp');top:16%;right:7%;left:auto;width:124px;height:88px}
.weather-fx i:nth-child(3){background-image:url('/art/butterfly-c.webp');top:7%;left:18%;width:96px;height:68px}
.weather-fx i:nth-child(4){background-image:url('/art/butterfly-c.webp');top:28%;left:11%;width:84px;height:60px}
.weather-fx i:nth-child(5){background-image:url('/art/butterfly-a.webp');top:24%;right:16%;left:auto;width:108px;height:76px}
.weather-fx i:nth-child(6){background-image:url('/art/butterfly-b.webp');top:8%;left:72%;width:72px;height:52px}
.weather-fx i:nth-child(7){background-image:url('/art/butterfly-a.webp');top:34%;right:8%;left:auto;width:78px;height:56px}
.weather-fx i:nth-child(8){background-image:url('/art/butterfly-c.webp');top:18%;right:28%;left:auto;width:64px;height:46px}
.world.field-butterflies .weather-fx i{opacity:1;animation:flutter 9s ease-in-out infinite}
.world.field-butterflies .weather-fx i:nth-child(2){animation-duration:12s;animation-delay:-3s}
.world.field-butterflies .weather-fx i:nth-child(3){animation-duration:8s;animation-delay:-1s}
.world.field-butterflies .weather-fx i:nth-child(4){animation-duration:11s;animation-delay:-5s}
.world.field-butterflies .weather-fx i:nth-child(5){animation-duration:10s;animation-delay:-2s}
.world.field-butterflies .weather-fx i:nth-child(6){animation-duration:13s;animation-delay:-4s}
.world.field-butterflies .weather-fx i:nth-child(7){animation-duration:9s;animation-delay:-6s}
.world.field-butterflies .weather-fx i:nth-child(8){animation-duration:11s;animation-delay:-1.5s}
.world.enraged .sky{filter:sepia(.45) saturate(1.45) hue-rotate(-18deg) brightness(.92)}
.world.won .sky{filter:saturate(.4) brightness(.95)}
.camp{position:relative;z-index:0;background:transparent;padding:36px 0 20px}
.camp:before{content:"";position:fixed;inset:0;z-index:0;background:url('/art/ledger.jpg') center / cover no-repeat}
.camp-inner{position:relative;z-index:1}
.camp-inner{max-width:1100px;margin:0 auto;padding:8px 22px 40px}
.camp-lead{padding:0 0 16px;text-align:center}
.camp-lead p{margin:0 auto;max-width:680px;padding:16px 22px;color:#1c2e16;font-size:18px;font-weight:500;line-height:1.55;background:#f4e6c4 url('/art/parchment.jpg') center / cover;border:3px solid #6b4424;border-radius:18px;box-shadow:0 7px 0 #3e2814}
.board,.member,.stats>div{background:#f4e6c4 url('/art/parchment.jpg') center / cover;color:#1c2e16;border:3px solid #6b4424;border-radius:18px;box-shadow:0 7px 0 #3e2814}
.vitals{padding:18px 44px 16px;margin-bottom:14px}
.vitals-top{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}
.vitals-top>div{min-width:0}
.section-kicker{color:#2f7a3a;font-size:14px;font-weight:750;font-weight:700}
.hp-number{display:flex;align-items:baseline;gap:8px;margin-top:2px;font-variant-numeric:tabular-nums}
.hp-number strong{font-size:clamp(34px,4vw,52px);font-weight:800;letter-spacing:-.04em;line-height:.95;color:#1c2e16}
.hp-number span{color:#5c6b52;font:500 15px/1 "IBM Plex Mono",ui-monospace,monospace}
.hp-unit{color:#2f7a3a;font:700 16px/1 "IBM Plex Mono",ui-monospace,monospace;padding-bottom:6px}
.bar-track{position:relative;height:22px;margin-top:12px;padding:3px;border-radius:999px;border:2px solid #6b4424;background:#2a3d22;overflow:hidden}
.bar-fill{height:100%;width:100%;border-radius:999px;background:linear-gradient(#e7f6a4,#7dcc4a 40%,#2f9a3a);box-shadow:inset 0 1px 0 #fff8;transition:width .6s ease}
.phase{position:absolute;top:3px;bottom:3px;width:2px;background:#f6edd6aa;transform:translateX(-1px)}
.vitals-bottom,.strike-top{display:flex;justify-content:space-between;gap:12px;margin-top:10px;color:#3d4e32;font-size:15px;font-weight:600}
.strike{margin-top:14px;padding-top:12px;border-top:2px dashed #c4a574}
.strike-top{color:#6b4424}
.strike-top b{color:#3d4e32;font-weight:600}
.strike-track{height:12px;margin-top:8px;border-radius:999px;background:#efe0bc;border:2px solid #c4a574;overflow:hidden}
#strikefill{height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#c4842e,#f0d48a);transition:width .6s ease}
.party{display:grid;grid-template-columns:240px 1fr;gap:12px;margin-bottom:14px}
.member{padding:12px 14px 10px;border-radius:16px;box-shadow:0 5px 0 #3e2814}
.member-top{display:flex;justify-content:space-between;gap:10px;align-items:baseline;font-size:16px;font-weight:700}
.member-top .ready{color:#1f7a3a}
.member-top .down{color:#a85a12}
.member-top .done{color:#5c6b52}
.member-track{height:10px;margin-top:8px;border-radius:999px;background:#efe0bc;overflow:hidden}
.member-track i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#8ed15a,#2f9a3a);transition:width .6s ease}
.member.you .member-track i{background:linear-gradient(90deg,#d6f5a8,#3dae5a)}
.member.down .member-track i{background:#c4a574}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.stats>div{min-width:0;padding:16px 14px 14px;border-radius:16px;box-shadow:0 5px 0 #3e2814;display:flex;flex-direction:column;gap:4px}
.stats span{color:#2f7a3a;font-size:14px;font-weight:750;font-weight:700}
.stats strong{font-size:clamp(30px,3vw,42px);font-weight:800;letter-spacing:-.04em;line-height:1;color:#1c2e16;font-variant-numeric:tabular-nums}
.stats small{color:#5c6b52;font-size:14px;font-weight:550;font-weight:500;line-height:1.35}
.swing-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:14px}
.swing-counts div{display:flex;align-items:center;gap:10px;min-width:0;padding:12px 14px;background:#f4e6c4 url('/art/parchment.jpg') center / cover;border:3px solid #6b4424;border-radius:18px;box-shadow:0 7px 0 #3e2814}
.swing-counts img{width:42px;height:42px;flex:none;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #6b4424}
.swing-counts span{color:#2f7a3a;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.swing-counts b{margin-left:auto;color:#1c2e16;font-size:28px;font-weight:800;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.below{display:grid;grid-template-columns:1.2fr .9fr;gap:14px}
.panel{position:relative}
.panel-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-bottom:2px solid #ead7ae}
.panel-top a{color:#2f7a3a;font-size:14px;font-weight:700;border-bottom:1px solid #2f7a3a55}
.panel-top h2{display:flex;align-items:center;gap:8px;margin:0;color:#1c2e16;font-family:Fraunces,Georgia,serif;font-size:22px;font-weight:560;letter-spacing:-.02em;font-optical-sizing:auto}
.panel-top>span{color:#6b4424;font-size:14px;font-weight:650;font-weight:600}
.events{max-height:440px;min-height:180px;overflow:auto;scrollbar-width:thin;scrollbar-color:#6b4424 transparent}
.event{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"time copy amount style" "pill copy amount style";column-gap:14px;row-gap:6px;align-items:center;padding:14px 18px 15px;border-bottom:1px solid #ead7ae;color:#1c2e16;font-size:16px;line-height:1.45}
.event:first-child{background:#fff8e8}
.event time{grid-area:time;align-self:end;color:#6b4424;font:500 13px/1.4 "IBM Plex Mono",ui-monospace,monospace;padding-top:0;white-space:nowrap}
.event .pill{grid-area:pill;align-self:start}
.event-copy{grid-area:copy;min-width:0}
.event-meta{display:flex;align-items:center;gap:8px;min-width:0}
.event-copy p{margin:2px 0 0;color:#243226;font-size:16px;line-height:1.5}
.style-chip{grid-area:style;display:flex;flex-direction:column;align-items:center;gap:4px;flex:none}
.style-icon{width:52px;height:52px;flex:none;border-radius:50%;object-fit:cover;display:block;box-shadow:0 0 0 2px #6b4424}
.style-name{color:#6b4424;font:600 11px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase}
.pill{display:inline-grid;place-items:center;min-width:72px;height:24px;padding:0 8px;border-radius:999px;background:#8f3226;color:#f8efe4;font:600 12px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em}
.event.crit .pill,.event.legendary .pill,.event.global .pill{background:#a85a12}
.event.heal .pill{background:#5b3d72}
.event.miss .pill,.event.disaster .pill,.event.fall .pill{background:#5c6b52}
.event.heal{background:#f6eef8}
.event.heal:first-child{background:#f3e8f6}
.vined{position:relative;overflow:hidden}
.vined:before,.vined:after{content:"";position:absolute;top:0;bottom:0;width:108px;pointer-events:none;z-index:2;background-repeat:no-repeat;background-size:148px auto,148px auto}
.vined:before{left:0;background-image:url('/art/vine.webp'),url('/art/vine-d.webp');background-position:left top,left bottom}
.vined:after{right:0;background-image:url('/art/vine-c.webp'),url('/art/vine-b.webp');background-position:right top,right bottom}
.achievements.vined:before{background-image:url('/art/vine-d.webp'),url('/art/vine.webp');background-position:left top,left bottom}
.panel.vined:before{background-size:136px auto,160px auto}
.dispatch.vined:after{background-size:160px auto,132px auto}
.vined.vitals{padding-left:112px;padding-right:112px}
.vined>.panel-top,.vined>summary.panel-top{padding-left:92px;padding-right:92px}
.vined .event{padding-left:92px;padding-right:92px}
.vined .ach-grid,.vined .briefing{padding-left:92px;padding-right:92px}
.achievements,.trophy{margin-bottom:14px}
.trophy[hidden]{display:none}
.ach-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:18px 28px 16px}
summary.panel-top{cursor:pointer;list-style:none}
summary.panel-top::-webkit-details-marker{display:none}
summary.panel-top::after{content:"";width:8px;height:8px;margin-left:10px;border-right:2px solid #6b4424;border-bottom:2px solid #6b4424;transform:rotate(45deg);flex:none}
details[open]>summary.panel-top::after{transform:rotate(-135deg);margin-top:4px}
.ach{display:grid;grid-template-columns:54px 1fr;gap:10px;align-items:center;padding:10px;border:2px solid #c4a574;border-radius:14px;background:#fff8e8cc}
.medal{position:relative;width:54px;height:54px}
.medal img{width:54px;height:54px;border-radius:50%;object-fit:cover;display:block}
.ach.off{background:#e7e0d0;border-color:#cfc4ae}
.ach.off img{filter:grayscale(1) brightness(.42)}
.ach.off b{color:#6d675c}
.ach.off div>span{color:#8a8174;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.lock{position:absolute;left:50%;top:50%;width:30px;height:30px;transform:translate(-50%,-50%);filter:drop-shadow(0 1px 1px rgba(0,0,0,.55))}
.ach b{font-size:15px;line-height:1.25}
.ach span{display:block;color:#3d4e32;font-size:14px;line-height:1.35}
.log-page,.hit-page{min-height:100vh;background:#12381c url('/art/meadow.jpg') center 20% / cover fixed}
.log-page:before,.hit-page:before{content:"";position:fixed;inset:0;background:linear-gradient(#12381cd0,#12381ce8);pointer-events:none}
.log-wrap,.hit-page{position:relative;z-index:1}
.log-wrap{max-width:780px;margin:0 auto;padding:28px 16px 56px}
.log-top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;color:#f6edd6}
.log-top a{color:#d6f5a8;font-weight:800;font-size:22px}
.log-count{font:600 13px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase}
.log-board{padding-bottom:8px}
.log-board .events{max-height:none;overflow:visible}
.log-day{margin:0;padding:16px 18px 6px;color:#6b4424;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.log-more{display:block;width:calc(100% - 28px);margin:8px 14px 14px;padding:12px;border:2px solid #6b4424;border-radius:999px;background:#fff8e8;color:#1c2e16;font-weight:700}
.log-more[hidden]{display:none}
.hit-page{display:grid;place-items:center;padding:30px 26px 44px}
.hit-wrap{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:20px;width:min(620px,100%)}
.hit-card{width:100%;padding:28px 28px 22px;text-align:center}
.hit-amount{display:block;margin:4px 0 2px;font:750 34px/1.1 Outfit,sans-serif;font-variant-numeric:tabular-nums;color:#1f6a32}
.hit-amount.heal{color:#1f7a4a}
.hit-amount.crit,.hit-amount.legendary{color:#a85a12}
.hit-amount.miss,.hit-amount.disaster{color:#5c6b52}
.hit-flavour{margin:10px auto 0;max-width:46ch;color:#3d4e32;font:600 17px/1.5 'Cormorant Garamond',Georgia,serif}
.hit-incident{margin:12px auto 0;max-width:46ch;padding:10px 14px;border:1px solid #c4a574;border-left:4px solid #a85a12;border-radius:10px;background:#fff8e8;color:#5c4320;font:600 14px/1.45 'IBM Plex Mono',ui-monospace,monospace;text-align:left}
.hit-world{margin:14px 0 0;color:#6b4424;font:600 12px/1.5 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.03em;text-transform:uppercase}
.hit-foot{margin:14px 0 0;color:#6b4424;font-size:14px}
.hit-wait{margin:14px auto 0;padding:9px 16px;width:fit-content;border:1px solid #c4a574;border-radius:999px;background:#fff8e8;color:#5c4320;font:600 14px/1 "IBM Plex Mono",ui-monospace,monospace}
.hit-wait b{color:#1c2e16}
.hit-spec{margin:18px 0 0;padding-top:14px;border-top:1px solid #c4a57480;text-align:left}
.hit-spec>div{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px;padding:7px 0;border-bottom:1px solid #ead7ae}
.hit-spec>div:last-child{border-bottom:0}
.hit-spec dt{color:#2f7a3a;font:700 12px/1.5 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.04em}
.hit-spec dd{margin:0;color:#3d4e32;font-size:14px;line-height:1.5}
.hit-spec code{padding:1px 5px;border-radius:5px;background:#eadcb8;color:#5c4320;font:600 12.5px/1.5 'IBM Plex Mono',ui-monospace,monospace}
.hit-card h1{margin:8px 0;font-size:clamp(36px,5vw,52px);letter-spacing:-.04em;line-height:1.05}
.hit-card strong{display:block;font-size:28px}
.hit-card p{color:#3d4e32}
.hit-links{display:flex;justify-content:center;flex-wrap:wrap;gap:18px;margin:0}
.hit-links a{color:#2f7a3a;font-weight:700;border-bottom:1px solid #2f7a3a55}
.trophy p{margin:0;padding:4px 16px 16px;font-size:16px;line-height:1.5}
.who{display:inline-block;max-width:100%;padding:2px 8px;border-radius:7px;background:#f6e4da;box-shadow:inset 0 0 0 1px #8f322638;color:#6e261c;font:750 13.5px/1.3 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.01em;overflow-wrap:anywhere}
.event.heal .who{background:#efe4f4;box-shadow:inset 0 0 0 1px #5b3d7238;color:#4a2f66}
.event.crit .who,.event.legendary .who,.event.global .who{background:#f8ecd4;box-shadow:inset 0 0 0 1px #a85a1238;color:#7a4010}
.event.miss .who,.event.disaster .who,.event.fall .who{background:#efe8d8;box-shadow:inset 0 0 0 1px #5c6b5238;color:#3d4a38}
.event>strong{grid-area:amount;color:#8f3226;font:800 17px/1 "IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums;white-space:nowrap}
.event.heal>strong{color:#5b3d72}
.event.crit>strong,.event.legendary>strong,.event.global>strong{color:#a85a12}
.empty{margin:0;padding:20px 16px;color:#3d4e32;font-size:16px}
.briefing{padding:16px 28px 14px}
.briefing-badge{color:#6b4424;font-size:13px;font-weight:750;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.briefing h2{margin:8px 0;font-family:Fraunces,Georgia,serif;font-weight:560;font-size:clamp(28px,3vw,36px);line-height:1.12;letter-spacing:-.03em;color:#1c2e16;font-optical-sizing:auto}
.briefing h2 span{color:#2f7a3a}
.briefing>p{margin:0 0 12px;color:#3d4e32;font-size:16px;line-height:1.55}
.rules{border-top:2px solid #ead7ae}
.rules div{display:flex;gap:12px;align-items:baseline;padding:11px 0;border-bottom:1px solid #ead7ae;color:#1c2e16;font-size:15px;line-height:1.4}
.rules span{color:#2f7a3a;font:700 13px/1 "IBM Plex Mono",ui-monospace,monospace}
.my-stats{margin-top:14px;padding:12px;border:2px solid #c4a574;border-radius:12px;background:#fff8e8}
.my-title{margin-bottom:6px;color:#6b4424;font-size:14px;font-weight:750;font-weight:700}
.my-stats>div:not(.my-title){display:flex;justify-content:space-between;gap:12px;padding:5px 0;color:#3d4e32;font-size:15px}
.my-stats b{color:#1c2e16;font-variant-numeric:tabular-nums}
/* The camp. The disclaimer and the site links share one panel so the page ends once, not
   twice, and the panel carries its own artwork layer underneath the copy.
   TO ADD THE CAMP ARTWORK: drop the image into site/art/, then set exactly these two
   properties on .sitefoot below and change nothing else —
     --camp-art      a CSS url() value pointing at your file under /art/
     --camp-art-height   how tall a band it should fill, e.g. 220px
   (--camp-art-position and --camp-art-opacity are there if the crop needs nudging.)
   The scrim above the art keeps the text legible whatever the illustration turns out to be,
   and the inner padding grows with the art so the copy never sits on top of it. */
.sitefoot{--camp-art:none;--camp-art-height:0px;--camp-art-position:center bottom;--camp-art-opacity:1;position:relative;isolation:isolate;overflow:hidden;margin-top:14px;border-radius:16px;border:2px solid #6b442455;background:rgba(246,237,214,.92);color:#1c2e16;font-size:15px;font-weight:500}
.sitefoot-art{position:absolute;right:0;bottom:0;left:0;height:var(--camp-art-height);background-image:var(--camp-art);background-position:var(--camp-art-position);background-size:cover;background-repeat:no-repeat;opacity:var(--camp-art-opacity);pointer-events:none;z-index:0}
.sitefoot-art:before{content:"";position:absolute;inset:0 0 auto;height:60%;background:linear-gradient(180deg,rgba(246,237,214,.94),rgba(246,237,214,0))}
.sitefoot-inner{position:relative;z-index:1;display:flex;flex-direction:column;gap:14px;padding:18px;padding-bottom:max(18px,calc(var(--camp-art-height) * .6))}
.sitefoot-note span{color:#6b4424;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.sitefoot-note p{margin:8px 0 0;color:#1c2e16;font-size:16px;line-height:1.5}
.sitefoot-bar{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;padding-top:13px;border-top:1px solid #6b442433}
.sitefoot-links{display:flex;gap:16px;flex-wrap:wrap}
.sitefoot i{font-style:normal;color:#3e5c38}
.sitefoot a{color:#2f7a3a;border-bottom:1px solid #2f7a3a66}
.sitefoot a:hover{color:#174a24}
/* What the field becomes in two hours. Deterministic, so it can be named in advance. */
/* What happened while this visitor was elsewhere. Dismissible, and never shown twice. */
.returned{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:0 0 14px;padding:11px 15px;border:1px solid #c4a574;border-left:4px solid #2f7a3a;border-radius:10px;background:#fff8e8}
.returned span{display:block;color:#6b4424;font:700 11px/1.3 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.12em}
.returned p{margin:4px 0 0;color:#243226;font-size:15px;line-height:1.45}
.returned button{flex:none;padding:0 2px;border:0;background:none;color:#6b4424;font-size:20px;line-height:1;cursor:pointer}
.returned button:hover{color:#1c2e16}
/* A row that arrived over the socket announces itself rather than appearing silently. */
@keyframes event-arrive{from{background:#fff1c4;box-shadow:inset 3px 0 0 #2f7a3a}to{background:transparent;box-shadow:inset 0 0 0 rgba(0,0,0,0)}}
.event.arrived{animation:event-arrive 1.8s ease-out}
@keyframes float{0%,100%{transform:translateY(0) rotate(-1.4deg)}50%{transform:translateY(-18px) rotate(1.8deg)}}
@keyframes sway{0%,100%{transform:skewX(-2deg)}50%{transform:skewX(3deg)}}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(120vw)}}
@keyframes fly{from{transform:translateX(0)}to{transform:translateX(120vw)}}
@keyframes blink{0%,46%,50%,100%{transform:scaleY(1)}48%{transform:scaleY(.08)}}
@keyframes gleam{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes ready{50%{box-shadow:0 6px 0 #5a3818,0 10px 0 #1e4a22,0 0 24px #f0d48a88}}
@keyframes slash{0%{opacity:0;transform:scale(.72) rotate(-12deg)}18%{opacity:1}100%{opacity:0;transform:scale(1.06) rotate(8deg)}}
@keyframes shake{0%,100%{transform:translateX(0)}18%{transform:translateX(-14px) rotate(-3deg)}38%{transform:translateX(12px) rotate(3deg)}58%{transform:translateX(-7px)}78%{transform:translateX(4px)}}
@keyframes dodge{40%{transform:translateX(28px) rotate(7deg)}}
@keyframes damage{0%{opacity:0;transform:translate(-50%,-10%) scale(.6)}18%{opacity:1;transform:translate(-50%,-60%) scale(1.08)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-120%) scale(.96)}}
@keyframes burst{0%{opacity:0;transform:translate(0,0) scale(.4)}25%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(120deg) scale(1.1)}}
@keyframes rain-mist{from{background-position:0 0}to{background-position:-220px 1400px}}@keyframes rain-drop{from{background-position:0 0}to{background-position:-280px 1400px}}@keyframes rain-sheet{from{background-position:0 0}to{background-position:-320px 1400px}}@keyframes rain-mist-thick{from{background-position:0 0,90px 360px}to{background-position:-220px 1400px,-130px 1760px}}
@keyframes flutter{0%,100%{transform:translate(0,0) rotate(-6deg) scaleX(1)}35%{transform:translate(26px,-18px) rotate(4deg) scaleX(.86)}70%{transform:translate(10px,-6px) rotate(-2deg) scaleX(1)}}
@media(max-width:860px){
  .below,.party,.stats{grid-template-columns:1fr 1fr}
  .tree-b,.tree-d{display:none}
}
@media(max-width:740px){
  .world{padding:64px 12px 0}
  .nav{padding:10px 12px}
  .brand{font-size:18px}
  .daymark b{font-size:16px}
  .nameplate{padding:0}
  .world-name em{font-size:64px}
  .style-row{gap:8px}
  .style-row img{width:32px;height:32px}
  .sprite{height:220px}
  .vined:before,.vined:after{width:58px}
  .vined.vitals,.vined>.panel-top,.vined>summary.panel-top,.vined .event,.vined .ach-grid,.vined .briefing{padding-left:68px;padding-right:68px}
  .sun{width:64px;height:64px;top:12%;right:6%}
  .tree-a,.tree-c{width:96px}
  .hp-number{flex-direction:column;align-items:flex-start;gap:2px}
  .hp-number strong{font-size:32px}
  .party,.below,.stats,.ach-grid{grid-template-columns:1fr}
  .swing-counts{gap:8px}
  .swing-counts b{font-size:20px}
  .swing-counts div{padding:10px 8px}
  .attack-copy b{font-size:20px}
  .attack-icon{width:64px;height:64px}
  .slot{width:26px;height:26px;font-size:14px}
  .camp-inner{padding:8px 12px 20px}
  .sitefoot-bar{flex-direction:column;align-items:flex-start;gap:9px}
  .returned{padding:10px 12px}
  .event{grid-template-columns:auto minmax(0,1fr) auto auto;font-size:14px}
  .event time{grid-area:time}
  .style-icon{width:44px;height:44px}
}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* V0.3 — FIELD GUIDE: atmosphere, shared encounter HUD and living ledger */
:root{--paper:#f6ebce;--deep:#11291c;--green:#244f32;--muted:#58734e;--bright:#dff4a7}
body{overflow-x:hidden}
.world{height:auto;min-height:max(810px,100svh);justify-content:flex-start;padding:108px 24px 62px;isolation:isolate;background:#173d29}
.sky{z-index:-2;background-position:center 54%;transition:filter 1.3s ease,background-image .5s ease}
.sky:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0b231c82 0%,transparent 19%,transparent 55%,#0a2517ab 94%),radial-gradient(ellipse 67% 69% at 50% 47%,transparent 30%,#0b251d65 100%);pointer-events:none}
.nav{padding:19px clamp(18px,4vw,66px);background:linear-gradient(#0d241a91,transparent)}
.brand{font-size:25px;letter-spacing:-.045em}
.nav-right{gap:18px}
.live-state{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #e5f3c588;border-radius:99px;color:#f5f3d9;background:#13392395;font:700 10px/1 "IBM Plex Mono",monospace;letter-spacing:.1em;white-space:nowrap}
.live-state i,.phase-dot,.encounter-pulse{width:7px;height:7px;border-radius:50%;display:inline-block;flex:none;background:#c9f88c;box-shadow:0 0 0 4px #c9f88c2e,0 0 10px #c9f88c99}
.live-state.offline i{background:#e7aa6b;box-shadow:0 0 0 4px #e7aa6b30}
.creature-slot{width:min(650px,100%);z-index:4}
.phase-ribbon{display:flex;align-items:center;justify-content:center;gap:9px;max-width:100%;margin:0 auto 13px;padding:8px 14px;border:1px solid #f2e9c55e;border-radius:99px;background:#173f2cb8;color:#f9f3d7;box-shadow:0 4px 25px #0920143d;backdrop-filter:blur(9px);font:700 11px/1.2 "IBM Plex Mono",monospace;letter-spacing:.045em}
.phase-ribbon b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.phase-sub{opacity:.58;border-left:1px solid #f2e9c544;padding-left:9px;white-space:nowrap;font-size:9px}
.nameplate{margin-bottom:9px}
.world-name em{filter:drop-shadow(0 0 26px #ecf6c345)}
.plate-meta{margin-top:14px}
#mood{background:#1b3d2dbd;border:1px solid #dde4af79;box-shadow:0 4px 12px #10291a55}
.bark{max-width:550px;padding:4px 20px;font-family:Fraunces,Georgia,serif;font-weight:560;font-size:clamp(17px,1.65vw,21px);font-style:italic;line-height:1.35;color:#f8f3dc;text-shadow:0 2px 5px #12351f,0 2px 16px #143018}
.weather{margin:3px 0 0;color:#e6f4c9;font:600 12px/1.5 "IBM Plex Mono",monospace;letter-spacing:.035em;text-shadow:0 2px 8px #12351f}
.sprite{height:clamp(240px,32vh,340px);width:min(420px,78vw);margin:2px 0 0;filter:drop-shadow(0 25px 27px #10231b63)}
.entity{transition:filter .9s ease}
.world.mode-exposed .entity{filter:drop-shadow(0 3px 22px #f2db79cc) drop-shadow(0 22px 16px #173f25)}
.world.mode-exposed .entity-eyes .eye{fill:#ffe38b}
.world.mode-guarded .entity{filter:drop-shadow(0 0 15px #8ac6c8d1) drop-shadow(0 18px 14px #14301855)}
.world.mode-guarded .sprite:before{content:"";position:absolute;z-index:1;inset:5% 8% 4%;border:2px solid #d0f3f3a1;border-radius:48% 51% 50% 49%;background:radial-gradient(ellipse,#c3eeed0d 53%,#7dc6d62c 87%,transparent);box-shadow:0 0 34px #95e5e45c;animation:ward 3.6s ease-in-out infinite;pointer-events:none}
.world.mode-frenzied .entity{filter:drop-shadow(0 0 22px #ffd47e) drop-shadow(0 21px 15px #14301855)}
.world.mode-unraveling .entity-float{animation:unravel 5s steps(1,end) infinite}
.world.mode-panic .entity-float{animation:float 1.8s ease-in-out infinite}
.world.mode-sleepy .entity-eyes{transform:scaleY(.65);transform-origin:center;animation:none}
.world.craig-mode .entity-eyes .eye{fill:#f4ad75}
.world.craig-mode .entity-eyes .core{fill:#fff3e4}
.world.craig-mode .pupil{fill:#6a3a28}
.world.jackpot-flash .sprite{filter:drop-shadow(0 0 30px #ffe781) drop-shadow(0 0 65px #fcb94b)}
.world{--rain-mist:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22220%22%20height%3D%221400%22%20viewBox%3D%220%200%20220%201400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f7fbff%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23e4f1f8%22%20stop-opacity%3D%22.28%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%22.92%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22url(%23g)%22%20stroke-linecap%3D%22round%22%3E%3Cline%20x1%3D%22130.6%22%20y1%3D%22806.8%22%20x2%3D%22126.0%22%20y2%3D%22836.1%22%20stroke-width%3D%220.99%22%20stroke-opacity%3D%220.52%22%2F%3E%3Cline%20x1%3D%22130.9%22%20y1%3D%22623.5%22%20x2%3D%22128.1%22%20y2%3D%22641.6%22%20stroke-width%3D%220.84%22%20stroke-opacity%3D%220.65%22%2F%3E%3Cline%20x1%3D%22144.7%22%20y1%3D%22229.0%22%20x2%3D%22140.2%22%20y2%3D%22255.9%22%20stroke-width%3D%220.72%22%20stroke-opacity%3D%220.40%22%2F%3E%3Cline%20x1%3D%22125.9%22%20y1%3D%22184.1%22%20x2%3D%22121.9%22%20y2%3D%22210.4%22%20stroke-width%3D%220.89%22%20stroke-opacity%3D%220.53%22%2F%3E%3Cline%20x1%3D%22168.2%22%20y1%3D%221049.2%22%20x2%3D%22163.4%22%20y2%3D%221076.1%22%20stroke-width%3D%220.78%22%20stroke-opacity%3D%220.55%22%2F%3E%3Cline%20x1%3D%22156.7%22%20y1%3D%221335.2%22%20x2%3D%22153.8%22%20y2%3D%221357.8%22%20stroke-width%3D%220.77%22%20stroke-opacity%3D%220.34%22%2F%3E%3Cline%20x1%3D%22176.3%22%20y1%3D%221109.6%22%20x2%3D%22171.1%22%20y2%3D%221147.5%22%20stroke-width%3D%220.80%22%20stroke-opacity%3D%220.29%22%2F%3E%3Cline%20x1%3D%22109.5%22%20y1%3D%22726.5%22%20x2%3D%22106.3%22%20y2%3D%22744.5%22%20stroke-width%3D%220.76%22%20stroke-opacity%3D%220.50%22%2F%3E%3Cline%20x1%3D%22137.5%22%20y1%3D%2272.5%22%20x2%3D%22132.8%22%20y2%3D%22107.6%22%20stroke-width%3D%220.83%22%20stroke-opacity%3D%220.56%22%2F%3E%3Cline%20x1%3D%22103.7%22%20y1%3D%22482.9%22%20x2%3D%2297.3%22%20y2%3D%22524.5%22%20stroke-width%3D%220.67%22%20stroke-opacity%3D%220.60%22%2F%3E%3Cline%20x1%3D%2271.9%22%20y1%3D%22760.5%22%20x2%3D%2267.3%22%20y2%3D%22787.4%22%20stroke-width%3D%220.79%22%20stroke-opacity%3D%220.65%22%2F%3E%3Cline%20x1%3D%22135.3%22%20y1%3D%22857.5%22%20x2%3D%22132.6%22%20y2%3D%22877.7%22%20stroke-width%3D%220.70%22%20stroke-opacity%3D%220.44%22%2F%3E%3Cline%20x1%3D%22177.3%22%20y1%3D%22862.5%22%20x2%3D%22172.6%22%20y2%3D%22888.3%22%20stroke-width%3D%220.81%22%20stroke-opacity%3D%220.68%22%2F%3E%3Cline%20x1%3D%2273.4%22%20y1%3D%22703.9%22%20x2%3D%2268.6%22%20y2%3D%22735.1%22%20stroke-width%3D%220.65%22%20stroke-opacity%3D%220.67%22%2F%3E%3Cline%20x1%3D%2237.4%22%20y1%3D%22119.8%22%20x2%3D%2233.8%22%20y2%3D%22143.7%22%20stroke-width%3D%220.95%22%20stroke-opacity%3D%220.52%22%2F%3E%3Cline%20x1%3D%2232.8%22%20y1%3D%22888.7%22%20x2%3D%2228.0%22%20y2%3D%22919.6%22%20stroke-width%3D%220.91%22%20stroke-opacity%3D%220.72%22%2F%3E%3Cline%20x1%3D%22189.9%22%20y1%3D%22514.6%22%20x2%3D%22183.8%22%20y2%3D%22555.8%22%20stroke-width%3D%220.95%22%20stroke-opacity%3D%220.57%22%2F%3E%3Cline%20x1%3D%22142.0%22%20y1%3D%22680.7%22%20x2%3D%22139.4%22%20y2%3D%22698.6%22%20stroke-width%3D%220.90%22%20stroke-opacity%3D%220.38%22%2F%3E%3Cline%20x1%3D%22171.0%22%20y1%3D%221274.5%22%20x2%3D%22167.4%22%20y2%3D%221300.4%22%20stroke-width%3D%220.95%22%20stroke-opacity%3D%220.28%22%2F%3E%3Cline%20x1%3D%22123.2%22%20y1%3D%22956.5%22%20x2%3D%22118.4%22%20y2%3D%22983.7%22%20stroke-width%3D%220.90%22%20stroke-opacity%3D%220.28%22%2F%3E%3Cline%20x1%3D%2245.7%22%20y1%3D%221099.6%22%20x2%3D%2241.2%22%20y2%3D%221128.5%22%20stroke-width%3D%220.68%22%20stroke-opacity%3D%220.32%22%2F%3E%3Cline%20x1%3D%2226.7%22%20y1%3D%22237.0%22%20x2%3D%2219.4%22%20y2%3D%22276.9%22%20stroke-width%3D%220.89%22%20stroke-opacity%3D%220.45%22%2F%3E%3Cline%20x1%3D%2294.1%22%20y1%3D%22990.7%22%20x2%3D%2290.1%22%20y2%3D%221018.8%22%20stroke-width%3D%220.82%22%20stroke-opacity%3D%220.43%22%2F%3E%3Cline%20x1%3D%22200.6%22%20y1%3D%22411.2%22%20x2%3D%22195.9%22%20y2%3D%22442.5%22%20stroke-width%3D%220.83%22%20stroke-opacity%3D%220.39%22%2F%3E%3Cline%20x1%3D%22168.5%22%20y1%3D%22145.6%22%20x2%3D%22162.1%22%20y2%3D%22183.1%22%20stroke-width%3D%220.69%22%20stroke-opacity%3D%220.61%22%2F%3E%3Cline%20x1%3D%2279.5%22%20y1%3D%22143.5%22%20x2%3D%2276.5%22%20y2%3D%22165.1%22%20stroke-width%3D%221.00%22%20stroke-opacity%3D%220.56%22%2F%3E%3Cline%20x1%3D%2257.8%22%20y1%3D%22287.9%22%20x2%3D%2253.3%22%20y2%3D%22313.9%22%20stroke-width%3D%220.71%22%20stroke-opacity%3D%220.56%22%2F%3E%3Cline%20x1%3D%22200.8%22%20y1%3D%221189.2%22%20x2%3D%22198.1%22%20y2%3D%221205.5%22%20stroke-width%3D%220.86%22%20stroke-opacity%3D%220.67%22%2F%3E%3Cline%20x1%3D%22162.2%22%20y1%3D%22355.4%22%20x2%3D%22159.4%22%20y2%3D%22372.9%22%20stroke-width%3D%221.04%22%20stroke-opacity%3D%220.34%22%2F%3E%3Cline%20x1%3D%2230.0%22%20y1%3D%221281.8%22%20x2%3D%2227.2%22%20y2%3D%221302.6%22%20stroke-width%3D%220.87%22%20stroke-opacity%3D%220.53%22%2F%3E%3Cline%20x1%3D%2228.8%22%20y1%3D%221144.0%22%20x2%3D%2224.8%22%20y2%3D%221166.0%22%20stroke-width%3D%220.76%22%20stroke-opacity%3D%220.31%22%2F%3E%3Cline%20x1%3D%2241.0%22%20y1%3D%22513.8%22%20x2%3D%2236.9%22%20y2%3D%22541.2%22%20stroke-width%3D%220.70%22%20stroke-opacity%3D%220.67%22%2F%3E%3Cline%20x1%3D%22105.2%22%20y1%3D%22555.4%22%20x2%3D%2299.3%22%20y2%3D%22596.0%22%20stroke-width%3D%220.70%22%20stroke-opacity%3D%220.38%22%2F%3E%3Cline%20x1%3D%2231.9%22%20y1%3D%221007.9%22%20x2%3D%2227.7%22%20y2%3D%221040.4%22%20stroke-width%3D%220.71%22%20stroke-opacity%3D%220.37%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");--rain-drop:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22280%22%20height%3D%221400%22%20viewBox%3D%220%200%20280%201400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f7fbff%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23e4f1f8%22%20stop-opacity%3D%22.28%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%22.92%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22url(%23g)%22%20stroke-linecap%3D%22round%22%3E%3Cline%20x1%3D%2295.2%22%20y1%3D%22340.7%22%20x2%3D%2285.2%22%20y2%3D%22398.0%22%20stroke-width%3D%221.14%22%20stroke-opacity%3D%220.62%22%2F%3E%3Cline%20x1%3D%2280.3%22%20y1%3D%2259.2%22%20x2%3D%2268.4%22%20y2%3D%22122.9%22%20stroke-width%3D%221.27%22%20stroke-opacity%3D%220.45%22%2F%3E%3Cline%20x1%3D%22245.7%22%20y1%3D%22643.2%22%20x2%3D%22229.4%22%20y2%3D%22718.2%22%20stroke-width%3D%221.30%22%20stroke-opacity%3D%220.48%22%2F%3E%3Cline%20x1%3D%22196.0%22%20y1%3D%22365.1%22%20x2%3D%22176.1%22%20y2%3D%22453.8%22%20stroke-width%3D%221.24%22%20stroke-opacity%3D%220.50%22%2F%3E%3Cline%20x1%3D%2237.6%22%20y1%3D%22818.5%22%20x2%3D%2227.3%22%20y2%3D%22879.0%22%20stroke-width%3D%221.08%22%20stroke-opacity%3D%220.62%22%2F%3E%3Cline%20x1%3D%22170.0%22%20y1%3D%22424.9%22%20x2%3D%22159.7%22%20y2%3D%22479.7%22%20stroke-width%3D%221.39%22%20stroke-opacity%3D%220.82%22%2F%3E%3Cline%20x1%3D%22216.4%22%20y1%3D%22703.4%22%20x2%3D%22202.3%22%20y2%3D%22778.6%22%20stroke-width%3D%221.36%22%20stroke-opacity%3D%220.49%22%2F%3E%3Cline%20x1%3D%2272.8%22%20y1%3D%22224.6%22%20x2%3D%2257.0%22%20y2%3D%22305.5%22%20stroke-width%3D%221.25%22%20stroke-opacity%3D%220.56%22%2F%3E%3Cline%20x1%3D%22160.9%22%20y1%3D%22163.3%22%20x2%3D%22148.5%22%20y2%3D%22222.3%22%20stroke-width%3D%221.32%22%20stroke-opacity%3D%220.73%22%2F%3E%3Cline%20x1%3D%2270.9%22%20y1%3D%221162.8%22%20x2%3D%2257.3%22%20y2%3D%221231.5%22%20stroke-width%3D%221.02%22%20stroke-opacity%3D%220.90%22%2F%3E%3Cline%20x1%3D%2289.8%22%20y1%3D%221048.9%22%20x2%3D%2275.9%22%20y2%3D%221110.2%22%20stroke-width%3D%221.38%22%20stroke-opacity%3D%220.64%22%2F%3E%3Cline%20x1%3D%22162.0%22%20y1%3D%22600.2%22%20x2%3D%22151.9%22%20y2%3D%22652.4%22%20stroke-width%3D%221.24%22%20stroke-opacity%3D%220.56%22%2F%3E%3Cline%20x1%3D%22168.2%22%20y1%3D%22244.3%22%20x2%3D%22154.5%22%20y2%3D%22302.1%22%20stroke-width%3D%221.28%22%20stroke-opacity%3D%220.66%22%2F%3E%3Cline%20x1%3D%22215.8%22%20y1%3D%22782.0%22%20x2%3D%22201.5%22%20y2%3D%22849.5%22%20stroke-width%3D%221.40%22%20stroke-opacity%3D%220.69%22%2F%3E%3Cline%20x1%3D%2264.1%22%20y1%3D%22708.3%22%20x2%3D%2249.0%22%20y2%3D%22780.1%22%20stroke-width%3D%221.06%22%20stroke-opacity%3D%220.61%22%2F%3E%3Cline%20x1%3D%22161.5%22%20y1%3D%22507.7%22%20x2%3D%22151.6%22%20y2%3D%22555.7%22%20stroke-width%3D%221.38%22%20stroke-opacity%3D%220.67%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");--rain-sheet:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%221400%22%20viewBox%3D%220%200%20320%201400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f7fbff%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23e4f1f8%22%20stop-opacity%3D%22.28%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%22.92%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22url(%23g)%22%20stroke-linecap%3D%22round%22%3E%3Cline%20x1%3D%22153.2%22%20y1%3D%22681.4%22%20x2%3D%22124.6%22%20y2%3D%22827.9%22%20stroke-width%3D%221.30%22%20stroke-opacity%3D%220.83%22%2F%3E%3Cline%20x1%3D%2251.5%22%20y1%3D%22703.7%22%20x2%3D%2216.2%22%20y2%3D%22852.8%22%20stroke-width%3D%221.11%22%20stroke-opacity%3D%220.54%22%2F%3E%3Cline%20x1%3D%22170.6%22%20y1%3D%22608.3%22%20x2%3D%22143.8%22%20y2%3D%22738.9%22%20stroke-width%3D%221.45%22%20stroke-opacity%3D%220.64%22%2F%3E%3Cline%20x1%3D%22227.3%22%20y1%3D%22139.5%22%20x2%3D%22191.0%22%20y2%3D%22290.5%22%20stroke-width%3D%221.33%22%20stroke-opacity%3D%220.94%22%2F%3E%3Cline%20x1%3D%22201.5%22%20y1%3D%2236.8%22%20x2%3D%22164.3%22%20y2%3D%22192.0%22%20stroke-width%3D%221.45%22%20stroke-opacity%3D%221.00%22%2F%3E%3Cline%20x1%3D%22124.2%22%20y1%3D%22189.8%22%20x2%3D%22100.8%22%20y2%3D%22312.8%22%20stroke-width%3D%221.06%22%20stroke-opacity%3D%220.66%22%2F%3E%3Cline%20x1%3D%2268.4%22%20y1%3D%22337.4%22%20x2%3D%2234.2%22%20y2%3D%22486.1%22%20stroke-width%3D%221.15%22%20stroke-opacity%3D%220.95%22%2F%3E%3Cline%20x1%3D%22109.5%22%20y1%3D%22415.8%22%20x2%3D%2277.2%22%20y2%3D%22545.5%22%20stroke-width%3D%221.48%22%20stroke-opacity%3D%220.52%22%2F%3E%3Cline%20x1%3D%22109.9%22%20y1%3D%22638.8%22%20x2%3D%2276.7%22%20y2%3D%22786.2%22%20stroke-width%3D%221.49%22%20stroke-opacity%3D%220.97%22%2F%3E%3Cline%20x1%3D%2293.7%22%20y1%3D%2260.2%22%20x2%3D%2259.3%22%20y2%3D%22195.5%22%20stroke-width%3D%221.14%22%20stroke-opacity%3D%220.52%22%2F%3E%3Cline%20x1%3D%2280.4%22%20y1%3D%221184.3%22%20x2%3D%2245.4%22%20y2%3D%221333.7%22%20stroke-width%3D%221.19%22%20stroke-opacity%3D%220.62%22%2F%3E%3Cline%20x1%3D%22207.1%22%20y1%3D%22696.8%22%20x2%3D%22171.3%22%20y2%3D%22863.0%22%20stroke-width%3D%221.25%22%20stroke-opacity%3D%220.80%22%2F%3E%3Cline%20x1%3D%22256.8%22%20y1%3D%22442.7%22%20x2%3D%22222.8%22%20y2%3D%22609.2%22%20stroke-width%3D%221.10%22%20stroke-opacity%3D%220.52%22%2F%3E%3Cline%20x1%3D%22196.4%22%20y1%3D%221106.2%22%20x2%3D%22163.6%22%20y2%3D%221257.1%22%20stroke-width%3D%221.12%22%20stroke-opacity%3D%220.89%22%2F%3E%3Cline%20x1%3D%2247.9%22%20y1%3D%22198.5%22%20x2%3D%2210.1%22%20y2%3D%22349.2%22%20stroke-width%3D%221.10%22%20stroke-opacity%3D%220.72%22%2F%3E%3Cline%20x1%3D%2280.7%22%20y1%3D%22964.4%22%20x2%3D%2247.3%22%20y2%3D%221099.5%22%20stroke-width%3D%221.10%22%20stroke-opacity%3D%220.61%22%2F%3E%3Cline%20x1%3D%22259.7%22%20y1%3D%22925.0%22%20x2%3D%22235.0%22%20y2%3D%221043.5%22%20stroke-width%3D%221.54%22%20stroke-opacity%3D%220.58%22%2F%3E%3Cline%20x1%3D%22110.3%22%20y1%3D%22912.9%22%20x2%3D%2282.0%22%20y2%3D%221023.7%22%20stroke-width%3D%221.54%22%20stroke-opacity%3D%220.61%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}
.weather-fx:before,.weather-fx:after{content:"";position:absolute;inset:0;opacity:0;pointer-events:none;background-repeat:repeat}
.world.field-drizzle .weather-fx:before,.world.field-drizzle .creature-slot:before,.world.field-storm .weather-fx:before,.world.field-storm .creature-slot:before,.world.field-drizzle .weather-fx:after,.world.field-drizzle .creature-slot:after,.world.field-storm .weather-fx:after,.world.field-storm .creature-slot:after{content:"";position:absolute;inset:0;pointer-events:none;background-repeat:repeat;-webkit-mask-image:linear-gradient(#0000,#000 8%,#000 92%,#0000);mask-image:linear-gradient(#0000,#000 8%,#000 92%,#0000)}
.world.field-drizzle .creature-slot:before,.world.field-drizzle .creature-slot:after,.world.field-storm .creature-slot:before,.world.field-storm .creature-slot:after{z-index:1}
.world.field-drizzle .weather-fx:before,.world.field-drizzle .creature-slot:before{opacity:.46;background-image:var(--rain-mist);background-size:220px 1400px;animation:rain-mist 3.1s linear infinite}
.world.field-drizzle .weather-fx:after,.world.field-drizzle .creature-slot:after{opacity:.7;background-image:var(--rain-drop);background-size:280px 1400px;animation:rain-drop 1.55s linear infinite}
.world.field-storm .weather-fx:before,.world.field-storm .creature-slot:before{opacity:.82;background-image:var(--rain-mist),var(--rain-mist);background-size:220px 1400px,220px 1400px;animation:rain-mist-thick .9s linear infinite}
.world.field-storm .weather-fx:after,.world.field-storm .creature-slot:after{opacity:.92;background-image:var(--rain-sheet);background-size:320px 1400px;animation:rain-sheet .48s linear infinite}
.world.field-mist .sky:after{background:linear-gradient(90deg,#dfece670,#ddeadd10 48%,#d8e9e85a)}
.world.field-night .sky:after{background:linear-gradient(180deg,#08152466,transparent 29%,#061427a8 94%),radial-gradient(ellipse at 50% 42%,transparent 20%,#0a112c90 80%)}
.hud{width:min(520px,100%);margin-top:5px;gap:8px}
.action{width:100%}
.attack{min-height:88px;border-radius:17px;border:2px solid #f6e4ab;box-shadow:0 6px 0 #5c3819,0 10px 28px #091e1370;background:linear-gradient(175deg,#f9e8b8,#e6b55e 52%,#ba782c)}
.attack-copy b{font-size:clamp(20px,2.3vw,25px)}
.attack:not(:disabled){animation:ready 3.2s ease-in-out infinite}
.attack:disabled{background:linear-gradient(170deg,#2b4936,#19372c)}
.style-row{margin:11px 0 4px}
.style-row span{font-size:12px}
.style-row img{width:32px;height:32px}
.downhill{margin-top:5px;font-size:13px;text-transform:uppercase;letter-spacing:.13em}
.result{position:relative;z-index:10;width:100%;overflow:visible;margin:10px 0 18px;padding:22px 22px 18px;background:#f6ebce url('/art/parchment.jpg') center/cover;box-shadow:0 7px 0 #402911,0 15px 35px #132e1c88;border-radius:18px}
.result.jackpot-result{border-color:#bf8438;box-shadow:0 5px 0 #4e3110,0 0 36px #ffe0909e}
.result h2{font-size:clamp(23px,3vw,31px)}
.result>strong{font-size:34px}
.result .close-result{position:absolute;right:10px;top:9px;width:30px;height:30px;padding:0;background:#674a2b;color:#fff3d6;font-size:23px;line-height:1}
.result .share-result{margin-top:17px}
.incident-result{margin:14px 0 10px;padding:13px 16px;border:1px solid #c5a169;border-radius:11px;background:#ffe3a884;text-align:left}
.incident-result span{display:block;color:#875521;font:700 10px/1.4 "IBM Plex Mono",monospace;letter-spacing:.1em}
.incident-result b{display:block;margin:3px 0;font-family:Fraunces,Georgia,serif;font-size:20px}
.incident-result p{font-size:14px}
.incident-result.jackpot{background:#efca72;border-color:#af6f24}
.encounter-banner{position:absolute;z-index:7;top:clamp(168px,22vh,258px);right:max(28px,calc((100vw - 1390px)/2));width:clamp(250px,22.5vw,320px);padding:19px 20px 18px;border:1px solid #f3edcb7d;border-radius:15px;color:#f5efdb;background:linear-gradient(154deg,#173b31e8,#122f27df);box-shadow:0 14px 40px #091f166e,inset 0 1px 0 #fff2;backdrop-filter:blur(15px)}
.encounter-banner:before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:linear-gradient(transparent,#d5e89c,transparent)}
.encounter-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font:700 10px/1.2 "IBM Plex Mono",monospace;letter-spacing:.1em;color:#d9f4ae}
.encounter-top span{display:flex;align-items:center;gap:9px}
.encounter-top small{color:#e8e7d2;font:600 11px/1 "IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.encounter-banner h2{margin:16px 0 8px;font:560 clamp(23px,2.2vw,30px)/1.05 Fraunces,Georgia,serif;letter-spacing:-.025em;color:#fff6dc}
.encounter-banner p{font-size:14px;line-height:1.5;margin:0 0 15px;color:#d8e9d4}
.encounter-effect{padding-top:12px;border-top:1px solid #e6efb742;color:#f4d590;font:700 12px/1.45 "IBM Plex Mono",monospace}
.world-toast{position:fixed;bottom:22px;left:50%;z-index:99;width:min(395px,calc(100vw - 30px));display:flex;flex-direction:column;gap:4px;padding:14px 20px;border:1px solid #dce8b2;border-radius:12px;color:#fff7dd;background:#1b3f30f2;box-shadow:0 12px 36px #0c2019a6;pointer-events:none;opacity:0;transform:translate(-50%,20px);transition:opacity .3s,transform .3s}
.world-toast.visible{opacity:1;transform:translate(-50%,0)}
.world-toast span{color:#c8e6a0;font:700 10px/1.3 "IBM Plex Mono",monospace;letter-spacing:.12em}
.world-toast strong{font-family:Fraunces,Georgia,serif;font-size:21px}
.world-toast small{font-size:13px;color:#ecd497}
.camp{z-index:0;padding:48px 0 25px;background:#102d20}
.camp:before{position:absolute;inset:0;background:linear-gradient(180deg,#0e302576,transparent 24%,#17371d6c 100%),url('/art/ledger.jpg') center top / 1100px auto repeat;}
.camp:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#0d2e20 0%,transparent 140px,transparent calc(100% - 100px),#0e2a1e 100%)}
.camp-inner{max-width:1150px;padding-inline:clamp(18px,3vw,38px)}
.camp-lead{margin-bottom:24px}
.camp-lead p{max-width:780px;padding:18px 30px;border:1px solid #e2cb9b;border-radius:12px;background:#f2e5c8 url('/art/parchment.jpg') center/cover;color:#335335;box-shadow:0 5px 0 #4b341c,0 18px 30px #1425193d;font:560 clamp(16px,1.8vw,19px)/1.5 Fraunces,Georgia,serif}
.board,.stats>div,.swing-counts div{border:2px solid #72502c;border-radius:15px;background:#f4e6c4 url('/art/parchment.jpg') center/cover;box-shadow:0 6px 0 #302516,0 13px 20px #0a1e1157}
.board{margin-bottom:21px}
.vined{position:relative;overflow:visible;isolation:isolate}
.vined:before,.vined:after{content:"";position:absolute;top:-22px;bottom:-25px;left:-44px;right:auto;width:91px;height:auto;z-index:3;pointer-events:none;background-image:url('/art/vine.webp'),url('/art/vine-d.webp'),url('/art/vine-rail.svg');background-size:123px auto,118px auto,82px auto;background-position:left top,left bottom,left 10px top;background-repeat:no-repeat,no-repeat,repeat-y;filter:drop-shadow(2px 5px 4px #1a251930)}
.vined:after{left:auto;right:-44px;transform:scaleX(-1);background-image:url('/art/vine-c.webp'),url('/art/vine-b.webp'),url('/art/vine-rail.svg')}
.vine-canopy,.vine-root{position:absolute;display:block;left:4%;right:4%;top:-29px;height:57px;z-index:3;pointer-events:none;background:url('/art/vine-cap.webp') center top / 100% auto no-repeat;opacity:.98;filter:drop-shadow(0 3px 3px #20391b34)}
.vine-root{top:auto;bottom:-28px;transform:scaleY(-1);opacity:.8}
.vined.vitals,.vined>.panel-top,.vined>summary.panel-top,.vined .event,.vined .ach-grid,.vined .briefing{padding-left:49px;padding-right:49px}
.vined .event{padding-top:13px;padding-bottom:13px}
.vined>.panel-top,.vined>summary.panel-top{padding-block:22px 15px}
.vitals{padding-top:28px!important;padding-bottom:25px!important}
.field-report{padding:30px 49px 21px}
.field-report-inner{display:flex;align-items:center;justify-content:space-between;gap:26px}
.field-report h2{margin:7px 0 5px;font:560 clamp(23px,2.8vw,31px)/1.1 Fraunces,Georgia,serif;color:#29442c}
.field-report p{margin:0;max-width:590px;font-size:14px;color:#4c6642}
.field-bonus{display:flex;flex-direction:column;gap:7px;min-width:240px;max-width:300px;border-left:1px solid #b5a67b;padding-left:19px}
.field-bonus span{color:#7f572c;font:700 10px/1.3 "IBM Plex Mono",monospace;letter-spacing:.1em}
.field-bonus strong{font:750 14px/1.35 Outfit,sans-serif;color:#284e32}
.field-bonus small{font:600 11px/1.4 "IBM Plex Mono",monospace;color:#88704a}
.stats{gap:17px;margin:19px 0}
.stats>div{padding:20px 17px 17px}
.swing-counts{gap:17px;margin:17px 0 26px}
.swing-counts div{border-width:2px}
.achievements,.trophy{margin-bottom:24px}
.ach-grid{gap:13px;padding-top:22px!important;padding-bottom:26px!important}
.ach{border:1px solid #c7a773;background:#fff8e8a8;box-shadow:inset 0 1px 0 #fff7}
.below{gap:20px;margin-bottom:25px}
.panel-top{position:relative;z-index:1;background:linear-gradient(180deg,#f4e9d680,transparent)}
.events{min-height:210px;scrollbar-color:#a78955 transparent}
.log-filters{display:flex;align-items:center;gap:6px;padding:5px 49px 11px;border-bottom:1px solid #dcc7a1}
.log-filters button{border:1px solid transparent;border-radius:99px;background:transparent;color:#58704b;padding:6px 11px;font:700 12px Outfit,sans-serif}
.log-filters button:hover{background:#e9dfc9}
.log-filters button[aria-pressed="true"]{background:#2c6040;color:#fff4d6}
.incident-note{display:block;margin-top:4px;color:#9c621c;font:700 11px/1.4 "IBM Plex Mono",monospace;letter-spacing:.025em}
.briefing{padding-block:21px!important}
.sitefoot{margin-top:29px;background:#f5e9d5ec}
.sitefoot-inner{padding:22px 32px;padding-bottom:max(22px,calc(var(--camp-art-height) * .6))}
.log-board{padding-top:8px;padding-bottom:18px}
.log-board .events{max-height:none}
.log-board .event{padding:14px 50px}
.hit-card{position:relative;padding:36px 43px}
.hit-page .hit-card{background:#f3e7cc url('/art/parchment.jpg') center/cover}
body.hit-page .vined{isolation:isolate;overflow:visible}
body.hit-page .vined:before,body.hit-page .vined:after{width:40px;left:-18px;right:auto;top:7px;bottom:7px;background:url('/art/vine-rail.svg') center top/37px 120px repeat-y;filter:drop-shadow(0 2px 1px #213a1f55);opacity:.82}
body.hit-page .vined:after{left:auto;right:-18px;transform:scaleX(-1)}
body.hit-page .vine-canopy,body.hit-page .vine-root{display:none}
.machine-button{padding:11px 17px;margin:12px auto 0;border:0;border-radius:9px;background:#295d38;color:#fff7e5;font-weight:750}
@keyframes ward{50%{transform:scale(1.035);opacity:.65}}
@keyframes unravel{0%,100%,8%,13%,47%,53%,85%,91%{transform:translateY(0)}10%,50%{transform:translate(-6px,-5px) skewX(3deg)}12%,52%,89%{transform:translate(7px,3px) skewX(-4deg)}}
@media(max-width:1340px){.encounter-banner{position:relative;top:auto;right:auto;width:min(520px,100%);margin:27px auto 0}.world{padding-bottom:58px}.encounter-banner h2{font-size:25px}.encounter-banner p{margin-bottom:9px}}
@media(max-width:850px){.field-report-inner{flex-direction:column;align-items:stretch;gap:16px}.field-bonus{border-left:0;border-top:1px solid #b5a67b;padding:13px 0 0;max-width:none}.below{grid-template-columns:1fr}.vined .ach-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:740px){
 .world{min-height:100svh;padding:84px 13px 43px}
 .nav{padding:14px 14px}.brand{font-size:19px}.nav-right{gap:9px}.live-state{padding:5px 7px;font-size:9px}.daymark em{font-size:9px}.daymark b{font-size:14px}
 .creature-slot{width:100%}.phase-ribbon{margin-bottom:12px;gap:7px;padding:7px 10px;font-size:9px}.phase-sub{display:none}
 .world-name em{font-size:clamp(67px,15vw,89px)}.versus{font-size:10px}.plate-meta{margin-top:12px}
 .bark{padding:4px 13px;font-size:17px}.weather{font-size:11px}.sprite{height:clamp(230px,32vh,295px);width:min(390px,90vw)}
 .hud{margin-top:7px}.attack{min-height:78px;gap:9px;padding:8px 12px 8px 8px}.attack-icon{width:57px;height:57px}.attack-copy b{font-size:21px}.attack-copy small{font-size:12px}.attack-arrow{width:19px;height:19px}
 .encounter-banner{margin-top:23px;padding:16px}.style-row{gap:11px}.style-row span{font-size:11px}
 .camp{padding-top:36px}.camp-inner{padding:8px 16px 20px}.camp-lead{margin-bottom:24px}.camp-lead p{font-size:16px;padding:14px 21px}
 .vined:before,.vined:after{width:65px;left:-29px;top:-16px;bottom:-16px;background-size:90px auto,90px auto,63px auto}
 .vined:after{left:auto;right:-29px}.vine-canopy,.vine-root{height:41px;top:-20px}.vine-root{top:auto;bottom:-20px}
 .vined.vitals,.vined>.panel-top,.vined>summary.panel-top,.vined .event,.vined .ach-grid,.vined .briefing{padding-left:36px;padding-right:36px}
 .field-report{padding:28px 36px 19px}.hp-number strong{font-size:clamp(26px,7vw,37px)}.hp-number span{font-size:11px}
 .stats{grid-template-columns:1fr 1fr;gap:10px}.stats>div{padding:14px}.stats strong{font-size:30px}.stats small{font-size:12px}
 .swing-counts{gap:9px}.swing-counts div{flex-wrap:wrap;gap:5px;padding:8px}.swing-counts img{width:34px;height:34px}.swing-counts span{font-size:11px}.swing-counts b{font-size:19px}
 .vined .ach-grid{grid-template-columns:1fr;gap:10px}.panel-top h2{font-size:20px}.log-filters{padding-left:35px;padding-right:35px}.log-board .event{padding:12px 34px}
 .below{gap:20px}.result{padding:19px 14px}.result>strong{font-size:28px}.result h2{font-size:24px}.hit-card{padding:35px}
}
@media(max-width:390px){.brand-mark{width:17px}.brand{gap:4px;font-size:17px}.phase-ribbon b{font-size:8px}.swing-counts img{display:none}.hp-unit{font-size:12px}}
@media(prefers-reduced-motion:reduce){.event.arrived{animation:none}.world-toast{transition:none}.world.mode-guarded .sprite:before{animation:none}}

.log-error{margin:12px 46px;color:#a04f28;font-weight:700}.log-error[hidden]{display:none}
@media(min-width:741px) and (max-width:1340px){.camp-inner{padding-inline:52px}}
@media(max-width:740px){.camp-inner{padding:8px 24px 20px}.vined:before{left:-19px;width:55px}.vined:after{right:-19px;width:55px}}
@media(max-width:740px){
 .log-wrap{padding:26px 32px 54px}
 .log-top{gap:8px}.log-top a{font-size:18px}.log-count{font-size:10px}
 .event,.log-board .event{grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"time pill amount style" "copy copy copy style";gap:6px 10px;padding-top:13px;padding-bottom:15px}
 .event time,.log-board .event time{grid-area:time}
 .event .pill,.log-board .event .pill{grid-area:pill;justify-self:start;min-width:58px;height:22px;padding:0 7px;font-size:11px}
 .event .event-copy,.log-board .event .event-copy{grid-area:copy}
 .event>strong,.log-board .event>strong{grid-area:amount;justify-self:end;font-size:15px}
 .who{font-size:12px;padding:1px 6px 2px}
 .style-icon{width:40px;height:40px}
 .style-name{font-size:10px}
}

/* The entity is drawn in pieces so it can idle, blink and flinch. */
.thorn{transform-box:view-box;transform-origin:220px 198px;animation:thorn-a 3.8s ease-in-out infinite;animation-delay:calc(var(--n) * -.22s)}
.thorn:nth-child(even){animation-name:thorn-b}
.hide{transform-box:view-box;transform-origin:220px 198px;animation:hide-breathe 3.8s ease-in-out infinite}
.gaze{transform-box:view-box;animation:gaze 9s ease-in-out infinite}
.lid{fill:#140c1e;transform-box:fill-box;transform-origin:center top;animation:lid 5.8s ease-in-out infinite}
.pupil{fill:#3a1868}
.catch{fill:#fffaf6}
.ground-shadow{transform-box:fill-box;transform-origin:center;animation:shadow-breathe 4.6s ease-in-out infinite}
.cling{transform-box:view-box;transform-origin:220px 300px;animation:cling 5.6s ease-in-out infinite}
.star{fill:#f4eeff;animation:gleam 3.1s ease-in-out infinite}
.star:nth-child(2n){animation-duration:4.4s;animation-delay:-1.1s}
.star:nth-child(3n){animation-duration:2.3s;animation-delay:-.5s}
.mote{fill:#f6edff;animation:mote 7.2s ease-in infinite}
.mote:nth-child(2){animation-delay:-1.6s}
.mote:nth-child(3){animation-delay:-3.1s}
.mote:nth-child(4){animation-delay:-4.8s}
.mote:nth-child(5){animation-delay:-2.4s}
.entity.angry .thorn{animation-duration:1.1s}
.entity.angry .hide{animation-duration:1s}
.entity.angry .gaze{animation-duration:3.4s}
.entity.angry .pupil{fill:#4a0810}
.world.mode-frenzied .thorn{animation-duration:1.2s}
.world.mode-frenzied .hide{animation-duration:1.1s}
.world.mode-panic .thorn,.world.mode-panic .hide{animation-duration:.8s}
.world.mode-sleepy .thorn,.world.mode-sleepy .hide,.world.mode-sleepy .gaze,.world.mode-sleepy .mote{animation-duration:12s}
.world.mode-sleepy .lid{opacity:0;animation:none}
.entity.dead .thorn,.entity.dead .hide,.entity.dead .gaze,.entity.dead .lid,.entity.dead .mote,.entity.dead .cling,.entity.dead .ground-shadow,.entity.dead .star{animation:none}
.entity.dead .lid{transform:scaleY(.55);opacity:1}
@keyframes thorn-a{0%,100%{transform:rotate(-2.2deg) scale(1)}50%{transform:rotate(2.5deg) scale(1.07)}}
@keyframes thorn-b{0%,100%{transform:rotate(2deg) scale(1.04)}50%{transform:rotate(-2.1deg) scale(.96)}}
@keyframes hide-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035,.972)}}
@keyframes gaze{0%,100%{transform:translate(0,0)}22%{transform:translate(9px,3px)}48%{transform:translate(-8px,2px)}74%{transform:translate(3px,-5px)}}
@keyframes lid{0%,91%,100%{transform:scaleY(.04)}93.2%,94.6%{transform:scaleY(1)}}
@keyframes shadow-breathe{0%,100%{transform:scaleX(1);opacity:.34}50%{transform:scaleX(.8);opacity:.16}}
@keyframes cling{0%,100%{transform:translate(0,2px) scaleX(1)}50%{transform:translate(5px,-5px) scaleX(1.08)}}
@keyframes mote{0%{transform:translateY(10px);opacity:0}16%{opacity:.9}100%{transform:translateY(-72px);opacity:0}}
