/*
Theme Name: Giftionary
Theme URI: https://giftionary.jp/
Author: KOTO
Description: 「条件で引ける、ギフトの辞書」giftionary.jp 専用テーマ。辞書（品目）／規範（相場とタブー）／提案（ギフト）の3層構造、条件セレクタ、価格を書かない商品ボックスを実装する。
Version: 1.1.0
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: giftionary
*/

/* ============================================================
   トークン
   配色はオリジナルイラスト（girl_fl.png）から抽出した。
   地はクリームを避けた淡いグリーングレー。
   ローズは「相場の数字」と主要ボタンにだけ使う。
   ========================================================== */
:root{
  --ground:#EDF2EF;
  --ground-2:#E4EBE7;
  --paper:#FCFDFC;
  --paper-fixed:#F1F4F2;
  --ink:#1E1A17;
  --ink-2:#4A433D;
  --ink-3:#6C645C;
  --rule:#C6D1CC;
  --rule-soft:#DBE3DF;
  --rose:#A8394F;
  --rose-lift:#C05169;
  --rose-soft:#F0D9DE;
  --rose-on:#FFFFFF;
  --brown:#6B4739;
  --mint:#367E73;
  --mint-soft:#DCEDE9;
  --ochre:#845410;
  --ochre-soft:#F4E8CE;

  --sh-1:0 1px 2px rgba(30,26,23,.06), 0 2px 6px -3px rgba(30,26,23,.10);
  --sh-2:0 2px 4px rgba(30,26,23,.07), 0 12px 28px -14px rgba(30,26,23,.28);
  --sh-3:0 3px 6px rgba(30,26,23,.09), 0 22px 44px -18px rgba(30,26,23,.34);

  --mincho:"Hiragino Mincho ProN","Yu Mincho","YuMincho","Noto Serif JP","Songti SC",Georgia,serif;
  --gothic:"Hiragino Sans","Yu Gothic","YuGothic",Meiryo,"Noto Sans JP",system-ui,sans-serif;

  --w:1120px;
  --w-read:760px;
  --ease:cubic-bezier(.2,.7,.3,1);
}

@media (prefers-color-scheme:dark){
  :root{
    --ground:#171A19; --ground-2:#121514; --paper:#232827; --paper-fixed:#F1F4F2;
    --ink:#F2EFEB; --ink-2:#C3CBC6; --ink-3:#9BA49F;
    --rule:#3B4441; --rule-soft:#2E3634;
    --rose:#F0A0B0; --rose-lift:#F7B6C3; --rose-soft:#412D33; --rose-on:#171A19;
    --brown:#D6B7A8; --mint:#8FD3C6; --mint-soft:#1F332F; --ochre:#E0B269; --ochre-soft:#332816;
    --sh-1:0 1px 2px rgba(0,0,0,.4);
    --sh-2:0 2px 4px rgba(0,0,0,.4), 0 12px 28px -14px rgba(0,0,0,.75);
    --sh-3:0 3px 6px rgba(0,0,0,.45), 0 22px 44px -18px rgba(0,0,0,.85);
  }
}
:root[data-theme="dark"]{
  --ground:#171A19; --ground-2:#121514; --paper:#232827; --paper-fixed:#F1F4F2;
  --ink:#F2EFEB; --ink-2:#C3CBC6; --ink-3:#9BA49F;
  --rule:#3B4441; --rule-soft:#2E3634;
  --rose:#F0A0B0; --rose-lift:#F7B6C3; --rose-soft:#412D33; --rose-on:#171A19;
  --brown:#D6B7A8; --mint:#8FD3C6; --mint-soft:#1F332F; --ochre:#E0B269; --ochre-soft:#332816;
  --sh-1:0 1px 2px rgba(0,0,0,.4);
  --sh-2:0 2px 4px rgba(0,0,0,.4), 0 12px 28px -14px rgba(0,0,0,.75);
  --sh-3:0 3px 6px rgba(0,0,0,.45), 0 22px 44px -18px rgba(0,0,0,.85);
}
:root[data-theme="light"]{
  --ground:#EDF2EF; --ground-2:#E4EBE7; --paper:#FCFDFC; --paper-fixed:#F1F4F2;
  --ink:#1E1A17; --ink-2:#4A433D; --ink-3:#6C645C;
  --rule:#C6D1CC; --rule-soft:#DBE3DF;
  --rose:#A8394F; --rose-lift:#C05169; --rose-soft:#F0D9DE; --rose-on:#FFFFFF;
  --brown:#6B4739; --mint:#367E73; --mint-soft:#DCEDE9; --ochre:#845410; --ochre-soft:#F4E8CE;
  --sh-1:0 1px 2px rgba(30,26,23,.06), 0 2px 6px -3px rgba(30,26,23,.10);
  --sh-2:0 2px 4px rgba(30,26,23,.07), 0 12px 28px -14px rgba(30,26,23,.28);
  --sh-3:0 3px 6px rgba(30,26,23,.09), 0 22px 44px -18px rgba(30,26,23,.34);
}

