*{margin:0;padding:0;box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100%;left:50%;transform:translate(-50%);background:#002b49;color:#ffce00;padding:12px 24px;border-radius:0 0 8px 8px;font-weight:700;z-index:10000;text-decoration:none;transition:top .2s}.skip-link:focus{top:0}:focus-visible{outline:3px solid #008fbe;outline-offset:2px}.date-nav-btn:focus-visible,.toggle-btn:focus-visible,.column-lozenge:focus-visible,.nav-link:focus-visible{outline:3px solid #008fbe;outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}body{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f5fbff;min-height:100vh;color:#00243d;line-height:1.5;font-weight:400;letter-spacing:.02em}main{max-width:1600px;margin:0 auto;padding:20px}header{background:#002b49;padding:40px 30px 30px;border-radius:12px;margin:20px 20px 30px;text-align:center;box-shadow:0 6px 12px #00000014;position:relative}h1{font-family:Playfair Display,Georgia,Times New Roman,serif;font-size:2.8em;margin-bottom:10px;color:#fff;font-weight:700;letter-spacing:-.01em;line-height:1.2}h1 .highlight{color:#e85462}.subtitle{color:#ffffffb3;font-size:1.1em;letter-spacing:.04em}.header-nav{margin-top:25px;display:flex;gap:16px;justify-content:center;flex-wrap:wrap}.nav-link{color:#002b49;text-decoration:none;font-weight:700;padding:14px 32px;background:#ffce00;border-radius:4px;transition:all .3s cubic-bezier(.23,1,.32,1);font-size:1.1em;letter-spacing:.04em}.nav-link:hover{background:#ffd833;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.header-auth{position:absolute;top:20px;right:20px;display:flex;align-items:center;gap:12px}.header-auth .user-email{color:#fffc;font-size:.85em}.auth-btn{display:inline-block;background:#ffce00;color:#002b49;text-decoration:none;padding:8px 16px;border-radius:4px;font-size:.9em;font-weight:700;transition:all .3s cubic-bezier(.23,1,.32,1);letter-spacing:.04em;border:none;cursor:pointer;font-family:inherit}.auth-btn:hover{background:#ffd833;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.auth-btn.logout{background:transparent;color:#ffffffb3;border:1px solid rgba(255,255,255,.3);padding:6px 12px;font-size:.8em}.auth-btn.logout:hover{color:#fff;border-color:#fff9;background:#ffffff1a}.controls{background:#fff;padding:25px;border-radius:12px;margin-bottom:30px;box-shadow:0 1px 3px #0000000f;border:1px solid #e3ecf3}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:20px}.filter-group{display:flex;flex-direction:column}.filter-group label{font-weight:600;margin-bottom:8px;color:#002b49;font-size:.875rem;letter-spacing:.01em}.filter-group input,.filter-group select{padding:12px;border:1px solid #c7dae7;border-radius:8px;font-size:16px;transition:border-color .3s;background:#fff;position:relative;z-index:10;min-height:48px}.filter-group input:focus,.filter-group select:focus{border-color:#008fbe;box-shadow:0 0 0 3px #008fbe1a;z-index:20}.filter-group input:focus:not(:focus-visible),.filter-group select:focus:not(:focus-visible){outline:none}.filter-group select option:disabled{font-weight:700;color:#6b7280;background-color:#f3f4f6;font-size:.85em;padding:8px 0}.date-navigation{display:flex;align-items:center;gap:5px;margin-bottom:8px;position:relative}.date-nav-btn{background:#002b49;color:#fff;border:none;border-radius:4px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;font-weight:700;transition:all .3s cubic-bezier(.23,1,.32,1);-webkit-user-select:none;user-select:none;position:relative;z-index:10}.date-nav-btn:hover:not(.disabled){background:#00243d;transform:translateY(-1px)}.date-nav-btn:active:not(.disabled){transform:translateY(0)}.date-nav-btn.disabled{opacity:.4;cursor:not-allowed;transform:none;background:#e3ecf3}.date-navigation input[type=date]{flex:1;margin:0;padding:12px;border:1px solid #c7dae7;border-radius:8px;font-size:16px;transition:border-color .3s;background:#fff;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;min-height:48px}.date-navigation input[type=date]:focus{border-color:#008fbe;box-shadow:0 0 0 3px #008fbe1a}.date-navigation input[type=date]:focus:not(:focus-visible){outline:none}.date-navigation input[type=date]::-webkit-calendar-picker-indicator{background:transparent;bottom:0;color:transparent;cursor:pointer;height:auto;left:0;position:absolute;right:0;top:0;width:auto}.date-navigation input[type=date]::-webkit-inner-spin-button,.date-navigation input[type=date]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.current-date-display{font-size:.85em;color:#002b49;font-weight:700;text-align:center;margin-top:4px}.toggle-buttons{display:flex;gap:15px;margin-top:15px;flex-wrap:wrap}.toggle-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;min-height:44px;border:1px solid #e3ecf3;border-radius:18px;background:#fff;color:#4d6677;font-weight:700;cursor:pointer;transition:all .3s cubic-bezier(.23,1,.32,1);-webkit-user-select:none;user-select:none;font-size:.9em;font-family:inherit}.toggle-btn:hover{border-color:#002b49;color:#002b49;transform:translateY(-1px)}.toggle-btn.active{background:#002b49;border-color:#002b49;color:#fff}.toggle-btn .icon{font-size:1.1em}.show-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;width:100%;max-width:100%}.show-grid[style*="grid-template-columns: repeat(1, 1fr)"]{grid-template-columns:1fr;max-width:400px;margin:0 auto}.show-grid[style*="grid-template-columns: repeat(2, 1fr)"]{grid-template-columns:repeat(2,1fr);max-width:600px;margin:0 auto}.show-grid[style*="grid-template-columns: repeat(3, 1fr)"]{grid-template-columns:repeat(3,1fr);max-width:900px;margin:0 auto}.show-grid[style*="grid-template-columns: repeat(4, 1fr)"]{grid-template-columns:repeat(4,1fr);max-width:100%}.show-grid.expanded-wildcard{grid-template-columns:1fr 1fr 1fr 2fr!important;max-width:100%}.show-grid.expanded-wildcard .column-container:last-child{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px;align-content:start}.show-grid.expanded-wildcard .column-container:last-child .show-cell{width:100%;min-width:auto;max-width:none;min-height:60px;position:relative;z-index:1;margin:0}.grid-header{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;position:sticky;top:0;z-index:100;background:#fff}.grid-header-cell{background:#002b49;color:#fff;padding:14px 12px;text-align:center;font-family:Playfair Display,Georgia,Times New Roman,serif;font-weight:700;font-size:.95rem;border-radius:8px 8px 0 0;box-shadow:0 2px 4px #0000001a;letter-spacing:.04em;text-transform:uppercase;border-bottom:3px solid #e85462}.column-container{display:flex;flex-direction:column;gap:8px;min-height:400px;background:#f5fbff;padding:8px;border-radius:4px}.show-time{font-weight:700;font-size:.9em;color:#002b49;margin-bottom:2px;margin-top:18px;background:#002b490f;padding:2px 6px;border-radius:4px;text-align:center;border:1px solid rgba(0,43,73,.12);position:relative;z-index:2}.show-cell{background:#fff;border-radius:8px;padding:12px;margin:2px 0;cursor:pointer;transition:all .3s cubic-bezier(.23,1,.32,1);border:1px solid #e3ecf3;position:relative;min-height:60px;box-shadow:0 1px 3px #0000000a}.show-cell:hover{transform:scale(1.02);box-shadow:0 6px 12px #00000014;border-color:#e85462}.show-cell:focus-visible{outline:3px solid #008fbe;outline-offset:2px;transform:scale(1.02)}.show-cell.available{position:relative;background:linear-gradient(135deg,#f8f9fa,#f1f5f9);border:2px solid #10b981}.show-cell.available:before{content:"";position:absolute;top:-2px;left:-2px;right:-2px;height:6px;background:linear-gradient(90deg,#34d399,#10b981);border-radius:8px 8px 0 0;z-index:1}.show-cell.available .show-time{margin-top:10px}.show-cell.available>*{position:relative;z-index:2}.show-cell.sold-out{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:2px solid #ef4444;opacity:.7}.show-cell.preview,.show-cell.free{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:2px solid #10b981}.show-cell.cancelled{background:linear-gradient(135deg,#f9fafb,#f3f4f6);border:2px solid #6b7280;opacity:.6}.show-cell.unknown{background:linear-gradient(135deg,#faf5ff,#f3e8ff);border:2px solid #8b5cf6}.show-cell.past{background:linear-gradient(135deg,#f5fbff,#f1f5f9);border:2px solid #94a3b8;opacity:.5;filter:grayscale(.3)}.show-cell.past:hover{transform:scale(1.01);box-shadow:0 2px 8px #0000000d;border-color:#4d6677}.show-cell.past .show-name,.show-cell.past .show-artist{color:#4d6677}.show-cell.past .show-venue,.show-cell.past .show-price{color:#94a3b8}.show-cell.past .show-status{background:#94a3b8!important;color:#fff}.show-name{font-family:Playfair Display,Georgia,Times New Roman,serif;font-weight:700;font-size:16px;line-height:1.3;margin-bottom:4px;color:#002b49;letter-spacing:0}.show-artist{font-weight:700;font-size:16px;line-height:1.3;margin-bottom:2px;color:#002b49;letter-spacing:0}.show-title{font-size:12px;line-height:1.3;margin-bottom:4px;color:#4d6677}.show-subtitle{font-size:14px;color:#4d6677;margin:-4px 0 12px;line-height:1.4}.show-venue{font-size:13px;color:#4d6677;margin-bottom:3px}.show-distance{font-size:11px;font-weight:700;color:#00688a;margin-left:4px}.show-status{position:absolute;top:2px;right:3px;font-size:9px;padding:3px 8px;border-radius:3px;font-weight:600;text-transform:uppercase;z-index:3;min-width:80px;text-align:center}.show-status.available{background:linear-gradient(90deg,#86efac,#4ade80);color:#fff;font-size:11px;padding:2px 6px}.show-status.sold-out{background:#ef4444;color:#fff}.show-status.preview{background:#10b981;color:#fff}.show-status.free{background:#3b82f6;color:#fff}.show-status.cancelled{background:#6b7280;color:#fff}.show-status.unknown{background:#8b5cf6;color:#fff}.show-status.past{background:#94a3b8;color:#fff}.show-cell .accessibility-icon{position:absolute;bottom:3px;right:3px;font-size:9px;background:#0891b2;color:#fff;padding:1px 3px;border-radius:2px;z-index:3;line-height:1}.show-price{font-size:11px;color:#059669;font-weight:700;margin-top:2px;background:#0596691a;padding:1px 3px;border-radius:2px;display:inline-block;min-width:fit-content}.show-price.free{color:#3b82f6;background:#3b82f61a}.empty-cell{background:#fafafa;color:#9ca3af;font-style:italic;font-size:11px;display:flex;align-items:center;justify-content:center;min-height:60px}.loading-container{text-align:center;padding:60px;color:#002b49;font-weight:700}.loading-spinner{width:40px;height:40px;border:4px solid #e3ecf3;border-top:4px solid #002b49;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;padding:30px;border-radius:12px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #0000004d}.close{position:absolute;top:15px;right:20px;font-size:28px;font-weight:700;cursor:pointer;color:#999;background:none;border:none;padding:4px 8px;line-height:1}.close:hover{color:#333}.show-details h2{font-family:Playfair Display,Georgia,Times New Roman,serif;color:#002b49;margin-bottom:20px;font-size:1.8em}.show-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:25px}.info-item{display:flex;flex-direction:column;gap:5px}.info-item .label{font-weight:700;color:#00688a;font-size:.9em;text-transform:uppercase;letter-spacing:.04em}.info-item .value{color:#002b49;font-size:1em}.ticket-status{padding:15px;border-radius:8px;margin-bottom:20px}.ticket-status h3{margin-bottom:10px;font-size:1.2em}.ticket-status.available{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.ticket-status.sold-out{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.ticket-status.cancelled{background:#fff3cd;color:#856404;border:1px solid #ffeaa7}.ticket-status.past{background:#f5fbff;color:#4d6677;border:1px solid #e3ecf3;opacity:.7}.ticket-status.free{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.ticket-status.special-offer{background:#e2e3e5;color:#383d41;border:1px solid #d6d8db}.booking-link{text-align:center;margin-top:20px}.book-button{display:inline-block;background:#ffce00;color:#002b49;padding:14px 24px;border-radius:4px;text-decoration:none;font-weight:700;transition:all .3s cubic-bezier(.23,1,.32,1);letter-spacing:.04em}.book-button:hover{background:#ffd833;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.venue-button{display:inline-block;background:#002b49;color:#fff;padding:14px 24px;border-radius:4px;text-decoration:none;font-weight:700;transition:all .3s cubic-bezier(.23,1,.32,1);letter-spacing:.04em}.venue-button:hover{background:#00243d;transform:translateY(-2px);box-shadow:0 4px 12px #002b494d}.column-filters{margin:20px 0;padding:15px 0;border-top:1px solid #e3ecf3;border-bottom:1px solid #e3ecf3}.column-filters label{font-weight:600;margin-bottom:12px;color:#002b49;font-size:.875rem;letter-spacing:.01em;display:block}.column-filter-lozenges{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.column-lozenge{display:inline-flex;align-items:center;padding:8px 16px;min-height:44px;border:2px solid #e3ecf3;border-radius:22px;background:#fff;color:#4d6677;font-weight:700;cursor:pointer;transition:all .3s cubic-bezier(.23,1,.32,1);-webkit-user-select:none;user-select:none;font-size:.85em;white-space:nowrap;font-family:inherit}.column-lozenge:hover{border-color:#002b49;color:#002b49;transform:translateY(-1px)}.column-lozenge.active{background:#002b49;border-color:#002b49;color:#fff}.column-lozenge.active:hover{background:#00243d;border-color:#00243d;transform:translateY(-1px)}.availability-info{background:#f5fbff;border:1px solid #e3ecf3;border-radius:8px;padding:15px;margin-bottom:20px}.availability-info h3{margin-bottom:15px;font-size:1.2em;color:#002b49}.availability-display{display:flex;flex-direction:column;gap:10px}.availability-bar-container{width:100%;height:24px;background:linear-gradient(90deg,#fef2f2,#fee2e2);border-radius:12px;overflow:hidden;position:relative;border:1px solid #fee2e2}.availability-bar{height:100%;background:linear-gradient(90deg,#86efac,#4ade80);transition:width .3s ease;border-radius:11px}.availability-text{font-size:1.1em;font-weight:600;color:#475569;text-align:center;margin:0}.auth-modal{text-align:center}.auth-modal h2{font-family:Playfair Display,Georgia,Times New Roman,serif;color:#002b49;margin-bottom:16px;font-size:1.6em}.auth-message{color:#4d6677;margin-bottom:16px;font-size:.95em}.auth-tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid #e3ecf3}.auth-tab{flex:1;padding:12px 16px;background:none;border:none;font-size:1em;font-weight:600;color:#4d6677;cursor:pointer;transition:all .2s;border-bottom:3px solid transparent;margin-bottom:-2px;font-family:inherit}.auth-tab:hover{color:#002b49}.auth-tab.active{color:#002b49;border-bottom-color:#e85462}.auth-form{text-align:left}.auth-error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca;border-radius:8px;padding:12px;margin-bottom:16px;font-size:.9em;text-align:center}.form-group{margin-bottom:16px}.form-group label{display:block;font-weight:600;margin-bottom:6px;color:#002b49;font-size:.9em}.form-group input{width:100%;padding:12px;border:1px solid #c7dae7;border-radius:8px;font-size:16px;transition:border-color .2s;font-family:inherit}.form-group input:focus{border-color:#008fbe;box-shadow:0 0 0 3px #008fbe1a;outline:none}.form-group input:disabled{background:#f5f5f5;cursor:not-allowed}.auth-submit{width:100%;padding:14px;background:#002b49;color:#fff;border:none;border-radius:8px;font-size:1em;font-weight:700;cursor:pointer;transition:all .2s;letter-spacing:.04em;font-family:inherit;margin-top:8px}.auth-submit:hover:not(:disabled){background:#00243d;transform:translateY(-1px);box-shadow:0 4px 12px #002b494d}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.my-shows-header{text-align:center;margin-bottom:30px}.my-shows-header h1{color:#002b49;font-family:Playfair Display,Georgia,Times New Roman,serif;margin-bottom:16px}.date-nav{display:flex;align-items:center;justify-content:center;gap:16px}.date-nav button{background:#002b49;color:#fff;border:none;border-radius:4px;width:40px;height:40px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.date-nav button:hover{background:#00243d;transform:translateY(-1px)}.date-nav .current-date{font-weight:700;font-size:1.1em;color:#002b49;min-width:200px;text-align:center}.my-shows-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:15px}.empty-state{text-align:center;padding:60px 20px;color:#4d6677}.empty-state p{margin-bottom:12px;font-size:1.1em}.empty-state a{color:#008fbe;text-decoration:none;font-weight:600}.empty-state a:hover{text-decoration:underline}@media(max-width:1200px){.grid-header-cell,.show-cell,.show-name{font-size:11px}.show-venue{font-size:9px}}@media(max-width:1024px){.show-grid[style*="grid-template-columns: repeat(1, 1fr)"]{max-width:500px}.show-grid[style*="grid-template-columns: repeat(2, 1fr)"]{max-width:700px}.show-grid[style*="grid-template-columns: repeat(3, 1fr)"]{max-width:100%}}@media(max-width:768px){main{padding:10px}header{margin:10px 10px 20px;padding:30px 15px 20px}h1{font-size:1.8em}.header-auth{position:static;justify-content:center;margin-top:15px}.filters{grid-template-columns:1fr}.column-filter-lozenges{gap:8px}.column-lozenge{padding:6px 12px;font-size:.8em}.toggle-buttons{justify-content:center}.show-grid{min-width:800px}.show-grid[style*="grid-template-columns: repeat(1, 1fr)"]{grid-template-columns:1fr;max-width:300px;margin:0 auto;min-width:0}.show-grid[style*="grid-template-columns: repeat(2, 1fr)"]{grid-template-columns:repeat(2,1fr);max-width:500px;margin:0 auto;min-width:0}.show-grid[style*="grid-template-columns: repeat(3, 1fr)"]{grid-template-columns:repeat(3,1fr);max-width:700px;margin:0 auto;min-width:0}.show-grid[style*="grid-template-columns: repeat(4, 1fr)"]{grid-template-columns:repeat(4,1fr);max-width:100%;min-width:800px}.grid-header-cell{padding:8px 4px;font-size:.8rem}.show-grid.expanded-wildcard{grid-template-columns:1fr 1fr 1fr 2fr!important;min-width:1000px}.show-grid.expanded-wildcard .column-container:last-child{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px;padding:8px;min-width:200px}.show-grid.expanded-wildcard .column-container:last-child .show-cell{width:100%!important;min-width:auto!important;max-width:none!important;min-height:60px;margin:0}.show-info-grid{grid-template-columns:1fr}.my-shows-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}
