/* ToonMarket — フリーペーパー × エディトリアル UI */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&family=Noto+Sans+JP:wght@400;500;600&family=Shippori+Mincho:wght@500;600;700&display=swap');

:root {
    --primary: #9c4a32;
    --primary-soft: #c4705a;
    --secondary: #2a2a2a;
    --paper: #f6f1e8;
    --paper-light: #fcfaf6;
    --paper-dark: #e6dfd3;
    --surface: #ffffff;
    --ink: #1f1f1f;
    --ink-muted: #6b6560;
    --rule: #ddd5c8;
    --accent-gold: #a67c3d;
    --radius: 3px;
    --shadow-soft: 0 2px 16px rgba(30, 24, 16, .06);
    --shadow-paper: 0 1px 0 rgba(0,0,0,.04), 0 12px 32px rgba(30, 24, 16, .08);
    --shadow-lift: 0 20px 48px rgba(30, 24, 16, .12);
    --font-display: 'Cormorant Garamond', 'Shippori Mincho', serif;
    --font-serif: 'Shippori Mincho', 'Hiragino Mincho ProN', serif;
    --font-sans: 'Noto Sans JP', -apple-system, BlinkMacSystemFont, sans-serif;
    --muted: var(--ink-muted);
    --bg: var(--paper);
    --text: var(--ink);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

body {
    font-family: var(--font-sans);
    color: var(--ink);
    background: var(--paper);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

/* 紙テクスチャ */
body.magazine-page {
    background-color: var(--paper);
    background-image:
        radial-gradient(ellipse at 20% 0%, rgba(255,255,255,.5) 0%, transparent 50%),
        radial-gradient(ellipse at 80% 100%, rgba(0,0,0,.03) 0%, transparent 40%),
        repeating-linear-gradient(
            0deg,
            transparent,
            transparent 3px,
            rgba(0,0,0,.012) 3px,
            rgba(0,0,0,.012) 4px
        );
}

/* ─── マストヘッド（表紙） ─── */
.masthead {
    position: relative;
    text-align: center;
    padding: 2.5rem 1.5rem 2rem;
    border-bottom: 3px double var(--ink);
    background: linear-gradient(180deg, var(--paper-light) 0%, var(--paper) 100%);
    overflow: hidden;
}

.masthead::before,
.masthead::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--rule);
}
.masthead::before { left: 1.5rem; }
.masthead::after { right: 1.5rem; }

.masthead-meta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-bottom: 1rem;
    font-size: .75rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--ink-muted);
}

.issue-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.2rem;
    height: 3.2rem;
    border: 2px solid var(--primary);
    border-radius: 50%;
    color: var(--primary);
    font-family: var(--font-serif);
    font-weight: 800;
    font-size: .7rem;
    letter-spacing: .05em;
    transform: rotate(-12deg);
    background: #fff;
    box-shadow: var(--shadow-paper);
}

.masthead-date {
    font-variant-numeric: tabular-nums;
}

.masthead-title {
    font-family: var(--font-display);
    font-size: clamp(2.2rem, 7vw, 3.6rem);
    font-weight: 600;
    letter-spacing: .04em;
    line-height: 1.15;
    margin-bottom: .35rem;
}

.masthead-kicker {
    font-size: .8rem;
    letter-spacing: .25em;
    color: var(--ink-muted);
    margin-bottom: 1.25rem;
}

.masthead-brand {
    font-size: .72rem;
    letter-spacing: .18em;
    color: var(--ink-muted);
    margin-bottom: .5rem;
    text-transform: uppercase;
}
.masthead-operator {
    text-transform: none;
    letter-spacing: .06em;
    font-size: .68rem;
}

.footer-service {
    font-size: .78rem;
    color: var(--ink-muted);
    margin-bottom: .35rem;
}

.company-contact-block { font-size: .82rem; color: var(--ink-muted); line-height: 1.65; }
.company-contact-block a { color: var(--primary); }
.company-operator { margin-bottom: .25rem; }
.company-detail { margin: 0 0 .15rem; }
.footer-company { margin: .5rem 0 .75rem; }

.masthead-lead {
    max-width: 36rem;
    margin: 0 auto 1.5rem;
    font-size: .92rem;
    line-height: 1.85;
    color: var(--ink-muted);
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    padding: 1rem 0;
}

.masthead-lead strong {
    color: var(--ink);
    font-weight: 700;
}

.masthead-actions {
    display: flex;
    gap: .75rem;
    justify-content: center;
    flex-wrap: wrap;
}

/* ─── ボタン ─── */
.btn-primary, .btn-outline, .btn-small, .btn-magazine {
    display: inline-block;
    padding: .65rem 1.4rem;
    text-decoration: none;
    font-weight: 700;
    font-size: .85rem;
    letter-spacing: .06em;
    transition: transform .15s, box-shadow .15s;
    cursor: pointer;
    border: none;
}

.btn-primary, .btn-magazine {
    background: var(--ink);
    color: #fff;
    box-shadow: var(--shadow-paper);
}
.btn-primary:hover, .btn-magazine:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-lift);
}

.btn-outline {
    background: transparent;
    color: var(--ink);
    border: 2px solid var(--ink);
}
.btn-outline:hover { background: var(--ink); color: #fff; }

.btn-small {
    padding: .35rem .8rem;
    font-size: .8rem;
    background: var(--primary);
    color: #fff;
}

.masthead .btn-outline {
    border-color: var(--ink);
    color: var(--ink);
}
.masthead .btn-outline:hover {
    background: var(--ink);
    color: #fff;
}

/* ─── 目次ナビ ─── */
.theme-nav {
    display: flex;
    gap: 0;
    padding: 0 1rem;
    overflow-x: auto;
    background: var(--ink);
    position: sticky;
    top: 0;
    z-index: 100;
    scrollbar-width: none;
}
.theme-nav::-webkit-scrollbar { display: none; }

.theme-nav a {
    flex-shrink: 0;
    padding: .85rem 1.1rem;
    text-decoration: none;
    color: rgba(255,255,255,.65);
    font-size: .8rem;
    font-weight: 500;
    letter-spacing: .04em;
    border-bottom: 3px solid transparent;
    transition: color .15s, border-color .15s;
}
.theme-nav a:hover { color: #fff; }
.theme-nav a.active {
    color: #fff;
    border-bottom-color: var(--theme-color, var(--primary));
    background: rgba(255,255,255,.06);
}

.paper-tag-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .5rem;
    padding: .65rem 1rem .75rem;
    background: var(--paper);
    border-bottom: 1px solid var(--line);
}
.paper-tag-nav-label {
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--muted);
    margin-right: .25rem;
}
.paper-tag-nav a.paper-tag-chip {
    display: inline-block;
    padding: .28rem .65rem;
    border-radius: 999px;
    text-decoration: none;
    font-size: .78rem;
    color: var(--ink);
    background: #fff;
    border: 1px solid var(--line);
    transition: background .15s, border-color .15s, color .15s;
}
.paper-tag-nav a.paper-tag-chip:hover {
    border-color: var(--primary);
}
.paper-tag-nav a.paper-tag-chip.active {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
}
.paper-tag-nav > a:not(.paper-tag-chip) {
    font-size: .78rem;
    color: var(--muted);
    text-decoration: none;
    padding: .28rem .5rem;
}
.paper-tag-nav > a:not(.paper-tag-chip).active {
    color: var(--primary);
    font-weight: 600;
}
.paper-tag-filter-note {
    margin: 0;
    padding: 0 1rem .65rem;
    font-size: .78rem;
    color: var(--muted);
    background: var(--paper);
    border-bottom: 1px solid var(--line);
}
.paper-tag-chip--preset {
    border-color: rgba(156, 74, 50, .35);
}
.paper-tag-more {
    display: inline-block;
    position: relative;
}
.paper-tag-more-toggle {
    display: inline-block;
    padding: .28rem .65rem;
    border-radius: 999px;
    font-size: .78rem;
    color: var(--ink);
    background: #fff;
    border: 1px dashed var(--line);
    cursor: pointer;
    list-style: none;
    user-select: none;
}
.paper-tag-more-toggle::-webkit-details-marker {
    display: none;
}
.paper-tag-more[open] .paper-tag-more-toggle {
    border-color: var(--primary);
    color: var(--primary);
}
.paper-tag-more-list {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .5rem;
    margin-top: .45rem;
    padding: .55rem .65rem;
    max-width: min(100vw - 2rem, 520px);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .08);
}

/* ─── メインコンテンツ ─── */
.magazine-main {
    max-width: 1100px;
    margin: 0 auto;
    padding: 2rem 1.25rem 3rem;
}

/* セクション見出し */
.section-head {
    display: flex;
    align-items: baseline;
    gap: .75rem;
    margin-bottom: 1.5rem;
    padding-bottom: .65rem;
    border-bottom: 2px solid var(--ink);
}

.section-head h2 {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: .06em;
}

.section-head .section-no {
    font-family: var(--font-serif);
    font-size: 2rem;
    font-weight: 800;
    color: var(--primary);
    line-height: 1;
    opacity: .85;
}

.section-head .section-desc {
    margin-left: auto;
    font-size: .8rem;
    color: var(--ink-muted);
    max-width: 20rem;
    text-align: right;
    line-height: 1.5;
}

/* ─── 特集 ─── */
.featured-section {
    margin-bottom: 3.5rem;
}
.home-featured-section {
    position: relative;
    padding: 1.25rem 0 0;
}
.home-featured-section::before {
    content: '';
    position: absolute;
    inset: 0 0 auto 0;
    height: 100%;
    background:
        radial-gradient(ellipse at 15% 0%, rgba(232, 197, 71, .18) 0%, transparent 55%),
        radial-gradient(ellipse at 85% 20%, rgba(156, 74, 50, .08) 0%, transparent 45%);
    pointer-events: none;
    border-radius: 4px;
}
.section-head--premium h2 {
    background: linear-gradient(135deg, #8b6914 0%, #c9a227 45%, #8b6914 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    font-size: 1.45rem;
}
.section-no--gold {
    color: #c9a227;
    font-size: 1.1rem;
    border-color: rgba(201, 162, 39, .45);
    background: linear-gradient(180deg, #fff9e8 0%, #f3e4b8 100%);
}

.partner-card--featured {
    border: 2px solid rgba(201, 162, 39, .65);
    box-shadow:
        0 10px 36px rgba(166, 124, 61, .18),
        0 0 0 1px rgba(255, 255, 255, .6) inset,
        var(--shadow-soft);
    position: relative;
    overflow: visible;
}
.partner-card--featured::after {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(135deg, rgba(232,197,71,.35), transparent 40%, rgba(201,162,39,.2));
    animation: premium-card-shimmer 4s ease-in-out infinite;
    z-index: 0;
}
.partner-card--featured > * {
    position: relative;
    z-index: 1;
}
.partner-card--featured:hover {
    transform: translateY(-5px);
    box-shadow:
        0 16px 44px rgba(166, 124, 61, .28),
        0 0 0 1px rgba(255, 255, 255, .7) inset;
}
.partner-premium-ribbon {
    position: absolute;
    top: .85rem;
    right: -.35rem;
    left: auto;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .35rem .55rem .35rem .7rem;
    background: linear-gradient(135deg, #c9a227 0%, #e8c547 50%, #b8860b 100%);
    color: #1f1408;
    font-size: .62rem;
    font-weight: 800;
    letter-spacing: .14em;
    box-shadow: 0 4px 14px rgba(166, 124, 61, .45);
    clip-path: polygon(100% 0, 0 0, 4% 50%, 0 100%, 100% 100%, 96% 50%);
}
.partner-premium-ribbon-icon {
    font-size: .75rem;
    line-height: 1;
}
.partner-avatar-link--featured .partner-avatar {
    width: 52px;
    height: 52px;
    border: 3px solid #e8c547;
    box-shadow: 0 0 0 2px rgba(201, 162, 39, .25), 0 4px 14px rgba(166, 124, 61, .3);
}
.post-single--featured .post-media--home .post-image {
    border-bottom: 3px solid rgba(201, 162, 39, .55);
}

.featured-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1.75rem;
}

.featured-rotator-viewport {
    position: relative;
    min-height: 0;
}
.featured-rotator-track--desktop {
    display: none;
}
.featured-rotator-panel {
    display: none;
}
.featured-rotator-panel.is-active {
    display: block;
    animation: featured-rotator-fade .45s ease;
}
.featured-rotator-panel--row.is-active {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.75rem;
    align-items: stretch;
}
.featured-rotator-dots {
    display: flex;
    justify-content: center;
    gap: .45rem;
    margin-top: 1rem;
}
.featured-rotator-dots--desktop {
    display: none;
}
.featured-rotator-dot {
    width: .55rem;
    height: .55rem;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: rgba(156, 74, 50, .22);
    cursor: pointer;
    transition: transform .15s ease, background .15s ease;
}
.featured-rotator-dot.is-active {
    background: var(--primary);
    transform: scale(1.15);
}
@keyframes featured-rotator-fade {
    from { opacity: .35; }
    to { opacity: 1; }
}
@media (min-width: 641px) {
    .featured-rotator-track--mobile,
    .featured-rotator-dots--mobile {
        display: none;
    }
    .featured-rotator-track--desktop,
    .featured-rotator-dots--desktop {
        display: block;
    }
    .featured-rotator-dots--desktop {
        display: flex;
    }
}
@media (max-width: 640px) {
    .featured-rotator-panel--row.is-active {
        grid-template-columns: 1fr;
    }
}

.featured-card-link {
    text-decoration: none;
    color: inherit;
    display: block;
}

.featured-card {
    background: var(--surface);
    border: 1px solid var(--rule);
    box-shadow: var(--shadow-soft);
    overflow: hidden;
    position: relative;
    transition: transform .25s ease, box-shadow .25s ease;
    height: 100%;
}
.featured-card:has(.post-media--home:hover),
.featured-card:has(.spot-image-link:hover) {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lift);
}

.featured-card-title-link {
    text-decoration: none;
    color: inherit;
}
.featured-card-title-link:hover h3 {
    color: var(--primary);
}

.featured-card::before {
    content: 'PICK UP';
    position: absolute;
    top: .75rem;
    left: .75rem;
    z-index: 2;
    background: var(--accent, var(--primary));
    color: #fff;
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .1em;
    padding: .25rem .55rem;
}

.featured-card .post-media--home .post-image {
    aspect-ratio: unset;
}

.featured-body {
    padding: 1.1rem 1.25rem 1.25rem;
    border-top: 3px solid var(--accent, var(--primary));
}

.featured-body h3 {
    font-family: var(--font-serif);
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: .2rem;
}

/* ─── テーマセクション ─── */
.theme-section {
    margin-bottom: 3.5rem;
    padding: 0;
}

.theme-band {
    background: var(--primary);
    color: #fff;
    padding: .85rem 1.25rem;
    margin-bottom: 1.5rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    box-shadow: var(--shadow-paper);
}

.theme-band h2 {
    font-family: var(--font-serif);
    font-size: 1.35rem;
    font-weight: 700;
    letter-spacing: .1em;
}

.theme-band .theme-desc {
    font-size: .82rem;
    opacity: .9;
    margin-left: auto;
    max-width: 50%;
    text-align: right;
    line-height: 1.5;
}

/* ─── 店舗カード（紙面クリッピング風） ─── */
.partner-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
    gap: 1.75rem;
}

