/* ===== Week Number site — mobile-first, light/dark ===== */
:root{
  --bg:#f7f8fb; --surface:#ffffff; --surface-2:#eef1f7; --text:#1b1f2a; --muted:#5a6375;
  --border:#dde2ec; --accent:#2457d6; --accent-ink:#ffffff; --accent-soft:#e3ebff;
  --good:#11845b; --radius:14px; --shadow:0 1px 2px rgba(16,24,40,.06),0 4px 16px rgba(16,24,40,.06);
  --maxw:1040px; color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#0f1218; --surface:#171b24; --surface-2:#202634; --text:#e8ebf2; --muted:#9aa4b8;
  --border:#2c3343; --accent:#7aa2ff; --accent-ink:#0b1020; --accent-soft:#1f2b4a; --good:#4ad19a;
  --shadow:0 1px 2px rgba(0,0,0,.4); color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0f1218; --surface:#171b24; --surface-2:#202634; --text:#e8ebf2; --muted:#9aa4b8;
    --border:#2c3343; --accent:#7aa2ff; --accent-ink:#0b1020; --accent-soft:#1f2b4a; --good:#4ad19a;
    --shadow:0 1px 2px rgba(0,0,0,.4); color-scheme:dark;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,Ubuntu,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--accent)}
img,svg{max-width:100%}
.skip{position:absolute;left:-999px;top:0;background:var(--accent);color:var(--accent-ink);padding:8px 12px;z-index:10}
.skip:focus{left:8px;top:8px}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 16px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* header */
.site-header{background:var(--surface);border-bottom:1px solid var(--border)}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:60px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--text);text-decoration:none;font-size:1.1rem}
.brand img{width:28px;height:28px}
.nav{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.nav a{color:var(--muted);text-decoration:none;padding:6px 10px;border-radius:8px;font-size:.95rem}
.nav a:hover,.nav a[aria-current="page"]{color:var(--text);background:var(--surface-2)}

/* buttons / inputs */
button,.btn{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:8px 14px;border-radius:10px;min-height:40px}
button:hover{border-color:var(--accent)}
.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
.icon-btn{min-width:40px;padding:6px 10px}
input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 10px;min-height:42px;max-width:100%}
label{font-weight:600;font-size:.92rem;display:block;margin-bottom:4px}

/* segmented toggle */
.seg{display:inline-flex;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface)}
.seg button{border:0;border-radius:0;background:transparent;padding:8px 14px}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);font-weight:600}

/* hero */
.hero{padding:28px 0 8px;text-align:center}
.hero .kicker{color:var(--muted);margin:0;font-size:1rem}
.week-big{font-size:clamp(5.5rem,26vw,11rem);line-height:1;font-weight:800;letter-spacing:-.04em;margin:6px 0 4px;color:var(--accent);font-variant-numeric:tabular-nums}
.hero h1{font-size:clamp(1.3rem,4.5vw,1.9rem);margin:0 0 6px}
.hero .range{font-size:1.1rem;margin:0 0 14px}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;margin:12px 0}
.formats{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:10px 0 0;padding:0;list-style:none}
.formats li{display:flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4px 4px 4px 12px}
.formats code{font:600 .98rem ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.formats button{min-height:34px;padding:4px 10px;font-size:.85rem}
.sys-note{color:var(--muted);font-size:.9rem;margin:8px auto 0;max-width:640px}

/* cards */
section{margin:28px 0}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.card h2,section>h2{margin:0 0 12px;font-size:1.3rem}
.grid{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:640px){.grid-2{grid-template-columns:1fr 1fr}.grid-4{grid-template-columns:repeat(2,1fr)}}
@media(min-width:900px){.grid-4{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}
.stat .label{color:var(--muted);font-size:.85rem;margin:0}
.stat .value{font-size:1.6rem;font-weight:700;margin:2px 0 0;font-variant-numeric:tabular-nums}
.stat .sub{color:var(--muted);font-size:.85rem;margin:0}
.progress{height:14px;border-radius:999px;background:var(--surface-2);overflow:hidden;border:1px solid var(--border)}
.progress>span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--good));width:0}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.row>div{flex:1 1 140px}
.result{margin:14px 0 0;padding:12px 14px;background:var(--accent-soft);border-radius:10px;min-height:3.2em}
.result strong{font-size:1.1rem}

