
:root { color-scheme:dark; font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; --bg:#070a0f; --panel:#111821; --panel2:#171f2a; --line:rgba(255,255,255,.1); --text:#f6f8fb; --muted:#9ca9b9; --rookie:#e23b3b; --d:#f08a24; --c:#f3cf3e; --b:#38b86c; --a:#3988e8; }
* { box-sizing:border-box; }
body { margin:0; min-width:320px; overflow-x:hidden; background:radial-gradient(circle at 70% 0,rgba(27,91,173,.17),transparent 36%),linear-gradient(180deg,#101722,#070a0f 500px); color:var(--text); }
button,input,select { font:inherit; }
.calendar-shell { width:100%; max-width:1600px; min-width:0; margin:0 auto; padding:18px; }
.calendar-head { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:22px 24px; border:1px solid var(--line); border-radius:12px; background:linear-gradient(135deg,rgba(19,28,39,.98),rgba(8,13,20,.96)); box-shadow:0 18px 50px rgba(0,0,0,.3); }
.calendar-head>div { min-width:0; }
.calendar-brand { display:flex; align-items:center; gap:18px; }
.calendar-logo { display:block; width:210px; max-height:112px; object-fit:contain; border-radius:8px; background:white; }
.eyebrow { margin:0 0 7px; color:#6ca8ff; font-size:11px; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
h1,h2,h3,p { margin:0; }
h1 { font-size:clamp(30px,4vw,52px); line-height:1; }
.subhead { margin-top:8px; color:var(--muted); overflow-wrap:anywhere; }
.head-links { display:flex; flex-wrap:wrap; gap:8px; }
.head-links a { padding:10px 13px; border:1px solid var(--line); border-radius:7px; color:#dce7f7; text-decoration:none; font-size:13px; font-weight:800; background:#0c121a; }
.member-panel { margin-top:10px; padding:12px 14px; border:1px solid var(--line); border-radius:10px; background:rgba(11,17,24,.96); }
.member-login { display:grid; grid-template-columns:minmax(160px,1fr) 110px auto; gap:8px; align-items:end; }
.member-login button,.member-session button,.favorite-button { min-height:40px; padding:8px 12px; border:1px solid #4d6077; border-radius:7px; background:#172332; color:#f5f8fc; font-weight:850; cursor:pointer; }
.member-login button:hover,.member-session button:hover,.favorite-button:hover { border-color:#8db9ef; background:#213247; }
.member-session { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.member-session span,.member-session b { display:block; }.member-session span { color:var(--muted); font-size:10px; font-weight:900; text-transform:uppercase; }.member-session b { margin-top:2px; }
.member-message { margin-top:8px; color:var(--muted); font-size:11px; line-height:1.35; }.member-message.error { color:#ff9292; }.member-message.success { color:#78e5b8; }
.calendar-app { display:grid; grid-template-columns:350px minmax(0,1fr); gap:14px; min-width:0; margin-top:14px; align-items:start; }
.series-rail,.calendar-content { border:1px solid var(--line); border-radius:12px; background:rgba(17,24,33,.97); }
.series-rail { position:sticky; top:10px; min-width:0; max-height:calc(100vh - 20px); overflow:hidden; }
.rail-tools { padding:14px; border-bottom:1px solid var(--line); }
label { display:grid; gap:6px; color:var(--muted); font-size:11px; font-weight:850; letter-spacing:.04em; text-transform:uppercase; }
input,select { width:100%; min-height:40px; padding:8px 10px; border:1px solid var(--line); border-radius:7px; background:#0a1017; color:var(--text); }
.filter-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; }
.license-key { display:grid; grid-template-columns:minmax(0,2fr) repeat(4,minmax(0,1fr)); gap:5px; margin-top:10px; }
.license-key span { padding:5px 4px; border-radius:5px; color:white; text-align:center; font-size:10px; font-weight:950; }
.license-key .rookie { background:var(--rookie); }.license-key .d { background:var(--d); }.license-key .c { background:var(--c); color:#181300; }.license-key .b { background:var(--b); }.license-key .a { background:var(--a); }
.series-tabs { display:grid; gap:6px; min-width:0; max-height:calc(100vh - 222px); padding:9px; overflow:auto; scrollbar-color:#3c4a5c #0b1118; }
.license-group { display:grid; gap:5px; min-width:0; }
.license-group-toggle { display:grid; grid-template-columns:44px minmax(0,1fr) 24px; gap:9px; align-items:center; width:100%; padding:10px 9px; border:1px solid var(--line); border-left:5px solid #6b7788; border-radius:7px; background:#111923; color:#f4f7fb; text-align:left; cursor:pointer; }
.license-group-toggle:hover,.license-group-toggle.open { background:#182331; }
.license-group-toggle.license-rookie { border-left-color:var(--rookie); }.license-group-toggle.license-d { border-left-color:var(--d); }.license-group-toggle.license-c { border-left-color:var(--c); }.license-group-toggle.license-b { border-left-color:var(--b); }.license-group-toggle.license-a { border-left-color:var(--a); }
.group-copy { min-width:0; }.group-copy b,.group-copy small { display:block; }.group-copy b { font-size:13px; }.group-copy small { margin-top:2px; color:var(--muted); font-size:10px; }
.group-arrow { color:var(--muted); font-size:17px; font-weight:900; text-align:center; transition:transform .18s ease; }.license-group-toggle.open .group-arrow { transform:rotate(90deg); }
.license-group-series { display:grid; gap:5px; padding:0 0 3px 13px; }
.license-group-series .series-tab { background:#080d13; }
.series-tab { display:grid; grid-template-columns:44px minmax(0,1fr); gap:9px; align-items:center; width:100%; min-width:0; padding:9px; border:1px solid var(--line); border-left:5px solid #6b7788; border-radius:7px; background:#0a1017; color:#e9eef5; text-align:left; cursor:pointer; }
.series-tab:hover { background:#121b26; }
.series-tab.active { border-color:#eef3fa; box-shadow:0 0 0 1px rgba(255,255,255,.18),0 8px 24px rgba(0,0,0,.28); }
.series-tab.license-rookie { border-left-color:var(--rookie); }.series-tab.license-d { border-left-color:var(--d); }.series-tab.license-c { border-left-color:var(--c); }.series-tab.license-b { border-left-color:var(--b); }.series-tab.license-a { border-left-color:var(--a); }
.series-tab.special { border-left-color:#9b5cff; background:linear-gradient(90deg,rgba(155,92,255,.22),#0a1017 45%); }
.series-tab.special .tab-class { background:#9b5cff; color:#fff; }
.series-tab.favorites { border-left-color:#f0c45a; background:linear-gradient(90deg,rgba(240,196,90,.18),#0a1017 45%); }
.series-tab.favorites .tab-class { background:#f0c45a; color:#211800; }
.tab-class { display:grid; place-items:center; min-height:31px; border-radius:5px; background:#263142; font-size:11px; font-weight:950; }
.license-rookie .tab-class { background:var(--rookie); }.license-d .tab-class { background:var(--d); }.license-c .tab-class { background:var(--c); color:#181300; }.license-b .tab-class { background:var(--b); }.license-a .tab-class { background:var(--a); }
.tab-copy { min-width:0; }.tab-copy b,.tab-copy small { display:block; }.tab-copy b { font-size:12px; line-height:1.3; overflow-wrap:anywhere; }.tab-copy small { margin-top:3px; color:var(--muted); font-size:10px; }
.calendar-content { min-height:650px; padding:20px; }
.series-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding-bottom:17px; border-bottom:1px solid var(--line); }
.series-head h2 { max-width:900px; font-size:clamp(24px,3vw,38px); line-height:1.08; }
.series-meta { display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
.meta-chip { padding:5px 8px; border-radius:999px; background:#243042; color:#d9e4f3; font-size:11px; font-weight:850; }
.meta-chip.license-rookie { background:var(--rookie); }.meta-chip.license-d { background:var(--d); }.meta-chip.license-c { background:var(--c); color:#181300; }.meta-chip.license-b { background:var(--b); }.meta-chip.license-a { background:var(--a); }
.week-count { flex:0 0 auto; padding:10px 12px; border:1px solid var(--line); border-radius:8px; color:var(--muted); text-align:center; font-size:11px; font-weight:800; }
.week-count b { display:block; color:white; font-size:22px; }
.series-details { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:14px 0; }
.detail { padding:11px; border:1px solid var(--line); border-radius:8px; background:#0b1118; color:#d8e0ea; font-size:12px; line-height:1.45; }
.detail span { display:block; margin-bottom:4px; color:var(--muted); font-size:10px; font-weight:900; letter-spacing:.05em; text-transform:uppercase; }
.weeks-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.week-card { position:relative; min-width:0; padding:13px; border:1px solid var(--line); border-radius:9px; background:linear-gradient(145deg,#131c27,#0b1118); overflow:hidden; }
.week-card.is-favorite { border-color:rgba(240,196,90,.75); box-shadow:inset 0 0 0 1px rgba(240,196,90,.12); }
.week-number { color:#79afff; font-size:11px; font-weight:950; letter-spacing:.05em; text-transform:uppercase; }
.week-card h3 { margin-top:6px; font-size:15px; line-height:1.3; overflow-wrap:anywhere; }
.week-date { margin-top:8px; color:#f0c45a; font-size:12px; font-weight:800; }
.week-session { margin-top:4px; color:#b7c4d5; font-size:11px; }
.week-details { margin-top:8px; color:#8f9dad; font-size:10px; line-height:1.45; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.favorite-button { width:100%; min-height:34px; margin-top:11px; padding:6px 9px; font-size:11px; }
.favorite-button.active { border-color:#f0c45a; background:#f0c45a; color:#211800; }
.special-head { margin-bottom:16px; }.special-head p { margin-top:7px; color:var(--muted); }
.special-events-grid { display:grid; gap:13px; }
.special-event-wrap { overflow:hidden; border:1px solid rgba(155,92,255,.42); border-radius:10px; background:#070a0f; box-shadow:0 12px 32px rgba(0,0,0,.25); }.special-event-wrap.is-favorite { border-color:#f0c45a; }
.special-event-card { display:block; }
.special-event-card:hover { border-color:#b98cff; box-shadow:0 14px 38px rgba(73,35,130,.32); }
.special-event-card img { display:block; width:100%; height:auto; aspect-ratio:2.4/1; object-fit:cover; }
.special-event-wrap .favorite-button { width:calc(100% - 20px); margin:10px; }
.empty,.loading { padding:35px; color:var(--muted); text-align:center; }
@media(max-width:1120px){.weeks-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.series-details{grid-template-columns:1fr}}
@media(max-width:820px){.calendar-head{align-items:flex-start;flex-direction:column}.calendar-app{grid-template-columns:1fr}.series-rail{position:static;max-height:none}.series-tabs{max-height:440px}.calendar-content{min-height:0}}
@media(max-width:560px){.calendar-shell{padding:9px}.calendar-head,.calendar-content{padding:15px}.calendar-brand{align-items:flex-start;flex-direction:column}.calendar-logo{width:min(230px,100%)}.member-login{grid-template-columns:1fr}.weeks-grid{grid-template-columns:1fr}.filter-grid{grid-template-columns:1fr}.series-head{flex-direction:column}.week-count{display:flex;align-items:center;gap:6px}.week-count b{font-size:16px}}