.partner-card {
    background: var(--surface);
    border: 1px solid var(--rule);
    box-shadow: var(--shadow-soft);
    padding: 0;
    overflow: hidden;
    transition: transform .25s ease, box-shadow .25s ease;
}
.partner-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lift);
}

.partner-header {
    padding: 1rem 1.1rem .75rem;
    border-bottom: 1px dashed var(--rule);
}

.partner-header-link {
    text-decoration: none;
    color: inherit;
    display: inline-flex;
    gap: .75rem;
    align-items: center;
    transition: opacity .15s;
}
.partner-header-link:hover {
    opacity: .75;
}

.partner-header-row {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
}

.partner-avatar-link {
    flex-shrink: 0;
    line-height: 0;
    border-radius: 50%;
    transition: opacity .15s, box-shadow .15s;
}
.partner-avatar-link:hover {
    opacity: .85;
    box-shadow: 0 0 0 2px var(--primary);
}

.partner-header-text {
    flex: 1;
    min-width: 0;
}
.partner-header-text h3 {
    margin: 0;
    font-size: 1.05rem;
    line-height: 1.3;
}
.partner-header-text .partner-header-meta {
    margin: .25rem 0 0;
    padding-left: 0;
}

.partner-header-meta {
    margin: .35rem 0 0;
    padding-left: calc(44px + .75rem);
}
.partner-header:not(:has(.partner-avatar)) .partner-header-meta {
    padding-left: 0;
}

.featured-body .partner-header-link {
    margin-bottom: .25rem;
}
.featured-body .partner-header-link h3 {
    font-family: var(--font-serif);
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
    margin: 0;
}

.partner-avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--paper-dark);
}

.partner-header-link h3 {
    font-family: var(--font-serif);
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
    margin: 0;
}

.meta {
    font-size: .78rem;
    color: var(--ink-muted);
    letter-spacing: .02em;
}

.bio {
    font-size: .85rem;
    padding: .6rem 1.1rem;
    color: var(--ink-muted);
    line-height: 1.65;
}

.tags {
    padding: 0 1.1rem .5rem;
}

.tag {
    display: inline-block;
    font-size: .72rem;
    color: var(--primary);
    font-weight: 500;
    margin-right: .35rem;
}

/* ─── 投稿カルーセル ─── */
.post-carousel {
    position: relative;
    background: var(--paper-light);
}

.post-slide:not(.active) {
    display: none !important;
}
.post-slide.active {
    display: block;
}

.spot-image-link {
    display: block;
    overflow: hidden;
    background: var(--paper-dark);
}

.spot-image-link img {
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}

/* 紙面：投稿内の複数画像切り替え */
.post-media--home.post-media {
    position: relative;
    background: var(--paper-dark);
}
.post-media--home .post-media-frame {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: var(--paper-dark);
}
.post-media--home .post-media-frame .post-image,
.post-media--home .post-media-frame .post-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    max-height: none;
}
.post-media--home.has-carousel .carousel-btn {
    display: none;
}
.post-media--home.is-click-advance .post-media-frame {
    cursor: pointer;
}
.post-media--home .media-count-badge {
    position: absolute;
    top: .55rem;
    right: .55rem;
    z-index: 4;
    background: rgba(0, 0, 0, .55);
    color: #fff;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    padding: .2rem .5rem;
    border-radius: 999px;
    line-height: 1.3;
    pointer-events: none;
}
.post-media--home .media-tap-hint {
    position: absolute;
    bottom: .55rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 4;
    background: rgba(0, 0, 0, .45);
    color: #fff;
    font-size: .65rem;
    padding: .15rem .45rem;
    border-radius: 999px;
    line-height: 1.3;
    pointer-events: none;
    white-space: nowrap;
}
.post-media--home.has-carousel .post-media-dots {
    display: none;
}
.featured-card .post-media--home {
    border-bottom: 1px solid var(--rule);
}

.post-slide .caption {
    font-size: .8rem;
    padding: .7rem 1.1rem .15rem;
    color: var(--ink-muted);
    line-height: 1.65;
    word-break: break-word;
}

.post-slide .caption a.caption-link--btn,
.post-single .caption a.caption-link--btn {
    display: inline-block;
    margin: .15rem .2rem .15rem 0;
    font-size: .72rem;
    padding: .25rem .55rem;
    text-decoration: none;
}
.spot-caption a.caption-link--btn {
    display: inline-block;
    margin: .2rem .25rem .2rem 0;
    font-size: .78rem;
    padding: .3rem .65rem;
}
.post-slide .caption a.caption-link {
    color: var(--primary);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
    cursor: pointer;
}

.post-single .caption {
    font-size: .8rem;
    padding: .7rem 1.1rem .15rem;
    color: var(--ink-muted);
    line-height: 1.65;
    word-break: break-word;
}

.post-single .caption a.caption-link {
    color: var(--primary);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.carousel-dots {
    display: flex;
    justify-content: center;
    gap: .35rem;
    padding: .35rem 1rem .75rem;
}

.post-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .35rem 1.1rem .85rem;
    flex-wrap: wrap;
}

.post-actions .caption-url-btn {
    margin: 0;
}

.home-feed-actions {
    align-items: center;
    gap: .65rem;
}
.home-feed-actions .like-btn {
    flex-shrink: 0;
}

.post-stats {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem .75rem;
    padding: .35rem 1.1rem .15rem;
    margin: 0;
    font-size: .72rem;
    color: var(--ink-muted);
}
.post-stat {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    white-space: nowrap;
}
.post-stat-label {
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .04em;
    opacity: .75;
}
.post-stat-ig {
    color: var(--ink);
}

.caption-url-btn {
    display: inline-block;
    padding: .45rem .95rem;
    background: var(--ink);
    color: #fff !important;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .03em;
    text-decoration: none;
    transition: opacity .15s, background .15s;
}
.caption-url-btn:hover { background: var(--primary); }

.caption-url-btn--premium {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: .72rem 1.2rem;
    min-height: 2.75rem;
    font-size: .86rem;
    font-weight: 800;
    letter-spacing: .04em;
    color: #1f1408 !important;
    background: linear-gradient(135deg, #f0d878 0%, #e8c547 38%, #c9a227 72%, #b8860b 100%);
    border: 2px solid rgba(255, 255, 255, .55);
    border-radius: 999px;
    box-shadow:
        0 4px 18px rgba(166, 124, 61, .42),
        inset 0 1px 0 rgba(255, 255, 255, .45);
    position: relative;
    overflow: hidden;
    animation: premium-btn-glow 2.8s ease-in-out infinite;
}
.caption-url-btn--premium::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%);
    transform: translateX(-120%);
    animation: premium-btn-shine 3.5s ease-in-out infinite;
}
.caption-url-btn--premium:hover {
    background: linear-gradient(135deg, #f5e08a 0%, #edd35a 38%, #d4ad30 72%, #c49418 100%);
    transform: translateY(-1px);
    box-shadow:
        0 6px 22px rgba(166, 124, 61, .5),
        inset 0 1px 0 rgba(255, 255, 255, .5);
}
.caption-url-btn--premium:active {
    transform: translateY(0);
}
.caption-url-btn--compact {
    padding: .5rem .85rem;
    min-height: 2.2rem;
    font-size: .76rem;
}
.premium-link-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.35rem;
    height: 1.35rem;
    border-radius: 50%;
    background: rgba(31, 20, 8, .12);
}
.premium-link-icon svg {
    width: 1rem;
    height: 1rem;
}
.premium-link-label {
    position: relative;
    z-index: 1;
}
.home-feed-actions--premium {
    padding-top: .15rem;
}
.home-feed-actions--premium .caption-url-btn--premium {
    flex: 1 1 100%;
    width: 100%;
    max-width: 100%;
}

@keyframes premium-btn-glow {
    0%, 100% { box-shadow: 0 4px 18px rgba(166, 124, 61, .38), inset 0 1px 0 rgba(255, 255, 255, .45); }
    50% { box-shadow: 0 6px 26px rgba(232, 197, 71, .55), inset 0 1px 0 rgba(255, 255, 255, .55); }
}
@keyframes premium-btn-shine {
    0%, 35% { transform: translateX(-120%); }
    55%, 100% { transform: translateX(120%); }
}
@keyframes premium-card-shimmer {
    0%, 100% { opacity: .55; }
    50% { opacity: .9; }
}
@keyframes marker-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.06); }
}

.caption-expand {
    font-size: inherit;
    line-height: 1.75;
    color: var(--ink-muted);
    word-break: break-word;
}
.caption-expand-summary {
    list-style: none;
    cursor: pointer;
}
.caption-expand-summary::-webkit-details-marker {
    display: none;
}
.caption-expand-preview,
.caption-expand-full {
    margin: 0;
}
.caption-expand-toggle {
    display: block;
    margin-top: .35rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--primary);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.caption-expand-toggle::after {
    content: '続きを見る';
}
.caption-expand[open] .caption-expand-preview {
    display: none;
}
.caption-expand[open] .caption-expand-toggle::after {
    content: '閉じる';
}
.caption-expand:not([open]) .caption-expand-full {
    display: none;
}
.partner-card .caption-expand,
.featured-body .caption-expand,
.ig-post-body .caption-expand,
.popup-caption .caption-expand {
    font-size: .82rem;
}

.card-more,
.card-more-inline {
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--primary);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color .15s;
}
.card-more-inline:hover,
.card-more:hover { border-bottom-color: var(--primary); }

.featured-body .card-more {
    display: inline-block;
    margin-top: .65rem;
}

/* Instagram への導線は最小限 */
.ig-source-link {
    font-size: .62rem;
    color: var(--ink-muted);
    text-decoration: none;
    opacity: .45;
    letter-spacing: .02em;
    padding: .15rem .35rem;
    border: 1px solid var(--rule);
    border-radius: 2px;
    transition: opacity .15s;
    white-space: nowrap;
}
.ig-source-link:hover {
    opacity: .75;
    color: var(--ink-muted);
}