/* year table */
.year-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:12px}
.year-head h2{margin:0}
.year-nav{display:flex;gap:8px;align-items:center}
.year-nav input{width:6.5em;text-align:center}
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
table.weeks{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:.95rem}
.weeks th,.weeks td{padding:7px 8px;text-align:center;border-bottom:1px solid var(--border);white-space:nowrap}
.weeks thead th{position:sticky;top:0;background:var(--surface-2);font-size:.82rem;color:var(--muted)}
.weeks td.wk{font-weight:700;color:var(--accent)}
.weeks td.rng{text-align:left}
.weeks td.other{color:var(--muted);opacity:.6}
.weeks td.today{background:var(--accent);color:var(--accent-ink);border-radius:6px;font-weight:700;opacity:1}
.weeks tr.current{background:var(--accent-soft)}
.weeks tr.current td.wk::after{content:" ◀";font-size:.7em}
.weeks tr.month-start td{border-top:2px solid var(--border)}
.year-summary{color:var(--muted);margin:10px 0 0}

/* faq */
.faq details{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin:10px 0}
.faq summary{cursor:pointer;font-weight:600}
.faq details[open] summary{margin-bottom:6px}
.prose{max-width:760px}
.prose h1{font-size:1.9rem;line-height:1.25}
.prose h2{margin-top:1.6em;font-size:1.3rem}

/* ads: reserved space prevents layout shift (CLS). Keep away from buttons/inputs. */
.ad-slot{display:block;margin:36px auto;text-align:center;overflow:hidden;position:relative}
.ad-slot::before{content:"Advertisement";display:block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.ad-slot .ad-box{min-height:100px;border:1px dashed var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.85rem}
.ad-leaderboard .ad-box{min-height:100px}          /* 320x100 mobile */
@media(min-width:768px){.ad-leaderboard .ad-box{min-height:90px;max-width:728px;margin:0 auto}}
.ad-incontent .ad-box{min-height:280px}           /* 336x280 / responsive */
.ad-footer .ad-box{min-height:100px}
/* When real ads are live, remove the dashed placeholder look: add class "live" to .ad-slot */
.ad-slot.live .ad-box{border:0}

/* footer */
.site-footer{border-top:1px solid var(--border);background:var(--surface);margin-top:40px;padding:22px 0;color:var(--muted);font-size:.92rem}
.site-footer nav{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:8px}
.site-footer a{color:var(--muted)}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:8px 16px;border-radius:10px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:20}
.toast.show{opacity:1}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* print: only the year table (and a title) */
@media print{
  :root{--bg:#fff;--surface:#fff;--surface-2:#eee;--text:#000;--muted:#333;--border:#999;--accent:#000;--accent-soft:#e6e6e6;--accent-ink:#fff}
  body{background:#fff;font-size:10.5pt}
  .site-header,.site-footer,.ad-slot,.no-print,.hero,.faq,#tools,#stats,#diff,.toast{display:none!important}
  #year{margin:0}
  .table-wrap{border:0;overflow:visible}
  .weeks th,.weeks td{padding:2px 4px}
  .weeks tr{break-inside:avoid}
  .print-title{display:block!important}
}
.print-title{display:none}
.day-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;list-style:none;padding:0;margin:14px auto 4px;max-width:520px}
.day-strip li{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:6px 0;display:flex;flex-direction:column;align-items:center;font-size:.8rem;color:var(--muted)}
.day-strip li b{font-size:1.1rem;color:var(--text)}
.day-strip li.is-today{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.day-strip li.is-today b{color:var(--accent-ink)}
@media(max-width:520px){
  .grid-4{grid-template-columns:1fr 1fr}
  .stat .value{font-size:1.3rem}
  .site-header .wrap{padding-top:6px;padding-bottom:6px}
  .nav{width:100%;justify-content:space-between}
  .nav a{padding:6px 6px}
  .formats li{padding-left:10px}
}
@media(max-width:520px){#countdown{font-size:1.1rem}}
