*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f5f5;color:#333}.navbar{background:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.nav-brand{font-size:1.5rem;font-weight:700}.nav-user{display:flex;gap:1rem;align-items:center}.nav-user button{background:#e74c3c;border:none;color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh}.auth-box{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 10px #0000001a;width:100%;max-width:400px}.auth-box h1{text-align:center;margin-bottom:1.5rem;color:#2c3e50}.auth-box input{width:100%;padding:.8rem;margin-bottom:1rem;border:1px solid #ddd;border-radius:4px}.auth-box button{width:100%;padding:.8rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem}.auth-box button:hover{background:#2980b9}.checkbox-label{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;cursor:pointer}.auth-box p{text-align:center;margin-top:1rem}.auth-box a{color:#3498db;cursor:pointer}.dashboard,.module-edit,.rooms-page{max-width:1200px;margin:0 auto;padding:2rem}.btn-primary{background:#27ae60;color:#fff;border:none;padding:.8rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem}.module-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-top:1.5rem}.module-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a}.module-card h3{margin-bottom:.5rem;color:#2c3e50}.module-card p{color:#7f8c8d;margin-bottom:1rem}.module-actions{display:flex;gap:.5rem}.module-actions button{flex:1;padding:.5rem;border:none;border-radius:4px;cursor:pointer}.module-actions button:first-child{background:#3498db;color:#fff}.module-actions button:last-child{background:#9b59b6;color:#fff}.empty-state{grid-column:1 / -1;text-align:center;padding:3rem;color:#7f8c8d}.module-edit-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.module-edit-header button{background:#95a5a6;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.resources-section{background:#fff;padding:1.5rem;border-radius:8px}.resource-list{margin-top:1rem}.resource-item{display:flex;align-items:center;gap:1rem;padding:1rem;border-bottom:1px solid #eee}.resource-item.visible{background:#f0fff4}.resource-title{flex:1;font-weight:500}.resource-type{color:#7f8c8d}.resource-visibility.shown{color:#27ae60}.resource-visibility.hidden{color:#e74c3c}.resource-item button{padding:.4rem .8rem;border:none;border-radius:4px;cursor:pointer;background:#3498db;color:#fff}.resource-item button:last-child{background:#e74c3c}.resource-form{margin-top:2rem;padding:1.5rem;background:#ecf0f1;border-radius:8px}.resource-form input,.resource-form select,.resource-form textarea{width:100%;padding:.8rem;margin-bottom:1rem;border:1px solid #ddd;border-radius:4px}.resource-form button{padding:.8rem 1.5rem;border:none;border-radius:4px;cursor:pointer;background:#27ae60;color:#fff;margin-right:.5rem}.resource-form button:last-child{background:#95a5a6}.room-card{background:#fff;padding:1rem;border-radius:8px;margin-bottom:1rem}.status-waiting{color:#f39c12}.status-active{color:#27ae60}.status-ended{color:#7f8c8d}.nav-links{display:flex;gap:1.5rem;align-items:center}.nav-links a{color:#fffc;text-decoration:none;cursor:pointer;padding:.5rem 1rem;border-radius:4px;transition:all .2s}.nav-links a:hover{color:#fff;background:#ffffff1a}.room-list-page,.room-manage-page{max-width:1200px;margin:0 auto;padding:2rem}.page-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.page-header h2{flex:1;margin:0;color:#2c3e50}.page-header button:first-child{background:#95a5a6;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.filter-section{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a}.filter-section label{font-weight:500;color:#2c3e50}.filter-section select{padding:.5rem 1rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;min-width:200px}.room-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.room-card-item{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;transition:transform .2s,box-shadow .2s;cursor:pointer}.room-card-item:hover{transform:translateY(-4px);box-shadow:0 8px 24px #00000026}.room-card-item.status-waiting{border-left:4px solid #f39c12}.room-card-item.status-active{border-left:4px solid #27ae60}.room-card-item.status-ended{border-left:4px solid #95a5a6;opacity:.8}.room-card-header{display:flex;justify-content:space-between;align-items:center;padding:1.2rem;background:#f8f9fa;border-bottom:1px solid #eee}.room-card-header h3{margin:0;color:#2c3e50;font-size:1.1rem}.room-status-badge{padding:.3rem .8rem;border-radius:20px;font-size:.8rem;font-weight:500}.badge-waiting{background:#fff3cd;color:#856404}.badge-active{background:#d4edda;color:#155724}.badge-ended{background:#e9ecef;color:#6c757d}.room-card-body{padding:1.2rem}.room-info{display:flex;margin-bottom:.8rem;font-size:.95rem}.room-info:last-child{margin-bottom:0}.info-label{color:#7f8c8d;width:70px;flex-shrink:0}.info-value{color:#2c3e50;font-weight:500}.info-value.full{color:#e74c3c}.full-label{color:#e74c3c;font-size:.8rem;margin-left:.5rem}.available-label{color:#27ae60;font-size:.8rem;margin-left:.5rem}.room-card-footer{padding:1rem 1.2rem;background:#f8f9fa;border-top:1px solid #eee;display:flex;gap:.5rem;flex-wrap:wrap}.room-card-footer button{padding:.6rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s}.btn-join{flex:1;background:#27ae60;color:#fff}.btn-join:hover:not(:disabled){background:#219a52}.btn-join:disabled{background:#95a5a6;cursor:not-allowed}.btn-edit{background:#3498db;color:#fff}.btn-edit:hover{background:#2980b9}.btn-start{background:#27ae60;color:#fff}.btn-start:hover{background:#219a52}.btn-end{background:#e67e22;color:#fff}.btn-end:hover{background:#d35400}.btn-delete{background:#e74c3c;color:#fff}.btn-delete:hover{background:#c0392b}.empty-state{grid-column:1 / -1;text-align:center;padding:4rem 2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.empty-state p{color:#7f8c8d;font-size:1.1rem;margin-bottom:.5rem}.empty-hint{font-size:.9rem!important;color:#95a5a6!important}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;padding:2rem;min-width:400px;max-width:90%;box-shadow:0 10px 40px #0003;animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-title{font-size:1.25rem;font-weight:600;color:#2c3e50;margin-bottom:1rem}.modal-body{margin-bottom:1.5rem;color:#555}.modal-body p{margin-bottom:.5rem}.modal-body input,.modal-body textarea,.modal-body select{width:100%;padding:.8rem;margin-top:.5rem;border:1px solid #ddd;border-radius:6px;font-size:1rem}.modal-body input:focus,.modal-body textarea:focus,.modal-body select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.modal-body label{display:block;margin-top:1rem;font-weight:500;color:#2c3e50}.modal-body .checkbox-label{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;cursor:pointer;font-weight:400}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem}.modal-btn{padding:.7rem 1.5rem;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s}.modal-btn-primary{background:#3498db;color:#fff}.modal-btn-primary:hover{background:#2980b9}.modal-btn-danger{background:#e74c3c;color:#fff}.modal-btn-danger:hover{background:#c0392b}.modal-btn-secondary{background:#ecf0f1;color:#555}.modal-btn-secondary:hover{background:#bdc3c7}.confirm-modal .modal-content{text-align:center}.confirm-modal .modal-body{font-size:1.1rem}.confirm-modal .modal-actions{justify-content:center}.game-view,.game-modal-overlay,.char-create-overlay,.skill-tree-shell.is-overlay{--game-card-shadow: 0 10px 32px rgba(0, 0, 0, .5), 0 3px 10px rgba(0, 0, 0, .35), 0 0 0 1px rgba(255, 255, 255, .1);--game-card-shadow-hover: 0 14px 42px rgba(0, 0, 0, .58), 0 5px 14px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .12);--game-card-shadow-soft: 0 6px 20px rgba(0, 0, 0, .32), 0 2px 6px rgba(0, 0, 0, .22), 0 0 0 1px rgba(0, 0, 0, .08);--game-card-shadow-compact: 0 6px 18px rgba(0, 0, 0, .4), 0 2px 6px rgba(0, 0, 0, .28)}.game-room{height:calc(100vh - 60px);display:flex;flex-direction:column;background:#f0f2f5}.game-header{background:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;align-items:center;gap:1rem}.game-header button{background:#e74c3c;border:none;color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.game-header h2{flex:1;margin:0}.room-status{padding:.3rem .8rem;border-radius:4px;font-size:.9rem}.game-content{flex:1;display:grid;grid-template-columns:280px 1fr 300px;gap:1rem;padding:1rem;overflow:hidden}.game-sidebar{display:flex;flex-direction:column;gap:1rem;overflow-y:auto}.sidebar-section{background:#fff;border-radius:8px;padding:1rem;box-shadow:0 2px 8px #0000001a}.sidebar-section h3{margin-bottom:1rem;color:#2c3e50;font-size:1rem}.resource-grid{display:flex;flex-direction:column;gap:.5rem}.resource-card{border:1px solid #eee;border-radius:6px;overflow:hidden;position:relative}.resource-card.is-hidden{opacity:.5}.resource-card img{width:100%;max-height:200px;object-fit:contain;background:#f9f9f9}.text-resource{padding:.8rem}.resource-display-type{font-size:.75rem;color:#7f8c8d;text-transform:uppercase}.text-resource h4{margin:.3rem 0;color:#2c3e50}.text-resource p{font-size:.85rem;color:#555;white-space:pre-wrap;max-height:100px;overflow-y:auto}.visibility-btn{position:absolute;top:.5rem;right:.5rem;background:#0009;color:#fff;border:none;padding:.3rem .6rem;border-radius:4px;font-size:.75rem;cursor:pointer}.character-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.character-card{padding:.8rem;border:1px solid #eee;border-radius:6px;background:#fafafa}.character-card.is-self{border-color:#3498db;background:#f0f8ff}.character-name{font-weight:600;color:#2c3e50}.character-player{font-size:.8rem;color:#7f8c8d}.character-stats{margin-top:.5rem;font-size:.85rem}.hp-bar{height:6px;background:#eee;border-radius:3px;overflow:hidden;margin-top:.3rem}.hp-fill{height:100%;background:#27ae60;transition:width .3s ease}.game-main{display:flex;flex-direction:column;overflow:hidden}.game-log{flex:1;background:#fff;border-radius:8px;padding:1rem;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;overflow:hidden}.game-log h3{margin-bottom:1rem;color:#2c3e50;font-size:1rem}.log-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem}.log-entry{padding:.5rem .8rem;border-radius:4px;font-size:.9rem;background:#f9f9f9}.log-entry.dice{background:#fff3e0;border-left:3px solid #ff9800}.log-entry.attack{background:#ffebee;border-left:3px solid #f44336}.log-entry.system{background:#e3f2fd;border-left:3px solid #2196f3}.log-entry.join,.log-entry.leave{background:#f3e5f5;border-left:3px solid #9c27b0}.log-time{color:#7f8c8d;font-size:.8rem;margin-right:.5rem}.log-content{color:#333}.game-controls{display:flex;flex-direction:column;gap:1rem;overflow-y:auto}.control-section{background:#fff;border-radius:8px;padding:1rem;box-shadow:0 2px 8px #0000001a}.control-section h3{margin-bottom:1rem;color:#2c3e50;font-size:1rem}.dice-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem}.dice-buttons button{padding:.6rem;border:2px solid #ddd;background:#fff;border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s}.dice-buttons button:hover{border-color:#3498db}.dice-buttons button.active{background:#3498db;color:#fff;border-color:#3498db}.dice-modifier{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.dice-modifier label{color:#555;font-size:.9rem}.dice-modifier input{width:80px;padding:.5rem;border:1px solid #ddd;border-radius:4px;text-align:center}.btn-roll{width:100%;padding:.8rem;background:#ff9800;color:#fff;border:none;border-radius:6px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-roll:hover:not(:disabled){background:#f57c00}.btn-roll:disabled{background:#ccc;cursor:not-allowed}.dice-result{margin-top:1rem;padding:1rem;background:#fff3e0;border-radius:6px;text-align:center}.result-main{font-size:1.5rem;font-weight:700;color:#e65100}.result-detail{margin-top:.5rem;font-size:.9rem;color:#666}.btn-attack{width:100%;padding:1rem;background:#e74c3c;color:#fff;border:none;border-radius:6px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-attack:hover{background:#c0392b}.attack-result{margin-top:1rem;padding:.8rem;background:#ffebee;border-radius:6px;text-align:center;color:#c62828}.character-form input,.character-form textarea{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:4px;margin-bottom:.8rem;font-size:.9rem}.character-form .stats-input{display:flex;align-items:center;gap:.5rem;margin-bottom:.8rem}.character-form .stats-input label{width:50px;font-size:.9rem;color:#555}.character-form .stats-input input{width:60px;margin-bottom:0}.character-form .stats-input span{color:#7f8c8d}.form-actions{display:flex;gap:.5rem}.form-actions button{flex:1;padding:.6rem;border:none;border-radius:4px;cursor:pointer}.btn-save{background:#27ae60;color:#fff}.btn-cancel{background:#95a5a6;color:#fff}.btn-small{padding:.4rem .8rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.my-character{text-align:center}.my-character .char-name{font-size:1.2rem;font-weight:600;color:#2c3e50;margin-bottom:.5rem}.my-character .char-stats{font-size:.9rem;color:#555;margin-bottom:1rem}.my-character .btn-edit{padding:.5rem 1rem;background:#9b59b6;color:#fff;border:none;border-radius:4px;cursor:pointer}.room-card button{margin-left:auto;padding:.4rem .8rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer}
