  :root{
    --paper:#EDE8D8;
    --card:#F8F5EC;
    --danger:#C6421D;
    --warn:#E2A121;
    --ok:#5F6E52;
    --ink:#3A4340;
    --paper-line: rgba(58,67,64,0.09);
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background-color:var(--paper);
    background-image:
      repeating-radial-gradient(circle at 0 0, transparent 0, transparent 38px, var(--paper-line) 39px, transparent 40px);
    background-size:120px 120px;
    color:var(--ink);
    font-family:'IBM Plex Sans JP', sans-serif;
    line-height:1.75;
    -webkit-font-smoothing:antialiased;
  }
  .display{font-family:'Bebas Neue', sans-serif; letter-spacing:0.03em;}
  .mono{font-family:'IBM Plex Mono', monospace;}

  /* ---- ruler / tick strip ---- */
  .ruler{
    height:14px;
    width:100%;
    background-image:repeating-linear-gradient(90deg, var(--ink) 0 1px, transparent 1px 24px);
    background-position:0 100%;
    background-repeat:repeat-x;
    background-size:24px 8px;
    opacity:0.55;
  }
  .tape{
    height:10px;
    background-image:repeating-linear-gradient(135deg, var(--warn) 0 14px, var(--ink) 14px 28px);
  }

  .wrap{max-width:920px; margin:0 auto; padding:0 20px;}

  /* ---- header / masthead ---- */
  header.masthead{padding:36px 0 26px; position:relative;}
  .eyebrow{
    display:flex; align-items:center; gap:8px;
    font-family:'IBM Plex Mono', monospace;
    font-size:12.5px; letter-spacing:0.05em; color:var(--ink); opacity:0.85;
    margin-bottom:14px; flex-wrap:wrap;
  }
  /* 【SEO】内部リンクを網羅するためのタグリンク用の装飾 */
  .tag-link{
    color:var(--ink); text-decoration:none; border:1px solid var(--ink); padding:2px 8px; border-radius:2px;
    transition:background 0.2s, color 0.2s; font-weight:500;
  }
  .tag-link:hover{background:var(--ink); color:var(--card);}
  
  .masthead-row{display:flex; justify-content:flex-start; align-items:flex-end; gap:24px; flex-wrap:wrap;}
  h1.facility-name{
    font-size:clamp(34px,6vw,58px);
    margin:0; line-height:0.98; color:var(--ink);
  }
  .catch{
    margin-top:10px; font-size:15.5px; max-width:44ch; color:var(--ink); opacity:0.85;
  }
  .rank-seal{
    flex-shrink:0;
    margin-left:auto;
    width:104px; height:104px; border-radius:50%;
    border:3px solid var(--danger);
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    transform:rotate(-8deg);
    color:var(--danger);
    font-family:'Bebas Neue', sans-serif;
    background:repeating-radial-gradient(circle, rgba(198,66,29,0.05) 0 2px, transparent 2px 4px);
  }
  .rank-seal .r-label{font-size:11px; letter-spacing:0.15em; font-family:'IBM Plex Mono',monospace; margin-bottom:2px;}
  .rank-seal .r-grade{font-size:44px; line-height:1;}

  /* ---- API Photo Gallery (Polaroid Style) ---- */
  .gallery-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
    padding: 24px 0 10px;
  }
  @media(max-width:720px){ .gallery-grid { grid-template-columns: repeat(2, 1fr); } }
  @media(max-width:480px){ .gallery-grid { grid-template-columns: 1fr; } }
  
  .photo-snap {
    background: var(--card);
    padding: 11px 11px 24px 11px;
    border: 1px solid rgba(58,67,64,0.15);
    box-shadow: 2px 5px 10px rgba(58,67,64,0.06);
    transform: rotate(-1deg);
    transition: transform 0.4s ease, box-shadow 0.4s ease;
  }
  .photo-snap:nth-child(2) { transform: rotate(1.5deg); }
  .photo-snap:nth-child(3) { transform: rotate(-0.5deg); }
  .photo-snap:hover { transform: rotate(0deg) scale(1.02); box-shadow: 4px 8px 16px rgba(58,67,64,0.1); }
  
  .photo-snap img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    filter: sepia(12%) contrast(96%) brightness(98%);
    background: rgba(58,67,64,0.05);
    display: block;
  }
  .photo-caption {
    font-size: 11px;
    font-family: 'IBM Plex Mono', monospace;
    opacity: 0.55;
    margin-top: 10px;
    text-align: center;
    letter-spacing: 0.05em;
  }

  /* ---- section shell ---- */
  section{padding:34px 0;}
  .section-head{display:flex; align-items:baseline; gap:12px; margin-bottom:16px;}
  .section-head .num{font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--ink); opacity:0.5;}
  h2.section-title{
    font-size:24px; font-weight:700; margin:0; color:var(--ink);
  }
  .fade{opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease;}
  .fade.in{opacity:1; transform:translateY(0);}

  /* ---- danger alert ---- */
  .alert-box{
    background:var(--card);
    border:2px solid var(--danger);
    border-left:10px solid var(--danger);
    padding:20px 22px;
    position:relative;
  }
  .alert-box .a-label{
    font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.1em;
    color:var(--danger); font-weight:600; margin-bottom:8px; display:block;
  }
  .alert-box p{margin:0; font-size:15.5px;}
  .alert-tags{display:flex; gap:8px; margin-top:14px; flex-wrap:wrap;}
  .alert-tags span{
    font-family:'IBM Plex Mono',monospace; font-size:11.5px;
    background:var(--danger); color:var(--card); padding:3px 9px; border-radius:2px;
  }

  /* ---- spec grid ---- */
  .spec-grid{
    display:grid; grid-template-columns:repeat(3, 1fr); gap:14px;
  }
  @media(max-width:720px){ .spec-grid{grid-template-columns:repeat(2,1fr);} }
  @media(max-width:480px){ .spec-grid{grid-template-columns:1fr;} }
  .spec-card{
    background:var(--card);
    border:1px solid rgba(58,67,64,0.15);
    border-left-width:6px;
    padding:14px 15px 16px;
    display:flex; flex-direction:column; gap:8px;
  }
  .spec-card.risk-danger{border-left-color:var(--danger);}
  .spec-card.risk-warn{border-left-color:var(--warn);}
  .spec-card.risk-ok{border-left-color:var(--ok);}
  .spec-card .s-top{display:flex; justify-content:space-between; align-items:center;}
  .spec-card .s-title{font-size:13px; font-weight:600; letter-spacing:0.02em;}
  .badge{
    font-family:'IBM Plex Sans JP',sans-serif; font-size:11px; font-weight:700; letter-spacing:0.04em;
    padding:3px 8px; border-radius:2px; color:var(--card); white-space:nowrap;
  }
  .badge.risk-danger{background:var(--danger);}
  .badge.risk-warn{background:var(--warn); color:var(--ink);}
  .badge.risk-ok{background:var(--ok);}
  .spec-card ul{margin:0; padding-left:16px; font-size:12.8px; line-height:1.65; color:var(--ink); opacity:0.92;}
  .spec-card ul li{margin-bottom:3px;}

  /* ---- season ---- */
  .season-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:12px;}
  @media(max-width:720px){.season-grid{grid-template-columns:repeat(2,1fr);}}
  .season-card{background:var(--card); border:1px solid rgba(58,67,64,0.15); padding:14px;}
  .season-card .sea-label{font-family:'Bebas Neue',sans-serif; font-size:20px; margin-bottom:6px; display:block;}
  .season-card p{font-size:12.6px; margin:0; opacity:0.9;}
  .season-card.positive{border-top:4px solid var(--ok);}
  .season-card.caution{border-top:4px solid var(--warn);}

  /* ---- report / tactics ---- */
  .prose-box{background:var(--card); border:1px solid rgba(58,67,64,0.15); padding:20px 22px;}
  .prose-box p{margin:0 0 12px; font-size:14.8px;}
  .prose-box p:last-child{margin-bottom:0;}
  .tactics-list{list-style:none; margin:0; padding:0; display:grid; gap:10px;}
  .tactics-list li{
    background:var(--card); border:1px solid rgba(58,67,64,0.15);
    border-left:4px solid var(--ink);
    padding:12px 14px; font-size:14px; display:flex; gap:10px;
  }
  .tactics-list li .t-idx{font-family:'IBM Plex Mono',monospace; color:var(--ink); opacity:0.5; flex-shrink:0;}

  /* ---- facts ---- */
  .facts-list{list-style:none; margin:0; padding:0; display:grid; gap:8px;}
  .facts-list li{
    display:flex; gap:10px; align-items:flex-start;
    background:var(--card); border:1px solid rgba(58,67,64,0.12); padding:10px 13px; font-size:13.6px;
  }
  .freq{
    flex-shrink:0; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.05em;
    padding:2px 7px; border-radius:2px; margin-top:2px;
  }
  .freq.high{background:var(--ink); color:var(--card);}
  .freq.mid{background:rgba(58,67,64,0.14); color:var(--ink);}
  .note-small{font-size:11.5px; opacity:0.55; margin-top:10px;}

  /* ---- data / gauge ---- */
  .gauge-block{background:var(--card); border:1px solid rgba(58,67,64,0.15); padding:20px 22px;}
  .gauge-block.in .gauge-fill { width: var(--w); }
  .gauge-row{margin-bottom:14px;}
  .gauge-row:last-child{margin-bottom:0;}
  .gauge-row .g-top{display:flex; justify-content:space-between; font-size:12.5px; margin-bottom:5px;}
  .gauge-row .g-name{font-weight:600;}
  .gauge-row .g-val{font-family:'IBM Plex Mono',monospace;}
  .gauge-track{height:8px; background:rgba(58,67,64,0.12); position:relative; overflow:hidden;}
  .gauge-fill{height:100%; width:0%; transition:width 1.1s cubic-bezier(.22,.9,.3,1);}
  .gauge-fill.risk-danger{background:var(--danger);}
  .gauge-fill.risk-warn{background:var(--warn);}
  .gauge-fill.risk-ok{background:var(--ok);}
  .gauge-caption{font-size:11px; opacity:0.55; margin-top:16px;}

  /* ---- shop / amazon ---- */
  .shop-block{background:var(--ink); color:var(--card); padding:24px 22px;}
  .shop-block .pr-tag{
    display:inline-block; font-family:'IBM Plex Mono',monospace; font-size:10.5px;
    background:var(--warn); color:var(--ink); padding:2px 8px; border-radius:2px; margin-bottom:10px;
  }
  .shop-block h2.section-title{color:var(--card);}
  .shop-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-top:14px;}
  @media(max-width:560px){.shop-grid{grid-template-columns:1fr;}}
  .shop-item{
    background:rgba(248,245,236,0.06); border:1px solid rgba(248,245,236,0.18);
    padding:13px 14px; display:flex; flex-direction:column; gap:6px;
  }
  .shop-item .why{font-size:11.5px; opacity:0.65;}
  .shop-item .item-name{font-size:14px; font-weight:600;}
  .shop-item a{
    align-self:flex-start; margin-top:4px; font-size:12px; font-family:'IBM Plex Mono',monospace;
    color:var(--paper); text-decoration:underline; text-underline-offset:3px;
  }
  .disclosure{font-size:11px; opacity:0.55; margin-top:18px; line-height:1.6;}

  /* ---- reserve ---- */
  .reserve-block{padding:26px 0 50px; text-align:center;}
  .reserve-btn{
    display:inline-block; font-family:'IBM Plex Mono',monospace; font-size:13px;
    border:1.5px solid var(--ink); padding:12px 26px; color:var(--ink); text-decoration:none;
    letter-spacing:0.04em;
  }
  .reserve-btn:hover{background:var(--ink); color:var(--card);}
  .reserve-note{font-size:11.5px; opacity:0.55; margin-top:10px;}

  footer{padding:20px 0 40px; text-align:center; font-size:11px; opacity:0.45;}

  @media (prefers-reduced-motion: reduce){
    *{transition:none !important; scroll-behavior:auto !important;}
    .fade{opacity:1; transform:none;}
  }

  .video-snap .video-wrap{
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
  }
  .video-snap .video-wrap iframe{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
  }
  .video-facade{
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-color: rgba(58,67,64,0.08);
    cursor: pointer;
    border: 0;
    padding: 0;
    transition: filter 0.15s ease;
  }
  .video-facade:hover{
    filter: brightness(1.06);
  }