@import"https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&family=DM+Sans:wght@300;400;500&display=swap";:root{--bg: #f7f4ef;--surface: #ffffff;--ink: #1a1612;--ink-muted: #6b6259;--border: #e0d9d0;--col-scs: #FFB3AF;--col-at: #A8CFEE;--col-mct: #A8DCBF;--col-other: #C8C8D0;--col-multi: #CBBDED;--pip-eve: #2c2c2c;--pip-mat: #8a8278;--radius: 6px;--header-h: 52px;--filter-h: 40px;--col-header-h: 28px;--footer-h: 60px;--shows-col-w: 160px;--daynum-h: 16px;--row-h: 22px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:DM Sans,sans-serif;background:var(--bg);color:var(--ink);min-height:100vh;font-size:14px;padding-top:calc(var(--header-h) + var(--filter-h))}.app-header{position:fixed;top:0;left:0;right:0;z-index:110;background:var(--ink);color:#fff;height:var(--header-h);display:flex;align-items:center;padding:0 16px;gap:12px;-webkit-transform:translateZ(0);transform:translateZ(0)}.app-header h1{font-family:Playfair Display,serif;font-size:18px;font-weight:600;letter-spacing:.02em;flex:1}.back-btn{background:none;border:none;color:#fff;font-size:22px;cursor:pointer;padding:4px 8px 4px 0;display:none;-webkit-tap-highlight-color:transparent}.back-btn.visible{display:block}.filter-bar{position:fixed;top:var(--header-h);left:0;right:0;z-index:109;background:var(--surface);border-bottom:1px solid var(--border);height:var(--filter-h);padding:0 12px;display:flex;gap:6px;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch;-webkit-transform:translateZ(0);transform:translateZ(0)}.filter-bar label{font-size:11px;color:var(--ink-muted);font-weight:500;white-space:nowrap}.filter-bar select{font-family:inherit;font-size:12px;border:1px solid var(--border);border-radius:4px;padding:3px 6px;background:var(--bg);color:var(--ink);cursor:pointer}.filter-sep{color:var(--border);margin:0 2px;flex-shrink:0}.scroll-col-header{display:none;position:fixed;top:calc(var(--header-h) + var(--filter-h));left:0;right:0;z-index:108;background:var(--ink);color:#fff;height:var(--col-header-h);-webkit-transform:translateZ(0);transform:translateZ(0);overflow-x:auto;-webkit-overflow-scrolling:touch}.scroll-col-header.visible{display:block}.scroll-col-header-inner{display:grid;grid-template-columns:var(--shows-col-w) repeat(7,1fr);min-width:520px;max-width:960px;margin:0 auto;height:100%}.col-head-cell{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:500;border-left:1px solid rgba(255,255,255,.15);padding:0 3px}.col-head-cell:first-child{justify-content:flex-start;padding-left:8px;border-left:none;font-size:10px;color:#ffffffb3}body.scroll-mode{padding-top:calc(var(--header-h) + var(--filter-h) + var(--col-header-h));padding-bottom:calc(var(--footer-h) + 8px)}body.annual-mode{padding-bottom:calc(var(--footer-h) + 8px)}#annual-view{padding:2px;max-width:960px;margin:0 auto}.year-title{font-family:Playfair Display,serif;font-size:24px;font-weight:700;text-align:center;margin-bottom:16px;letter-spacing:-.02em}.months-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media(min-aspect-ratio:1/1){.months-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:480px){.months-grid{grid-template-columns:repeat(2,1fr)}}.month-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:box-shadow .15s}.month-block:active{opacity:.8}.month-name{font-family:Playfair Display,serif;font-size:13px;font-weight:600;padding:4px 6px 3px;border-bottom:1px solid var(--border);letter-spacing:.02em}.mini-cal{padding:1px}.mini-cal-head{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:1px}.mini-cal-head span{text-align:center;font-size:10px;font-weight:500;color:var(--ink-muted)}.mini-cal-body{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;width:100%}.mini-day{min-width:0;height:22px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--ink-muted)}.mini-day.has-perf{color:#000000bf;font-weight:600}.mini-day.has-perf.multi{background:var(--col-multi)!important}.mini-day.empty{opacity:0}.legend{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}.legend-title{font-size:11px;font-weight:500;color:var(--ink-muted)}.legend-item{display:flex;align-items:center;gap:5px;font-size:11px}.legend-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}#scroll-view{display:none;max-width:960px;margin:0 auto;overflow-x:auto;-webkit-overflow-scrolling:touch}.scroll-month-label{padding:5px 12px 4px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;color:var(--ink-muted);background:var(--bg);letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid var(--border)}.week-grid{display:grid;grid-template-columns:var(--shows-col-w) repeat(7,1fr);border-bottom:2px solid var(--border);min-width:520px;background:var(--surface)}.shows-col{background:var(--bg);border-right:2px solid var(--border);display:grid;padding:0}.shows-col-spacer{height:var(--daynum-h);border-bottom:1px solid var(--border)}.show-chip{height:calc(var(--row-h) - 2px);margin:1px 3px;border-radius:3px;display:flex;align-items:center;gap:5px;padding:0 6px;font-size:12px;font-weight:400;white-space:nowrap;overflow:hidden}.show-chip-bar{width:4px;height:16px;border-radius:2px;flex-shrink:0}.show-chip-name{overflow:hidden;text-overflow:ellipsis}.day-col{border-left:1px solid var(--border);display:flex;flex-direction:column}.day-col.other-month{background:#f0ede8}.day-col.has-perf{cursor:pointer;-webkit-tap-highlight-color:transparent}.day-col:active.has-perf{background:#0000000a}.day-num-row{height:var(--daynum-h);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border);flex-shrink:0}.day-num{font-size:10px;color:var(--ink-muted);line-height:1}.day-num.today{background:var(--ink);color:#fff;border-radius:50%;width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:10px}.pip-row{height:var(--row-h);position:relative;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border);flex-shrink:0}.pip-row:last-child{border-bottom:none}.perf-bar{position:absolute;top:1px;bottom:1px;z-index:1;display:flex;align-items:center;justify-content:center;gap:3px}.perf-bar.bar-single{left:3px;right:3px;border-radius:3px}.perf-bar.bar-start{left:3px;right:0;border-radius:3px 0 0 3px}.perf-bar.bar-mid{left:-1px;right:0;border-radius:0}.perf-bar.bar-end{left:-1px;right:3px;border-radius:0 3px 3px 0}.perf-label{font-size:10px;font-weight:700;letter-spacing:.02em;color:#000000bf;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1}.fixed-legend-footer{display:none;position:fixed;bottom:0;left:0;right:0;z-index:108;background:var(--surface);border-top:1px solid var(--border);min-height:var(--footer-h);padding:8px 14px;padding-bottom:max(8px,env(safe-area-inset-bottom,8px));align-items:center;flex-wrap:wrap;gap:8px 12px}.fixed-legend-footer.visible{display:flex}.fixed-legend-footer .legend-title{font-size:10px;font-weight:600;color:var(--ink-muted);white-space:nowrap}.fixed-legend-footer .legend-item{font-size:10px;white-space:nowrap;flex-shrink:0;gap:4px}.fixed-legend-footer .legend-dot{width:10px;height:10px;border-radius:2px}.overlay{display:none;position:fixed;inset:0;background:#0006;z-index:200}.overlay.open{display:block}.bottom-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-radius:16px 16px 0 0;z-index:201;max-height:80vh;overflow-y:auto;-webkit-overflow-scrolling:touch;transform:translateY(100%);-webkit-transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);padding-bottom:env(safe-area-inset-bottom,16px)}.bottom-sheet.open{transform:translateY(0);-webkit-transform:translateY(0)}.sheet-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:12px auto 0}.sheet-date-header{padding:12px 20px 8px;font-family:Playfair Display,serif;font-size:16px;font-weight:600;border-bottom:1px solid var(--border)}.perf-card{padding:14px 20px;border-bottom:1px solid var(--border)}.perf-card:last-child{border-bottom:none}.perf-card-company{display:flex;align-items:center;gap:6px;margin-bottom:4px}.company-badge{width:8px;height:8px;border-radius:50%;flex-shrink:0}.company-name{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.perf-type-tag{font-size:10px;padding:1px 6px;border-radius:10px;background:#f0ece6;color:var(--ink-muted);margin-left:auto}.card-show-title{font-family:Playfair Display,serif;font-size:17px;font-weight:600;margin-bottom:6px;line-height:1.3}.card-meta{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12px;color:var(--ink-muted);margin-bottom:10px}.card-meta-item{display:flex;gap:4px}.card-meta-label{font-weight:500;color:var(--ink)}.card-discounts{font-size:11px;color:var(--ink-muted);margin-bottom:10px}.card-buttons{display:flex;gap:8px}.btn-info,.btn-tickets{flex:1;padding:9px 12px;border-radius:6px;font-family:inherit;font-size:12px;font-weight:500;cursor:pointer;text-decoration:none;text-align:center;border:none}.btn-info{background:var(--bg);border:1px solid var(--border);color:var(--ink)}.btn-tickets{background:var(--ink);color:#fff}.btn-info[aria-disabled=true],.btn-tickets[aria-disabled=true]{opacity:.35;cursor:default;pointer-events:none}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}@media(hover:hover){.day-hover-panel{display:none;position:fixed;z-index:300;width:240px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 20px #0000001f;pointer-events:none}.day-hover-panel.visible{display:block}.hover-panel-header{font-family:Playfair Display,serif;font-size:13px;font-weight:600;padding:8px 12px;border-bottom:1px solid var(--border)}.hover-panel-row{padding:6px 12px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:2px}.hover-panel-row:last-child{border-bottom:none}.hover-panel-show{font-size:12px;font-weight:500;display:flex;align-items:center;gap:6px}.hover-panel-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}.hover-panel-meta{font-size:11px;color:var(--ink-muted);padding-left:14px}}
