:root{--bg:#0f0f1a;--card:#1a1a2e;--text:#e8e8f0;--text2:#8a8a9e;--accent:#c9a84c;--border:#2a2a3e;--radius:14px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,serif}.app{max-width:520px;min-height:100dvh;margin:0 auto}.sf-header{text-align:center;padding:24px 20px 16px}.sf-header h1{letter-spacing:.5px;margin-bottom:6px;font-size:28px;font-weight:800}.tagline{color:var(--text2);font-size:14px}.btn-primary{background:var(--accent);color:#111;cursor:pointer;border:none;border-radius:12px;padding:12px 28px;font-size:15px;font-weight:700}.btn-secondary{background:var(--card);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:10px;padding:10px 20px;font-size:14px}.btn-text{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:14px}.btn-text:disabled{opacity:.4;cursor:default}.empty-state{text-align:center;color:var(--text2);padding:60px 20px;font-size:15px}.world-select{padding:0 16px}.world-cards{flex-direction:column;gap:14px;margin-top:20px;display:flex}.world-card{border-radius:var(--radius);text-align:left;cursor:pointer;width:100%;color:var(--text);border:2px solid;padding:20px;transition:transform .15s}.world-card:active{transform:scale(.98)}.world-card h2{margin-bottom:4px;font-size:22px}.card-tagline{color:var(--text2);margin-bottom:8px;font-size:13px}.card-desc{color:var(--text2);font-size:13px;line-height:1.5}.saves-btn{width:100%;margin-top:16px}.character-select{padding:0 16px}.character-cards{flex-direction:column;gap:12px;margin-top:16px;display:flex}.character-card{border-radius:var(--radius);text-align:left;cursor:pointer;background:var(--card);width:100%;color:var(--text);border:2px solid;align-items:center;gap:14px;padding:16px;transition:transform .15s;display:flex}.character-card:active{transform:scale(.98)}.char-avatar{flex-shrink:0;font-size:36px}.char-info h3{margin-bottom:2px;font-size:17px}.char-role{color:var(--accent);margin-bottom:4px;font-size:12px}.char-traits{color:var(--text2);font-size:12px;line-height:1.4}.story-engine{flex-direction:column;height:100dvh;display:flex}.story-header{border-bottom:1px solid;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.story-meta{color:var(--text2);font-size:13px}.stats-hud{border-bottom:1px solid var(--border);background:#12121f;flex-shrink:0;gap:8px;padding:10px 16px;display:flex}.stat-item{background:var(--card);border-radius:10px;flex:1;align-items:center;gap:6px;min-width:0;padding:8px 10px;display:flex}.stat-icon{flex-shrink:0;font-size:14px}.stat-label{color:var(--text2);flex-shrink:0;font-size:11px}.stat-bar{background:var(--border);border-radius:3px;flex:1;height:6px;overflow:hidden}.stat-fill{border-radius:3px;height:100%;transition:width .4s}.stat-value{text-align:right;flex-shrink:0;min-width:14px;font-size:12px;font-weight:700}.stat-item.low .stat-fill{background:#e5484d!important}.stat-item.low .stat-value,.stat-item.low .stat-label{color:#e5484d}.story-body{flex:1;padding:16px 16px 80px;overflow-y:auto}.turn-block{margin-bottom:20px}.turn-text{border-left:3px solid;padding:0 0 0 14px;font-size:15px;line-height:1.8}.turn-text p{margin-bottom:8px}.turn-text p:last-child{margin-bottom:0}.choices-block{flex-direction:column;gap:10px;margin-top:14px;display:flex}.choice-btn{text-align:left;cursor:pointer;background:var(--card);width:100%;color:var(--text);border:1px solid;border-radius:10px;align-items:flex-start;gap:8px;padding:12px 14px;font-size:14px;transition:background .15s;display:flex}.choice-btn:active{background:var(--border)}.choice-num{color:var(--accent);flex-shrink:0;font-size:13px;font-weight:800}.choice-text{flex:1}.choice-cost{color:#e5484d;white-space:nowrap;flex-shrink:0;align-self:center;font-size:12px;font-weight:700}.story-loading,.story-error{flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100dvh;padding:20px;display:flex}.story-error{color:#e5484d}.story-error-inline{color:#e5484d;text-align:center;padding:8px 16px;font-size:13px}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.typing-indicator{justify-content:center;gap:6px;padding:8px 0;display:flex}.typing-indicator span{border-radius:50%;width:8px;height:8px;animation:1.4s infinite both blink}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.2}50%{opacity:1}}.ending-block{border-radius:var(--radius);text-align:center;background:var(--card);border:1px solid;flex-direction:column;align-items:center;gap:14px;margin-top:24px;padding:28px 20px;display:flex}.ending-title{letter-spacing:1px;font-size:22px;font-weight:800}.ending-sub{color:var(--text2);font-size:13px}.ending-block .btn-primary{width:100%}.saves-screen{padding:0 16px}.save-list{flex-direction:column;gap:10px;margin-top:16px;display:flex}.save-card{background:var(--card);border:1px solid;border-radius:10px;justify-content:space-between;align-items:center;padding:14px;display:flex}.save-info h3{margin-bottom:2px;font-size:15px}.save-info p{color:var(--text2);font-size:12px}.menu-btns{flex-direction:column;gap:10px;margin-top:16px;display:flex}.menu-btns .btn-secondary{width:100%}.limit-icon{font-size:48px}.limit-title{color:var(--text);font-size:18px;font-weight:800}.limit-sub{color:var(--text2);text-align:center;font-size:14px;line-height:1.5}.story-error .btn-primary{width:80%}.endings-screen{padding:0 16px}.ending-world-list{flex-direction:column;gap:14px;margin-top:16px;display:flex}.ending-world{border-radius:var(--radius);background:var(--card);border:1px solid;padding:16px}.ending-world h3{margin-bottom:12px;font-size:17px}.ending-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.ending-cell{background:var(--bg);border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;display:flex}.ending-cell.locked{opacity:.4}.ending-emoji{font-size:24px}.ending-name{color:var(--text2);font-size:11px}
