/* ===========================================================
   手書き風フレーム / ボタン — CSS
   使い方:
   1. 下の「SVGフィルタ定義」をHTMLの <body> 直下に1回だけ貼る
   2. このCSSを読み込む
   3. 要素に class="sk-frame" / "sk-btn" などを付ける
   ※ 枠線は ::before に描いて filter で歪ませています。
     中身のテキストには filter がかからないのでボケません。
   =========================================================== */

/* ---- SVGフィルタ定義（HTMLに貼る） --------------------------
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
  <filter id="rough1" x="-8%" y="-18%" width="116%" height="136%">
    <feTurbulence type="fractalNoise" baseFrequency="0.022" numOctaves="3" seed="3" result="n"/>
    <feDisplacementMap in="SourceGraphic" in2="n" scale="3.4" xChannelSelector="R" yChannelSelector="G"/>
  </filter>
  <filter id="rough2" x="-8%" y="-18%" width="116%" height="136%">
    <feTurbulence type="fractalNoise" baseFrequency="0.031" numOctaves="3" seed="17" result="n"/>
    <feDisplacementMap in="SourceGraphic" in2="n" scale="2.6" xChannelSelector="R" yChannelSelector="G"/>
  </filter>
  <filter id="rough3" x="-10%" y="-24%" width="120%" height="148%">
    <feTurbulence type="fractalNoise" baseFrequency="0.045" numOctaves="2" seed="41" result="n"/>
    <feDisplacementMap in="SourceGraphic" in2="n" scale="2.2" xChannelSelector="R" yChannelSelector="G"/>
  </filter>
</svg>
------------------------------------------------------------ */

:root {
  --sk-ink: #2b2724;      /* 鉛筆の線の色 */
  --sk-paper: #efe4cf;    /* 紙の地色 */
  --sk-card: #fdf6e8;     /* カードの地色 */
  --sk-accent: #e0568c;   /* アクセント（ピンク） */
  --sk-line: 3px;         /* 枠線の太さ */
  --sk-radius: 20px;
}

/* ---- 基本のフレーム ---- */
.sk-frame {
  position: relative;
  padding: 24px;
  background: none;
  transform: rotate(-0.3deg);   /* わずかな傾きが手書き感の要 */
}
.sk-frame::before {
  content: "";
  position: absolute;
  inset: 0;
  border: var(--sk-line) solid var(--sk-ink);
  border-radius: var(--sk-radius);
  background: var(--sk-card);
  filter: url(#rough1);
  pointer-events: none;
}
.sk-frame > * { position: relative; }  /* 中身を枠より前面に */

/* 傾きのバリエーション（隣り合う要素で交互に使う） */
.sk-tilt-r { transform: rotate(0.35deg); }
.sk-tilt-l { transform: rotate(-0.45deg); }
.sk-tilt-0 { transform: none; }

/* 二重線（鉛筆でなぞり書きした感じ） */
.sk-frame.sk-double::after {
  content: "";
  position: absolute;
  inset: 5px;
  border: 1.5px solid var(--sk-ink);
  border-radius: calc(var(--sk-radius) - 2px);
  filter: url(#rough2);
  opacity: 0.35;
  pointer-events: none;
}

/* 地色なしの枠だけ */
.sk-frame.sk-plain::before { background: none; }

/* 破線フレーム */
.sk-frame.sk-dashed::before { border-style: dashed; filter: url(#rough2); }

/* ---- ボタン ---- */
.sk-btn {
  position: relative;
  display: inline-block;
  padding: 12px 22px;
  font: inherit;
  font-weight: 700;
  color: var(--sk-ink);
  background: none;
  border: 0;
  cursor: pointer;
  transform: rotate(-0.6deg);
  transition: transform 0.12s ease;
}
.sk-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 2.5px solid var(--sk-ink);
  border-radius: 999px;
  filter: url(#rough2);
  pointer-events: none;
}
.sk-btn > span,
.sk-btn .sk-label { position: relative; }
.sk-btn:hover { transform: rotate(-0.6deg) translateY(-2px); }
.sk-btn:active { transform: rotate(-0.6deg) translateY(1px); }
.sk-btn:focus-visible { outline: 2px solid var(--sk-accent); outline-offset: 4px; }

/* 塗りつぶしボタン */
.sk-btn-primary { color: #fff; }
.sk-btn-primary::before { background: var(--sk-accent); }
.sk-btn-dark { color: #f6ecd9; }
.sk-btn-dark::before { background: var(--sk-ink); }

/* ---- 小さいタグ / ピル ---- */
.sk-tag {
  position: relative;
  display: inline-block;
  padding: 4px 13px;
  font-size: 12px;
}
.sk-tag::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid var(--sk-ink);
  border-radius: 999px;
  filter: url(#rough3);
  pointer-events: none;
}
.sk-tag > span { position: relative; }

/* ---- 紙の質感オーバーレイ ---- */
.sk-paper {
  position: relative;
  background: var(--sk-paper);
}
.sk-paper::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.5;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4'/><feColorMatrix type='saturate' values='0'/></filter><rect width='220' height='220' filter='url(%23g)' opacity='0.24'/></svg>");
}

/* ---- 手書き風の下線（見出しの下に置くSVG） ------------------
<svg viewBox="0 0 400 22" preserveAspectRatio="none" class="sk-underline">
  <path d="M6 13 C 70 4, 150 18, 214 9 S 340 6, 394 12"/>
  <path d="M14 18 C 90 11, 170 21, 250 15 S 350 13, 386 17" class="sk-underline-2"/>
</svg>
------------------------------------------------------------ */
.sk-underline { display: block; width: min(420px, 80%); height: 18px; margin: 6px auto 0; }
.sk-underline path { fill: none; stroke: var(--sk-accent); stroke-width: 3.2; stroke-linecap: round; }
.sk-underline path.sk-underline-2 { stroke: var(--sk-ink); stroke-width: 1.6; opacity: 0.45; }