/* ============================================================
   ベース
   ========================================================== */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}

body{
  margin:0; color:var(--ink);
  background:var(--ground);
  background-image:
    radial-gradient(820px 380px at 88% -10%, var(--rose-soft) 0%, transparent 58%),
    radial-gradient(620px 340px at -6% 2%, var(--mint-soft) 0%, transparent 55%),
    linear-gradient(var(--ground), var(--ground-2));
  background-attachment:fixed;
  font-family:var(--gothic);
  font-size:17px; line-height:1.95;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased;
  overflow-wrap:break-word;
  position:relative;
}

/* 紙の目。フラットな塗りに触感を与える */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.5; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.14'/%3E%3C/svg%3E");
}
@media (prefers-color-scheme:dark){
  body::before{ mix-blend-mode:screen; opacity:.22; }
}
:root[data-theme="dark"] body::before{ mix-blend-mode:screen; opacity:.22; }
:root[data-theme="light"] body::before{ mix-blend-mode:multiply; opacity:.5; }

/* 入場。読み込んだ瞬間に「組まれた」感じを出す */
@keyframes gf-rise{
  from{ opacity:0; transform:translateY(14px); }
  to  { opacity:1; transform:none; }
}
.gf-hero > div,
.gf-hero > figure,
.gf-layer,
.gf-sec{
  animation:gf-rise .7s var(--ease) backwards;
}
.gf-hero > div{ animation-delay:.05s; }
.gf-hero > figure{ animation-delay:.18s; }
.gf-layer:nth-child(1){ animation-delay:.26s; }
.gf-layer:nth-child(2){ animation-delay:.34s; }
.gf-layer:nth-child(3){ animation-delay:.42s; }
img,svg,video{max-width:100%; height:auto; display:block;}
a{color:inherit;}
button{font:inherit;}
:where(a,button,select,input,summary):focus-visible{
  outline:2.5px solid var(--rose); outline-offset:3px; border-radius:3px;
}
@media (prefers-reduced-motion:reduce){*{animation:none !important; transition:none !important;}}

.gf-wrap{max-width:var(--w); margin-inline:auto; padding-inline:24px; position:relative; z-index:2;}
.gf-read{max-width:var(--w-read);}
.screen-reader-text{
  position:absolute !important; width:1px; height:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); white-space:nowrap;
}
.gf-skip{
  position:absolute; left:-9999px; top:0; background:var(--paper); color:var(--ink);
  padding:12px 20px; z-index:999;
}
.gf-skip:focus{left:8px; top:8px;}

/* ============================================================
   花びら（トップページのみ）
   ========================================================== */
.gf-petals{
  position:fixed; inset:0; pointer-events:none; z-index:1; overflow:hidden;
  contain:strict;
}
.gf-petal{
  position:absolute; top:-8vh; left:0; opacity:0;
  width:var(--sz,13px); height:calc(var(--sz,13px) * .82);
  background:var(--c,#EEB6C0);
  border-radius:100% 12% 100% 12%;
  will-change:transform,opacity;
  animation:gf-fall var(--dur,16s) linear var(--delay,0s) infinite;
}
@keyframes gf-fall{
  0%   { transform:translate3d(0,-10vh,0) rotate(0deg) scale(.9);    opacity:0; }
  10%  { opacity:.85; }
  50%  { transform:translate3d(var(--dx,60px),52vh,0) rotate(320deg) scale(1); }
  88%  { opacity:.6; }
  100% { transform:translate3d(calc(var(--dx,60px) * -.4),112vh,0) rotate(680deg) scale(.92); opacity:0; }
}
@media (prefers-reduced-motion:reduce){ .gf-petals{ display:none; } }

/* ============================================================
   ヘッダー
   ========================================================== */
/* 辞書の扉のように、細い二重罫で受ける */
.gf-mast{
  border-bottom:1px solid var(--rule);
  box-shadow:0 3px 0 -1px var(--rule-soft);
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:saturate(150%) blur(10px);
  position:sticky; top:0; z-index:40;
}
.gf-mast__in{
  display:flex; align-items:center; justify-content:space-between; gap:22px;
  padding:16px 0; flex-wrap:wrap;
}
.gf-logo{display:flex; align-items:baseline; gap:12px; text-decoration:none;}
.gf-logo b{
  font-family:var(--mincho); font-size:26px; letter-spacing:.14em; font-weight:600; line-height:1;
  transition:color .25s var(--ease);
}
.gf-logo b em{font-style:normal; color:var(--rose);}
.gf-logo small{font-size:12px; letter-spacing:.18em; color:var(--ink-3); white-space:nowrap;}
.gf-logo:hover b{color:var(--rose);}

.gf-nav ul{display:flex; gap:24px; margin:0; padding:0; list-style:none; flex-wrap:wrap;}
.gf-nav a{
  font-size:15px; color:var(--ink-2); text-decoration:none;
  position:relative; padding-bottom:3px;
}
.gf-nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1.5px;
  background:var(--rose); transform:scaleX(0); transform-origin:left;
  transition:transform .3s var(--ease);
}
.gf-nav a:hover{color:var(--rose);}
.gf-nav a:hover::after{transform:scaleX(1);}