.post-placeholder {
    padding: 2rem 1.1rem !important;
    background: var(--paper-light) !important;
    border-radius: 0 !important;
    text-align: center;
    color: var(--ink-muted);
    font-size: .85rem;
    border-top: 1px dashed var(--rule);
}

/* ─── 空状態 ─── */
.empty-state {
    text-align: center;
    padding: 4rem 1.5rem;
    border: 2px dashed var(--rule);
    background: rgba(255,255,255,.5);
}

.empty-state p {
    font-family: var(--font-serif);
    font-size: 1.1rem;
    margin-bottom: .5rem;
}

.empty-state .hint {
    font-size: .88rem;
    color: var(--ink-muted);
}

/* ─── フッター（奥付） ─── */
.site-footer {
    text-align: center;
    padding: 2.5rem 1.5rem;
    border-top: 3px double var(--ink);
    background: var(--paper-light);
    color: var(--ink-muted);
    font-size: .8rem;
}

.site-footer .footer-note {
    max-width: 36rem;
    margin: .35rem auto 0;
    font-size: .68rem;
    line-height: 1.5;
    color: var(--ink-muted);
}
.site-footer .footer-brand {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: .5rem;
    letter-spacing: .08em;
}

.site-footer .footer-links {
    margin-top: .75rem;
}

.site-footer a {
    color: var(--ink);
    text-decoration: none;
    margin: 0 .5rem;
    font-weight: 500;
    border-bottom: 1px solid transparent;
}
.site-footer a:hover { border-bottom-color: var(--ink); }

.tm-push-toggle {
    display: inline-block;
    margin: 0 .5rem;
    border: 1px solid var(--rule);
    background: var(--surface);
    color: var(--ink);
    font-size: .78rem;
    font-weight: 700;
    padding: .35rem .75rem;
    border-radius: 999px;
    cursor: pointer;
}
.tm-push-toggle[data-state="on"] {
    background: var(--ink);
    color: #fff;
    border-color: var(--ink);
}
.tm-push-toggle[data-state="denied"] {
    opacity: .55;
    cursor: not-allowed;
}
.tm-push-toggle--fab {
    position: fixed;
    right: .75rem;
    bottom: calc(4.1rem + env(safe-area-inset-bottom, 0px));
    z-index: 90;
    margin: 0;
    box-shadow: 0 4px 16px rgba(0,0,0,.14);
    background: rgba(252, 250, 246, .96);
    backdrop-filter: blur(8px);
}
.tm-push-toggle--fab[data-state="on"] {
    background: var(--ink);
    color: #fff;
}
@media (min-width: 900px) {
    .tm-push-toggle--fab { bottom: 1.25rem; }
}

/* ─── 掲載のしかた（リボン） ─── */
.how-to-strip {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1.25rem 1.5rem;
}

.how-to-box {
    background: #fff;
    border: 1px solid var(--rule);
    border-left: 4px solid var(--primary);
    padding: 1.1rem 1.25rem;
    box-shadow: var(--shadow-paper);
}
.how-to-box h2, .how-to-box h3 {
    font-family: var(--font-serif);
    font-size: .95rem;
    margin-bottom: .5rem;
}
.how-to-box ol {
    padding-left: 1.2rem;
    margin: .4rem 0;
    font-size: .85rem;
}
.how-to-box li { margin-bottom: .3rem; }
.how-to-box .hint { font-size: .8rem; color: var(--ink-muted); margin-top: .5rem; }

.hint { font-size: .8rem; color: var(--ink-muted); }

.highlight-link-tip {
    background: var(--paper-light);
    padding: .6rem .8rem;
    border-left: 3px solid var(--accent-gold);
    margin-top: .75rem;
    font-size: .85rem;
}

/* ─── マップ ─── */
.map-page {
    margin: 0;
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
}

.map-viewport {
    flex: 1;
    min-height: 0;
    position: relative;
    width: 100%;
}

.map-controls-layer {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1100;
    pointer-events: none;
    padding: .35rem .5rem 0;
    padding-top: max(.35rem, env(safe-area-inset-top, 0px));
}
.map-page .map-controls-layer {
    padding-right: max(3.1rem, calc(.5rem + env(safe-area-inset-right, 0px) + 2.2rem));
}
.map-controls-panel {
    pointer-events: auto;
    background: rgba(252, 250, 246, .94);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(44, 36, 22, .12);
    border-radius: 14px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .14);
    max-width: 520px;
    overflow: hidden;
}
/* 折りたたみ時は細いバーにしてマップを広く見せる */
.map-controls-panel.is-collapsed {
    max-width: min(280px, calc(100% - .25rem));
    border-radius: 999px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    background: rgba(252, 250, 246, .88);
}
.map-controls-panel.is-collapsed .map-controls-head {
    padding: .12rem .2rem .12rem .12rem;
    border-bottom: 0;
    gap: .2rem;
}
.map-controls-panel.is-collapsed .map-back-link.map-icon-btn {
    width: 1.85rem;
    min-height: 1.85rem;
    border-radius: 999px;
}
.map-controls-panel.is-collapsed .map-back-link.map-icon-btn .tm-ui-icon {
    width: .95rem;
    height: .95rem;
}
.map-controls-panel.is-collapsed .site-controls-toggle {
    min-height: 1.85rem;
    padding: .12rem .45rem .12rem .3rem;
    flex-direction: row;
    gap: .25rem;
    border: 0;
    background: transparent;
    border-radius: 999px;
}
.map-controls-panel.is-collapsed .site-controls-handle-bar {
    display: none;
}
.map-controls-panel.is-collapsed .site-controls-summary {
    font-size: .68rem;
    gap: .25rem;
}
.map-controls-panel.is-collapsed .site-controls-toggle-icons {
    gap: 0;
}
.map-controls-panel.is-collapsed .site-controls-toggle-icon,
.map-controls-panel.is-collapsed .site-controls-chevron {
    width: .9rem;
    height: .9rem;
}
.map-controls-panel.is-collapsed .site-controls-toggle-hint {
    display: none;
}
.site-controls-head {
    display: flex;
    align-items: stretch;
    gap: .35rem;
}
.site-controls-toggle {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .18rem;
    padding: .38rem .5rem .42rem;
    border: 0;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    color: inherit;
    min-height: 2.55rem;
    -webkit-tap-highlight-color: transparent;
}
.site-controls-handle-bar {
    display: block;
    width: 2.75rem;
    height: 4px;
    border-radius: 999px;
    background: rgba(44, 36, 22, .24);
    flex-shrink: 0;
}
.site-controls-summary {
    display: none;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    font-size: .76rem;
    font-weight: 700;
    font-family: var(--font-serif);
    line-height: 1.2;
}
.site-controls-panel.is-collapsed .site-controls-summary {
    display: flex;
}
.site-controls-toggle-icons {
    display: inline-flex;
    align-items: center;
    gap: .15rem;
    color: var(--ink-muted);
}
.site-controls-toggle-icon {
    width: 1rem;
    height: 1rem;
}
.site-controls-chevron {
    width: 1.1rem;
    height: 1.1rem;
    transition: transform .22s ease;
}
.site-controls-panel:not(.is-collapsed) .site-controls-chevron {
    transform: rotate(180deg);
}
.site-controls-toggle-hint {
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .08em;
    color: var(--ink-muted);
    line-height: 1;
}
.map-controls-head {
    padding: .35rem .45rem .4rem;
    border-bottom: 1px solid rgba(0, 0, 0, .06);
}
.map-controls-head .site-controls-toggle {
    border: 1px solid rgba(44, 36, 22, .1);
    border-radius: 10px;
    background: rgba(255, 255, 255, .58);
}
.map-back-link.map-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.55rem;
    min-height: 2.55rem;
    flex-shrink: 0;
    border: 1px solid var(--rule);
    border-radius: 10px;
    background: var(--paper-light);
    color: var(--ink);
    text-decoration: none;
}
.map-back-link.map-icon-btn:active { background: var(--paper-dark); }
.map-controls-body {
    max-height: min(52vh, 380px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
.site-controls-panel.is-collapsed .site-controls-body {
    display: none;
}

.paper-controls-panel {
    position: relative;
    z-index: 95;
    background: var(--surface);
    border-bottom: 1px solid var(--rule);
}
.paper-controls-head {
    position: sticky;
    top: 0;
    z-index: 96;
    padding: 0 .35rem;
    border-bottom: 1px solid transparent;
    background: rgba(255, 255, 255, .97);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.paper-controls-panel:not(.is-collapsed) .paper-controls-head {
    border-bottom-color: var(--rule);
}
.paper-controls-panel .site-controls-toggle {
    width: 100%;
}
.paper-controls-panel .issue-bar {
    position: static;
    top: auto;
    z-index: auto;
    box-shadow: none;
    padding-right: 1rem;
}
.paper-controls-panel .theme-nav {
    position: static;
    top: auto;
    z-index: auto;
}

.map-page .leaflet-bottom.leaflet-left {
    bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px) + .5rem);
    left: .5rem;
}
.map-page .leaflet-control-zoom {
    border: none !important;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18) !important;
}

.map-page .issue-bar {
    position: static;
    top: auto;
    z-index: auto;
    padding: .45rem .65rem .5rem;
    background: transparent;
    border-bottom: 1px solid var(--rule);
    box-shadow: none;
}
.map-page .issue-freq-tabs {
    margin-bottom: .4rem;
}
.map-page .issue-freq-tab {
    padding: .32rem .35rem;
    font-size: .68rem;
}
.map-page .issue-label {
    font-size: .78rem;
}
.map-page .issue-arrow {
    width: 2rem;
    height: 2rem;
    font-size: 1rem;
}

.map-view-tabs {
    display: flex;
    gap: .35rem;
    padding: .4rem .65rem;
    background: transparent;
    border-bottom: 1px solid var(--rule);
}
.map-view-tab {
    flex: 1;
    text-align: center;
    padding: .42rem .5rem;
    font-size: .72rem;
    font-weight: 700;
    border: 1px solid var(--rule);
    background: var(--paper-light);
    color: var(--ink-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: background .15s, color .15s, border-color .15s;
}
.map-view-tab--icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .45rem;
    min-height: 2.45rem;
}
.map-view-tab-icon {
    width: 1.15rem;
    height: 1.15rem;
}
.map-view-tab.active {
    background: var(--ink);
    color: #fff;
    border-color: var(--ink);
}

.map-filter-bar {
    padding: .45rem .65rem .55rem;
    background: transparent;
    border: none;
}
.map-filter-row {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    margin-bottom: .4rem;
}
.map-filter-row:last-of-type {
    margin-bottom: 0;
}
.map-filter-label {
    flex-shrink: 0;
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .08em;
    color: var(--ink-muted);
    padding-top: .32rem;
    min-width: 3rem;
}
.map-filter-label--icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.85rem;
    padding-top: .28rem;
}
.map-filter-label-icon {
    width: 1rem;
    height: 1rem;
}
.map-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
    flex: 1;
    min-width: 0;
}
.map-filter-chip {
    border: 1px solid var(--rule);
    background: rgba(255, 255, 255, .88);
    color: var(--ink);
    font-size: .68rem;
    font-weight: 600;
    padding: .24rem .55rem;
    border-radius: 999px;
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s, border-color .15s, color .15s;
}
.map-filter-chip:hover {
    border-color: var(--chip-color, var(--primary));
    color: var(--chip-color, var(--primary));
}
.map-filter-chip--preset {
    border-color: rgba(156, 74, 50, .35);
}
.map-filter-chips--tags {
    align-items: center;
}
.map-tag-select-wrap {
    display: inline-flex;
    align-items: center;
}
.map-tag-select {
    max-width: 9.5rem;
    padding: .32rem .55rem;
    border-radius: 999px;
    border: 1px dashed var(--line);
    background: #fff;
    font-size: .76rem;
    color: var(--ink);
    cursor: pointer;
}
.map-tag-select:focus {
    outline: 2px solid rgba(156, 74, 50, .35);
    border-color: var(--primary);
}
.map-filter-chip.active {
    background: var(--chip-color, var(--primary));
    border-color: var(--chip-color, var(--primary));
    color: #fff;
}
.map-filter-chip--icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .3rem .42rem;
    min-width: 2rem;
    min-height: 2rem;
}
.map-filter-chip-icon {
    width: 1rem;
    height: 1rem;
}
.map-filter-count {
    margin: .35rem 0 0;
    font-size: .62rem;
    color: var(--ink-muted);
    text-align: right;
}
.map-virtual-hint {
    margin: .2rem 0 0;
    font-size: .6rem;
    color: var(--ink-muted);
    text-align: right;
    line-height: 1.35;
}

