@import "https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;600;700;800&display=swap";html,body,#root{background:#0f0f1a;min-height:100vh;margin:0;padding:0}:root{--bg-primary:#0f0f1a;--bg-secondary:#1a1a2e;--bg-card:#16213e;--text-primary:#e0e0e0;--text-secondary:#a0a0b0;--accent:#7c5cbf;--accent-light:#a78bfa;--success:#4ade80;--danger:#f87171;--warning:#fbbf24;--info:#60a5fa}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);font-family:Noto Sans KR,-apple-system,sans-serif;line-height:1.7}.title-screen{background:radial-gradient(#1a1a3e 0%,#0f0f1a 70%);justify-content:center;align-items:center;min-height:100vh;display:flex}.title-content{text-align:center;max-width:500px;padding:2rem}.game-title{background:linear-gradient(135deg,#a78bfa,#60a5fa);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:.5rem;font-size:3.5rem;font-weight:800}.game-subtitle{color:var(--text-secondary);margin-bottom:2rem;font-size:1.1rem}.theme-selector h3{color:var(--accent-light);margin-bottom:1rem}.theme-card{background:var(--bg-card);cursor:pointer;text-align:left;border:2px solid #0000;border-radius:12px;margin-bottom:.8rem;padding:1.2rem;transition:border-color .3s}.theme-card.selected{border-color:var(--accent)}.theme-card:hover{border-color:var(--accent-light)}.theme-name{margin-bottom:.3rem;font-size:1.1rem;font-weight:600}.theme-desc{color:var(--text-secondary);margin-bottom:.3rem;font-size:.9rem}.theme-meta{color:var(--accent-light);font-size:.8rem}.language-selector{margin-top:1.5rem;margin-bottom:.5rem}.language-selector h3{color:var(--accent-light);margin-bottom:.6rem;font-size:.9rem}.language-options{justify-content:center;gap:.5rem;display:flex}.lang-btn{background:var(--bg-card);color:var(--text-secondary);cursor:pointer;border:1px solid #2a2a4a;border-radius:8px;padding:.5rem 1.2rem;font-size:.9rem;transition:all .2s}.lang-btn.selected{border-color:var(--accent);color:var(--accent-light);background:#7c5cbf26}.lang-btn:hover{border-color:var(--accent-light)}.start-btn{background:linear-gradient(135deg, var(--accent), #6366f1);color:#fff;cursor:pointer;border:none;border-radius:30px;margin-top:1.5rem;padding:.8rem 3rem;font-size:1.1rem;font-weight:600;transition:opacity .3s}.start-btn:disabled{opacity:.5;cursor:not-allowed}.game-layout{grid-template-columns:1fr 280px;max-width:1200px;min-height:100vh;margin:0 auto;display:grid}.game-main{max-height:100vh;padding:2rem;overflow-y:auto}.game-sidebar{border-left:1px solid #2a2a4a;max-height:100vh;overflow-y:auto}.story-view.loading{justify-content:center;align-items:center;min-height:60vh;display:flex}.loading-indicator{color:var(--accent-light);font-size:1.3rem}.scene-header{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.scene-title{color:var(--accent-light);font-size:1.6rem;font-weight:700}.scene-tags{gap:.5rem;display:flex}.tag{border-radius:12px;padding:.2rem .6rem;font-size:.75rem;font-weight:600}.tag.mood-tense{color:#fca5a5;background:#7f1d1d}.tag.mood-mysterious{color:#c4b5fd;background:#312e81}.tag.mood-hopeful,.tag.morality-good{color:#6ee7b7;background:#064e3b}.tag.morality-evil{color:#fca5a5;background:#7f1d1d}.tag.morality-neutral{color:#d1d5db;background:#374151}.scene-description{margin-bottom:2rem;line-height:1.9}.scene-description p{margin-bottom:1rem;font-size:1.05rem}.choices h3{color:var(--text-secondary);margin-bottom:.8rem;font-size:.9rem}.choice-btn{background:var(--bg-card);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;border:1px solid #2a2a4a;border-radius:10px;align-items:center;gap:.8rem;margin-bottom:.5rem;padding:.9rem 1.2rem;font-size:.95rem;transition:border-color .2s;display:flex}.choice-btn:hover{border-color:var(--accent)}.choice-btn.choice-dialogue{border-left:3px solid var(--info)}.choice-btn.choice-combat{border-left:3px solid var(--danger)}.choice-icon{flex-shrink:0;font-size:1.1rem}.choice-text{flex:1}.choice-feature{color:var(--text-secondary);background:#2a2a4a;border-radius:8px;padding:.15rem .5rem;font-size:.75rem}.combat-view{max-width:600px;margin:0 auto}.combat-header h2{color:var(--danger);margin-bottom:.3rem}.enemy-desc{color:var(--text-secondary);margin-bottom:1.5rem}.combat-hp{margin-bottom:1.5rem}.hp-bar-container{margin-bottom:.8rem}.hp-label{margin-bottom:.3rem;font-size:.85rem;font-weight:600}.hp-bar-bg{background:#2a2a4a;border-radius:10px;height:20px;overflow:hidden}.hp-bar-fill{border-radius:10px;height:100%;transition:width .5s}.hp-text{color:var(--text-secondary);margin-top:.2rem;font-size:.8rem}.combat-log{margin-bottom:1.5rem}.log-entry{background:var(--bg-card);border-radius:8px;margin-bottom:.5rem;padding:.7rem;font-size:.9rem}.log-round{color:var(--accent-light);font-size:.8rem;font-weight:600}.log-player{color:var(--success)}.log-enemy{color:var(--danger)}.combat-actions{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.action-btn{background:var(--bg-card);color:var(--text-primary);cursor:pointer;border:1px solid #2a2a4a;border-radius:10px;padding:.8rem;font-size:.95rem;transition:all .2s}.action-btn:hover:not(:disabled){border-color:var(--accent);transform:scale(1.02)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn.attack{border-left:3px solid var(--danger)}.action-btn.defend{border-left:3px solid var(--info)}.action-btn.skill{border-left:3px solid var(--warning)}.action-btn.item{border-left:3px solid var(--success)}.action-btn.flee{border-left:3px solid var(--text-secondary)}.item-action{position:relative}.item-dropdown{background:var(--bg-secondary);border:1px solid #2a2a4a;border-radius:8px;position:absolute;bottom:100%;left:0;right:0;overflow:hidden}.item-dropdown button{width:100%;color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;padding:.5rem .8rem;font-size:.85rem;display:block}.item-dropdown button:hover{background:var(--bg-card)}.combat-result{text-align:center;padding:2rem}.combat-result.victory h2{color:var(--success);font-size:2rem}.combat-result.defeat h2{color:var(--danger);font-size:2rem}.combat-result.flee h2{color:var(--warning);font-size:2rem}.result-stats{color:var(--text-secondary);margin:1rem 0}.loot{margin:1rem 0}.loot h3{color:var(--warning);margin-bottom:.5rem}.loot-item{background:var(--bg-card);color:var(--warning);border-radius:8px;margin:.2rem;padding:.3rem .8rem;display:inline-block}.continue-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:20px;margin-top:1.5rem;padding:.7rem 2rem;font-size:1rem}.dialogue-view{flex-direction:column;height:calc(100vh - 4rem);display:flex}.dialogue-header{border-bottom:1px solid #2a2a4a;justify-content:space-between;align-items:center;padding-bottom:1rem;display:flex}.npc-info{align-items:center;gap:.8rem;display:flex}.npc-info h2{color:var(--info)}.npc-role{background:var(--bg-card);color:var(--text-secondary);border-radius:8px;padding:.2rem .5rem;font-size:.8rem}.npc-disposition{color:#6ee7b7;background:#064e3b;border-radius:8px;padding:.2rem .5rem;font-size:.8rem}.leave-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #2a2a4a;border-radius:8px;padding:.5rem 1rem}.dialogue-messages{flex:1;padding:1rem 0;overflow-y:auto}.message{border-radius:12px;max-width:80%;margin-bottom:1rem;padding:.8rem 1rem}.message.player{background:var(--accent);border-bottom-right-radius:4px;margin-left:auto}.message.npc{background:var(--bg-card);border-bottom-left-radius:4px}.message-sender{color:var(--text-secondary);margin-bottom:.3rem;font-size:.75rem}.message-text{line-height:1.6}.message-action{color:var(--warning);background:#0003;border-radius:6px;margin-top:.5rem;padding:.4rem .6rem;font-size:.85rem}.disposition-change{color:var(--success);margin-top:.3rem;font-size:.8rem}.message.typing .message-text{color:var(--text-secondary)}.dialogue-input{border-top:1px solid #2a2a4a;gap:.5rem;padding-top:1rem;display:flex}.dialogue-input input{background:var(--bg-card);color:var(--text-primary);border:1px solid #2a2a4a;border-radius:10px;outline:none;flex:1;padding:.8rem 1rem;font-size:.95rem}.dialogue-input input:focus{border-color:var(--accent)}.dialogue-input button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:.8rem 1.5rem}.dialogue-input button:disabled{opacity:.5}.sidebar{padding:1.5rem 1rem}.sidebar-section{margin-bottom:1.5rem}.sidebar-section h3{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.8rem;font-size:.85rem}.scene-counter{color:var(--accent-light);margin-bottom:.8rem;font-size:.8rem}.gauge{margin-bottom:.6rem}.gauge-label{margin-bottom:.2rem;font-size:.8rem}.gauge-bar-bg{background:#2a2a4a;border-radius:4px;height:8px;overflow:hidden}.gauge-bar-fill{border-radius:4px;height:100%}.gauge-value{color:var(--text-secondary);margin-top:.1rem;font-size:.7rem}.property{justify-content:space-between;padding:.4rem 0;font-size:.85rem;display:flex}.property-label{color:var(--text-secondary)}.property-value{color:var(--accent-light)}.entity{justify-content:space-between;padding:.3rem 0;font-size:.85rem;display:flex}.entity-name{color:var(--text-primary)}.entity-status{border-radius:6px;padding:.1rem .4rem;font-size:.75rem}.npc-entry{align-items:center;gap:.5rem;padding:.3rem 0;font-size:.85rem;display:flex}.npc-entry .npc-name{color:var(--info)}.npc-entry .npc-role{color:var(--text-secondary);font-size:.75rem}.npc-entry .npc-disp{color:var(--success);margin-left:auto;font-size:.75rem}.inventory{flex-wrap:wrap;gap:.3rem;display:flex}.inventory-item{background:var(--bg-card);color:var(--warning);border-radius:6px;padding:.2rem .5rem;font-size:.8rem}.inventory-item-row{background:var(--bg-card);color:var(--warning);border-radius:6px;justify-content:space-between;align-items:center;padding:.2rem .5rem;font-size:.8rem;display:flex}.inventory-item-name{flex:1}.investigate-btn{cursor:pointer;opacity:.5;background:0 0;border:none;padding:.1rem .3rem;font-size:.75rem;transition:opacity .2s}.investigate-btn:hover{opacity:1}.investigate-msg{color:var(--accent-light);padding:.3rem 0;font-size:.75rem;font-style:italic}.title-list{flex-direction:column;gap:.4rem;display:flex}.title-entry{border-left:3px solid var(--warning);background:#fbbf240d;border-radius:8px;padding:.4rem .5rem}.title-name{color:var(--warning);font-size:.85rem;font-weight:600}.title-desc{color:var(--text-secondary);margin-top:.1rem;font-size:.7rem}.title-bonus{flex-wrap:wrap;gap:.3rem;margin-top:.2rem;display:flex}.title-bonus-tag{color:var(--warning);background:#fbbf2426;border-radius:4px;padding:.1rem .4rem;font-size:.65rem}.quest-empty{color:var(--text-secondary);padding:.3rem 0;font-size:.8rem;font-style:italic}.quest-list{flex-direction:column;gap:.5rem;display:flex}.quest-entry{background:#ffffff08;border-left:3px solid #0000;border-radius:8px;padding:.5rem .6rem;transition:all .3s}.quest-entry.quest-active{border-left-color:var(--success)}.quest-entry.quest-fading{border-left-color:var(--warning);opacity:.85}.quest-entry.quest-lost{border-left-color:var(--danger);opacity:.5}.quest-entry.quest-completed{border-left-color:var(--text-secondary);opacity:.6}.quest-entry.quest-completed .quest-content{text-decoration:line-through}.quest-header{align-items:center;gap:.4rem;margin-bottom:.2rem;display:flex}.quest-status-icon{font-size:.7rem}.quest-status-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}.quest-content{color:var(--text-primary);font-size:.85rem;line-height:1.3}.quest-entry.quest-fading .quest-content{color:var(--text-secondary)}.quest-entry.quest-lost .quest-content{color:var(--text-secondary);font-style:italic}.quest-npc{color:var(--accent-light);margin-top:.2rem;font-size:.7rem}.gameover-view{background:linear-gradient(135deg,#1a0505 0%,#0a0000 100%);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.gameover-content{text-align:center;width:100%;max-width:700px}.gameover-badge{border:2px solid var(--danger);color:var(--danger);letter-spacing:.3em;text-transform:uppercase;border-radius:4px;margin-bottom:1.5rem;padding:.4rem 1.5rem;font-size:1rem;font-weight:700;display:inline-block}.gameover-title{color:var(--danger);margin-bottom:1rem;font-size:2.2rem;font-weight:300;line-height:1.2}.gameover-cause{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.85rem}.gameover-divider{background-color:var(--danger);transform-origin:50%;width:60px;height:2px;margin:0 auto 2rem}.gameover-epilogue{color:var(--text-primary);text-align:left;white-space:pre-line;margin-bottom:2rem;font-size:1.05rem;line-height:1.8}.gameover-final-line{color:var(--danger);margin:2rem 0 3rem;font-size:1.15rem;font-style:italic;font-weight:300;line-height:1.6}.gameover-buttons{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.gameover-btn{cursor:pointer;letter-spacing:.05em;background:0 0;border-radius:25px;padding:.8rem 2rem;font-size:.9rem;transition:all .3s}.gameover-btn-load{border:1px solid var(--accent-light);color:var(--accent-light)}.gameover-btn-load:hover{background:#a78bfa26}.gameover-btn-return{border:1px solid var(--text-secondary);color:var(--text-secondary)}.gameover-btn-return:hover{background:#ffffff0d}.save-section{align-items:center;gap:.5rem;display:flex}.save-btn{color:var(--accent-light);border:1px solid var(--accent);cursor:pointer;background:#a78bfa1a;border-radius:8px;padding:.4rem 1rem;font-size:.8rem;transition:all .3s}.save-btn:hover{background:var(--accent);color:#fff}.save-msg{color:var(--success);font-size:.75rem;font-style:italic}.load-btn-wrapper{cursor:pointer;margin-top:.5rem;display:block}.load-btn{text-align:center;cursor:pointer;display:block}.choices-header{justify-content:space-between;align-items:center;display:flex}.map-toggle-btn{color:var(--accent-light);border:1px solid var(--accent);cursor:pointer;background:#a78bfa1a;border-radius:15px;padding:.3rem .8rem;font-size:.8rem;transition:all .3s}.map-toggle-btn:hover{background:var(--accent);color:#fff}.worldmap-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.worldmap-container{background:var(--bg-secondary);border:1px solid #a78bfa33;border-radius:16px;width:90vw;max-width:700px;overflow:hidden}.worldmap-header{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.worldmap-header h2{color:var(--text-primary);font-size:1.1rem}.worldmap-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:.9rem}.worldmap-close:hover{color:var(--text-primary)}.worldmap-svg{width:100%;height:auto;display:block}.worldmap-node{transition:all .3s}.worldmap-node-current{fill:var(--accent);stroke:var(--accent-light);stroke-width:3px}.worldmap-node-visited{fill:#4ade804d;stroke:var(--success);stroke-width:2px}.worldmap-node-visited:hover{fill:#4ade8080;stroke-width:3px}.worldmap-node-new{fill:#60a5fa4d;stroke:var(--info);stroke-width:2px}.worldmap-node-new:hover{fill:#60a5fa80;stroke-width:3px}.worldmap-node-locked{fill:#64646426;stroke:#6464644d;stroke-width:1px}.worldmap-label{font-size:12px;font-weight:600}.worldmap-loading{text-align:center;color:var(--text-secondary);padding:1rem;font-size:.9rem}.choice-btn.choice-risky{border-left:3px solid var(--warning);background:#fbbf240d}.choice-btn.choice-risky:hover{background:#fbbf241f}.choice-btn.choice-risky .choice-icon{color:var(--warning)}.ending-trigger-btn{width:100%;color:var(--warning);border:1px solid var(--warning);cursor:pointer;letter-spacing:.05em;background:linear-gradient(135deg,#a78bfa26,#fbbf2426);border-radius:12px;margin-top:1.5rem;padding:1rem 2rem;font-size:1.1rem;font-weight:600;transition:all .4s;display:block}.ending-trigger-btn:hover{background:linear-gradient(135deg,#a78bfa4d,#fbbf244d);box-shadow:0 0 20px #fbbf2433}.ending-view{justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.ending-content{text-align:center;width:100%;max-width:700px}.ending-type-badge{letter-spacing:.15em;text-transform:uppercase;border:1px solid;border-radius:20px;margin-bottom:1.5rem;padding:.3rem 1.2rem;font-size:.75rem;display:inline-block}.ending-title{margin-bottom:1.5rem;font-size:2.5rem;font-weight:300;line-height:1.2}.ending-divider{transform-origin:50%;width:60px;height:2px;margin:0 auto 2rem}.ending-epilogue{color:var(--text-primary);text-align:left;white-space:pre-line;margin-bottom:2rem;font-size:1.05rem;line-height:1.8}.ending-final-line{margin:2rem 0 3rem;font-size:1.2rem;font-style:italic;font-weight:300;line-height:1.6}.ending-return-btn{cursor:pointer;letter-spacing:.05em;background:0 0;border:1px solid;border-radius:25px;padding:.8rem 2.5rem;font-size:.9rem;transition:all .3s}.build-btn{color:var(--accent-light);border:1px solid var(--accent);cursor:pointer;background:0 0;border-radius:20px;margin-top:.8rem;padding:.6rem 2rem;font-size:.95rem;transition:all .3s}.build-btn:hover{background:var(--accent);color:#fff}.theme-builder{background:radial-gradient(#1a1a3e 0%,#0f0f1a 70%);justify-content:center;align-items:center;min-height:100vh;display:flex}.builder-content{width:100%;max-width:550px;padding:2rem}.builder-title{background:linear-gradient(135deg,#fbbf24,#f59e0b);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:.5rem;font-size:2.5rem;font-weight:800}.builder-subtitle{color:var(--text-secondary);margin-bottom:2rem}.back-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;margin-bottom:1rem;font-size:.9rem}.back-btn:hover{color:var(--text-primary)}.file-upload-area{text-align:center;cursor:pointer;border:2px dashed #2a2a4a;border-radius:12px;margin-bottom:1.5rem;padding:2rem;transition:border-color .3s}.file-upload-area:hover{border-color:var(--accent)}.upload-icon{margin-bottom:.5rem;font-size:2.5rem;display:block}.upload-hint{color:var(--text-secondary);margin-top:.3rem;font-size:.8rem}.upload-files .file-name{color:var(--text-secondary);margin-top:.3rem;font-size:.85rem}.builder-auth{flex-direction:column;align-items:center;gap:1rem;margin-top:2rem;display:flex}.auth-label{color:var(--text-secondary);font-size:.95rem}.auth-input{background:var(--bg-card);width:100%;max-width:320px;color:var(--text-primary);text-align:center;letter-spacing:.1em;border:1px solid #2a2a4a;border-radius:8px;outline:none;padding:.8rem 1rem;font-size:1rem}.auth-input:focus{border-color:var(--accent)}.auth-error{color:var(--danger);font-size:.85rem}.builder-auth .build-btn{background:linear-gradient(135deg, var(--accent), var(--accent-light));color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.7rem 2rem;font-size:1rem;font-weight:600}.builder-auth .build-btn:disabled{opacity:.5;cursor:not-allowed}.theme-name-input{margin-bottom:1.5rem}.theme-name-input label{color:var(--text-secondary);margin-bottom:.4rem;font-size:.85rem;display:block}.theme-name-input input{background:var(--bg-card);width:100%;color:var(--text-primary);border:1px solid #2a2a4a;border-radius:8px;outline:none;padding:.7rem 1rem;font-size:.95rem}.theme-name-input input:focus{border-color:var(--accent)}.builder-form .build-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:12px;width:100%;padding:.9rem;font-size:1.1rem;font-weight:600}.builder-form .build-btn:disabled{opacity:.5;cursor:not-allowed}.builder-progress{text-align:center;padding:2rem 0}.progress-bar-bg{background:#2a2a4a;border-radius:6px;height:12px;margin-bottom:1rem;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg,#f59e0b,#fbbf24);border-radius:6px;height:100%}.progress-text{color:var(--text-secondary);margin-bottom:.3rem}.progress-percent{color:var(--warning);font-size:1.5rem;font-weight:700}.building-spinner{margin-top:1rem;font-size:2rem;display:inline-block}.builder-result{text-align:center}.builder-result h2{color:var(--success);margin-bottom:1rem;font-size:1.8rem}.result-card{background:var(--bg-card);text-align:left;border-radius:12px;margin-bottom:1.5rem;padding:1.5rem}.result-name{margin-bottom:.3rem;font-size:1.2rem;font-weight:600}.result-desc{color:var(--text-secondary);margin-bottom:.5rem}.result-meta{color:var(--accent-light);font-size:.85rem}.play-new-btn{background:linear-gradient(135deg, var(--accent), #6366f1);color:#fff;cursor:pointer;border:none;border-radius:25px;padding:.8rem 2.5rem;font-size:1.05rem;font-weight:600}.builder-error{text-align:center}.builder-error h2{color:var(--danger);margin-bottom:.5rem}.builder-error p{color:var(--text-secondary);margin-bottom:1rem}.retry-btn{background:var(--bg-card);color:var(--text-primary);cursor:pointer;border:1px solid #2a2a4a;border-radius:8px;padding:.6rem 1.5rem}.typewriter-cursor{color:var(--accent-light);margin-left:1px;font-weight:300;animation:.7s step-end infinite blink-cursor;display:inline-block}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.skip-typing-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #2a2a4a;border-radius:16px;margin-top:.5rem;padding:.3rem 1rem;font-size:.8rem;transition:all .2s;display:inline-block}.skip-typing-btn:hover{border-color:var(--accent);color:var(--accent-light)}@keyframes screen-shake{0%,to{transform:translate(0)}10%{transform:translate(-4px,-2px)}20%{transform:translate(4px,2px)}30%{transform:translate(-3px,3px)}40%{transform:translate(3px,-3px)}50%{transform:translate(-2px,1px)}60%{transform:translate(2px,-1px)}70%{transform:translate(-1px,2px)}80%{transform:translate(1px,-2px)}90%{transform:translate(-1px,-1px)}}.combat-view.screen-shake{animation:.3s ease-in-out screen-shake}.hit-flash{pointer-events:none;z-index:100;position:fixed;inset:0}.hit-flash.hit{background:radial-gradient(#f871714d 0%,#0000 70%)}.hit-flash.critical{background:radial-gradient(#ff323280 0%,#0000 60%)}.combat-view.low-hp-warning{animation:2s ease-in-out infinite low-hp-pulse}@keyframes low-hp-pulse{0%,to{box-shadow:inset 0 0 #0000}50%{box-shadow:inset 0 0 30px #f8717126}}.hp-bar-container.hp-low .hp-label{color:var(--danger);animation:1s ease-in-out infinite hp-low-blink}@keyframes hp-low-blink{0%,to{opacity:1}50%{opacity:.5}}.hp-bar-wrapper{margin-bottom:.8rem;position:relative}.damage-popup{color:var(--danger);text-shadow:0 0 8px #f87171cc,0 2px 4px #00000080;pointer-events:none;z-index:10;font-family:Noto Sans KR,sans-serif;font-size:1.4rem;font-weight:800;position:absolute;top:-10px}.damage-popup.critical{color:#f44;text-shadow:0 0 16px #f44,0 0 32px #f449,0 2px 4px #00000080;font-size:2rem}.victory-particles{pointer-events:none;position:absolute;inset:0;overflow:hidden}.victory-particle{background:var(--warning);border-radius:50%;width:6px;height:6px;animation:2s ease-out forwards particle-rise;position:absolute;bottom:0}.victory-particle:nth-child(odd){background:var(--accent-light);width:4px;height:4px}.victory-particle:nth-child(3n){background:var(--success);width:5px;height:5px}@keyframes particle-rise{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-300px)scale(0)}}.combat-result{position:relative;overflow:hidden}.game-layout{transition:background 1.2s,box-shadow 1.2s}.atmosphere-default{background:var(--bg-primary)}.atmosphere-combat{background:linear-gradient(#1a0a0a 0%,#0f0f1a 40% 100%);box-shadow:inset 0 0 80px #f871710d}.atmosphere-dialogue{background:linear-gradient(#0a1a2a 0%,#0f0f1a 40% 100%);box-shadow:inset 0 0 80px #60a5fa0d}.atmosphere-tense{background:linear-gradient(#1a0f0f 0%,#0f0f1a 50% 100%);box-shadow:inset 0 0 60px #c850500a}.atmosphere-mysterious{background:linear-gradient(#150f2a 0%,#0f0f1a 50% 100%);box-shadow:inset 0 0 60px #a78bfa0f}.atmosphere-hopeful{background:linear-gradient(#0a1a15 0%,#0f0f1a 50% 100%);box-shadow:inset 0 0 60px #4ade800a}.title-screen{position:relative;overflow:hidden}.title-particles{pointer-events:none;position:absolute;inset:0}.title-particle{background:var(--accent-light);opacity:.3;border-radius:50%;animation:linear infinite float-particle;position:absolute}@keyframes float-particle{0%{opacity:0;transform:translateY(100vh)scale(0)}10%{opacity:.4}90%{opacity:.4}to{opacity:0;transform:translateY(-20px)scale(1)}}@media (width<=768px){.game-layout{grid-template-columns:1fr}.game-sidebar{border-top:1px solid #2a2a4a;border-left:none;max-height:none}}.loading-screen{background:radial-gradient(#1a1a3e 0%,#0f0f1a 70%);justify-content:center;align-items:center;min-height:100vh;display:flex}.loading-content{text-align:center;flex-direction:column;align-items:center;gap:2rem;display:flex}.loading-orb{background:radial-gradient(circle,#a78bfa4d 0%,#0000 70%);border-radius:50%;justify-content:center;align-items:center;width:100px;height:100px;animation:2s ease-in-out infinite loading-orb-pulse;display:flex}.loading-orb-inner{background:radial-gradient(circle, var(--accent-light) 0%, var(--accent) 60%, transparent 100%);width:40px;height:40px;box-shadow:0 0 30px var(--accent-light), 0 0 60px var(--accent);border-radius:50%;animation:3s linear infinite loading-orb-spin}@keyframes loading-orb-pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}@keyframes loading-orb-spin{0%{box-shadow:0 0 30px var(--accent-light), 0 0 60px var(--accent)}50%{box-shadow:0 0 40px var(--info), 0 0 80px var(--accent-light)}to{box-shadow:0 0 30px var(--accent-light), 0 0 60px var(--accent)}}.loading-message{color:var(--text-secondary);letter-spacing:.05em;font-size:1.2rem;animation:2s ease-in-out infinite loading-text-fade}@keyframes loading-text-fade{0%,to{opacity:.6}50%{opacity:1}}.loading-bar-bg{background:#ffffff14;border-radius:2px;width:280px;height:3px;overflow:hidden}.loading-bar-fill{background:linear-gradient(90deg, var(--accent), var(--accent-light), var(--info));border-radius:2px;width:40%;height:100%;animation:1.5s ease-in-out infinite loading-bar-slide}@keyframes loading-bar-slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.intro-screen{background:radial-gradient(at 30% 20%,#1a1a3e 0%,#0f0f1a 60%,#080812 100%);justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.intro-overlay{pointer-events:none;background:radial-gradient(circle at 20% 80%,#7c5cbf14 0%,#0000 50%),radial-gradient(circle at 80% 20%,#60a5fa0f 0%,#0000 50%);position:absolute;inset:0}.intro-content{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;width:90%;max-width:640px;animation:1.2s ease-out intro-fade-in;display:flex;position:relative}@keyframes intro-fade-in{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.intro-label{text-transform:uppercase;letter-spacing:.3em;color:var(--accent-light);opacity:.7;font-size:.85rem}.intro-title{background:linear-gradient(135deg,#e0e0e0,#a78bfa);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:2.2rem;font-weight:700;line-height:1.3}.intro-divider{background:linear-gradient(90deg, transparent, var(--accent-light), transparent);width:60px;height:2px}.intro-description{color:var(--text-secondary);font-size:1.05rem;line-height:1.8;animation:1.5s ease-out .3s both intro-text-in}.intro-prompt-box{text-align:left;background:#ffffff08;border:1px solid #a78bfa26;border-radius:12px;width:100%;padding:1.5rem;animation:1.5s ease-out .6s both intro-text-in}.intro-prompt-label{text-transform:uppercase;letter-spacing:.15em;color:var(--accent-light);opacity:.8;margin-bottom:.8rem;font-size:.8rem}.intro-prompt{color:var(--text-primary);font-size:1rem;line-height:1.9}@keyframes intro-text-in{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.intro-start-btn{color:#fff;background:linear-gradient(135deg, var(--accent), var(--accent-light));cursor:pointer;letter-spacing:.05em;border:none;border-radius:8px;margin-top:.5rem;padding:.9rem 2.5rem;font-size:1.1rem;font-weight:600;transition:transform .2s,box-shadow .2s;animation:1.5s ease-out .9s both intro-text-in}.intro-start-btn:hover{transform:translateY(-2px);box-shadow:0 6px 24px #7c5cbf59}.intro-start-btn:active{transform:translateY(0)}.toast-overlay{z-index:9999;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;align-items:center;gap:.8rem;width:90%;max-width:520px;padding:1rem 1.5rem;animation:.4s ease-out toast-in;display:flex;position:fixed;top:1.5rem;left:50%;transform:translate(-50%)}.toast-rateLimit{background:#fbbf2426;border:1px solid #fbbf2466}.toast-network{background:#f8717126;border:1px solid #f8717166}.toast-server{background:#60a5fa26;border:1px solid #60a5fa66}.toast-icon{flex-shrink:0;font-size:1.5rem}.toast-body{flex:1;min-width:0}.toast-title{color:var(--text-primary);margin-bottom:.2rem;font-size:.95rem;font-weight:600}.toast-detail{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(-20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}
