:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.auth-container{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:16px;width:100%;max-width:400px;padding:40px;box-shadow:0 8px 32px #0000004d}.auth-card h1{color:#e8d5b7;text-align:center;margin:0 0 8px;font-size:28px;font-weight:600}.auth-subtitle{color:#fff9;text-align:center;margin:0 0 32px;font-size:14px}.auth-error{color:#ef4444;background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;margin-bottom:24px;padding:12px 16px;font-size:14px}.form-group label{color:#fffc;margin-bottom:8px;font-size:14px;font-weight:500;display:block}.form-group input{color:#fff;box-sizing:border-box;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;width:100%;padding:12px 16px;font-size:16px;transition:all .2s}.form-group input:focus{background:#ffffff14;border-color:#e8d5b7;outline:none;box-shadow:0 0 0 3px #e8d5b71a}.form-group input::placeholder{color:#ffffff4d}.auth-button{color:#1a1a2e;cursor:pointer;background:linear-gradient(135deg,#e8d5b7 0%,#d4b896 100%);border:none;border-radius:8px;width:100%;margin-top:8px;padding:14px;font-size:16px;font-weight:600;transition:all .2s}.auth-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #e8d5b74d}.auth-button:disabled{opacity:.6;cursor:not-allowed}.auth-footer{text-align:center;color:#fff9;margin-top:24px;font-size:14px}.auth-footer a{color:#e8d5b7;font-weight:500;text-decoration:none}.auth-footer a:hover{text-decoration:underline}@media (width<=480px){.auth-card{margin:1rem;padding:1.5rem}.auth-card h1{font-size:1.5rem}.auth-subtitle{font-size:.9rem}.form-group input{padding:.625rem .75rem}.auth-button{padding:.75rem;font-size:.95rem}}.dashboard{color:#e8e8e8;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);min-height:100vh}.dashboard-loading{color:#a0a0a0;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-header{background:#0000004d;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.header-left{align-items:center;gap:1.5rem;display:flex}.dashboard-header h1{background:linear-gradient(90deg,#6366f1,#a855f7);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:1.5rem}.welcome-text{color:#a0a0a0;font-size:.9rem}.logout-button{color:#a0a0a0;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:6px;padding:.5rem 1rem;transition:all .2s}.logout-button:hover{color:#e8e8e8;background:#ffffff1a}.dashboard-main{max-width:1200px;margin:0 auto;padding:2rem}.campaigns-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.campaigns-header h2{color:#e8e8e8;margin:0;font-size:1.5rem}.campaign-actions{gap:.75rem;display:flex}.dashboard-error{color:#fca5a5;background:#ef444433;border:1px solid #ef444480;border-radius:8px;margin-bottom:1.5rem;padding:1rem}.empty-icon{margin-bottom:1rem;font-size:4rem}.empty-state h3{color:#e8e8e8;margin:0 0 .5rem;font-size:1.25rem}.campaign-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;display:grid}.campaign-card{color:inherit;background:#0000004d;border:1px solid #ffffff1a;border-radius:12px;gap:1rem;padding:1.25rem;text-decoration:none;transition:all .2s;display:flex}.campaign-card:hover{border-color:#6366f180;transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.campaign-icon{flex-shrink:0;font-size:2rem}.campaign-info{flex:1;min-width:0}.campaign-info h3{color:#e8e8e8;white-space:nowrap;text-overflow:ellipsis;margin:0 0 .5rem;font-size:1.1rem;overflow:hidden}.campaign-info p{color:#a0a0a0;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 .75rem;font-size:.85rem;display:-webkit-box;overflow:hidden}.campaign-meta{align-items:center;gap:.75rem;display:flex}.role-badge{color:#a5b4fc;background:#6366f133;border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:600}.player-count{color:#6b7280;font-size:.8rem}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal h2{color:#e8e8e8;margin:0 0 1.5rem;font-size:1.25rem}.modal .form-group{margin-bottom:1.25rem}.modal .form-group label{color:#a0a0a0;margin-bottom:.5rem;font-size:.9rem;display:block}.modal .form-group input,.modal .form-group textarea{color:#e8e8e8;box-sizing:border-box;background:#0000004d;border:1px solid #ffffff1a;border-radius:8px;width:100%;padding:.75rem;font-size:.95rem}.modal .form-group input:focus,.modal .form-group textarea:focus{border-color:#6366f1;outline:none}.modal .form-group textarea{resize:vertical;font-family:inherit}.form-hint{color:#6b7280;margin:.5rem 0 0;font-size:.8rem}.auth-container .auth-card{background:#1e1e2e}.auth-container .auth-card h1{background:linear-gradient(90deg,#6366f1,#a855f7);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.auth-container input{color:#e8e8e8;background:#0000004d;border:1px solid #ffffff1a}.auth-container input:focus{border-color:#6366f1;outline:none}.auth-container .auth-button{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.auth-container .auth-footer a{color:#a5b4fc}@media (width<=600px){.dashboard-header{text-align:center;flex-direction:column;gap:1rem}.dashboard-header h1{font-size:1.25rem}.header-actions{justify-content:center;width:100%}.campaign-grid{grid-template-columns:1fr}.campaign-card{padding:1rem}.campaign-card-header{flex-direction:column;align-items:flex-start;gap:.5rem}.campaign-actions{flex-direction:row;width:100%}.campaign-actions button{flex:1;padding:.5rem;font-size:.8rem}.modal{margin:.5rem;padding:1.5rem}.modal h2{font-size:1.1rem}}.game-page{color:#e8e8e8;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);min-height:100vh}.error-banner{color:#fff;background:#ef4444;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-weight:500;display:flex}.error-banner button{color:#fff;cursor:pointer;background:0 0;border:none;padding:0 .5rem;font-size:1.25rem}.error-banner button:hover{opacity:.8}.game-loading{color:#a0a0a0;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;display:flex}.spinner{border:3px solid #333;border-top-color:#6366f1;border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}.game-header{background:#0000004d;border-bottom:1px solid #ffffff1a;align-items:center;gap:1rem;padding:1rem 2rem;display:flex}.back-button{color:#a0a0a0;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:6px;padding:.5rem 1rem;transition:all .2s}.back-button:hover{color:#e8e8e8;background:#ffffff1a}.game-header h1{flex:1;margin:0;font-size:1.25rem}.user-badge{color:#a5b4fc;background:#6366f133;border-radius:4px;padding:.25rem .75rem;font-size:.85rem}.game-main{max-width:1000px;margin:0 auto;padding:2rem}.characters-section{margin-bottom:2rem}.section-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.section-header h2{margin:0;font-size:1.25rem}.btn{cursor:pointer;border:none;border-radius:8px;padding:.625rem 1.25rem;font-size:.9rem;font-weight:500;transition:all .2s}.btn-primary{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #6366f166}.btn-secondary{color:#e8e8e8;background:#ffffff1a;border:1px solid #fff3}.btn-secondary:hover{background:#ffffff26}.btn-small{padding:.375rem .75rem;font-size:.8rem}.btn:disabled{opacity:.5;cursor:not-allowed}.empty-state{text-align:center;background:#0003;border:2px dashed #ffffff1a;border-radius:12px;padding:3rem}.empty-state p{color:#a0a0a0;margin:0}.character-list{flex-direction:column;gap:1rem;display:flex}.character-card{background:#0000004d;border:1px solid #ffffff1a;border-radius:12px;align-items:center;gap:1.25rem;padding:1.25rem;transition:all .2s;display:flex}.character-card:hover{border-color:#6366f180}.character-avatar{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:50px;height:50px;font-size:1.25rem;font-weight:600;display:flex}.character-info{flex:1;min-width:0}.character-info h3{margin:0 0 .25rem;font-size:1.1rem}.character-details{color:#a0a0a0;margin:0;font-size:.85rem}.character-stats{gap:1.5rem;display:flex}.stat-row{flex-direction:column;align-items:center;display:flex}.stat-label{color:#6b7280;text-transform:uppercase;font-size:.75rem}.stat-value{color:#e8e8e8;font-size:1.1rem;font-weight:600}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:#1e1e2e;border:1px solid #ffffff1a;border-radius:16px;width:100%;max-width:500px;padding:2rem}.character-modal{max-width:550px}.modal h2{margin:0 0 1.5rem;font-size:1.25rem}.character-modal h2{color:#e8e8e8}.form-row{margin-bottom:1.25rem}.form-row.three-col{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.form-group{margin-bottom:1rem}.form-group label{color:#a0a0a0;margin-bottom:.5rem;font-size:.85rem;display:block}.form-group input,.form-group select{color:#e8e8e8;box-sizing:border-box;background:#0000004d;border:1px solid #ffffff1a;border-radius:6px;width:100%;padding:.625rem;font-size:.9rem}.form-group input:focus,.form-group select:focus{border-color:#6366f1;outline:none}.form-group select{cursor:pointer}.stats-section{background:#0003;border-radius:8px;margin:1.5rem 0;padding:1rem}.stats-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.stats-header h3{color:#a0a0a0;margin:0;font-size:1rem}.ability-grid{grid-template-columns:repeat(3,1fr);gap:.75rem;display:grid}.ability-score{background:#0003;border-radius:8px;flex-direction:column;align-items:center;padding:.75rem;display:flex}.ability-score label{color:#6b7280;text-transform:uppercase;margin-bottom:.25rem;font-size:.7rem}.ability-value{color:#e8e8e8;font-size:1.25rem;font-weight:600}.ability-mod{color:#a5b4fc;font-size:.85rem}.derived-stats{justify-content:center;gap:2rem;margin-top:1rem;display:flex}.derived-stat{flex-direction:column;align-items:center;display:flex}.derived-label{color:#6b7280;font-size:.75rem}.derived-value{color:#e8e8e8;font-size:1.5rem;font-weight:600}.modal-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.modal-actions .btn{min-width:100px}@media (width<=600px){.form-row.three-col{grid-template-columns:1fr}.character-card{flex-wrap:wrap}.character-stats{border-top:1px solid #ffffff1a;justify-content:space-around;width:100%;margin-top:.5rem;padding-top:.75rem}}.view-tabs{background:#0000004d;border-radius:8px;gap:.25rem;padding:.25rem;display:flex}.tab{color:#a0a0a0;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.5rem 1rem;font-size:.85rem;transition:all .2s}.tab:hover{color:#e8e8e8}.tab.active{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6)}.game-container{grid-template-columns:220px 1fr;gap:1.5rem;height:calc(100vh - 180px);display:grid}.character-sidebar{background:#0000004d;border:1px solid #ffffff1a;border-radius:12px;height:fit-content;padding:1.25rem}.character-sidebar h3{color:#a0a0a0;margin:0 0 1rem;font-size:.9rem}.sidebar-hint{color:#6b7280;text-align:center;padding:1rem 0;font-size:.85rem}.character-select{color:#e8e8e8;cursor:pointer;background:#0000004d;border:1px solid #ffffff1a;border-radius:6px;width:100%;margin-bottom:1rem;padding:.625rem;font-size:.9rem}.character-select:focus{border-color:#6366f1;outline:none}.character-stats-panel{flex-direction:column;gap:.5rem;display:flex}.stat-display{background:#0003;border-radius:6px;justify-content:space-between;align-items:center;padding:.5rem;display:flex}.stat-display.small{padding:.375rem .5rem;font-size:.85rem}.stat-name{color:#6b7280;text-transform:uppercase;font-size:.8rem}.stat-val{color:#e8e8e8;font-weight:600}.stat-divider{background:#ffffff1a;height:1px;margin:.5rem 0}.location-panel{border-top:1px solid #ffffff1a;margin-top:1rem;padding-top:1rem}.location-panel h4{color:#6b7280;text-transform:uppercase;margin:0 0 .5rem;font-size:.8rem}.location-panel p{color:#a5b4fc;margin:0;font-size:.9rem}.chat-area{background:#0000004d;border:1px solid #ffffff1a;border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.messages-container{flex-direction:column;flex:1;gap:.75rem;padding:1rem;display:flex;overflow-y:auto}.chat-empty{color:#6b7280;justify-content:center;align-items:center;height:100%;display:flex}.message{flex-direction:column;max-width:75%;padding:0;display:flex}.player-message{align-self:flex-end}.dm-message{align-self:flex-start}.player-message .message-bubble{background:linear-gradient(135deg,#4f46e5,#6366f1);border:1px solid #6366f180;border-radius:18px 18px 4px;padding:.75rem 1rem;box-shadow:0 2px 8px #6366f133}.player-message .message-author{display:none}.player-message .message-time{text-align:right;margin-top:.25rem;padding-right:.25rem}.dm-message .message-bubble{background:#1e1e2ef2;border:1px solid #fbbf244d;border-radius:18px 18px 18px 4px;padding:.75rem 1rem;box-shadow:0 2px 8px #0000004d}.dm-message .message-header{margin-bottom:.5rem}.dm-message .message-author{align-items:center;gap:.375rem;display:flex}.dm-message .message-author:before{content:"👑";font-size:.7rem}.message.system-message{align-self:center;max-width:90%}.message.system-message .message-bubble{text-align:center;background:#0006;border:1px dashed #fff3;border-radius:8px;padding:.5rem 1rem}.message.system-message .message-content{color:#a0a0a0;font-size:.85rem;font-style:italic}.message-header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.375rem;display:flex}.message-author{color:#a5b4fc;font-size:.8rem;font-weight:600}.dm-message .message-author{color:#fbbf24}.message-time{color:#6b7280;font-size:.7rem}.message-content{color:#e8e8e8;white-space:pre-wrap;font-size:.95rem;line-height:1.5}.player-message .message-content{color:#fff}.dice-roll{background:#00000080;border:1px solid #ffffff1a;border-radius:20px;align-self:center;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.dice-roll.crit{background:#10b98126;border-color:#10b981}.dice-roll.fumble{background:#ef444426;border-color:#ef4444}.dice-notation{color:#a0a0a0;font-size:.85rem}.dice-result{color:#e8e8e8;font-size:1.1rem;font-weight:700}.crit-badge{color:#10b981;text-transform:uppercase;font-size:.7rem;font-weight:700}.fumble-badge{color:#ef4444;text-transform:uppercase;font-size:.7rem;font-weight:700}.dice-rolls-panel{background:#0003;border-top:1px solid #ffffff1a;max-height:150px;padding:.75rem 1rem;overflow-y:auto}.dice-rolls-header{color:#a0a0a0;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.85rem;display:flex}.dice-rolls-clear{color:#6b7280;cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:4px;padding:.25rem .5rem;font-size:.75rem;transition:all .2s}.dice-rolls-clear:hover{color:#a0a0a0;background:#ffffff1a}.dice-rolls-list{flex-wrap:wrap;gap:.5rem;display:flex}.dice-roll-item{background:#0000004d;border:1px solid #ffffff1a;border-radius:6px;align-items:center;gap:.5rem;padding:.375rem .625rem;display:flex}.dice-roll-item.crit{background:#10b98126;border-color:#10b981}.dice-roll-item.fumble{background:#ef444426;border-color:#ef4444}.dice-roll-notation{color:#a0a0a0;font-family:monospace;font-size:.8rem}.dice-roll-result{color:#e8e8e8;font-size:1rem;font-weight:700}.dice-crit-badge,.dice-fumble-badge{text-transform:uppercase;border-radius:3px;padding:.125rem .375rem;font-size:.65rem;font-weight:700}.dice-crit-badge{color:#10b981;background:#10b98133}.dice-fumble-badge{color:#ef4444;background:#ef444433}.dice-success-badge{text-transform:uppercase;border-radius:3px;padding:.125rem .375rem;font-size:.65rem;font-weight:700}.dice-success-badge.success{color:#10b981;background:#10b98133}.dice-success-badge.failure{color:#ef4444;background:#ef444433}.chat-input-form{background:#0003;border-top:1px solid #ffffff1a;flex-direction:column;gap:.5rem;padding:1rem;display:flex}.quick-actions{flex-wrap:wrap;gap:.375rem;display:flex}.quick-action-btn{color:#a5b4fc;cursor:pointer;background:#6366f126;border:1px solid #6366f14d;border-radius:6px;padding:.375rem .625rem;font-size:.75rem;transition:all .2s}.quick-action-btn:hover:not(:disabled){background:#6366f140;border-color:#6366f180;transform:translateY(-1px)}.quick-action-btn:disabled{opacity:.4;cursor:not-allowed}.input-row{gap:.5rem;display:flex}.chat-input{color:#e8e8e8;background:#0000004d;border:1px solid #ffffff1a;border-radius:8px;flex:1;padding:.75rem 1rem;font-size:.9rem}.chat-input:focus{border-color:#6366f1;outline:none}.chat-input:disabled{opacity:.5;cursor:not-allowed}.btn-send{color:#fff;cursor:pointer;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:8px;padding:.75rem 1.25rem;font-size:1rem;transition:all .2s}.btn-send:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #6366f166}.btn-send:disabled{opacity:.5;cursor:not-allowed}@media (width<=768px){.game-container{grid-template-columns:1fr}.character-sidebar{display:none}}@media (width<=600px){.game-header{flex-wrap:wrap;padding:.75rem 1rem}.game-header h1{order:-1;width:100%;margin-bottom:.5rem;font-size:1rem}.game-main{padding:1rem}.game-container{height:calc(100vh - 140px)}.quick-actions{justify-content:center}.quick-action-btn{padding:.5rem .75rem;font-size:.8rem}.message{max-width:90%}.input-row{flex-direction:column}.btn-send{width:100%}}
