/* HamLab Profile Page CSS
   Theme colors are set via CSS custom properties on :root by the page PHP.
   --lp-bg, --lp-card-bg, --lp-hero-solid, --lp-tint, --lp-border, --lp-title
*/

/* ── ベースフォント: 半角英数 Roboto Condensed、日本語 Noto Sans JP ── */
.lp-hero, .lp-main, .pub-statsbar, .pub-main {
  font-family: 'Roboto Condensed', 'Noto Sans JP', sans-serif;
  font-size: var(--hl-fs-xs); /* 13px ベース（タイトル・数値は個別指定で上書き） */
}

/* ── ヒーロー ── */
.lp-hero { background:var(--lp-bg); padding:20px 24px 92px; }
.lp-hero__card { --hero-solid:var(--lp-hero-solid); max-width:1160px; margin:0 auto; background:var(--lp-card-bg); color:#fff; border-radius:12px; padding:34px 36px 28px; box-shadow:0 8px 40px rgba(0,0,0,.35); position:relative; overflow:hidden; }
.lp-hero__inner { display:grid; grid-template-columns:180px 1fr; gap:28px; align-items:start; }
.lp-hero__av { width:160px; height:160px; border-radius:50%; box-shadow:0 12px 28px rgba(0,0,0,.18); overflow:hidden; flex-shrink:0; }
.lp-hero__av img { width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }
.lp-hero__av-ph { width:100%; height:100%; border-radius:50%; background:linear-gradient(#f8f9fb,#d7e2ed); display:flex; align-items:center; justify-content:center; font-size:48px; font-weight:700; color:#1b4c87; }
.lp-hero__top { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; }
.lp-hero__cat { font-size:12px; font-weight:700; letter-spacing:.06em; color:rgba(255,255,255,.75); text-align:left; margin:0 0 2px; }
.lp-hero__call { font-size:54px; line-height:.95; margin:8px 0 4px; letter-spacing:2px; font-weight:700; font-family:'Roboto Condensed',sans-serif; }
.lp-hero__name { display:none; }
.lp-hero__meta { display:none; }
.lp-hero__badges { display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; }
.lp-badge { background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.2); backdrop-filter:blur(12px); border-radius:10px; padding:8px 14px; font-size:var(--hl-fs-xs); font-weight:700; white-space:nowrap; }
.lp-hero__bio { max-width:680px; margin:18px 0 20px; line-height:1.9; color:#edfaff; font-weight:600; font-size:13px; }
.lp-hero__actions { display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; padding-top:18px; border-top:1px solid rgba(255,255,255,.15); margin-top:4px; }
.lp-hero__btns { display:flex; gap:12px; flex-wrap:wrap; }
.lp-link-rows { display:flex; flex-direction:column; gap:6px; margin-top:14px; }
.lp-link-row { display:flex; align-items:center; gap:12px; padding:8px 10px; border-radius:8px; border:1px solid var(--lp-border); text-decoration:none; background:var(--lp-tint); transition:background .15s; }
.lp-link-row:hover { background:var(--lp-border); }
.lp-link-row__icon { font-size:18px; width:34px; height:34px; border-radius:6px; border:1px solid var(--lp-border); display:flex; align-items:center; justify-content:center; flex-shrink:0; background:#fff; }
.lp-link-row__text { flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
.lp-link-row__service { font-size:var(--hl-fs-xs); font-weight:700; color:var(--lp-title); text-transform:uppercase; letter-spacing:.6px; }
.lp-link-row__channel { font-size:13px; font-weight:600; color:#1a1f36; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lp-link-row__arrow { font-size:var(--hl-fs-xs); color:var(--lp-title); opacity:.5; flex-shrink:0; }
.lp-hero__social a:hover { opacity:1; }

/* ── ボタン ── */
.lp-btn { display:inline-block; height:46px; border-radius:8px; border:1px solid rgba(255,255,255,.55); display:inline-flex; align-items:center; gap:8px; padding:0 22px; font-weight:700; font-size:13px; cursor:pointer; text-decoration:none; white-space:nowrap; }
.lp-btn--primary { background:#2879ff; color:#fff !important; border-color:rgba(255,255,255,.35); box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 8px 16px rgba(0,73,160,.24); }
.lp-btn--primary:hover { opacity:.88; text-decoration:none; }
.lp-btn--white { background:#fff; color:#1b4c87 !important; box-shadow:0 6px 14px rgba(0,40,90,.1); }
.lp-btn--white:hover { opacity:.88; text-decoration:none; }
.lp-btn--outline-dark { background:#fff; color:#315d92 !important; border:1px solid #dbe7f5; font-size:var(--hl-fs-xs); height:38px; border-radius:8px; padding:0 16px; display:inline-flex; align-items:center; text-decoration:none; }
.lp-link { color:#2563eb; text-decoration:none; }
.lp-link:hover { text-decoration:underline; }

/* ── スタッツ ── */
.lp-stats-outer { background:linear-gradient(to bottom, transparent 92px, var(--lp-tint) 92px); padding:22px 24px; margin-top:-92px; position:relative; }
.lp-stats { max-width:1160px; margin:0 auto; background:#fff; border-radius:12px; display:grid; grid-template-columns:repeat(4,1fr); box-shadow:0 12px 32px rgba(13,47,95,.08); border:1px solid var(--lp-border); overflow:hidden; position:relative; z-index:1; }
.lp-stat { display:flex; gap:18px; align-items:center; padding:22px 30px; border-right:1px solid #e8edf4; }
.lp-stat:last-child { border-right:none; }
.lp-stat__icon { width:62px; height:62px; border-radius:50%; display:grid; place-items:center; font-size:32px; flex-shrink:0; }
.lp-stat__label { font-weight:700; color:#6b7280; font-size:13px; margin-bottom:2px; }
.lp-stat__num { font-size:34px; font-weight:700; line-height:1.1; font-family:'Oswald',sans-serif; letter-spacing:0; }
.lp-stat__sub { color:#7b8ba0; font-weight:600; font-size:var(--hl-fs-xs); }

/* ── ON AIRバナー ── */
.lp-onair-banner { display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:linear-gradient(135deg,#f0fdf4,#dcfce7); border:1.5px solid #6ee7b7; border-radius:12px; padding:12px 18px; }
.lp-onair-banner__dot { width:12px; height:12px; border-radius:50%; background:#10b981; flex-shrink:0; box-shadow:0 0 0 4px rgba(16,185,129,.2); animation:lp-pulse 1.5s infinite; }
@keyframes lp-pulse { 0%,100%{box-shadow:0 0 0 4px rgba(16,185,129,.2)} 50%{box-shadow:0 0 0 8px rgba(16,185,129,.05)} }
.lp-onair-banner__label { font-size:var(--hl-fs-xs); font-weight:800; color:#059669; letter-spacing:.12em; }
.lp-onair-banner__call { font-family:'Oswald',sans-serif; font-size:20px; font-weight:700; color:#064e3b; }
.lp-onair-chip { font-size:var(--hl-fs-xs); font-weight:700; padding:3px 10px; border-radius:99px; background:#fff; border:1px solid #a7f3d0; color:#065f46; }
.lp-onair-banner__expire { font-size:var(--hl-fs-xs); color:#6b7280; margin-left:auto; }
.lp-onair-banner__msg { width:100%; font-size:13px; color:#064e3b; font-weight:600; margin-top:2px; padding-top:8px; border-top:1px solid #a7f3d0; }

/* ── メイン ── */
.lp-main { background:var(--lp-tint); padding:0 24px 52px; }
.lp-main__inner { max-width:1160px; margin:0 auto; padding:0; display:flex; flex-direction:column; gap:22px; }

/* ── グリッド ── */
.lp-grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:22px; align-items:stretch; }
.lp-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:22px; align-items:stretch; }

/* ── カード ── */
.lp-card { background:#fff; border:1px solid var(--lp-border); border-radius:12px; box-shadow:0 8px 22px rgba(22,65,115,.045); padding:24px; display:flex; flex-direction:column; }
.lp-ch2 { display:flex; align-items:center; gap:8px; margin:0 0 18px; font-size:16px; color:var(--lp-title); font-weight:700; }
.lp-ch3 { font-size:14px; font-weight:700; color:#244b81; margin:0 0 12px; }

/* ── プロフィール フル幅レイアウト ── */
.lp-profile-full-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 40px; }
.lp-profile-col { min-width:0; display:flex; flex-direction:column; gap:0; }
.lp-profile-col--right { padding-left:20px; }
@media(max-width:700px){ .lp-profile-full-grid { grid-template-columns:1fr; } .lp-profile-col--right { border-left:none; padding-left:0; border-top:1px solid #f0f1f3; padding-top:16px; margin-top:8px; } }

/* ── Radio Story ── */
.lp-radio-story { background:#f8faff; border:1px solid #e0e7ff; border-radius:12px; padding:16px 18px; margin:14px 0; }
.lp-radio-story__title { font-size:13px; font-weight:800; color:#3730a3; margin-bottom:12px; letter-spacing:.02em; }
.lp-radio-story__item { margin-bottom:10px; }
.lp-radio-story__item:last-child { margin-bottom:0; }
.lp-radio-story__label { font-size:var(--hl-fs-xs); font-weight:700; color:#6366f1; letter-spacing:.06em; text-transform:uppercase; margin-bottom:3px; }
.lp-radio-story__text { font-size:13px; line-height:1.75; color:#374151; }

/* ── 今月の活動サマリー ── */
.lp-2col-row { display:grid; grid-template-columns:1fr 1fr; gap:0 20px; align-items:start; }
.lp-band-chart { margin-top:14px; padding-top:12px; border-top:1px solid #f0f1f3; }
.lp-band-chart__title { font-size:var(--hl-fs-xs); font-weight:800; color:#9ca3af; letter-spacing:.08em; text-transform:uppercase; margin-bottom:8px; }
.lp-band-chart__row { display:flex; align-items:center; gap:8px; margin-bottom:5px; }
.lp-band-chart__row:last-child { margin-bottom:0; }
.lp-band-chart__label { font-size:var(--hl-fs-xs); font-weight:700; color:#374151; min-width:48px; flex-shrink:0; text-align:right; white-space:nowrap; }
.lp-band-chart__bar-wrap { flex:1; background:#e2e8f0; border-radius:99px; height:8px; overflow:hidden; }
.lp-band-chart__bar { height:100%; background:linear-gradient(90deg,#3b82f6,#06b6d4); border-radius:99px; transition:width .3s; }
.lp-band-chart__bar--area { background:linear-gradient(90deg,#10b981,#06b6d4); }
.lp-band-chart__cnt { font-size:var(--hl-fs-xs); color:#9ca3af; width:24px; text-align:right; flex-shrink:0; }
.lp-monthly-activity { border-top:3px solid #2563eb; }
.lp-monthly-grid { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:12px; }
.lp-monthly-stat { background:#f0f9ff; border:1px solid #bae6fd; border-radius:10px; padding:10px 16px; text-align:center; min-width:80px; }
.lp-monthly-stat--wide { min-width:160px; }
.lp-monthly-stat__num { font-family:'Oswald','Roboto Condensed',sans-serif; font-size:22px; font-weight:700; color:#0369a1; line-height:1.1; }
.lp-monthly-stat__label { font-size:var(--hl-fs-xs); color:#0284c7; font-weight:700; margin-top:3px; letter-spacing:.04em; }
.lp-monthly-text { font-size:var(--hl-fs-xs); color:#374151; line-height:1.7; background:#f8faff; border-radius:8px; padding:8px 12px; margin:0; }

/* ── アクティビティフィード ── */
.lp-feed-tbl { width:100%; border-collapse:collapse; }
.lp-feed-tbl__row { border-bottom:1px solid #f3f4f6; }
.lp-feed-tbl__row:last-child { border-bottom:none; }
.lp-feed-tbl td { padding:7px 8px; vertical-align:middle; }
.lp-feed-tbl__date { font-size:var(--hl-fs-xs); color:#9ca3af; white-space:nowrap; width:90px; }
.lp-feed-tbl__call { font-family:'Roboto Condensed',sans-serif; font-weight:700; font-size:14px; letter-spacing:.04em; color:#1a1f36; white-space:nowrap; }
.lp-feed-tbl__tags { display:flex; gap:4px; flex-wrap:wrap; }
.lp-feed-tag { font-size:var(--hl-fs-xs); font-weight:700; padding:2px 7px; border-radius:99px; background:#f3f4f6; color:#374151; }
.lp-feed-tag--qsl { background:#eff6ff; color:#2563eb; }

/* ── QSL Card Collection ── */
.lp-qsl-collection { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:10px; }
.lp-qsl-coll-item { border-radius:8px; overflow:hidden; border:1px solid #e2e4e9; background:#f9fafb; }
.lp-qsl-coll-item img { width:100%; aspect-ratio:148/100; object-fit:cover; display:block; }
.lp-qsl-coll-item__placeholder { width:100%; aspect-ratio:148/100; display:flex; align-items:center; justify-content:center; font-size:var(--hl-fs-xs); font-weight:700; color:#9ca3af; background:#f3f4f6; }
.lp-qsl-coll-item__name { font-size:var(--hl-fs-xs); color:#6b7280; padding:4px 7px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap; }

/* ── プロフィール写真 ── */
.lp-profile-photos { display:flex; flex-direction:column; gap:8px; margin-bottom:20px; }
.lp-profile-photo { position:relative; display:block; width:100%; border-radius:12px; overflow:hidden; background:#f3f4f6; box-shadow:0 2px 12px rgba(0,0,0,.1); }
.lp-profile-photo img { width:100%; height:auto; display:block; transition:transform .3s; }
.lp-profile-photo:hover img { transform:scale(1.03); }
.lp-profile-photo__cap { position:absolute; bottom:0; left:0; right:0; padding:8px 12px; font-size:var(--hl-fs-xs); font-weight:600; color:#fff; background:linear-gradient(transparent,rgba(0,0,0,.6)); letter-spacing:.03em; }
.lp-profile-thumbs { display:flex; justify-content:center; gap:14px; margin-top:12px; padding:0 8px; }
.lp-profile-thumb { display:block; border-radius:8px; overflow:hidden; background:#f3f4f6; width:calc((100% - 42px) / 4 * 0.76); flex-shrink:0; aspect-ratio:1/1; box-shadow:0 1px 6px rgba(0,0,0,.1); }
.lp-profile-thumb img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s; }
.lp-profile-thumb:hover img { transform:scale(1.05); }

/* ── ヒーロー サブコールサイン ── */
.lp-hero__sub-calls { display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 10px; }
.lp-hero__sub-call { font-size:var(--hl-fs-xs); font-weight:700; color:rgba(255,255,255,.85); border:1px solid rgba(255,255,255,.35); border-radius:99px; padding:3px 12px; letter-spacing:.06em; backdrop-filter:blur(4px); }

/* ── プロフィール META ── */
.lp-profile-meta { display:flex; flex-direction:column; margin:10px 0 0; }
.lp-profile-meta__row { display:flex; align-items:baseline; gap:10px; padding:5px 0; border-bottom:1px solid #f8f9fa; }
.lp-profile-meta__row:last-child { border-bottom:none; }
.lp-profile-meta__k { font-size:var(--hl-fs-xs); font-weight:800; color:#9ca3af; letter-spacing:.1em; min-width:38px; flex-shrink:0; line-height:1.8; }
.lp-profile-meta__v { font-size:var(--hl-fs-xs); color:#1a1f36; font-weight:500; line-height:1.6; }

/* ── 自己紹介文 ── */
.lp-profile-bio { font-size:var(--hl-fs-xs); line-height:1.9; color:#374151; font-weight:400; margin:0 0 0; }
.lp-profile-col--right .lp-profile-bio { margin-top:16px; padding-top:16px; border-top:1px solid #f0f1f3; }

/* ── コールサイン ── */
.lp-callsigns { margin-bottom:0; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.lp-callsigns__label { font-size:var(--hl-fs-xs); font-weight:800; color:#9ca3af; letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; flex-shrink:0; }
.lp-tags { display:flex; flex-wrap:wrap; gap:6px; }
.lp-tag { background:#f8faff; color:#3577d8; border:1px solid #dbeafe; border-radius:6px; padding:4px 12px; font-size:var(--hl-fs-xs); font-weight:700; letter-spacing:.04em; }
.lp-tag--primary { background:#1d4ed8; color:#fff; border-color:#1d4ed8; }

/* ── 基本情報 ── */
.lp-inforows { border-top:1px solid #f0f1f3; margin-top:14px; padding-top:10px; }
.lp-inforow { display:flex; align-items:baseline; gap:12px; padding:7px 0; border-bottom:1px solid #f8f9fa; }
.lp-inforow:last-child { border-bottom:none; }
.lp-inforow--tags { align-items:flex-start; padding:8px 0; }
.lp-inforow--tags .lp-tags { gap:5px; }
.lp-inforow__k { font-size:var(--hl-fs-xs); font-weight:800; color:#9ca3af; letter-spacing:.08em; text-transform:uppercase; white-space:nowrap; min-width:52px; flex-shrink:0; line-height:1.8; }
.lp-inforow__v { font-size:var(--hl-fs-xs); color:#1a1f36; font-weight:500; line-height:1.6; }

/* ── 所属クラブ ── */
.lp-clubs { margin-top:14px; padding-top:14px; border-top:1px solid #f0f1f3; }
.lp-clubs__label { font-size:var(--hl-fs-xs); font-weight:800; color:#9ca3af; letter-spacing:.1em; text-transform:uppercase; margin-bottom:10px; }
.lp-clubs__list { display:flex; flex-direction:column; gap:0; }
.lp-clubs__item { font-size:var(--hl-fs-xs); color:#374151; font-weight:400; padding:6px 0; border-bottom:1px solid #f8f9fa; display:flex; align-items:center; gap:8px; }
.lp-clubs__item::before { content:''; display:inline-block; width:5px; height:5px; border-radius:50%; background:#d1d5db; flex-shrink:0; }
.lp-clubs__item:last-child { border-bottom:none; }

/* ── リンク（カード内）── */
.lp-link-rows { display:flex; flex-wrap:wrap; gap:8px; margin-top:20px; padding-top:16px; border-top:1px solid #f0f1f3; }
.lp-link-row { display:inline-flex; align-items:center; gap:7px; padding:7px 14px; border-radius:99px; border:1px solid #e5e7eb; text-decoration:none; background:#fff; transition:all .15s; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.lp-link-row:hover { border-color:#93c5fd; background:#eff6ff; box-shadow:0 2px 8px rgba(59,130,246,.12); transform:translateY(-1px); }
.lp-link-row__icon { font-size:14px; line-height:1; }
.lp-link-row__text { display:flex; flex-direction:column; gap:0; }
.lp-link-row__service { font-size:var(--hl-fs-xs); font-weight:700; color:#374151; line-height:1; }
.lp-link-row__channel { display:none; }
.lp-link-row__arrow { display:none; }

/* ── Radio Story カード ── */
.lp-card--story { }
.lp-story-header { display:flex; align-items:center; gap:10px; margin-bottom:20px; }
.lp-story-icon { font-size:20px; line-height:1; }
.lp-story-sub { font-size:var(--hl-fs-xs); color:#9ca3af; font-weight:500; margin-left:4px; }
.lp-story-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:14px; align-items:stretch; margin-top:14px; }
@media(max-width:600px){ .lp-story-grid { grid-template-columns:1fr; } }
.lp-story-item { display:flex; flex-direction:column; border:1px solid #e0e7ff; border-radius:10px; padding:16px 18px; }
.lp-story-item--full { margin-bottom:0; }
.lp-story-item__label { font-size:var(--hl-fs-xs); font-weight:800; color:#6366f1; letter-spacing:.08em; text-transform:uppercase; margin-bottom:10px; }
.lp-story-item__text { font-size:13px; line-height:1.9; color:#374151; flex:1; }

.lp-placeholder { text-align:center; padding:24px 12px; background:#f9fafb; border-radius:8px; color:#9ca3af; font-size:13px; }
.lp-placeholder p { margin:0; }

/* ── QSLポリシー ── */
.lp-policy-list { display:flex; flex-direction:column; margin-bottom:14px; }
.lp-policy { display:grid; grid-template-columns:26px 1fr; gap:8px; padding:9px 0; border-bottom:1px solid #f3f4f6; align-items:start; }
.lp-policy:last-child { border-bottom:none; }
.lp-policy--off { opacity:.4; }
.lp-policy__check { width:22px; height:22px; border-radius:50%; background:#2dc47c; color:#fff; display:grid; place-items:center; font-size:13px; font-weight:700; }
.lp-policy--off .lp-policy__check { background:#d1d5db; }
.lp-policy strong { display:block; font-size:13px; margin-bottom:2px; }
.lp-policy small { color:#768ba4; font-weight:600; font-size:var(--hl-fs-xs); }
.lp-policy-msg { border-top:1px solid #dde7f3; margin-top:14px; padding-top:12px; color:#60758e; font-size:13px; font-weight:600; line-height:1.7; }

/* ── 設備 ── */
.lp-equip-group { margin-bottom:16px; }
.lp-equip-group:last-child { margin-bottom:0; }
.lp-equip-group__hd { display:flex; align-items:center; gap:6px; padding:6px 10px; background:var(--lp-tint); border-radius:6px; margin-bottom:4px; }
.lp-equip-group__icon { font-size:14px; line-height:1; }
.lp-equip-group__label { font-size:var(--hl-fs-xs); font-weight:800; color:var(--lp-title); letter-spacing:.06em; text-transform:uppercase; }
.lp-equip-row { padding:7px 10px; border-bottom:1px solid #f3f4f6; }
.lp-equip-group > .lp-equip-row:last-child { border-bottom:none; }
.lp-equip-row__name { font-size:13px; font-weight:600; color:#1a1f36; line-height:1.5; }
.lp-equip-row__maker { color:#6b7280; font-weight:500; margin-right:4px; }
.lp-equip-row__desc { font-size:var(--hl-fs-xs); color:#6b7280; margin-top:2px; line-height:1.5; }
.lp-equip-spec { font-size:var(--hl-fs-xs); font-weight:400; color:var(--lp-title); opacity:.75; white-space:nowrap; }

/* ── QSLプレビュー ── */
.lp-qsl-preview { background:#f4f9ff; border:1px solid #d7e7f9; border-radius:8px; padding:14px; text-align:center; }
.lp-qsl-hint { font-size:var(--hl-fs-xs); color:#9ca3af; text-align:center; margin:0 0 8px; }
.lp-qsl-slide { cursor:pointer; text-align:center; }
.lp-qsl-slide__face { position:relative; display:inline-block; max-width:100%; }
.lp-qsl-slide__face--back { display:none; }
.lp-qsl-slide.is-back .lp-qsl-slide__face--front { display:none; }
.lp-qsl-slide.is-back .lp-qsl-slide__face--back { display:inline-block; }
.lp-qsl-slide__face img { max-height:600px; max-width:100%; width:auto; display:block; border-radius:8px; }
.lp-qsl-meta { text-align:center; margin-top:10px; }
.lp-qsl-title { font-size:13px; font-weight:700; color:#1a3a5c; margin:0 0 2px; }
.lp-qsl-desc { font-size:var(--hl-fs-xs); color:#6b7280; margin:0; }
.lp-qsl-flip__label { position:absolute; bottom:8px; right:10px; background:rgba(0,0,0,.45); color:#fff; font-size:var(--hl-fs-xs); font-weight:700; padding:2px 8px; border-radius:10px; pointer-events:none; }

/* ── QSOテーブル ── */
.lp-table { width:100%; border-collapse:collapse; font-size:var(--hl-fs-xs); }
.lp-table th { text-align:left; color:#5f7895; padding:0 8px 10px; font-size:var(--hl-fs-xs); border-bottom:1px solid #edf2f8; }
.lp-table td { padding:7px 8px; border-top:1px solid #f3f4f6; font-weight:400; color:#193d66; }

/* ── ピル ── */
.lp-pill { border-radius:8px; padding:3px 8px; font-size:var(--hl-fs-xs); font-weight:700; }
.lp-pill--blue { background:#e5f1ff; color:#2673d2; }
.lp-pill--gold { background:#fff1d9; color:#bc7a1a; }
.lp-pill--purple { background:#f5f3ff; color:#6d28d9; }

/* ── アワード ── */
.lp-awards-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:16px; }
.lp-award-box { border:1px solid #dde7f3; border-radius:10px; padding:16px 10px; text-align:center; }
.lp-award-box strong { display:block; font-size:14px; margin-bottom:3px; }
.lp-award-box small { display:block; color:#7b8da2; font-weight:600; font-size:var(--hl-fs-xs); margin-bottom:14px; }
.lp-progress { height:8px; border-radius:99px; background:#e2e8f0; overflow:hidden; }
.lp-bar { height:100%; border-radius:99px; }

/* ── マップ ── */
.lp-map-layout { display:grid; grid-template-columns:1fr 240px; gap:22px; }
.lp-map-area { background:#f0f4ff; border:1px dashed #bfdbfe; border-radius:8px; display:flex; align-items:center; justify-content:center; min-height:200px; }

/* ── ギャラリー ── */
.lp-gal-2x2 { display:grid; grid-template-columns:repeat(2,1fr); gap:6px; margin-bottom:10px; }
.lp-gal-thumb { aspect-ratio:4/3; overflow:hidden; border-radius:6px; cursor:pointer; background:#f0f0f0; }
.lp-gal-thumb img { width:100%; height:100%; object-fit:cover; transition:transform .25s; display:block; }
.lp-gal-thumb:hover img { transform:scale(1.06); }
.lp-more-link { font-size:var(--hl-fs-xs); color:#2563eb; text-decoration:none; display:block; margin-top:4px; }
.lp-more-link:hover { text-decoration:underline; }

/* ── ミニリスト ── */
.lp-mini-list { display:grid; gap:0; }
.lp-mini-row { display:grid; grid-template-columns:1fr auto; gap:10px; padding:10px 0; border-top:1px solid #f3f4f6; font-weight:700; }
.lp-mini-row:first-child { border-top:none; padding-top:0; }
.lp-voice-row { display:grid; grid-template-columns:36px 1fr auto; gap:10px; padding:12px 0; border-top:1px solid #f3f4f6; align-items:flex-start; }
.lp-voice-row:first-child { border-top:none; padding-top:0; }
.lp-voice-av { width:32px; height:32px; border-radius:50%; background:#e0e7ff; color:#3730a3; font-size:var(--hl-fs-xs); font-weight:700; display:flex; align-items:center; justify-content:center; font-family:monospace; }
.lp-voice-row strong { display:block; font-size:13px; color:#1a1f36; }

/* ── シェア ── */
.lp-share-row { display:flex; flex-wrap:wrap; gap:8px; }
.lp-share-btn { font-size:var(--hl-fs-xs); font-weight:700; padding:10px 18px; border-radius:8px; cursor:pointer; text-decoration:none; display:inline-block; border:1px solid transparent; }
.lp-share--x   { background:#000; color:#fff !important; }
.lp-share--fb  { background:#1877f2; color:#fff !important; }
.lp-share--url { background:#fff; color:#374151 !important; border-color:#d1d5db; }
.lp-share-btn:hover { opacity:.82; text-decoration:none; }

/* ── モーダル ── */
.lp-modal { position:fixed; inset:0; background:rgba(0,0,0,.65); z-index:900; display:flex; align-items:center; justify-content:center; padding:20px; }
.lp-modal--hidden { display:none; }
.lp-modal__box { background:#fff; border-radius:12px; padding:24px; max-width:860px; width:100%; max-height:90vh; overflow-y:auto; position:relative; }
.lp-modal__close { position:absolute; top:14px; right:16px; background:none; border:none; font-size:20px; cursor:pointer; color:#374151; }
.lp-gal-filters { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }
.lp-gal-filter { font-size:var(--hl-fs-xs); padding:5px 12px; border-radius:20px; border:1px solid #e2e4e9; background:#fff; color:#6b7280; cursor:pointer; }
.lp-gal-filter--active { background:#2563eb; color:#fff; border-color:#2563eb; }
.lp-gal-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:8px; }
.lp-gal-item--hidden { display:none; }
.lp-gal-item { position:relative; aspect-ratio:4/3; overflow:hidden; border-radius:6px; cursor:pointer; background:#eee; }
.lp-gal-item img { width:100%; height:100%; object-fit:cover; transition:transform .2s; display:block; }
.lp-gal-item:hover img { transform:scale(1.04); }
.lp-gal-item__cap { position:absolute; bottom:0; left:0; right:0; background:linear-gradient(transparent,rgba(0,0,0,.65)); color:#fff; font-size:var(--hl-fs-xs); font-weight:600; padding:14px 7px 7px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ── ライトボックス ── */
.lp-lightbox { position:fixed; inset:0; background:rgba(0,0,0,.88); z-index:9999; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:20px; }
.lp-lightbox--hidden { display:none; }
.lp-lightbox img { max-width:90vw; max-height:80vh; border-radius:4px; object-fit:contain; }
.lp-lightbox__close { position:absolute; top:16px; right:20px; background:none; border:none; color:#fff; font-size:24px; cursor:pointer; opacity:.7; }
.lp-lightbox__close:hover { opacity:1; }
.lp-lightbox__cap { color:rgba(255,255,255,.8); font-size:13px; margin-top:10px; text-align:center; }

/* ── レスポンシブ ── */
@media (max-width:900px) {
  .lp-hero { padding:14px 14px 0; }
  .lp-hero__card { padding:24px 22px 22px; }
  .lp-hero__inner { grid-template-columns:1fr; }
  .lp-hero__av { width:120px; height:120px; }
  .lp-hero__call { font-size:40px; }
  .lp-hero__top { flex-wrap:wrap; }
  .lp-hero__badges { justify-content:flex-start; }
  .lp-stats { grid-template-columns:repeat(2,1fr); }
  .lp-grid-3,.lp-grid-2,.lp-2col-row { grid-template-columns:1fr; }
  .lp-awards-grid { grid-template-columns:repeat(3,1fr); }
  .lp-map-layout { grid-template-columns:1fr; }
}
@media (max-width:480px) {
  .lp-hero__call { font-size:30px; letter-spacing:1px; }
  .lp-stats { grid-template-columns:1fr 1fr; }
  .lp-stat { padding:16px 14px; gap:10px; }
  .lp-stat__icon { width:44px; height:44px; font-size:22px; }
  .lp-stat__num { font-size:24px; }
  .lp-stat__label { font-size:12px; }
  .lp-awards-grid { grid-template-columns:repeat(2,1fr); }
  .lp-hero__btns .lp-btn { width:100%; justify-content:center; }
  .lp-hcmt-textarea-row { flex-direction:column; }
}

.pub-hmeta-row { font-size:13px; color:rgba(255,255,255,.65); }
.pub-grid-inline { font-family:monospace; background:rgba(255,255,255,.15); padding:1px 7px; border-radius:4px; font-size:var(--hl-fs-xs); }
.pub-hbio { font-size:13px; line-height:1.8; color:rgba(255,255,255,.72); margin:0; }

/* バッジカラム（右端） */
.pub-hbadge-col { display:flex; flex-direction:column; gap:6px; flex-shrink:0; align-items:flex-end; padding-top:2px; }
.pub-hbadge { font-size:var(--hl-fs-xs); font-weight:700; padding:4px 11px; border-radius:20px; white-space:nowrap; }
.pub-hbadge--ok   { background:rgba(34,197,94,.18);  color:#86efac; border:1px solid rgba(34,197,94,.35); }
.pub-hbadge--blue { background:rgba(59,130,246,.18); color:#93c5fd; border:1px solid rgba(59,130,246,.35); }
.pub-hbadge--info { background:rgba(99,102,241,.18); color:#c4b5fd; border:1px solid rgba(99,102,241,.35); }

/* アクション行 */
.pub-hero__actions { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; padding:18px 0 22px; border-top:1px solid rgba(255,255,255,.1); margin-top:18px; }
.pub-hbtns { display:flex; flex-wrap:wrap; gap:8px; }
.pub-hlinks { display:flex; flex-direction:row; gap:8px; flex-shrink:0; }
.pub-hlink-icon { display:flex; align-items:center; justify-content:center; width:34px; height:34px; background:rgba(255,255,255,.12); border-radius:50%; color:#fff; text-decoration:none; font-size:15px; transition:background .15s; }
.pub-hlink-icon:hover { background:rgba(255,255,255,.25); }

/* MV内コメント */
.pub-hero__cmt { border-top:1px solid rgba(255,255,255,.1); padding:18px 0 26px; }
.pub-hcmt-list { display:flex; flex-direction:column; gap:12px; margin-bottom:14px; }
.pub-hcmt-row { display:flex; gap:10px; align-items:flex-start; }
.pub-hcmt-av { width:32px; height:32px; border-radius:50%; background:rgba(255,255,255,.18); color:#fff; font-size:var(--hl-fs-xs); font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-family:monospace; }
.pub-hcmt-body { flex:1; min-width:0; }
.pub-hcmt-who { font-size:var(--hl-fs-xs); font-weight:700; color:rgba(255,255,255,.9); font-family:monospace; margin-right:8px; }
.pub-hcmt-date { font-size:var(--hl-fs-xs); color:rgba(255,255,255,.45); }
.pub-hcmt-text { font-size:13px; color:rgba(255,255,255,.75); margin:3px 0 0; line-height:1.7; }
.pub-hcmt-form-wrap { display:flex; flex-direction:column; gap:8px; }
.pub-hcmt-toggle { background:rgba(255,255,255,.1); border:1.5px solid rgba(255,255,255,.3); color:#fff; padding:8px 16px; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; display:inline-block; transition:background .15s; font-family:'Noto Sans','Roboto Condensed',sans-serif; }
.pub-hcmt-toggle:hover { background:rgba(255,255,255,.18); }
.pub-hcmt-form--hidden { display:none; }
.pub-hcmt-form { display:flex; flex-direction:column; gap:6px; max-width:600px; margin-top:4px; }
.pub-hcmt-input { font-size:13px; padding:8px 12px; border-radius:8px; border:1.5px solid rgba(255,255,255,.28); background:rgba(255,255,255,.1); color:#fff; font-family:'Noto Sans','Roboto Condensed',sans-serif; outline:none; box-sizing:border-box; }
.pub-hcmt-input::placeholder { color:rgba(255,255,255,.4); }
.pub-hcmt-input:focus { border-color:rgba(255,255,255,.5); background:rgba(255,255,255,.15); }
.pub-hcmt-callsign { width:200px; }
.pub-hcmt-textarea { width:100%; min-height:70px; resize:vertical; }
.pub-hcmt-textarea-row { display:flex; gap:8px; align-items:flex-end; }
.pub-hcmt-submit { flex-shrink:0; font-size:var(--hl-fs-xs) !important; padding:8px 14px !important; }

/* ── ボタン ── */
.pub-btn { display:inline-block; padding:10px 18px; border-radius:8px; font-size:13px; font-weight:700; cursor:pointer; text-align:center; text-decoration:none; line-height:1; white-space:nowrap; border:none; font-family:'Noto Sans','Roboto Condensed',sans-serif; }
.pub-btn--qsl     { background:linear-gradient(180deg,#3fa726 0%,#1e6b0e 100%); color:#fff !important; border:1px solid #1a5a0a; }
.pub-btn--qsl:hover { opacity:.88; text-decoration:none; }
.pub-btn--edit    { background:rgba(255,255,255,.15); color:#fff !important; border:1px solid rgba(255,255,255,.4); }
.pub-btn--outline { background:rgba(255,255,255,.1);  color:#fff !important; border:1px solid rgba(255,255,255,.3); }
.pub-btn--edit:hover, .pub-btn--outline:hover { background:rgba(255,255,255,.22); text-decoration:none; }
.pub-btn--disabled { background:#d1d5db; color:#9ca3af; cursor:not-allowed; }
.pub-btn-link { font-size:var(--hl-fs-xs); color:#2563eb; text-decoration:none; background:none; border:none; cursor:pointer; padding:0; }
.pub-btn-link:hover { text-decoration:underline; }

/* ── スタッツバー ── */
.pub-statsbar { background:#fff; border-bottom:1.5px solid #e2e4e9; }
.pub-statsbar__inner { max-width:960px; margin:0 auto; display:grid; grid-template-columns:repeat(4,1fr); }
.pub-stat { padding:16px 20px; display:flex; align-items:center; gap:14px; border-right:1px solid #f0f0f0; }
.pub-stat:last-child { border-right:none; }
.pub-stat__icon { width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:20px; flex-shrink:0; }
.pub-stat__icon--blue   { background:#dbeafe; }
.pub-stat__icon--green  { background:#d1fae5; }
.pub-stat__icon--orange { background:#fed7aa; }
.pub-stat__icon--purple { background:#ede9fe; }
.pub-stat__label { font-size:var(--hl-fs-xs); color:#6b7280; font-weight:600; margin-bottom:2px; }
.pub-stat__num { font-size:26px; font-weight:700; color:#001B46; line-height:1; font-family:'Oswald',sans-serif; }
.pub-stat__sub { font-size:var(--hl-fs-xs); color:#9ca3af; margin-top:3px; }

/* ── メイン ── */
.pub-main { background:#f8f9fb; padding:24px 0 60px; min-height:60vh; }
.pub-main__inner { max-width:960px; margin:0 auto; padding:0 28px; display:flex; flex-direction:column; gap:16px; }

/* ── カード ── */
.pub-card { background:#fff; border-radius:8px; border:1.5px solid #e2e4e9; padding:20px 22px; }
.pub-card--muted { opacity:.65; }
.pub-card__hdr { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.pub-card-more-text { font-size:var(--hl-fs-xs); color:#9ca3af; }
.pub-ch2 { font-size:14px; font-weight:700; color:#001B46; margin-bottom:14px; font-family:'Noto Sans','Roboto Condensed',sans-serif; }
.pub-ch2--mb0 { margin-bottom:0; }
.pub-ch2-sub { font-size:var(--hl-fs-xs); font-weight:400; color:#9ca3af; margin-left:6px; }
.pub-ch3 { font-size:13px; font-weight:700; color:#001B46; margin-bottom:12px; font-family:'Noto Sans','Roboto Condensed',sans-serif; }

/* ── グリッド ── */
.pub-cols-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; align-items:start; }
.pub-cols-2 { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; align-items:start; }

/* ── プロフィール ── */
.pub-prow { display:flex; gap:10px; padding:7px 0; border-bottom:1px solid #f3f4f6; font-size:13px; }
.pub-prow:last-of-type { border-bottom:none; }
.pub-prow__l { color:#6b7280; min-width:80px; flex-shrink:0; }
.pub-prow__v { color:#1a1f36; font-weight:500; }
.pub-profile-bio { font-size:13px; line-height:1.85; color:#374151; margin:0; }
.pub-profile-bio--mt { margin-top:12px; }
.pub-callsign-list { margin-top:14px; padding-top:12px; border-top:1px solid #f3f4f6; }
.pub-callsign-list__hd { font-size:var(--hl-fs-xs); font-weight:700; color:#9ca3af; text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px; }
.pub-op-section { margin-top:14px; padding-top:12px; border-top:1px solid #f3f4f6; }
.pub-op-title { font-size:var(--hl-fs-xs); font-weight:700; color:#9ca3af; text-transform:uppercase; letter-spacing:.05em; margin-bottom:8px; }
.pub-badge-row__items { display:flex; flex-wrap:wrap; gap:4px; }
.pub-badge { display:inline-block; padding:2px 8px; border-radius:10px; font-size:var(--hl-fs-xs); font-weight:600; }
.pub-badge--band  { background:#e8f0fe; color:#1a56db; border:1px solid #c3d7fc; }
.pub-badge--mode  { background:#e8fdf0; color:#0e7a46; border:1px solid #a7f0c4; }
.pub-badge--style { background:#fdf3e8; color:#92400e; border:1px solid #fcd9a1; }
.pub-badge--call  { background:#f0f2ff; color:#4338ca; border:1px solid #c7d2fe; }
.pub-badge--call-primary { background:#eff6ff; color:#1d4ed8; border-color:#bfdbfe; }

/* ── QSLポリシー ── */
.pub-qpolicy { display:flex; flex-direction:column; gap:6px; margin-bottom:14px; }
.pub-qpolicy-row { display:flex; align-items:flex-start; gap:10px; }
.pub-qpolicy-row--no { opacity:.38; }
.pub-qpolicy-icon { font-size:13px; font-weight:700; color:#16a34a; flex-shrink:0; width:16px; margin-top:1px; }
.pub-qpolicy-row--no .pub-qpolicy-icon { color:#9ca3af; }
.pub-qpolicy-lbl { font-size:13px; font-weight:600; color:#1a1f36; }
.pub-qpolicy-desc { font-size:var(--hl-fs-xs); color:#6b7280; margin-top:1px; }
.pub-qpolicy-msg { background:#f8f9fa; border-radius:6px; padding:12px 14px; border-left:3px solid #2563eb; margin-top:4px; }
.pub-qpolicy-msg__hd { font-size:var(--hl-fs-xs); font-weight:700; color:#6b7280; text-transform:uppercase; letter-spacing:.06em; margin-bottom:5px; }
.pub-qpolicy-msg__body { font-size:13px; color:#374151; line-height:1.7; margin:0; }

/* ── QSOテーブル ── */
.pub-log-wrap { overflow-x:auto; margin-top:12px; }
.pub-log-table { width:100%; border-collapse:collapse; font-size:var(--hl-fs-xs); }
.pub-log-table th { padding:8px 10px; text-align:left; font-size:var(--hl-fs-xs); font-weight:700; color:#9ca3af; border-bottom:1px solid #f3f4f6; text-transform:uppercase; letter-spacing:.4px; white-space:nowrap; }
.pub-log-table td { padding:8px 10px; border-bottom:1px solid #f9fafb; vertical-align:middle; }
.pub-log-table tr:last-child td { border-bottom:none; }
.pub-log-call { font-family:'Roboto Condensed',monospace,sans-serif; font-size:13px; font-weight:700; color:#1a1f36; }
.pub-log-date { color:#6b7280; font-size:var(--hl-fs-xs); white-space:nowrap; }
.pub-log-rst { font-family:monospace; color:#374151; }
.pub-chip { font-size:var(--hl-fs-xs); font-weight:700; padding:2px 7px; border-radius:10px; white-space:nowrap; }
.pub-chip--sent  { background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; }
.pub-chip--draft { background:#f5f3ff; color:#6d28d9; border:1px solid #ddd6fe; }
.pub-chip--none  { color:#d1d5db; }

/* ── 設備 ── */
.pub-equip-list { display:flex; flex-direction:column; }
.pub-equip-row { display:flex; align-items:flex-start; gap:12px; padding:10px 0; border-bottom:1px solid #f3f4f6; }
.pub-equip-row:last-child { border-bottom:none; }
.pub-equip-icon { font-size:18px; flex-shrink:0; width:28px; text-align:center; margin-top:2px; }
.pub-equip-cat  { font-size:var(--hl-fs-xs); font-weight:700; color:#9ca3af; text-transform:uppercase; letter-spacing:.05em; margin-bottom:2px; }
.pub-equip-name { font-size:13px; font-weight:600; color:#1a1f36; }
.pub-equip-mfr  { color:#6b7280; font-weight:400; }
.pub-equip-desc { font-size:var(--hl-fs-xs); color:#6b7280; margin-top:2px; }

/* ── アワード ── */
.pub-awards-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:12px; }
.pub-award-card { background:#f9fafb; border-radius:8px; padding:14px 8px; text-align:center; border:1.5px solid #e2e4e9; }
.pub-award-icon  { font-size:24px; margin-bottom:5px; }
.pub-award-name  { font-size:13px; font-weight:700; color:#1a1f36; margin-bottom:2px; }
.pub-award-count { font-size:var(--hl-fs-xs); color:#6b7280; margin-bottom:8px; }
.pub-award-bar   { background:#e2e8f0; border-radius:99px; height:8px; margin-bottom:5px; overflow:hidden; }
.pub-award-fill  { height:100%; border-radius:99px; }
.pub-award-pct   { font-size:var(--hl-fs-xs); font-weight:700; }

/* ── 交信マップ ── */
.pub-map-layout { display:grid; grid-template-columns:1fr 220px; gap:16px; }
.pub-map-area { background:#f0f4ff; border-radius:8px; border:1px dashed #bfdbfe; display:flex; align-items:center; justify-content:center; min-height:200px; }
.pub-grid-badge { font-family:monospace; font-size:14px; font-weight:700; color:#2563eb; background:#eff6ff; border:1px solid #bfdbfe; padding:3px 12px; border-radius:5px; display:inline-block; }
.pub-map-table { width:100%; border-collapse:collapse; font-size:var(--hl-fs-xs); }
.pub-map-table th { padding:6px 8px; text-align:left; font-size:var(--hl-fs-xs); font-weight:700; color:#6b7280; border-bottom:1px solid #f0f0f0; text-transform:uppercase; }
.pub-map-table td { padding:5px 8px; border-bottom:1px solid #f9fafb; color:#374151; font-size:var(--hl-fs-xs); }
.pub-map-num { text-align:right; font-weight:700; }
.pub-map-area-name { color:#6b7280; }

/* ── ギャラリー ── */
.pub-gal-2x2 { display:grid; grid-template-columns:repeat(2,1fr); gap:6px; margin-bottom:10px; }
.pub-gal-thumb { aspect-ratio:4/3; overflow:hidden; border-radius:6px; cursor:pointer; background:#f0f0f0; }
.pub-gal-thumb img { width:100%; height:100%; object-fit:cover; transition:transform .25s; display:block; }
.pub-gal-thumb:hover img { transform:scale(1.06); }
.pub-more-link { font-size:var(--hl-fs-xs); color:#2563eb; text-decoration:none; }
.pub-more-link:hover { text-decoration:underline; }

/* ── 受け取ったQSL ── */
.pub-recv-list { display:flex; flex-direction:column; gap:10px; }
.pub-recv-row  { display:flex; align-items:center; gap:10px; }
.pub-recv-av   { width:32px; height:32px; border-radius:50%; background:#e0e7ff; color:#3730a3; font-size:var(--hl-fs-xs); font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-family:monospace; }
.pub-recv-info { flex:1; }
.pub-recv-call { font-size:13px; font-weight:700; color:#1a1f36; font-family:monospace; }
.pub-recv-date { font-size:var(--hl-fs-xs); color:#9ca3af; }

/* ── シェア/リンク ── */
.pub-share-row { display:flex; flex-wrap:wrap; gap:8px; }
.pub-share-btn { font-size:var(--hl-fs-xs); font-weight:700; padding:8px 14px; border-radius:8px; cursor:pointer; text-decoration:none; display:inline-block; border:1.5px solid transparent; transition:opacity .15s; font-family:'Noto Sans','Roboto Condensed',sans-serif; }
.pub-share--x   { background:#000; color:#fff !important; }
.pub-share--fb  { background:#1877f2; color:#fff !important; }
.pub-share--url { background:#fff; color:#374151 !important; border-color:#d1d5db; }
.pub-share-btn:hover { opacity:.82; text-decoration:none; }
.pub-links-grid { display:flex; flex-wrap:wrap; gap:8px; }
.pub-link-chip { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; background:#f0f4ff; border:1px solid #c5d5f7; border-radius:16px; font-size:var(--hl-fs-xs); font-weight:600; color:#1a4ab8; text-decoration:none; }
.pub-link-chip:hover { background:#dce8ff; text-decoration:none; }

/* ── Placeholder ── */
.pub-placeholder { text-align:center; padding:28px 16px; background:#f9fafb; border-radius:6px; }
.pub-placeholder__icon { font-size:28px; margin-bottom:6px; }
.pub-placeholder__text { color:#9ca3af; font-size:var(--hl-fs-xs); margin:0; }

/* ── モーダル ── */
.pub-modal { position:fixed; inset:0; background:rgba(0,0,0,.65); z-index:900; display:flex; align-items:center; justify-content:center; padding:20px; }
.pub-modal--hidden { display:none; }
.pub-modal__box { background:#fff; border-radius:12px; padding:24px; max-width:860px; width:100%; max-height:90vh; overflow-y:auto; position:relative; }
.pub-modal__close { position:absolute; top:14px; right:16px; background:none; border:none; font-size:20px; cursor:pointer; color:#374151; }
.pub-gal-filters { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }
.pub-gal-filter { font-size:var(--hl-fs-xs); padding:5px 12px; border-radius:20px; border:1px solid #e2e4e9; background:#fff; color:#6b7280; cursor:pointer; }
.pub-gal-filter--active { background:#2563eb; color:#fff; border-color:#2563eb; }
.pub-gal-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:8px; }
.pub-gal-item { position:relative; aspect-ratio:4/3; overflow:hidden; border-radius:6px; cursor:pointer; background:#eee; }
.pub-gal-item img { width:100%; height:100%; object-fit:cover; transition:transform .2s; display:block; }
.pub-gal-item:hover img { transform:scale(1.04); }
.pub-gal-item__cap { position:absolute; bottom:0; left:0; right:0; background:linear-gradient(transparent,rgba(0,0,0,.65)); color:#fff; font-size:var(--hl-fs-xs); font-weight:600; padding:14px 7px 7px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
