:root{--paper: #EFE9D8;--paper-edge: #E5DEC9;--paper-deep: #D9D1B8;--ink: #1A1817;--ink-soft: #3D3936;--ink-mute: #6E6960;--red: #C8311A;--red-deep: #9C2614;--navy: #1C3C5C;--mustard: #E3A621;--spotify: #1DB954;--spotify-hi: #1ED760;--f-display: "Big Shoulders Display", "Arial Narrow", sans-serif;--f-body: "Inter", system-ui, -apple-system, sans-serif;--f-mono: "JetBrains Mono", ui-monospace, "Menlo", monospace;--ease-print: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.4, 0, .2, 1);--dur-fast: .18s;--dur-base: .32s;--dur-slow: .62s;--rule: 1px solid var(--ink);--rule-thick: 3px solid var(--ink)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--f-body);color:var(--ink);background:var(--paper);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.55;mix-blend-mode:multiply}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at center,transparent 55%,rgba(26,24,23,.08) 100%)}#root{position:relative;z-index:2;min-height:100vh}::selection{background:var(--red);color:var(--paper)}.display{font-family:var(--f-display);font-weight:900;letter-spacing:-.005em;line-height:.88;text-transform:uppercase}.kicker{font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-mute)}.label-mono{font-family:var(--f-mono);font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.muted{color:var(--ink-mute)}.page{max-width:1280px;margin:0 auto;padding:2rem clamp(1.25rem,3vw,3rem) 5rem}.masthead{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;padding-bottom:1rem;border-bottom:var(--rule-thick);margin-bottom:2.25rem}.masthead-mark{display:flex;flex-direction:column;gap:.05em;line-height:.85;font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(2rem,5.5vw,3.4rem);letter-spacing:-.01em}.masthead-mark .line-2{color:var(--red);margin-left:.5ch}.masthead-side{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem}.masthead-side .label-mono{font-size:.62rem}.masthead-side .issue{font-family:var(--f-mono);font-size:.82rem;font-weight:500}.landing{display:grid;grid-template-columns:1fr;gap:2.5rem;padding:3rem 0 4rem;position:relative}.landing-eyebrow{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.landing-eyebrow:before,.landing-eyebrow:after{content:"";flex:1;height:1px;background:var(--ink);max-width:60px}.landing-eyebrow .kicker{color:var(--ink)}.landing-headline{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(3.5rem,11vw,8.5rem);line-height:.84;letter-spacing:-.015em;margin:0}.landing-headline span{display:block}.landing-headline .accent{color:var(--red);position:relative;display:inline-block}.landing-headline .accent:after{content:"";position:absolute;left:0;right:0;bottom:-.22em;height:.1em;background:var(--red);transform:scaleX(0);transform-origin:left;animation:ink-stamp var(--dur-slow) var(--ease-print) .6s forwards}.landing-sub{font-size:1.15rem;max-width:36ch;margin:0;color:var(--ink-soft);line-height:1.45}.landing-cta{display:flex;align-items:center;gap:1.25rem;margin-top:1rem;flex-wrap:wrap}.landing-credit{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-mute);display:flex;align-items:center;gap:.4rem;letter-spacing:.02em}button{font-family:var(--f-body);cursor:pointer;border:none;background:transparent;color:inherit}.btn-spotify{display:inline-flex;align-items:center;gap:.65rem;background:var(--spotify);color:#0e0e10;font-family:var(--f-body);font-weight:700;font-size:1rem;letter-spacing:.005em;padding:.95rem 1.6rem .95rem 1.4rem;border-radius:999px;transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.btn-spotify:hover{background:var(--spotify-hi);transform:translateY(-1px)}.btn-spotify:active{transform:translateY(0)}.btn-spotify svg{width:22px;height:22px}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;background:var(--ink);color:var(--paper);font-family:var(--f-display);font-weight:800;font-size:1.05rem;letter-spacing:.1em;text-transform:uppercase;padding:1rem 1.6rem;border:2px solid var(--ink);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.btn-primary:hover{background:var(--red);border-color:var(--red);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{background:var(--ink-mute);border-color:var(--ink-mute);cursor:wait;transform:none}.btn-primary .arrow{font-size:1.2em;line-height:0}.btn-ghost{font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);padding:.55rem .75rem;border:1px solid var(--ink);background:transparent;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.btn-ghost:hover{background:var(--ink);color:var(--paper)}.btn-ghost:disabled{color:var(--ink-mute);border-color:var(--ink-mute);cursor:wait}.link-mono{font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:1px;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.link-mono:hover{color:var(--red);border-color:var(--red)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:2rem;margin-top:4rem;margin-bottom:1.5rem;border-top:var(--rule);padding-top:1.25rem}.section-head .display{font-size:clamp(1.8rem,3.6vw,2.8rem);margin:0}.section-head .kicker{white-space:nowrap}.artists-wall{display:grid;grid-template-columns:repeat(var(--cols, 5),minmax(0,1fr));gap:1px;background:var(--ink);border:var(--rule);margin-bottom:1rem}@media (max-width: 720px){.artists-wall{grid-template-columns:repeat(3,minmax(0,1fr))}.artist-tile.placeholder{display:none}}@media (max-width: 460px){.artists-wall{grid-template-columns:repeat(2,minmax(0,1fr))}}.artist-tile{background:var(--paper-edge);padding:.85rem;display:flex;flex-direction:column;justify-content:flex-end;aspect-ratio:1 / 1;min-height:0;position:relative;overflow:hidden;transition:background var(--dur-base) var(--ease-out)}.artist-tile:hover{background:var(--paper)}.artist-tile .num{position:absolute;top:.55rem;left:.7rem;z-index:3;font-family:var(--f-mono);font-size:.72rem;font-weight:700;letter-spacing:.06em;color:var(--paper);text-shadow:0 1px 2px rgba(0,0,0,.55)}.artist-tile.no-image .num{color:var(--ink);text-shadow:none}.artist-tile.custom .num{color:var(--red)}.artist-tile .name{position:relative;z-index:2;font-family:var(--f-display);font-weight:800;text-transform:uppercase;font-size:clamp(1.05rem,1.5vw,1.35rem);line-height:.95;letter-spacing:-.005em;color:var(--paper);text-shadow:0 1px 3px rgba(0,0,0,.55),0 0 12px rgba(0,0,0,.25)}.artist-tile .image{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center top;filter:grayscale(1) contrast(1.05);mix-blend-mode:multiply;opacity:.78;z-index:0;transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-slow) var(--ease-print)}.artist-tile:hover .image{opacity:.92;transform:scale(1.03)}.artist-tile .image:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--red);mix-blend-mode:multiply;opacity:.32}.artist-tile .shade{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:linear-gradient(to top,#000000c7,#00000059 30%,#0000 65%)}.artist-tile.no-image .name{color:var(--red);text-shadow:none}.artist-tile .remove-custom{position:absolute;top:.5rem;right:.55rem;z-index:4;width:1.5rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center;font-family:var(--f-mono);font-size:.95rem;font-weight:700;line-height:1;color:var(--paper);background:#0000008c;border:1px solid rgba(239,233,216,.35);border-radius:50%;cursor:pointer;opacity:0;transition:opacity var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.artist-tile:hover .remove-custom,.artist-tile .remove-custom:focus-visible{opacity:1}.artist-tile .remove-custom:hover{background:var(--red);border-color:var(--red)}.artist-tile.no-image .remove-custom{color:var(--ink);background:var(--paper);border-color:var(--ink)}.artist-tile.no-image .remove-custom:hover{background:var(--red);border-color:var(--red);color:var(--paper)}.artist-tile.placeholder{background:var(--paper-edge);background-image:repeating-linear-gradient(45deg,transparent 0,transparent 10px,rgba(26,24,23,.04) 10px,rgba(26,24,23,.04) 11px);pointer-events:none}.artist-tile.placeholder:hover{background-color:var(--paper-edge)}.add-artist-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1.25rem;padding:1rem 0;margin-top:1rem;border-top:var(--rule);border-bottom:var(--rule)}.add-artist-bar .label-mono{white-space:nowrap;font-size:.68rem}.add-artist-bar input{width:100%;font-family:var(--f-body);font-size:1rem;font-weight:500;color:var(--ink);background:transparent;border:none;border-bottom:1.5px solid var(--ink);padding:.4rem 0;outline:none;border-radius:0;transition:border-color var(--dur-fast) var(--ease-out)}.add-artist-bar input:focus{border-bottom-color:var(--red)}.add-artist-bar input::placeholder{color:var(--ink-mute);font-style:italic}@media (max-width: 640px){.add-artist-bar{grid-template-columns:1fr;gap:.75rem}}.controls-strip{border-top:var(--rule);border-bottom:var(--rule-thick);padding:1.5rem 0;margin-top:3rem;display:grid;grid-template-columns:minmax(260px,2.2fr) 110px 160px minmax(180px,1.4fr) auto;gap:2rem;align-items:stretch}@media (max-width: 900px){.controls-strip{grid-template-columns:1fr 1fr;gap:1.5rem}.controls-strip .ctrl-location,.controls-strip .ctrl-submit{grid-column:1 / -1}}@media (max-width: 540px){.controls-strip{grid-template-columns:1fr}}.ctrl{display:grid;grid-template-rows:auto auto 1.1em;row-gap:.5rem;min-width:0}.ctrl-row{display:flex;align-items:center;gap:.6rem}.ctrl>.label-mono,.add-artist-bar>.label-mono{font-family:var(--f-body);font-size:.82rem;font-weight:500;letter-spacing:.005em;text-transform:none;color:var(--ink-soft);display:flex;align-items:baseline;gap:.5rem;justify-content:space-between}.ctrl-hint{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);font-weight:400;padding:.05rem .4rem;background:var(--paper-deep);border:1px solid var(--ink-mute);border-radius:999px;white-space:nowrap}.ctrl-readout{display:block;min-height:1em;font-family:var(--f-mono);font-size:.68rem;color:var(--ink-mute);letter-spacing:.04em}.stepper{display:grid;grid-template-columns:28px 1fr 28px;align-items:end;gap:0;border-bottom:1.5px solid var(--ink);transition:border-color var(--dur-fast) var(--ease-out)}.stepper:focus-within{border-bottom-color:var(--red)}.stepper>input{text-align:center;border-bottom:none!important;padding:.45rem 0}.stepper-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;font-family:var(--f-display);font-size:1.4rem;line-height:1;color:var(--ink-soft);cursor:pointer;padding:.25rem 0;display:inline-flex;align-items:center;justify-content:center;transition:color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.stepper-btn:hover:not(:disabled){color:var(--red)}.stepper-btn:active:not(:disabled){transform:translateY(1px)}.stepper-btn:disabled{opacity:.25;cursor:not-allowed}.ctrl-submit-cell>.ctrl-submit{align-self:stretch}.ctrl input,.ctrl select{width:100%;font-family:var(--f-body);font-size:1rem;font-weight:500;color:var(--ink);background:transparent;border:none;border-bottom:1.5px solid var(--ink);padding:.45rem 0;outline:none;border-radius:0;transition:border-color var(--dur-fast) var(--ease-out);-webkit-appearance:none;-moz-appearance:none;appearance:none}.ctrl input:focus,.ctrl select:focus{border-bottom-color:var(--red)}.ctrl input::placeholder{color:var(--ink-mute);font-style:italic}.ctrl input[type=number]::-webkit-outer-spin-button,.ctrl input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ctrl input[type=number]{-moz-appearance:textfield}.ctrl select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A1817' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .1rem center;background-size:14px;padding-right:1.6rem}.controls-hint{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.06em;color:var(--ink-mute);margin:.75rem 0 0;text-align:right}.controls-status{font-family:var(--f-mono);font-size:.78rem;color:var(--red-deep);background:#c8311a14;border-left:3px solid var(--red);padding:.5rem .75rem;margin:1rem 0 0;letter-spacing:.02em}.progress-strip{margin-top:1rem;border-top:var(--rule);padding-top:.85rem}.progress-track{position:relative;width:100%;height:10px;background:var(--paper-deep);border:1px solid var(--ink);overflow:hidden}.progress-fill{height:100%;background:repeating-linear-gradient(-45deg,var(--red) 0 8px,var(--red-deep) 8px 16px);transition:width .32s var(--ease-out)}.progress-meta{display:flex;justify-content:space-between;margin-top:.45rem;font-size:.7rem;color:var(--ink-soft)}@media (prefers-reduced-motion: reduce){.progress-fill{transition:none}}.results{margin-top:4rem}.results-empty{text-align:center;padding:3rem 0;font-family:var(--f-mono);color:var(--ink-mute);letter-spacing:.05em}.artist-block{margin-top:3rem;padding-top:2rem;border-top:var(--rule);position:relative}.artist-block:first-child{margin-top:1rem;border-top:none}.artist-header{display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:1.5rem;margin-bottom:1.5rem}.artist-header .num{font-family:var(--f-mono);font-size:.82rem;font-weight:700;letter-spacing:.1em;color:var(--ink-mute);padding-bottom:.4rem}.artist-header .name{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(2.4rem,5.5vw,4.6rem);line-height:.85;letter-spacing:-.012em;margin:0;word-break:break-word}.artist-header .count{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute);padding-bottom:.45rem;white-space:nowrap}.show-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}.show-stub{border:1px solid var(--ink);padding:1.1rem 1.2rem 1.2rem;display:grid;grid-template-columns:78px 1fr;gap:1rem;background:var(--paper-edge);transition:background var(--dur-base) var(--ease-out),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);position:relative}.show-stub:hover{background:var(--paper);transform:translateY(-1px);box-shadow:3px 3px 0 var(--ink)}.stub-date{display:flex;flex-direction:column;align-items:flex-start;font-family:var(--f-display);font-weight:900;line-height:.85;text-transform:uppercase}.stub-date .month{font-size:1.05rem;color:var(--red);letter-spacing:.02em}.stub-date .day{font-size:2.6rem;margin-top:.1rem}.stub-date .year{font-family:var(--f-mono);font-weight:500;font-size:.72rem;color:var(--ink-mute);margin-top:.35rem;letter-spacing:.06em}.stub-body{display:flex;flex-direction:column;gap:.5rem;min-width:0}.stub-event{font-family:var(--f-body);font-size:.97rem;font-weight:600;line-height:1.3;color:var(--ink)}.stub-venue{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-soft);letter-spacing:.02em;line-height:1.4}.stub-venue .city{color:var(--ink-mute)}.stub-ticket{margin-top:auto;padding-top:.4rem;font-family:var(--f-body);font-size:.88rem;font-weight:500;letter-spacing:0;color:var(--ink-soft);text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;border-bottom:1px solid var(--ink-mute);padding-bottom:1px;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.stub-ticket:hover{color:var(--red);border-color:var(--red)}.stub-ticket .arrow{font-size:.95em;line-height:1;transition:transform var(--dur-fast) var(--ease-out)}.stub-ticket:hover .arrow{transform:translate(2px,-2px)}.no-shows{font-family:var(--f-mono);font-size:.82rem;color:var(--ink-mute);padding:1rem 0 2rem;letter-spacing:.04em}.colophon{margin-top:6rem;padding-top:1.5rem;border-top:var(--rule-thick);display:flex;align-items:flex-start;justify-content:space-between;gap:2rem;flex-wrap:wrap}.colophon .mark{font-family:var(--f-display);font-weight:900;font-size:1.4rem;text-transform:uppercase;letter-spacing:-.01em}.colophon-credits{display:flex;flex-direction:column;gap:.4rem;font-family:var(--f-mono);font-size:.75rem;color:var(--ink-mute);letter-spacing:.04em;text-align:right}.brand-wordmark{font-family:var(--f-display);font-weight:900;letter-spacing:.04em}.brand-wordmark.spotify{color:var(--spotify)}.brand-wordmark.ticketmaster{color:var(--navy)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes ink-stamp{0%{transform:scaleX(0);opacity:.4}to{transform:scaleX(1);opacity:1}}.rise{animation:rise var(--dur-slow) var(--ease-print) both}.rise-stagger>*{animation:rise var(--dur-slow) var(--ease-print) both}.rise-stagger>*:nth-child(1){animation-delay:20ms}.rise-stagger>*:nth-child(2){animation-delay:80ms}.rise-stagger>*:nth-child(3){animation-delay:.14s}.rise-stagger>*:nth-child(4){animation-delay:.2s}.rise-stagger>*:nth-child(5){animation-delay:.26s}.rise-stagger>*:nth-child(6){animation-delay:.32s}.rise-stagger>*:nth-child(7){animation-delay:.38s}.rise-stagger>*:nth-child(8){animation-delay:.44s}.rise-stagger>*:nth-child(9){animation-delay:.5s}.rise-stagger>*:nth-child(10){animation-delay:.56s}.rise-stagger>*:nth-child(n+11){animation-delay:.62s}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