.gf-mast__search input[type="search"]{
  border:1px solid var(--rule); background:var(--paper); color:var(--ink);
  border-radius:3px; padding:9px 14px; font-size:14px; min-width:190px;
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.gf-mast__search input[type="search"]:hover{border-color:var(--rose);}
.gf-mast__search input[type="search"]:focus{box-shadow:0 0 0 3px var(--rose-soft);}

/* ============================================================
   フッター
   ========================================================== */
.gf-foot{
  border-top:1px solid var(--rule);
  background:color-mix(in srgb, var(--paper) 70%, transparent);
  margin-top:76px; padding:42px 0 50px; font-size:15px; color:var(--ink-2);
  position:relative; z-index:2;
}
.gf-foot__grid{display:flex; justify-content:space-between; gap:32px; flex-wrap:wrap;}
.gf-foot ul{list-style:none; margin:0; padding:0; display:flex; gap:20px; flex-wrap:wrap;}
.gf-foot a{text-decoration:none; transition:color .2s var(--ease);}
.gf-foot a:hover{color:var(--rose);}
.gf-foot__stance{
  max-width:50ch; font-size:14.5px; line-height:2; color:var(--ink-2);
  border-left:3px solid var(--mint); padding-left:16px; margin:0;
}
.gf-foot__copy{margin-top:30px; font-size:13px; color:var(--ink-3); letter-spacing:.04em;}

/* ============================================================
   トップページ
   ========================================================== */
.gf-hero{display:grid; grid-template-columns:1.12fr .88fr; gap:38px; padding:52px 0 38px; align-items:center;}
.gf-thesis{
  font-family:var(--mincho); font-weight:600; letter-spacing:.03em;
  font-size:clamp(30px,4.4vw,46px); line-height:1.5; margin:0 0 18px; text-wrap:balance;
}
.gf-thesis .mark{
  background:linear-gradient(transparent 60%, var(--rose-soft) 60%);
  padding-bottom:2px;
}
.gf-lede{font-size:16.5px; line-height:2.1; color:var(--ink-2); max-width:42ch; margin:0 0 30px;}
.gf-lede strong{color:var(--ink); font-weight:600;}

/* イラストは「額装した一枚」として置く。ただの四角い箱に見せない */
.gf-illust{
  position:relative; margin:0; padding:16px 16px 44px;
  background:linear-gradient(158deg, #FFFFFF 0%, var(--paper-fixed) 58%, #E9EEEB 100%);
  border-radius:3px;
  box-shadow:
    var(--sh-2),
    0 0 0 1px rgba(30,26,23,.07) inset,
    0 26px 70px -34px var(--rose);          /* 台紙のまわりに花の色をにじませる */
  transform:rotate(-.7deg);
  transition:transform .55s var(--ease), box-shadow .55s var(--ease);
}
/* マットの内罫とキャプション */
.gf-illust::after{
  content:"ORIGINAL ILLUSTRATION";
  position:absolute; left:16px; right:16px; bottom:15px;
  padding-top:11px; border-top:1px solid rgba(30,26,23,.14);
  font-family:var(--mincho); font-size:10.5px; letter-spacing:.28em;
  color:#8A7568; text-align:center;
}
.gf-illust:hover{
  transform:rotate(0deg) translateY(-6px);
  box-shadow:var(--sh-3), 0 0 0 1px rgba(30,26,23,.07) inset, 0 34px 84px -34px var(--rose);
}
.gf-illust img{width:100%; border-radius:2px;}

/* 条件セレクタ */
.gf-finder{
  border:1px solid var(--rule); background:var(--paper); border-radius:4px;
  box-shadow:var(--sh-1); transition:box-shadow .35s var(--ease);
}
.gf-finder:hover{box-shadow:var(--sh-2);}
.gf-finder__h{
  display:flex; align-items:center; gap:10px; margin:0;
  padding:14px 18px; border-bottom:1px solid var(--rule-soft);
  font-size:13.5px; letter-spacing:.14em; color:var(--ink-2); font-weight:600;
}
.gf-finder__h::before{
  content:""; width:14px; height:14px; flex:none; border-radius:2px;
  border:1.5px solid var(--rose); border-left-width:5px;
}
.gf-finder__grid{display:grid; grid-template-columns:repeat(5,1fr); gap:1px; background:var(--rule-soft);}
.gf-fld{background:var(--paper); padding:13px 15px 14px; min-width:0; transition:background .25s var(--ease);}
.gf-fld:hover, .gf-fld:focus-within{background:var(--rose-soft);}
.gf-fld label{display:block; font-size:12.5px; letter-spacing:.12em; color:var(--ink-3); margin-bottom:6px;}
.gf-fld select{
  width:100%; border:0; background:transparent; color:var(--ink);
  font-family:var(--mincho); font-size:17px; font-weight:600; letter-spacing:.03em;
  padding:2px 0; cursor:pointer;
}
.gf-finder__foot{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:15px 18px; border-top:1px solid var(--rule-soft); flex-wrap:wrap;
}
.gf-finder__readout{font-family:var(--mincho); font-size:16px; color:var(--ink-2); margin:0;}
.gf-finder__readout b{color:var(--ink); font-weight:600;}
.gf-btn{
  border:0; border-radius:3px; background:var(--rose); color:var(--rose-on);
  font-family:var(--gothic); font-size:15px; font-weight:700; letter-spacing:.12em;
  padding:12px 32px; cursor:pointer; box-shadow:var(--sh-1);
  transition:background .25s var(--ease), transform .2s var(--ease), box-shadow .25s var(--ease);
}
.gf-btn:hover{background:var(--rose-lift); transform:translateY(-2px); box-shadow:var(--sh-2);}
.gf-btn:active{transform:translateY(0);}

/* 3層の入口（爪掛け） */
.gf-layers{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; padding:14px 0 50px;}
.gf-layer{
  position:relative; background:var(--paper); border:1px solid var(--rule);
  border-radius:4px; padding:24px 24px 26px; text-decoration:none; display:block;
  box-shadow:var(--sh-1); overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
/* 通常時から色の面を持たせる。白いカードが並ぶだけの状態にしない */
.gf-layer::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(158deg, color-mix(in srgb, var(--tab) 14%, transparent), transparent 58%);
  opacity:.42; transition:opacity .35s var(--ease);
}
.gf-layer{ border-top:3px solid var(--tab); }
.gf-layer:hover{transform:translateY(-5px); box-shadow:var(--sh-3); border-color:var(--tab);}
.gf-layer:hover::before{opacity:1;}
.gf-layer::after{
  content:attr(data-tab); position:absolute; top:-1px; right:20px;
  background:var(--tab); color:#fff;
  font-family:var(--mincho); font-size:13px; font-weight:600; letter-spacing:.2em;
  writing-mode:vertical-rl; padding:12px 6px 14px; border-radius:0 0 3px 3px;
}
.gf-layer--dict{--tab:var(--brown);}
.gf-layer--manner{--tab:var(--ochre);}
.gf-layer--gift{--tab:var(--rose);}
.gf-layer > *{position:relative;}
.gf-layer h2{font-family:var(--mincho); font-size:21px; letter-spacing:.05em; margin:0 0 8px; font-weight:600;}
.gf-layer p{font-size:14.5px; line-height:2; color:var(--ink-2); margin:0 0 14px; padding-right:30px;}
.gf-layer .gf-layer__ex{
  display:block; font-size:13px; color:var(--ink-3); border-top:1px dotted var(--rule);
  padding-top:11px; line-height:1.95;
}
.gf-badge{
  display:inline-block; margin-top:11px; font-size:12px; letter-spacing:.08em;
  border:1px solid var(--mint); color:var(--mint); border-radius:3px; padding:2px 9px;
}
.gf-badge--ad{border-color:var(--rule); color:var(--ink-3);}

.gf-sec{padding:10px 0 50px;}
.gf-sec__h{
  display:flex; align-items:baseline; justify-content:space-between; gap:18px;
  border-bottom:1px solid var(--rule); padding-bottom:12px; margin-bottom:24px; flex-wrap:wrap;
}
.gf-sec__h h2{
  font-family:var(--mincho); font-size:23px; font-weight:600; letter-spacing:.05em; margin:0;
  display:flex; align-items:center; gap:11px;
}
/* 見出しの印は花びら。降ってくる花びらと同じ形にそろえる */
.gf-sec__h h2::before{
  content:""; width:13px; height:11px; flex:none;
  background:var(--rose); border-radius:100% 12% 100% 12%;
  transform:rotate(-18deg);
}
.gf-sec__h a{font-size:14.5px; color:var(--ink-2); text-decoration:none; transition:color .2s var(--ease);}
.gf-sec__h a:hover{color:var(--rose);}

/* ============================================================
   カード
   ========================================================== */
.gf-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px;}
.gf-card{
  position:relative; display:block; text-decoration:none;
  background:var(--paper); border:1px solid var(--rule); border-radius:4px;
  padding:20px 22px 22px; box-shadow:var(--sh-1); overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.gf-card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--tab); transform:scaleY(.18); transform-origin:top;
  transition:transform .35s var(--ease);
}
/* 通常時にも層の色をうっすら残す */
.gf-card::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(200deg, color-mix(in srgb, var(--tab) 9%, transparent), transparent 46%);
}
.gf-card:hover{transform:translateY(-4px); box-shadow:var(--sh-3); border-color:var(--tab);}
.gf-card:hover::before{transform:scaleY(1);}
.gf-card--dict{--tab:var(--brown);}
.gf-card--manner{--tab:var(--ochre);}
.gf-card--gift{--tab:var(--rose);}
.gf-card > *{ position:relative; z-index:1; }
.gf-card__tab{
  position:absolute; top:-1px; right:16px; background:var(--tab); color:#fff;
  font-family:var(--mincho); font-size:12px; font-weight:600; letter-spacing:.18em;
  writing-mode:vertical-rl; padding:10px 5px 12px; border-radius:0 0 3px 3px;
}
.gf-card__title{
  display:block; font-family:var(--mincho); font-size:18.5px; font-weight:600;
  letter-spacing:.03em; line-height:1.65; padding-right:32px; margin-bottom:8px;
}
.gf-card__ex{display:block; font-size:14.5px; line-height:1.95; color:var(--ink-2);}
.gf-card__terms{display:flex; gap:7px; flex-wrap:wrap; margin-top:13px;}
.gf-card__terms span{
  font-size:12.5px; letter-spacing:.06em; color:var(--ink-3);
  border:1px solid var(--rule); border-radius:3px; padding:2px 9px;
}

