
.week{position:relative;--wk-card:#FFF8EC;--wk-edge:#E9DAC0;--wk-meta:#56607a;--wk-sun:#F5B83D;--wk-lilac:#B7A2E6;--wk-mint:#9FD9B9;--wk-bar:#1F9E69}
.week .wk-wrap{width:100%;max-width:1240px;margin:0 auto;padding-inline:clamp(16px,4vw,40px);position:relative}
.week .pin{display:flex;flex-direction:column;justify-content:center;gap:clamp(14px,2.4vh,24px);padding-block:56px}
.week .head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.week h2{font-size:clamp(30px,4.2vw,52px);letter-spacing:-.03em;margin-top:8px}
.week .sub{color:var(--fg-soft);font-size:15.5px;max-width:46ch;margin:0}
.week .wk-scroll{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-block:6px 14px}
.week .wk-scroll::-webkit-scrollbar{display:none}
.week .track{display:flex;gap:12px;padding-inline:clamp(16px,4vw,40px);width:max-content;margin-inline:auto}
.week .day{flex:none;width:min(78vw,290px);scroll-snap-align:start;background:var(--wk-card);color:#17243A;border-radius:14px;padding:12px;box-shadow:0 2px 0 var(--wk-edge),0 16px 34px -18px rgba(0,0,0,.4);scroll-margin-inline:16px}
.week .day header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 8px;border-bottom:1.5px dashed rgba(23,36,58,.16)}
.week .day h3{font-size:22px;letter-spacing:-.02em;margin:0}
.week .day h3 small{font-size:14.5px;font-weight:600;color:var(--wk-meta);margin-left:6px;letter-spacing:0}
.week .wxc{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:13.5px;color:#40506B;background:#EEF4F9;border-radius:99px;padding:4px 9px 4px 6px;font-variant-numeric:tabular-nums;white-space:nowrap}
.week .wxc.rain{background:#DCE9F7;color:#1F4E86}.week .wxc.heat{background:#FDE3C4;color:#9A4A00}.week .wxc.snow{background:#E6F0FA;color:#2C5E91}.week .wxc.cold{background:#E4E8EE;color:#3B4A60}.week .wxc.sun{background:#FFF1C9;color:#8A5A00}
.week .wxc svg{width:17px;height:17px}
.week .day.special{box-shadow:0 0 0 2px var(--accent,#E8883F),0 16px 34px -18px rgba(0,0,0,.4)}
.week .ev{display:grid;grid-template-columns:58px minmax(0,1fr);margin-top:10px;border-radius:10px;background:#fff;box-shadow:0 2px 0 var(--wk-edge);overflow:hidden}
.week .ev .t{display:grid;place-content:center;text-align:center;background:var(--wk-sun);font-family:var(--wk-num,inherit);font-weight:700;font-size:15px;line-height:1.1;font-variant-numeric:tabular-nums;position:relative;padding:8px 0}
.week .ev .t::after{content:"";position:absolute;right:-1px;top:5px;bottom:5px;border-right:2px dashed rgba(23,36,58,.25)}
.week .ev.c1 .t{background:var(--wk-lilac)}.week .ev.c2 .t{background:var(--wk-mint)}
.week .ev .t+div{padding:9px 12px}
.week .ev b{display:block;font-size:15px;line-height:1.2}
.week .ev span{font-size:13px;color:var(--wk-meta)}
.week .ev.season .t{background:var(--accent,#E8883F);color:#fff}
.week .ev.moved{box-shadow:inset 0 0 0 2px #6FA8E0,0 2px 0 var(--wk-edge)}
.week .swipe{display:none;font-weight:700;font-size:13px;color:var(--fg-soft);align-items:center;gap:6px}
@media (max-width:899px){.week .swipe{display:inline-flex}}
@media (min-width:900px){
  .week.is-gliding{height:var(--week-travel,230vh)}
  .week.is-gliding .pin{position:sticky;top:0;height:100svh;padding-top:calc(var(--banner,0px) + 72px);overflow:hidden}
  .week.is-gliding .wk-scroll{overflow:hidden;scroll-snap-type:none}
  .week.is-gliding .track{will-change:transform}
}
.week .wk-prog{height:3px;border-radius:3px;background:color-mix(in srgb,var(--fg) 12%,transparent);overflow:hidden}
.week .wk-prog i{display:block;height:100%;background:var(--wk-bar);transform-origin:left;transform:scaleX(0)}
@media (max-width:899px){.week .wk-prog{display:none}}

.week .week-app p{font-size:15px;line-height:1.5;margin:16px 0}
.week .week-app .btn{margin-top:16px}
.week .swipe[hidden]{display:none}
.week .week-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.week .week-controls button{font:600 13px var(--body);padding:7px 10px;border-radius:7px;background:var(--paper);color:var(--ink);min-height:36px}
.week .wk-prog{flex:1;min-width:100px}
.week .day{max-height:none}
@media(min-width:900px){.week.is-gliding .pin{padding-top:calc(var(--abx-h,0px) + 88px)}.week.is-gliding .day{max-height:calc(100svh - 300px);overflow-y:auto}}
@media(prefers-reduced-motion:reduce){.week.is-gliding{height:auto}.week.is-gliding .pin{position:static;height:auto;overflow:visible}.week.is-gliding .wk-scroll{overflow-x:auto}.week.is-gliding .track{transform:none!important}.week.is-gliding .day{max-height:none}}

/* Align native snap positions with the keyboard/button day offsets. */
.week .wk-scroll{scroll-padding-inline:clamp(16px,4vw,40px)}
.week .day{scroll-margin-inline:0}
