  :root{
    --bg:#f4f3ef;
    --bg-2:#eceae3;
    --surface:#ffffff;
    --ink:#141519;
    --ink-2:#4a4c55;
    --ink-3:#7a7c86;
    --line:#d9d7ce;
    --blue:#2337e8;
    --blue-ink:#1b2ac0;
    --yellow:#f2c900;
    --pink:#f2a0b5;
    --cyan-soft:#dfe8ff;
    --shadow:0 18px 40px rgba(20,21,25,.12);
    --radius:18px;
    color-scheme: light;
  }
  @media (prefers-color-scheme: dark){
    :root{
      --bg:#0f1013;
      --bg-2:#15171c;
      --surface:#1a1c22;
      --ink:#f2f1ec;
      --ink-2:#c6c7cd;
      --ink-3:#8e9099;
      --line:#2b2e36;
      --blue:#6d7cff;
      --blue-ink:#aab4ff;
      --yellow:#ffd91a;
      --pink:#f2a0b5;
      --cyan-soft:#1f2748;
      --shadow:0 18px 40px rgba(0,0,0,.45);
      color-scheme: dark;
    }
  }
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{animation:none!important; transition:none!important} }
  body{
    margin:0; background:var(--bg); color:var(--ink);
    overflow-x:clip;
    font-family:"Zen Kaku Gothic New", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", sans-serif;
    line-height:1.75; -webkit-font-smoothing:antialiased;
  }
  a{color:inherit}
  img{display:block; max-width:100%}
  .mono{font-family:"IBM Plex Mono", ui-monospace, monospace; letter-spacing:.08em}
  .latin{font-family:"Archivo", "Zen Kaku Gothic New", sans-serif}

  /* Header */
  header{
    position:sticky; top:0; z-index:40;
    backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
    background:color-mix(in srgb, var(--bg) 86%, transparent);
    border-bottom:1px solid var(--line);
  }
  .header-in{max-width:1120px; margin:0 auto; padding:14px 20px; display:flex; align-items:center; justify-content:space-between; gap:16px}
  .brand{display:flex; align-items:center; gap:12px; text-decoration:none; font-weight:900}
  .brand-mark{width:40px; height:40px; border-radius:50%; background:var(--blue); color:#fff; display:grid; place-items:center; font-family:"Archivo",sans-serif; font-weight:900; font-size:13px; letter-spacing:-.02em; flex:none; position:relative; overflow:visible; white-space:nowrap}
  .brand-mark::after{content:"★"; position:absolute; right:-7px; top:-9px; color:var(--yellow); font-size:15px; text-shadow:0 1px 0 rgba(0,0,0,.15)}
  .brand small{display:block; font-weight:700; font-size:11px; color:var(--ink-3); letter-spacing:.14em; line-height:1.2}
  .brand .name{font-family:"Archivo",sans-serif; font-size:20px; line-height:1.1; letter-spacing:.01em}
  nav{display:flex; gap:4px; flex-wrap:wrap; justify-content:flex-end}
  nav a{text-decoration:none; font-size:13px; font-weight:700; padding:8px 11px; border-radius:999px; color:var(--ink-2)}
  nav a:hover{background:var(--bg-2); color:var(--ink)}
  nav a.cta{background:var(--ink); color:var(--bg)}
  nav a.cta:hover{background:var(--blue); color:#fff}
  @media (max-width:640px){ nav a:not(.cta){display:none} .brand small{display:none} }

  main{max-width:1120px; margin:0 auto; padding:0 20px 72px}

  /* Hero — ヘッダー画像（右にOくんと金魚、左に更地の余白）を全面背景にし、更地の上にタイトルと名前を重ねる */
  .hero{
    position:relative; overflow:hidden; background:#7d6a52;
    width:100vw; max-width:100vw;
    margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
    aspect-ratio:2352/1008;
    display:flex; align-items:center;
  }
  .hero-bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center}
  .hero-media{position:absolute; inset:0}
  /* AI生成バッジ（小さな表記） */
  .ai-badge{display:inline-flex; align-items:center; font-size:10px; font-weight:700; letter-spacing:.1em; line-height:1.5; padding:2px 8px; border-radius:999px; background:var(--bg-2); color:var(--ink-3); border:1px solid var(--line); white-space:nowrap; vertical-align:middle}
  .ai-badge.on-img{position:absolute; z-index:2; background:rgba(12,12,14,.66); color:#fff; border-color:rgba(255,255,255,.28)}
  .hero-media .ai-badge{right:12px; bottom:12px}
  .work button.thumb .ai-badge{top:10px; left:10px}
  .proj-fig, .lineup-band{position:relative}
  .hero::after{content:""; position:absolute; inset:0; pointer-events:none;
    background:linear-gradient(90deg, rgba(26,20,10,.44) 0%, rgba(26,20,10,.24) 44%, rgba(26,20,10,0) 70%)}
  .hero-in{position:relative; z-index:1; width:100%; max-width:1120px; margin:0 auto; padding:40px 20px}
  .hero-copy{max-width:620px}
  @media (max-width:860px){
    .hero-in{padding:36px 20px}
  }
  .hero-tag{display:inline-flex; align-items:center; gap:8px; font-size:12px; font-weight:700; letter-spacing:.12em; border:1.5px solid var(--ink); border-radius:999px; padding:6px 12px 6px 8px; background:var(--surface)}
  .hero-tag i{width:8px; height:8px; border-radius:50%; background:#22c06b; display:inline-block; box-shadow:0 0 0 3px color-mix(in srgb, #22c06b 22%, transparent)}
  h1{font-size:clamp(38px, 6vw, 64px); line-height:1.12; margin:20px 0 6px; font-weight:900; letter-spacing:.01em}
  h1 .blue{color:var(--blue)}
  h1 .stroke{color:transparent; -webkit-text-stroke:2px var(--ink)}
  .hero-name{font-family:"Archivo",sans-serif; font-weight:900; font-size:clamp(18px,2.4vw,22px); letter-spacing:.06em; margin:14px 0 0; display:flex; align-items:center; gap:12px}
  .hero-name::after{content:""; height:2px; background:var(--yellow); flex:1; max-width:120px}
  .hero-lead{color:var(--ink-2); font-size:16px; margin:16px 0 0; max-width:34em}
  .hero-actions{display:flex; gap:12px; flex-wrap:wrap; margin-top:26px}
  .btn{display:inline-flex; align-items:center; gap:8px; text-decoration:none; font-weight:900; font-size:14px; padding:13px 20px; border-radius:999px; border:1.5px solid var(--ink); transition:transform .15s ease, background .15s ease}
  .btn:active{transform:scale(.98)}
  .btn-primary{background:var(--blue); border-color:var(--blue); color:#fff; box-shadow:4px 4px 0 var(--ink)}
  .btn-primary:hover{transform:translate(-1px,-1px); box-shadow:5px 5px 0 var(--ink)}
  .btn-ghost{background:var(--surface)}
  .btn-ghost:hover{background:var(--bg-2)}
  .hero-meta{display:flex; gap:18px; flex-wrap:wrap; margin-top:26px; padding-top:20px; border-top:1px dashed var(--line)}
  .hero-meta div b{display:block; font-family:"Archivo",sans-serif; font-size:19px; line-height:1.2}
  .hero-meta div span{font-size:12px; color:var(--ink-3); font-weight:700}
  /* Hero text over the 更地 (photo background) */
  .hero h1{color:#fff; text-shadow:0 2px 22px rgba(26,20,10,.5), 0 1px 4px rgba(26,20,10,.55)}
  .hero h1 .blue{color:var(--yellow)}
  .hero h1 .stroke{color:#fff; -webkit-text-stroke:0}
  .hero-name{color:#fff; text-shadow:0 1px 10px rgba(26,20,10,.55)}
  .hero-lead{color:rgba(255,255,255,.95); text-shadow:0 1px 10px rgba(26,20,10,.6)}
  .hero-meta{border-top-color:rgba(255,255,255,.5)}
  .hero-meta div b{color:#fff; text-shadow:0 1px 8px rgba(26,20,10,.55)}
  .hero-meta div span{color:rgba(255,255,255,.85)}

  /* Marquee */
  .marquee{margin:38px -20px 0; border-top:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); background:var(--ink); color:var(--bg); overflow:hidden; white-space:nowrap}
  .marquee-track{display:inline-block; padding:9px 0; animation:scroll 26s linear infinite; font-family:"Archivo",sans-serif; font-weight:800; letter-spacing:.14em; font-size:13px}
  .marquee-track span{margin:0 14px}
  .marquee-track .y{color:var(--yellow)}
  @keyframes scroll{from{transform:translateX(0)} to{transform:translateX(-50%)}}
  @media (prefers-reduced-motion: reduce){ .marquee-track{animation:none} }

  section{padding-top:64px}
  .sec-head{display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:8px}
  .sec-head h2{font-size:clamp(26px,4vw,36px); margin:0; font-weight:900; line-height:1.25}
  .sec-head h2 em{font-style:normal; color:var(--blue)}
  .sec-no{font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:600; letter-spacing:.16em; color:var(--ink-3)}
  .sec-lead{color:var(--ink-2); margin:6px 0 0; max-width:42em}

  /* Filters */
  .filters{display:flex; gap:8px; flex-wrap:wrap; margin:22px 0 20px}
  .chip{appearance:none; border:1.5px solid var(--ink); background:var(--surface); color:var(--ink); font:inherit; font-size:13px; font-weight:700; padding:8px 16px; border-radius:999px; cursor:pointer}
  .chip[aria-pressed="true"]{background:var(--ink); color:var(--bg)}
  .chip:focus-visible, .btn:focus-visible, a:focus-visible, button:focus-visible{outline:3px solid var(--blue); outline-offset:2px}

  /* Works */
  .works{display:grid; grid-template-columns:1fr 1fr; gap:22px}
  @media (max-width:720px){ .works{grid-template-columns:1fr} }
  .work{background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); overflow:hidden; display:flex; flex-direction:column}
  .work[hidden]{display:none}
  .work button.thumb{appearance:none; border:0; padding:0; margin:0; background:#0b0c0e; cursor:zoom-in; position:relative; display:block; width:100%; text-align:left}
  .work button.thumb img{width:100%; aspect-ratio:16/10; object-fit:cover; transition:transform .35s ease}
  .work button.thumb:hover img{transform:scale(1.03)}
  .work button.thumb video.thumb-preview{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; pointer-events:none; transition:opacity .25s ease}
  .work button.thumb.is-previewing video.thumb-preview{opacity:1}
  .work .zoom{position:absolute; right:12px; bottom:12px; background:rgba(10,10,12,.82); color:#fff; font-size:11px; font-weight:700; padding:6px 10px; border-radius:999px; letter-spacing:.06em}
  .work-body{padding:18px 18px 20px; display:flex; flex-direction:column; gap:8px; flex:1}
  .work-top{display:flex; align-items:center; justify-content:space-between; gap:10px}
  .work-no{font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-3); font-weight:600}
  .tag{font-size:11px; font-weight:900; letter-spacing:.06em; padding:4px 9px; border-radius:999px; border:1.5px solid var(--ink)}
  .tag.blue{background:var(--cyan-soft)} .tag.yellow{background:var(--yellow); color:#141519} .tag.pink{background:var(--pink); color:#141519}
  .work h3{margin:0; font-size:19px; font-weight:900; line-height:1.4}
  .work p{margin:0; color:var(--ink-2); font-size:14px}
  .work-tools{margin-top:auto; padding-top:10px; display:flex; gap:6px; flex-wrap:wrap}
  .work-tools span{font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:600; background:var(--bg-2); border-radius:6px; padding:4px 8px; color:var(--ink-2)}
  .work.featured{grid-column:1 / -1}
  .work.featured button.thumb img{aspect-ratio:16/8.2}
  @media (max-width:720px){ .work.featured button.thumb img{aspect-ratio:16/10} }

  /* Patch Workers media (moved out of the works grid) */
  .pw-media{display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:22px}
  @media (max-width:720px){ .pw-media{grid-template-columns:1fr} }
  .work.tall button.thumb img{aspect-ratio:7/8}

  /* About + Skills */
  .about-grid{display:grid; grid-template-columns:1.15fr .85fr; gap:22px; margin-top:22px}
  @media (max-width:820px){ .about-grid{grid-template-columns:1fr} }
  .panel{background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); padding:24px}
  .panel h3{margin:0 0 12px; font-size:17px; font-weight:900; display:flex; align-items:center; gap:10px}
  .panel h3::before{content:""; width:10px; height:10px; border-radius:50%; background:var(--blue); flex:none}
  .panel p{margin:0 0 12px; color:var(--ink-2); font-size:15px}
  .panel p:last-child{margin-bottom:0}
  .panel p strong{color:var(--ink)}
  .can-list{list-style:none; margin:14px 0 0; padding:0; display:grid; gap:10px}
  .can-list li{display:flex; gap:10px; align-items:flex-start; font-size:14px; font-weight:700; background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:11px 13px}
  .can-list li::before{content:"★"; color:var(--blue); flex:none}
  .skill{padding:13px 0; border-bottom:1px dashed var(--line)}
  .skill:last-child{border-bottom:0; padding-bottom:2px}
  .skill:first-of-type{padding-top:2px}
  .skill-row{display:flex; justify-content:space-between; align-items:baseline; gap:12px}
  .skill-row b{font-size:15px}
  .skill-row span{font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:600; color:var(--blue-ink); background:var(--cyan-soft); padding:3px 8px; border-radius:999px; white-space:nowrap}
  .bar{height:8px; background:var(--bg-2); border-radius:999px; margin-top:8px; overflow:hidden}
  .bar i{display:block; height:100%; background:var(--blue); border-radius:999px}
  .bar.yellow i{background:var(--yellow)}

  /* Group band (hero) */
  .group-band{margin:34px 0 0; position:relative}
  .group-band .gb-frame{border:2px solid var(--ink); border-radius:22px; overflow:hidden; box-shadow:8px 8px 0 var(--blue); background:#f6f1ea}
  .group-band img{width:100%; aspect-ratio:16/9; object-fit:cover; object-position:center}
  @media (max-width:640px){ .group-band img{aspect-ratio:16/9} }
  .group-band figcaption{position:absolute; left:14px; bottom:14px; background:var(--surface); border:1.5px solid var(--ink); border-radius:12px; padding:8px 12px; font-size:12px; font-weight:700; line-height:1.5; box-shadow:3px 3px 0 rgba(0,0,0,.85)}
  .group-band figcaption span{display:block; color:var(--ink-3); font-size:11px}

  /* Characters */
  .group-label{display:flex; align-items:center; gap:12px; margin:26px 0 14px; font-weight:900; font-size:15px}
  .group-label::after{content:""; height:2px; background:var(--yellow); flex:1}
  .group-label .tag{flex:none}
  .char-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:14px}
  @media (max-width:900px){ .char-grid{grid-template-columns:repeat(2,1fr)} }
  @media (max-width:400px){ .char-grid{grid-template-columns:1fr 1fr; gap:10px} }
  .char-card{background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); padding:14px 14px 16px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:8px; overflow:hidden}
  .char-card .char-photo{width:calc(100% + 8px); max-width:none; aspect-ratio:3/4; object-fit:contain; border-radius:12px; border:1.5px solid var(--line); background:#fff}
  .char-sub{margin-top:auto; padding-top:10px; width:100%}
  .char-sub-photo{width:100%; aspect-ratio:1/1; object-fit:contain; border-radius:12px; border:1.5px solid var(--line); background:#fff}
  .char-sub-label{display:block; margin-top:6px; font-size:11px; font-weight:700; color:var(--ink-3); letter-spacing:.05em}
  .extra-photo{display:block; width:min(100%,320px); margin:0 auto 12px; aspect-ratio:4/5; object-fit:cover; object-position:center top; border-radius:12px; border:1.5px solid var(--line); background:#fff}
  .lineup-band{margin:20px 0 4px; border:2px solid var(--ink); border-radius:22px; overflow:hidden; box-shadow:6px 6px 0 var(--pink); background:#fdf7f3}
  .lineup-band img{width:100%}
  .lineup-band figcaption{padding:10px 14px; font-size:12px; font-weight:700; color:var(--ink-2); border-top:1.5px solid var(--line); background:var(--surface)}
  .char-card img.mark{width:72px; height:72px; border-radius:50%; background:#fff; border:1.5px solid var(--line); padding:5px; margin-top:-40px; position:relative}
  .char-card .mark-none{width:84px; height:84px; border-radius:50%; background:var(--surface); border:1.5px dashed var(--ink-3); display:grid; place-items:center; font-family:"Archivo",sans-serif; font-weight:900; font-size:22px; color:var(--ink-3); margin-top:-40px; position:relative}
  .char-card h3{margin:2px 0 0; font-size:16px; font-weight:900; line-height:1.35}
  .char-role{font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:600; letter-spacing:.05em; color:var(--blue-ink); background:var(--cyan-soft); border-radius:999px; padding:3px 9px}
  .char-card p{margin:0; font-size:12.5px; color:var(--ink-2); line-height:1.65}
  .char-card.candidate{border-style:dashed}
  .extra-list{display:grid; grid-template-columns:1fr 1fr; gap:14px}
  @media (max-width:720px){ .extra-list{grid-template-columns:1fr} }
  .extra-card{background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); padding:18px}
  .extra-card h3{margin:0 0 6px; font-size:16px; font-weight:900; line-height:1.45}
  .extra-card h3 .from{display:block; font-size:11.5px; color:var(--ink-3); font-weight:700; letter-spacing:.04em; margin-bottom:2px}
  .extra-card p{margin:0; font-size:13.5px; color:var(--ink-2)}
  .extra-photo.wide{width:100%; aspect-ratio:16/10}
  .extra-fig{margin:12px 0 0}
  .extra-fig img{display:block; width:100%; border-radius:12px; border:1.5px solid var(--line); background:#fff}
  .extra-fig figcaption{margin-top:6px; font-size:11.5px; font-weight:700; color:var(--ink-3)}

  /* Projects */
  .proj-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:22px}
  @media (max-width:720px){ .proj-grid{grid-template-columns:1fr} }
  .proj-card{background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); padding:20px; display:flex; flex-direction:column; gap:7px}
  .proj-card .proj-top{display:flex; align-items:center; justify-content:space-between; gap:10px}
  .proj-card h3{margin:0; font-size:17px; font-weight:900; line-height:1.45}
  .proj-card p{margin:0; font-size:13.5px; color:var(--ink-2)}
  .proj-card.wide{grid-column:1 / -1}
  .proj-fig{margin:4px 0 0}
  .proj-fig img{display:block; width:100%; border-radius:12px; border:1.5px solid var(--line)}
  .proj-fig figcaption{margin-top:6px; font-size:11.5px; font-weight:700; color:var(--ink-3)}

  /* Order */
  .order-wrap{margin-top:22px; background:var(--ink); color:var(--bg); border-radius:22px; padding:28px; position:relative; overflow:hidden}
  .order-wrap::after{content:"★"; position:absolute; right:18px; top:6px; font-size:72px; color:var(--yellow); opacity:.9; transform:rotate(16deg)}
  .order-wrap h3{margin:0; font-size:clamp(21px,3vw,27px); font-weight:900; line-height:1.4; max-width:18em}
  .order-wrap p{color:color-mix(in srgb, var(--bg) 78%, transparent); margin:10px 0 0; max-width:38em; font-size:14px}
  .order-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:22px; position:relative; z-index:1}
  @media (max-width:720px){ .order-grid{grid-template-columns:1fr} }
  .order-card{background:var(--bg); color:var(--ink); border-radius:16px; padding:20px; text-decoration:none; display:flex; flex-direction:column; gap:6px; border:2px solid transparent; transition:transform .15s ease}
  .order-card:hover{transform:translateY(-3px)}
  .order-card .site{font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:600; letter-spacing:.14em; color:var(--ink-3)}
  .order-card b{font-size:16px; line-height:1.55; font-weight:900}
  .order-card .price{font-family:"Archivo",sans-serif; font-weight:900; font-size:28px; line-height:1.1; margin-top:6px}
  .order-card .price small{font-size:13px; font-family:"Zen Kaku Gothic New",sans-serif; color:var(--ink-3); font-weight:700}
  .order-card .go{margin-top:10px; font-weight:900; font-size:13px; color:var(--blue-ink); display:inline-flex; gap:6px; align-items:center}
  .order-note{font-size:12px; margin-top:16px !important; position:relative; z-index:1}

  footer{margin-top:64px; border-top:1px solid var(--line); padding:22px 0 6px; display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; align-items:center}
  footer .fbrand{font-family:"Archivo",sans-serif; font-weight:900; font-size:16px}
  footer p{margin:0; color:var(--ink-3); font-size:12px}

  /* Lightbox */
  .lightbox{position:fixed; inset:0; z-index:80; background:rgba(8,9,11,.92); display:none; align-items:center; justify-content:center; padding:20px}
  .lightbox.open{display:flex}
  .lightbox figure{margin:0; max-width:960px; width:100%}
  .lightbox img, .lightbox video{width:100%; max-height:76vh; object-fit:contain; border-radius:14px; background:#000}
  .lightbox video{display:block}
  .lightbox figcaption{color:#f2f1ec; margin-top:14px; display:flex; justify-content:space-between; gap:16px; align-items:flex-start; flex-wrap:wrap}
  .lightbox figcaption b{font-size:16px; display:block}
  .lightbox figcaption span{color:#b9bbc2; font-size:13px}
  .lb-close{appearance:none; border:1.5px solid #f2f1ec; background:transparent; color:#f2f1ec; font:inherit; font-weight:900; font-size:13px; border-radius:999px; padding:9px 16px; cursor:pointer; flex:none}
  .lb-close:hover{background:#f2f1ec; color:#111}

  .reveal{opacity:1; transform:none}

  /* Mobile hero: 画像全体（右のOくんと金魚まで）を上部に表示し、テキストは下の通常背景に置く */
  @media (max-width:860px){
    .hero{aspect-ratio:auto; min-height:0; display:block; background:var(--bg)}
    .hero::after{display:none}
    .hero-media{position:relative; inset:auto}
    .hero-bg{position:relative; inset:auto; width:100%; height:auto; aspect-ratio:2352/1008; object-fit:cover; object-position:center}
    .hero-in{padding:28px 20px 38px}
    .hero h1{color:var(--ink); text-shadow:none}
    .hero h1 .blue{color:var(--blue)}
    .hero h1 .stroke{color:transparent; -webkit-text-stroke:2px var(--ink)}
    .hero-name{color:var(--ink); text-shadow:none}
    .hero-name span{color:var(--ink-2)!important}
    .hero-lead{color:var(--ink-2); text-shadow:none}
    .hero-meta{border-top-color:var(--line)}
    .hero-meta div b{color:var(--ink); text-shadow:none}
    .hero-meta div span{color:var(--ink-3)}
  }
