*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--parchment: #f5e6c8;--parchment-dark: #e8d5a3;--ink: #2c1a0e;--ink-light: #5c3d1e;--blood: #8b1a1a;--blood-light: #c0392b;--gold: #c9a84c;--gold-light: #f0c040;--forest: #2d5a1b;--sky: #1a4a6b;--stone: #6b6b5a;--stone-light: #9e9e8a;--border: #8b6914;--shadow: rgba(0,0,0,.4);--bar-health: #c0392b;--bar-thirst: #2980b9;--bar-food: #27ae60;--bar-temp: #f39c12;--radius: 6px;--radius-lg: 12px;--transition: .2s ease}html,body{height:100%;background-color:#1a1108;color:var(--ink);font-family:Crimson Text,Georgia,serif;font-size:16px;line-height:1.5}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4{font-family:Cinzel,serif}h1{font-size:2rem;color:var(--gold);text-shadow:1px 1px 3px var(--shadow)}h2{font-size:1.5rem;color:var(--ink)}h3{font-size:1.1rem}a{color:var(--sky);text-decoration:none}a:hover{text-decoration:underline}.page-container{max-width:1100px;margin:0 auto;padding:1.5rem 1rem;width:100%}.card{background:var(--parchment);border:2px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:0 4px 16px var(--shadow),inset 0 1px #ffffff4d}.card+.card{margin-top:1rem}.navbar{background:linear-gradient(135deg,#1a0e05,#3d1f0a);border-bottom:3px solid var(--gold);padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.navbar-brand{font-family:Cinzel,serif;font-size:1.4rem;font-weight:700;color:var(--gold-light);letter-spacing:.05em;text-shadow:0 0 8px rgba(201,168,76,.5)}.navbar-links{display:flex;align-items:center;gap:.75rem}.navbar-links a{color:var(--parchment);font-size:.95rem;padding:.25rem .5rem;border-radius:var(--radius);transition:var(--transition)}.navbar-links a:hover{color:var(--gold-light);background:#ffffff0d;text-decoration:none}.navbar-user{color:var(--stone-light);font-size:.85rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;font-family:Cinzel,serif;font-size:.85rem;font-weight:600;letter-spacing:.05em;padding:.5rem 1.2rem;border:2px solid transparent;border-radius:var(--radius);cursor:pointer;transition:var(--transition);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--forest);color:var(--parchment);border-color:#1a3d0d}.btn-primary:hover:not(:disabled){background:#3a7522}.btn-danger{background:var(--blood);color:#fff;border-color:#5c0e0e}.btn-danger:hover:not(:disabled){background:var(--blood-light)}.btn-gold{background:var(--gold);color:var(--ink);border-color:#8b6914}.btn-gold:hover:not(:disabled){background:var(--gold-light)}.btn-outline{background:transparent;color:var(--gold);border-color:var(--border)}.btn-outline:hover:not(:disabled){background:#c9a84c26}.btn-sm{padding:.3rem .75rem;font-size:.78rem}.btn-lg{padding:.75rem 1.75rem;font-size:1rem}.form-group{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}.form-group label{font-size:.9rem;font-weight:600;color:var(--ink-light)}.form-group input,.form-group textarea,.form-group select{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;font-family:Crimson Text,serif;font-size:1rem;color:var(--ink);transition:var(--transition);width:100%}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--sky);box-shadow:0 0 0 2px #1a4a6b26}.form-error{color:var(--blood-light);font-size:.85rem;margin-top:.25rem}.form-success{color:var(--forest);font-size:.85rem;margin-top:.25rem}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#3d1f0a,#1a0e05 70%);padding:2rem 1rem}.auth-card{width:100%;max-width:420px;background:var(--parchment);border:3px solid var(--gold);border-radius:var(--radius-lg);padding:2.5rem 2rem;box-shadow:0 8px 32px #0009}.auth-title{text-align:center;font-family:Cinzel,serif;font-size:1.7rem;color:var(--ink);margin-bottom:.5rem}.auth-subtitle{text-align:center;color:var(--stone);font-size:.95rem;margin-bottom:1.75rem}.resource-bar-wrap{display:flex;flex-direction:column;gap:.3rem}.resource-bar-label{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;font-weight:600;color:var(--ink-light)}.resource-bar-track{height:20px;background:#d6c9a8;border:1.5px solid var(--border);border-radius:10px;overflow:hidden;position:relative}.resource-bar-fill{height:100%;border-radius:10px;transition:width .4s ease}.resource-bar-fill.health{background:linear-gradient(90deg,#8b1a1a,#c0392b)}.resource-bar-fill.temp-hp{background:linear-gradient(90deg,#e67e22,#f39c12)}.resource-bar-fill.thirst{background:linear-gradient(90deg,#1a6b9a,#2980b9)}.resource-bar-fill.food{background:linear-gradient(90deg,#1a6b3a,#27ae60)}.health-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.health-delta-input{width:70px;padding:.3rem .5rem;border:1.5px solid var(--border);border-radius:var(--radius);font-size:.95rem;text-align:center}.temp-hp-section{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.9rem}.temp-hp-section input{width:80px;padding:.3rem .5rem;border:1.5px solid var(--border);border-radius:var(--radius);font-size:.95rem;text-align:center}.inventory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}@media (max-width: 600px){.inventory-grid{grid-template-columns:repeat(3,1fr)}}.inventory-slot{background:#e8d5a3;border:2px solid var(--border);border-radius:var(--radius);padding:.5rem;min-height:80px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;cursor:pointer;transition:var(--transition);text-align:center;position:relative}.inventory-slot:hover{background:var(--parchment);border-color:var(--gold)}.inventory-slot.filled{background:#d4c08a}.inventory-slot-number{position:absolute;top:4px;left:6px;font-size:.65rem;color:var(--stone);font-weight:600}.inventory-slot-name{font-size:.8rem;font-weight:600;color:var(--ink)}.inventory-slot-qty{font-size:.75rem;color:var(--forest);font-weight:700}.inventory-slot-type-badge{font-size:.65rem;color:var(--stone);font-style:italic}.equipment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.equipment-slot{background:#e0cd98;border:2px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem;cursor:pointer;transition:var(--transition);min-height:80px;display:flex;flex-direction:column;gap:.25rem}.equipment-slot:hover{background:var(--parchment);border-color:var(--gold)}.equipment-slot-label{font-size:.7rem;font-weight:700;color:var(--stone);text-transform:uppercase;letter-spacing:.08em}.equipment-slot-item{font-size:.9rem;font-weight:600;color:var(--ink)}.equipment-slot-desc{font-size:.8rem;color:var(--ink-light);font-style:italic}.equipment-slot-empty{font-size:.8rem;color:var(--stone);font-style:italic}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:var(--parchment);border:3px solid var(--gold);border-radius:var(--radius-lg);padding:2rem;width:100%;max-width:480px;box-shadow:0 8px 40px #000000b3}.modal h3{margin-bottom:1rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.25rem}.badge{display:inline-flex;align-items:center;font-size:.7rem;font-weight:700;letter-spacing:.06em;padding:.2rem .6rem;border-radius:999px;text-transform:uppercase}.badge-admin{background:var(--gold);color:var(--ink)}.badge-gm{background:var(--sky);color:#fff}.badge-player{background:var(--stone-light);color:var(--ink)}.badge-pending{background:#f39c12;color:#fff}.badge-approved{background:var(--forest);color:#fff}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--parchment-dark)}th{font-family:Cinzel,serif;font-size:.78rem;font-weight:600;color:var(--ink-light);text-transform:uppercase;letter-spacing:.06em}tr:hover td{background:#00000008}.text-center{text-align:center}.text-muted{color:var(--stone);font-size:.9rem}.divider{border:none;border-top:1px solid var(--parchment-dark);margin:1rem 0}.flex-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.spacer{flex:1}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.character-sheet{display:flex;flex-direction:column;gap:1.25rem}.sheet-section-title{font-family:Cinzel,serif;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);border-bottom:1px solid var(--parchment-dark);padding-bottom:.25rem;margin-bottom:.75rem}.game-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.game-card{background:var(--parchment);border:2px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;transition:var(--transition);cursor:pointer;text-decoration:none;color:inherit;display:block}.game-card:hover{border-color:var(--gold);box-shadow:0 4px 16px var(--shadow);transform:translateY(-2px);text-decoration:none}.game-card-code{font-family:monospace;background:#d6c9a8;padding:.15rem .4rem;border-radius:4px;font-size:.85rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#1a0e05}::-webkit-scrollbar-thumb{background:var(--gold);border-radius:4px}.spinner{width:40px;height:40px;border:4px solid rgba(201,168,76,.2);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;margin:2rem auto}@keyframes spin{to{transform:rotate(360deg)}}.dice-roll-result{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--ink);color:var(--gold-light);font-family:Cinzel,serif;font-size:1.2rem;font-weight:700;border-radius:var(--radius);border:2px solid var(--gold);box-shadow:0 2px 8px #0006}.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:2000;display:flex;flex-direction:column;gap:.5rem}.toast{background:var(--ink);color:var(--parchment);padding:.75rem 1.25rem;border-radius:var(--radius);border-left:4px solid var(--gold);font-size:.9rem;box-shadow:0 4px 12px #00000080;animation:slideIn .2s ease}.toast.toast-error{border-color:var(--blood-light)}.toast.toast-success{border-color:#27ae60}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}
