/* SnowCalendar — shared light theme */
:root{
  --bg-0:#f5f8fc; --bg-1:#e9f0f9;
  --ink:#14213a; --ink-dim:#4e5d78; --ink-faint:#8290a8;
  --line:#e3eaf4; --card:#fff; --brd:#e0e8f2;
  --accent:#1668dc; --accent-deep:#0f4fae; --accent-soft:#eaf2fe;
  --g0:#c8413d; --g1:#dd8830; --g2:#3f96c9; --g3:#31a06d; --g4:#16794c;
  --depth:#0e7c86;
  --shadow:0 4px 18px rgba(22,44,88,.07); --shadow-lg:0 14px 40px rgba(22,44,88,.13);
  --r:16px;
}
*{box-sizing:border-box}
html,body{margin:0}
html{scroll-behavior:smooth}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink); line-height:1.55; -webkit-font-smoothing:antialiased;
  background:radial-gradient(900px 520px at 88% -10%,#dfeafb 0%,transparent 62%),
             radial-gradient(760px 440px at -6% 2%,#eef4fc 0%,transparent 58%),
             linear-gradient(180deg,var(--bg-0),var(--bg-1));
  background-attachment:fixed;min-height:100vh;
}
.wrap{max-width:1120px;margin:0 auto;padding:clamp(16px,3.5vw,40px)}
a{color:var(--accent)}

/* header */
.top{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:6px 0 22px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:800;letter-spacing:-.02em;font-size:18px}
.brand .mk{width:26px;height:26px;flex:none}
nav.main{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto}
nav.main a{padding:8px 13px;border-radius:9px;text-decoration:none;color:var(--ink-dim);font-weight:650;font-size:14px}
nav.main a:hover{background:var(--card);color:var(--accent)}
nav.main a[aria-current="page"]{background:var(--accent);color:#fff}

h1{font-size:clamp(27px,4.4vw,42px);line-height:1.06;margin:0 0 12px;letter-spacing:-.025em;font-weight:800}
h2{font-size:17px;margin:0;font-weight:750;letter-spacing:-.01em}
.eyebrow{font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);font-weight:750;margin:0 0 9px}
.lede{font-size:clamp(15px,1.9vw,17.5px);color:var(--ink-dim);max-width:66ch;margin:0}
.lede b{color:var(--ink);font-weight:650}

/* controls */
.bar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:22px 0 18px}
.seg{display:inline-flex;background:var(--card);border:1px solid var(--brd);border-radius:12px;padding:4px;gap:2px;box-shadow:var(--shadow);flex-wrap:wrap}
.seg button{appearance:none;border:0;background:transparent;color:var(--ink-dim);font:inherit;font-weight:650;
  font-size:13.5px;padding:9px 15px;border-radius:9px;cursor:pointer;transition:.15s;white-space:nowrap}
.seg button:hover{color:var(--accent)}
.seg button[aria-pressed="true"]{background:linear-gradient(180deg,var(--accent),var(--accent-deep));color:#fff;
  box-shadow:0 3px 10px rgba(22,104,220,.3)}
.seg .st{font-size:11px;opacity:.75;font-weight:600;margin-left:5px}
.lbl{font-size:12px;color:var(--ink-faint);font-weight:750;letter-spacing:.06em;text-transform:uppercase}
.chk{display:inline-flex;gap:7px;align-items:center;font-size:13.5px;color:var(--ink-dim);cursor:pointer;user-select:none}
.chk input{accent-color:var(--accent);width:15px;height:15px}