/* ============================================================
   記事共通
   ========================================================== */
.gf-main{padding:30px 0 0; position:relative; z-index:2;}
.gf-crumb{font-size:13.5px; color:var(--ink-3); letter-spacing:.04em; margin-bottom:20px;}
.gf-crumb a{text-decoration:none; transition:color .2s var(--ease);}
.gf-crumb a:hover{color:var(--rose);}
.gf-crumb span[aria-hidden]{color:var(--rule); margin:0 8px;}

.gf-article h1{
  font-family:var(--mincho); font-weight:600; letter-spacing:.03em;
  font-size:clamp(27px,3.6vw,37px); line-height:1.55; margin:0 0 14px; text-wrap:balance;
}
.gf-meta{
  display:flex; gap:18px; flex-wrap:wrap; font-size:13.5px; color:var(--ink-3);
  border-bottom:1px solid var(--rule); padding-bottom:18px; margin-bottom:30px; letter-spacing:.04em;
}
.gf-meta .is-adfree{color:var(--mint); font-weight:600;}

.gf-body{font-size:17.5px; line-height:2.1;}
.gf-body > p{margin:0 0 24px;}
.gf-body h2{
  font-family:var(--mincho); font-size:24px; font-weight:600; letter-spacing:.04em;
  margin:46px 0 16px; padding-bottom:11px; border-bottom:1px solid var(--rule);
  scroll-margin-top:88px;
}
.gf-body h3{
  font-family:var(--mincho); font-size:20px; font-weight:600; letter-spacing:.04em;
  margin:34px 0 12px;
}
.gf-body ul,.gf-body ol{margin:0 0 26px; padding-left:1.5em;}
.gf-body li{margin-bottom:9px;}
.gf-body li::marker{color:var(--rose);}
.gf-body a{color:var(--rose); text-underline-offset:4px; text-decoration-thickness:1px;}
.gf-body a:hover{text-decoration-thickness:2px;}
.gf-body strong,.gf-body b{font-weight:700;}
.gf-body blockquote{
  margin:28px 0; padding:6px 0 6px 20px; border-left:3px solid var(--rule);
  color:var(--ink-2); font-size:16.5px;
}
.gf-body figure{margin:30px 0;}
.gf-body figcaption{font-size:13.5px; color:var(--ink-3); margin-top:8px;}

