:root{--bg: #14110f;--bg-panel: #1f1a16;--bg-panel-alt: #262019;--border: #43392c;--text: #e9dfc9;--text-dim: #a89a80;--accent: #c9a227;--accent-dim: #8a6f1c;--danger: #8f2d2d;--danger-bright: #c0392b;--success: #3d6b35;--hp: #a1332f;--mana: #2f5f8f;--xp: #c9a227;--font: "Georgia", "Iowan Old Style", serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(circle at top,#201a14 0%,var(--bg) 60%);color:var(--text);font-family:var(--font);line-height:1.4}h1,h2,h3,h4{color:var(--accent);font-weight:400;letter-spacing:.02em}a{color:var(--accent)}.page{max-width:1100px;margin:0 auto;padding:24px 20px 64px}.page-loading{padding:48px;text-align:center;color:var(--text-dim)}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:20px 24px;margin-bottom:20px}.navbar{display:flex;align-items:center;gap:24px;padding:12px 24px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.navbar-brand{font-size:1.3em;color:var(--accent);font-weight:700;letter-spacing:.05em}.navbar-links{display:flex;gap:16px;flex:1}.navbar-links a{color:var(--text-dim);text-decoration:none;padding:4px 2px;border-bottom:2px solid transparent}.navbar-links a.active,.navbar-links a:hover{color:var(--text);border-bottom-color:var(--accent)}.navbar-account{display:flex;align-items:center;gap:12px}.navbar-email{color:var(--text-dim);font-size:.9em}.btn{background:var(--bg-panel-alt);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:8px 14px;cursor:pointer;font-family:var(--font);font-size:.95em}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-dim);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent);color:#1a1510}.btn-danger{background:var(--danger);border-color:var(--danger-bright);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-bright)}.btn-small{padding:4px 10px;font-size:.85em}.auth-page{display:flex;justify-content:center;align-items:center;min-height:100vh}.auth-form{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:32px;width:340px;display:flex;flex-direction:column;gap:14px}.auth-form label{display:flex;flex-direction:column;gap:6px;font-size:.9em;color:var(--text-dim)}.auth-form input,.create-character-form input{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:8px 10px;color:var(--text);font-family:var(--font)}.auth-switch{font-size:.85em;color:var(--text-dim);text-align:center;margin:0}.form-error{background:#3a1a1a;border:1px solid var(--danger-bright);color:#f2c4c4;padding:8px 12px;border-radius:4px;font-size:.9em}.character-list{list-style:none;padding:0;margin:0 0 32px;display:flex;flex-direction:column;gap:8px}.character-list-item a{display:flex;justify-content:space-between;padding:14px 18px;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;text-decoration:none;color:var(--text)}.character-list-item a:hover{border-color:var(--accent)}.character-name{font-weight:700}.character-meta{color:var(--text-dim);font-size:.85em}.create-character-form{display:flex;flex-direction:column;gap:10px;max-width:340px}.create-character-form label{display:flex;flex-direction:column;gap:6px;font-size:.9em;color:var(--text-dim)}.empty-state{color:var(--text-dim);font-style:italic}.bar-row{margin:8px 0}.bar-label{font-size:.8em;color:var(--text-dim);margin-bottom:2px}.bar-track{position:relative;height:20px;background:#100d0a;border:1px solid var(--border);border-radius:3px;overflow:hidden}.bar-fill{height:100%;transition:width .2s ease}.bar-fill--hp{background:var(--hp)}.bar-fill--mana{background:var(--mana)}.bar-fill--enemy-hp{background:var(--danger-bright)}.bar-fill--xp{background:var(--xp)}.bar-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.75em;color:#fff;text-shadow:0 0 3px #000}.character-summary-grid{display:flex;gap:24px;margin:8px 0 16px;color:var(--text-dim)}.hub-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px;margin-top:20px}.plain-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.quest-status{text-transform:uppercase;font-size:.75em;padding:1px 6px;border-radius:3px}.quest-status--available{background:#33342a;color:#cfd08a}.quest-status--active{background:#2f4a5c;color:#a9d4ea}.quest-status--completed{background:#2f5c3a;color:#a9eab7}.location-panel h2{margin-top:0}.location-description{color:var(--text-dim)}.location-danger{font-size:.85em;color:var(--text-dim)}.present-players{font-size:.85em;color:var(--accent)}.travel-buttons{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.explore-row{margin-top:16px}.npc-panel{margin:16px 0;padding:14px 16px;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:6px}.npc-role{color:var(--text-dim);font-size:.85em;margin-top:-8px}.npc-dialogue{font-style:italic}.combat-page{max-width:640px;margin:0 auto}.combat-panel h1{text-align:center}.combat-log{height:220px;overflow-y:auto;background:#100d0a;border:1px solid var(--border);border-radius:4px;padding:10px 14px;margin:16px 0;font-size:.9em}.combat-log-line{padding:2px 0;border-bottom:1px dashed #2a231b}.combat-actions{display:flex;gap:12px;justify-content:center}.combat-result{text-align:center;padding:16px;border-radius:6px;margin-bottom:12px}.combat-result--won{background:#1e3a22;border:1px solid var(--success)}.combat-result--lost{background:#3a1e1e;border:1px solid var(--danger-bright)}.combat-result--fled{background:#33301e;border:1px solid var(--accent-dim)}.achievement-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px;margin-bottom:32px}.achievement-item{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:12px 16px}.achievement-name{font-weight:700;color:var(--accent)}.achievement-rank{color:var(--text-dim);font-weight:400}.achievement-date{font-size:.8em;color:var(--text-dim)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.stat-tile{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:14px;text-align:center}.stat-value{font-size:1.6em;color:var(--accent)}.stat-label{font-size:.8em;color:var(--text-dim)}.ledger-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:10px}.ledger-entry{background:var(--bg-panel);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:4px;padding:10px 16px}.ledger-entry--discovery{border-left-color:#4a90d9}.ledger-entry--combat{border-left-color:var(--danger-bright)}.ledger-entry--progression{border-left-color:var(--accent)}.ledger-entry--quest{border-left-color:#8a5cd9}.ledger-entry--world{border-left-color:#7a7a7a}.ledger-entry--achievement{border-left-color:#45c17a}.ledger-entry-header{display:flex;align-items:center;gap:10px;font-size:.75em;color:var(--text-dim);margin-bottom:4px}.ledger-category{text-transform:uppercase;letter-spacing:.05em}.ledger-first-badge{background:var(--accent);color:#1a1510;padding:0 6px;border-radius:3px;font-weight:700}.ledger-date{margin-left:auto}.ledger-headline{font-weight:700}.ledger-body{color:var(--text-dim);font-size:.9em}.ledger-character{font-size:.8em;color:var(--accent-dim);margin-top:4px}