/* cards */
.card{background:var(--card);border:1px solid var(--brd);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);margin-bottom:20px}
.card.tight{padding:16px 18px 8px}
.chead{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chead .note{font-size:12.5px;color:var(--ink-faint)}
.cap{font-size:12.5px;color:var(--ink-faint);margin:0 0 12px;max-width:82ch}
.canvas{position:relative;height:clamp(300px,44vw,430px)}
.canvas.sm{height:clamp(240px,32vw,330px)}
.canvas.tall{height:clamp(340px,50vw,500px)}

/* headline verdict */
.verdict{background:linear-gradient(135deg,#fff,#f2f7ff);border:1px solid rgba(22,104,220,.28);
  border-radius:18px;padding:22px;margin-bottom:20px;box-shadow:var(--shadow-lg);
  display:flex;gap:22px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.verdict .vm{flex:1 1 290px;min-width:260px}
.verdict .big{font-size:clamp(19px,2.5vw,24px);font-weight:800;letter-spacing:-.02em;margin:0;line-height:1.2}
.verdict .big em{font-style:normal;color:var(--accent)}
.verdict .ctx{color:var(--ink-dim);font-size:13.5px;margin:9px 0 0;max-width:58ch}

/* ranked list */
.ranks{display:flex;gap:11px;flex-wrap:wrap}
.rank{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--brd);
  border-radius:13px;padding:11px 15px 11px 12px;box-shadow:var(--shadow);min-width:158px}
.rank .n{width:29px;height:29px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px;background:var(--accent)}
.rank .n.n2{background:#4a8fe0}.rank .n.n3{background:#84b3ea}
.rank .w{font-weight:750;font-size:14px;line-height:1.15}
.rank .s{font-size:12.5px;color:var(--ink-dim);margin-top:2px}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:13px;margin-bottom:22px}
.stat{background:var(--card);border:1px solid var(--brd);border-radius:14px;padding:15px 17px;box-shadow:var(--shadow)}
.stat .k{font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);font-weight:750;margin:0 0 7px}
.stat .v{font-size:clamp(20px,2.6vw,26px);font-weight:800;letter-spacing:-.025em;margin:0;line-height:1.1}
.stat .v small{font-size:13px;color:var(--ink-dim);font-weight:650}
.stat .d{font-size:12px;color:var(--ink-dim);margin:5px 0 0}

/* grade chips */
.chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:750;color:#fff;white-space:nowrap}
.g0{background:var(--g0)}.g1{background:var(--g1)}.g2{background:var(--g2)}.g3{background:var(--g3)}.g4{background:var(--g4)}
.key{display:flex;flex-wrap:wrap;gap:13px;font-size:12.5px;color:var(--ink-dim);margin:0 0 12px}
.key .it{display:inline-flex;gap:6px;align-items:center}
.key .dot{width:11px;height:11px;border-radius:3px;display:inline-block}
.key .ln{width:22px;height:0;display:inline-block;border-top:3px solid var(--accent)}
.key .ln.dash{border-top-style:dashed}

/* sliders */
.tune{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px 22px;margin-top:6px}
.sl label{display:flex;justify-content:space-between;font-size:13px;font-weight:650;color:var(--ink-dim);margin-bottom:5px}
.sl label b{color:var(--accent);font-weight:750}
.sl input[type=range]{width:100%;accent-color:var(--accent);height:22px}
.sl .hint{font-size:11.5px;color:var(--ink-faint);margin-top:2px;line-height:1.4}

/* notes */
details.notes{background:var(--card);border:1px solid var(--brd);border-radius:14px;padding:0 18px;margin-bottom:20px;box-shadow:var(--shadow)}
details.notes summary{cursor:pointer;padding:15px 0;font-weight:750;font-size:14.5px;list-style:none}
details.notes summary::-webkit-details-marker{display:none}
details.notes summary::before{content:"\25B8";color:var(--accent);margin-right:9px;display:inline-block;transition:.15s}
details.notes[open] summary::before{transform:rotate(90deg)}
details.notes .body{padding:0 0 15px;color:var(--ink-dim);font-size:14px;max-width:84ch}
details.notes .body p{margin:0 0 11px}
details.notes .body b{color:var(--ink)}
table.t{border-collapse:collapse;font-size:13.5px;margin:2px 0 12px}
table.t td{padding:5px 16px 5px 0;color:var(--ink-dim);vertical-align:top}
table.t td.b{font-weight:750;color:var(--ink);white-space:nowrap}

/* prose */
.prose{background:var(--card);border:1px solid var(--brd);border-radius:var(--r);padding:22px 24px;box-shadow:var(--shadow);margin-bottom:20px;max-width:84ch}
.prose h2{margin:22px 0 9px}.prose h2:first-child{margin-top:0}
.prose p{color:var(--ink-dim);font-size:14.5px;margin:0 0 12px}
.prose b{color:var(--ink)}
.prose ul{color:var(--ink-dim);font-size:14.5px;padding-left:20px;margin:0 0 12px}
.prose li{margin-bottom:5px}

.msg{background:#fff6ed;border:1px solid #f0cfa8;color:#7a4a12;border-radius:12px;padding:12px 15px;font-size:13.5px;margin-bottom:18px}
.msg.err{background:#fdf0ef;border-color:#efc4c1;color:#8a2f2a}
.load{color:var(--ink-faint);font-size:14px;padding:26px 0;text-align:center}

footer.site{color:var(--ink-faint);font-size:12.5px;padding:16px 0 6px;border-top:1px solid var(--line);margin-top:6px;line-height:1.8}
footer.site a{color:var(--ink-dim)}
@media (max-width:640px){
  .verdict{flex-direction:column;align-items:flex-start}
  .ranks{width:100%}
  nav.main{width:100%;margin-left:0}
}

/* forecast day strip */
.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin-bottom:20px}
.day{background:var(--card);border:1px solid var(--brd);border-radius:13px;padding:12px;box-shadow:var(--shadow);position:relative}
.day.dim{opacity:.62}
.day.best{border-color:var(--g3);box-shadow:0 0 0 2px rgba(49,160,109,.22),var(--shadow)}
.day .dow{font-size:11.5px;font-weight:750;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}
.day .sc{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1.1;margin:5px 0 2px}
.day .gr{margin-bottom:8px}
.day .rows{font-size:11.5px;color:var(--ink-dim);line-height:1.75}
.day .rows b{color:var(--ink);font-weight:700}
.day .tag{position:absolute;top:-8px;right:9px;background:var(--g3);color:#fff;font-size:10px;font-weight:750;
  padding:2px 7px;border-radius:999px;letter-spacing:.03em}
.fresh{font-size:12.5px;color:var(--ink-faint);margin:0 0 14px}
