/* 学びラボ AIメディア — 清潔・知的・余白多め */
:root{
  --ink:#222; --muted:#6b7280; --line:#e7e7e2;
  --navy:#1E4E79; --orange:#E08A2B; --bg:#FAFAF8; --card:#fff;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  font-family:-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  color:var(--ink); background:var(--bg); line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:1040px;margin:0 auto;padding:0 24px}
a{color:var(--navy);text-decoration:none}
a:hover{text-decoration:underline}

/* header */
.site-header{background:#fff;border-bottom:1px solid var(--line)}
.site-header .wrap{padding:22px 24px}
.brand{font-size:22px;font-weight:800;letter-spacing:.02em;color:var(--ink);display:inline-block}
.brand span{color:var(--navy)}
.tagline{color:var(--muted);font-size:14px;margin-top:4px}

/* latest hero */
.latest{margin:36px 0 12px}
.hero{display:grid;grid-template-columns:1.3fr 1fr;gap:26px;background:var(--card);
  border:1px solid var(--line);border-radius:16px;overflow:hidden}
.hero img{width:100%;height:100%;object-fit:cover;display:block;background:#fff}
.hero .meta{padding:28px}
.hero .badge{display:inline-block;background:var(--navy);color:#fff;font-size:12px;
  padding:3px 10px;border-radius:999px;margin-bottom:12px}
.hero h2{margin:.1em 0 .3em;font-size:24px;line-height:1.4}
.hero p{color:#444;margin:.2em 0 1em}
.hero .cta{display:inline-block;background:var(--orange);color:#fff;padding:10px 20px;
  border-radius:10px;font-weight:700}
.hero .cta:hover{text-decoration:none;opacity:.92}

.section-title{font-size:15px;color:var(--muted);font-weight:700;margin:40px 0 14px;
  letter-spacing:.04em;border-top:1px solid var(--line);padding-top:24px}

/* grid */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:60px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  transition:transform .12s ease, box-shadow .12s ease}
.card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(30,78,121,.10)}
.card a{color:inherit;text-decoration:none;display:block}
.card .thumb{aspect-ratio:16/9;background:#fff;border-bottom:1px solid var(--line)}
.card .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.card .body{padding:16px 18px}
.card .date{font-size:12px;color:var(--orange);font-weight:700}
.card h3{font-size:16px;margin:6px 0 8px;line-height:1.5}
.card .sum{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;
  -webkit-box-orient:vertical;overflow:hidden}
.card .topics{font-size:12px;color:var(--muted);margin-top:10px}

.empty{color:var(--muted);text-align:center;padding:60px 0}

/* 全エピソード一覧（タイトル＋概要を1行ずつ） */
.ep-list{display:flex;flex-direction:column;gap:14px;margin-bottom:60px}
.ep-row{display:grid;grid-template-columns:200px 1fr;gap:18px;background:var(--card);
  border:1px solid var(--line);border-radius:14px;overflow:hidden;color:inherit;
  text-decoration:none;transition:transform .12s ease, box-shadow .12s ease}
.ep-row:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(30,78,121,.10);text-decoration:none}
.ep-row-thumb{aspect-ratio:16/9;background:#fff;border-right:1px solid var(--line)}
.ep-row-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ep-row-body{padding:16px 20px 18px 0}
.ep-row-meta{display:flex;gap:14px;align-items:center;margin-bottom:4px}
.ep-row-date{font-size:12px;color:var(--orange);font-weight:700}
.ep-row-topics{font-size:12px;color:var(--muted)}
.ep-row-title{font-size:17px;margin:2px 0 6px;line-height:1.5}
.ep-row-sum{font-size:13px;color:var(--muted);margin:0;line-height:1.7}
@media(max-width:560px){
  .ep-row{grid-template-columns:1fr}
  .ep-row-thumb{border-right:none;border-bottom:1px solid var(--line)}
  .ep-row-body{padding:14px 16px 16px}
}

/* episode page */
.episode{padding-top:28px;padding-bottom:70px}
.back{font-size:14px;color:var(--muted)}
.ep-date{color:var(--orange);font-weight:700;font-size:13px;margin-top:18px}
#ep-title{font-size:28px;line-height:1.45;margin:.2em 0 .3em}
.ep-summary{color:#444;font-size:16px;margin:0 0 22px}
.player{margin:8px 0 18px}
.player video,.player audio{width:100%;border-radius:12px;background:#000}
.player audio{background:transparent}
.downloads{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}
.downloads a{font-size:13px;border:1px solid var(--line);padding:7px 14px;border-radius:8px;
  background:#fff}
.digest{border-top:1px solid var(--line);padding-top:26px}
.digest h2{font-size:18px}
.digest-body{font-size:15px}
.digest-body h1{font-size:22px}
.digest-body h3{font-size:17px;margin-top:1.6em;border-left:4px solid var(--navy);padding-left:10px}
.digest-body blockquote{margin:.6em 0;padding:10px 16px;background:#fff;border:1px solid var(--line);
  border-radius:8px;color:var(--navy);font-weight:700}
.digest-body a{word-break:break-all}
.digest-body code{background:#f1f1ec;padding:1px 5px;border-radius:4px}

/* 構造化トピック */
.topic{border-top:1px solid var(--line);padding:22px 0}
.topic:first-child{border-top:none}
.topic h3{font-size:18px;margin:0 0 10px;border-left:4px solid var(--navy);padding-left:12px}
.topic blockquote{margin:0 0 14px;padding:10px 16px;background:#fff;border:1px solid var(--line);
  border-left:4px solid var(--orange);border-radius:8px;color:var(--navy);font-weight:700}
.topic p{margin:.5em 0;font-size:15px}
.topic p strong{color:var(--navy)}
.topic .src-label{margin-top:.8em;color:var(--muted);font-size:13px;font-weight:700}
.topic ul.src{margin:.2em 0 0;padding-left:1.2em}
.topic ul.src li{font-size:13px;word-break:break-all}
.raw-link{margin-top:24px}
.raw-link a{font-size:13px;color:var(--muted)}

.site-footer{border-top:1px solid var(--line);background:#fff;color:var(--muted);font-size:13px}
.site-footer .wrap{padding:22px 24px}

/* nav */
.site-nav{margin-top:8px;font-size:13px}
.site-nav a{color:var(--muted)}

/* account（ヘッダ右のログイン状態） */
.account{position:absolute;top:22px;right:24px;font-size:13px;display:flex;gap:12px;align-items:center}
.site-header .wrap{position:relative}
.acct-mail{color:var(--muted)}
.acct-link{color:var(--navy);font-weight:700}
.ctl-note{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 18px;
  font-size:13px;color:var(--muted)}

/* 操作パネル（手動実行＋頻度） */
.controls{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:28px 0 4px}
.ctl-panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 20px}
.ctl-title{font-size:14px;margin:0 0 12px;color:var(--ink)}
.ctl-cur{font-size:13px;color:var(--muted);margin-bottom:10px}
.ctl-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.ctl-input{font:inherit;font-size:13px;padding:7px 10px;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:var(--ink)}
.ctl-btn{font:inherit;font-size:13px;font-weight:700;padding:8px 16px;border:none;
  border-radius:8px;background:var(--navy);color:#fff;cursor:pointer}
.ctl-btn:hover{opacity:.92}
.ctl-btn:disabled{opacity:.5;cursor:default}
.ctl-status{display:block;margin-top:10px;font-size:13px;color:var(--muted);min-height:1.2em}

/* about ページ */
.about-section{border-top:1px solid var(--line);margin-top:30px;padding-top:8px}
.about-section h2{font-size:18px}
.about-sources{display:grid;gap:16px}
.src-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.src-head{margin-bottom:6px}
.src-name{font-weight:800;font-size:16px;color:var(--navy)}
.src-author{color:var(--muted);font-size:13px}
.src-desc{font-size:14px;margin:.4em 0;white-space:pre-line}
.src-why{font-size:14px;margin:.4em 0;color:#444}
.src-why strong{color:var(--navy)}
.src-link a{font-size:12px;color:var(--muted);word-break:break-all}
.about-process{font-size:14px;line-height:1.9;padding-left:1.3em}
.about-process strong{color:var(--navy)}

@media(max-width:820px){
  .grid{grid-template-columns:1fr 1fr}
  .hero{grid-template-columns:1fr}
  .controls{grid-template-columns:1fr}
}
@media(max-width:560px){ .grid{grid-template-columns:1fr} }

/* エディション・バッジ（発信者版／論文版） */
.badge-row{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.badge.edition{background:#eef3f8;color:var(--navy)}
.badge.edition.papers{background:#fdf1e3;color:#b5651d}
.ep-row-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;
  background:#eef3f8;color:var(--navy)}
.ep-row-badge.papers{background:#fdf1e3;color:#b5651d}
/* about：2種類のエピソード */
.about-editions{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:8px 0 12px}
.ed-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.ed-card p{font-size:14px;margin:.4em 0 0}
.ed-badge{display:inline-block;font-size:13px;font-weight:800;padding:3px 12px;border-radius:999px;margin-bottom:4px}
.ed-badge.creators{background:#eef3f8;color:var(--navy)}
.ed-badge.papers{background:#fdf1e3;color:#b5651d}
.ed-note{font-size:13px;color:var(--muted);margin-top:4px}
@media(max-width:560px){ .about-editions{grid-template-columns:1fr} }

/* 管理者操作（非公開トグル・削除） */
.ep-row.is-hidden{opacity:.55}
.admin-ctl{display:flex;gap:10px;align-items:center;margin:-6px 0 6px 4px}
.admin-btn{font:inherit;font-size:12px;font-weight:700;padding:5px 12px;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:var(--navy);cursor:pointer}
.admin-btn:hover{background:#f3f6fa}
.admin-btn.danger{color:#b5651d;border-color:#f0d6bd}
.admin-btn.danger:hover{background:#fdf1e3}
.admin-btn:disabled{opacity:.5;cursor:default}
.admin-hidden-tag{font-size:11px;font-weight:700;color:#b5651d;background:#fdf1e3;
  padding:2px 8px;border-radius:999px}

/* ログインゲート（未ログイン時の視聴案内） */
.login-gate{background:var(--card);border:1px solid var(--line);border-radius:16px;
  max-width:520px;margin:60px auto;padding:40px 32px;text-align:center}
.login-gate h2{margin:0 0 12px;font-size:20px}
.login-gate p{color:var(--muted);margin:0 0 18px}
.login-gate .cta{display:inline-block;background:var(--orange);color:#fff;
  padding:12px 24px;border-radius:10px;font-weight:700}
.login-gate .cta:hover{opacity:.92}

/* マイページ */
.acct-info{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 24px}
.acct-info .muted, .muted{color:var(--muted);font-size:13px}
.acct-danger{margin-top:28px;border-top:1px solid var(--line);padding-top:20px}

/* アクセス状況（管理者） */
.stat-row{display:flex;gap:16px;flex-wrap:wrap;margin:8px 0 4px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:16px 22px;min-width:140px;text-align:center}
.stat-num{display:block;font-size:26px;font-weight:800;color:var(--navy)}
.stat-label{display:block;font-size:12px;color:var(--muted);margin-top:4px}
.log-table{width:100%;border-collapse:collapse;font-size:13px;background:var(--card);
  border:1px solid var(--line);border-radius:10px;overflow:hidden}
.log-table th,.log-table td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left}
.log-table th{background:#f3f6fa;color:var(--muted);font-weight:700;white-space:nowrap}
.log-table tbody tr:last-child td{border-bottom:none}

/* 実行中インジケータ（管理者用）：再生成・週次生成の進行をページ上部に固定表示 */
.job-banner{position:sticky;top:0;z-index:1000;background:#E08A2B;color:#fff;
  font-weight:700;font-size:14px;text-align:center;padding:10px 16px;
  box-shadow:0 2px 8px rgba(0,0,0,.15)}
.regen-btn:disabled{opacity:.6;cursor:progress}
