:root{
    --bg-0:#2f3134;
    --bg-1:#3c3e42;
    --bg-2:#46484c;
    --ink:#f2f1ee;
    --muted:#a9acae;
    --muted-2:#7c7f82;
    --line: rgba(255,255,255,0.14);
    --line-soft: rgba(255,255,255,0.08);
    --radius:2px;
  }

  *{ box-sizing:border-box; }
  html,body{ margin:0; padding:0; }
  body{
    background:var(--bg-1);
    color:var(--ink);
    font-family:'Noto Sans JP', 'Inter', -apple-system, sans-serif;
    line-height:1.75;
    -webkit-font-smoothing:antialiased;
  }

  a{ color:inherit; text-decoration:none; }

  .wrap{
    max-width:900px;
    margin:0 auto;
    padding:0 24px;
  }

  /* ---------- Hero (key visual) ---------- */
  .hero{
    position:relative;
    width:100%;
    background:#3a3c40;
    overflow:hidden;
  }
  .hero img{
    display:block;
    width:100%;
    height:auto;
    -webkit-user-drag:none;
    user-select:none;
    -webkit-touch-callout:none;
    pointer-events:auto;
  }
  .hero::after{
    content:"";
    position:absolute;
    left:0; right:0; bottom:0;
    height:40%;
    background:linear-gradient(180deg, rgba(47,49,52,0), rgba(47,49,52,0.92));
    pointer-events:none;
  }

  /* ---------- Header ---------- */
  header.site{
    padding:56px 0 36px;
    border-bottom:1px solid var(--line);
  }
  .kicker{
    font-family:'Inter', sans-serif;
    font-weight:600;
    font-size:11.5px;
    letter-spacing:0.16em;
    color:var(--muted);
    margin:0 0 18px;
    display:flex;
    align-items:center;
    gap:10px;
  }
  .kicker::before{
    content:"";
    width:6px; height:6px;
    background:var(--ink);
    border-radius:50%;
    display:inline-block;
  }
  h1.title{
    font-family:'Jost', sans-serif;
    font-weight:300;
    font-size:clamp(2.1rem, 5.4vw, 3.2rem);
    line-height:1.15;
    letter-spacing:0.005em;
    margin:0 0 18px;
    color:var(--ink);
  }
  .lede{
    max-width:56ch;
    font-size:0.98rem;
    color:var(--muted);
    margin:0 0 22px;
  }
  .meta-row{
    display:flex;
    flex-wrap:wrap;
    gap:10px 24px;
    font-family:'Inter', sans-serif;
    font-size:13px;
    color:var(--muted-2);
  }
  .meta-row a{
    border-bottom:1px solid var(--line);
    padding-bottom:2px;
    color:var(--muted);
  }
  .meta-row a:hover{ color:var(--ink); border-color:var(--ink); }

  /* ---------- Controls ---------- */
  .controls{
    display:flex;
    gap:14px;
    align-items:center;
    padding:20px 0;
    border-bottom:1px solid var(--line);
  }
  select#sortOrder{
    font-family:'Inter', sans-serif;
    font-weight:500;
    font-size:12px;
    letter-spacing:0.03em;
    padding:9px 12px;
    border:1px solid var(--line);
    border-radius:var(--radius);
    background:var(--bg-2);
    color:var(--ink);
  }
  .count{
    font-family:'Inter', sans-serif;
    font-size:12px;
    color:var(--muted-2);
    margin-left:auto;
  }

  /* ---------- List ---------- */
  .list{
    padding:12px 0 90px;
  }
  .entry{
    display:grid;
    grid-template-columns:96px 1fr;
    gap:24px;
    padding:30px 0;
    border-bottom:1px solid var(--line-soft);
  }
  .entry .date{
    font-family:'Inter', sans-serif;
    font-weight:600;
    font-size:12px;
    letter-spacing:0.03em;
    color:var(--muted-2);
    padding-top:4px;
    line-height:1.6;
  }
  .entry .date .y{ display:block; color:var(--ink); font-size:14px; margin-bottom:2px; font-weight:700;}
  .entry .body{
    display:grid;
    grid-template-columns:200px 1fr;
    gap:22px;
  }
  .thumb{
    position:relative;
    border-radius:var(--radius);
    overflow:hidden;
    background:#26282b;
    aspect-ratio:16/9;
    border:1px solid var(--line);
  }
  .thumb img{
    width:100%; height:100%;
    object-fit:cover;
    display:block;
    filter:saturate(0.92);
    transition:transform .5s cubic-bezier(.2,.7,.2,1);
    -webkit-user-drag:none;
    user-select:none;
    -webkit-touch-callout:none;
  }
  .entry:hover .thumb img{ transform:scale(1.045); }
  .thumb .play{
    position:absolute; inset:0;
    display:flex; align-items:center; justify-content:center;
    opacity:0;
    transition:opacity .25s ease;
    background:linear-gradient(0deg, rgba(20,21,23,0.4), rgba(20,21,23,0));
  }
  .entry:hover .thumb .play{ opacity:1; }
  .thumb .play svg{ width:32px; height:32px; filter:drop-shadow(0 2px 6px rgba(0,0,0,.5)); }

  .text h2{
    font-family:'Jost', sans-serif;
    font-weight:400;
    font-size:1.32rem;
    line-height:1.4;
    margin:0 0 8px;
    color:var(--ink);
    letter-spacing:0.003em;
  }
  .entry:hover .text h2{ color:#ffffff; }
  .text p.desc{
    font-size:13.5px;
    color:var(--muted-2);
    margin:0;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }
  .text .watch{
    display:inline-flex;
    align-items:center;
    gap:6px;
    margin-top:12px;
    font-family:'Inter', sans-serif;
    font-weight:600;
    font-size:11px;
    letter-spacing:0.08em;
    color:var(--muted);
    padding:5px 0;
    border-bottom:1px solid var(--line);
  }
  .entry:hover .watch{ color:var(--ink); border-color:var(--ink); }

  @media (max-width:620px){
    .entry{ grid-template-columns:1fr; gap:10px; }
    .entry .date{ display:flex; gap:8px; align-items:baseline; padding-top:0;}
    .entry .date .y{ margin-bottom:0; }
    .entry .body{ grid-template-columns:120px 1fr; }
  }

  /* ---------- States ---------- */
  .state{
    padding:70px 0;
    text-align:center;
    color:var(--muted);
    font-size:14px;
  }
  .state .spinner{
    width:22px; height:22px;
    margin:0 auto 18px;
    border-radius:50%;
    border:2px solid var(--line);
    border-top-color:var(--ink);
    animation:spin 0.8s linear infinite;
  }
  @keyframes spin{ to{ transform:rotate(360deg); } }
  .state.error{ color:#e0b8a8; }
  .state button{
    margin-top:16px;
    font-family:'Inter', sans-serif;
    font-weight:600;
    font-size:12px;
    padding:9px 18px;
    background:var(--ink);
    color:var(--bg-0);
    border:none;
    border-radius:var(--radius);
    cursor:pointer;
  }
  .state button:hover{ background:#ffffff; }

  footer.site{
    padding:28px 0 60px;
    font-family:'Inter', sans-serif;
    font-size:11.5px;
    letter-spacing:0.03em;
    color:var(--muted-2);
    border-top:1px solid var(--line);
  }
  footer.site b{ color:var(--muted); font-weight:700; }