*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#14141a;color:#e8e6e3}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:#1c1c24;border-bottom:1px solid #2c2c36}.brand{font-size:1.2rem;font-weight:700;color:#f0b232}.user-chip{display:flex;align-items:center;gap:8px}.avatar{width:28px;height:28px;border-radius:50%}.btn-link{background:none;border:none;color:#9a9aa5;padding:0 0 0 8px}.btn-link:hover{color:#fff}.content{flex:1;padding:24px;max-width:1100px;width:100%;margin:0 auto}.page-loading{padding:48px;text-align:center}.login-page{display:flex;align-items:center;justify-content:center;height:100vh}.login-card{background:#1c1c24;border:1px solid #2c2c36;border-radius:12px;padding:40px;text-align:center;max-width:360px}.login-card h1{color:#f0b232}.btn-discord{display:inline-block;margin-top:16px;background:#5865f2;color:#fff;padding:12px 24px;border-radius:8px;font-weight:600}.btn-discord:hover{background:#4752c4}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.join-form{display:flex;gap:8px;align-items:center;margin-bottom:24px}.join-form input{padding:8px 12px;border-radius:6px;border:1px solid #2c2c36;background:#1c1c24;color:#e8e6e3}.group-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.group-card{background:#1c1c24;border:1px solid #2c2c36;border-radius:10px;padding:16px;cursor:pointer;transition:border-color .15s}.group-card:hover{border-color:#f0b232}.group-card h3{margin:0 0 8px}.muted{color:#9a9aa5;font-size:.85rem}.empty-state{color:#9a9aa5}.btn-primary{background:#f0b232;color:#14141a;border:none;padding:10px 18px;border-radius:8px;font-weight:600}.btn-primary:hover{background:#ffc84d}.btn-secondary{background:transparent;border:1px solid #2c2c36;color:#e8e6e3;padding:10px 16px;border-radius:8px}.btn-secondary:hover{border-color:#f0b232}.btn-danger{background:transparent;border:1px solid #7a2e2e;color:#e88;padding:10px 16px;border-radius:8px}.btn-danger:hover{background:#7a2e2e;color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#1c1c24;border:1px solid #2c2c36;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal form{display:flex;flex-direction:column;gap:12px}.modal label{display:flex;flex-direction:column;gap:4px;font-size:.9rem}.modal input,.modal textarea,.modal select{padding:8px 10px;border-radius:6px;border:1px solid #2c2c36;background:#14141a;color:#e8e6e3}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.error-text{color:#e88;font-size:.9rem}.group-page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;gap:16px;flex-wrap:wrap}.group-page-actions{display:flex;gap:8px;flex-wrap:wrap}.current-signup{background:#23231f;border-left:3px solid #f0b232;padding:8px 12px;border-radius:4px;margin-bottom:16px}.role-summary{display:flex;gap:12px;margin-bottom:20px}.role-pill{padding:6px 14px;border-radius:20px;font-weight:600;font-size:.85rem}.role-tank{background:#2c3e50}.role-healer{background:#1e5631}.role-dps{background:#5c2c2c}.role-section{margin-bottom:24px}.role-section h3{margin-bottom:8px;color:#9a9aa5;text-transform:uppercase;font-size:.8rem;letter-spacing:.05em}.spec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.spec-tile{background:#1c1c24;border:2px solid #2c2c36;border-radius:10px;padding:12px;text-align:left;color:#e8e6e3;display:flex;flex-direction:column;gap:6px;min-height:90px}.spec-tile:hover{background:#23232d}.spec-tile.spec-full{opacity:.85}.spec-tile.spec-mine{box-shadow:0 0 0 2px #f0b232 inset}.spec-tile-header{display:flex;justify-content:space-between;font-size:.85rem;font-weight:600}.spec-name{color:#cfcfd6}.spec-count{font-size:.8rem;color:#9a9aa5;display:flex;align-items:center;gap:6px}.badge-hot{background:#c0392b;color:#fff;font-size:.65rem;padding:2px 6px;border-radius:10px;font-weight:700}.spec-signups{display:flex;flex-direction:column;gap:2px;margin-top:4px}.signup-avatar-name{display:flex;align-items:center;gap:4px;font-size:.75rem;color:#cfcfd6}.signup-avatar-name img{width:16px;height:16px;border-radius:50%}.signup-avatar-name.backup{color:#9a9aa5;font-style:italic}.guild-layout{display:flex;gap:16px;align-items:flex-start}.member-pool{background:#1c1c24;border:1px solid #2c2c36;border-radius:10px;padding:12px;width:240px;flex-shrink:0;min-height:200px;display:flex;flex-direction:column;gap:8px}.member-pool h3{margin:0 0 4px;font-size:.9rem;color:#9a9aa5;text-transform:uppercase;letter-spacing:.05em}.raid-columns{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;align-items:start}.raid-column{background:#1c1c24;border:2px dashed #2c2c36;border-radius:10px;padding:12px;min-height:220px;display:flex;flex-direction:column;gap:8px;transition:border-color .1s,background .1s}.raid-column.drag-over{border-color:#f0b232;background:#23232d}.raid-column-header{display:flex;justify-content:space-between;align-items:flex-start}.raid-column-header h3{margin:0}.role-summary.compact{gap:6px;margin-bottom:4px}.role-summary.compact .role-pill{padding:3px 8px;font-size:.7rem}.raid-roster{display:flex;flex-direction:column;gap:6px}.member-chip{display:flex;align-items:center;gap:8px;background:#14141a;border:1px solid #2c2c36;border-left:3px solid #9a9aa5;border-radius:8px;padding:6px 8px;cursor:grab}.member-chip img{width:24px;height:24px;border-radius:50%}.member-chip-info{display:flex;flex-direction:column;flex:1;min-width:0}.member-chip-name{font-size:.85rem;font-weight:600}.member-chip-spec{font-size:.72rem}.member-chip.backup{opacity:.75}.badge-backup{font-size:.65rem;background:#444;padding:2px 6px;border-radius:8px}.chip-remove{background:none;border:none;color:#9a9aa5;font-size:.9rem;padding:0 4px}.chip-remove:hover{color:#e88}.high-demand-wrap{position:relative;display:flex;flex-direction:column;gap:2px}.high-demand-wrap .badge-hot{align-self:flex-start}.empty-state.small{font-size:.85rem}
