:root{--color-bg: oklch(12% .01 260);--color-surface: oklch(17% .015 260);--color-surface-2: oklch(22% .015 260);--color-border: oklch(30% .02 260);--color-accent: oklch(72% .18 65);--color-accent-2: oklch(58% .14 65);--color-text: oklch(92% .01 60);--color-text-muted: oklch(60% .01 60);--color-danger: oklch(62% .22 25);--color-success: oklch(65% .18 145);--color-disabled: oklch(40% .01 260);--font-body: "Georgia", "Times New Roman", serif;--font-ui: system-ui, -apple-system, sans-serif;--font-mono: "Menlo", "Consolas", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--leading-tight: 1.25;--leading-normal: 1.6;--leading-loose: 1.9;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--shadow-sm: 0 1px 3px oklch(0% 0 0 / .4);--shadow-md: 0 4px 16px oklch(0% 0 0 / .5);--shadow-lg: 0 8px 32px oklch(0% 0 0 / .6);--shadow-accent: 0 0 20px oklch(72% .18 65 / .25);--duration-fast: .12s;--duration-normal: .25s;--duration-slow: .4s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--content-max: 720px;--action-bar-height: 44px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--leading-normal);min-height:100dvh}h1,h2,h3{font-family:var(--font-body);font-weight:400;line-height:var(--leading-tight)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}#app{display:flex;flex-direction:column;min-height:100dvh}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-ui);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out);white-space:nowrap}.btn-primary{background:var(--color-accent);color:#050302;border-color:var(--color-accent)}.btn-primary:hover{background:#ff9d20;background:oklch(78% .18 65);border-color:#ff9d20;border-color:oklch(78% .18 65)}.btn-ghost{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-ghost:hover{background:var(--color-surface-2);border-color:#4f5661}.btn-danger{background:transparent;color:var(--color-danger);border-color:var(--color-danger)}.btn-danger:hover{background:#ee343b26}.btn:disabled,.btn[aria-disabled=true]{opacity:.38;cursor:not-allowed;pointer-events:none}.input{width:100%;padding:var(--space-3) var(--space-4);background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-ui);font-size:var(--text-base);outline:none;transition:border-color var(--duration-fast) var(--ease-out)}.input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #e88c0033;box-shadow:0 0 0 3px oklch(72% .18 65 / .2)}.input::placeholder{color:var(--color-text-muted)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}.visibility-badge{display:inline-block;font-size:var(--text-xs);font-weight:600;padding:2px var(--space-2);border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0}.visibility-badge.public{background:#008a2326;background:oklch(55% .2 145 / .15);color:#45ba50;border:1px solid oklch(55% .2 145 / .35)}.visibility-badge.private{background:#7171711f;color:var(--color-text-muted);border:1px solid oklch(55% 0 0 / .25)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);border:1px solid transparent}.alert-error{background:#ee343b1f;border-color:#ee343b66;color:#ffa098;color:oklch(80% .15 25)}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.text-muted{color:var(--color-text-muted)}.text-accent{color:var(--color-accent)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.builder-page{display:grid;grid-template-columns:1fr 380px;grid-template-rows:auto 1fr;height:100dvh;overflow:hidden}.builder-header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.builder-header h1{font-size:var(--text-xl);color:var(--color-accent)}.builder-chat{display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--color-border)}.chat-messages{flex:1;overflow-y:auto;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-5);scroll-behavior:smooth}.chat-bubble{max-width:80%;padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);font-size:var(--text-sm);line-height:var(--leading-loose)}.chat-bubble.user{align-self:flex-end;background:var(--color-accent);color:#050302;border-bottom-right-radius:var(--radius-sm)}.chat-bubble.assistant{align-self:flex-start;background:var(--color-surface-2);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm)}.chat-bubble.assistant p{margin:0 0 var(--space-2)}.chat-bubble.assistant p:last-of-type{margin-bottom:0}.chat-bubble.assistant ul,.chat-bubble.assistant ol{margin:var(--space-2) 0;padding-left:var(--space-5)}.chat-bubble.assistant li{margin-bottom:var(--space-1)}.chat-bubble.assistant strong{color:var(--color-text)}.chat-bubble.assistant em{opacity:.85}.chat-bubble.assistant h1,.chat-bubble.assistant h2,.chat-bubble.assistant h3{font-size:var(--text-sm);font-weight:600;margin:var(--space-3) 0 var(--space-1);color:var(--color-text)}.chat-bubble.assistant code{font-family:monospace;font-size:.9em;background:#0003;padding:1px 4px;border-radius:3px}.chat-follow-ups{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.chat-follow-up-btn{padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--color-accent-2);color:var(--color-accent);border-radius:var(--radius-full);font-size:var(--text-xs);cursor:pointer;transition:background var(--duration-fast)}.chat-follow-up-btn:hover{background:#e88c001a;background:oklch(72% .18 65 / .1)}.chat-input-row{display:flex;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);background:var(--color-surface)}.chat-input-row textarea{flex:1;resize:none;height:80px;padding:var(--space-3) var(--space-4);background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-ui);font-size:var(--text-sm);outline:none;transition:border-color var(--duration-fast)}.chat-input-row textarea:focus{border-color:var(--color-accent)}.thinking-indicator{display:flex;gap:4px;margin-bottom:8px}.thinking-dot{width:8px;height:8px;border-radius:50%;background-color:var(--color-accent);opacity:.6;animation:thinking-pulse 1.4s ease-in-out infinite}.thinking-dot:nth-child(2){animation-delay:.2s}.thinking-dot:nth-child(3){animation-delay:.4s}.thinking-text{font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic}.progress-bar{width:100%;height:4px;background-color:var(--color-border);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background-color:var(--color-accent);border-radius:2px;width:0%;transition:width .3s ease}.world-preview{overflow-y:auto;padding:var(--space-6);background:var(--color-surface)}.world-preview h2{font-size:var(--text-xs);color:var(--color-text-muted);font-family:var(--font-ui);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.raw-json{font-family:monospace;font-size:var(--text-xs);line-height:1.6;color:var(--color-text-muted);white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.world-section{margin-bottom:var(--space-6)}.world-section h3{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:600;color:var(--color-accent);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.06em}.world-section p,.world-section li{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-loose)}.world-section ul{list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}.world-section li:before{content:"▸ ";color:var(--color-accent)}.ready-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:#31aa4026;border:1px solid oklch(65% .18 145 / .4);border-radius:var(--radius-full);color:var(--color-success);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.finalize-btn{width:100%;margin-top:var(--space-6);padding:var(--space-4);font-size:var(--text-base)}.player-page{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.player-body{flex:1;display:flex;overflow:hidden}.player-main{flex:1;display:flex;flex-direction:column;overflow-y:auto}.player-scene-history{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-6)}.history-scene-container{display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border)}.history-scene-container.current-scene{border-bottom:none;padding-bottom:0}.history-scene-container:last-child{border-bottom:none}.history-narration{font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-muted)}.history-narration p{margin:0 0 var(--space-2)}.history-narration p:last-child{margin-bottom:0}.rate-limit-notice{font-size:var(--text-xs);color:var(--color-text-muted);padding:var(--space-1) var(--space-2);opacity:.75}.scene-image-container{margin:var(--space-4) 0;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border);max-width:480px}.scene-image{width:100%;height:auto;display:block;cursor:pointer;transition:opacity .15s ease}.scene-image:hover{opacity:.88}.scene-image-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:pointer}.scene-image-fullscreen img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:var(--radius-lg);box-shadow:0 8px 48px #0009}.chosen-action-container{margin-top:var(--space-4)}.chosen-action{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic;max-width:80%;margin-left:auto;opacity:.9}.action-arrow{color:var(--color-accent);font-weight:700}.player-current-scene{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);margin-top:var(--space-3);border-left:3px solid var(--color-accent)}.player-current-scene .scene-narration{font-size:var(--text-lg);line-height:var(--leading-loose)}.player-current-scene .scene-narration p{margin:0 0 var(--space-3)}.player-current-scene .scene-narration p:last-child{margin-bottom:0}.current-scene-display{font-size:var(--text-lg)!important;line-height:var(--leading-loose)!important}.current-scene-display p{margin:0 0 var(--space-3)!important}.current-scene-display p:last-child{margin-bottom:0!important}.player-stats-sidebar{width:280px;flex-shrink:0;border-left:1px solid var(--color-border);overflow-y:auto;background:var(--color-surface);padding:var(--space-5)}@media(max-width:768px){.player-stats-sidebar{display:none}}.sidebar-section{margin-bottom:var(--space-6)}.sidebar-section-title{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:var(--space-3)}.sidebar-character{padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.sidebar-character:last-child{border-bottom:none}.sidebar-char-name{font-size:var(--text-sm);font-weight:600;color:var(--color-text);margin-bottom:var(--space-1)}.sidebar-char-goal{font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic}.sidebar-tag{display:inline-block;padding:0 var(--space-2);background:#e88c0026;background:oklch(72% .18 65 / .15);color:var(--color-accent);border-radius:var(--radius-sm);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;vertical-align:middle;margin-left:var(--space-1)}.sidebar-world-info{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--leading-loose)}.sidebar-world-setting{margin-top:var(--space-1)}.sidebar-event{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}.sidebar-event-icon{flex-shrink:0;font-size:var(--text-sm)}.sidebar-event-title{font-size:var(--text-xs);color:var(--color-text-muted)}.sidebar-location{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.sidebar-location:last-child{border-bottom:none}.sidebar-location-active{border-left:2px solid var(--color-accent);padding-left:var(--space-3);margin-left:calc(var(--space-3) * -1)}.sidebar-location-name{font-size:var(--text-sm);font-weight:600;color:var(--color-text);margin-bottom:var(--space-1)}.sidebar-location-active .sidebar-location-name{color:var(--color-accent)}.sidebar-location-desc{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--leading-normal)}.sidebar-concept{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.sidebar-concept:last-child{border-bottom:none}.sidebar-concept-name{font-size:var(--text-sm);font-weight:600;color:var(--color-text);margin-bottom:var(--space-1)}.sidebar-concept-desc{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--leading-normal)}.sidebar-toggle-btn{display:flex;align-items:center;gap:var(--space-2);background:none;border:none;padding:0;cursor:pointer;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em;font-size:var(--text-xs);font-weight:700;font-family:var(--font-ui);width:100%;text-align:left}.sidebar-toggle-btn:hover{color:var(--color-text)}.sidebar-toggle-icon{font-size:10px;flex-shrink:0}.sidebar-ws-row{display:flex;gap:var(--space-3);padding:var(--space-1) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-xs);align-items:baseline}.sidebar-ws-row:last-child{border-bottom:none}.sidebar-ws-key{color:var(--color-text-muted);font-family:var(--font-mono);flex-shrink:0;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-ws-value{color:var(--color-text);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-topbar{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.player-topbar-title{font-family:var(--font-body);font-size:var(--text-lg);color:var(--color-accent)}.player-scene-area{flex:1;max-width:var(--content-max);width:100%;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-4)}.scene-narration{font-family:var(--font-body);font-size:var(--text-lg);line-height:var(--leading-loose);color:var(--color-text);min-height:200px}.scene-narration p{margin-bottom:var(--space-5)}.scene-thinking{padding:var(--space-6) 0;display:flex;flex-direction:column;gap:var(--space-3)}.scene-thinking-dots{display:flex;gap:6px}.scene-thinking-dots .thinking-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent);opacity:.6;animation:thinking-pulse 1.4s ease-in-out infinite}.scene-thinking-dots .thinking-dot:nth-child(2){animation-delay:.2s}.scene-thinking-dots .thinking-dot:nth-child(3){animation-delay:.4s}@keyframes thinking-pulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.scene-thinking-label{font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic}.scene-thinking-progress{display:flex;flex-direction:column;gap:var(--space-1);max-width:320px}.scene-progress-bar{width:100%;height:4px;background:var(--color-border);border-radius:2px;overflow:hidden}.scene-progress-fill{height:100%;background:var(--color-accent);border-radius:2px;width:0%;transition:width .3s ease}.scene-progress-text{font-size:11px;color:var(--color-text-muted)}.milestone-banner{margin:var(--space-6) 0;padding:var(--space-4) var(--space-5);background:linear-gradient(135deg,#e88b0014,#e88b0008);background:linear-gradient(135deg,color(xyz 0.437 0.355 0.019 / 0.078),color(xyz 0.437 0.355 0.019 / 0.031));border:1px solid oklch(72% .18 65 / .3);border-radius:var(--radius-lg);display:flex;align-items:center;gap:var(--space-4);animation:slide-in var(--duration-slow) var(--ease-out)}.milestone-banner-icon{font-size:var(--text-2xl);flex-shrink:0}.milestone-banner-text strong{display:block;color:var(--color-accent);font-family:var(--font-body);font-size:var(--text-base)}.milestone-banner-text span{font-size:var(--text-sm);color:var(--color-text-muted)}@keyframes slide-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.history-milestones{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.history-milestone-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:#e88c0014;background:oklch(72% .18 65 / .08);border:1px solid oklch(72% .18 65 / .25);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--color-accent)}.milestone-badge-icon{font-size:var(--text-sm);flex-shrink:0}.milestone-badge-title{font-family:var(--font-body)}.action-bar{position:sticky;bottom:0;z-index:50;width:100%;height:var(--action-bar-height);background:var(--color-surface);border-top:1px solid var(--color-border);display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);box-shadow:0 -2px 12px #0003}.action-bar-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em;margin-right:var(--space-2);flex-shrink:0}.action-bar-btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-xs);font-family:var(--font-ui);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.action-bar-btn:not(:disabled):hover{background:var(--color-surface-2);color:var(--color-text);border-color:#4f5661}.action-bar-btn:disabled{opacity:.35;cursor:not-allowed}.action-bar-btn.active{color:var(--color-accent);border-color:#e88c0080;border-color:oklch(72% .18 65 / .5);background:#e88c0014;background:oklch(72% .18 65 / .08)}.choices-section{padding:var(--space-4) var(--space-4) var(--space-4);max-width:var(--content-max);width:100%;margin:0 auto}.choices-list{display:flex;flex-direction:column;gap:var(--space-3)}.choice-btn{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;text-align:left;transition:background var(--duration-fast),border-color var(--duration-fast),box-shadow var(--duration-fast);width:100%}.choice-btn:hover:not(:disabled){background:var(--color-surface-2);border-color:var(--color-accent);box-shadow:var(--shadow-accent)}.choice-btn:disabled{opacity:.5;cursor:not-allowed}.choice-btn.chosen{border-color:var(--color-accent);background:#e88c0014;background:oklch(72% .18 65 / .08)}.choice-text{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text)}.choice-hint{font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic}.free-action-section{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.free-action-row{display:flex;gap:var(--space-3);align-items:center}.free-action-input{flex:1;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);transition:border-color var(--duration-fast)}.free-action-input:focus{outline:none;border-color:var(--color-accent)}.free-action-input:disabled{opacity:.5;cursor:not-allowed}.chosen-custom-action{padding:var(--space-3) var(--space-4);font-family:var(--font-body);font-size:var(--text-base);color:var(--color-accent);font-style:italic;border:1px solid oklch(72% .18 65 / .3);background:#e88c000f;background:oklch(72% .18 65 / .06);border-radius:var(--radius-md)}.stat-panel-popover{position:absolute;top:calc(100% + var(--space-2));right:var(--space-4);min-width:240px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-lg);z-index:200;animation:pop-in var(--duration-fast) var(--ease-out)}.stat-panel-popover h3{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:var(--space-4)}.stat-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-sm)}.stat-row:last-child{border-bottom:none}.stat-name{color:var(--color-text-muted)}.stat-value{color:var(--color-accent);font-weight:600;font-variant-numeric:tabular-nums}@keyframes pop-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.stat-changes-popover{position:absolute;bottom:calc(var(--action-bar-height) + var(--space-2));left:var(--space-6);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);min-width:220px;box-shadow:var(--shadow-lg);z-index:200;animation:pop-in var(--duration-fast) var(--ease-out)}.stat-changes-popover h3{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:var(--space-4)}.stat-change-row{display:grid;grid-template-columns:1fr auto;gap:var(--space-2) var(--space-4);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-sm);align-items:start}.stat-change-row:last-child{border-bottom:none}.stat-change-reason{color:var(--color-text-muted);grid-column:1 / -1;font-style:italic;font-size:var(--text-xs)}.stat-change-delta{font-weight:700;font-variant-numeric:tabular-nums}.stat-change-delta.positive{color:var(--color-success)}.stat-change-delta.negative{color:var(--color-danger)}.stat-change-delta.neutral{color:var(--color-accent)}.history-drawer{position:fixed;top:0;left:0;width:360px;max-width:90vw;height:100dvh;background:var(--color-surface);border-right:1px solid var(--color-border);box-shadow:4px 0 24px #0006;z-index:300;display:flex;flex-direction:column;animation:slide-in-left var(--duration-normal) var(--ease-out)}@keyframes slide-in-left{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.history-drawer[hidden]{display:none}.history-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-5) var(--space-4);border-bottom:1px solid var(--color-border);flex-shrink:0}.history-drawer-header h2{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin:0}.history-list{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.history-scene-card{padding:var(--space-4) var(--space-4);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.history-scene-number{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);margin-bottom:var(--space-2)}.history-scene-preview{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-loose);margin-bottom:var(--space-2)}.history-scene-choice{font-size:var(--text-xs);color:var(--color-accent);font-style:italic}.rewrite-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:400;display:flex;align-items:center;justify-content:center;animation:fade-in var(--duration-normal) var(--ease-out)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.rewrite-modal{background:var(--color-surface);border:1px solid var(--color-border);border-top:2px solid var(--color-accent);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),0 0 60px #e88c0014;box-shadow:var(--shadow-lg),0 0 60px oklch(72% .18 65 / .08);padding:var(--space-8);width:min(480px,90vw);display:flex;flex-direction:column;gap:var(--space-5);animation:modal-rise var(--duration-normal) var(--ease-out)}@keyframes modal-rise{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.rewrite-modal-title{font-family:var(--font-body);font-size:var(--text-lg);color:var(--color-text);margin:0}.rewrite-modal-textarea{width:100%;box-sizing:border-box;padding:var(--space-3) var(--space-4);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);resize:vertical;min-height:90px;transition:border-color var(--duration-fast)}.rewrite-modal-textarea:focus{outline:none;border-color:var(--color-accent)}.rewrite-modal-hint{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:calc(var(--space-2) * -1)}.rewrite-modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.dialogue-speech{color:var(--color-accent);font-weight:500}.scene-narration strong,.history-narration strong{font-weight:700;color:var(--color-text)}.scene-narration em,.history-narration em{font-style:italic;color:var(--color-text-muted)}