/* 表 */
.gf-body table,.gf-tbl{border-collapse:collapse; width:100%; font-size:16px;}
.gf-body table th,.gf-body table td,.gf-tbl th,.gf-tbl td{
  border-bottom:1px solid var(--rule-soft); padding:13px 14px; text-align:left; vertical-align:top;
}
.gf-body table thead th,.gf-tbl thead th{
  font-size:13px; letter-spacing:.1em; color:var(--ink-3); font-weight:700;
  border-bottom:2px solid var(--rule); white-space:nowrap;
}
.gf-body table tbody tr,.gf-tbl tbody tr{transition:background .2s var(--ease);}
.gf-body table tbody tr:hover,.gf-tbl tbody tr:hover{background:var(--rose-soft);}
.gf-body table td.amt,.gf-tbl td.amt{
  font-family:var(--mincho); font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap;
}
.gf-body .wp-block-table,.gf-scroll{overflow-x:auto; margin:30px 0;}

/* ============================================================
   相場（規範層の主役）
   ========================================================== */
.gf-datum{
  border:1px solid var(--rule); border-left:4px solid var(--rose);
  background:var(--paper); border-radius:4px; padding:26px 28px 22px; margin:0 0 28px;
  box-shadow:var(--sh-2);
}
.gf-datum__lab{font-size:13px; letter-spacing:.18em; color:var(--ink-3); margin:0 0 9px; font-weight:600;}
.gf-datum__row{display:flex; align-items:baseline; gap:18px; flex-wrap:wrap;}
.gf-datum__fig{
  font-family:var(--mincho); font-weight:600; color:var(--rose); margin:0;
  font-size:clamp(38px,5.8vw,56px); line-height:1.15; font-variant-numeric:tabular-nums;
}
.gf-datum__fig small{font-size:.44em; letter-spacing:.06em; margin-left:3px;}
.gf-datum__qual{font-size:15.5px; color:var(--ink-2); line-height:1.9; margin:0;}
.gf-datum__src{
  font-size:13.5px; color:var(--ink-3); margin:17px 0 0; padding-top:13px;
  border-top:1px dotted var(--rule); line-height:1.9;
}
.gf-datum__src a{color:var(--ink-2);}