/* legacy header removed — back link lives in overlay */
.map-header {
    display: none;
}

#map,
.map-virtual-scroll {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.map-virtual-scroll {
    display: none;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    background: var(--paper-light);
}
.map-page--view-virtual .map-virtual-scroll {
    display: block;
}
.map-page--view-virtual #map {
    display: none;
}
.map-page--view-geo #map {
    display: block;
}
.map-page--view-geo .map-virtual-scroll {
    display: none;
}
.map-virtual-empty {
    padding: 2rem 1rem;
    text-align: center;
    color: var(--ink-muted);
    font-size: .85rem;
}

.map-virtual-canvas {
    position: relative;
    min-height: 100%;
    overflow: hidden;
    background: transparent;
}
.map-virtual-bg {
    position: absolute;
    left: 0;
    right: 0;
    top: -15vh;
    z-index: 0;
    pointer-events: none;
    will-change: transform;
    background-size: cover;
    background-position: center top;
    background-repeat: no-repeat;
}
.map-virtual-canvas--has-bg .map-virtual-bg {
    background-image: var(--virtual-map-bg-image);
}
.map-virtual-canvas--fallback-bg .map-virtual-bg {
    background: linear-gradient(165deg, #e8e2d8 0%, #f3ede4 42%, #ddd4c8 100%);
}
.map-virtual-icons {
    position: relative;
    width: 100%;
    min-height: inherit;
    z-index: 1;
}
.map-virtual-icon {
    position: absolute;
    transform: translate(-50%, -50%);
    display: block;
    padding: 0;
    border: none;
    background: none;
    cursor: pointer;
    filter: drop-shadow(0 2px 8px rgba(0,0,0,.4));
    transition: transform .15s, filter .15s;
}
.map-virtual-icon.is-active {
    filter: drop-shadow(0 0 0 3px rgba(255,255,255,.85)) drop-shadow(0 4px 12px rgba(0,0,0,.45));
    transform: translate(-50%, -50%) scale(1.06);
    z-index: 2;
}
.map-virtual-icon:active {
    transform: translate(-50%, -50%) scale(.94);
}
.map-virtual-icon.is-active:active {
    transform: translate(-50%, -50%) scale(1.02);
}
.map-virtual-icon-img {
    display: block;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: 3px solid var(--pin-color, var(--primary));
    object-fit: cover;
    background: var(--surface);
}
.map-virtual-icon--ghost .map-virtual-icon-img,
.map-virtual-icon--ghost .map-virtual-icon-dot {
    border-style: dashed;
    opacity: .95;
}
.map-virtual-icon-dot {
    display: block;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--pin-color, var(--primary));
    border: 3px solid #fff;
}

.map-virtual-bubble {
    position: fixed;
    z-index: 1200;
    width: min(320px, calc(100vw - 2rem));
    max-height: min(70vh, 520px);
    overflow-y: auto;
    overflow-x: hidden;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 10px 36px rgba(0,0,0,.28);
    border: 1px solid var(--rule);
    padding: .65rem .75rem .75rem;
}
.map-virtual-bubble[hidden] {
    display: none !important;
}
.map-virtual-bubble-close {
    position: absolute;
    top: .35rem;
    right: .4rem;
    z-index: 2;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 50%;
    background: rgba(0,0,0,.06);
    color: var(--ink);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
}
.map-virtual-bubble-close:hover {
    background: rgba(0,0,0,.1);
}
.map-virtual-bubble-body .ig-popup {
    min-width: 0;
}
.map-virtual-bubble-body .popup-image {
    max-height: 220px;
    object-fit: cover;
    width: 100%;
}

.marker-icon--virtual {
    box-shadow: 0 0 0 2px rgba(255,255,255,.85), 0 2px 8px rgba(0,0,0,.25) !important;
}
.ig-popup .popup-virtual-badge {
    display: inline-block;
    margin-left: .35rem;
    font-size: .62rem;
    font-weight: 600;
    color: var(--ink-muted);
    letter-spacing: .03em;
}

#picker-map { height: 250px; border-radius: 2px; margin: .5rem 0 1rem; border: 1px solid var(--rule); }

.ig-popup { min-width: 220px; }
.ig-popup .popup-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid var(--paper-dark); }
.ig-popup .popup-avatar-link {
    flex-shrink: 0;
    line-height: 0;
    border-radius: 50%;
    transition: opacity .15s, box-shadow .15s;
}
.ig-popup .popup-avatar-link:hover {
    opacity: .9;
    box-shadow: 0 0 0 2px var(--primary);
}
.ig-popup .popup-header { display: flex; gap: .5rem; align-items: center; margin-bottom: .5rem; }
.ig-popup .popup-image { width: 100%; border-radius: 2px; margin: .5rem 0; }
.ig-popup .popup-caption { font-size: .85rem; color: #555; }
.ig-popup .popup-dots { text-align: center; margin-top: .5rem; }
.ig-popup .dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #ccc;
    margin: 0 2px;
    cursor: pointer;
}
.ig-popup .dot.active { background: var(--primary, #c41e3a); }
.ig-popup .popup-caption a.caption-link { color: var(--primary); font-weight: 600; }
.ig-popup .popup-name-link { color: inherit; text-decoration: none; }
.ig-popup .popup-name-link:hover strong { color: var(--primary); }
.ig-popup .popup-image-wrap { display: block; }
.ig-popup .popup-image-link { display: block; }
.ig-popup .popup-media-carousel { margin: .5rem 0; }
.ig-popup .popup-image-stage {
    position: relative;
    line-height: 0;
    cursor: pointer;
    border-radius: 4px;
    overflow: hidden;
    background: #111;
}
.ig-popup .popup-image-stage .popup-image {
    width: 100%;
    margin: 0;
    display: block;
    border-radius: 0;
}
.ig-popup .popup-post-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    width: 2.15rem;
    height: 2.15rem;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .92);
    color: var(--ink);
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .22);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s, transform .15s;
}
.ig-popup .popup-post-nav:hover {
    background: #fff;
    transform: translateY(-50%) scale(1.05);
}
.ig-popup .popup-post-nav--prev { left: .4rem; }
.ig-popup .popup-post-nav--next { right: .4rem; }
.ig-popup .popup-post-counter {
    position: absolute;
    top: .45rem;
    right: .45rem;
    z-index: 2;
    padding: .2rem .5rem;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: #fff;
    background: rgba(0, 0, 0, .55);
    border-radius: 999px;
}
.ig-popup .popup-post-hint {
    position: absolute;
    left: 0;
    right: 0;
    bottom: .4rem;
    z-index: 2;
    text-align: center;
    font-size: .62rem;
    font-weight: 600;
    letter-spacing: .04em;
    color: rgba(255, 255, 255, .92);
    text-shadow: 0 1px 4px rgba(0, 0, 0, .65);
    pointer-events: none;
}
.ig-popup .popup-actions {
    display: flex;
    gap: .5rem;
    align-items: center;
    flex-wrap: wrap;
    margin: .5rem 0;
}
.ig-popup .popup-spot-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .5rem .9rem;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .03em;
    text-decoration: none;
    color: var(--ink);
    background: var(--paper-light);
    border: 1px solid var(--rule);
    border-radius: 999px;
    transition: background .15s, border-color .15s, color .15s;
}
.ig-popup .popup-spot-link:hover {
    background: #fff;
    border-color: var(--primary);
    color: var(--primary);
}
.ig-popup .popup-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: .35rem;
    padding-top: .35rem;
    border-top: 1px dashed var(--rule);
}
.ig-popup .caption-url-btn { margin: 0; font-size: .7rem; padding: .35rem .7rem; }

/* ─── スポット詳細ページ ─── */
.spot-page { background: var(--paper-light); }

.spot-topbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: .85rem 1.25rem;
    background: rgba(252, 250, 246, .92);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--rule);
    position: sticky;
    top: 0;
    z-index: 50;
}

.spot-back,
.spot-map-link {
    font-size: .82rem;
    font-weight: 600;
    color: var(--ink);
    text-decoration: none;
    letter-spacing: .03em;
}
.spot-back:hover,
.spot-map-link:hover { color: var(--primary); }

.spot-article {
    max-width: 720px;
    margin: 0 auto;
    padding: 2rem 1.25rem 3rem;
}

.spot-hero {
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--rule);
}

.spot-avatar {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--paper-dark);
    flex-shrink: 0;
}

.spot-avatar-link {
    flex-shrink: 0;
    line-height: 0;
    border-radius: 50%;
    transition: opacity .15s, box-shadow .15s;
}
.spot-avatar-link:hover {
    opacity: .9;
    box-shadow: 0 0 0 2px var(--spot-accent, var(--primary));
}

.spot-theme {
    display: inline-block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--spot-accent, var(--primary));
    margin-bottom: .35rem;
}

.spot-identity h1 {
    font-family: var(--font-display);
    font-size: clamp(1.6rem, 5vw, 2.2rem);
    font-weight: 600;
    line-height: 1.2;
    margin-bottom: .25rem;
}

.spot-meta {
    font-size: .85rem;
    color: var(--ink-muted);
}

.spot-bio {
    margin-top: .75rem;
    font-size: .88rem;
    line-height: 1.75;
    color: var(--ink-muted);
}

.spot-tags {
    margin-top: .65rem;
}
.spot-tags span {
    font-size: .75rem;
    color: var(--primary);
    margin-right: .5rem;
}

.spot-media-wrap {
    background: var(--surface);
    border: 1px solid var(--rule);
    box-shadow: var(--shadow-paper);
    margin-bottom: 1.25rem;
}

/* 詳細ページ：画像全体を表示（1枚ずつ） */
.spot-media-wrap .post-media {
    position: relative;
    background: var(--paper-dark);
    width: 100%;
}
.spot-media-wrap .post-media-frame {
    display: block;
    width: 100%;
    text-align: center;
    line-height: 0;
}
.spot-media-wrap .post-media-frame .post-image,
.spot-media-wrap .post-media-frame .post-video {
    display: inline-block;
    vertical-align: top;
    max-width: 100%;
    width: auto;
    height: auto;
    max-height: min(85vh, 960px);
}
.spot-media-wrap .post-media-frame .media-type-badge {
    line-height: normal;
}
.media-type-badge {
    position: absolute;
    top: .75rem;
    left: .75rem;
    background: rgba(0,0,0,.55);
    color: #fff;
    font-size: .72rem;
    padding: .2rem .5rem;
    border-radius: 999px;
}
.carousel-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 2.75rem;
    height: 2.75rem;
    border: none;
    border-radius: 50%;
    background: rgba(255,255,255,.92);
    color: var(--ink);
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
    box-shadow: var(--shadow-soft);
    z-index: 5;
}
.carousel-prev { left: .5rem; }
.carousel-next { right: .5rem; }
.post-media .carousel-dots {
    position: absolute;
    bottom: .65rem;
    left: 0;
    right: 0;
    display: flex;
    justify-content: center;
    gap: .35rem;
    padding: 0;
    z-index: 5;
}
.post-media .carousel-dot {
    width: .55rem;
    height: .55rem;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: rgba(255,255,255,.45);
    cursor: pointer;
}
.post-media .carousel-dot.active {
    background: #fff;
}

.spot-caption-block {
    background: var(--surface);
    border: 1px solid var(--rule);
    padding: 1.25rem 1.35rem;
    box-shadow: var(--shadow-soft);
}

.spot-caption {
    font-size: .92rem;
    line-height: 1.85;
    color: var(--ink);
    word-break: break-word;
}
.spot-caption a.caption-link {
    color: var(--primary);
    font-weight: 600;
}

.spot-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1.1rem;
    padding-top: 1rem;
    border-top: 1px dashed var(--rule);
    flex-wrap: wrap;
}

.spot-actions-primary {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
}

.btn-spot-outline {
    display: inline-block;
    padding: .45rem .95rem;
    font-size: .72rem;
    font-weight: 600;
    color: var(--ink);
    border: 1px solid var(--ink);
    text-decoration: none;
    transition: background .15s, color .15s;
}
.btn-spot-outline:hover {
    background: var(--ink);
    color: #fff;
}

.spot-gallery {
    margin-top: 2.5rem;
}
.spot-gallery h2 {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 1rem;
    letter-spacing: .06em;
}

.spot-thumbs {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
    gap: .5rem;
}

.spot-thumb {
    display: block;
    border: 2px solid transparent;
    overflow: hidden;
    aspect-ratio: 1;
    transition: border-color .15s, opacity .15s;
    opacity: .75;
}
.spot-thumb:hover,
.spot-thumb.active {
    border-color: var(--spot-accent, var(--primary));
    opacity: 1;
}
.spot-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.spot-empty {
    text-align: center;
    padding: 3rem 1.5rem;
    border: 1px dashed var(--rule);
    background: var(--surface);
}

