:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#0f0f0f;color:#e0e0e0;min-height:100vh}a{color:#7c8aff;text-decoration:none}a:hover{text-decoration:underline}.page-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;font-size:1.1rem;color:#888}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem}.auth-card{width:100%;max-width:420px;background:#1a1a1a;border:1px solid #2a2a2a;border-radius:12px;padding:2rem}.auth-card h1{font-size:1.5rem;margin-bottom:.25rem;color:#fff}.auth-subtitle{color:#888;margin-bottom:1.5rem}.auth-footer{text-align:center;margin-top:1.5rem;color:#888;font-size:.9rem}.link-button{background:none;border:none;padding:0;color:#7c8aff;font:inherit;cursor:pointer}.link-button:hover:not(:disabled){text-decoration:underline}.link-button:disabled{opacity:.6;cursor:not-allowed}.auth-hint{text-align:center;margin-top:.5rem;color:#888;font-size:.85rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.85rem;font-weight:500;color:#ccc;margin-bottom:.35rem}.form-group input,.form-group textarea{width:100%;padding:.6rem .75rem;background:#111;border:1px solid #333;border-radius:6px;color:#e0e0e0;font-size:.95rem;font-family:inherit;outline:none;transition:border-color .15s}.form-group input:focus,.form-group textarea:focus{border-color:#7c8aff}.form-group textarea{resize:vertical}.role-options{display:flex;flex-direction:column;gap:.5rem}.role-option{display:flex;flex-direction:column;padding:.75rem;border:1px solid #333;border-radius:8px;cursor:pointer;transition:border-color .15s,background .15s}.role-option:hover{border-color:#555}.role-option.selected{border-color:#7c8aff;background:#7c8aff14}.role-option input{display:none}.role-label{font-weight:600;color:#fff;font-size:.95rem}.role-description{font-size:.8rem;color:#888;margin-top:.15rem}.btn{display:inline-block;padding:.6rem 1.25rem;border:none;border-radius:6px;font-size:.95rem;font-weight:500;cursor:pointer;text-align:center;transition:opacity .15s;font-family:inherit}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{width:100%;background:#7c8aff;color:#fff;margin-top:.5rem}.btn-primary:hover:not(:disabled){opacity:.9}.btn-secondary{background:#2a2a2a;color:#ccc;border:1px solid #333}.btn-secondary:hover:not(:disabled){background:#333}.error-message{background:#ff50501a;border:1px solid rgba(255,80,80,.3);color:#ff6b6b;padding:.6rem .75rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.success-message{background:#50c8781f;border:1px solid rgba(80,200,120,.35);color:#5fd38d;padding:.6rem .75rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.form-group input.input-error,.form-group textarea.input-error{border-color:#ff6b6b}.form-group input.input-error:focus,.form-group textarea.input-error:focus{border-color:#ff6b6b}.field-error{display:block;margin-top:.3rem;color:#ff6b6b;font-size:.8rem}.app-layout{display:flex;min-height:100vh}.sidebar{display:flex;flex-direction:column;width:240px;flex-shrink:0;background:#141414;border-right:1px solid #2a2a2a;padding:1.25rem 1rem;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:.5rem;font-size:1.2rem;font-weight:700;color:#fff;padding:.25rem .5rem 1.25rem}.sidebar-logo{height:28px;width:auto;flex-shrink:0;background:#fff;padding:2px;border-radius:4px}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem;flex:1}.sidebar-link{display:block;padding:.6rem .75rem;border-radius:8px;color:#bbb;font-size:.95rem;font-weight:500;transition:background .15s,color .15s}.sidebar-link:hover{background:#1f1f1f;color:#fff;text-decoration:none}.sidebar-link.active{background:#7c8aff26;color:#7c8aff}.sidebar-footer{border-top:1px solid #2a2a2a;padding-top:1rem;display:flex;flex-direction:column;gap:.6rem}.sidebar-user{display:flex;flex-direction:column;gap:.35rem}.sidebar-username{color:#e0e0e0;font-size:.9rem;font-weight:500;word-break:break-word}.app-main{flex:1;min-width:0;overflow-x:hidden}.page{max-width:800px;margin:0 auto;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.page-title{font-size:1.5rem;color:#fff}.page-placeholder{color:#888}.about-text p{color:#ccc;font-size:.95rem;line-height:1.6}.about-text p+p{margin-top:1rem}.sidebar-toggle,.sidebar-backdrop{display:none}@media(max-width:1023px){.sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;position:fixed;top:.75rem;left:.75rem;z-index:30;width:40px;height:40px;background:#1a1a1a;border:1px solid #2a2a2a;border-radius:8px;color:#e0e0e0;cursor:pointer}.sidebar{position:fixed;top:0;left:0;z-index:40;height:100vh;display:none}.sidebar.sidebar--open{display:flex}.sidebar-backdrop{display:block;position:fixed;inset:0;z-index:35;background:#00000080}.app-main{padding-top:3.5rem}}.dashboard{max-width:800px;margin:0 auto;padding:1rem}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-bottom:1px solid #2a2a2a;margin-bottom:1.5rem}.dashboard-header h1{font-size:1.25rem;color:#fff}.header-actions{display:flex;align-items:center;gap:1rem}.user-info{color:#888;font-size:.9rem}.dashboard-content{display:flex;flex-direction:column;gap:1rem}.welcome-card,.profile-card{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:12px;padding:1.5rem}.welcome-card h2{color:#fff;margin-bottom:.5rem}.role-badge{display:inline-block;background:#7c8aff26;color:#7c8aff;padding:.2rem .6rem;border-radius:4px;font-size:.8rem;font-weight:500;text-transform:capitalize}.profile-card h3{color:#fff;margin-bottom:1rem}.profile-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.profile-card-header h3{margin-bottom:0}.profile-details{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1rem}.profile-details dt{color:#888;font-size:.85rem}.profile-details dd{color:#ccc;font-size:.9rem}.profile-picture-upload{display:flex;flex-direction:column;align-items:center;margin-bottom:1.5rem}.avatar-button{position:relative;width:96px;height:96px;border-radius:50%;border:2px solid #333;background:none;padding:0;cursor:pointer;overflow:hidden;transition:border-color .15s}.avatar-button:hover{border-color:#7c8aff}.avatar-button:disabled{cursor:not-allowed;opacity:.6}.avatar-image{width:100%;height:100%;object-fit:cover}.avatar-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#2a2a2a;color:#888;font-size:2rem;font-weight:600}.avatar-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0009;color:#fff;font-size:.75rem;font-weight:500;opacity:0;transition:opacity .15s}.avatar-button:hover .avatar-overlay{opacity:1}.photo-gallery{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:12px;padding:1.5rem}.photo-gallery-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.photo-gallery-header h3{color:#fff}.photo-count{color:#888;font-size:.85rem}.photo-gallery-loading{color:#888;padding:1rem}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.photo-grid-item{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;border:1px solid #2a2a2a}.photo-grid-item img{width:100%;height:100%;object-fit:cover}.photo-delete-btn{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:none;background:#000000b3;color:#ff6b6b;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.photo-grid-item:hover .photo-delete-btn{opacity:1}.photo-caption{position:absolute;bottom:0;left:0;right:0;padding:.25rem .5rem;background:#000000b3;color:#ccc;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-add-btn{display:flex;align-items:center;justify-content:center;background:#111;color:#888;font-size:.85rem;cursor:pointer;transition:border-color .15s,color .15s}.photo-add-btn:hover:not(:disabled){border-color:#7c8aff;color:#7c8aff}.photo-add-btn:disabled{opacity:.5;cursor:not-allowed}.venue-events,.my-events{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:12px;padding:1.5rem}.venue-events-header,.my-events-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.venue-events-header h3,.my-events-header h3{color:#fff}.venue-events-loading,.my-events-loading{color:#888;padding:1rem}.venue-events-empty,.my-events-empty{color:#888;font-size:.9rem}.btn-sm{padding:.35rem .75rem;font-size:.85rem}.event-form{background:#111;border:1px solid #2a2a2a;border-radius:8px;padding:1rem;margin-bottom:1rem}.event-form-actions{display:flex;gap:.5rem;margin-top:.5rem}.event-form-actions .btn-primary{width:auto;margin-top:0}.event-form-actions .btn-secondary{width:auto}.event-list{display:flex;flex-direction:column;gap:.5rem}.event-list-item{display:flex;justify-content:space-between;align-items:flex-start;padding:.75rem;background:#111;border:1px solid #2a2a2a;border-radius:8px;transition:border-color .15s;cursor:pointer}.event-list-item:hover{border-color:#333}.event-list-item-info{display:flex;flex-direction:column;gap:.25rem;min-width:0}.event-list-item-title{color:#fff;font-weight:500;font-size:.95rem}.event-list-item-date{color:#7c8aff;font-size:.8rem}.event-list-item-desc{color:#888;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-delete-btn{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:none;background:transparent;color:#888;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.event-delete-btn:hover{color:#ff6b6b;background:#ff50501a}.artist-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem}.artist-chip{display:inline-flex;align-items:center;gap:.3rem;background:#7c8aff26;color:#7c8aff;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:500}.artist-chip-remove{border:none;background:none;color:#888;cursor:pointer;font-size:.9rem;padding:0;line-height:1;transition:color .15s}.artist-chip-remove:hover{color:#ff6b6b}.artist-search{position:relative}.artist-search-input{width:100%;padding:.4rem .6rem;background:#0f0f0f;border:1px solid #333;border-radius:6px;color:#e0e0e0;font-size:.85rem;font-family:inherit;outline:none;transition:border-color .15s}.artist-search-input:focus{border-color:#7c8aff}.artist-search-status{color:#888;font-size:.8rem;margin-top:.25rem}.artist-search-results{display:flex;flex-direction:column;margin-top:.25rem;border:1px solid #2a2a2a;border-radius:6px;overflow:hidden}.artist-search-result{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;border:none;background:#1a1a1a;color:#ccc;font-size:.85rem;font-family:inherit;cursor:pointer;text-align:left;transition:background .15s}.artist-search-result:hover{background:#222}.artist-search-result+.artist-search-result{border-top:1px solid #2a2a2a}.artist-search-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover}.artist-search-avatar-placeholder{width:24px;height:24px;border-radius:50%;background:#2a2a2a;color:#888;font-size:.7rem;font-weight:600;display:flex;align-items:center;justify-content:center}.artist-chip-avatar{width:18px;height:18px;border-radius:50%;object-fit:cover}.artist-directory{display:flex;flex-direction:column;border:1px solid #2a2a2a;border-radius:8px;overflow:hidden}.artist-directory-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#1a1a1a;cursor:pointer;transition:background .15s}.artist-directory-item:hover{background:#222}.artist-directory-item+.artist-directory-item{border-top:1px solid #2a2a2a}.artist-directory-avatar,.artist-directory-avatar-placeholder{width:36px;height:36px;border-radius:50%;flex-shrink:0}.artist-directory-avatar{object-fit:cover}.artist-directory-avatar-placeholder{background:#2a2a2a;color:#888;font-size:.9rem;font-weight:600;display:flex;align-items:center;justify-content:center}.artist-directory-name{color:#e0e0e0;font-size:.95rem;font-weight:500}.artist-filter{display:inline-flex;align-self:flex-start;border:1px solid #2a2a2a;border-radius:8px;overflow:hidden}.artist-filter-btn{padding:.4rem .9rem;border:none;background:#1a1a1a;color:#bbb;font-size:.85rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,color .15s}.artist-filter-btn+.artist-filter-btn{border-left:1px solid #2a2a2a}.artist-filter-btn:hover:not(.active){background:#222;color:#fff}.artist-filter-btn.active{background:#7c8aff26;color:#7c8aff}.follow-btn{margin-left:auto;flex-shrink:0;padding:.35rem .9rem;border:1px solid #7c8aff;border-radius:6px;background:#7c8aff;color:#fff;font-size:.85rem;font-weight:500;font-family:inherit;cursor:pointer;transition:opacity .15s,background .15s,color .15s}.follow-btn:hover:not(:disabled){opacity:.9}.follow-btn:disabled{opacity:.6;cursor:not-allowed}.follow-btn.following{background:transparent;color:#ccc;border-color:#333}.artist-detail-header{display:flex;align-items:center;gap:1rem}.artist-detail-avatar,.artist-detail-avatar-placeholder{width:72px;height:72px;border-radius:50%;flex-shrink:0}.artist-detail-avatar{object-fit:cover}.artist-detail-avatar-placeholder{background:#2a2a2a;color:#888;font-size:1.75rem;font-weight:600;display:flex;align-items:center;justify-content:center}.artist-detail-bio{color:#ccc;font-size:.95rem;line-height:1.5;white-space:pre-wrap}.event-detail{max-width:800px;margin:0 auto;padding:1rem}.event-detail-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;margin-bottom:1rem}.event-detail-actions{display:flex;gap:.5rem}.btn-danger{background:#ff505026;color:#ff6b6b;border:1px solid rgba(255,80,80,.3)}.btn-danger:hover:not(:disabled){background:#ff505040}.event-detail-card{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:12px;padding:1.5rem;margin-bottom:1rem}.event-detail-card h3{color:#fff;margin-bottom:1rem}.event-detail-title{color:#fff;font-size:1.4rem;margin-bottom:.5rem}.event-detail-date{color:#7c8aff;font-size:.9rem;margin-bottom:.75rem}.event-detail-desc{color:#ccc;font-size:.95rem;line-height:1.5}.event-detail-ticket-link{display:inline-block;margin-top:.75rem;padding:.4rem .75rem;background:#7c8aff26;color:#7c8aff;border-radius:6px;font-size:.9rem;font-weight:500;transition:background .15s}.event-detail-ticket-link:hover{background:#7c8aff40;text-decoration:none}.event-detail-empty{color:#888;font-size:.9rem;margin-bottom:.5rem}.event-detail-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.event-detail-photo{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;border:1px solid #2a2a2a}.event-detail-photo img{width:100%;height:100%;object-fit:cover}.landing{min-height:100vh;background:#000;color:#fff;font-family:Courier New,ui-monospace,Menlo,monospace;display:flex;justify-content:center;padding:2rem 1.25rem 2.5rem}.landing-inner{width:100%;max-width:1000px;display:flex;flex-direction:column;align-items:center;text-align:center}.landing-logo{width:140px;max-width:45%;height:auto;margin-bottom:1.5rem;filter:invert(1)}.landing-tagline{max-width:620px;font-size:1rem;line-height:1.9;letter-spacing:.02em;margin:0 auto 2rem}.landing-fest-poster{width:100%;max-width:380px;height:auto;display:block;margin:0 auto 2rem;background:#efece3}.landing-fest-heading{font-size:1.6rem;letter-spacing:.15em;margin-bottom:1.25rem}.landing-fest-blurb{max-width:660px;font-size:.95rem;line-height:1.9;text-align:justify;color:#eaeaea;margin:0 auto 2.5rem}.landing-events{width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:2rem 1.5rem;margin-bottom:3rem}.event-card{display:flex;flex-direction:column;align-items:center;gap:.9rem}.event-poster{width:100%;height:auto;display:block;border:1px solid #4a4a4a}.event-poster--placeholder{aspect-ratio:3 / 4;display:flex;align-items:center;justify-content:center;text-align:center;padding:.75rem;background:#141414;color:#777;font-size:.9rem;letter-spacing:.03em}.event-ticket{margin-top:auto;display:inline-block;border:1px solid #fff;border-radius:999px;padding:.55rem 1.4rem;color:#fff;font-size:.8rem;letter-spacing:.06em;text-decoration:none;transition:background .15s,color .15s}.event-ticket:hover{background:#fff;color:#000;text-decoration:none}@media(max-width:900px){.landing-events{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.landing-events{grid-template-columns:1fr}}.landing-cta{background:#fff;color:#000;border:none;border-radius:999px;padding:.9rem 1.5rem;font-family:inherit;font-size:.85rem;letter-spacing:.05em;cursor:pointer}.landing-cta:hover:not(:disabled){opacity:.85}.landing-cta:disabled{opacity:.6;cursor:not-allowed}.modal-overlay{position:fixed;inset:0;z-index:100;background:#000000b3;display:flex;align-items:center;justify-content:center;padding:1rem}.modal{position:relative;width:100%;max-width:420px;background:#0f0f0f;border:1px solid #2a2a2a;border-radius:12px;padding:2rem;color:#fff;font-family:Courier New,ui-monospace,Menlo,monospace}.modal-close{position:absolute;top:.5rem;right:.75rem;background:none;border:none;color:#888;font-size:1.5rem;line-height:1;cursor:pointer}.modal-close:hover{color:#fff}.modal-body h2{color:#fff;margin-bottom:.5rem}.modal-body>p{color:#aaa;font-size:.9rem;margin-bottom:1.25rem}.modal-body input{width:100%;padding:.7rem .75rem;background:#000;border:1px solid #333;border-radius:6px;color:#fff;font-family:inherit;font-size:.95rem;margin-bottom:1rem;outline:none}.modal-body input:focus{border-color:#fff}.modal-body .landing-cta{width:100%}.admin-table-wrap{overflow-x:auto;border:1px solid #2a2a2a;border-radius:8px}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th,.admin-table td{text-align:left;padding:.6rem .9rem;border-bottom:1px solid #2a2a2a}.admin-table th{color:#888;font-weight:600;background:#141414}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table td{color:#e0e0e0}