/* 地雷 */
.gf-mine{
  background:var(--ochre-soft); border-radius:4px; padding:20px 24px 18px; margin:30px 0;
  border:1px solid var(--ochre); box-shadow:var(--sh-1);
}
.gf-mine h4{
  font-family:var(--gothic); font-size:14px; letter-spacing:.14em; color:var(--ochre);
  margin:0 0 11px; display:flex; align-items:center; gap:9px; font-weight:700;
}
.gf-mine h4::before{
  content:"!"; width:19px; height:19px; flex:none; border-radius:50%;
  background:var(--ochre); color:var(--ochre-soft);
  font-size:13px; font-weight:700; display:grid; place-items:center; line-height:1;
}
.gf-mine ul,.gf-mine p{margin:0; font-size:16px; line-height:2.05;}
.gf-mine ul{padding-left:1.2em;}
.gf-mine li::marker{color:var(--ochre);}

/* 贈らないほうがいい */
.gf-contra{
  border:1px solid var(--mint); background:var(--mint-soft);
  border-radius:4px; padding:20px 24px 18px; margin:30px 0; box-shadow:var(--sh-1);
}
.gf-contra h4{
  font-family:var(--gothic); font-size:14px; letter-spacing:.14em; color:var(--mint);
  margin:0 0 10px; font-weight:700;
}
.gf-contra p,.gf-contra ul{margin:0; font-size:16px; line-height:2.05;}