.spot-footer {
    margin-top: 0;
}

.carousel-dots .dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--rule);
    border: none;
    padding: 0;
    cursor: pointer;
    transition: background .15s, transform .15s;
}
.carousel-dots .dot.active {
    background: var(--ink);
    transform: scale(1.3);
}

/* ─── 管理画面（既存互換） ─── */
.site-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 2rem;
    background: #fff;
    border-bottom: 1px solid var(--rule);
}
.site-header .logo {
    font-weight: 700;
    font-size: 1.2rem;
    color: var(--primary);
    text-decoration: none;
    font-family: var(--font-serif);
}
.site-header nav a { margin-left: 1rem; color: var(--text); text-decoration: none; }

.dashboard-page { background: var(--paper-light); }
.dashboard { max-width: 1100px; margin: 0 auto; padding: 2rem 1rem; }
.dashboard-hero { display: flex; gap: 1rem; align-items: center; margin-bottom: 2rem; }
.avatar { width: 64px; height: 64px; border-radius: 50%; }
.status-badge { display: inline-block; padding: .2rem .6rem; border-radius: 2px; font-size: .8rem; }
.status-active { background: #d4edda; color: #155724; }
.status-pending { background: #fff3cd; color: #856404; }
.dashboard-grid { display: grid; grid-template-columns: 1fr 340px; gap: 1.5rem; }
@media (max-width: 768px) { .dashboard-grid { grid-template-columns: 1fr; } }

.card {
    background: #fff;
    border: 1px solid var(--rule);
    padding: 1.5rem;
    box-shadow: var(--shadow-paper);
}
.card h2, .card h3 { margin-bottom: 1rem; font-family: var(--font-serif); }
.card label { display: block; margin-top: .75rem; font-size: .9rem; font-weight: 600; }
.card input, .card select, .card textarea {
    width: 100%;
    padding: .6rem;
    border: 1px solid var(--rule);
    border-radius: 2px;
    margin-top: .25rem;
    font-family: var(--font-sans);
}
.coord-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.notice.success { background: #e8f5e9; padding: .75rem; border-left: 3px solid #2e7d32; margin-bottom: 1rem; font-size: .9rem; }
.premium-list { list-style: none; }
.premium-list li { padding: .6rem 0; border-bottom: 1px solid var(--rule); display: flex; justify-content: space-between; align-items: center; }
.premium-list li.active { color: #155724; }

.premium-section {
    border: 1px solid rgba(201, 162, 39, .35);
    background:
        linear-gradient(180deg, rgba(255, 249, 232, .65) 0%, var(--surface) 120px),
        var(--surface);
    padding: 1.5rem !important;
    box-shadow: 0 8px 32px rgba(166, 124, 61, .12);
}
.premium-section h2 {
    font-family: var(--font-serif);
    margin-bottom: .25rem;
    background: linear-gradient(135deg, #8b6914, #c9a227);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.premium-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
}

.premium-card {
    border: 1px solid var(--rule);
    padding: 1.1rem;
    background: var(--paper-light);
    display: flex;
    flex-direction: column;
    gap: .5rem;
}
.premium-card.is-active {
    border-color: var(--primary);
    background: #fff;
}

.premium-card h3 {
    font-family: var(--font-serif);
    font-size: .95rem;
    font-weight: 600;
}

.premium-price {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--ink);
}
.premium-price span {
    font-size: .75rem;
    font-weight: 500;
    color: var(--ink-muted);
}

.premium-desc {
    font-size: .78rem;
    color: var(--ink-muted);
    line-height: 1.55;
    flex: 1;
}

.premium-status {
    font-size: .75rem;
    color: #2e7d32;
    font-weight: 600;
}

.premium-unavail {
    font-size: .75rem;
    color: var(--ink-muted);
}

.partner-plans-lead { margin-bottom: 1.25rem; line-height: 1.6; }
.partner-plans-tax { font-size: .78rem; color: var(--ink-muted); font-weight: 400; }
.partner-plans-subhead {
    font-family: var(--font-serif);
    font-size: .95rem;
    margin: 1.5rem 0 .75rem;
    font-weight: 600;
}
.partner-plans-section .partner-plans-subhead:first-of-type { margin-top: 0; }

.premium-grid--bundles {
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}

.premium-card--bundle {
    border-width: 2px;
    border-color: rgba(201, 162, 39, .45);
    background: linear-gradient(180deg, #fffdf6 0%, var(--surface) 100%);
    position: relative;
    padding-top: 1.75rem;
}

.premium-badge {
    position: absolute;
    top: .65rem;
    right: .65rem;
    font-size: .65rem;
    font-weight: 800;
    letter-spacing: .08em;
    padding: .22rem .55rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #f0d878, #e8c547);
    color: #1f1408;
    box-shadow: 0 2px 8px rgba(166, 124, 61, .25);
}

.premium-save {
    font-size: .72rem;
    font-weight: 700;
    color: #c0392b;
    margin-top: -.25rem;
}

.premium-includes {
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: .75rem;
    color: var(--ink-muted);
    line-height: 1.5;
}
.premium-includes li::before { content: '· '; }

.premium-note { font-size: .72rem; margin-top: -.15rem; }

.post-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.post-thumbs img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 2px; }

.marker-large { width: 68px !important; height: 68px !important; }
.marker-normal { width: 40px !important; height: 40px !important; }
.marker-premium-wrap {
    overflow: visible !important;
}
.marker-pin {
    position: relative;
    display: inline-block;
    line-height: 0;
}
.marker-pin--premium {
    animation: marker-pulse 2.6s ease-in-out infinite;
}
.marker-premium-badge {
    position: absolute;
    top: -6px;
    right: -6px;
    z-index: 2;
    width: 22px;
    height: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: linear-gradient(135deg, #f0d878, #c9a227);
    color: #1f1408;
    font-size: .62rem;
    font-weight: 800;
    line-height: 1;
    border: 2px solid #fff;
    box-shadow: 0 3px 10px rgba(166, 124, 61, .55);
}
.map-virtual-icon--premium {
    filter: drop-shadow(0 0 10px rgba(232, 197, 71, .65)) drop-shadow(0 4px 14px rgba(0, 0, 0, .4));
    z-index: 2;
}
.map-virtual-icon--premium .map-virtual-icon-img,
.map-virtual-icon--premium .map-virtual-icon-dot {
    width: 64px;
    height: 64px;
    border-width: 4px;
    border-color: #e8c547 !important;
    box-shadow: 0 0 0 3px rgba(232, 197, 71, .35);
}
.map-virtual-icon--premium .marker-premium-badge {
    top: -4px;
    right: -4px;
}
.ig-popup .caption-url-btn--premium,
.ig-popup .partner-link.caption-url-btn--premium {
    margin: .35rem 0 0;
    width: 100%;
    justify-content: center;
}

/* ─── レスポンシブ ─── */
@media (max-width: 640px) {
    .masthead::before, .masthead::after { display: none; }
    .masthead { padding: 1.25rem 1rem 1rem; }
    .masthead-compact .masthead-title { font-size: 1.75rem; }
    .section-head { flex-wrap: wrap; }
    .section-head .section-desc { margin-left: 0; text-align: left; max-width: none; }
    .theme-band { flex-direction: column; align-items: flex-start; gap: .35rem; }
    .theme-band .theme-desc { margin-left: 0; text-align: left; max-width: none; }
    .partner-grid { grid-template-columns: 1fr; }
    .featured-grid { grid-template-columns: 1fr; }
    .magazine-main { padding: 1rem .85rem 2rem; }
}

/* ─── 号数バー ─── */
.issue-bar {
    background: var(--surface);
    border-bottom: 1px solid var(--rule);
    padding: .65rem 1rem .75rem;
    position: sticky;
    top: 0;
    z-index: 90;
    box-shadow: 0 1px 0 rgba(0,0,0,.04);
}
.has-mobile-nav .issue-bar {
    padding-right: 3.35rem;
}

.issue-freq-tabs {
    display: flex;
    gap: .35rem;
    margin-bottom: .55rem;
}

.issue-freq-tab {
    flex: 1;
    text-align: center;
    padding: .45rem .5rem;
    font-size: .78rem;
    font-weight: 600;
    text-decoration: none;
    color: var(--ink-muted);
    border: 1px solid var(--rule);
    background: var(--paper-light);
    transition: background .15s, color .15s, border-color .15s;
}
.issue-freq-tab.active {
    background: var(--ink);
    color: #fff;
    border-color: var(--ink);
}

.issue-nav-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
}

.issue-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    font-size: 1.4rem;
    text-decoration: none;
    color: var(--ink);
    border: 1px solid var(--rule);
    background: var(--paper-light);
    line-height: 1;
}
.issue-arrow--icon {
    font-size: 0;
    line-height: 0;
}
.issue-arrow--icon svg {
    width: 1.15rem;
    height: 1.15rem;
}
.issue-arrow:active { background: var(--paper-dark); }

.issue-label {
    flex: 1;
    text-align: center;
    font-size: .85rem;
    font-weight: 600;
    font-family: var(--font-serif);
}

.issue-badge-sm {
    display: inline-block;
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .08em;
    color: var(--primary);
    margin-right: .35rem;
}

.issue-current-link {
    display: block;
    text-align: center;
    font-size: .72rem;
    color: var(--primary);
    margin-top: .45rem;
    text-decoration: none;
}

.issue-share-link {
    display: block;
    text-align: center;
    font-size: .72rem;
    font-weight: 600;
    color: var(--ink-muted);
    margin-top: .35rem;
    text-decoration: none;
    letter-spacing: .04em;
}
.issue-share-link:hover {
    color: var(--primary);
}

.issue-extra-links {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin-top: .4rem;
    flex-wrap: wrap;
}
.issue-extra-link {
    font-size: .72rem;
    font-weight: 600;
    color: var(--ink-muted);
    text-decoration: none;
    letter-spacing: .04em;
}
.issue-extra-link:hover { color: var(--primary); }
.issue-extra-link--admin { color: var(--primary); }

.paper-share-card .paper-share-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    justify-content: center;
    margin-top: .75rem;
}
.paper-share-url {
    font-size: .78rem;
    word-break: break-all;
    margin: .75rem 0 0;
}
.paper-share-panel--compact .paper-share-actions {
    margin-top: .5rem;
}

.masthead-compact { padding: 1.25rem 1rem 1rem; }
.masthead-compact .masthead-kicker { margin-bottom: 0; font-size: .72rem; }
.masthead-tenant {
    padding: .6rem 1rem .5rem;
    border-bottom: 2px solid var(--ink);
    background: var(--paper);
}
.masthead-tenant::before,
.masthead-tenant::after { display: none; }
.masthead-tenant .masthead-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem .5rem;
    margin-bottom: .35rem;
    padding-right: 3.1rem;
}
.masthead-tenant .issue-badge {
    width: 2.45rem;
    height: 2.45rem;
    font-size: .58rem;
    transform: rotate(-10deg);
    box-shadow: 2px 2px 0 rgba(0, 0, 0, .08);
}
.masthead-tenant .masthead-title {
    font-size: clamp(1.4rem, 4.5vw, 1.95rem);
    margin-bottom: 0;
    line-height: 1.2;
}
.masthead-logo {
    font-family: var(--font-display);
    font-size: 1.3rem;
    font-weight: 600;
    letter-spacing: .05em;
    color: var(--ink);
    text-decoration: none;
    line-height: 1;
}
.masthead-logo:hover { color: var(--primary); }
.tenant-header-bar {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: .6rem;
    padding: .38rem 1rem;
    padding-right: 3.35rem;
    background: var(--paper-light);
    border-bottom: 1px solid var(--rule);
}
.issue-badge--inline {
    width: 2.2rem;
    height: 2.2rem;
    font-size: .5rem;
    transform: rotate(-10deg);
    flex-shrink: 0;
    box-shadow: 2px 2px 0 rgba(0, 0, 0, .08);
}
.tenant-header-bar .masthead-logo { font-size: 1.1rem; }
.masthead-publish-note {
    max-width: 42rem;
    margin: .3rem auto 0;
    padding: 0 1rem;
    font-size: .68rem;
    line-height: 1.55;
    color: var(--ink-muted);
    text-align: center;
}
.publish-criteria-copy,
.hint-copy-btn {
    display: inline;
    padding: 0;
    margin: 0;
    border: none;
    background: none;
    font: inherit;
    color: var(--primary);
    text-decoration: underline;
    text-decoration-style: dotted;
    text-underline-offset: 2px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}
.publish-criteria-copy:hover,
.hint-copy-btn:hover {
    color: var(--primary-dark, #7a3a28);
}
.publish-criteria-copy.is-copied,
.hint-copy-btn.is-copied {
    color: #2d6a4f;
    text-decoration-style: solid;
}
.hint-copy-btn strong {
    font-weight: 700;
}
.masthead-tenant .masthead-publish-note {
    padding-bottom: .15rem;
}
.tenant-header-bar + .masthead-publish-note {
    margin-top: 0;
    padding: .35rem 1rem .45rem;
    border-bottom: 1px solid var(--rule);
    background: var(--paper);
    max-width: none;
}
.masthead-region {
    font-size: .75rem;
    letter-spacing: .08em;
    color: var(--primary);
    font-weight: 600;
}

/* ─── モバイルボトムナビ ─── */
.has-mobile-nav {
    padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
}

.mobile-bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1500;
    display: flex;
    background: rgba(252, 250, 246, .97);
    backdrop-filter: blur(10px);
    border-top: 1px solid var(--rule);
    padding-bottom: env(safe-area-inset-bottom, 0px);
    box-shadow: 0 -4px 20px rgba(0,0,0,.06);
}

.mobile-nav-item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: .45rem .2rem .55rem;
    text-decoration: none;
    color: var(--ink-muted);
    min-height: 3.25rem;
    -webkit-tap-highlight-color: transparent;
}
.mobile-nav-item.active {
    color: var(--primary);
}
.mobile-nav-icon { font-size: 1.15rem; line-height: 1.2; }
.mobile-nav-label { font-size: .62rem; font-weight: 600; margin-top: .15rem; letter-spacing: .02em; }

