:root{
  --forest:#5b0c12;--forest-2:#720f15;--wine:#8b141b;--gold:#c8a15a;
  --cream:#f5f2ea;--paper:#fff;--ink:#101512;--muted:#626a64;--line:#dde2dd;
  --lesson:#8b141b;--lesson-bg:#f8e6e7;--golf3d:#23734a;--golf3d-bg:#e5f2e9;
  --hour:72px;--start-hour:7;--end-hour:22;--grid-height:1080px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:Barlow,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button,a{font:inherit}
button{cursor:pointer}
.skip-link{position:fixed;z-index:100;left:16px;top:-60px;padding:12px 16px;background:var(--forest);color:#fff;border-radius:3px}.skip-link:focus{top:12px}
.site-header{height:72px;padding:0 clamp(18px,4vw,64px);display:flex;align-items:center;border-bottom:1px solid var(--line);background:rgba(255,255,255,.94);backdrop-filter:blur(12px);position:sticky;top:0;z-index:50}
.brand img{width:152px;height:auto;display:block}
.header-label{margin-left:24px;padding-left:24px;border-left:1px solid var(--line);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);display:flex;gap:9px;align-items:center}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--wine);box-shadow:0 0 0 5px rgba(139,20,27,.12)}
.home-link{margin-left:auto;color:var(--forest);font-size:14px;font-weight:600;text-decoration:none}.home-link:hover{color:var(--wine)}
main{max-width:1600px;margin:0 auto;padding:0 clamp(14px,3.4vw,54px) 72px}
.hero{display:grid;grid-template-columns:1.4fr .8fr;gap:40px;padding:clamp(54px,7vw,100px) 0 54px;border-bottom:1px solid rgba(114,15,21,.2);align-items:end}
.eyebrow,.dialog-eyebrow{margin:0 0 14px;color:var(--wine);font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:700}
h1{margin:0;font-family:"Barlow Condensed",sans-serif;font-size:clamp(54px,7vw,104px);line-height:.86;letter-spacing:-.025em;font-weight:600;color:var(--forest)}
h1 em{font-style:normal;color:#b51d27}
.hero-copy{justify-self:end;max-width:430px}.hero-copy>p{font-size:clamp(16px,1.4vw,20px);line-height:1.6;color:#465048;margin:0 0 22px}
.sync-state{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:9px}.pulse{width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 0 rgba(200,161,90,.55);animation:pulse 1.8s infinite}@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(200,161,90,0)}}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 0 20px}.week-navigation{display:flex;align-items:center;gap:9px}.toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.icon-button,.today-button,.view-switch button,.chip,.utility-button{border:1px solid rgba(114,15,21,.2);background:transparent;color:var(--forest);border-radius:999px;height:42px;padding:0 16px;font-weight:600}.icon-button{width:42px;padding:0;font-size:20px}.icon-button:hover,.today-button:hover,.chip:hover,.utility-button:hover{border-color:var(--wine);background:#fff}.week-title{font-family:"Barlow Condensed",sans-serif;font-size:27px;font-weight:600;margin-left:10px;color:var(--forest)}.utility-button{height:36px;font-size:12px;background:#fff}
.view-switch{background:#eadcda;border-radius:999px;padding:3px;display:flex}.view-switch button{border:0;height:36px;padding:0 18px}.view-switch button.active{background:var(--wine);color:#fff;box-shadow:0 2px 8px rgba(114,15,21,.2)}
.filter-row{display:flex;justify-content:space-between;gap:20px;align-items:center;padding-bottom:22px}.filters{display:flex;gap:8px;flex-wrap:wrap}.chip{height:36px;font-size:13px;padding:0 14px}.chip.active{background:var(--wine);border-color:var(--wine);color:#fff}.chip-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px}.chip-dot.lesson{background:var(--lesson)}.chip-dot.golf3d{background:var(--golf3d)}.chip.active .chip-dot{outline:2px solid rgba(255,255,255,.65);outline-offset:2px}.privacy-note{margin:0;color:#7b827d;font-size:12px;text-align:right}
.stats{display:grid;grid-template-columns:repeat(4,1fr);background:linear-gradient(115deg,var(--forest),var(--wine));color:#fff;border-radius:4px;margin-bottom:24px;overflow:hidden}.stats article{padding:18px 22px;border-right:1px solid rgba(255,255,255,.16);display:flex;align-items:baseline;gap:12px}.stats article:last-child{border:0}.stats span{font-family:"Barlow Condensed",sans-serif;font-size:34px;color:#fff1d2;font-weight:600}.stats small{font-size:12px;color:#f1d9db}
.calendar-shell{position:relative;min-height:480px;background:#fff;border:1px solid var(--line);border-radius:5px;overflow:hidden;box-shadow:0 16px 48px rgba(16,42,24,.07)}
.calendar-shell:fullscreen{width:100vw;height:100vh;border:0;border-radius:0;background:#fff;overflow:auto}.calendar-shell:fullscreen .month-day{min-height:calc((100vh - 48px)/6)}
.loading-panel,.error-panel{min-height:480px;display:grid;place-content:center;text-align:center;color:var(--muted)}.loader{margin:auto;width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--wine);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-panel strong{font-family:"Barlow Condensed",sans-serif;font-size:28px;color:var(--forest)}.error-panel p{margin:8px 0 18px}.error-panel button{justify-self:center;border:0;background:var(--wine);color:#fff;border-radius:999px;padding:11px 20px;font-weight:600}
.month-calendar{min-width:1260px;background:#fff}.month-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--forest);color:#fff}.month-weekdays span{padding:13px 12px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;border-right:1px solid rgba(255,255,255,.14)}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-day{min-width:0;min-height:162px;padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.month-day:nth-child(7n){border-right:0}.month-day.outside{background:#faf8f4;color:#a4aaa5}.month-day.today{box-shadow:inset 0 0 0 2px var(--wine);background:#fffafa}.month-day-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.month-day-number{width:30px;height:30px;display:grid;place-content:center;border-radius:50%;font-family:"Barlow Condensed",sans-serif;font-size:20px;font-weight:600}.month-day.today .month-day-number{background:var(--wine);color:#fff}.month-day-count{font-size:11px;color:var(--muted)}.month-events{display:grid;gap:5px}.month-event,.month-more{min-width:0;border:0;border-left:4px solid var(--lesson);border-radius:3px;background:var(--lesson-bg);color:#4f1417;padding:8px;text-align:left}.month-event.golf3d{border-left-color:var(--golf3d);background:var(--golf3d-bg);color:#574017}.month-event-line{display:flex;align-items:baseline;gap:5px;min-width:0;white-space:nowrap;font-family:"Barlow Condensed",sans-serif}.month-event time{font-size:13px;font-weight:700;flex:0 0 auto}.month-event strong{font-size:14px;font-weight:700;flex:0 0 auto}.month-assignment{min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.82}.month-event:hover,.month-event:focus-visible{outline:2px solid var(--wine);outline-offset:1px}.month-more{display:block;border-left:0;background:transparent;color:var(--wine);font-size:11px;font-weight:700;padding:2px 3px}.month-empty{font-size:11px;color:#afb4b0;padding:3px}
.week-calendar{overflow:auto;max-height:78vh}.calendar-grid{min-width:1040px;display:grid;grid-template-columns:68px repeat(7,minmax(136px,1fr));grid-template-rows:76px var(--grid-height)}
.corner{position:sticky;top:0;left:0;z-index:8;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.day-head{position:sticky;top:0;z-index:7;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:9px}.day-head.today{background:#faf5e9}.day-name{text-transform:uppercase;letter-spacing:.12em;font-size:10px;font-weight:700;color:var(--muted)}.day-number{font-family:"Barlow Condensed";font-size:27px;font-weight:600;color:var(--forest)}.day-head.today .day-number{background:var(--wine);color:#fff;border-radius:50%;width:38px;height:38px;display:grid;place-content:center}
.time-axis{position:sticky;left:0;z-index:5;background:#fff;border-right:1px solid var(--line);height:var(--grid-height)}.time-label{height:var(--hour);font-size:11px;color:#858c87;text-align:right;padding:0 11px;transform:translateY(-7px)}
.day-column{height:var(--grid-height);position:relative;border-right:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour) - 1px),#e8ebe8 calc(var(--hour) - 1px),#e8ebe8 var(--hour)),repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour)/2 - 1px),rgba(221,226,221,.46) calc(var(--hour)/2 - 1px),rgba(221,226,221,.46) calc(var(--hour)/2))}.day-column.today{background-color:#fffdf8}.now-line{position:absolute;left:0;right:0;height:2px;background:var(--wine);z-index:4}.now-line::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--wine)}
.event{position:absolute;left:5px;right:5px;min-height:42px;border:0;border-left:4px solid;border-radius:3px;padding:7px 8px;text-align:left;overflow:hidden;transition:transform .16s,box-shadow .16s;z-index:3}.event:hover,.event:focus-visible{transform:translateY(-1px);box-shadow:0 7px 18px rgba(16,42,24,.16);z-index:6;outline:2px solid #fff}.event.lesson{background:var(--lesson-bg);border-color:var(--lesson);color:#4f1417}.event.golf3d{background:var(--golf3d-bg);border-color:var(--golf3d);color:#574017}.event-time{font-size:12px;font-weight:700}.event-title{display:block;font-family:"Barlow Condensed";font-size:16px;font-weight:600;line-height:1.05;margin-top:3px}.event-meta{display:block;font-size:10px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.8}
.agenda{padding:0 26px 28px}.agenda-day{display:grid;grid-template-columns:160px 1fr;border-top:1px solid var(--line);padding:24px 0}.agenda-day:first-child{border-top:0}.agenda-date{position:sticky;top:94px;align-self:start}.agenda-date strong{font-family:"Barlow Condensed";font-size:26px;color:var(--forest)}.agenda-date span{display:block;font-size:12px;color:var(--muted);margin-top:3px}.agenda-events{display:grid;gap:10px}.agenda-event{display:grid;grid-template-columns:118px 1fr auto;gap:18px;align-items:center;border:1px solid var(--line);border-left:4px solid var(--wine);background:#fff;padding:14px 16px;border-radius:3px;text-align:left;color:var(--ink)}.agenda-event.golf3d{border-left-color:var(--golf3d)}.agenda-event time{font-family:"Barlow Condensed";font-size:20px;font-weight:600;color:var(--forest)}.agenda-event strong{font-size:14px}.agenda-event small{display:block;color:var(--muted);margin-top:4px}.status-badge{font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--forest);background:var(--cream);padding:7px 9px;border-radius:999px}.empty-day{padding:18px;border:1px dashed var(--line);color:#8a918c;font-size:13px}
.event-dialog{width:min(460px,calc(100% - 28px));border:0;border-radius:5px;padding:30px;box-shadow:0 30px 90px rgba(0,0,0,.3);color:var(--ink)}.event-dialog::backdrop{background:rgba(16,21,18,.55);backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:14px;top:12px;border:0;background:transparent;font-size:28px;color:var(--muted)}.event-dialog h2{font-family:"Barlow Condensed";font-size:38px;color:var(--forest);margin:0 0 20px}.dialog-details{display:grid;gap:0;border-top:1px solid var(--line)}.dialog-row{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid var(--line);font-size:14px}.dialog-row span{color:var(--muted)}.dialog-row strong{text-align:right}.dialog-note{font-size:12px;line-height:1.5;color:var(--muted);margin:18px 0 0}.install-steps{margin:18px 0 0;padding:18px 20px 18px 38px;background:#faf5f2;border-left:3px solid var(--wine);font-size:14px;line-height:1.55}.install-steps li+li{margin-top:8px}
footer{background:var(--forest);color:#fff;min-height:140px;padding:32px clamp(18px,4vw,64px);display:flex;align-items:center;gap:34px}footer img{width:146px;display:block;filter:brightness(0) invert(1)}footer p{font-size:12px;color:#bbc6bd}footer p:last-child{margin-left:auto}
@media(max-width:900px){.hero{grid-template-columns:1fr;padding:50px 0 38px;gap:24px}.hero-copy{justify-self:start}.toolbar{align-items:flex-start;flex-direction:column}.week-navigation{flex-wrap:wrap}.week-title{width:100%;margin:8px 0 0}.toolbar-actions{justify-content:flex-start}.filter-row{align-items:flex-start;flex-direction:column}.privacy-note{text-align:left}.stats{grid-template-columns:repeat(2,1fr)}.stats article:nth-child(2){border-right:0}.stats article:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.16)}.agenda-day{grid-template-columns:120px 1fr}.month-day{min-height:158px;padding:7px}}
@media(max-width:620px){.site-header{height:64px;padding:0 16px}.brand img{width:126px}.header-label{display:none}.home-link{font-size:0}.home-link span{font-size:20px}.hero{padding-top:42px}h1{font-size:58px}.toolbar{padding-top:22px}.week-navigation{gap:6px}.week-title{font-size:24px}.toolbar-actions{width:100%}.view-switch{width:100%;order:-1}.view-switch button{flex:1;padding:0 10px}.utility-button{flex:1;padding:0 10px}.stats article{padding:14px 12px;display:block}.stats span{font-size:30px}.stats small{display:block;margin-top:3px}.calendar-shell{overflow:auto}.month-calendar{min-width:1260px}.month-day{min-height:158px;padding:7px}.month-weekdays span{padding:10px 7px;text-align:left;font-size:10px}.month-day-number{width:26px;height:26px;font-size:18px}.month-day-count{display:block}.month-events{gap:5px}.month-event{padding:7px 8px}.month-more{font-size:10px;white-space:nowrap;overflow:hidden;padding:2px}.agenda{padding:0 14px 20px}.agenda-day{display:block;padding:20px 0}.agenda-date{position:static;margin-bottom:12px}.agenda-event{grid-template-columns:1fr auto;gap:8px 12px}.agenda-event time{grid-column:1/-1}.status-badge{align-self:start}footer{display:block}footer p:last-child{margin-left:0}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