/* 出典 */
.gf-ref{border-top:1px solid var(--rule); margin-top:46px; padding-top:24px;}
.gf-ref h4{font-size:13.5px; letter-spacing:.14em; color:var(--ink-3); margin:0 0 12px; font-weight:700;}
.gf-ref ul{margin:0; padding-left:1.3em; font-size:14.5px; line-height:2; color:var(--ink-2);}

/* 管理者向け警告 */
.gf-guard{
  background:#8A1E2C; color:#fff; padding:14px 18px; border-radius:3px;
  font-size:15px; margin-bottom:24px;
}

/* ============================================================
   辞書層のエントリ
   ========================================================== */
.gf-entry__head{border-bottom:3px solid var(--ink); padding-bottom:16px; margin-bottom:26px;}
.gf-headword{display:flex; align-items:baseline; gap:16px; flex-wrap:wrap;}
.gf-headword h1{
  font-family:var(--mincho); font-size:clamp(34px,4.8vw,46px); font-weight:600;
  letter-spacing:.08em; margin:0; line-height:1.2;
}
.gf-yomi{font-size:15px; color:var(--ink-2); letter-spacing:.12em;}
.gf-pos{display:flex; gap:7px; flex-wrap:wrap; margin-top:15px;}
.gf-pos a,.gf-pos span{
  font-size:12.5px; letter-spacing:.08em; padding:3px 11px; border-radius:3px; text-decoration:none;
  border:1px solid var(--rule); color:var(--ink-2); background:var(--paper);
  transition:border-color .2s var(--ease), color .2s var(--ease), transform .2s var(--ease);
}
.gf-pos a:hover{border-color:var(--brown); color:var(--brown); transform:translateY(-2px);}

.gf-defs{counter-reset:d; margin:0 0 28px; padding:0; list-style:none;}
.gf-defs li{
  counter-increment:d; position:relative; padding-left:2.3em;
  font-size:17.5px; line-height:2.1; margin-bottom:15px;
}
.gf-defs li::before{
  content:counter(d); position:absolute; left:0; top:.46em;
  font-family:var(--mincho); font-size:13px; font-weight:600;
  width:1.6em; height:1.6em; border-radius:50%; display:grid; place-items:center;
  background:var(--ink); color:var(--ground); line-height:1;
}

/* ============================================================
   商品ボックス（提案層のみ）
   ========================================================== */
.gf-adband{
  display:inline-flex; align-items:center; gap:10px; font-size:13.5px; letter-spacing:.1em;
  border:1px solid var(--rule); background:var(--paper); color:var(--ink-2);
  border-radius:3px; padding:8px 15px; margin:0 0 26px;
}
.gf-adband b{color:var(--ink); font-weight:700; letter-spacing:.2em;}

.gf-prod{
  display:grid; grid-template-columns:140px 1fr; gap:20px;
  border:1px solid var(--rule); background:var(--paper); border-radius:4px;
  padding:20px; margin:30px 0; box-shadow:var(--sh-1);
  transition:box-shadow .3s var(--ease);
}
.gf-prod:hover{box-shadow:var(--sh-2);}
.gf-prod__img{
  background:var(--ground); border:1px solid var(--rule-soft); border-radius:3px;
  aspect-ratio:1; display:grid; place-items:center; overflow:hidden;
  font-size:12.5px; color:var(--ink-3); text-align:center;
}
.gf-prod__img img{width:100%; height:100%; object-fit:contain;}
.gf-prod__body{min-width:0;}
.gf-prod__name{font-family:var(--mincho); font-size:19px; font-weight:600; letter-spacing:.03em; margin:0 0 6px;}
.gf-prod__band{font-size:14.5px; color:var(--ink-2); margin:0 0 4px;}
.gf-prod__band b{font-family:var(--mincho); font-size:18px; color:var(--ink); font-variant-numeric:tabular-nums;}
.gf-prod__why{font-size:15px; color:var(--ink-2); line-height:1.95; margin:10px 0 15px;}
.gf-prod__links{display:flex; gap:9px; flex-wrap:wrap;}
.gf-prod__links a{
  font-size:14px; letter-spacing:.04em; text-decoration:none; border-radius:3px;
  padding:10px 18px; border:1px solid var(--rule); background:var(--ground); color:var(--ink);
  transition:border-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease);
}
.gf-prod__links a.is-primary{background:var(--rose); border-color:var(--rose); color:var(--rose-on); font-weight:700;}
.gf-prod__links a:hover{border-color:var(--rose); transform:translateY(-2px); box-shadow:var(--sh-1);}
.gf-prod__links a.is-primary:hover{background:var(--rose-lift);}
.gf-prod__note{
  grid-column:1/-1; font-size:13px; color:var(--ink-3); line-height:1.9;
  border-top:1px dotted var(--rule); padding-top:12px; margin:4px 0 0;
}