.map-page.has-mobile-nav .map-viewport {
    padding-bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px));
}
.ig-popup .popup-theme-badge {
    display: inline-block;
    margin-top: .25rem;
    font-size: .65rem;
    font-weight: 600;
    color: var(--primary);
    letter-spacing: .04em;
}
.map-issue-label { font-size: .72rem; color: var(--ink-muted); }

/* ─── ページヘッダー ─── */
.page-header {
    text-align: center;
    padding: 1.25rem 1rem .75rem;
    background: var(--paper-light);
    border-bottom: 1px solid var(--rule);
}
.page-header h1 {
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 600;
}
.page-sub { font-size: .8rem; color: var(--ink-muted); margin-top: .25rem; }
.page-header-back { text-align: left; padding: .85rem 1rem; }
.page-main { padding-top: 1rem; }

/* ─── 地域ハイライト ─── */
.local-highlights {
    display: flex;
    gap: .5rem;
    overflow-x: auto;
    padding-bottom: .5rem;
    margin-bottom: 1.25rem;
    scrollbar-width: none;
}
.local-highlights::-webkit-scrollbar { display: none; }

.highlight-chip {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .5rem .85rem;
    background: var(--surface);
    border: 1px solid var(--rule);
    text-decoration: none;
    color: var(--ink);
    font-size: .78rem;
    font-weight: 600;
    box-shadow: var(--shadow-soft);
}
.chip-icon { font-size: .95rem; }

/* ─── コンテンツリスト ─── */
.content-list { display: flex; flex-direction: column; gap: .85rem; }

.content-card {
    display: flex;
    gap: 1rem;
    background: var(--surface);
    border: 1px solid var(--rule);
    padding: 1rem;
    box-shadow: var(--shadow-soft);
}
.content-card h2 {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: .35rem;
    line-height: 1.4;
}
.content-desc { font-size: .85rem; color: var(--ink-muted); line-height: 1.65; margin-top: .5rem; }

.content-date {
    flex-shrink: 0;
    width: 3rem;
    text-align: center;
    background: var(--primary);
    color: #fff;
    padding: .5rem .25rem;
    align-self: flex-start;
}
.date-day { display: block; font-size: 1.4rem; font-weight: 700; line-height: 1; }
.date-mon { display: block; font-size: .65rem; margin-top: .15rem; }

.tag-pill {
    display: inline-block;
    font-size: .72rem;
    background: var(--paper-dark);
    padding: .2rem .5rem;
    margin-right: .35rem;
    margin-top: .35rem;
}

/* ─── 掲示板 ─── */
.card-style {
    background: var(--surface);
    border: 1px solid var(--rule);
    padding: 1.15rem;
    margin-bottom: 1.25rem;
    box-shadow: var(--shadow-soft);
}
.card-style h2 {
    font-family: var(--font-serif);
    font-size: 1rem;
    margin-bottom: .75rem;
}

.compose-form label {
    display: block;
    font-size: .82rem;
    font-weight: 600;
    margin-top: .65rem;
}
.compose-form input,
.compose-form select,
.compose-form textarea {
    width: 100%;
    padding: .65rem .75rem;
    border: 1px solid var(--rule);
    margin-top: .25rem;
    font-size: 16px;
    font-family: var(--font-sans);
    background: var(--paper-light);
}
.compose-form textarea { resize: vertical; min-height: 5rem; }
.compose-form .btn-magazine { margin-top: .85rem; width: 100%; text-align: center; }

.form-error {
    color: #c0392b;
    font-size: .85rem;
    margin-bottom: .5rem;
}

.thread-list { display: flex; flex-direction: column; gap: .5rem; }

.thread-item {
    display: block;
    padding: 1rem;
    background: var(--surface);
    border: 1px solid var(--rule);
    text-decoration: none;
    color: inherit;
    box-shadow: var(--shadow-soft);
    transition: transform .15s;
}
.thread-item:active { transform: scale(.99); }
.thread-item h3 {
    font-size: .95rem;
    font-weight: 600;
    margin: .35rem 0 .25rem;
    line-height: 1.45;
}
.thread-cat {
    font-size: .68rem;
    font-weight: 700;
    color: var(--primary);
    letter-spacing: .04em;
}
.thread-meta { font-size: .75rem; color: var(--ink-muted); }

.thread-detail h1 {
    font-family: var(--font-serif);
    font-size: 1.2rem;
    margin: .5rem 0;
    line-height: 1.45;
}
.thread-body {
    margin-top: 1rem;
    font-size: .92rem;
    line-height: 1.8;
    white-space: pre-wrap;
}

.replies-section { margin: 1.5rem 0; }
.replies-section h2 {
    font-family: var(--font-serif);
    font-size: .95rem;
    margin-bottom: .75rem;
}
.reply-card {
    background: var(--paper-light);
    border-left: 3px solid var(--rule);
    padding: .75rem 1rem;
    margin-bottom: .5rem;
}
.reply-author { font-weight: 600; font-size: .85rem; }
.reply-time { font-size: .72rem; color: var(--ink-muted); }
.reply-body { font-size: .88rem; margin-top: .35rem; line-height: 1.65; }

.community-cta {
    text-align: center;
    margin-top: 2rem;
}
.community-cta p { font-size: .88rem; color: var(--ink-muted); margin: .5rem 0 1rem; }
.community-cta .btn-magazine { display: inline-block; }

.community-cats { top: auto; }

/* ─── エンゲージメント（いいね・参加表明） ─── */
.engage-btn {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .5rem .85rem;
    min-height: 44px;
    border: 1px solid var(--rule);
    background: var(--paper-light);
    color: var(--ink-muted);
    font-family: var(--font-sans);
    font-size: .82rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s, transform .1s;
    -webkit-tap-highlight-color: transparent;
}
.engage-btn:active { transform: scale(.97); }
.engage-btn:disabled { opacity: .6; cursor: wait; }

.like-btn .engage-icon { color: #ccc; transition: color .15s; }
.like-btn.active {
    background: #fff0f3;
    border-color: #e8a0b0;
    color: var(--primary);
}
.like-btn.active .engage-icon { color: var(--primary); }

.rsvp-btn.active {
    background: #e8f5e9;
    border-color: #81c784;
    color: #2e7d32;
}

.engage-btn.compact {
    padding: .4rem .65rem;
    min-height: 36px;
    font-size: .78rem;
}

.engage-count { font-variant-numeric: tabular-nums; min-width: 1ch; }

.thread-item-wrap {
    background: var(--surface);
    border: 1px solid var(--rule);
    box-shadow: var(--shadow-soft);
    overflow: hidden;
}
.thread-item-wrap .thread-item {
    border: none;
    box-shadow: none;
    margin: 0;
}
.thread-engage-row {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 0 .85rem .75rem;
    border-top: 1px dashed var(--rule);
}
.thread-engage-row.detail {
    border-top: none;
    padding: .85rem 0 0;
    margin-top: .85rem;
    border-top: 1px dashed var(--rule);
}
.thread-stat {
    font-size: .78rem;
    color: var(--ink-muted);
}

.rsvp-wrap { margin-top: .75rem; padding-top: .75rem; border-top: 1px dashed var(--rule); }
.rsvp-actions {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    align-items: center;
}
.rsvp-name-input {
    flex: 1;
    min-width: 120px;
    padding: .5rem .65rem;
    border: 1px solid var(--rule);
    font-size: 16px;
    background: var(--paper-light);
}
.rsvp-name-input.highlight {
    border-color: var(--primary);
    outline: none;
    box-shadow: 0 0 0 2px rgba(156, 74, 50, .15);
}
.rsvp-count { margin-top: .45rem; font-size: .78rem; }
.rsvp-names { font-size: .75rem; color: var(--ink-muted); margin-top: .2rem; }

.chip-sub { font-weight: 500; opacity: .85; }

/* Instagram投稿カード（イベント・求人） */
.ig-post-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1.25rem;
}

.ig-post-card {
    background: var(--surface);
    border: 1px solid var(--rule);
    box-shadow: var(--shadow-soft);
    overflow: hidden;
}

