/* ============================================
   ai Cafe - オフライン用フォント定義
   ============================================ */

/* ---- Noto Sans JP ---- */

/* latin */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-latin-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-latin-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* latin-ext */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-latin-ext-500-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-latin-ext-700-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* japanese */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-japanese-400-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF,U+20000-2A6DF,U+2A700-2B73F,U+2B740-2B81F,U+2B820-2CEAF,U+2CEB0-2EBEF,U+30FB;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-japanese-500-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF,U+20000-2A6DF,U+2A700-2B73F,U+2B740-2B81F,U+2B820-2CEAF,U+2CEB0-2EBEF,U+30FB;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/noto-sans-jp-japanese-700-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF,U+20000-2A6DF,U+2A700-2B73F,U+2B740-2B81F,U+2B820-2CEAF,U+2CEB0-2EBEF,U+30FB;
}

/* ---- Zen Maru Gothic ---- */

/* latin */
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-900-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* latin-ext */
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-ext-500-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-ext-700-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-latin-ext-900-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* japanese */
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-japanese-400-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-japanese-500-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-japanese-700-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF;
}
@font-face {
  font-family: 'Zen Maru Gothic';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url('../fonts/zen-maru-gothic-japanese-900-normal.woff2') format('woff2');
  unicode-range: U+3000-303F,U+3041-3096,U+309D-309F,U+30A1-30FA,U+30FC-30FF,U+FF61-FF9F,U+4E00-9FFF,U+3400-4DBF;
}

/* ====== フォールバックフォント メトリクス調整（CLS対策） ======
   Webフォント未到達時、システム日本語フォントの寸法をWebフォントに
   合わせ、swap時のレイアウトずれ(折返し・高さ変化)を防ぐ。 */
@font-face {
  font-family: 'Noto Sans JP fallback';
  src: local('Hiragino Sans'), local('Hiragino Kaku Gothic ProN'), local('Yu Gothic Medium'), local('Yu Gothic'), local('YuGothic'), local('Meiryo'), local('Noto Sans CJK JP'), local('MS PGothic');
  size-adjust: 99.63%;
  ascent-override: 116.43%;
  descent-override: 28.91%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Zen Maru Gothic fallback';
  src: local('Hiragino Sans'), local('Hiragino Kaku Gothic ProN'), local('Yu Gothic Medium'), local('Yu Gothic'), local('YuGothic'), local('Meiryo'), local('Noto Sans CJK JP'), local('MS PGothic');
  size-adjust: 87.89%;
  ascent-override: 131.98%;
  descent-override: 32.77%;
  line-gap-override: 0%;
}


/* ====== ヒーロー ファーストビュー用 極小サブセット ======
   unicode-range をヒーロー文字に限定し、上の本体facesより後に宣言することで
   これらのコードポイントに対して優先適用される。極小(18-23KB)＋preloadで
   初回描画前に確実に到達→フォントswap(=CLSの主因)を構造的に排除する。 */
@font-face { font-family:'Zen Maru Gothic'; font-style:normal; font-weight:900; font-display:swap;
  src:url('../fonts/hero-zen-maru-900.woff2') format('woff2'); unicode-range:U+0020-007E,U+00E9,U+2026,U+3001-3002,U+300C-300F,U+301C,U+3042,U+3048,U+304C,U+3051,U+3053,U+305F-3061,U+3067,U+306A,U+306E-306F,U+3078-3079,U+3089,U+308B,U+30A2,U+30A9,U+30AF,U+30B9,U+30C1,U+30C3-30C4,U+30C8,U+30CD,U+30D5,U+30DA,U+30DE,U+30E3,U+30E5,U+30EA-30ED,U+30EF,U+30F3,U+30FB-30FC,U+4E0A,U+4E2D,U+4EBA,U+4EE5,U+4FE1,U+500B,U+521D,U+591A,U+5B66,U+5E2B,U+5FC3,U+6559,U+6B53,U+6CBB,U+767B,U+7834,U+7A81,U+7D30,U+8005,U+898B,U+8A73,U+8B1B,U+8FCE,U+914D,U+9332,U+FF01,U+FF05,U+FF08-FF09,U+FF0C-FF0F,U+FF1A-FF1B,U+FF1F; }
@font-face { font-family:'Noto Sans JP'; font-style:normal; font-weight:400; font-display:swap;
  src:url('../fonts/hero-noto-400.woff2') format('woff2'); unicode-range:U+0020-007E,U+00E9,U+2026,U+3001-3002,U+300C-300F,U+301C,U+3042,U+3048,U+304C,U+3051,U+3053,U+305F-3061,U+3067,U+306A,U+306E-306F,U+3078-3079,U+3089,U+308B,U+30A2,U+30A9,U+30AF,U+30B9,U+30C1,U+30C3-30C4,U+30C8,U+30CD,U+30D5,U+30DA,U+30DE,U+30E3,U+30E5,U+30EA-30ED,U+30EF,U+30F3,U+30FB-30FC,U+4E0A,U+4E2D,U+4EBA,U+4EE5,U+4FE1,U+500B,U+521D,U+591A,U+5B66,U+5E2B,U+5FC3,U+6559,U+6B53,U+6CBB,U+767B,U+7834,U+7A81,U+7D30,U+8005,U+898B,U+8A73,U+8B1B,U+8FCE,U+914D,U+9332,U+FF01,U+FF05,U+FF08-FF09,U+FF0C-FF0F,U+FF1A-FF1B,U+FF1F; }
@font-face { font-family:'Noto Sans JP'; font-style:normal; font-weight:700; font-display:swap;
  src:url('../fonts/hero-noto-700.woff2') format('woff2'); unicode-range:U+0020-007E,U+00E9,U+2026,U+3001-3002,U+300C-300F,U+301C,U+3042,U+3048,U+304C,U+3051,U+3053,U+305F-3061,U+3067,U+306A,U+306E-306F,U+3078-3079,U+3089,U+308B,U+30A2,U+30A9,U+30AF,U+30B9,U+30C1,U+30C3-30C4,U+30C8,U+30CD,U+30D5,U+30DA,U+30DE,U+30E3,U+30E5,U+30EA-30ED,U+30EF,U+30F3,U+30FB-30FC,U+4E0A,U+4E2D,U+4EBA,U+4EE5,U+4FE1,U+500B,U+521D,U+591A,U+5B66,U+5E2B,U+5FC3,U+6559,U+6B53,U+6CBB,U+767B,U+7834,U+7A81,U+7D30,U+8005,U+898B,U+8A73,U+8B1B,U+8FCE,U+914D,U+9332,U+FF01,U+FF05,U+FF08-FF09,U+FF0C-FF0F,U+FF1A-FF1B,U+FF1F; }