/* ============================================================
   内部リンクの三角形
   ========================================================== */
.gf-tri{display:grid; grid-template-columns:repeat(2,1fr); gap:14px; margin:44px 0 0;}
.gf-tri a{
  display:block; text-decoration:none; background:var(--paper);
  border:1px solid var(--rule); border-radius:4px; padding:16px 18px; box-shadow:var(--sh-1);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.gf-tri a:hover{border-color:var(--rose); transform:translateY(-3px); box-shadow:var(--sh-2);}
.gf-tri .k{font-size:12.5px; letter-spacing:.14em; color:var(--ink-3); display:block; margin-bottom:4px;}
.gf-tri .t{font-family:var(--mincho); font-size:17px; font-weight:600; letter-spacing:.03em;}

/* ============================================================
   アーカイブ / finder / 404
   ========================================================== */
.gf-archive__head{border-bottom:1px solid var(--rule); padding-bottom:20px; margin-bottom:30px;}
.gf-archive__head h1{
  font-family:var(--mincho); font-size:clamp(27px,3.4vw,35px); font-weight:600;
  letter-spacing:.05em; margin:0 0 10px;
}
.gf-archive__head p{font-size:15.5px; color:var(--ink-2); margin:0; max-width:60ch; line-height:2;}

.gf-result__count{font-size:15px; color:var(--ink-2); margin:28px 0 16px;}
.gf-result__count b{font-family:var(--mincho); font-size:20px; color:var(--ink);}
.gf-noindex{
  font-size:13px; color:var(--ink-3); letter-spacing:.02em;
  border:1px dashed var(--rule); border-radius:3px; padding:11px 15px; margin:0 0 26px;
}
.gf-empty{
  border:1px solid var(--rule); background:var(--paper); border-radius:4px;
  padding:34px 26px; text-align:center; color:var(--ink-2); font-size:16px; box-shadow:var(--sh-1);
}

.gf-pager{display:flex; gap:9px; flex-wrap:wrap; margin:40px 0 0;}
.gf-pager .page-numbers{
  border:1px solid var(--rule); background:var(--paper); border-radius:3px;
  padding:9px 16px; font-size:15px; text-decoration:none;
  transition:border-color .2s var(--ease), transform .2s var(--ease);
}
.gf-pager .page-numbers:hover{border-color:var(--rose); transform:translateY(-2px);}
.gf-pager .page-numbers.current{background:var(--rose); border-color:var(--rose); color:var(--rose-on);}

.gf-404{text-align:center; padding:70px 0 44px;}
.gf-404 h1{font-family:var(--mincho); font-size:clamp(28px,4vw,40px); font-weight:600; margin:0 0 14px;}
.gf-404 p{color:var(--ink-2); font-size:16.5px; margin:0 0 34px;}

/* 固定ページ */
.gf-page__head{border-bottom:1px solid var(--rule); padding-bottom:18px; margin-bottom:30px;}
.gf-page__head h1{
  font-family:var(--mincho); font-size:clamp(27px,3.4vw,35px); font-weight:600;
  letter-spacing:.05em; margin:0;
}

/* ============================================================
   レスポンシブ
   ========================================================== */
@media (max-width:900px){
  .gf-hero{grid-template-columns:1fr; gap:28px;}
  .gf-illust{max-width:340px;}
  .gf-finder__grid{grid-template-columns:repeat(2,1fr);}
  .gf-layers{grid-template-columns:1fr;}
  .gf-tri{grid-template-columns:1fr;}
  .gf-mast{position:static;}
}
@media (max-width:620px){
  body{font-size:16.5px;}
  .gf-wrap{padding-inline:18px;}
  .gf-mast__in{gap:14px;}
  .gf-mast__search{width:100%;}
  .gf-mast__search input[type="search"]{width:100%;}
  .gf-prod{grid-template-columns:1fr;}
  .gf-prod__img{max-width:160px;}
  .gf-finder__foot{align-items:stretch;}
  .gf-btn{width:100%;}
  .gf-body{font-size:17px;}
  .gf-petals{display:none;}
}

/* ============================================================
   印刷
   ========================================================== */
@media print{
  .gf-mast__search,.gf-nav,.gf-finder,.gf-tri,.gf-foot ul,.gf-petals{display:none;}
  body{background:#fff; color:#000;}
}
