    :root{
      --bg:#ffffff;
      --text:#111;
      --muted:#6b6b6b;
      --line:#e9e9e9;

      --pad-x: clamp(18px, 3vw, 44px);
      --pad-y: clamp(14px, 2.2vw, 26px);
      --nav-h: 64px;

      --font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
    }

    *{ box-sizing:border-box; }
    body{
      margin:0;
      font-family:var(--font);
      background:var(--bg);
      color:var(--text);
    }

    /* ---------------- TOP BAR ---------------- */
   
    .nav{
      height:var(--nav-h);
      display:flex;
      align-items:center;
      justify-content:space-between;
      padding:0 var(--pad-x);
    }
    .brand{
      font-weight:600;
      letter-spacing:-0.02em;
      font-size:14px;
      text-decoration:none;
      color:var(--text);
      white-space:nowrap;
    }
    .menu{
      display:flex;
      gap:18px;
      align-items:center;
      font-size:14px;
    }
    .menu a{
      color:var(--text);
      text-decoration:none;
      opacity:0.78;
    }
    .menu a:hover{ opacity:1; }
    .menu a[aria-current="page"]{
      opacity:1;
      text-decoration:underline;
      text-underline-offset:6px;
    }

    /* ---------------- HERO ---------------- */
    main { padding: 20px var(--pad-x) 60px; }

    .hero{
      display:grid;
      grid-template-columns: 1fr 1fr;
      gap: clamp(18px, 3vw, 40px);
      align-items:start;
      margin-top: 0px;
    }

    /* smaller, 2-line title */
    .big-title{
      margin:0;
      max-width: 520px;
      font-size: clamp(36px, 5vw, 150px);
      line-height:1.05;
      letter-spacing:-0.03em;
      font-weight:600;
    }
    .big-title .dot{ font-size:0.6em; opacity:0.9; }

    .right-info{
      padding-top: 6px;
      display:flex;
      flex-direction:column;
      gap: 12px;
    }
    .right-info p{
      margin:0;
      color:var(--muted);
      font-size:14px;
      line-height:1.55;
      max-width:40ch;
    }

    /* semester switch (plain text) */
    .semester-toggle{
      display:flex;
      gap:16px;
      font-size:14px;
    }
    .semester-toggle button{
      appearance:none;
      border:0;
      background:none;
      padding:0;
      font:inherit;
      cursor:pointer;
      color:var(--text);
      opacity:0.6;
    }
    .semester-toggle button[aria-current="true"]{
      opacity:1;
      text-decoration:underline;
      text-underline-offset:6px;
    }

    /* ---------------- GRID ---------------- */
    .grid-wrap{
      margin-top: 48px;
      display:flex;
      justify-content:center;
    }

    .grid{
      width: min(1500px, 100%);
      display:grid;
      grid-template-columns: repeat(5, 1fr);
      gap: 10px;
    }

    .card{
      position:relative;
      aspect-ratio: 4 / 3;
      overflow:hidden;
      background:#f2f2f2;
      cursor:pointer;
    }

    .card img{
      width:100%;
      height:100%;
      object-fit:cover;
      display:block;
      transition: transform 240ms ease, filter 240ms ease;
    }
    .card:hover img{
      transform:scale(1.04);
      filter:saturate(1.05);
    }

    /* hover label — borderless, soft */
    .hover-label{
      position:absolute;
      left:12px;
      bottom:12px;
      font-size:13px;
      font-weight:500;
      color:#111;
      background: rgba(255,255,255,0.9);
      padding: 6px 10px;
      border-radius: 12px;
      opacity:0;
      transform: translateY(6px);
      transition: opacity 160ms ease, transform 160ms ease;
      pointer-events:none;
    }

    /* Week 1 slightly louder */
    .card.week-1 .hover-label{
      font-size:15px;
      font-weight:600;
    }

    .card:hover .hover-label{
      opacity:1;
      transform: translateY(0);
    }

    /* ---------------- Responsive ---------------- */
    @media (max-width: 1000px){
      .hero{ grid-template-columns: 1fr; }
      .grid{ grid-template-columns: repeat(3, 1fr); }
    }
    @media (max-width: 640px){
      .grid{ grid-template-columns: repeat(2, 1fr); }
    }