.ig-post-image-link {
    display: block;
    position: relative;
    aspect-ratio: 1;
    overflow: hidden;
}
.ig-post-image-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ig-post-badge {
    position: absolute;
    top: .5rem;
    left: .5rem;
    background: var(--primary);
    color: #fff;
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .06em;
    padding: .2rem .5rem;
}
.ig-post-badge.inline { position: static; display: inline-block; margin-bottom: .5rem; }
.ig-post-badge.job { background: #2c5282; }

.ig-post-body { padding: .85rem 1rem 1rem; }
.ig-post-author {
    display: flex;
    align-items: center;
    gap: .5rem;
    text-decoration: none;
    color: var(--ink);
    font-weight: 600;
    font-size: .88rem;
    margin-bottom: .5rem;
}
.ig-post-author .partner-avatar { width: 28px; height: 28px; }
.ig-post-caption {
    font-size: .82rem;
    color: var(--ink-muted);
    line-height: 1.55;
    margin-bottom: .65rem;
}
.ig-post-engage { margin-bottom: .5rem; }

/* 投稿者へのメッセージ */
.partner-messages { margin-top: 1.5rem; }
.partner-messages h2 {
    font-family: var(--font-serif);
    font-size: 1.05rem;
}
.message-list { margin-bottom: 1rem; }
.message-card {
    background: var(--paper-light);
    border-left: 3px solid var(--primary);
    padding: .75rem 1rem;
    margin-bottom: .5rem;
}
.message-author { font-weight: 600; font-size: .85rem; }
.message-time { font-size: .72rem; color: var(--ink-muted); }
.message-body { font-size: .88rem; line-height: 1.65; margin-top: .35rem; }

.spot-engage-row {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    align-items: flex-start;
    margin: .85rem 0;
    padding: .75rem 0;
    border-top: 1px dashed var(--rule);
    border-bottom: 1px dashed var(--rule);
}
.spot-engage-row .rsvp-wrap {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
    flex: 1;
    min-width: 200px;
}

/* タップ領域拡大 */
.btn-magazine, .btn-primary, .caption-url-btn, .card-more-inline {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* テーマナビを号数バーの下に */
.theme-nav { top: 0; position: sticky; z-index: 80; }
.issue-bar + .theme-nav { top: 0; }

/* 画像の順次表示（読み込み完了までプレースホルダ） */
.magazine-page img:not(.post-image),
.spot-page img:not(.post-image),
.map-page img:not(.post-image):not(.marker-icon) {
    background: linear-gradient(110deg, #e8e2d8 8%, #f3ede4 18%, #e8e2d8 33%);
    background-size: 200% 100%;
}
.magazine-page img:not(.is-loaded):not(.is-error):not(.post-image):not(.partner-avatar):not(.spot-avatar),
.spot-page img:not(.is-loaded):not(.is-error):not(.post-image):not(.partner-avatar):not(.spot-avatar),
.map-page img:not(.is-loaded):not(.is-error):not(.post-image):not(.marker-icon):not(.partner-avatar):not(.spot-avatar):not(.popup-image):not(.popup-avatar) {
    animation: tm-shimmer 1.2s linear infinite;
}
.magazine-page img.is-loaded:not(.post-image),
.spot-page img.is-loaded:not(.post-image),
.map-page img.is-loaded:not(.post-image):not(.marker-icon) {
    animation: none;
    background: transparent;
}
.magazine-page img.is-error,
.spot-page img.is-error {
    animation: none;
    background: #ece6dc;
    min-height: 120px;
}
@keyframes tm-shimmer {
    to { background-position: -200% 0; }
}

/* 法的ページ */
.legal-page h1 { font-family: var(--font-serif); font-size: 1.75rem; margin-bottom: .5rem; }
.legal-page h2 { font-family: var(--font-serif); font-size: 1.15rem; margin: 1.75rem 0 .65rem; }
.legal-page p, .legal-page li { font-size: .92rem; color: var(--ink); }
.legal-page ul, .legal-page ol { margin: .5rem 0 1rem 1.25rem; }
.legal-page li { margin-bottom: .35rem; }
.legal-updated { font-size: .82rem; color: var(--ink-muted); margin-bottom: 1.25rem; }
.legal-back { margin-top: 2rem; }
.legal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .88rem;
    margin: 1rem 0 1.5rem;
}
.legal-table th,
.legal-table td {
    border: 1px solid var(--rule);
    padding: .65rem .75rem;
    vertical-align: top;
    text-align: left;
}
.legal-table th {
    width: 28%;
    background: var(--paper-light);
    font-weight: 600;
    white-space: nowrap;
}
.legal-back-sep { margin: 0 .35rem; color: var(--ink-muted); }
.soluge-top-bar {
    margin: 0;
    padding: .45rem 1rem;
    font-size: .78rem;
    text-align: center;
    background: var(--paper-light);
    border-bottom: 1px solid var(--rule);
}
.soluge-top-bar a {
    color: var(--ink-muted);
    text-decoration: none;
    border-bottom: 1px solid transparent;
}
.soluge-top-bar a:hover {
    color: var(--ink);
    border-bottom-color: var(--ink-muted);
}
.soluge-top-bar--map {
    position: relative;
    z-index: 1001;
    flex-shrink: 0;
}
.legal-footer-links a { margin-right: .75rem; }
.legal-page ol { margin: .5rem 0 1rem 1.25rem; }
.legal-page ol li { margin-bottom: .4rem; }
.legal-document-page a { color: var(--primary); }

/* プラットフォーム TOP */
.brand-aside {
    font-size: .72em;
    font-weight: 400;
    color: var(--ink-muted);
    letter-spacing: .04em;
}
.hero-header .hero-content { text-align: center; padding: 3rem 1.5rem 2.5rem; }
.hero-header h1 {
    font-family: var(--font-display);
    font-size: clamp(2rem, 6vw, 3rem);
    margin-bottom: .5rem;
}
.hero-header .tagline {
    font-size: .95rem;
    color: var(--ink-muted);
    letter-spacing: .08em;
    margin-bottom: .5rem;
}
.hero-service-note {
    font-size: .82rem;
    color: var(--ink-muted);
    margin-bottom: .5rem;
}
.hero-feature-note {
    font-size: .9rem;
    color: var(--ink);
    max-width: 32rem;
    margin: 0 auto .75rem;
    line-height: 1.55;
}
.hero-actions { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; }
.hero-header--compact .hero-content { padding: 2rem 1.5rem 1.25rem; }
.hero-header--compact .hero-service-note { margin-bottom: 0; }
.hero-kicker {
    font-size: .82rem;
    color: var(--accent-gold);
    letter-spacing: .14em;
    margin-bottom: .5rem;
}

/* プラットフォーム TOP — ランディング */
.platform-home-page {
    background-color: var(--paper);
}

.platform-home-shell {
    --platform-content-max: 42rem;
    --platform-gutter: clamp(1.5rem, 6vw, 4rem);
    width: 100%;
    max-width: calc(var(--platform-content-max) + var(--platform-gutter) * 2);
    margin-inline: auto;
    padding-inline: var(--platform-gutter);
    box-sizing: border-box;
}

.platform-home-page {
    --page-gutter: 0;
    --page-column: var(--platform-content-max);
}

.platform-home-page .site-header.hero-header {
    display: block;
    padding: 0;
    background:
        radial-gradient(ellipse at 50% 0%, rgba(255,255,255,.65) 0%, transparent 55%),
        linear-gradient(180deg, var(--paper-light) 0%, var(--paper) 100%);
    border-bottom: 3px double var(--ink);
    position: relative;
}

.platform-home-page .hero-header .hero-content,
.platform-home-page .hero-header--platform .hero-content {
    max-width: var(--page-column);
    margin: 0 auto;
    padding: 2.75rem 0 2.25rem;
    text-align: center;
}

.platform-home-page .hero-header h1 {
    font-family: var(--font-serif);
    font-size: clamp(2.25rem, 7vw, 3.35rem);
    font-weight: 700;
    letter-spacing: .06em;
    line-height: 1.15;
    margin-bottom: .85rem;
}

.platform-home-page .hero-kicker {
    font-size: .78rem;
    font-weight: 600;
    color: var(--accent-gold);
    letter-spacing: .2em;
    text-transform: uppercase;
    margin-bottom: .85rem;
}

.platform-home-page .hero-divider {
    width: 3rem;
    height: 1px;
    background: var(--primary);
    margin: 0 auto 1rem;
}

.platform-home-page .hero-header .tagline {
    font-family: var(--font-serif);
    font-size: clamp(1rem, 2.8vw, 1.2rem);
    color: var(--ink);
    letter-spacing: .04em;
    line-height: 1.65;
    margin-bottom: 1rem;
}

.platform-home-page .hero-feature-note {
    max-width: none;
    font-size: .95rem;
    color: var(--ink-muted);
    line-height: 1.7;
    margin: 0 auto 1rem;
}

.platform-home-page .hero-service-note {
    font-size: .8rem;
    color: var(--ink-muted);
    letter-spacing: .02em;
}

.platform-home-page .site-footer {
    padding-left: 0;
    padding-right: 0;
    padding-bottom: 2.5rem;
}

.platform-home {
    max-width: none;
    margin: 0;
    padding: 2.75rem 0 4.5rem;
}

.platform-home > section + section {
    margin-top: 2.75rem;
    padding-top: 2.75rem;
    border-top: 1px solid var(--rule);
}

.platform-home .section-eyebrow,
.platform-home .platform-onboard-eyebrow {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--accent-gold);
    margin: 0 0 .5rem;
}

.platform-home h2 {
    font-family: var(--font-serif);
    font-size: 1.35rem;
    font-weight: 600;
    color: var(--primary);
    line-height: 1.45;
    margin: 0 0 1rem;
}

.platform-intro {
    padding: 1.5rem 1.35rem;
    background: var(--paper-light);
    border: 1px solid var(--rule);
    border-left: 3px solid var(--primary);
    box-shadow: var(--shadow-soft);
}

.platform-intro-lead {
    font-size: 1.05rem;
    line-height: 1.9;
    color: var(--ink);
}

.platform-intro-lead strong {
    color: var(--primary);
    font-weight: 600;
}

.platform-tenants-empty {
    padding: 2rem 1.5rem;
    text-align: center;
    color: var(--ink-muted);
    background: var(--paper-light);
    border: 1px dashed var(--rule);
    border-radius: var(--radius);
}

.tenant-directory {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .85rem;
}

.tenant-directory-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.15rem 1.25rem;
    background: var(--surface);
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    text-decoration: none;
    color: inherit;
    box-shadow: var(--shadow-soft);
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.tenant-directory-name {
    font-family: var(--font-serif);
    font-size: 1.1rem;
    font-weight: 600;
    line-height: 1.4;
}

.tenant-directory-arrow {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--paper);
    border: 1px solid var(--rule);
    color: var(--primary);
    font-size: 1rem;
    transition: background .2s ease, border-color .2s ease, transform .2s ease;
}

.tenant-directory-card:hover {
    border-color: var(--primary-soft);
    box-shadow: var(--shadow-paper);
    transform: translateY(-2px);
}

.tenant-directory-card:hover .tenant-directory-arrow {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
    transform: translateX(2px);
}

.platform-onboard {
    padding: 2rem 1.5rem;
    background: linear-gradient(180deg, var(--paper-light) 0%, var(--surface) 100%);
    border: 1px solid var(--rule);
    border-top: 3px solid var(--primary);
    box-shadow: var(--shadow-paper);
}

.platform-onboard p {
    color: var(--ink);
    line-height: 1.85;
}

.platform-onboard p + p {
    margin-top: .85rem;
}

.platform-onboard strong {
    color: var(--primary);
}

.platform-price-note {
    margin: 0 0 1.25rem;
    padding: 1rem 1.1rem;
    background: var(--paper);
    border: 1px solid var(--primary-soft);
    border-radius: var(--radius);
    font-size: .98rem;
    line-height: 1.55;
}

.platform-price-note-sub {
    display: block;
    margin-top: .35rem;
    font-size: .78rem;
    font-weight: 400;
    color: var(--ink-muted);
}

.platform-onboard-actions {
    margin-top: 1.5rem;
    text-align: center;
}

.platform-home-cta {
    padding: .85rem 2rem;
    font-size: .9rem;
    background: var(--primary);
    border: 2px solid var(--primary);
}

.platform-home-cta:hover {
    background: var(--primary-soft);
    border-color: var(--primary-soft);
}

@media (min-width: 900px) {
    .platform-home-shell {
        --platform-content-max: 44rem;
        --platform-gutter: clamp(2.5rem, 10vw, 6rem);
    }

    .platform-home-page .hero-header--platform .hero-content {
        padding: 4rem 0 3rem;
    }

    .platform-home-page .hero-header h1 {
        font-size: 3.5rem;
    }

    .platform-home-page .hero-header .tagline {
        font-size: 1.25rem;
    }

    .platform-home-page .hero-feature-note {
        font-size: 1rem;
    }

    .platform-home {
        padding: 3.5rem 0 5rem;
    }

    .platform-home h2 {
        font-size: 1.55rem;
    }

    .platform-intro {
        padding: 1.75rem 1.6rem;
    }

    .platform-intro-lead {
        font-size: 1.08rem;
    }

    .tenant-directory-name {
        font-size: 1.15rem;
    }

    .platform-onboard {
        padding: 2.5rem 2rem;
    }

    .platform-onboard p {
        font-size: 1.02rem;
    }
}

/* テナント申込 */
.apply-page .apply-card {
    max-width: 680px;
    margin: 2rem auto;
}
.apply-lead {
    margin-bottom: 1.25rem;
}
.apply-steps {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
}
.apply-steps li {
    flex: 1 1 7rem;
    padding: .55rem .65rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
    font-size: .78rem;
    text-align: center;
    color: var(--ink-muted);
    background: var(--paper-light);
}
.apply-steps li.is-current {
    border-color: var(--primary);
    color: var(--primary);
    font-weight: 600;
    background: #fff;
}
.apply-steps li.is-done {
    color: var(--ink);
}
.apply-form label {
    display: block;
    margin-bottom: 1rem;
    font-size: .88rem;
    font-weight: 600;
}
.apply-form input,
.apply-form textarea {
    display: block;
    width: 100%;
    margin-top: .35rem;
    padding: .65rem .75rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
    font: inherit;
    box-sizing: border-box;
}
.apply-slug-label {
    display: block;
    margin-bottom: .35rem;
    font-size: .88rem;
    font-weight: 600;
}
.apply-slug-url {
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    gap: 0;
    margin-bottom: .35rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: #faf8f5;
    overflow: hidden;
    font-size: .82rem;
    line-height: 1.4;
}
.apply-slug-prefix {
    padding: .65rem .5rem .65rem .75rem;
    color: var(--ink-muted);
    white-space: nowrap;
    user-select: none;
    background: #f0ebe4;
    border-right: 1px dashed rgba(156, 74, 50, .25);
}
.apply-slug-input {
    flex: 1 1 8rem;
    min-width: 6rem;
    margin: 0;
    padding: .65rem .75rem;
    border: none;
    border-radius: 0;
    background: #fffef8;
    color: var(--primary);
    font: inherit;
    font-weight: 700;
    box-sizing: border-box;
}
.apply-slug-input::placeholder {
    color: rgba(156, 74, 50, .45);
    font-weight: 600;
}
.apply-slug-input:focus {
    outline: none;
    background: #fff;
    box-shadow: inset 0 0 0 2px rgba(156, 74, 50, .35);
}
.apply-slug-hint {
    margin: 0 0 1rem;
}
.apply-slug-hint code {
    font-size: .9em;
}
.apply-ig-label {
    display: block;
    margin-bottom: .35rem;
    font-size: .88rem;
    font-weight: 600;
}
.apply-ig-url {
    display: flex;
    align-items: stretch;
    margin-bottom: .35rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: #faf8f5;
    overflow: hidden;
    font-size: .88rem;
}
.apply-ig-prefix {
    padding: .65rem .55rem .65rem .75rem;
    color: var(--ink-muted);
    font-weight: 700;
    background: #f0ebe4;
    border-right: 1px dashed rgba(156, 74, 50, .25);
    user-select: none;
}
.apply-ig-input {
    flex: 1;
    min-width: 0;
    margin: 0;
    padding: .65rem .75rem;
    border: none;
    border-radius: 0;
    background: #fffef8;
    font: inherit;
    font-weight: 600;
    box-sizing: border-box;
}
.apply-ig-input:focus {
    outline: none;
    background: #fff;
    box-shadow: inset 0 0 0 2px rgba(156, 74, 50, .35);
}
.apply-ig-hint {
    margin: 0 0 .5rem;
}
.apply-slug-row {
    display: flex;
    align-items: center;
    gap: .35rem;
    margin-top: .35rem;
    font-size: .82rem;
    color: var(--ink-muted);
}
.apply-slug-row input {
    flex: 1;
    margin-top: 0;
}
.field-error {
    color: #c0392b;
    font-size: .82rem;
    margin: -.5rem 0 .75rem;
}
.apply-actions {
    margin-top: 1.25rem;
}
.apply-price-box {
    padding: 1rem 1.1rem;
    background: var(--paper-light);
    border: 1px solid var(--rule);
    border-radius: 8px;
    margin: 1rem 0;
}
.apply-divider {
    margin: 2rem 0 1rem;
    border: none;
    border-top: 1px solid var(--rule);
}
.btn-secondary {
    display: inline-block;
    padding: .65rem 1.1rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: #fff;
    color: var(--ink);
    text-decoration: none;
    font-size: .9rem;
}
.btn-secondary:hover {
    border-color: var(--primary);
    color: var(--primary);
}

