/* 專欄 (columns) and 學生・家長版. Colours come from the site tokens (--bg, --surface, --ink, --muted, --line),
   plus one tone per column series; dark values are set below, so this file is not run through build_theme. */
:root{--serif:"Songti TC","Noto Serif TC","Source Han Serif TC","PMingLiU",ui-serif,Georgia,serif;
  --tone:#3a3a3a;--tone-soft:#efeeeb;--fam-a:#ff8a5b;--fam-b:#5bb6ff;--fam-c:#7bd389;--fam-d:#ffc94d;--fam-e:#b18cff}
.tone-slate{--tone:#3d3d3d;--tone-soft:#eeedea}
.tone-ocean{--tone:#2a6489;--tone-soft:#e4eef5}
.tone-mint{--tone:#2a7559;--tone-soft:#e2f1ea}
.tone-amber{--tone:#9a5b13;--tone-soft:#f7ecda}
.tone-rose{--tone:#a23c48;--tone-soft:#f7e5e6}
.tone-violet{--tone:#5d4392;--tone-soft:#ece7f6}
:root[data-theme=dark] .tone-slate{--tone:#cfcfcf;--tone-soft:#262626}
:root[data-theme=dark] .tone-ocean{--tone:#8cc3e6;--tone-soft:#16232c}
:root[data-theme=dark] .tone-mint{--tone:#8fd6b7;--tone-soft:#14251e}
:root[data-theme=dark] .tone-amber{--tone:#f0bd7a;--tone-soft:#2a2013}
:root[data-theme=dark] .tone-rose{--tone:#f2a2aa;--tone-soft:#2c1a1c}
:root[data-theme=dark] .tone-violet{--tone:#c2adf0;--tone-soft:#221c2e}

/* ---------- column list ---------- */
.col-masthead{max-width:46rem;margin:.5rem 0 2rem}
.col-masthead h1{font-family:var(--serif);font-weight:700;font-size:clamp(2rem,4.2vw,3rem);letter-spacing:-.01em;line-height:1.2;margin:.2rem 0 .6rem}
.col-masthead>p:not(.eyebrow){color:var(--muted);font-size:1.02rem}
.col-pills{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.2rem}
.col-pills a{padding:.42rem .9rem;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--ink);text-decoration:none;font-size:.88rem;transition:background-color .15s,border-color .15s}
.col-pills a:hover{border-color:var(--tone,var(--ink))}
.col-pills a[aria-current]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.col-lead{margin-bottom:2.2rem}
.col-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17.5rem),1fr));gap:1.6rem 1.4rem}
.col-card{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius,1.1rem);box-shadow:var(--shadow);overflow:hidden;transition:transform .2s cubic-bezier(.23,1,.32,1),box-shadow .2s}
.col-card:hover{transform:translateY(-3px);box-shadow:var(--shadow),0 14px 34px #0000000f}
.col-card-cover{display:block;aspect-ratio:16/9;background:var(--tone-soft);overflow:hidden}
.col-card-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.23,1,.32,1)}
.col-card:hover .col-card-cover img{transform:scale(1.03)}
.col-cover-fallback{display:block;width:100%;height:100%;background:radial-gradient(circle at 70% 45%,var(--tone) 0 18%,transparent 19%),radial-gradient(circle at 58% 62%,var(--tone-soft) 0 22%,transparent 23%),var(--tone-soft);opacity:.85}
.col-card-body{display:flex;flex-direction:column;gap:.45rem;padding:1.1rem 1.2rem 1.25rem;flex:1}
.col-kicker{align-self:flex-start;color:var(--tone);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-decoration:none}
.col-kicker:hover{text-decoration:underline}
.col-card h3{font-family:var(--serif);font-size:1.22rem;line-height:1.4;margin:0}
.col-card h3 a{color:var(--ink);text-decoration:none}
.col-card h3 a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
.col-excerpt{color:var(--muted);font-size:.92rem;line-height:1.7;margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.col-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:auto;padding-top:.5rem;color:var(--muted);font-size:.8rem}
.col-avatar{display:inline-grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--tone-soft);color:var(--tone);font-weight:700;font-size:.78rem;overflow:hidden;flex:none}
.col-avatar img{width:100%;height:100%;object-fit:cover}
.col-avatar.large{width:2.8rem;height:2.8rem;font-size:1.1rem}
.col-card.is-lead{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.col-card.is-lead .col-card-cover{aspect-ratio:auto;min-height:20rem}
.col-card.is-lead .col-card-body{padding:2rem 2.1rem;justify-content:center;gap:.7rem}
.col-card.is-lead h3{font-size:clamp(1.5rem,2.6vw,2.05rem);line-height:1.3}
.col-card.is-lead .col-excerpt{-webkit-line-clamp:4;font-size:1rem}
.col-dek{color:var(--muted);font-size:1.05rem;line-height:1.6;margin:0}
@media (max-width:860px){.col-card.is-lead{grid-template-columns:1fr}.col-card.is-lead .col-card-cover{aspect-ratio:16/9;min-height:0}.col-card.is-lead .col-card-body{padding:1.3rem 1.3rem 1.5rem}}

/* ---------- article ---------- */
.col-article{max-width:65rem;margin:0 auto}
.col-preview{display:flex;align-items:center;gap:.5rem;margin-bottom:1.2rem}
.col-head{max-width:44rem;margin:1rem auto 2rem;text-align:center}
.col-head .col-kicker{display:inline-block;margin-bottom:.8rem;font-size:.85rem}
.col-head h1{font-family:var(--serif);font-weight:700;font-size:clamp(1.9rem,4.4vw,3rem);line-height:1.28;letter-spacing:-.005em;margin:0 0 .9rem;text-wrap:balance}
.col-head .col-dek{font-size:clamp(1.05rem,1.8vw,1.2rem);text-wrap:pretty}
.col-byline{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.75rem 1rem;margin-top:1.5rem;text-align:left}
.col-byline strong{display:block;font-size:.95rem}
.col-byline span{color:var(--muted);font-size:.82rem}
.col-byline-meta{display:flex;flex-direction:column;padding-left:1rem;border-left:1px solid var(--line);color:var(--muted);font-size:.82rem}
.col-cover{margin:0 0 2.6rem}
.col-cover img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:calc(var(--radius,1.1rem) + .2rem)}
.col-cover figcaption{margin-top:.55rem;text-align:right;color:var(--muted);font-size:.78rem}
.col-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,42.5rem) minmax(0,1fr);gap:2rem}
.col-body{grid-column:2}
.col-toc{grid-column:1;justify-self:end;position:sticky;top:6.5rem;align-self:start;max-width:13rem;font-size:.85rem}
.col-toc p{font-weight:700;margin:0 0 .5rem;color:var(--muted);letter-spacing:.05em}
.col-toc ol{list-style:none;margin:0;padding:0 0 0 .9rem;border-left:2px solid var(--line);display:grid;gap:.45rem}
.col-toc a{color:var(--muted);text-decoration:none;line-height:1.45}
.col-toc a:hover{color:var(--ink)}
@media (max-width:1100px){.col-layout{grid-template-columns:minmax(0,1fr)}.col-body{grid-column:1;max-width:42.5rem;margin:0 auto;width:100%}.col-toc{display:none}}

.prose{font-size:1.09rem;line-height:1.95;color:var(--ink);letter-spacing:.01em}
.prose>*+*{margin-top:1.25em}
.prose p{margin-bottom:0;text-wrap:pretty}
.prose h2{font-family:var(--serif);font-size:1.55rem;line-height:1.4;margin-top:2.2em;scroll-margin-top:6rem}
.prose h3{font-size:1.2rem;margin-top:1.8em}
.prose a{color:var(--tone,var(--ink));text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}
.prose strong{font-weight:700;background:linear-gradient(transparent 62%,var(--tone-soft) 62%)}
.prose ul,.prose ol{padding-left:1.4em}
.prose li+li{margin-top:.4em}
.prose li::marker{color:var(--tone)}
.prose blockquote{margin:1.8em 0;padding:.2em 0 .2em 1.3em;border-left:3px solid var(--tone);font-family:var(--serif);font-size:1.28rem;line-height:1.7;color:var(--ink)}
.prose blockquote p{margin:0}
.prose .callout{margin:1.8em 0;padding:1rem 1.2rem 1.05rem;border-radius:.9rem;background:var(--tone-soft)}
.prose .callout p{margin:.2rem 0 0}
.callout-label{font-size:.78rem;font-weight:800;letter-spacing:.08em;color:var(--tone)}
.prose figure{margin:2em -1.5rem}
.prose figure img{display:block;width:100%;height:auto;border-radius:.9rem}
.prose figcaption{margin-top:.55rem;padding:0 1.5rem;color:var(--muted);font-size:.85rem;text-align:center}
.prose hr{border:0;height:1.4rem;margin:2.2em 0;background:radial-gradient(circle,var(--muted) 1.5px,transparent 2px) center/1.1rem 100% repeat-x;opacity:.5;max-width:5rem;margin-inline:auto}
@media (max-width:760px){.prose{font-size:1.04rem;line-height:1.9}.prose figure{margin-inline:0}}
.col-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin:2.2rem 0 0}
.col-tags span{padding:.25rem .65rem;border-radius:99px;background:var(--tone-soft);color:var(--tone);font-size:.82rem}
.col-refs{margin-top:2.2rem;padding-top:1.4rem;border-top:1px solid var(--line);font-size:.88rem;color:var(--muted)}
.col-refs h2{font-size:.95rem;margin:0 0 .6rem;color:var(--ink)}
.col-refs ol{padding-left:1.3em;display:grid;gap:.3rem;word-break:break-all}
.col-share{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:2.2rem 0;padding:1rem 0;border-block:1px solid var(--line)}
.col-share>span{margin-right:auto;font-weight:600;font-size:.9rem}
.col-author-box{display:flex;gap:1rem;padding:1.4rem;border-radius:var(--radius,1.1rem);background:var(--tone-soft)}
.col-author-box h2{font-size:1.1rem;margin:.1rem 0}
.col-author-box p{margin:.3rem 0 0;font-size:.92rem;line-height:1.7}
.col-related,.col-more{margin-top:3.2rem}
.col-related h2{font-size:1.15rem;margin-bottom:.9rem}
.col-related-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:.8rem}
.col-related-list a{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem;border-radius:1rem;background:var(--surface);box-shadow:var(--shadow);color:var(--ink);text-decoration:none}
.col-related-list a:hover strong{text-decoration:underline}
.col-related-list .badge{align-self:flex-start}
@media print{.col-share,.col-more,.col-toc,.site-header,.site-footer{display:none!important}.col-layout{display:block}.prose{font-size:11.5pt}}

/* ---------- 學生・家長版 ---------- */
.family-mode{--fam-radius:1.4rem}
.family-mode .version-link{background:var(--ink);color:var(--bg)}
.version-link{white-space:nowrap}
.fam-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:2rem;align-items:center;padding:clamp(1.6rem,4vw,3rem);margin:.4rem 0 2.4rem;border-radius:calc(var(--fam-radius,1.4rem) + .4rem);background:linear-gradient(135deg,#fff4ec 0%,#eef7ff 55%,#f1fbef 100%);overflow:hidden}
:root[data-theme=dark] .fam-hero{background:linear-gradient(135deg,#2a1f19 0%,#16222d 55%,#17241a 100%)}
.fam-hero h1{font-size:clamp(1.9rem,4.4vw,3.1rem);line-height:1.22;letter-spacing:-.01em;margin:.3rem 0 .9rem}
.fam-hero-text>p:not(.eyebrow){font-size:1.05rem;color:var(--muted);max-width:34rem}
.fam-hero-text strong{color:var(--ink)}
.fam-hero-art{position:relative;height:clamp(9rem,22vw,15rem)}
.fam-hero-art span{position:absolute;width:clamp(3rem,7vw,5.2rem);aspect-ratio:1;border-radius:50%;left:calc(8% + var(--i) * 12%);top:calc(50% + sin(var(--i) * 52deg) * 32%);transform:translateY(-50%);background:var(--fam-a);animation:fam-bob 5s ease-in-out infinite;animation-delay:calc(var(--i) * -.7s);opacity:.92}
.fam-hero-art span:nth-child(2){background:var(--fam-b)}.fam-hero-art span:nth-child(3){background:var(--fam-c)}.fam-hero-art span:nth-child(4){background:var(--fam-d)}
.fam-hero-art span:nth-child(5){background:var(--fam-e)}.fam-hero-art span:nth-child(6){background:var(--fam-b)}.fam-hero-art span:nth-child(7){background:var(--fam-a)}
@keyframes fam-bob{50%{transform:translateY(-62%)}}
@media (prefers-reduced-motion:reduce){.fam-hero-art span{animation:none}}
@media (max-width:760px){.fam-hero{grid-template-columns:1fr}.fam-hero-art{display:none}}
.fam-grade-picker{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:1.3rem}
.fam-grade-picker>span{font-weight:600;font-size:.92rem;margin-right:.2rem}
.fam-grade-picker a{padding:.5rem 1.05rem;border-radius:99px;background:var(--surface);color:var(--ink);text-decoration:none;font-weight:600;font-size:.92rem;box-shadow:var(--shadow);transition:transform .15s}
.fam-grade-picker a:hover{transform:translateY(-1px)}
.fam-grade-picker a[aria-current]{background:var(--ink);color:var(--bg)}
.fam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));gap:1.1rem}
.fam-card{display:flex;flex-direction:column;gap:.6rem;padding:1.25rem 1.3rem 1.1rem;border-radius:var(--fam-radius,1.3rem);background:var(--surface);box-shadow:var(--shadow);border-top:5px solid var(--fam-b);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.fam-card.kind-competition{border-top-color:var(--fam-a)}
.fam-card:hover{transform:translateY(-3px)}
.fam-card-top{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}
.fam-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:700;color:var(--muted)}
.fam-chip .icon{width:1rem;height:1rem}
.fam-card h3{font-size:1.12rem;line-height:1.45;margin:0}
.fam-card h3 a{color:var(--ink);text-decoration:none}
.fam-card h3 a:hover{text-decoration:underline}
.fam-card>p{margin:0;color:var(--muted);font-size:.92rem;line-height:1.65}
.fam-facts{list-style:none;margin:.1rem 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.35rem .8rem;font-size:.84rem}
.fam-facts li{display:flex;align-items:center;gap:.35rem;min-width:0}
.fam-facts .icon{width:.95rem;height:.95rem;flex:none;color:var(--muted)}
.fam-deadline{font-weight:700}
.fam-deadline.is-past{font-weight:400;color:var(--muted);text-decoration:line-through}
.fam-card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:.5rem;border-top:1px dashed var(--line)}
.fam-ics{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:1.2rem}
.fam-challenge-card{position:relative;padding:clamp(1.4rem,3.5vw,2.4rem);border-radius:calc(var(--fam-radius,1.4rem) + .3rem);background:#fff8e6;box-shadow:var(--shadow);overflow:hidden}
:root[data-theme=dark] .fam-challenge-card{background:#29230f}
.fam-challenge-card::after{content:"?";position:absolute;right:-.5rem;bottom:-3.2rem;font-size:13rem;font-weight:900;line-height:1;color:var(--fam-d);opacity:.28;pointer-events:none}
.fam-challenge-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.fam-streak{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;border-radius:99px;background:var(--ink);color:var(--bg);font-size:.82rem}
.fam-streak .icon{width:.9rem;height:.9rem}
.fam-challenge-bank{margin:.2rem 0 .4rem;color:var(--muted);font-size:.85rem}
.fam-challenge-card h2{font-size:clamp(1.25rem,2.6vw,1.6rem);line-height:1.5;max-width:40rem;margin:0 0 1.2rem;position:relative;z-index:1}
.fam-challenge-card details{position:relative;z-index:1}
.fam-challenge-card summary{list-style:none;cursor:pointer;display:inline-flex}
.fam-challenge-card summary::-webkit-details-marker{display:none}
.fam-challenge-card details[open] summary{display:none}
.fam-answer{padding:1rem 1.2rem;border-radius:1rem;background:var(--surface);animation:fam-pop .35s cubic-bezier(.23,1,.32,1)}
.fam-answer p{margin:0 0 .5rem}
@keyframes fam-pop{from{opacity:0;transform:translateY(6px) scale(.98)}}
.fam-answer-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.8rem}
.fam-answer-actions>span{font-weight:600;margin-right:.3rem}
.fam-answer-done{color:var(--ink);font-weight:600}
.fam-tips{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr));gap:1rem}
.fam-tips a{display:flex;flex-direction:column;gap:.35rem;padding:1.2rem;border-radius:var(--fam-radius,1.3rem);background:var(--surface);box-shadow:var(--shadow);color:var(--ink);text-decoration:none;transition:transform .2s}
.fam-tips a:hover{transform:translateY(-3px)}
.fam-tips span{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:.8rem;background:var(--tone-soft,#f3f3f3);margin-bottom:.3rem}
.fam-tips a:nth-child(1) span{background:#ffe9df}.fam-tips a:nth-child(2) span{background:#e1f1ff}.fam-tips a:nth-child(3) span{background:#e5f6e8}.fam-tips a:nth-child(4) span{background:#fff2cc}
:root[data-theme=dark] .fam-tips a span{background:#2a2a2c}
.fam-tips p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.6}
.fam-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.1rem;margin-bottom:1rem}
.fam-filters .fam-grade-picker{margin:0}
.fam-toggle{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .85rem;border-radius:99px;background:var(--surface);box-shadow:var(--shadow);font-size:.9rem;cursor:pointer}
.fam-toggle input{accent-color:var(--ink)}
.fam-count{margin:0 0 .9rem}
.fam-note{margin-top:2rem}
.family-note-box{margin:1.2rem 0;padding:1.1rem 1.3rem;border-radius:1rem;background:#fff4ec;border-left:4px solid var(--fam-a)}
:root[data-theme=dark] .family-note-box{background:#2a1f19}
.family-note-box h2{font-size:1rem;margin:0 0 .4rem}
.family-note-box p{margin:0;white-space:pre-line}
.family-entry{display:grid;gap:.35rem;margin:0 0 1.2rem;padding:1.15rem 1.2rem;border-radius:var(--radius,1.1rem);background:linear-gradient(135deg,#fff4ec,#eef7ff);color:var(--ink);text-decoration:none;box-shadow:var(--shadow);transition:transform .2s}
:root[data-theme=dark] .family-entry{background:linear-gradient(135deg,#2a1f19,#16222d)}
.family-entry:hover{transform:translateY(-2px)}
.family-entry span{color:var(--muted);font-size:.88rem;line-height:1.6}
.family-entry b{display:inline-flex;align-items:center;gap:.3rem;font-size:.88rem}
.family-entry-dots{display:flex;gap:.3rem}
.family-entry-dots i{width:.8rem;height:.8rem;border-radius:50%;background:var(--fam-a)}
.family-entry-dots i:nth-child(2){background:var(--fam-b)}.family-entry-dots i:nth-child(3){background:var(--fam-c)}
/* The generated dark theme resets link colours (`:root[data-theme=dark] a`); restate ours at that strength. */
:root[data-theme] .col-pills a,:root[data-theme] .fam-grade-picker a,:root[data-theme] .col-card h3 a,:root[data-theme] .fam-card h3 a,
:root[data-theme] .fam-tips a,:root[data-theme] .family-entry,:root[data-theme] .col-related-list a{color:var(--ink)}
:root[data-theme] .col-pills a[aria-current],:root[data-theme] .fam-grade-picker a[aria-current],:root[data-theme] .family-mode .version-link{background:var(--ink);color:var(--bg)}
:root[data-theme] .family-mode .version-link .icon{color:var(--bg)}
:root[data-theme] .col-kicker,:root[data-theme] .prose a{color:var(--tone)}

/* ---------- videos & downloads ---------- */
.media-block{margin:0 0 1.6rem}
.media-block h2{display:flex;align-items:center;gap:.45rem;font-size:1.1rem;margin:0 0 .8rem}
.yt-grid{display:grid;grid-template-columns:1fr;gap:1.4rem}
.yt{margin:0}
.yt-play,.yt-frame{display:block;position:relative;width:100%;aspect-ratio:16/9;border:0;padding:0;border-radius:1.1rem;overflow:hidden;background:#111;cursor:pointer;box-shadow:0 18px 40px -18px #0006}
.yt-play img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s cubic-bezier(.23,1,.32,1),opacity .2s;opacity:.92}
.yt-play:hover img{transform:scale(1.03);opacity:1}
.yt-icon{position:absolute;left:50%;top:50%;width:5.4rem;height:3.7rem;transform:translate(-50%,-50%);border-radius:.9rem;background:#ff0033;box-shadow:0 6px 18px #0006}
.yt-icon::after{content:"";position:absolute;left:54%;top:50%;transform:translate(-50%,-50%);border-style:solid;border-width:.8rem 0 .8rem 1.35rem;border-color:transparent transparent transparent #fff}
.yt figcaption{display:flex;flex-direction:column;gap:.15rem;margin-top:.55rem;font-size:.9rem}
.yt figcaption span{color:var(--muted);font-size:.84rem}
.yt figcaption a{font-size:.8rem;color:var(--muted)}
.prose .yt{margin:2em 0}
.file-list{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.file-list li{display:flex;align-items:center;gap:.9rem;padding:.8rem 1rem;border-radius:1rem;background:var(--surface);box-shadow:var(--shadow)}
.file-list li>div{display:flex;flex-direction:column;flex:1;min-width:0}
.file-list strong{overflow-wrap:anywhere}
.file-badge{display:grid;place-items:center;width:2.8rem;height:2.8rem;border-radius:.7rem;background:#eceae6;color:#3a3a3a;font-size:.7rem;font-weight:800;letter-spacing:.03em;flex:none}
.file-badge.ext-pdf{background:#fde3e1;color:#b3261e}.file-badge.ext-docx,.file-badge.ext-doc{background:#e1ebfd;color:#1f56b3}
.file-badge.ext-pptx,.file-badge.ext-ppt{background:#fdeadf;color:#b34a1f}.file-badge.ext-xlsx,.file-badge.ext-xls{background:#e0f4e6;color:#1d7a3e}
:root[data-theme=dark] .file-badge{background:#2a2a2c;color:#e6e6e6}
.fam-extras{display:flex;flex-wrap:wrap;gap:.35rem}
.fam-extras span{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .55rem;border-radius:99px;background:var(--tone-soft,#f1f0ed);font-size:.76rem;font-weight:600}
.fam-extras .icon{width:.85rem;height:.85rem}
.fam-tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,12rem),1fr));gap:.8rem}
.fam-tool{display:flex;align-items:center;gap:.7rem;padding:1rem 1.1rem;border-radius:var(--fam-radius,1.3rem);background:var(--surface);box-shadow:var(--shadow);color:var(--ink);text-decoration:none;font-weight:700;transition:transform .2s}
.fam-tool:hover{transform:translateY(-3px)}
.fam-tool span{display:grid;place-items:center;width:2.6rem;height:2.6rem;border-radius:.9rem;flex:none}
.fam-tool.tone-a span{background:#ffe7df;color:#d8431f}.fam-tool.tone-b span{background:#e2eeff;color:#1f64d1}.fam-tool.tone-c span{background:#dff5e9;color:#16804e}.fam-tool.tone-d span{background:#ede6ff;color:#6a3fd8}
:root[data-theme=dark] .fam-tool span{background:#2a2a2c;color:var(--ink)}
:root[data-theme] .fam-tool{color:var(--ink)}

.yt-play img{object-fit:cover}
.media-block .yt figcaption{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:.2rem .7rem;font-size:1rem}
.media-block .yt figcaption a{margin-left:auto}

/* ---------- 自學資源：圖書館式列表 ---------- */
.lib-search{display:flex;align-items:center;gap:.5rem;flex:1 1 16rem;max-width:26rem;padding:.5rem .9rem;border-radius:99px;background:var(--surface);box-shadow:var(--shadow)}
.lib-search input{border:0!important;background:transparent!important;outline:none;flex:1;font-size:.95rem;color:var(--ink);padding:0!important;box-shadow:none!important}
.lib-search .icon{color:var(--muted);flex:none}
.lib-chips{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .7rem}
.lib-chips>span{font-size:.82rem;font-weight:700;color:var(--muted);margin-right:.2rem;min-width:2.4rem}
.lib-chips a{padding:.35rem .8rem;border-radius:99px;border:1px solid var(--line);background:var(--surface);font-size:.85rem;text-decoration:none}
:root[data-theme] .lib-chips a{color:var(--ink)}
.lib-chips a:hover{border-color:var(--ink)}
:root[data-theme] .lib-chips a[aria-current]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.lib-list{display:flex;flex-direction:column;border-radius:var(--radius,1.1rem);background:var(--surface);box-shadow:var(--shadow);overflow:hidden;margin-top:.4rem}
.lib-row{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.1rem;align-items:center;padding:1rem 1.2rem;border-bottom:1px solid var(--line);transition:background-color .15s}
.lib-row:last-child{border-bottom:0}
.lib-row:hover{background:color-mix(in srgb,var(--ink) 3%,transparent)}
.lib-row::before{content:"";position:absolute;left:0;top:.9rem;bottom:.9rem;width:4px;border-radius:0 4px 4px 0;background:var(--lib-tone,#9aa0a6);opacity:0;transition:opacity .15s}
.lib-row:hover::before{opacity:1}
.lib-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;width:4.2rem;height:4.2rem;border-radius:1rem;background:var(--lib-soft,#f0efec);text-decoration:none;flex:none}
:root[data-theme] .lib-badge{color:var(--lib-tone,#555)}
.lib-badge .icon{width:1.35rem;height:1.35rem}
.lib-badge span{font-size:.68rem;font-weight:700;letter-spacing:.02em}
.lib-row.fmt-exam{--lib-tone:#6a3fd8;--lib-soft:#ede6ff}.lib-row.fmt-notes,.lib-row.fmt-worksheet{--lib-tone:#1f64d1;--lib-soft:#e2eeff}
.lib-row.fmt-video{--lib-tone:#d8431f;--lib-soft:#ffe7df}.lib-row.fmt-interactive{--lib-tone:#16804e;--lib-soft:#dff5e9}
:root[data-theme=dark] .lib-row{--lib-soft:#29292c}
:root[data-theme=dark] .lib-row.fmt-exam{--lib-tone:#c2adf0}:root[data-theme=dark] .lib-row.fmt-notes,:root[data-theme=dark] .lib-row.fmt-worksheet{--lib-tone:#8cc3e6}
:root[data-theme=dark] .lib-row.fmt-video{--lib-tone:#f2a28f}:root[data-theme=dark] .lib-row.fmt-interactive{--lib-tone:#8fd6b7}
.lib-main{min-width:0}
.lib-main h3{font-size:1.05rem;margin:0 0 .2rem;line-height:1.45}
:root[data-theme] .lib-main h3 a{color:var(--ink);text-decoration:none}
.lib-main h3 a:hover{text-decoration:underline}
.lib-main p{margin:0 0 .4rem;color:var(--muted);font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-meta{display:flex;flex-wrap:wrap;gap:.25rem .9rem;font-size:.78rem;color:var(--muted)}
.lib-meta span{display:inline-flex;align-items:center;gap:.25rem}
.lib-meta .icon{width:.85rem;height:.85rem}
.lib-year{padding:.05rem .5rem;border-radius:99px;background:var(--lib-soft,#f0efec);font-weight:700}
:root[data-theme] .lib-year{color:var(--lib-tone,#555)}
.lib-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}
.lib-pill{display:inline-flex;align-items:center;gap:.3rem;padding:.42rem .8rem;border-radius:99px;font-size:.82rem;font-weight:700;text-decoration:none;white-space:nowrap;transition:transform .15s}
.lib-pill:hover{transform:translateY(-1px)}
.lib-pill .icon{width:.9rem;height:.9rem}
:root[data-theme] .lib-pill.play{background:#ffe7df;color:#c2381a}
:root[data-theme] .lib-pill.dl{background:#e2eeff;color:#1f56b3}
:root[data-theme] .lib-pill.link{background:var(--bg);color:var(--ink);border:1px solid var(--line)}
:root[data-theme=dark] .lib-pill.play{background:#3a201a;color:#f2a28f}
:root[data-theme=dark] .lib-pill.dl{background:#16243a;color:#8cc3e6}
@media (max-width:700px){.lib-row{grid-template-columns:auto minmax(0,1fr);gap:.8rem}.lib-actions{grid-column:1/-1;justify-content:flex-start}.lib-badge{width:3.3rem;height:3.3rem}.lib-main p{white-space:normal}}

/* ---------- activity types (比賽／工作坊／活動體驗／義工) ---------- */
.t-competition{--t:#e8552f;--t-soft:#ffe7df}
.t-workshop{--t:#2f74e0;--t-soft:#e2eeff}
.t-event{--t:#1a8f57;--t-soft:#dff5e9}
.t-volunteer{--t:#7c4ddb;--t-soft:#ede6ff}
:root[data-theme=dark] .t-competition{--t:#ff9a7d;--t-soft:#3a201a}
:root[data-theme=dark] .t-workshop{--t:#8db8ff;--t-soft:#16243a}
:root[data-theme=dark] .t-event{--t:#7fd6a8;--t-soft:#14291e}
:root[data-theme=dark] .t-volunteer{--t:#c2adf0;--t-soft:#251c3a}
.type-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.22rem .65rem;border-radius:99px;background:var(--t-soft,#f0efec);color:var(--t,#555);font-size:.78rem;font-weight:800}
.type-chip i{width:.5rem;height:.5rem;border-radius:50%;background:var(--t,#999)}

/* covers on family cards */
.fam-card{padding-top:0;overflow:hidden}
.fam-card.kind-competition{border-top:0}
.fam-cover{display:block;margin:0 -1.3rem .3rem;aspect-ratio:16/9;background:var(--t-soft,#f0efec);overflow:hidden;position:relative}
.fam-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.23,1,.32,1)}
.fam-card:hover .fam-cover img{transform:scale(1.04)}
.fam-cover-art{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(circle at 78% 30%,color-mix(in srgb,var(--t) 28%,transparent) 0 18%,transparent 19%),radial-gradient(circle at 18% 78%,color-mix(in srgb,var(--t) 18%,transparent) 0 22%,transparent 23%),var(--t-soft,#f0efec)}
.fam-cover-art .icon{width:3rem;height:3rem;color:var(--t)}
.fam-card .fam-card-top{margin-top:.2rem}
.fam-card.kind-resource{padding-top:1.25rem;border-top:5px solid var(--fam-b)}

/* detail hero */
.detail-cover{margin:0 0 1.4rem;border-radius:calc(var(--radius,1.1rem) + .2rem);overflow:hidden;background:var(--t-soft,#f0efec);position:relative}
.detail-cover img{display:block;width:100%;max-height:30rem;object-fit:cover}
.detail-cover figcaption{position:absolute;right:.7rem;bottom:.6rem;padding:.2rem .6rem;border-radius:99px;background:#000a;color:#fff;font-size:.75rem}
.detail-cover figcaption a{color:#fff}
.row-thumb{display:block;width:5.5rem;height:4rem;border-radius:.8rem;overflow:hidden;flex:none;background:var(--t-soft,#f0efec)}
.row-thumb img{width:100%;height:100%;object-fit:cover}

/* ---------- 學生版日曆 ---------- */
.fcal-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}
.fcal-month{display:flex;align-items:center;gap:.6rem}
.fcal-month h2{margin:0;font-size:1.5rem;min-width:8rem;text-align:center}
.fcal-types{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.6rem}
.fcal-types a{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .9rem;border-radius:99px;background:var(--surface);box-shadow:var(--shadow);font-weight:700;font-size:.9rem;text-decoration:none}
:root[data-theme] .fcal-types a{color:var(--ink)}
.fcal-types a i{width:.7rem;height:.7rem;border-radius:50%;background:var(--t)}
:root[data-theme] .fcal-types a[aria-current]{background:var(--t,var(--ink));color:#fff}
:root[data-theme] .fcal-types a[aria-current] i{background:#fff}
.fcal-grades{margin:0 0 1rem}
.fcal{border-radius:calc(var(--radius,1.1rem) + .2rem);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}
.fcal-head,.fcal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.fcal-head span{padding:.6rem;text-align:center;font-size:.82rem;font-weight:700;color:var(--muted);background:color-mix(in srgb,var(--ink) 3%,transparent)}
.fcal-day{min-height:7.4rem;padding:.4rem .4rem .5rem;border-top:1px solid var(--line);border-left:1px solid var(--line);display:flex;flex-direction:column;gap:.25rem;min-width:0}
.fcal-day:nth-child(7n+1){border-left:0}
.fcal-day.is-other{background:color-mix(in srgb,var(--ink) 2.5%,transparent)}
.fcal-day.is-other .fcal-num{opacity:.4}
.fcal-day.is-past .fcal-chip{opacity:.55}
.fcal-num{font-size:.85rem;font-weight:700;width:1.7rem;height:1.7rem;display:grid;place-items:center;border-radius:50%}
.fcal-day.is-today .fcal-num{background:var(--ink);color:var(--bg)}
.fcal-chip{display:block;padding:.22rem .45rem;border-radius:.45rem;background:var(--t-soft);border-left:3px solid var(--t);font-size:.74rem;line-height:1.35;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .12s}
:root[data-theme] .fcal-chip{color:var(--ink)}
.fcal-chip b{color:var(--t);margin-right:.25rem;font-weight:800}
.fcal-chip:hover{transform:translateY(-1px)}
.fcal-chip.is-cont{border-left-style:dashed}
.fcal-more{font-size:.72rem;color:var(--muted);padding-left:.3rem}
.fcal-agenda ol{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.fcal-agenda li{display:flex;gap:1rem;align-items:center;padding:.85rem 1rem;border-radius:1rem;background:var(--surface);box-shadow:var(--shadow);border-left:5px solid var(--t)}
.fcal-agenda li>div:last-child{display:flex;flex-direction:column;gap:.15rem;min-width:0}
:root[data-theme] .fcal-agenda li a{color:var(--ink);text-decoration:none}
.fcal-agenda li a:hover strong{text-decoration:underline}
.fcal-date{display:flex;flex-direction:column;align-items:center;justify-content:center;width:3.6rem;flex:none;padding:.35rem 0;border-radius:.8rem;background:var(--t-soft)}
.fcal-date span{font-size:.72rem;color:var(--t);font-weight:700}
.fcal-date strong{font-size:1.4rem;line-height:1.1}
.fcal-date small{font-size:.65rem;color:var(--muted)}
.fcal-tag{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:800;color:var(--t)}
.fcal-tag i{width:.5rem;height:.5rem;border-radius:50%;background:var(--t)}
@media (max-width:760px){.fcal-day{min-height:4.6rem;padding:.25rem}.fcal-chip{font-size:0;padding:0;height:.45rem;border-radius:99px;border:0;background:var(--t)}.fcal-chip b{display:none}.fcal-head span{padding:.4rem 0}}
.fam-heading-links{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}.fam-type-legend{margin:-.2rem 0 1rem}
.fcal-agenda{margin-top:2.2rem}.fcal-agenda>h2{margin:0 0 .9rem}

/* mini calendar in the 學生・家長版 hero */
.mini-cal{justify-self:end;width:min(100%,23rem);padding:1.1rem 1.1rem 1rem;border-radius:1.4rem;background:var(--surface);box-shadow:0 1px 2px #0000000a,0 18px 40px -16px #0000002e}
.mini-cal-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.6rem}
.mini-cal-head strong{font-size:1.5rem;letter-spacing:-.01em}
.mini-cal-head small{font-size:.8rem;color:var(--muted);font-weight:600;margin-left:.4rem}
.mini-cal-head .text-link{font-size:.82rem}
.mini-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.15rem;text-align:center}
.mini-cal-wd{font-size:.7rem;font-weight:700;color:var(--muted);padding-bottom:.2rem}
.mini-cal-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.12rem;height:2.4rem;padding-top:.3rem;border-radius:.6rem;font-size:.82rem;font-variant-numeric:tabular-nums;text-decoration:none}
:root[data-theme] .mini-cal-day{color:var(--ink)}
.mini-cal-day.is-other{opacity:.28}
.mini-cal-day.is-past{opacity:.45}
.mini-cal-day.has-events{font-weight:700;transition:background-color .15s,transform .15s}
.mini-cal-day.has-events:hover{background:color-mix(in srgb,var(--ink) 7%,transparent);transform:translateY(-1px)}
.mini-cal-day.is-today>span{display:grid;place-items:center;width:1.55rem;height:1.55rem;margin-top:-.15rem;border-radius:50%;background:var(--ink);color:var(--bg)}
.mini-cal-day.is-today{opacity:1}
.mini-dots{display:flex;gap:.15rem;font-style:normal}
.mini-dots b{width:.36rem;height:.36rem;border-radius:50%;background:var(--t)}
.mini-cal-next{list-style:none;margin:.7rem 0 0;padding:.7rem 0 0;border-top:1px dashed var(--line);display:grid;gap:.4rem}
.mini-cal-next a{display:flex;align-items:center;gap:.6rem;text-decoration:none;min-width:0}
:root[data-theme] .mini-cal-next a{color:var(--ink)}
.mini-cal-next a:hover .mini-text{text-decoration:underline}
.mini-date{flex:none;min-width:2.7rem;padding:.2rem .4rem;border-radius:.5rem;background:var(--t-soft);color:var(--t);font-size:.78rem;font-weight:800;text-align:center}
.mini-text{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-text b{color:var(--t);margin-right:.3rem}
@media (max-width:760px){.mini-cal{justify-self:stretch;width:100%}}
.mini-cal{min-width:0;overflow:hidden}.mini-cal-next li{min-width:0}.mini-cal-next a{overflow:hidden}.mini-text{flex:1;min-width:0}

/* ---------- calmer 學生・家長版 home (2026-10-11) ---------- */
.fam-hero{margin-bottom:3.2rem}
.fam-block{margin:0 0 3.4rem}
.fam-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin:0 0 1rem}
.fam-head h2{margin:0;font-size:1.35rem;letter-spacing:-.01em}
.fam-head .text-link{font-size:.9rem}
/* compact activity cards: picture, type, title, one line of facts */
.fam-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,15.5rem),1fr));gap:1.6rem 1.2rem}
.fam-card.kind-competition{position:relative;display:flex;flex-direction:column;gap:.45rem;padding:0;border:0;border-radius:0;background:none;box-shadow:none;overflow:visible}
.fam-card.kind-competition:hover{transform:none}
.fam-card .fam-cover{position:relative;margin:0 0 .35rem;aspect-ratio:3/2;border-radius:1rem;overflow:hidden;background:var(--t-soft)}
.fam-card .fam-cover img{transition:transform .5s cubic-bezier(.23,1,.32,1)}
.fam-card:hover .fam-cover img{transform:scale(1.04)}
.fam-card .type-chip{position:absolute;left:.6rem;top:.6rem;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(6px);box-shadow:0 1px 4px #0000001f}
.fam-save{position:absolute;right:.5rem;top:.5rem;z-index:2;width:2.2rem;height:2.2rem;min-width:0;border-radius:50%;background:color-mix(in srgb,var(--surface) 90%,transparent);box-shadow:0 1px 4px #0000001f;opacity:0;transition:opacity .15s}
.fam-card:hover .fam-save,.fam-save[aria-pressed=true],.fam-save:focus-visible{opacity:1}
@media (hover:none){.fam-save{opacity:1}}
.fam-card.kind-competition h3{font-size:1rem;line-height:1.45;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fam-card.kind-competition h3 a::after{content:"";position:absolute;inset:0;z-index:1}
.fam-meta{display:flex;flex-wrap:wrap;gap:.15rem .55rem;margin:0;font-size:.82rem;color:var(--muted)}
.fam-meta span+span::before{content:"·";margin-right:.55rem;opacity:.6}
.fam-when{color:var(--t);font-weight:700}
.fam-when.is-past{color:var(--muted);font-weight:400;text-decoration:line-through}
.fam-card .fam-cover-art .icon{width:2.4rem;height:2.4rem}
/* tools + challenge side by side */
.fam-duo{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:2.4rem;align-items:start}
@media (max-width:860px){.fam-duo{grid-template-columns:1fr}}
.fam-duo .fam-tools{grid-template-columns:1fr 1fr;gap:.6rem}
.fam-tool{padding:.85rem 1rem;box-shadow:none;border:1px solid var(--line)}
.fam-challenge-card{padding:1.1rem 1.2rem;border-radius:1rem;background:var(--surface);border:1px solid var(--line);box-shadow:none}
.fam-challenge-card::after{display:none}
:root[data-theme=dark] .fam-challenge-card{background:var(--surface)}
.fam-question{font-size:1.15rem;font-weight:700;line-height:1.5;margin:.15rem 0 .8rem}
.fam-challenge-bank{font-size:.8rem;margin:0}
.fam-challenge-card summary{font-size:.9rem}
.fam-streak{font-size:.78rem;padding:.2rem .6rem}
/* parent tips as a quiet row of links */
.fam-tip-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.fam-tip-list a{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1rem;border-radius:99px;border:1px solid var(--line);font-size:.92rem;text-decoration:none}
:root[data-theme] .fam-tip-list a{color:var(--ink)}
.fam-tip-list a:hover{border-color:var(--ink)}
.fam-tip-list .icon{width:1rem;height:1rem;color:var(--muted)}
.fam-block .lib-list{box-shadow:none;border:1px solid var(--line)}
.fam-tool{gap:.8rem;padding:.6rem .9rem .6rem .6rem}
.fam-tool-art{width:3.6rem;flex:none;display:block}
.fam-tool span.fam-tool-art{background:none;height:auto;border-radius:0}
/* staff-only preview of a section that is still switched off (portal/features.py) */
.preview-banner{display:flex;align-items:center;gap:.6rem;margin:0 0 1.2rem;font-size:.85rem}
.preview-banner .icon{flex:none}
/* teacher home: featured items show their cover (Content.cover) instead of the kind icon */
.feature-cover{display:block;flex:none;width:11rem;aspect-ratio:16/10;border-radius:1rem;overflow:hidden;background:var(--line)}
.feature-cover img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.feature-row:hover .feature-cover img{transform:scale(1.04)}
.feature-row.spotlight .feature-cover{width:15rem}
@media (max-width:720px){.feature-row.has-cover{flex-direction:column}.feature-cover,.feature-row.spotlight .feature-cover{width:100%}}
.resource-art .resource-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* teacher calendar (/calendar/): the old layout, with events drawn like the 學生・家長版 chips —
   coloured by activity type (Content.calendar_type), label in the type colour, single line */
.t-grant{--t:#b7791f;--t-soft:#fdf1d8}
.t-other{--t:#5b6b84;--t-soft:#e9edf3}
:root[data-theme=dark] .t-grant{--t:#f2c46b;--t-soft:#33270f}
:root[data-theme=dark] .t-other{--t:#a9b6cc;--t-soft:#1f2530}
#calendar-grid .calendar-event.fcal-chip,#calendar-grid .calendar-span.fcal-chip{display:block;min-height:0;margin-bottom:.25rem;padding:.22rem .45rem;border:0;border-left:3px solid var(--t);border-radius:.45rem;background:var(--t-soft);color:var(--ink);font-size:.74rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .12s}
#calendar-grid .calendar-span.fcal-chip{margin:0;align-self:center}
#calendar-grid .calendar-span.fcal-chip.is-past,#calendar-grid .calendar-event.fcal-chip.is-past{opacity:.55}
#calendar-grid .fcal-chip b{display:inline;margin-right:.25rem;color:var(--t);font-size:inherit;font-weight:800;line-height:inherit}
#calendar-grid .fcal-chip:hover{transform:translateY(-1px)}
/* covers an AI made are always labelled (Content.cover.source == 'ai') */
.row-thumb,.feature-cover,.fam-cover{position:relative}
.ai-badge{position:absolute;right:.4rem;bottom:.4rem;z-index:2;padding:.12rem .45rem;border-radius:99px;background:rgba(20,20,24,.72);color:#fff;font-size:.66rem;font-weight:700;line-height:1.4;letter-spacing:.02em;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.row-thumb .ai-badge{right:.2rem;bottom:.2rem;font-size:.56rem;padding:.05rem .3rem}
