:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0f0f12;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}body{place-items:center;min-width:320px;min-height:100vh;margin:0;display:flex;overflow:hidden}#root{width:100%;height:100vh;display:flex}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#1a1a1e}::-webkit-scrollbar-thumb{background:#333;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#444}.app-container{background-color:#0c0c0e;width:100vw;height:100vh;display:flex;position:relative}.map-viewport{box-sizing:border-box;-webkit-user-select:none;user-select:none;background:#0a0a0a;flex:1;justify-content:center;align-items:center;padding:16px;display:flex;position:relative;overflow:hidden}.map-content{aspect-ratio:16/9;width:100%;max-width:calc(177.778vh - 56.8889px);height:auto;max-height:100%;position:relative}.map-image{object-fit:contain;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.grid-overlay{width:100%;height:100%;display:grid;position:absolute;top:0;left:0}.fog-tile{cursor:pointer;z-index:10;background-color:#000000f2;width:100%;height:100%;transition:opacity .3s,background-color .2s}.fog-tile:hover{background-color:#282832cc}.fog-tile.room-highlight{transition:background-color;background-color:#ffffff26!important}.fog-tile.revealed{opacity:0}.fog-tile.edit-mode{cursor:cell;opacity:1;background-color:#ffffff0d;border:1px dotted #fff3}.fog-tile.edit-mode:hover{background-color:#fff3!important}.sidebar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;background:#141419f2;border-left:1px solid #ffffff1a;flex-direction:column;flex-shrink:0;width:clamp(260px,28vw,430px);height:100vh;display:flex;box-shadow:-10px 0 30px #00000080}.sidebar--player{width:clamp(240px,24vw,330px)}.sidebar-header{border-bottom:1px solid #ffffff1a;padding:clamp(14px,1.6vw,24px) clamp(14px,1.6vw,24px) clamp(10px,1.1vw,16px);font-size:clamp(1.1rem,1.4vw,1.5rem);font-weight:700}.character-list{flex-direction:column;flex:1;gap:clamp(8px,1vw,16px);padding:clamp(12px,1.6vw,24px);display:flex;overflow-y:auto}.character-card{align-items:center;margin-bottom:clamp(12px,1.6vw,24px);display:flex}.pc-list{flex-direction:column;flex:1;gap:12px;padding:8px 10px;display:flex;overflow-y:auto}.pc-card{background:#ffffff0d;border:1.5px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:8px 12px;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:flex;overflow:visible}.pc-card--active{background:#28f9e91a;border-color:#28f9e9;transform:translate(3px);box-shadow:0 0 16px #28f9e933}.pc-card__avatar{object-fit:cover;border:2px solid #ffffff59;border-radius:50%;width:66px;height:66px;display:block;box-shadow:0 2px 6px #00000080}.pc-card--active .pc-card__avatar{border-color:#28f9e9}.pc-card__effort{color:#fff;background:#8b7362;border:1.5px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:.6rem;font-weight:700;line-height:1;display:flex;position:absolute;bottom:-3px;right:-5px}.pc-card__name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:700;line-height:1.2;overflow:hidden}.pc-card--active .pc-card__name{color:#28f9e9}.pc-card__room{color:#fff6;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:.6rem;font-weight:400;display:block;overflow:hidden}.pc-card__bar-row{align-items:center;gap:4px;display:flex}.pc-card__track{background:#c8c8c840;border-radius:3px;flex:1;height:5px;overflow:hidden}.pc-card__track .stat-bar-fill{border-radius:3px;height:100%;transition:width .3s}.pc-card__val{color:#ffffffa6;text-align:right;font-variant-numeric:tabular-nums;min-width:18px;font-size:.65rem}.avatar-group{z-index:2;flex-shrink:0;width:clamp(60px,6.5vw,95px);height:clamp(60px,6.5vw,95px);position:relative}.character-avatar{object-fit:cover;border:3px solid #ccc;border-radius:50%;width:100%;height:100%;box-shadow:0 4px 8px #00000080}.effort-badge{z-index:3;background:#8b7362;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:clamp(22px,2.2vw,32px);height:clamp(22px,2.2vw,32px);display:flex;position:absolute;bottom:-4px;right:-6px;box-shadow:0 4px 6px #0006}.effort-badge .stat-input{color:#fff;text-align:center;width:100%;margin:0;padding:0;font-size:.9rem;font-weight:700}.effort-label{display:none}.content-group{flex-direction:column;flex:1;margin-left:clamp(-20px,-2vw,-28px);display:flex;position:relative}.header-text{color:#fff;align-items:baseline;margin-bottom:4px;margin-left:clamp(28px,3.2vw,42px);font-size:clamp(.8rem,1vw,1rem);font-weight:700;display:flex}.header-text .character-room{color:#bbb;margin-left:6px;font-size:clamp(.65rem,.8vw,.75rem);font-weight:500}.dark-stats-box{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#50505066;border-radius:12px;flex-direction:column;gap:clamp(6px,.8vw,10px);padding:clamp(4px,.5vw,6px) clamp(8px,1vw,14px) clamp(4px,.5vw,6px) clamp(30px,3.5vw,50px);display:flex;box-shadow:inset 0 0 10px #0003}.stat-row{flex-direction:column;gap:4px;display:flex}.stat-header{color:#fff;justify-content:space-between;align-items:center;font-size:clamp(.72rem,.85vw,.85rem);font-weight:600;display:flex}.stat-bars-container{flex-direction:column;gap:clamp(6px,.9vw,12px);display:flex}.stat-bar-container{background:#c8c8c8b3;border-radius:4px;height:8px;position:relative;overflow:hidden}.stat-bar-fill{border-radius:6px;height:100%;transition:width .3s}.hp-bar{background:#ff4d4d}.sanity-bar{background:#4d79ff}.invisible-input{color:inherit;font-family:inherit;font-weight:inherit;font-size:inherit;text-align:center;appearance:none;-moz-appearance:textfield;background:0 0;border:none;border-bottom:1px dotted #ffffff4d;outline:none;width:24px;padding:0}.invisible-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.invisible-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invisible-input:focus{background:#ffffff1a;border-bottom:1px solid #fff;border-radius:2px}@keyframes pulse-cyan{0%{box-shadow:0 0 15px #28f9e933}50%{box-shadow:0 0 35px #28f9e973}to{box-shadow:0 0 15px #28f9e933}}.active-card-premium{z-index:10;animation:3s ease-in-out infinite pulse-cyan}@keyframes flash-decrease{0%{background-color:#ff3c3c00}20%{background-color:#ff3c3c8c}60%{background-color:#ff3c3c59}to{background-color:#ff3c3c00}}@keyframes flash-increase{0%{background-color:#3cdc3c00}20%{background-color:#3cdc3c73}60%{background-color:#3cdc3c40}to{background-color:#3cdc3c00}}.stat-row--flash-decrease{border-radius:4px;animation:.6s ease-out forwards flash-decrease}.stat-row--flash-increase{border-radius:4px;animation:.6s ease-out forwards flash-increase}@keyframes effort-glow{0%{transform:scale(1);box-shadow:0 4px 6px #0006}30%{transform:scale(1.25);box-shadow:0 0 18px #ffc850cc}70%{transform:scale(1.1);box-shadow:0 0 12px #ffc85080}to{transform:scale(1);box-shadow:0 4px 6px #0006}}.effort-badge--glow{animation:.7s cubic-bezier(.34,1.56,.64,1) forwards effort-glow}@keyframes token-ring-pulse{0%{box-shadow:0 0 0 3px #fff176e6,0 0 14px 5px #fff17673}55%{box-shadow:0 0 0 7px #fff17633,0 0 22px 9px #fff17626}to{box-shadow:0 0 0 3px #fff176e6,0 0 14px 5px #fff17673}}.token-hover-ring{animation:1s ease-in-out infinite token-ring-pulse}.sidebar-tabs{border-bottom:1px solid #ffffff1a;flex-shrink:0;display:flex}.tab-btn{color:#ffffff73;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex-direction:column;flex:1;align-items:center;gap:3px;padding:10px 4px 8px;font-family:inherit;font-size:clamp(.6rem,.75vw,.72rem);transition:color .2s,background .2s;display:flex}.tab-btn:hover{color:#ffffffbf;background:#ffffff0a}.tab-btn--active{color:#fff;border-bottom:2px solid #28f9e9}.tab-content{flex-direction:column;flex:1;padding:clamp(12px,1.4vw,20px);display:flex;overflow-y:auto}.icon-btn{color:#ffffff8c;cursor:pointer;background:0 0;border:1px solid #ffffff26;border-radius:6px;align-items:center;padding:4px 6px;transition:color .15s,border-color .15s,background .15s;display:flex}.icon-btn:hover{color:#fff;background:#ffffff0f;border-color:#fff6}.icon-btn--danger{color:#ff5050b3;border-color:#ff505033}.icon-btn--danger:hover{color:#ff4d4d;background:#ff323214;border-color:#ff505080}.icon-btn--active{color:#28f9e9;border-color:#28f9e966}.icon-btn--active:hover{background:#28f9e914}.icon-btn--active-red{color:#ff4d4d;border-color:#ff505066}.icon-btn--active-red:hover{background:#ff323214}.dashed-btn{color:#ffffffb3;cursor:pointer;background:#ffffff0f;border:1px dashed #ffffff40;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:100%;padding:10px;font-size:.85rem;transition:background .2s,color .2s;display:flex}.dashed-btn:hover{color:#fff;background:#ffffff1a}.outline-btn{color:#fff;cursor:pointer;background:#ffffff12;border:1px solid #fff3;border-radius:7px;padding:8px 14px;font-size:.82rem;transition:background .2s}.outline-btn:hover{background:#ffffff1f}.primary-btn{color:#28f9e9;cursor:pointer;background:#28f9e92e;border:1px solid #28f9e966;border-radius:7px;padding:8px 14px;font-size:.82rem;font-weight:600;transition:background .2s}.primary-btn:hover{background:#28f9e947}.section-label{color:#ffffff80;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:.75rem;font-weight:600;display:block}.select-input{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:7px;outline:none;width:100%;padding:7px 10px;font-size:.85rem}.select-input option{color:#fff;background:#1a1a24}.npc-row{background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;align-items:center;gap:10px;margin-bottom:10px;padding:10px 12px;display:flex}.npc-avatar-wrap{cursor:pointer;flex-shrink:0;width:clamp(36px,3.5vw,48px);height:clamp(36px,3.5vw,48px);position:relative}.npc-avatar-thumb{object-fit:cover;border:2px solid #ffffff4d;border-radius:50%;width:100%;height:100%}.npc-thumb-badge{border:2px solid #1a1a24;border-radius:50%;width:12px;height:12px;position:absolute;bottom:-2px;right:-2px}.npc-thumb-badge--enemy{background:#ff4d4d}.npc-thumb-badge--friendly{background:#4dff88}.npc-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.npc-name-input{color:#fff;background:0 0;border:none;border-bottom:1px solid #fff3;outline:none;width:100%;padding:2px 0;font-size:.9rem;font-weight:600}.npc-name-input::placeholder{color:#ffffff4d}.npc-stats-row{color:#ffffffb3;flex-wrap:wrap;align-items:center;gap:3px;font-size:.75rem;display:flex}.npc-actions{flex-direction:column;flex-shrink:0;gap:4px;display:flex}.npc-map-badge{border:1.5px solid #000000b3;border-radius:50%;width:clamp(9px,1.1vmin,13px);height:clamp(9px,1.1vmin,13px);position:absolute;bottom:-4px;right:-4px;box-shadow:0 1px 3px #00000080}.npc-map-badge--enemy{background:#ff4d4d}.npc-map-badge--friendly{background:#4d8}.map-list-item{cursor:pointer;background:#ffffff0a;border:1px solid #ffffff14;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;transition:background .15s,border-color .15s;display:flex}.map-list-item:hover{background:#ffffff14}.map-list-item--active{background:#28f9e90f;border-color:#28f9e966}.map-thumb{background:#ffffff14;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex;overflow:hidden}.new-map-form{background:#ffffff0a;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;gap:10px;margin-bottom:10px;padding:14px;display:flex}.room-visibility-row{color:#ffffffbf;cursor:pointer;align-items:center;gap:8px;padding:3px 0;font-size:.82rem;display:flex}.room-visibility-row input[type=checkbox]{accent-color:#28f9e9;cursor:pointer}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-box{background:#14141cfa;border:1px solid #ffffff1f;border-radius:16px;width:min(480px,92vw);max-height:90vh;padding:28px;overflow-y:auto;box-shadow:0 20px 60px #000000b3}.modal-header{color:#fff;justify-content:space-between;align-items:center;margin-bottom:20px;font-size:1.15rem;font-weight:700;display:flex}.modal-close-btn{color:#fff9;cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:6px;align-items:center;padding:5px 7px;transition:color .2s;display:flex}.modal-close-btn:hover{color:#fff}.modal-field{margin-bottom:16px}.modal-field label{color:#ffffff80;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;font-size:.78rem;font-weight:600;display:block}.modal-stats-grid{grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:20px;display:grid}.modal-save-btn{color:#28f9e9;cursor:pointer;background:#28f9e92e;border:1px solid #28f9e966;border-radius:10px;width:100%;padding:12px;font-size:.95rem;font-weight:700;transition:background .2s}.modal-save-btn:hover{background:#28f9e947}.game-state-btn{cursor:pointer;color:#fff;letter-spacing:.03em;background:#ffffff14;border:1px solid #fff3;border-radius:10px;width:calc(100% - 32px);margin:12px 16px 8px;padding:10px 16px;font-size:.9rem;font-weight:700;transition:all .2s}.game-state-btn:hover{background:#ffffff24}.game-state-btn--playing{color:#28f9e9;background:#28f9e91f;border-color:#28f9e980}.game-state-btn--playing:hover{background:#28f9e933}.waiting-screen{z-index:9999;background:radial-gradient(#1a1a2e 0%,#0a0a0f 100%);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.waiting-card{text-align:center;color:#fff;max-width:400px;padding:40px 32px}.waiting-icon{filter:drop-shadow(0 0 20px #28f9e966);margin-bottom:20px;font-size:4rem;animation:3s ease-in-out infinite float;display:block}.waiting-card h2{color:#fff;text-shadow:0 0 30px #28f9e94d;margin:0 0 10px;font-size:1.7rem}.waiting-card p{color:#ffffff73;margin:0;font-size:.95rem;line-height:1.5}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}.map-name-input{color:#fff;background:0 0;border:none;border-bottom:1px solid #fff3;outline:none;flex:1;min-width:0;padding:0 2px;font-size:.9rem;font-weight:600}.map-name-input:focus{border-bottom-color:#28f9e9}.map-live-badge{color:#000;white-space:nowrap;letter-spacing:.05em;background:#28f9e9;border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:.6rem;font-weight:700}.clone-panel{background:#00000059;border:1px solid #ffffff1f;border-radius:10px;flex-direction:column;gap:2px;max-height:220px;padding:12px;display:flex;overflow-y:auto}.clone-npc-row{color:#fff;cursor:pointer;text-align:left;background:#ffffff0d;border:none;border-radius:6px;align-items:center;gap:8px;width:100%;padding:6px 10px;transition:background .15s;display:flex}.clone-npc-row:hover{background:#ffffff1f}.clone-npc-row img{object-fit:cover;border-radius:50%;flex-shrink:0;width:24px;height:24px}.clone-npc-row span{flex:1;font-size:.85rem}.sidebar-footer{background:#0003;border-top:1px solid #ffffff14;flex-shrink:0;gap:8px;padding:10px 16px;display:flex}.sidebar-footer .outline-btn{flex:1;padding:7px 8px;font-size:.78rem}.empty-hint{color:#ffffff59;text-align:center;margin:0;padding:6px 0;font-size:.8rem}.outline-btn--active{color:#28f9e9;background:#28f9e91f;border-color:#28f9e966}.avatar-preset-grid{grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:4px;display:grid}.avatar-preset-grid--sm{grid-template-columns:repeat(7,1fr);gap:4px}.avatar-preset-btn{cursor:pointer;aspect-ratio:1;color:#ffffff80;background:#ffffff0f;border:2px solid #0000;border-radius:50%;justify-content:center;align-items:center;padding:2px;transition:border-color .15s,background .15s;display:flex}.avatar-preset-btn img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.avatar-preset-btn:hover{background:#ffffff1a;border-color:#fff6}.avatar-preset-btn--active{background:#28f9e91a;border-color:#28f9e9}.avatar-preset-btn--upload{border-style:dashed;border-color:#ffffff40;border-radius:8px}.avatar-preset-btn--upload:hover{color:#fff;border-color:#ffffff80}.npc-row-wrapper{flex-direction:column;margin-bottom:8px;display:flex}.npc-row-wrapper .npc-row{margin-bottom:0}.npc-avatar-picker{background:#0000004d;border:1px solid #ffffff1a;border-top:none;border-radius:0 0 10px 10px;padding:10px 10px 8px}
