/*
Theme Name: Manga Yoteicho Mobile
Description: Mobile-first SSR client for the Manga Yoteicho Core API.
Version: 0.21.28
Requires PHP: 7.4
*/

:root {
  --color-background:#f5f6f8; --color-surface:#fff; --color-surface-subtle:#f8f4ef;
  --color-text-primary:#201f24; --color-text-secondary:#66626b; --color-border:#dedde2; --color-border-strong:#c9c6ce;
  --color-accent-primary:#d83b55; --color-accent-primary-dark:#af243d; --color-accent-soft:#fff0f3; --color-accent-secondary:#365f8d;
  --color-success:#26734d; --color-success-soft:#eaf5ef; --color-warning:#936214; --color-warning-soft:#fff8e7; --color-danger:#b42335; --color-link:#245a91;
  --radius-sm:6px; --radius-md:12px; --radius-lg:18px;
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px; --space-6:24px; --space-8:32px; --space-10:40px;
  --shadow-sm:0 1px 2px rgba(31,29,36,.06); --shadow-sheet:0 -12px 40px rgba(31,29,36,.16);
  --font-xs:.75rem; --font-sm:.875rem; --font-md:1rem; --font-lg:1.125rem; --font-xl:1.375rem; --font-2xl:clamp(1.65rem,7vw,2.25rem);
  --line-tight:1.35; --line-normal:1.65; --line-reading:1.9; --content-max:1160px; --reading-max:720px; --touch-target:44px;
}
.legal-navigation {display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px;margin:16px 0;font-size:12px;}
.legal-navigation a {max-width:100%;overflow-wrap:anywhere;}
* { box-sizing:border-box; }
html { color-scheme:light; scroll-behavior:smooth; }
body { margin:0; background:var(--color-background); color:var(--color-text-primary); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP","Hiragino Kaku Gothic ProN",Meiryo,sans-serif; font-size:var(--font-md); line-height:var(--line-normal); text-rendering:optimizeLegibility; }
button,input,select { color:inherit; font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
a { color:var(--color-link); text-underline-offset:.18em; }
a:hover { text-decoration-thickness:2px; }
:focus-visible { outline:3px solid rgba(36,90,145,.4); outline-offset:3px; }
.screen-reader-text { position:absolute!important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); border:0; }
.ui-icon { width:21px; height:21px; flex:none; }

.site-shell { width:100%; min-height:100vh; padding-bottom:calc(76px + env(safe-area-inset-bottom)); }
.site-header { position:sticky; top:0; z-index:30; display:flex; align-items:center; justify-content:space-between; min-height:58px; padding:8px max(14px,env(safe-area-inset-left)) 8px max(14px,env(safe-area-inset-right)); border-bottom:1px solid rgba(222,221,226,.85); background:rgba(255,255,255,.94); backdrop-filter:saturate(150%) blur(12px); }
.site-brand { display:inline-flex; min-width:0; min-height:44px; align-items:center; gap:7px; color:#173b65; font-weight:850; letter-spacing:.015em; text-decoration:none; }
.site-brand__icon { display:block; flex:0 0 auto; width:38px; height:32px; }
.site-brand__name { font-size:1.08rem; white-space:nowrap; }
.site-brand__name span { color:#1688ce; }
.header-actions { display:flex; align-items:center; gap:6px; }
.header-action { display:inline-flex; min-width:var(--touch-target); min-height:var(--touch-target); align-items:center; justify-content:center; gap:6px; border:1px solid transparent; border-radius:var(--radius-md); padding:8px 10px; background:transparent; color:var(--color-text-secondary); text-decoration:none; cursor:pointer; }
.header-action:hover { background:var(--color-surface-subtle); color:var(--color-text-primary); }
.header-action:disabled { cursor:not-allowed; opacity:.55; }
.header-action__label { display:none; font-size:var(--font-sm); font-weight:700; }
.desktop-primary-nav { display:none; }
.page-main { width:min(100%,var(--content-max)); margin:0 auto; padding:var(--space-5) 14px var(--space-10); }

.button,.card-actions button,.offer-open,.bookshelf-toggle,.work-push-trigger,.calendar-filters button,.search-form button { display:inline-flex; min-height:var(--touch-target); align-items:center; justify-content:center; gap:7px; border:1px solid transparent; border-radius:var(--radius-md); padding:9px 14px; font-weight:750; line-height:1.2; text-decoration:none; cursor:pointer; transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .1s ease; }
.button:active,.card-actions button:active,.offer-open:active { transform:translateY(1px); }
.button--primary,.offer-open { background:var(--color-accent-primary); color:#fff; }
.button--primary:hover,.offer-open:hover { background:var(--color-accent-primary-dark); }
.button--secondary,.bookshelf-toggle,.work-push-trigger { border-color:var(--color-border-strong); background:var(--color-surface); color:var(--color-text-primary); }
.button--tertiary { background:transparent; color:var(--color-link); }
.bookshelf-toggle.is-active { border-color:var(--color-accent-primary); background:var(--color-accent-soft); color:var(--color-accent-primary-dark); }
.status-badge,.entity-badge,.count-badge { display:inline-flex; align-items:center; width:max-content; border-radius:999px; font-size:var(--font-xs); font-weight:750; line-height:1; }
.status-badge { padding:7px 9px; background:#eaf5ef; color:var(--color-success); }
.entity-badge { padding:6px 8px; background:var(--color-surface-subtle); color:var(--color-text-secondary); }
.count-badge { padding:5px 8px; background:var(--color-accent-soft); color:var(--color-accent-primary-dark); }

.calendar-overview { display:grid; gap:var(--space-4); margin-bottom:var(--space-5); }
.calendar-overview__eyebrow { margin:0 0 3px; color:var(--color-accent-primary-dark); font-size:var(--font-xs); font-weight:800; letter-spacing:.08em; }
.calendar-overview h1 { margin:0; font-size:var(--font-2xl); line-height:var(--line-tight); letter-spacing:-.025em; }
.calendar-summary { display:flex; align-items:baseline; gap:7px; margin:6px 0 0; color:var(--color-text-secondary); }
.calendar-summary strong { color:var(--color-text-primary); font-size:1.15rem; }
.calendar-source-credit,.article-source-credit { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; color:var(--color-text-secondary); font-size:var(--font-xs); }
.calendar-source-credit { margin:0 0 var(--space-5); }
.article-source-credit { margin:var(--space-6) 0 0; }
.calendar-source-credit img,.article-source-credit img { display:block; }
.period-tabs { display:grid; grid-template-columns:repeat(5,minmax(68px,1fr)); gap:4px; overflow-x:auto; padding:4px; border:1px solid var(--color-border); border-radius:var(--radius-md); background:var(--color-surface); scrollbar-width:none; }
.period-tabs::-webkit-scrollbar { display:none; }
.period-tab { display:grid; min-height:var(--touch-target); place-items:center; border-radius:9px; padding:8px 10px; color:var(--color-text-secondary); font-size:var(--font-sm); font-weight:700; text-decoration:none; white-space:nowrap; }
.period-tab[aria-current="page"] { background:var(--color-text-primary); color:#fff; box-shadow:var(--shadow-sm); }
.calendar-filters { display:grid; gap:var(--space-3); margin:0 0 var(--space-6); padding:var(--space-4); border:1px solid var(--color-border); border-radius:var(--radius-lg); background:var(--color-surface); }
.filter-group { min-width:0; margin:0; padding:0; border:0; }
.filter-group legend { margin-bottom:7px; color:var(--color-text-secondary); font-size:var(--font-xs); font-weight:800; }
.kind-options { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.kind-option { position:relative; }
.kind-option input { position:absolute; opacity:0; pointer-events:none; }
.kind-option span { display:grid; min-height:var(--touch-target); place-items:center; border:1px solid var(--color-border); border-radius:10px; padding:7px; background:var(--color-surface); font-size:var(--font-sm); font-weight:700; cursor:pointer; }
.kind-option input:checked + span { border-color:var(--color-accent-primary); background:var(--color-accent-soft); color:var(--color-accent-primary-dark); }
.kind-option input:focus-visible + span { outline:3px solid rgba(36,90,145,.4); outline-offset:2px; }
.filter-secondary { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); }
.switch-label { display:flex; min-height:var(--touch-target); align-items:center; gap:10px; color:var(--color-text-secondary); font-size:var(--font-sm); cursor:pointer; }
.switch-label input { width:20px; height:20px; accent-color:var(--color-accent-primary); }
.release-day { margin-top:var(--space-8); scroll-margin-top:76px; }
.date-group-heading { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); margin:0 0 var(--space-2); padding:0 2px var(--space-3); border-bottom:2px solid var(--color-text-primary); }
.date-group-heading h2 { margin:0; font-size:var(--font-xl); line-height:var(--line-tight); }
.release-list { display:grid; gap:10px; }
.release-card { display:grid; grid-template-columns:76px minmax(0,1fr); gap:8px 12px; align-items:start; padding:12px; border:1px solid var(--color-border); border-radius:var(--radius-md); background:var(--color-surface); box-shadow:var(--shadow-sm); }
.release-card__body { min-width:0; }
.release-card__heading { display:flex; align-items:flex-start; justify-content:space-between; gap:6px; }
.release-card__meta { display:flex; flex-wrap:wrap; align-items:center; gap:5px; margin:6px 0; }
.release-card h3 { min-width:0; margin:0; color:#173b65; font-size:1rem; font-weight:800; line-height:1.35; overflow-wrap:anywhere; }
.release-card h3 a { color:var(--color-text-primary); text-decoration:none; }
.release-card h3 a:hover { color:var(--color-link); text-decoration:underline; }
.release-new-badge { flex:0 0 auto; border-radius:4px; padding:3px 7px; background:#ed6b91; color:#fff; font-size:.72rem; font-weight:800; line-height:1.25; white-space:nowrap; }
.release-card__author,.release-card__publication,.release-card__price { margin:3px 0 0; color:var(--color-text-secondary); font-size:var(--font-sm); line-height:1.4; overflow-wrap:anywhere; }
.release-card__price { color:var(--color-text-primary); font-weight:750; }
.release-card__price:has(.release-price__amount) { display:flex; flex-wrap:wrap; column-gap:.35em; }
.release-price__kind,.release-price__amount { white-space:nowrap; }
.release-rakuten { grid-column:1/-1; display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; padding:9px 11px; border:1px solid var(--color-border-strong); border-radius:8px; background:#fff; }
.release-rakuten__name { font-size:var(--font-sm); }
.release-rakuten .release-card__price { margin:0; }
.release-rakuten .release-action--buy { display:inline-flex; align-items:center; min-height:var(--touch-target); padding:6px 10px; border-radius:8px; background:#e4587e; color:#fff; font-size:.82rem; font-weight:800; text-decoration:none; }
.release-reason { margin:6px 0 0; color:var(--color-text-secondary); font-size:var(--font-sm); line-height:1.55; }
.card-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.card-actions button { min-height:var(--touch-target); padding:8px 11px; font-size:var(--font-sm); }
.card-actions--release { grid-column:1/-1; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin:0; }
.card-actions--release.card-actions--two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.card-actions--release .release-action { display:inline-flex; min-width:0; min-height:var(--touch-target); align-items:center; justify-content:center; gap:5px; border:1px solid var(--color-border-strong); border-radius:8px; padding:6px 8px; background:#fff; color:#173b65; font-size:.82rem; font-weight:800; line-height:1.15; text-align:center; text-decoration:none; white-space:nowrap; cursor:pointer; }
.release-action .ui-icon { width:17px; height:17px; }
.card-actions--release .release-action--buy { border-color:#e4587e; background:#e4587e; color:#fff; }
.card-actions--release .release-action--buy:hover { border-color:#cc3e66; background:#cc3e66; color:#fff; }
.card-actions--release .release-action--buy:disabled { border-color:#d8a5b3; background:#d8a5b3; color:#fff; cursor:not-allowed; }
.card-actions--release .release-action--secondary:hover { border-color:#8da5bd; background:#f5f9fc; }
.release-card__utility { grid-column:2; justify-self:end; margin-top:-4px; }
.release-card__utility .bookshelf-toggle { min-height:var(--touch-target); border-color:transparent; padding:4px 6px; background:transparent; color:var(--color-text-secondary); font-size:var(--font-xs); }
.release-card__utility .ui-icon { width:17px; height:17px; }
.entity-cover { position:relative; width:100%; aspect-ratio:3/4; margin:0; overflow:hidden; border:1px solid var(--color-border); border-radius:var(--radius-sm); background:var(--color-surface-subtle); box-shadow:var(--shadow-sm); }
.entity-cover img { display:block; width:100%; height:100%; object-fit:cover; }
.entity-cover--release { background:#fff; }
.entity-cover--release img { object-fit:contain; }
.entity-cover--fallback { display:grid; align-content:center; justify-items:center; gap:5px; padding:8px; background:linear-gradient(145deg,#f1ece7,#faf8f5); color:var(--color-text-secondary); text-align:center; }
.entity-cover--fallback::before { position:absolute; top:0; right:8px; bottom:0; width:1px; background:rgba(0,0,0,.07); content:""; }
.entity-cover--fallback .ui-icon { width:24px; height:24px; }
.entity-cover--fallback small { font-size:.58rem; font-weight:800; letter-spacing:.12em; }
.entity-cover--magazine { aspect-ratio:3/4.25; }
.cover-placeholder { display:grid; width:100%; aspect-ratio:3/4; place-items:center; border:1px solid var(--color-border); border-radius:var(--radius-sm); background:var(--color-surface-subtle); color:var(--color-text-secondary); font-size:var(--font-xs); }
.fixture-notice,.pillar-preview-notice { margin:var(--space-4) 0; border:1px solid #efd89f; border-left:4px solid var(--color-warning); border-radius:var(--radius-sm); padding:10px 12px; background:var(--color-warning-soft); color:#60430f; font-size:var(--font-sm); }

.breadcrumb { display:flex; min-height:var(--touch-target); align-items:center; gap:5px; overflow:hidden; color:var(--color-text-secondary); font-size:var(--font-sm); white-space:nowrap; }
.breadcrumb a { display:inline-flex; min-height:40px; align-items:center; gap:4px; color:var(--color-text-secondary); text-decoration:none; }
.breadcrumb .ui-icon { width:17px; height:17px; }
.work-detail { max-width:920px; margin:0 auto; }
.work-hero { display:grid; grid-template-columns:96px minmax(0,1fr); gap:var(--space-4); align-items:start; margin:var(--space-2) 0 var(--space-6); padding:var(--space-4); border:1px solid var(--color-border); border-radius:var(--radius-lg); background:var(--color-surface); box-shadow:var(--shadow-sm); }
.work-hero__content { min-width:0; }
.work-hero__meta { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.work-hero h1 { margin:0; font-size:var(--font-2xl); line-height:var(--line-tight); letter-spacing:-.025em; overflow-wrap:anywhere; }
.work-hero__summary { margin:10px 0 0; color:var(--color-text-secondary); line-height:1.7; }
.work-hero .card-actions { grid-column:1/-1; margin-top:0; }
.work-pillar { max-width:var(--reading-max); margin:0 auto; font-size:var(--font-md); line-height:var(--line-reading); overflow-wrap:anywhere; }
.work-pillar > p { margin:1em 0; }
.work-pillar h2,.content-article h2 { margin:var(--space-10) 0 var(--space-4); border-left:4px solid var(--color-accent-primary); padding:9px 12px; background:var(--color-surface-subtle); font-size:var(--font-xl); line-height:1.45; }
.work-pillar h3,.content-article h3 { margin:var(--space-8) 0 var(--space-3); font-size:var(--font-lg); line-height:1.5; }
.content-updated { margin:0 0 var(--space-4); color:var(--color-text-secondary); font-size:var(--font-sm); }
.pillar-facts,.pillar-offer { margin:var(--space-5) 0; border:1px solid var(--color-border); border-radius:var(--radius-md); padding:var(--space-4); background:var(--color-surface); box-shadow:var(--shadow-sm); }
.pillar-facts dl { display:grid; grid-template-columns:minmax(82px,auto) 1fr; gap:10px 14px; margin:0; }
.pillar-facts dt { color:var(--color-text-secondary); font-weight:700; }
.pillar-facts dd { margin:0; font-weight:650; }
.pillar-hero{display:grid;grid-template-columns:minmax(112px,30%) 1fr;gap:var(--space-5);margin:0 0 var(--space-5);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:linear-gradient(145deg,var(--color-surface),var(--color-surface-subtle));box-shadow:var(--shadow-sm)}
.pillar-hero__cover img{display:block;width:100%;height:auto;aspect-ratio:320/508;object-fit:cover;border-radius:var(--radius-sm);background:var(--color-surface-subtle)}
.pillar-hero__main{min-width:0}.pillar-hero__eyebrow{color:var(--color-text-secondary);font-size:var(--font-sm);font-weight:700;letter-spacing:.08em}.pillar-hero h1{margin:4px 0 8px;font-size:clamp(1.6rem,7vw,2.55rem);line-height:1.18}.pillar-hero__identity{display:flex;flex-wrap:wrap;gap:5px;color:var(--color-text-secondary);font-weight:650}
.status-badge{display:inline-flex;align-items:center;min-height:30px;margin:12px 0 8px;padding:4px 11px;border-radius:999px;background:var(--color-success-soft);color:var(--color-success);font-size:var(--font-sm);font-weight:800}.status-badge--completed{background:var(--color-surface-subtle);color:var(--color-text-primary)}
.taxonomy-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px}.taxonomy-chip{display:inline-flex;align-items:center;min-height:36px;padding:5px 11px;border-radius:999px;text-decoration:none;font-size:var(--font-sm);font-weight:700}.taxonomy-chip--category{background:var(--color-accent-primary);color:#fff}.taxonomy-chip--tag{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-link)}
.pillar-hero__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0}.pillar-hero__facts>div{padding:10px;border-radius:var(--radius-sm);background:var(--color-surface)}.pillar-hero__facts dt{color:var(--color-text-secondary);font-size:var(--font-sm)}.pillar-hero__facts dd{margin:2px 0 0;font-size:var(--font-lg);font-weight:800}.pillar-hero__synopsis{margin:12px 0 0;line-height:1.75}
.pillar-toc{margin:var(--space-5) 0;padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.pillar-toc strong{font-size:var(--font-lg)}.pillar-toc ol{margin:12px 0 0;padding-left:1.4em}.pillar-toc li+li{margin-top:7px}.pillar-toc a{line-height:1.55}
.pillar-section{scroll-margin-top:16px}.service-grid{display:grid;gap:12px}.service-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.service-card h3{margin:0 0 8px}.service-card dl{display:grid;gap:6px;margin:0}.service-card dl div{display:grid;grid-template-columns:68px 1fr;gap:8px}.service-card dt{color:var(--color-text-secondary);font-weight:700}.service-card dd{margin:0}
.pillar-offer-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:var(--space-4) 0}.pillar-offer-facts>div{padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.pillar-offer-facts dt{color:var(--color-text-secondary);font-size:var(--font-sm);font-weight:700}.pillar-offer-facts dd{margin:3px 0 0;font-weight:800}
.volume-grid{display:grid;grid-template-columns:1fr;gap:12px}.volume-card{display:grid;grid-template-columns:88px 1fr;gap:14px;padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.volume-card img,.volume-card .cover-placeholder{width:88px;aspect-ratio:160/254;height:auto;object-fit:cover;border-radius:var(--radius-sm)}.volume-card h3{margin:0 0 6px}.volume-card p{margin:0 0 8px}.volume-card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:0;font-size:var(--font-sm)}.volume-card dd{margin:0;overflow-wrap:anywhere}
@media(max-width:520px){.pillar-hero{grid-template-columns:104px 1fr;padding:14px;gap:14px}.pillar-hero__summary{grid-column:1/-1}.pillar-hero .card-actions{grid-column:1/-1}.pillar-hero__facts,.pillar-offer-facts{grid-template-columns:1fr}.pillar-hero__synopsis{grid-column:1/-1}.pillar-hero h1{font-size:1.65rem}}
.volume-card>div{min-width:0}.volume-card__shops{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.volume-card__shops .offer-link--compact{min-width:0;width:100%;margin-top:0;padding-inline:6px;white-space:nowrap}.volume-card__shops .offer-link--compact:only-child{grid-column:1/-1}
@media(min-width:720px){.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.volume-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.responsive-table { max-width:100%; margin:var(--space-4) 0; overflow-x:auto; border:1px solid var(--color-border); border-radius:var(--radius-md); }
.responsive-table table { width:100%; border-collapse:collapse; background:var(--color-surface); }
.responsive-table th,.responsive-table td { padding:11px 12px; border-bottom:1px solid var(--color-border); text-align:left; white-space:nowrap; }
.responsive-table th { background:var(--color-surface-subtle); font-size:var(--font-sm); }
.content-sources { margin-top:var(--space-10); border-top:1px solid var(--color-border); padding-top:var(--space-5); color:var(--color-text-secondary); font-size:var(--font-sm); overflow-wrap:anywhere; }
.work-releases { max-width:var(--reading-max); margin:var(--space-10) auto 0; }
.section-heading { margin:0 0 var(--space-2); font-size:var(--font-xl); }

.content-article { max-width:var(--reading-max); margin:0 auto; }
.content-article h1 { margin:var(--space-4) 0; font-size:var(--font-2xl); line-height:var(--line-tight); overflow-wrap:anywhere; }
.content-body { font-size:var(--font-md); line-height:var(--line-reading); overflow-wrap:anywhere; }
.content-body img { display:block; max-width:100%; height:auto; }
.content-body table { display:block; width:100%; max-width:100%; overflow-x:auto; border-collapse:collapse; }
.content-body th,.content-body td { min-width:120px; padding:9px; border:1px solid var(--color-border); text-align:left; }
.content-cta { display:inline-flex; min-height:var(--touch-target); align-items:center; margin:8px 8px 8px 0; border:1px solid var(--color-accent-primary); border-radius:var(--radius-md); padding:9px 14px; background:var(--color-surface); color:var(--color-accent-primary-dark); font-weight:750; text-decoration:none; }
.search-form { display:flex; flex-wrap:wrap; gap:var(--space-3); align-items:end; margin:var(--space-5) 0; }
.search-form label { display:grid; gap:5px; color:var(--color-text-secondary); font-size:var(--font-sm); font-weight:700; }
.search-form input,.search-form select { min-height:var(--touch-target); max-width:100%; border:1px solid var(--color-border-strong); border-radius:var(--radius-md); padding:8px 10px; background:var(--color-surface); }
.search-form button { background:var(--color-text-primary); color:#fff; }
.search-form label.search-form__check { display:flex; align-items:center; gap:8px; min-height:var(--touch-target); }
.search-form .search-form__check input { flex:0 0 20px; width:20px; height:20px; min-height:20px; padding:0; }
.subscription-compare-open { min-height:var(--touch-target); padding:9px 14px; border:1px solid var(--color-border-strong); border-radius:var(--radius-md); background:var(--color-surface); color:var(--color-text-primary); font:inherit; font-weight:750; cursor:pointer; }
.utility-page { max-width:900px; margin:0 auto; }
.utility-page__header { display:flex; align-items:flex-start; gap:var(--space-4); margin-bottom:var(--space-5); }
.utility-page__header h1 { margin:2px 0 6px; font-size:var(--font-2xl); line-height:var(--line-tight); }
.utility-page__header p { margin:0; color:var(--color-text-secondary); }
.utility-page__eyebrow { color:var(--color-accent-primary-dark)!important; font-size:var(--font-xs); font-weight:800; letter-spacing:.11em; }
.utility-page__icon,.catalog-card__type,.bookshelf-card__icon { display:grid; flex:0 0 auto; width:48px; height:48px; place-items:center; border-radius:var(--radius-md); background:var(--color-accent-soft); color:var(--color-accent-primary-dark); }
.utility-page__icon .ui-icon,.catalog-card__type .ui-icon,.bookshelf-card__icon .ui-icon { width:24px; height:24px; }
.search-form { border:1px solid var(--color-border); border-radius:var(--radius-lg); padding:var(--space-4); background:var(--color-surface); box-shadow:var(--shadow-sm); }
.search-form__query { flex:1 1 280px; }
.search-form__query input { width:100%; }
.result-summary { display:flex; align-items:baseline; gap:6px; margin:var(--space-6) 0 var(--space-3); color:var(--color-text-secondary); }
.result-summary strong { color:var(--color-text-primary); font-size:var(--font-xl); }
.catalog-results,.bookshelf-grid { display:grid; gap:var(--space-3); }
.reading-list { display:grid; gap:var(--space-4); }
.reading-card { min-width:0; padding:var(--space-5); border:1px solid var(--color-border); border-radius:var(--radius-md); background:var(--color-surface); box-shadow:var(--shadow-sm); }
.reading-card h2 { margin:0 0 var(--space-2); overflow-wrap:anywhere; font-size:var(--font-xl); }
.reading-card__publisher { margin:0 0 var(--space-3); color:var(--color-text-secondary); }
.reading-card__offer { margin:var(--space-3) 0; padding:var(--space-4); border:1px solid var(--color-border); border-radius:var(--radius-sm); background:var(--color-surface-subtle); }
.reading-card__offer h3 { margin:0 0 var(--space-2); font-size:var(--font-md); }
.reading-card__offer p { margin:var(--space-1) 0; overflow-wrap:anywhere; }
.catalog-card,.bookshelf-card { display:grid; grid-template-columns:48px minmax(0,1fr); gap:var(--space-4); align-items:start; border:1px solid var(--color-border); border-radius:var(--radius-md); padding:var(--space-4); background:var(--color-surface); box-shadow:var(--shadow-sm); }
.catalog-card__body h2,.bookshelf-card__body h2 { margin:7px 0; font-size:var(--font-lg); line-height:1.4; overflow-wrap:anywhere; }
.catalog-card__body p { margin:0 0 10px; color:var(--color-text-secondary); font-size:var(--font-sm); }
.catalog-card .bookshelf-toggle,.bookshelf-card .bookshelf-toggle { min-height:40px; padding:7px 11px; }

.empty-state { display:grid; justify-items:center; gap:8px; margin:var(--space-6) 0; border:1px dashed var(--color-border-strong); border-radius:var(--radius-md); padding:var(--space-8) var(--space-5); background:var(--color-surface); color:var(--color-text-secondary); text-align:center; }
#offer-sheet { width:min(560px,calc(100% - 24px - env(safe-area-inset-left) - env(safe-area-inset-right))); max-height:min(680px,calc(100vh - 32px)); max-height:min(680px,calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom))); margin:auto; overflow:hidden; border:0; border-radius:var(--radius-lg); padding:0; background:var(--color-surface); box-shadow:var(--shadow-sheet); }
#offer-sheet[open] { display:flex; flex-direction:column; }
#offer-sheet::backdrop { background:rgba(24,22,28,.48); }
.sheet-header { position:sticky; top:0; z-index:1; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 18px; border-bottom:1px solid var(--color-border); background:rgba(255,255,255,.97); }
.sheet-header .sheet-title { margin:0; font-size:var(--font-xl); font-weight:800; line-height:1.25; }
.sheet-close { display:grid; width:var(--touch-target); height:var(--touch-target); place-items:center; border:0; border-radius:var(--radius-md); background:var(--color-surface-subtle); cursor:pointer; }
.offer-content { min-height:120px; padding:var(--space-5); }
#offer-sheet .sheet-header { position:relative; flex:0 0 auto; }
#offer-sheet .offer-content { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; }
.loading-state { display:flex; align-items:center; gap:10px; color:var(--color-text-secondary); }
.loading-state::before { width:18px; height:18px; border:2px solid var(--color-border); border-top-color:var(--color-accent-primary); border-radius:50%; content:""; animation:spin .8s linear infinite; }
.rakuten-offers { display:grid; gap:12px; margin:0 0 var(--space-4); }
.offer-row { border:1px solid var(--color-border); border-radius:var(--radius-md); padding:var(--space-4); }
.offer-row p { margin:0 0 8px; }
.offer-row a { display:inline-flex; min-height:var(--touch-target); align-items:center; border-radius:var(--radius-md); background:#bf0000; color:#fff; padding:9px 13px; font-weight:700; text-decoration:none; }
@keyframes spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; } }

.bottom-nav { position:fixed; right:0; bottom:0; left:0; z-index:40; display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); max-width:560px; margin:auto; border:1px solid var(--color-border); border-bottom:0; border-radius:16px 16px 0 0; padding:4px max(6px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(6px,env(safe-area-inset-left)); background:rgba(255,255,255,.97); box-shadow:0 -4px 18px rgba(31,29,36,.08); backdrop-filter:blur(12px); }
.bottom-nav a,.bottom-nav .nav-unavailable { display:grid; min-width:0; min-height:58px; place-items:center; align-content:center; gap:2px; border-radius:12px; color:var(--color-text-secondary); font-size:var(--font-xs); font-weight:700; text-align:center; text-decoration:none; }
.bottom-nav a[aria-current="page"] { background:var(--color-accent-soft); color:var(--color-accent-primary-dark); }
.bottom-nav .ui-icon { width:22px; height:22px; }
.bottom-nav .nav-unavailable,.desktop-primary-nav .nav-unavailable { color:#827d86; opacity:.72; cursor:not-allowed; }
.bottom-nav .nav-unavailable .ui-icon { width:22px; height:22px; }

@media (min-width:640px) {
  .site-header { padding-right:24px; padding-left:24px; }
  .header-action__label { display:inline; }
  .page-main { padding:28px 24px 56px; }
  .calendar-overview { align-items:end; }
  .calendar-filters { grid-template-columns:minmax(290px,1fr) auto; align-items:end; }
  .filter-secondary { min-width:310px; }
  .release-list { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:var(--space-6); }
  .release-card { grid-template-columns:76px minmax(0,1fr); gap:8px 10px; padding:10px; }
  .card-actions--release { grid-column:2; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; }
  .card-actions--release .release-action { gap:4px; padding:6px 5px; font-size:.78rem; }
  .release-action .ui-icon { width:16px; height:16px; }
  .release-card__utility { grid-column:2; }
  .work-hero { grid-template-columns:128px minmax(0,1fr); padding:var(--space-6); }
  .work-hero .card-actions { grid-column:2; }
  .catalog-results,.bookshelf-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:960px) {
  .calendar-overview { grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); }
  .calendar-overview h1 { font-size:clamp(1.65rem,3vw,2.25rem); }
  .site-shell { padding-bottom:0; }
  .site-header { position:sticky; }
  .desktop-primary-nav { display:flex; align-items:center; gap:4px; margin-left:auto; margin-right:8px; }
  .desktop-primary-nav a,.desktop-primary-nav .nav-unavailable { display:grid; min-height:44px; place-items:center; border-radius:var(--radius-md); padding:8px 10px; color:var(--color-text-secondary); font-size:var(--font-sm); font-weight:750; text-decoration:none; white-space:nowrap; }
  .desktop-primary-nav a[aria-current="page"] { background:var(--color-accent-soft); color:var(--color-accent-primary-dark); }
  .header-actions .header-action__label { display:none; }
  .bottom-nav { display:none; }
  .release-list { grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:var(--space-6); }
  .work-hero { grid-template-columns:150px minmax(0,1fr); }
}
@media (max-width:359px) {
  .site-brand { gap:4px; }
  .site-brand__icon { width:32px; height:29px; }
  .site-brand__name { font-size:.95rem; }
  .header-actions { gap:0; }
  .period-tabs { grid-template-columns:repeat(5,68px); }
  .filter-secondary { align-items:stretch; flex-direction:column; }
  .calendar-filters button { width:100%; }
  .release-card { grid-template-columns:64px minmax(0,1fr); gap:7px 9px; padding:9px; }
  .card-actions--release { grid-column:1/-1; gap:4px; }
  .card-actions--release .release-action { gap:3px; padding:6px 3px; font-size:.75rem; }
  .release-action .ui-icon { width:15px; height:15px; }
  .release-card__utility { grid-column:1/-1; }
  .card-actions { align-items:stretch; flex-direction:column; }
  .card-actions button { width:100%; }
  .work-hero { grid-template-columns:80px minmax(0,1fr); }
  .utility-page__header { gap:10px; }
  .utility-page__icon { width:42px; height:42px; }
  .search-form { align-items:stretch; flex-direction:column; }
  .search-form__query { flex-basis:auto; }
  .search-form label,.search-form button { width:100%; }
}
/* Work pillar comparison tables */
.comparison-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:var(--space-4) 0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}
.comparison-table{width:100%;min-width:560px;border-collapse:collapse}.comparison-table th,.comparison-table td{padding:12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border)}.comparison-table thead th{background:var(--color-surface-subtle);font-size:var(--font-sm);white-space:nowrap}.comparison-table tbody tr:last-child th,.comparison-table tbody tr:last-child td{border-bottom:0}.vod-comparison{min-width:900px}
.best-price{display:inline-block;margin-left:7px;padding:2px 7px;border-radius:999px;background:#e7f7ec;color:#176b36;font-size:.72rem}.comparison-note{color:var(--color-text-secondary);font-size:var(--font-sm)}.offer-provider-grid{display:grid;gap:12px}.offer-link{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:8px 13px;border-radius:var(--radius-sm);background:var(--color-accent-primary);color:#fff;font-weight:700;text-decoration:none}.offer-link--compact{margin-top:10px;font-size:var(--font-sm)}
@media(min-width:720px){.offer-provider-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Work pillar service labels and visual hierarchy */
.pillar-section{margin:var(--space-8) 0;padding:clamp(16px,3vw,26px);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}
.pillar-section>h2{margin:0 0 var(--space-4);border-left:4px solid var(--color-accent-primary);border-bottom:1px solid var(--color-border);border-radius:var(--radius-sm);padding:10px 12px;background:linear-gradient(90deg,var(--color-accent-soft),rgba(255,255,255,0));font-size:clamp(1.25rem,4.8vw,1.65rem);line-height:1.42}
.content-updated{display:inline-flex;align-items:center;min-height:28px;margin:0 0 var(--space-4);border:1px solid var(--color-border);border-radius:999px;padding:3px 10px;background:var(--color-surface-subtle);font-size:var(--font-xs);font-weight:700;letter-spacing:.01em}
.format-heading{display:inline-flex;align-items:center;gap:8px;margin:var(--space-4) 0 0;border-radius:999px;padding:7px 12px;background:var(--color-accent-soft);color:var(--color-accent-primary-dark);font-size:var(--font-md)}
.comparison-table-wrap{position:relative;box-shadow:inset -12px 0 14px -16px rgba(32,31,36,.45)}
.comparison-table thead th{background:#f3eef0;color:var(--color-text-primary);font-weight:800}
.comparison-table tbody tr:nth-child(even){background:#fcfbfc}
.comparison-table tbody tr{transition:background-color .15s ease}
.comparison-table tbody tr:hover{background:#fff7f8}
.comparison-table th,.comparison-table td{padding:14px 13px}
.comparison-price{font-weight:800;white-space:nowrap}
.service-label{display:inline-flex;min-height:44px;align-items:center;gap:9px;color:var(--color-text-primary);font-weight:800;line-height:1.25;white-space:nowrap}
.service-label--linked{border-radius:var(--radius-sm);text-decoration:none}
.service-label--linked:hover .service-label__name{text-decoration:underline;text-decoration-thickness:2px}
.service-label--linked:focus-visible{outline:3px solid rgba(36,90,145,.4);outline-offset:3px}
.service-label__external{color:var(--color-text-secondary);font-size:.78em;font-weight:600}
.service-icon{display:inline-grid;width:24px;height:24px;flex:0 0 24px;place-items:center;border:1px solid rgba(0,0,0,.09);border-radius:7px;background:#4b5563;color:#fff;font-size:11px;font-weight:900;line-height:1;letter-spacing:-.04em;box-shadow:0 1px 2px rgba(31,29,36,.12)}
.service-icon--amazon,.service-icon--amazon_kindle,.service-icon--prime_video{background:#232f3e;color:#ffb000}.service-icon--rakuten_books,.service-icon--rakuten_kobo{background:#bf0000}.service-icon--dmm_books,.service-icon--dmm_tv{background:#1769aa}.service-icon--booklive{background:#ee6a23}.service-icon--ameba_manga{background:#20a464}.service-icon--fod{background:#1670c5}.service-icon--u_next{background:#111}.service-icon--d_anime{background:#e50012}.service-icon--anime_hodai{background:#f26c22}.service-icon--lemino{background:#7046d2}.service-icon--abema{background:#151515}.service-icon--hulu{background:#2dbd71}.service-icon--netflix{background:#111;color:#e50914}.service-icon--disney_plus{background:#113ccf}
.availability-badge,.trial-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;background:var(--color-surface-subtle);color:var(--color-text-secondary);font-size:var(--font-xs);font-weight:800;white-space:nowrap}.availability-badge{background:#eaf5ef;color:var(--color-success)}.trial-badge--available{background:#eef4fb;color:var(--color-accent-secondary)}
.vod-table-notes{margin-top:var(--space-3);border-left:3px solid var(--color-accent-secondary);padding:8px 11px;background:#f3f7fb}.vod-scope-note{margin:0;color:var(--color-text-secondary);font-size:var(--font-sm);line-height:1.5}.vod-scope-note+.vod-scope-note{margin-top:4px}.vod-scope-note strong{color:var(--color-text-primary)}.vod-scope,.vod-scope--shared,.vod-comparison .comparison-price,.vod-comparison .trial-badge,.vod-comparison .vod-feature{white-space:nowrap}.vod-scope sup,.trial-badge sup{margin-left:2px;color:var(--color-accent-secondary);font-weight:800}.vod-comparison th,.vod-comparison td{padding:8px 10px;vertical-align:middle;line-height:1.35}.vod-comparison th:first-child{min-width:158px}.vod-comparison td:nth-child(2){min-width:104px}.vod-comparison td:nth-child(3){min-width:128px}.vod-comparison td:nth-child(4){min-width:96px}.vod-comparison td:nth-child(5){min-width:148px}.vod-comparison td:nth-child(6){min-width:160px}
.availability-notice{border:1px solid #cdd9e7;border-radius:var(--radius-md);padding:var(--space-5);background:#f3f7fb;color:var(--color-text-primary)}
.availability-notice p{margin:0}.availability-notice p+p{margin-top:10px}.availability-notice .content-updated{margin-bottom:0;background:#fff}
.offer-link{transition:background-color .15s ease,transform .15s ease}.offer-link:hover{background:var(--color-accent-primary-dark);transform:translateY(-1px)}.offer-link:focus-visible{outline:3px solid rgba(36,90,145,.4);outline-offset:3px}
@media(max-width:520px){.pillar-section{margin:var(--space-6) 0;padding:14px}.pillar-section>h2{padding:9px 10px}.comparison-table th,.comparison-table td{padding:12px 11px}.vod-comparison th,.vod-comparison td{padding:8px 10px}.service-label,.service-label__name{white-space:nowrap}.vod-comparison th:first-child{min-width:142px}.vod-table-notes{padding:8px 10px}}
.calendar-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;margin:var(--space-6) 0;padding:12px}.calendar-pagination a{display:inline-flex;min-height:44px;align-items:center;padding:8px 16px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-weight:700;text-decoration:none}.calendar-pagination a:focus-visible{outline:3px solid var(--color-accent-primary);outline-offset:2px}.calendar-pagination [aria-current=page]{color:var(--color-text-secondary);font-weight:700}
.calendar-page-numbers{display:flex;flex-basis:100%;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px}.calendar-page-numbers .calendar-page-number{display:inline-grid;min-width:44px;min-height:44px;place-items:center;padding:6px 8px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-weight:750;text-decoration:none}.calendar-page-numbers .is-current{border-color:var(--color-accent-primary);background:var(--color-accent-soft);color:var(--color-accent-primary-dark)}.calendar-page-gap{padding:0 3px;color:var(--color-text-secondary)}
@media(min-width:640px){.header-actions .header-bookshelf .header-action__label{display:inline}}

.pillar-full-set .full-set-cover{display:block;width:120px;height:190px;max-width:100%;object-fit:contain;margin:0 0 1rem}

/* Neutral, opt-out canonical calendar filters. Native details also works without JS. */
.calendar-exclusions{margin:1rem 0}.calendar-exclusions>summary{cursor:pointer;width:fit-content;list-style:none}.calendar-exclusions>summary::-webkit-details-marker{display:none}.calendar-exclusions[open]>summary{margin-bottom:.75rem}.calendar-exclusions .calendar-filters{display:block;padding:1rem;border:1px solid var(--color-border,#ddd);border-radius:12px}.calendar-filters fieldset{border:0;padding:0;margin:0 0 1rem;display:flex;flex-wrap:wrap;gap:.8rem 1.25rem}.calendar-filters legend{font-weight:700;margin-bottom:.75rem}.calendar-filters label{display:flex;align-items:center;gap:.4rem;min-height:44px}.calendar-filters input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-accent-primary,#d83b55)}.calendar-filter-actions{display:flex;flex-wrap:wrap;gap:.75rem}.calendar-exclusion-state{font-size:.9rem;overflow-wrap:anywhere;margin-bottom:1rem}

/* Keep purchase labels intact inside the price table's own horizontal scroller. */
.price-comparison .offer-link{white-space:nowrap}

/* Shared article hub: featured media and metadata, no article-specific layout. */
.article-hub-intro{max-width:65ch;margin-bottom:1.5rem;color:#52616b;line-height:1.8}
.article-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.content-article .article-card{display:flex;flex-direction:column;min-width:0;color:inherit;text-decoration:none;border:1px solid #e4e9ed;border-radius:12px;background:#fff;overflow:hidden;box-shadow:0 2px 8px #23374d08;transition:transform .18s,box-shadow .18s}
.article-card:hover{transform:translateY(-3px);box-shadow:0 6px 18px #23374d12}
.article-card:focus-visible{outline:3px solid #177c91;outline-offset:3px}
.article-card-media{aspect-ratio:16/9;overflow:hidden;background:#f1f5f7}
.article-card-media img{display:block;width:100%;height:100%;object-fit:cover;margin:0}
.article-card-body{display:flex;flex:1;flex-direction:column;padding:1.15rem}
.content-article .article-card h2{font-size:1.08rem;line-height:1.6;margin:0 0 .65rem;padding:0;border:0;background:none;overflow-wrap:anywhere}
.article-card-body p{font-size:.9rem;line-height:1.75;color:#596771;margin:0 0 1rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.article-card-read{margin-top:auto;font-size:.85rem;font-weight:600;color:#177c91}
.article-eyecatch{aspect-ratio:16/9;margin:1.25rem 0 2rem;overflow:hidden;border-radius:12px}
.article-eyecatch img{display:block;width:100%;height:100%;object-fit:cover}
@media(max-width:1023px){.article-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:599px){.article-card-grid{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.article-card{transition:none}.article-card:hover{transform:none}}
.content-article[data-content-type="editorial_guides_hub"]{max-width:1100px}

/* Calendar commerce and exact-source confirmation have separate roles. */
.card-actions--release.card-actions--one { grid-template-columns:minmax(0,1fr); }
.release-card__source { grid-column:2; margin:0; color:var(--color-text-secondary); font-size:.75rem; overflow-wrap:anywhere; }
.release-card__source a { display:inline-flex; align-items:center; gap:5px; min-height:44px; color:var(--color-text-secondary); text-decoration:underline; }
.release-card__source .ui-icon { width:14px; height:14px; }
.release-card__meta { font-size:.72rem; color:var(--color-text-secondary); }
.release-card__meta span { border:1px solid var(--color-border-strong); padding:2px 5px; border-radius:4px; }
.release-card__title-link { color:inherit; text-decoration:none; overflow-wrap:anywhere; }
.release-card__title-link:hover { color:var(--color-primary,#087bbd); text-decoration:underline; text-underline-offset:3px; }
.release-card__title-link:focus-visible { outline:3px solid var(--color-primary,#087bbd); outline-offset:3px; border-radius:2px; text-decoration:underline; }

/* Calendar-only presentation: larger uncropped covers, one verification range per day. */
.release-day .release-card { grid-template-columns:clamp(88px,22vw,104px) minmax(0,1fr); }
.date-group-heading { flex-wrap:wrap; justify-content:flex-start; }
.date-group-heading__price-check { color:var(--color-text-secondary); font-size:var(--font-sm); overflow-wrap:anywhere; }
.date-group-heading .count-badge { margin-left:auto; }
.calendar-price-note { margin:24px 0 0; padding:12px; color:var(--color-text-secondary); font-size:var(--font-sm); overflow-wrap:anywhere; }
.calendar-price-note p { margin:0 0 8px; }
@media (max-width:359px) { .release-day .release-card { grid-template-columns:84px minmax(0,1fr); } }
