@import"https://fonts.googleapis.com/css2?family=MedievalSharp&display=swap";@import"https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap";:root{--hero-gold: #f3c64e;--hero-gold-light: #f0e2c3;--hero-blue: #447df7;--hero-blue-glow: rgba(68, 125, 247, .6);--hero-navy-dark: #0b0246;--hero-navy: #202020;--hero-bg-dark: #0b0d12;--hero-text-light: #f0e2c3;--hero-text-dim: #a89878;--hero-text-accent: #dbe1ff;--hero-enemy: #ff0000;--hero-ally: #0000ff;--hero-wall: #888888;--hero-danger: #ff6666;--hero-success: #66cc66;--hero-grid-color: var(--hero-blue);--hero-grid-opacity: .15;--hero-grid-glow: rgba(68, 125, 247, .3);--hero-border-width: 4px;--hero-border-color: var(--hero-gold-light);--hero-border-shadow: 0 4px 0 var(--hero-navy-dark), 4px 4px 0 var(--hero-navy);--hero-border-inset: inset 0 -2px 0 rgba(0, 0, 0, .5), inset 0 2px 0 rgba(255, 255, 255, .2);--font-pixel: "Press Start 2P", monospace;--font-enchanted: "MedievalSharp", serif;--anim-fast: .15s;--anim-normal: .25s;--anim-slow: .4s;--btn-shadow-active: 0 2px 0 var(--hero-navy-dark);--btn-translate-active: translateY(2px)}html,body,#root{height:100%;margin:0;padding:0;overflow:hidden}body{background:repeating-conic-gradient(#0b0a24,#0b0a24 25%,#0d0c28 0%,#0d0c28 50%) 50% / 2px 2px,repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(68,125,247,.03) 4px,rgba(68,125,247,.03) 8px),radial-gradient(ellipse at center,#0f0e2a,#0b0a24);color:var(--hero-text-light);font-family:var(--font-pixel);font-size:12px;line-height:1.5;image-rendering:pixelated;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale}.panel{background:repeating-conic-gradient(rgba(255,255,255,.02) 0% 25%,transparent 0% 50%) 50% / 2px 2px,linear-gradient(180deg,#2a2845,#1a1835,#0f0e2a);border:6px solid;border-image-source:linear-gradient(135deg,var(--hero-gold-light) 0%,var(--hero-gold) 50%,var(--hero-gold-light) 100%);border-image-slice:2;box-shadow:0 0 12px #f0e2c34d,0 6px 0 var(--hero-navy-dark),6px 6px #0b0246cc,inset 0 2px #ffffff26,inset 0 -2px #0009;padding:16px 20px;margin:8px;position:relative}.panel:before,.panel:after{content:"◆";position:absolute;width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--hero-gold);text-shadow:0 0 8px var(--hero-gold),0 0 4px var(--hero-gold-light),2px 2px 2px rgba(0,0,0,.8);animation:sparkle 3s ease-in-out infinite;z-index:10}.panel:before{top:-8px;left:-8px}.panel:after{top:-8px;right:-8px;animation-delay:1.5s}.panel-decorated:before,.panel-decorated:after{content:"◆";position:absolute;color:var(--hero-gold);font-size:8px;text-shadow:0 0 4px var(--hero-gold);animation:sparkle 2s ease-in-out infinite}button,.btn{background:linear-gradient(180deg,var(--hero-gold) 0%,var(--hero-gold-light) 100%);border:3px solid;border-color:var(--hero-gold-light) var(--hero-navy-dark) var(--hero-navy-dark) var(--hero-gold-light);color:var(--hero-navy-dark);padding:8px 16px;font-family:var(--font-pixel);font-size:10px;font-weight:700;text-transform:uppercase;cursor:pointer;position:relative;box-shadow:0 4px 0 var(--hero-navy-dark);transition:all var(--anim-fast) ease;image-rendering:pixelated;-webkit-user-select:none;user-select:none}button:hover,.btn:hover{background:linear-gradient(180deg,#ffd700 0%,var(--hero-gold) 100%);box-shadow:0 4px 0 var(--hero-navy-dark),0 0 12px var(--hero-gold)}button:active,.btn:active{box-shadow:var(--btn-shadow-active)}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed;animation:none}.btn-primary{background:linear-gradient(180deg,var(--hero-blue) 0%,#3366cc 100%);border-color:#6699ff var(--hero-navy-dark) var(--hero-navy-dark) #6699ff;color:#fff}.btn-danger{background:linear-gradient(180deg,#f66,#c00);border-color:#ff9999 var(--hero-navy-dark) var(--hero-navy-dark) #ff9999;color:#fff}.btn-secondary{background:linear-gradient(180deg,#2f2f73,#1c1d4d);border-color:#676fcb var(--hero-navy-dark) var(--hero-navy-dark) #676fcb;color:var(--hero-text-light)}.btn-success{background:linear-gradient(180deg,var(--hero-gold) 0%,var(--hero-gold-light) 100%);border-color:var(--hero-gold-light) var(--hero-navy-dark) var(--hero-navy-dark) var(--hero-gold-light);color:var(--hero-navy-dark);font-weight:700}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;background:var(--hero-navy-dark);border:2px solid var(--hero-gold-light);cursor:pointer;position:relative;image-rendering:pixelated;transition:all var(--anim-fast) ease}input[type=checkbox]:hover{border-color:var(--hero-gold);box-shadow:0 0 8px var(--hero-blue-glow)}input[type=checkbox]:checked{background:var(--hero-gold);border-color:var(--hero-gold-light)}input[type=checkbox]:checked:after{content:"⚔";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--hero-navy-dark);font-size:14px;line-height:1}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:8px;background:linear-gradient(180deg,var(--hero-navy-dark) 0%,var(--hero-navy) 100%);border:2px solid var(--hero-gold-light);outline:none;cursor:pointer;position:relative}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;background:radial-gradient(circle,var(--hero-gold) 0%,var(--hero-gold-light) 50%,var(--hero-gold) 100%);border:2px solid var(--hero-gold-light);cursor:pointer;box-shadow:0 0 8px var(--hero-gold),0 2px 4px #00000080;transition:all var(--anim-fast) ease}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 0 12px var(--hero-gold),0 2px 6px #000000b3}input[type=range]::-moz-range-thumb{width:20px;height:20px;background:radial-gradient(circle,var(--hero-gold) 0%,var(--hero-gold-light) 50%,var(--hero-gold) 100%);border:2px solid var(--hero-gold-light);cursor:pointer;box-shadow:0 0 8px var(--hero-gold),0 2px 4px #00000080;transition:all var(--anim-fast) ease}input[type=range]::-moz-range-thumb:hover{transform:scale(1.2);box-shadow:0 0 12px var(--hero-gold),0 2px 6px #000000b3}input[type=range]:disabled{opacity:.4;cursor:not-allowed}input[type=text],input[type=color],textarea,select{background:var(--hero-navy-dark);border:2px solid var(--hero-gold-light);color:var(--hero-text-light);padding:6px 8px;font-family:var(--font-pixel);font-size:10px;outline:none;transition:all var(--anim-fast) ease}input[type=text]:focus,textarea:focus,select:focus{border-color:var(--hero-blue);box-shadow:0 0 8px var(--hero-blue-glow)}input[type=color]{padding:2px;cursor:pointer;height:32px}h1,h2,h3,h4,h5,h6{font-family:var(--font-enchanted);color:var(--hero-gold);text-shadow:2px 2px 0 var(--hero-navy-dark),0 0 8px var(--hero-gold);margin:0;line-height:1.2}h1{font-size:32px}h2{font-size:24px}h3{font-size:18px}h4{font-size:16px}.title-pixel{font-family:var(--font-pixel);text-transform:uppercase}.player-card{--player-card-width: clamp(132px, 14vw, 160px);--player-card-padding: clamp(6px, .8vw, 10px);--player-card-gap: clamp(4px, .6vw, 6px);--player-card-control-font-size: clamp(.62rem, .65vw, .7rem);--player-card-control-padding: 4px clamp(6px, .8vw, 8px);width:var(--player-card-width);max-width:100%;box-sizing:border-box;background:repeating-conic-gradient(rgba(255,255,255,.015) 0% 25%,transparent 0% 50%) 50% / 2px 2px,linear-gradient(180deg,#3a3860,#2a2845 30%,#1a1835 70%,#0f0e2a);border:4px solid;border-image-source:linear-gradient(180deg,var(--hero-gold-light) 0%,var(--hero-gold) 100%);border-image-slice:2;padding:var(--player-card-padding);position:relative;box-shadow:0 0 8px #f0e2c333,0 4px 0 var(--hero-navy-dark),4px 4px #0b024699,inset 0 2px #ffffff1a,inset 0 -2px #00000080}.player-card-shell{width:var(--player-card-width, clamp(132px, 14vw, 160px));max-width:100%;min-width:0;box-sizing:border-box;position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--player-card-gap, 6px)}.player-card-shell>.player-card{width:100%}.player-card-shell--current-turn{border:2px solid var(--jrpg-gold);box-shadow:0 0 20px #ffd70099;border-radius:8px;padding:8px;transition:all .3s ease}.entities-panel-main-row{display:flex;gap:clamp(8px,1.2vw,12px);align-items:flex-start;min-width:0}.entities-panel-dm-group{display:flex;gap:clamp(8px,1.2vw,12px);flex-shrink:0}.entities-panel-dm-gap{width:var(--player-card-width, clamp(132px, 14vw, 160px));flex-shrink:0}.entities-panel-card-grid{display:flex;flex-wrap:wrap;gap:clamp(8px,1.2vw,12px);justify-content:center;align-items:flex-start;flex:1;min-width:0}.player-card-topbar{width:100%;min-width:0;text-align:center;border-bottom:1px solid rgba(255,255,255,.18);margin-bottom:4px;font-size:clamp(.62rem,.65vw,.7rem);display:flex;flex-direction:column;gap:4px}.player-card-title{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-card-role{align-self:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-card-portrait-wrap{width:min(110px,100%)}.player-card-controls{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}.player-card:before{content:"";position:absolute;top:-4px;left:-4px;right:-4px;bottom:-4px;border:1px solid rgba(68,125,247,.4);pointer-events:none;box-shadow:inset 0 0 12px #447df71a}@media (max-width: 900px){.player-card,.player-card-shell,.entities-panel-dm-gap{--player-card-width: clamp(118px, 22vw, 150px)}.player-card{--player-card-padding: 6px}.entities-panel-main-row{gap:8px;overflow-x:auto;padding-bottom:4px}}@media (max-width: 560px){.player-card,.player-card-shell,.entities-panel-dm-gap{--player-card-width: clamp(112px, 42vw, 142px)}.player-card-topbar{font-size:.62rem}}.player-portrait{width:96px;height:96px;background:repeating-linear-gradient(45deg,rgba(240,226,195,.02) 0px,transparent 2px,transparent 4px,rgba(240,226,195,.02) 6px),repeating-conic-gradient(#0d0c28,#0d0c28 25%,#0b0a24 0%,#0b0a24 50%) 50% / 8px 8px;border:4px solid;border-image-source:linear-gradient(135deg,var(--hero-gold-light) 0%,var(--hero-gold) 50%,var(--hero-gold-light) 100%);border-image-slice:1;image-rendering:pixelated;position:relative;overflow:hidden;transition:transform var(--anim-fast) ease;box-shadow:inset 3px 3px 5px #000000b3,inset -2px -2px 4px #ffffff14,0 0 12px #ffc34d80,0 0 4px #f0e2c3b3}.player-portrait:empty:after{content:"👤";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:48px;opacity:.15;filter:grayscale(1);z-index:1}.player-portrait:not(:empty):before{content:"";position:absolute;top:0;left:-100%;width:200%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(240,226,195,.15) 50%,transparent 100%);animation:shimmer 4s ease-in-out infinite;pointer-events:none;z-index:2}@keyframes shimmer{0%{left:-100%}to{left:100%}}.player-portrait:hover{animation:portrait-shimmer 1s ease-in-out}.player-portrait img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.stat-bar{width:100%;height:18px;background:linear-gradient(180deg,rgba(0,0,0,.8) 0%,transparent 40%,transparent 60%,rgba(255,255,255,.15) 100%),#0b0a24;border:3px solid;border-image-source:linear-gradient(90deg,var(--hero-gold-light) 0%,var(--hero-gold) 50%,var(--hero-gold-light) 100%);border-image-slice:1;position:relative;overflow:hidden;margin:6px 0;box-shadow:inset 3px 3px 6px #000000e6,inset -2px -2px 3px #ffffff14,0 0 6px #f0e2c333}.stat-bar-fill{height:100%;background:linear-gradient(90deg,#c00,#d22,#e44,#f66,#f88,#faa);transition:width var(--anim-normal) ease;position:relative;box-shadow:inset 0 2px #fff6,inset 0 -1px #0006}.stat-bar-fill:after{content:"";position:absolute;top:0;left:0;right:0;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.4) 0%,transparent 100%);pointer-events:none}.stat-bar.mp .stat-bar-fill{background:linear-gradient(90deg,#04c,#26d,#48e,#6af,#8cf,#adf)}.stat-label{font-size:8px;color:var(--hero-text-dim);text-transform:uppercase}.crt-bezel{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10000;box-shadow:inset 0 0 0 3px #1a1410cc,inset 0 0 0 6px #2d252099,inset 0 0 8px #0006}.crt-filter{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;background:repeating-linear-gradient(180deg,rgba(0,0,0,.6) 0px,rgba(0,0,0,.6) 2px,transparent 2px,transparent 4px);animation:scanline 8s linear infinite;filter:brightness(1.15) contrast(1.1)}.crt-filter:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(ellipse at center,transparent 60%,rgba(255,0,0,.03) 80%,rgba(0,255,255,.03) 100%);mix-blend-mode:screen}.crt-filter:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(ellipse at center,rgba(68,125,247,.25) 0%,rgba(68,125,247,.15) 40%,transparent 70%);mix-blend-mode:screen;animation:flicker .15s infinite,phosphor-glow 3s ease-in-out infinite;filter:blur(40px)}.crt-vignette{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;background:radial-gradient(ellipse at center,transparent 40%,rgba(0,0,0,.15) 70%,rgba(0,0,0,.4) 90%,rgba(0,0,0,.6) 100%)}@keyframes flicker{0%{opacity:.97}50%{opacity:1}to{opacity:.97}}.pixel-sparkle{position:absolute;width:4px;height:4px;background:var(--hero-gold);box-shadow:0 0 8px var(--hero-gold);animation:sparkle-float 3s ease-in-out infinite;opacity:0}.pixel-sparkle:nth-child(1){top:10%;left:15%;animation-delay:0s}.pixel-sparkle:nth-child(2){top:30%;left:75%;animation-delay:.5s}.pixel-sparkle:nth-child(3){top:60%;left:25%;animation-delay:1s}.pixel-sparkle:nth-child(4){top:80%;left:85%;animation-delay:1.5s}.pixel-sparkle:nth-child(5){top:20%;left:50%;animation-delay:2s}@keyframes button-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes sparkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}@keyframes sparkle-float{0%{opacity:0;transform:translateY(0) scale(1)}50%{opacity:1;transform:translateY(-20px) scale(1.5)}to{opacity:0;transform:translateY(-40px) scale(.5)}}@keyframes portrait-shimmer{0%,to{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.05);filter:brightness(1.2)}}@keyframes scanline{0%{transform:translateY(0)}to{transform:translateY(4px)}}@keyframes glow-pulse{0%,to{box-shadow:0 0 8px var(--hero-blue-glow)}50%{box-shadow:0 0 16px var(--hero-blue)}}@keyframes phosphor-glow{0%,to{opacity:.97;filter:brightness(1)}50%{opacity:1;filter:brightness(1.02)}}.map-canvas-wrapper{background:repeating-conic-gradient(#0b0a24,#0b0a24 25%,#0d0c28 0%,#0d0c28 50%) 50% / 2px 2px,repeating-linear-gradient(0deg,transparent 0px,transparent 49px,rgba(68,125,247,.04) 49px,rgba(68,125,247,.04) 50px),repeating-linear-gradient(90deg,transparent 0px,transparent 49px,rgba(68,125,247,.04) 49px,rgba(68,125,247,.04) 50px),radial-gradient(ellipse at center,#0f0e2a,#0b0a24);position:relative}.drawing-toolbar{background:linear-gradient(180deg,rgba(255,255,255,.05) 0%,transparent 100%),var(--hero-bg-dark);border:3px solid;border-image:linear-gradient(135deg,var(--hero-blue) 0%,var(--hero-gold) 100%) 1;box-shadow:0 4px 12px #000000b3,inset 0 2px 4px #ffffff1a;padding:12px;border-radius:0}.tool-button{background:var(--hero-navy);border:2px solid var(--hero-gold-light);color:var(--hero-text-light);padding:8px;font-size:10px;transition:all var(--anim-fast) ease}.tool-button.active{background:var(--hero-blue);border-color:var(--hero-gold);color:#fff;box-shadow:0 0 12px var(--hero-blue-glow)}.tool-button:hover{border-color:var(--hero-gold);transform:scale(1.05)}.text-glow{text-shadow:0 0 8px currentColor}.border-glow{animation:glow-pulse 2s ease-in-out infinite}.pixelated{image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges}.loading-spinner{width:32px;height:32px;border:4px solid var(--hero-navy);border-top:4px solid var(--hero-gold);border-radius:0;animation:spin 1s linear infinite;image-rendering:pixelated}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}@keyframes pointer-pulse-fade{0%{opacity:0;transform:scale(.8)}15%{opacity:1;transform:scale(1.2)}30%{transform:scale(1)}66%{opacity:1}to{opacity:0;transform:scale(.9)}}.pointer-indicator{animation:pointer-pulse-fade 3s ease-out forwards}.mobile-layout-root{position:relative;width:100vw;height:100vh;height:100dvh;min-height:100svh;overflow:hidden;background:var(--hero-bg-dark);touch-action:none;--mobile-safe-bottom: max(12px, env(safe-area-inset-bottom));--mobile-safe-left: max(12px, env(safe-area-inset-left));--mobile-safe-right: max(12px, env(safe-area-inset-right));--mobile-safe-top: max(12px, env(safe-area-inset-top));--mobile-dock-height: 68px}.mobile-map-surface{position:absolute;top:0;right:0;bottom:0;left:0}.mobile-combat-strip{position:absolute;top:calc(var(--mobile-safe-top) + 8px);left:50%;z-index:100;width:min(92vw,420px);transform:translate(-50%);pointer-events:auto}.mobile-action-dock{position:absolute;right:var(--mobile-safe-right);bottom:var(--mobile-safe-bottom);left:var(--mobile-safe-left);z-index:1500;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;min-height:var(--mobile-dock-height);padding:8px;border:3px solid var(--hero-gold-light);background:repeating-conic-gradient(rgba(255,255,255,.025) 0% 25%,transparent 0% 50%) 50% / 2px 2px,linear-gradient(180deg,#2a2845f5,#0f0e2afa);box-shadow:0 0 16px #447df73d,0 6px #0b0246d9;pointer-events:auto}.mobile-dock-button,.mobile-tool-sheet__button,.mobile-tool-sheet__close,.mobile-chip{min-height:44px;min-width:44px;padding:6px 8px;border:2px solid var(--hero-gold-light);background:linear-gradient(180deg,#2f2f73,#1c1d4d);color:var(--hero-text-light);font-family:var(--font-pixel);font-size:.7rem;line-height:1.25;text-transform:uppercase;box-shadow:0 3px 0 var(--hero-navy-dark);touch-action:manipulation}.mobile-dock-button{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:3px}.mobile-dock-button__icon{font-size:1rem;line-height:1}.mobile-dock-button--active,.mobile-tool-sheet__button--active,.mobile-chip--active{border-color:var(--hero-blue);background:linear-gradient(180deg,var(--hero-blue) 0%,#234eb2 100%);color:#fff;box-shadow:0 3px 0 var(--hero-navy-dark),0 0 12px var(--hero-blue-glow)}.mobile-tool-sheet,.mobile-selection-sheet,.mobile-drawing-sheet,.mobile-roll-log-panel{position:absolute;right:var(--mobile-safe-right);left:var(--mobile-safe-left);z-index:1600;border:3px solid var(--hero-gold-light);background:repeating-conic-gradient(rgba(255,255,255,.02) 0% 25%,transparent 0% 50%) 50% / 2px 2px,linear-gradient(180deg,#1a1835f7,#0b0a24fa);box-shadow:0 0 16px #f0e2c338,0 6px #0b0246d9;pointer-events:auto}.mobile-tool-sheet{bottom:calc(var(--mobile-safe-bottom) + var(--mobile-dock-height) + 22px);padding:10px}.mobile-tool-sheet__header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;color:var(--hero-gold);font-size:.72rem}.mobile-tool-sheet__close{padding:4px}.mobile-tool-sheet__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.mobile-tool-sheet__button{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:4px}.mobile-selection-sheet{bottom:calc(var(--mobile-safe-bottom) + var(--mobile-dock-height) + 22px);display:flex;align-items:center;gap:7px;overflow-x:auto;padding:8px;color:var(--hero-text-light)}.mobile-selection-sheet strong{flex:0 0 auto;color:var(--hero-gold);font-size:.62rem}.mobile-chip{flex:0 0 auto;min-height:38px;padding-inline:10px}.mobile-drawing-sheet{bottom:calc(var(--mobile-safe-bottom) + var(--mobile-dock-height) + 88px);display:flex;align-items:center;gap:8px;overflow-x:auto;padding:8px}.mobile-drawing-sheet__tools{display:flex;flex:0 0 auto;gap:6px}.mobile-drawing-sheet__control{display:grid;flex:0 0 150px;gap:4px;color:var(--hero-text-light);font-size:.58rem}.mobile-drawing-sheet__color{flex:0 0 48px;width:48px;height:44px}.mobile-roll-log-panel{top:calc(var(--mobile-safe-top) + 12px);left:auto;width:min(92vw,380px);max-height:min(55vh,460px);overflow:auto;padding:6px}@media (max-width: 420px){.mobile-action-dock{gap:4px;padding:6px}.mobile-dock-button,.mobile-tool-sheet__button,.mobile-chip{font-size:.7rem}.mobile-tool-sheet__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}[data-motion=off] .mobile-entities-drawer{transition:none!important}@media (orientation: landscape) and (max-height: 500px){.mobile-action-dock{gap:4px;padding:4px}.mobile-dock-button{min-height:40px;gap:1px}.mobile-tool-sheet,.mobile-selection-sheet,.mobile-drawing-sheet,.mobile-roll-log-panel{max-height:82vh;overflow-y:auto}.mobile-entities-drawer{width:min(360px,72vw)}}.juice-floating-number{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:30;pointer-events:none;font-family:var(--font-pixel, monospace);font-size:20px;font-weight:700;text-shadow:2px 2px 0 #000,0 0 8px currentColor;animation:juice-float-up .65s ease-out forwards}.juice-floating-damage{color:#f55}.juice-floating-heal{color:#7cff6b}@keyframes juice-float-up{0%{opacity:0;transform:translate(-50%) translateY(6px) scale(.6)}20%{opacity:1;transform:translate(-50%) translateY(0) scale(1.15)}to{opacity:0;transform:translate(-50%) translateY(-34px) scale(1)}}.juice-flash-damage{animation:juice-shake .4s ease-in-out}.juice-flash-damage:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:none;border-radius:inherit;background:#ff3c3c52;animation:juice-flash-fade .65s ease-out forwards}.juice-flash-heal:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 24px #7cff6bb3;background:#5aff5a24;animation:juice-flash-fade .65s ease-out forwards}@keyframes juice-flash-fade{0%{opacity:1}to{opacity:0}}@keyframes juice-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.juice-crit{animation:juice-crit-burst .9s ease-out}.juice-fumble{animation:juice-fumble-shudder .6s ease-in-out}@keyframes juice-crit-burst{0%{box-shadow:0 0 20px #f0e2c34d;transform:scale(1)}30%{box-shadow:0 0 60px #ffd700f2,0 0 120px #ffd70080;transform:scale(1.06)}to{box-shadow:0 0 20px #f0e2c34d;transform:scale(1)}}@keyframes juice-fumble-shudder{0%,to{transform:translate(0);box-shadow:0 0 20px #78141466}25%{transform:translate(-6px) rotate(-1deg)}50%{transform:translate(6px) rotate(1deg);box-shadow:0 0 40px #c8282899}75%{transform:translate(-4px)}}.juice-roll-banner{text-align:center;font-family:var(--font-pixel, monospace);font-size:18px;font-weight:700;letter-spacing:2px;margin-bottom:8px}.juice-roll-banner--crit{color:gold;text-shadow:0 0 10px rgba(255,215,0,.9),2px 2px 0 #000;animation:juice-crit-burst .9s ease-out}.juice-roll-banner--fumble{color:#f55;text-shadow:0 0 10px rgba(255,60,60,.8),2px 2px 0 #000}[data-motion=subtle] .juice-floating-number{animation:juice-float-subtle .65s ease-out forwards}@keyframes juice-float-subtle{0%{opacity:0}20%{opacity:1}to{opacity:0}}[data-motion=subtle] .juice-flash-damage,[data-motion=subtle] .juice-crit,[data-motion=subtle] .juice-fumble,[data-motion=subtle] .juice-roll-banner--crit{animation:none!important}[data-motion=off] .juice-floating-number,[data-motion=off] .juice-flash-damage,[data-motion=off] .juice-flash-damage:after,[data-motion=off] .juice-flash-heal:after,[data-motion=off] .juice-crit,[data-motion=off] .juice-fumble,[data-motion=off] .juice-roll-banner--crit{animation:none!important}:root{--jrpg-indigo: #1C1734;--jrpg-navy: #0F0E1E;--jrpg-gold: #E2B75C;--jrpg-cyan: #00E0D1;--jrpg-white: #FFFFFF;--jrpg-dice-red: #E89A9C;--jrpg-dice-green: #A2D7C8;--jrpg-dice-yellow: #F2A65A;--jrpg-dice-cyan: #7DD3C0;--jrpg-dice-blue: #7BA3C7;--jrpg-dice-purple: #B19CD9;--jrpg-hp-full: #A2D7C8;--jrpg-mp-full: #7BA3C7;--jrpg-hp-medium: #F2A65A;--jrpg-hp-low: #E89A9C;--jrpg-border-outer: #0F0E1E;--jrpg-border-gold: #E2B75C;--jrpg-border-inner: #1C1734;--jrpg-border-highlight: #00E0D1;--jrpg-border-shadow: #000000}.jrpg-text{font-family:"Press Start 2P",monospace;text-rendering:optimizeSpeed;image-rendering:pixelated;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale;font-smooth:never}.jrpg-text-command{font-family:"Press Start 2P",monospace;font-size:12px;text-transform:uppercase;color:var(--jrpg-white);text-shadow:1px 1px 0 var(--jrpg-border-inner);letter-spacing:1px}.jrpg-text-highlight{color:var(--jrpg-gold);text-shadow:1px 1px 0 var(--jrpg-border-inner)}.jrpg-text-small{font-size:8px;letter-spacing:.5px}.jrpg-frame{background:var(--jrpg-indigo);border:3px solid var(--jrpg-border-outer);box-shadow:inset 0 0 0 2px var(--jrpg-border-gold),inset 0 0 0 3px var(--jrpg-border-inner),0 4px 0 var(--jrpg-border-shadow);image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;padding:4px}.jrpg-frame-bevel{background:var(--jrpg-indigo);border:3px solid var(--jrpg-border-outer);box-shadow:inset 0 0 0 2px var(--jrpg-border-gold),inset 0 0 0 3px var(--jrpg-border-inner),inset 2px 2px #ffffff26,inset -2px -2px 0 var(--jrpg-border-shadow),0 4px 0 var(--jrpg-border-shadow);padding:4px}.jrpg-frame-simple{background:var(--jrpg-navy);border:2px solid var(--jrpg-border-gold);box-shadow:inset 0 0 0 1px var(--jrpg-border-shadow),0 2px 0 var(--jrpg-border-shadow);padding:4px}.jrpg-panel-dark{background:var(--jrpg-navy);border:1px solid var(--jrpg-border-shadow);padding:4px}.jrpg-button{font-family:"Press Start 2P",monospace;font-size:10px;text-transform:uppercase;color:var(--jrpg-gold);background:var(--jrpg-indigo);border:2px solid var(--jrpg-border-outer);box-shadow:inset 0 0 0 1px var(--jrpg-border-gold),inset 2px 2px #fff3,inset -2px -2px 0 var(--jrpg-border-shadow),0 3px 0 var(--jrpg-border-shadow);padding:6px 12px;cursor:pointer;image-rendering:pixelated;text-shadow:1px 1px 0 var(--jrpg-border-shadow);transition:none;position:relative}.jrpg-button:hover{box-shadow:inset 0 0 0 1px var(--jrpg-border-highlight),inset 2px 2px #00e0d14d,inset -2px -2px 0 var(--jrpg-border-shadow),0 3px 0 var(--jrpg-border-shadow),0 0 8px var(--jrpg-border-highlight);color:var(--jrpg-cyan)}.jrpg-button:active{background:var(--jrpg-gold);color:var(--jrpg-border-shadow);text-shadow:none;box-shadow:inset 0 0 0 1px var(--jrpg-border-shadow),inset 2px 2px #0006,0 1px 0 var(--jrpg-border-shadow)}.jrpg-button-primary{background:var(--jrpg-gold);color:var(--jrpg-border-shadow);font-weight:700;text-shadow:none;box-shadow:inset 0 0 0 1px var(--jrpg-border-outer),inset 2px 2px #ffffff4d,inset -2px -2px #0000004d,0 3px 0 var(--jrpg-border-shadow)}.jrpg-button-primary:hover{box-shadow:inset 0 0 0 1px var(--jrpg-border-highlight),inset 2px 2px #00e0d166,inset -2px -2px #0000004d,0 3px 0 var(--jrpg-border-shadow),0 0 12px var(--jrpg-border-highlight)}.jrpg-button-danger{background:var(--jrpg-hp-low);color:var(--jrpg-white);text-shadow:1px 1px 0 var(--jrpg-border-shadow)}.jrpg-button-success{background:var(--jrpg-hp-full);color:var(--jrpg-white);text-shadow:1px 1px 0 var(--jrpg-border-shadow)}.jrpg-input{width:100%;background:linear-gradient(180deg,#101530f2,#090c1ef2);border:2px solid var(--jrpg-border-gold);border-radius:6px;box-shadow:inset 0 0 0 1px #ffffff14,0 2px #0009;color:var(--jrpg-white);font-family:"Press Start 2P",monospace;font-size:.65rem;letter-spacing:.05em;padding:6px 8px}.jrpg-input::placeholder{color:#ffffff8c;text-transform:none;letter-spacing:0}.jrpg-button-toggle{position:relative;padding-left:24px}.jrpg-button-toggle:before{content:"▶";position:absolute;left:8px;color:var(--jrpg-gold);opacity:0;transition:opacity .1s}.jrpg-button-toggle.active:before{opacity:1}.jrpg-button-toggle.active{background:var(--jrpg-sky);color:var(--jrpg-gold)}.jrpg-hp-bar{width:100%;height:12px;background:var(--jrpg-navy);border:1px solid var(--jrpg-border-outer);position:relative;image-rendering:pixelated;overflow:hidden}.jrpg-hp-bar-fill{height:100%;background:var(--jrpg-hp-full);image-rendering:pixelated;transition:width .2s steps(10),background-color .2s;position:relative}.jrpg-hp-bar-fill:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:repeating-linear-gradient(90deg,transparent,transparent 3px,rgba(0,0,0,.2) 3px,rgba(0,0,0,.2) 4px)}.jrpg-hp-bar-fill[data-hp-percent=high]{background:var(--jrpg-hp-full)}.jrpg-hp-bar-fill[data-hp-percent=medium]{background:var(--jrpg-hp-medium)}.jrpg-hp-bar-fill[data-hp-percent=low]{background:var(--jrpg-hp-low);animation:jrpg-hp-flash .8s infinite}@keyframes jrpg-hp-flash{0%,to{opacity:1}50%{opacity:.6}}.jrpg-hp-text{font-family:"Press Start 2P",monospace;font-size:8px;color:var(--jrpg-ivory);text-shadow:1px 1px 0 var(--jrpg-border-outer);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;pointer-events:none}.jrpg-portrait-frame{background:var(--jrpg-sapphire);border:3px solid var(--jrpg-border-outer);box-shadow:inset 0 0 0 2px var(--jrpg-border-inner),0 4px #0009;padding:4px;position:relative;image-rendering:pixelated}.jrpg-portrait-frame:before{content:"";position:absolute;top:-8px;left:50%;transform:translate(-50%);width:16px;height:8px;background:var(--jrpg-gold);border:2px solid var(--jrpg-border-outer);clip-path:polygon(50% 0%,0% 100%,100% 100%)}.jrpg-portrait-image{image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;border:2px solid var(--jrpg-navy)}.jrpg-menu-list{list-style:none;padding:0;margin:0}.jrpg-menu-item{font-family:"Press Start 2P",monospace;font-size:10px;color:var(--jrpg-ivory);padding:8px 12px 8px 24px;cursor:pointer;position:relative;transition:none}.jrpg-menu-item:before{content:"▶";position:absolute;left:8px;color:var(--jrpg-gold);opacity:0}.jrpg-menu-item:hover{background:#ffffff1a;color:var(--jrpg-gold)}.jrpg-menu-item:hover:before{opacity:1}.jrpg-menu-item.active{background:var(--jrpg-sky);color:var(--jrpg-gold)}.jrpg-menu-item.active:before{opacity:1}.jrpg-icon{width:16px;height:16px;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;display:inline-block;vertical-align:middle}@keyframes jrpg-slide-in{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes jrpg-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.jrpg-anim-slide-in{animation:jrpg-slide-in .2s steps(4)}.jrpg-anim-bounce{animation:jrpg-bounce .4s steps(2) infinite}.jrpg-no-select{user-select:none;-webkit-user-select:none}.jrpg-pixelated{image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges}.jrpg-spacing-sm{padding:4px;gap:4px}.jrpg-spacing-md{padding:8px;gap:8px}.jrpg-spacing-lg{padding:12px;gap:12px}
