:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.login-container{box-sizing:border-box;width:100%;max-width:400px;margin:5rem auto;padding:2rem;background:var(--primary-color);color:var(--text-color);border-radius:10px;box-shadow:0 0 20px var(--accent-color)}.login-container h1{text-align:center;margin-bottom:1.5rem}.login-container input{box-sizing:border-box;width:100%;padding:.75rem;margin-bottom:1rem;border:none;border-radius:6px;font-size:1rem}.login-container button{box-sizing:border-box;width:100%;padding:.75rem;background:var(--accent-color);color:var(--text-color);font-weight:700;border:none;border-radius:6px;cursor:pointer;transition:background .3s ease}.login-container button:hover:not(:disabled){background:#a00000}.login-container .error{color:#f66;font-weight:600;text-align:center}.login-container .switch-mode{margin-top:1rem;text-align:center;color:var(--text-color)}.login-container .switch-mode a{white-space:nowrap}.chat-room{max-width:min(1400px,96vw);margin:1rem auto 3rem;display:grid;grid-template-columns:3fr 1fr;gap:1rem;background:var(--primary-color);border-radius:12px;box-shadow:0 0 20px var(--accent-color);padding:1rem}.exit-btn{grid-column:1 / -1;background:transparent;border:none;color:var(--accent-color);font-weight:700;cursor:pointer;margin-bottom:.5rem;text-align:left}.exit-btn:hover{text-decoration:underline}.chat-container{display:flex;flex-direction:column;height:70vh;background:var(--secondary-color);border-radius:12px;padding:1rem;overflow:hidden}.messages{flex-grow:1;overflow-y:auto;padding-right:1rem;font-family:Lora,EB Garamond,Georgia,serif;color:var(--primary-color);background:#f4ecd8;border-radius:12px;box-shadow:inset 0 0 10px #c9b37e}.message{margin-bottom:.75rem;padding:.3rem .6rem;border-radius:6px;background:#e3d9c6}.message.mine{background:#bfa87e;text-align:right}.dm-message{font-style:italic;color:#7b4e1e}.roll-message{border:1px dashed #8a6e3a;font-family:Courier New,Courier,monospace}.session-empty-hint{font-style:italic;color:#7c6f57;text-align:center;padding:1rem .6rem}.dm-thinking{font-style:italic;color:#8a6e3a;padding:.3rem .6rem}.dm-unavailable{color:#a33;background:#fdecec;border:1px solid #f3c0c0;border-radius:6px;padding:.4rem .6rem;margin:.3rem 0}.roll-tools-toggle{margin-top:8px;background:transparent;border:1px dashed #8a6e3a;color:var(--primary-color);font-size:.85rem}.roll-controls{display:flex;gap:8px;margin-top:.5rem}.roll-controls input{width:90px;border-radius:6px;padding:4px 8px}.party-sidebar{background:var(--secondary-color);border-radius:12px;padding:1rem;color:var(--primary-color)}.party-member{margin-bottom:1rem}.party-member-name{font-weight:700;margin-bottom:.2rem}.party-member-race-class{font-weight:400;font-size:.85rem;color:#a08a5f}.hp-bar{height:8px;border-radius:4px;background:#4a3a24;overflow:hidden}.hp-bar-fill{height:100%;background:#b3452e}.hp-text{font-size:.8rem;margin-top:.2rem}.hp-controls{display:flex;gap:6px;margin-top:.3rem}.ready-badge{display:inline-block;font-size:.75rem;font-weight:600;color:#8a6e3a;margin-top:.2rem}.ready-badge.ready{color:#4caf50}.presence-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#7a6a4e;margin-right:6px}.presence-dot.online{background:#4caf50}.turn-badge{color:#b3452e;font-weight:700}.load-more-btn{display:block;width:100%;margin-bottom:.75rem;background:transparent;border:1px dashed #8a6e3a;border-radius:6px;color:#7b4e1e;cursor:pointer;padding:.3rem}.initiative-order{margin:.5rem 0;padding-left:1.2rem}.initiative-order .current-turn{font-weight:700;color:#b3452e}.sender{font-weight:700;font-size:.9rem;margin-bottom:.2rem}.content{white-space:pre-wrap;font-size:1rem}.character-sheet h2{margin-bottom:0}.character-subtitle{font-style:italic;margin-bottom:.5rem}.character-field{margin-bottom:1rem}.character-stats-row{display:flex;gap:1.5rem;margin:1rem 0}.character-abilities{width:100%;margin-bottom:1rem;border-collapse:collapse}.character-abilities th,.character-abilities td{padding:.4rem;text-align:center;border-bottom:1px solid currentColor}.character-notes{white-space:pre-wrap;background:#00000026;border-radius:8px;padding:.75rem}.character-next-steps{margin-top:1rem}.card-list{max-width:600px;margin:2rem auto;padding:1rem;background:var(--primary-color);color:var(--secondary-color);border-radius:10px;box-shadow:0 0 15px var(--accent-color)}.card-list-hero{display:block;max-width:200px;width:100%;height:auto;margin:0 auto 1rem;border-radius:12px;border:2px solid #bfa76a;box-shadow:0 4px 16px #18151077}.card-list h2{margin-bottom:1rem;text-align:center}.card-list h2,.card-list h3,.card-list a,.card-list a:hover{color:var(--secondary-color)}.card-list ul{list-style:none;padding:0;margin:0}.card-item{background:var(--secondary-color);padding:1rem;margin-bottom:.75rem;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;color:#23291a}.card-item:hover,.card-item:focus{background:#f3e5b1}.card-item .card-title{font-weight:700;color:var(--accent-color)}.card-item .card-title:hover{color:#7c0a02}.card-meta{font-size:.95em;color:#7c6f57;margin-top:.25em}.character-page{max-width:640px}.character-form{display:flex;flex-direction:column;gap:1.25rem}.field{display:flex;flex-direction:column;gap:.35rem;flex:1;min-width:140px}.field label{font-weight:700;font-size:.9rem}.character-form .field input,.character-form .field select,.character-form .field textarea{box-sizing:border-box;width:100%;margin:0;padding:.65rem;border:none;border-radius:6px;font-size:1rem;font-family:inherit}.name-field-row{display:flex;gap:.5rem}.name-field-row input{flex:1}.character-form button.name-generate-button{flex-shrink:0;width:auto}.field-row{display:flex;gap:1rem;flex-wrap:wrap}.field-level{flex:0 1 90px;min-width:90px}.field-group{display:flex;flex-direction:column;gap:.5rem}.field-group-label{font-weight:700}.ability-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem}.ability-field{min-width:0}.ability-field label{text-align:center}.button-row{display:flex;gap:8px;flex-wrap:wrap}.submit-button{width:100%}@media (max-width: 480px){.ability-grid{grid-template-columns:repeat(3,1fr)}}.app-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(90deg,#23291a 80%,#a41313);padding:.75rem 1.5rem;box-shadow:0 4px 24px #2c241280;border-bottom:3px solid #bfa76a;position:relative;z-index:10;border-radius:0 0 18px 18px}.header-left,.logo-title{display:flex;align-items:center;gap:.75rem;min-width:0}.logo-title:hover{text-decoration:none}.logo-title>div{min-width:0}.logo-title img{height:clamp(56px,16vw,120px);width:auto;flex-shrink:0;background:none;object-fit:contain;filter:drop-shadow(0 3px 6px #18151077)}.logo-title h1{font-size:clamp(1.75rem,7vw,4rem);margin:0;color:var(--secondary-color);text-shadow:0 2px 8px #18151055;white-space:nowrap}.subtitle{font-size:clamp(.8rem,3vw,1.5rem);font-style:italic;color:#bfa76a;margin-top:-.3em;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.auth-links{display:flex;align-items:center;gap:1.25rem;flex-shrink:0}.auth-links a{color:var(--secondary-color);font-family:Lora,EB Garamond,serif}.auth-links a:hover{color:var(--accent-color)}.menu-toggle{background:none;border:none;cursor:pointer;display:flex;align-items:center;font-size:1.75rem;padding:.35rem;line-height:1}.profile-toggle{background:none;border:none;cursor:pointer;display:flex;align-items:center;padding:0}.avatar-initials{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;background:#bfa76a;color:#23291a;font-family:Lora,EB Garamond,serif;font-weight:700;font-size:.95rem;letter-spacing:.5px}.menu,.profile-dropdown{position:absolute;top:100%;background:var(--primary-color);border-radius:0 0 12px 12px;box-shadow:0 8px 24px #2c2412b3;padding:1.2rem 1.5rem;display:none;flex-direction:column;gap:1rem;min-width:220px;border:var(--border)}.menu{left:0}.profile-dropdown{right:0}.menu.open,.profile-dropdown.open{display:flex}.profile-dropdown span{color:var(--accent-color);margin-bottom:.5rem;font-family:IM Fell English SC,serif;font-size:1.1rem}.menu a,.menu button,.profile-dropdown button{color:var(--secondary-color);background:none;border:none;text-align:left;font-size:1.1rem;cursor:pointer;padding:.25rem 0;font-family:Lora,EB Garamond,serif;font-weight:700;transition:color .2s}.menu a:hover,.menu button:hover,.profile-dropdown button:hover{color:var(--accent-color)}.home-hero{display:block;max-width:320px;width:100%;height:auto;margin:0 auto 1.5rem;border-radius:12px;border:2px solid #bfa76a;box-shadow:0 4px 16px #18151077}:root{--primary-color: #23291a;--secondary-color: #e9d8a6;--accent-color: #a41313;--text-color: #f8f5f2;--background-color: #181510;--parchment: #f5ecd6;--shadow: 0 4px 24px rgba(44, 36, 18, .5);--border: 2px solid #bfa76a}html,body,#root{height:100%;margin:0;padding:0;width:100%}body{margin:0;font-family:Lora,EB Garamond,serif;background:var(--background-color);color:var(--text-color);background-image:radial-gradient(ellipse at 50% 0%,#23291a,#181510);min-height:100vh}.app-container{display:flex;flex-direction:column;min-height:100vh}.app-main{flex:1;background:var(--parchment);color:#3a2c13;border-radius:18px;box-shadow:var(--shadow);border:var(--border);margin:2rem 0;padding:2rem 1.5rem;font-size:1.1rem}.wrapper{width:100%;max-width:960px;margin:0 auto;padding:0 1rem;box-sizing:border-box}h1,h2,h3,.logo-title h1{font-family:IM Fell English SC,serif;color:var(--accent-color);letter-spacing:1px;margin-top:0}a{color:var(--accent-color);text-decoration:none;font-weight:700;transition:color .2s}a:hover{color:#7c0a02;text-decoration:underline}button{font-family:inherit;background:var(--accent-color);color:var(--parchment);border:var(--border);border-radius:6px;padding:.5em 1.2em;font-size:1rem;cursor:pointer;box-shadow:0 2px 8px #2c241233;transition:background .2s,color .2s}button:hover{background:#7c0a02;color:var(--secondary-color)}