/* 絆システム · 紹介QR */
.bond-dashboard-row {
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
    flex-wrap: wrap;
}
.bond-qr-thumb {
    display: block;
    border: 2px solid var(--rule);
    border-radius: 8px;
    overflow: hidden;
    line-height: 0;
}
.bond-qr-thumb:hover { border-color: var(--primary); }
.bond-dashboard-meta { flex: 1; min-width: 200px; }
.bond-intro-card .bond-qr-wrap {
    margin: 1.25rem auto;
    display: inline-block;
    padding: .75rem;
    background: #fff;
    border: 2px solid var(--rule);
    border-radius: 12px;
}
.bond-intro-eyebrow {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .12em;
    color: var(--primary);
    margin: 0 0 .35rem;
}
.bond-intro-url {
    font-size: .78rem;
    word-break: break-all;
    margin: 1rem 0;
}
.bond-stats { font-size: .88rem; margin: 1rem 0; }
.bond-intro-note {
    text-align: left;
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--rule);
    font-size: .88rem;
}
.bond-intro-note h2 { font-size: 1rem; margin: 0 0 .5rem; }

/* ─── テナント紙面ハンバーガーメニュー ─── */
.tenant-menu-toggle {
    flex-shrink: 0;
    width: 2.35rem;
    height: 2.35rem;
    padding: 0;
    border: 1px solid var(--rule);
    border-radius: 8px;
    background: rgba(255, 255, 255, .7);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.has-mobile-nav .masthead-tenant .tenant-menu-toggle,
.has-mobile-nav .tenant-header-bar .tenant-menu-toggle {
    position: fixed;
    top: max(.45rem, env(safe-area-inset-top, 0px));
    right: max(.65rem, env(safe-area-inset-right, 0px));
    z-index: 1610;
    margin-left: 0;
    background: rgba(252, 250, 246, .97);
    backdrop-filter: blur(10px);
    box-shadow: 0 2px 14px rgba(0, 0, 0, .1);
}
.tenant-menu-toggle:hover { background: #fff; }
.tenant-menu-toggle-bars {
    display: flex;
    flex-direction: column;
    gap: 4px;
    width: 1rem;
}
.tenant-menu-toggle-bars span {
    display: block;
    height: 2px;
    background: var(--ink);
    border-radius: 1px;
    transition: transform .2s, opacity .2s;
}
.tenant-menu-toggle[aria-expanded="true"] .tenant-menu-toggle-bars span:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
}
.tenant-menu-toggle[aria-expanded="true"] .tenant-menu-toggle-bars span:nth-child(2) { opacity: 0; }
.tenant-menu-toggle[aria-expanded="true"] .tenant-menu-toggle-bars span:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
}
.tenant-site-menu {
    position: fixed;
    inset: 0;
    z-index: 1600;
    pointer-events: none;
    visibility: hidden;
}
.tenant-site-menu.is-open {
    pointer-events: auto;
    visibility: visible;
}
.tenant-site-menu-backdrop {
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(20, 16, 12, .42);
    opacity: 0;
    transition: opacity .25s ease;
    cursor: pointer;
}
.tenant-site-menu.is-open .tenant-site-menu-backdrop { opacity: 1; }
.tenant-site-menu-panel {
    position: absolute;
    top: 0;
    right: 0;
    width: min(18rem, 88vw);
    height: 100%;
    background: var(--paper);
    border-left: 1px solid var(--rule);
    box-shadow: -8px 0 32px rgba(30, 24, 16, .12);
    transform: translateX(100%);
    transition: transform .28s ease;
    display: flex;
    flex-direction: column;
    padding: max(.75rem, env(safe-area-inset-top, 0px)) 0 max(1rem, env(safe-area-inset-bottom, 0px));
    overflow: hidden;
}
.tenant-site-menu.is-open .tenant-site-menu-panel { transform: translateX(0); }
.tenant-site-menu-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .5rem 1rem 1rem;
    border-bottom: 1px solid var(--rule);
}
.tenant-site-menu-head h2 {
    margin: 0;
    font-family: var(--font-serif);
    font-size: 1rem;
    line-height: 1.3;
}
.tenant-site-menu-close {
    width: 2rem;
    height: 2rem;
    border: 0;
    background: transparent;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    color: var(--ink-muted);
}
.tenant-site-menu-close:hover { color: var(--ink); }
.tenant-site-menu-list {
    list-style: none;
    margin: 0;
    padding: .5rem 0;
    overflow-y: auto;
    flex: 1;
}
.tenant-site-menu-list li { margin: 0; }
.tenant-site-menu-divider {
    height: 1px;
    margin: .45rem 1rem;
    background: var(--rule);
}
.tenant-site-menu-item {
    display: flex;
    align-items: center;
    gap: .65rem;
    width: 100%;
    padding: .85rem 1.1rem;
    border: 0;
    background: transparent;
    color: var(--ink);
    text-decoration: none;
    font-size: .92rem;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
    font-family: inherit;
}
.tenant-site-menu-item:hover,
.tenant-site-menu-item:focus-visible {
    background: #f3ede4;
    outline: none;
}
.tenant-site-menu-item--emphasis { color: var(--primary); }
.tenant-site-menu-icon {
    width: 1.35rem;
    text-align: center;
    flex-shrink: 0;
}
.tenant-site-menu-label { flex: 1; }
.tm-push-toggle--menu {
    margin: 0;
    border-radius: 0;
    border: 0;
    font-size: inherit;
    font-weight: inherit;
    padding: .85rem 1.1rem;
}
.tm-push-toggle--menu[data-state="on"] {
    background: #f3ede4;
    color: var(--primary);
}
.tm-push-toggle--menu[data-state="denied"] { opacity: .55; }
body.tenant-menu-open { overflow: hidden; }

/* ─── テナント運営管理 ─── */
.tenant-admin-page { background: var(--paper-light); }
.tenant-admin-header {
    background: #fff;
    border-bottom: 1px solid var(--rule);
    box-shadow: 0 1px 0 rgba(0,0,0,.04);
}
.tenant-admin-header-inner {
    max-width: 960px;
    margin: 0 auto;
    padding: .85rem 1rem .35rem;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    flex-wrap: wrap;
}
.tenant-admin-brand { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.tenant-admin-site {
    font-family: var(--font-serif);
    font-weight: 700;
    font-size: 1.15rem;
    color: var(--primary);
    text-decoration: none;
}
.tenant-admin-badge {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    padding: .2rem .5rem;
    border-radius: 999px;
    background: #f3ede4;
    color: var(--ink-muted);
}
.tenant-admin-user { margin: 0; font-size: .78rem; color: var(--ink-muted); }
.tenant-admin-user a { color: var(--primary); }
.tenant-admin-nav {
    max-width: 960px;
    margin: 0 auto;
    padding: 0 1rem .65rem;
    display: flex;
    gap: .35rem;
    flex-wrap: wrap;
    overflow-x: auto;
}
.tenant-admin-nav-link {
    padding: .4rem .75rem;
    font-size: .82rem;
    text-decoration: none;
    color: var(--ink-muted);
    border-radius: 999px;
    white-space: nowrap;
}
.tenant-admin-nav-link:hover { background: #f3ede4; color: var(--ink); }
.tenant-admin-nav-link.is-active {
    background: var(--primary);
    color: #fff;
    font-weight: 600;
}
.tenant-admin-nav-link--external { margin-left: auto; }
.tenant-admin-main { max-width: 960px; padding: 1rem; }
.tenant-admin-card { margin: 0; }
.tenant-admin-card h1 {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    margin: 0 0 .5rem;
}
.tenant-admin-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .75rem;
    margin: 1.25rem 0;
}
@media (max-width: 640px) {
    .tenant-admin-stats { grid-template-columns: repeat(2, 1fr); }
    .tenant-admin-nav-link--external { margin-left: 0; }
}
.tenant-admin-stat {
    background: #f8f5ef;
    border: 1px solid var(--rule);
    border-radius: 10px;
    padding: .85rem;
    text-align: center;
}
.tenant-admin-stat-value {
    display: block;
    font-size: 1.6rem;
    font-weight: 700;
    font-family: var(--font-serif);
    color: var(--primary);
}
.tenant-admin-stat-label { font-size: .72rem; color: var(--ink-muted); }
.tenant-admin-quick {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}
.tenant-admin-form-block label { display: block; margin-top: .75rem; font-weight: 600; font-size: .9rem; }
.tenant-admin-form-block input,
.tenant-admin-form-block select,
.tenant-admin-form-block textarea {
    width: 100%;
    margin-top: .25rem;
    padding: .55rem .65rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
}
.tenant-admin-check { display: flex; align-items: flex-start; gap: .5rem; margin: .5rem 0; font-weight: 400; }
.tenant-admin-check--box {
    flex-direction: column;
    padding: .65rem .85rem;
    border: 1px solid var(--rule);
    border-radius: 8px;
}
.tenant-admin-table {
    width: 100%;
    font-size: .82rem;
    border-collapse: collapse;
}
.tenant-admin-table th,
.tenant-admin-table td {
    padding: .55rem .65rem;
    border-bottom: 1px solid #eee;
    vertical-align: top;
    text-align: left;
}
.tenant-admin-table tr.is-muted { opacity: .65; }
.tenant-admin-inline-form {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    align-items: center;
}
.tenant-admin-input-sm {
    font-size: .75rem;
    padding: .3rem .45rem;
    border: 1px solid var(--rule);
    border-radius: 4px;
    max-width: 7rem;
}
.tenant-admin-nowrap { white-space: nowrap; }
.tenant-admin-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.admin-scroll-panel {
    max-height: min(480px, 60vh);
    overflow-y: auto;
    border: 1px solid var(--rule);
    border-radius: 10px;
    background: #fff;
}
.tag { display: inline-block; font-size: .68rem; padding: .15rem .4rem; border-radius: 4px; background: #e8f5e9; margin-left: .25rem; }
.tag--ok { background: #e8f5e9; color: #2e7d32; }
.tag--muted { background: #eee; color: #666; }
.btn-danger { background: #c44; color: #fff; border: none; }
.btn-muted { background: #999; color: #fff; border: none; }
.status-suspended { background: #f8d7da; color: #721c24; }
.masthead-admin-link {
    margin-left: auto;
    font-size: .72rem;
    font-weight: 600;
    color: var(--primary);
    text-decoration: none;
    padding: .25rem .55rem;
    border: 1px solid var(--rule);
    border-radius: 999px;
    background: rgba(255,255,255,.6);
}
.masthead-admin-link:hover { background: #fff; }
