﻿/*
Theme Name: TPCL Base
Theme URI: https://tpcl.jp/themes/tpcl-base
Description: Shared parent theme providing the unified TPCL layout, navigation, and global components for education and visa sites.
Author: TPCL
Author URI: https://tpcljp.com
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: tpcl-base
Tags: corporate, landing-page, custom-menu, wp-cli-ready

This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned.
*/

:root {
    --accent-color: #DB2777;
    --accent-dark: #BE185D;
    --accent-light: #FCE7F3;
    --surface: #FFFFFF;
    --surface-muted: #F9FAFB;
    --border-color: #E5E7EB;
    --text-dark: #1F2937;
    --text-gray: #6B7280;
    --text-muted: #9CA3AF;
}

/* Tailwind utility fallbacks for older browsers */
.hidden {
    display: none !important;
}

@media (min-width: 1024px) {
    .lg\:flex {
        display: flex !important;
    }
    .lg\:hidden {
        display: none !important;
    }
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html,
body {
    max-width: 100vw;
    overflow-x: hidden;
}

body.tpcl-body {
    font-family: 'Noto Sans JP', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    background-color: var(--surface-muted);
    color: var(--text-dark);
    line-height: 1.7;
}

a {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}
a:hover,
a:focus {
    color: var(--accent-color);
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

.screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.tpcl-container {
    width: min(100%, 1400px);
    margin: 0 auto;
    padding: 0 1rem;
}

@media (min-width: 768px) {
    .tpcl-container {
        padding: 0 1.5rem;
    }
}

@media (min-width: 1024px) {
    .tpcl-container {
        padding: 0 2rem;
    }
}

.tpcl-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background-color: var(--accent-light);
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
    border-top: 4px solid var(--accent-color);
}

.tpcl-header__top {
    background-color: var(--surface-muted);
    border-bottom: 1px solid var(--border-color);
    font-size: 0.75rem;
    color: var(--text-muted);
}

.tpcl-header__top-inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0.5rem 0;
}

.tpcl-topbar__languages {
    display: flex;
    gap: 0.75rem;
    align-items: center;
}

.tpcl-topbar__languages a {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    color: var(--text-muted);
    text-decoration: none;
    padding: 0.25rem 0.5rem;
    border-radius: 0.375rem;
    transition: all 0.2s ease;
}

.tpcl-topbar__languages a:hover,
.tpcl-topbar__languages a:focus {
    color: var(--accent-color);
    background-color: rgba(219, 39, 119, 0.08);
}

.tpcl-topbar__languages a.lang-item-first,
.tpcl-topbar__languages li:first-child a {
    font-weight: 600;
    color: var(--accent-color);
}

.tpcl-topbar__languages img {
    width: 16px;
    height: 12px;
    border-radius: 2px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

/* Custom language switcher (DB-based) */
.tpcl-lang-switcher {
    display: flex;
    flex-direction: row;
    gap: 0.5rem;
    list-style: none;
    margin: 0;
    padding: 0;
    align-items: center;
}

.tpcl-lang-switcher li {
    margin: 0;
    padding: 0;
}

.tpcl-lang-switcher a {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--text-muted);
    text-decoration: none;
    padding: 0.25rem 0.5rem;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    transition: all 0.2s ease;
    white-space: nowrap;
}

.tpcl-lang-switcher a:hover,
.tpcl-lang-switcher a:focus {
    color: var(--accent-color);
    background-color: rgba(219, 39, 119, 0.08);
}

.tpcl-lang-switcher .current-lang a {
    font-weight: 600;
    color: var(--accent-color);
}

.tpcl-lang-flag {
    width: 16px;
    height: 11px;
    border-radius: 2px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
    flex-shrink: 0;
}

.tpcl-lang-name {
    display: inline-block;
}

.tpcl-header__main {
    /* Removed border-bottom from main - moved to row-top */
}

/* ========================================
   2-Row Header Layout
   ======================================== */

/* Row 1: Logo + Language Switcher */
.tpcl-header__row-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background-color: #ffffff;
    padding: 0.875rem 0;
    position: relative;
}

.tpcl-header__row-top::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100vw;
    height: 100%;
    background-color: #ffffff;
    z-index: -1;
}

/* Language Switcher in Row 1 (Desktop) */
.tpcl-header__lang-desktop {
    display: flex;
    align-items: center;
    margin-left: auto;
}

.tpcl-header__languages {
    display: flex;
    align-items: center;
}

/* Dual Company Layout */
.tpcl-header__companies {
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.tpcl-header__company {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.tpcl-header__company-names {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.tpcl-header__company-name-en {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-dark);
    line-height: 1.3;
    white-space: nowrap;
}

.tpcl-header__company-name-ja {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--text-gray);
    line-height: 1.3;
    white-space: nowrap;
}

/* Header Catchphrase */
.tpcl-header__catchphrase {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 0.125rem;
}

.tpcl-header__catchphrase-main {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--text-dark);
    line-height: 1.3;
}

.tpcl-header__catchphrase-sub {
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--text-gray);
    line-height: 1.3;
}

/* Show catchphrase on tablet and above */
@media (min-width: 768px) {
    .tpcl-header__catchphrase {
        display: flex;
        flex-direction: column;
    }
}

.tpcl-logo,
.custom-logo-link {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    width: 70px;
    height: 70px;
}

.tpcl-logo img,
.custom-logo-link img {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
}

/* Site Title (Responsive Font Size) - Legacy Support */
.tpcl-logo__text {
    font-size: clamp(0.9rem, 2vw, 1.1rem);
    font-weight: 700;
    color: var(--accent-color);
    white-space: nowrap;
}

/* Responsive: Show company names on mobile with smaller font */
@media (max-width: 767px) {
    .tpcl-header__company-names {
        display: flex;
    }

    .tpcl-header__company-name-en {
        font-size: 0.75rem;
    }

    .tpcl-header__company-name-ja {
        font-size: 0.625rem;
    }

    .tpcl-header__companies {
        gap: 0.5rem;
    }
}

/* Tablet: Adjust font size for medium screens */
@media (min-width: 768px) and (max-width: 1023px) {
    .tpcl-header__company-name-en {
        font-size: 0.9375rem;
    }

    .tpcl-header__company-name-ja {
        font-size: 0.8125rem;
    }

    .tpcl-header__companies {
        gap: 1.25rem;
    }
}

/* Desktop: Larger font size for wide screens */
@media (min-width: 1024px) {
    .tpcl-header__company-name-en {
        font-size: 1.125rem;
    }

    .tpcl-header__company-name-ja {
        font-size: 1rem;
    }
}

/* CTA Buttons Container */
.tpcl-header__ctas {
    display: flex;
    align-items: center;
    gap: 1rem;
}

/* Row 2: Navigation Menu + CTA Buttons */
.tpcl-header__row-nav {
    padding: 0.75rem 0;
    border-top: 1px solid rgba(219, 39, 119, 0.15);
    justify-content: space-between;
    align-items: center;
}

/* Home Link */
.tpcl-nav__home {
    flex-shrink: 0;
    margin-right: 0.5rem;
}

.tpcl-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    font-weight: 500;
    font-size: 0.875rem;
    color: var(--text-gray);
    flex: 1;
}

/* Desktop: Show navigation row and adjust title size */
@media (min-width: 1024px) {
    .tpcl-header__row-nav {
        display: flex;
    }

    .tpcl-logo__text {
        font-size: 1.1rem;
    }

    .tpcl-header__row-nav .tpcl-header__ctas {
        flex-shrink: 0;
        margin-left: 1.5rem;
    }
}

/* Mobile: Hide navigation row */
@media (max-width: 1023px) {
    .tpcl-header__row-nav {
        display: none;
    }
}

.tpcl-nav__parent {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.5rem 0;
}

.tpcl-nav__parent-link {
    font-weight: 600;
    color: var(--text-gray);
    padding: 0.5rem 0.5rem;
    border-radius: 0.5rem;
    transition: all 0.2s ease;
    white-space: nowrap;
}

.tpcl-nav__parent-link:hover,
.tpcl-nav__parent-link:focus {
    color: var(--accent-color);
    background-color: var(--accent-light);
}

.tpcl-nav__dropdown-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.25rem;
    color: var(--text-gray);
    border-radius: 0.25rem;
    transition: background-color 0.15s ease;
}

.tpcl-nav__dropdown-toggle:hover {
    background-color: rgba(0, 0, 0, 0.05);
    color: var(--accent-color);
}

.tpcl-nav__link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--text-gray);
    padding: 0.5rem 0.5rem;
    border-radius: 0.5rem;
    transition: all 0.2s ease;
    white-space: nowrap;
}

.tpcl-nav__link:hover,
.tpcl-nav__link:focus {
    color: var(--accent-color);
    background-color: var(--accent-light);
}

.tpcl-nav__link--ghost {
    border: 1px solid rgba(219, 39, 119, 0.2);
    border-radius: 999px;
    padding: 0.45rem 1.1rem;
    font-weight: 600;
}

.tpcl-nav__link--ghost:hover,
.tpcl-nav__link--ghost:focus {
    border-color: var(--accent-color);
    color: var(--accent-color);
    background-color: rgba(219, 39, 119, 0.08);
}

.tpcl-nav__link--cta {
    background-color: var(--accent-color);
    color: #fff;
    border-radius: 999px;
    padding: 0.6rem 1.4rem;
    font-weight: 700;
    box-shadow: 0 10px 20px rgba(219, 39, 119, 0.18);
}

.tpcl-nav__link--cta:hover,
.tpcl-nav__link--cta:focus {
    background-color: var(--accent-dark);
    color: #fff;
}

.tpcl-mega {
    position: absolute;
    top: 100%;
    left: 0;
    transform: scale(0.97);
    opacity: 0;
    visibility: hidden;
    width: 15rem;
    background: var(--surface);
    border-radius: 0.75rem;
    border: 1px solid rgba(15, 23, 42, 0.05);
    box-shadow: 0 20px 45px rgba(15, 23, 42, 0.18);
    transition: opacity 0.2s ease, transform 0.2s ease;
    padding: 0.5rem;
    z-index: 30;
}

/* JavaScript controls dropdown visibility via .is-open class */
.group.is-open > .tpcl-nav__parent + .tpcl-mega {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
}

.tpcl-mega__inner {
    display: grid;
    gap: 0.25rem;
}

.tpcl-mega__link {
    display: block;
    padding: 0.55rem 0.75rem;
    border-radius: 0.6rem;
    font-weight: 500;
    color: var(--text-dark);
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tpcl-mega__link:hover,
.tpcl-mega__link:focus {
    background-color: var(--accent-light);
    color: var(--accent-color);
}

/* Last menu item: align dropdown to right edge to prevent cutoff */
.tpcl-nav > .relative.group:last-child .tpcl-mega {
    left: auto;
    right: 0;
}

.tpcl-nav > .relative.group:last-child.is-open .tpcl-mega {
    transform: scale(1);
}

/* Mega menu category (3rd level support) */
.tpcl-mega__category {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.tpcl-mega__category:first-child {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

.tpcl-mega__category-title {
    display: block;
    padding: 0.45rem 0.75rem;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-gray);
    cursor: pointer;
    transition: color 0.2s ease;
}

.tpcl-mega__category:hover .tpcl-mega__category-title {
    color: var(--accent-color);
}

.tpcl-mega__group {
    display: none;
    gap: 0.25rem;
    margin-top: 0.5rem;
    padding-left: 1rem;
}

.tpcl-mega__category:hover .tpcl-mega__group {
    display: grid;
}

/* Desktop: フライアウトメニュー */
@media (min-width: 1024px) {
    .tpcl-mega__category {
        position: relative;
    }

    .tpcl-mega__category-title {
        display: flex;
        align-items: center;
        justify-content: space-between;
        border-radius: 0.6rem;
        transition: color 0.2s ease, background-color 0.2s ease;
    }

    .tpcl-mega__category-title::after {
        content: "›";
        font-size: 1.2rem;
        opacity: 0.5;
    }

    .tpcl-mega__category:hover .tpcl-mega__category-title {
        background-color: var(--accent-light);
    }

    .tpcl-mega__group {
        position: absolute;
        left: 100%;
        top: 0;
        min-width: 220px;
        background: var(--surface);
        box-shadow: 0 4px 16px rgba(15, 23, 42, 0.12);
        padding: 0.75rem;
        border-radius: 0.75rem;
        margin-left: 0.5rem;
        margin-top: 0;
        padding-left: 0;
    }

    .tpcl-mega__group::before {
        content: "";
        position: absolute;
        right: 100%;
        top: 0;
        bottom: 0;
        width: 0.5rem;
    }
}

.tpcl-mega__sublink {
    display: block;
    padding: 0.5rem 0.75rem;
    border-radius: 0.6rem;
    font-weight: 500;
    font-size: 0.95rem;
    color: var(--text-dark);
    transition: background-color 0.2s ease, color 0.2s ease;
}

.tpcl-mega__sublink:hover,
.tpcl-mega__sublink:focus {
    background-color: var(--accent-light);
    color: var(--accent-color);
}

.tpcl-mobile-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    flex-shrink: 0;
    padding: 0.45rem;
    border-radius: 0.75rem;
    border: 1px solid rgba(15, 23, 42, 0.1);
    background: var(--surface);
    color: var(--text-dark);
}

.tpcl-mobile-toggle:hover,
.tpcl-mobile-toggle:focus {
    border-color: var(--accent-color);
    color: var(--accent-color);
}

.tpcl-mobile-menu {
    border-bottom: 1px solid var(--border-color);
    background-color: var(--surface);
    box-shadow: 0 18px 40px rgba(15, 23, 42, 0.1);
}

.tpcl-mobile-menu__inner {
    padding: 1.5rem 0 2rem;
    display: grid;
    gap: 1.1rem;
}

/* Mobile Home Link */
.tpcl-mobile__home {
    display: block;
    font-weight: 600;
    color: var(--text-dark);
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-color);
}

.tpcl-mobile__home:hover,
.tpcl-mobile__home:focus {
    color: var(--accent-color);
}

.tpcl-mobile__item {
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 1rem;
}

.tpcl-mobile__toggle {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: 600;
    color: var(--text-dark);
    background: transparent;
    border: none;
    cursor: pointer;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tpcl-mobile__children {
    display: grid;
    gap: 0.65rem;
    margin-top: 0.75rem;
    padding-left: 0.75rem;
}

.tpcl-mobile__child {
    display: block;
    color: var(--text-gray);
    font-size: 0.95rem;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tpcl-mobile__child:hover,
.tpcl-mobile__child:focus {
    color: var(--accent-color);
}

.tpcl-mobile__category {
    margin-top: 0.5rem;
}

.tpcl-mobile__category-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    color: var(--text-gray);
    font-size: 0.9rem;
    font-weight: 600;
    padding: 0.5rem 0;
    text-align: left;
    cursor: pointer;
}

.tpcl-mobile__grandchild {
    display: block;
    color: var(--text-gray);
    font-size: 0.9rem;
    padding-left: 1rem;
}

.tpcl-mobile__grandchild:hover,
.tpcl-mobile__grandchild:focus {
    color: var(--accent-color);
}

.tpcl-mobile__link,
.tpcl-mobile__cta {
    display: block;
    text-align: center;
    padding: 0.75rem;
    border-radius: 0.9rem;
    font-weight: 600;
    color: var(--text-dark);
    border: 1px solid rgba(15, 23, 42, 0.08);
}

.tpcl-mobile__link--cta,
.tpcl-mobile__cta {
    background-color: var(--accent-color);
    color: #fff;
    border: none;
}

.tpcl-mobile__link--cta:hover,
.tpcl-mobile__cta:hover {
    background-color: var(--accent-dark);
}

.tpcl-mobile__cta--ghost {
    background: rgba(219, 39, 119, 0.08);
    color: var(--accent-color);
}

.tpcl-mobile__languages {
    padding: 1rem 0;
    margin-top: 0.5rem;
    border-top: 1px solid var(--border-color);
}

.tpcl-mobile__languages select {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background-color: var(--surface);
    color: var(--text-dark);
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
}

.tpcl-mobile__languages select:hover,
.tpcl-mobile__languages select:focus {
    border-color: var(--accent-color);
    outline: none;
    box-shadow: 0 0 0 3px rgba(219, 39, 119, 0.1);
}

.tpcl-main {
    padding-bottom: 6rem;
}

/* ====================================================================
   CTA Side Tab - Modern Minimal Intrusion Design
   右端に配置されるモダンなCTAサイドタブ
   ==================================================================== */

/* CSS Variables for CTA Tab */
:root {
    --cta-tab-edge-width: 8px;
    --cta-tab-collapsed-width: 48px;
    --cta-tab-expanded-width: 220px;
    --cta-tab-transition-fast: 150ms;
    --cta-tab-transition-normal: 200ms;
    --cta-tab-easing: cubic-bezier(0.4, 0, 0.2, 1);
    --cta-tab-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
    --cta-tab-z-index: 50;
}

/* Base Container */
.tpcl-cta-tab {
    position: fixed;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    z-index: var(--cta-tab-z-index);
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    opacity: 1;
    pointer-events: auto;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

/* Close Button - Minimize panel (inside panel, top right) */
.tpcl-cta-tab__close {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #f1f5f9;
    color: #64748b;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    transition: all 0.2s ease;
}

.tpcl-cta-tab__close i,
.tpcl-cta-tab__close svg {
    width: 16px !important;
    height: 16px !important;
}

.tpcl-cta-tab__close:hover {
    background: #e2e8f0;
    color: #334155;
}

.tpcl-cta-tab__close:focus-visible {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}

/* 折りたたみ時は閉じるボタンを非表示 */
.tpcl-cta-tab[data-state="collapsed"] .tpcl-cta-tab__close {
    opacity: 0;
    pointer-events: none;
}

/* Edge Indicator - Collapsed State Visual */
.tpcl-cta-tab__edge {
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: var(--cta-tab-edge-width);
    height: 80px;
    background: linear-gradient(180deg, var(--accent-color) 0%, var(--accent-dark) 100%);
    border-radius: 4px 0 0 4px;
    transition: opacity var(--cta-tab-transition-fast) var(--cta-tab-easing);
    cursor: pointer;
}

/* Pulse Animation for Edge */
.tpcl-cta-tab__pulse {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: inherit;
    border-radius: inherit;
    animation: tpcl-cta-pulse 2.5s ease-in-out infinite;
}

@keyframes tpcl-cta-pulse {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(219, 39, 119, 0.5);
        opacity: 1;
    }
    50% {
        box-shadow: -8px 0 20px 4px rgba(219, 39, 119, 0.3);
        opacity: 0.8;
    }
}

.tpcl-cta-tab[data-state="expanded"] .tpcl-cta-tab__edge {
    opacity: 0;
    pointer-events: none;
}

/* Restore Sticky Note - Shows when CTA is completely dismissed */
.tpcl-cta-tab__restore {
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%) translateX(100%);
    background: linear-gradient(135deg, var(--accent-color) 0%, var(--accent-dark) 100%);
    color: white;
    border: none;
    padding: 16px 12px;
    border-radius: 8px 0 0 8px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow:
        -4px 4px 12px rgba(219, 39, 119, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.2);
    opacity: 0;
    pointer-events: none;
    transition: all 0.3s var(--cta-tab-bounce);
    white-space: nowrap;
    z-index: 10;
    /* 付箋スタイル - 縦書き */
    -webkit-writing-mode: vertical-rl;
    -ms-writing-mode: tb-rl;
    writing-mode: vertical-rl;
}

/* 付箋の折り目効果 */
.tpcl-cta-tab__restore::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 12px;
    height: 12px;
    background: linear-gradient(135deg, rgba(0,0,0,0.1) 50%, transparent 50%);
    border-radius: 0 0 8px 0;
}

.tpcl-cta-tab__restore-text {
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.15em;
    -webkit-text-orientation: upright;
    text-orientation: upright;
}

.tpcl-cta-tab__restore:hover {
    background: linear-gradient(135deg, var(--accent-dark) 0%, #9d174d 100%);
    transform: translateY(-50%) translateX(-8px);
    box-shadow:
        -6px 4px 20px rgba(219, 39, 119, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

.tpcl-cta-tab__restore:focus-visible {
    outline: 3px solid rgba(255, 255, 255, 0.8);
    outline-offset: 2px;
}

/* Dismissed state - show restore sticky note, hide everything else */
.tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__restore {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(-50%) translateX(0);
}

.tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__edge,
.tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__panel,
.tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__close {
    opacity: 0;
    pointer-events: none;
}

/* Subtle bounce animation for sticky note */
@keyframes tpcl-restore-bounce {
    0%, 100% {
        transform: translateY(-50%) translateX(0);
    }
    50% {
        transform: translateY(-50%) translateX(-4px);
    }
}

.tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__restore {
    animation: tpcl-restore-bounce 3s ease-in-out infinite;
}

.tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__restore:hover {
    animation: none;
}

/* Toggle Button */
.tpcl-cta-tab__toggle {
    position: relative;
    width: 36px;
    height: auto;
    padding: 12px 8px;
    border: none;
    background: var(--accent-color);
    color: white;
    border-radius: 8px 0 0 8px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: -2px 0 12px rgba(0, 0, 0, 0.15);
    transition:
        background var(--cta-tab-transition-fast) var(--cta-tab-easing),
        transform 0.25s var(--cta-tab-bounce),
        border-radius var(--cta-tab-transition-normal) var(--cta-tab-easing);
}

/* Toggle Text (Vertical) */
.tpcl-cta-tab__toggle-text {
    -webkit-writing-mode: vertical-rl;
    -ms-writing-mode: tb-rl;
    writing-mode: vertical-rl;
    -webkit-text-orientation: upright;
    text-orientation: upright;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.1em;
    white-space: nowrap;
    transition: opacity var(--cta-tab-transition-fast) var(--cta-tab-easing);
}

.tpcl-cta-tab[data-state="expanded"] .tpcl-cta-tab__toggle-text {
    opacity: 0;
    position: absolute;
}

.tpcl-cta-tab__toggle:hover {
    background: var(--accent-dark);
    transform: translateX(-4px) scale(1.05);
}

.tpcl-cta-tab__toggle:focus-visible {
    outline: 3px solid rgba(255, 255, 255, 0.8);
    outline-offset: 2px;
}

.tpcl-cta-tab__toggle:active {
    transform: translateX(-2px) scale(0.98);
    transition-duration: 0.1s;
}

/* Toggle Close Icon */
.tpcl-cta-tab__toggle-close {
    width: 20px;
    height: 20px;
    position: absolute;
    opacity: 0;
    transform: rotate(-90deg);
    transition:
        opacity var(--cta-tab-transition-fast) var(--cta-tab-easing),
        transform var(--cta-tab-transition-fast) var(--cta-tab-easing);
}

.tpcl-cta-tab[data-state="expanded"] .tpcl-cta-tab__toggle-close {
    opacity: 1;
    transform: rotate(0deg);
}

.tpcl-cta-tab[data-state="expanded"] .tpcl-cta-tab__toggle {
    width: 40px;
    height: 40px;
    padding: 0;
}

/* Actions Panel */
.tpcl-cta-tab__panel {
    position: absolute;
    right: 0;
    top: 0;
    margin-top: 0;
    background: white;
    border-radius: 12px 0 0 12px;
    box-shadow: -4px 4px 24px rgba(0, 0, 0, 0.12);
    overflow: hidden;
    width: var(--cta-tab-expanded-width);
    max-height: 0;
    opacity: 0;
    transform: translateX(100%);
    transition:
        max-height var(--cta-tab-transition-normal) var(--cta-tab-easing),
        opacity var(--cta-tab-transition-fast) var(--cta-tab-easing),
        transform var(--cta-tab-transition-normal) var(--cta-tab-easing);
}

.tpcl-cta-tab[data-state="expanded"] .tpcl-cta-tab__panel {
    max-height: 400px;
    opacity: 1;
    transform: translateX(0);
}

/* Actions Container */
.tpcl-cta-tab__actions {
    display: flex;
    flex-direction: column;
    padding: 40px 0 8px 0;
}

/* Individual Action Button */
.tpcl-cta-tab__action {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    color: #374151;
    text-decoration: none;
    border: none;
    background: transparent;
    width: 100%;
    text-align: left;
    cursor: pointer;
    overflow: hidden;
    transition:
        background var(--cta-tab-transition-fast) var(--cta-tab-easing),
        color var(--cta-tab-transition-fast) var(--cta-tab-easing),
        transform 0.25s var(--cta-tab-bounce);
}

.tpcl-cta-tab__action:hover {
    background: var(--accent-light);
    color: var(--accent-dark);
    transform: translateX(-4px);
}

.tpcl-cta-tab__action:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 2px var(--accent-color);
}

.tpcl-cta-tab__action:active {
    transform: translateX(-2px) scale(0.98);
}

/* Ripple Effect */
.tpcl-cta-tab__action::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    top: 50%;
    left: 50%;
    pointer-events: none;
    background: radial-gradient(circle, rgba(219, 39, 119, 0.25) 0%, transparent 70%);
    transform: translate(-50%, -50%) scale(0);
    opacity: 0;
    border-radius: inherit;
}

@keyframes tpcl-cta-ripple {
    0% {
        transform: translate(-50%, -50%) scale(0);
        opacity: 1;
    }
    100% {
        transform: translate(-50%, -50%) scale(2.5);
        opacity: 0;
    }
}

.tpcl-cta-tab__action.rippling::after {
    animation: tpcl-cta-ripple 0.5s ease-out forwards;
}

/* Action Icon */
.tpcl-cta-tab__action-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: var(--accent-light);
    border-radius: 50%;
    flex-shrink: 0;
    transition: background var(--cta-tab-transition-fast) var(--cta-tab-easing);
}

.tpcl-cta-tab__action-icon i,
.tpcl-cta-tab__action-icon svg {
    width: 18px;
    height: 18px;
    color: var(--accent-color);
}

.tpcl-cta-tab__action:hover .tpcl-cta-tab__action-icon {
    background: var(--accent-color);
}

.tpcl-cta-tab__action:hover .tpcl-cta-tab__action-icon i,
.tpcl-cta-tab__action:hover .tpcl-cta-tab__action-icon svg {
    color: white;
}

/* Action Label */
.tpcl-cta-tab__action-label {
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
}

/* Type-based Icon Colors - All unified to accent color (pink) */
/* chat, social, contact, default all use the same accent color scheme */

/* ====================================================================
   Mobile Styles (FAB Mode)
   ==================================================================== */
@media (max-width: 767px) {
    .tpcl-cta-tab {
        top: auto;
        bottom: 20px;
        transform: none;
    }

    .tpcl-cta-tab__edge {
        display: none;
    }

    /* Restore sticky note - mobile position at bottom */
    .tpcl-cta-tab__restore {
        top: auto;
        bottom: 0;
        transform: translateX(100%);
        border-radius: 8px 0 0 8px;
        padding: 14px 10px;
    }

    .tpcl-cta-tab__restore:hover {
        transform: translateX(-8px);
    }

    .tpcl-cta-tab[data-state="dismissed"] .tpcl-cta-tab__restore {
        transform: translateX(0);
        animation: tpcl-restore-bounce-mobile 3s ease-in-out infinite;
    }

    @keyframes tpcl-restore-bounce-mobile {
        0%, 100% {
            transform: translateX(0);
        }
        50% {
            transform: translateX(-4px);
        }
    }

    .tpcl-cta-tab__toggle {
        width: 56px;
        height: 56px;
        border-radius: 50%;
        box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
    }

    .tpcl-cta-tab__toggle:hover {
        transform: scale(1.05);
    }

    .tpcl-cta-tab[data-state="expanded"] .tpcl-cta-tab__toggle {
        border-radius: 50%;
    }

    .tpcl-cta-tab__panel {
        top: auto;
        bottom: 100%;
        margin-top: 0;
        margin-bottom: 12px;
        width: min(300px, calc(100vw - 40px));
        border-radius: 16px;
        box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.15);
    }

    .tpcl-cta-tab__action {
        padding: 16px 20px;
    }

    .tpcl-cta-tab__action-icon {
        width: 44px;
        height: 44px;
    }

    .tpcl-cta-tab__action-icon i,
    .tpcl-cta-tab__action-icon svg {
        width: 22px;
        height: 22px;
    }

    .tpcl-cta-tab__action-label {
        font-size: 15px;
    }
}

/* ====================================================================
   Accessibility - Reduced Motion
   ==================================================================== */
@media (prefers-reduced-motion: reduce) {
    .tpcl-cta-tab,
    .tpcl-cta-tab__edge,
    .tpcl-cta-tab__pulse,
    .tpcl-cta-tab__toggle,
    .tpcl-cta-tab__toggle-icon,
    .tpcl-cta-tab__toggle-close,
    .tpcl-cta-tab__panel,
    .tpcl-cta-tab__action,
    .tpcl-cta-tab__action-icon,
    .tpcl-cta-tab__restore {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }

    .tpcl-cta-tab__pulse,
    .tpcl-cta-tab__restore {
        animation: none;
    }
}

/* Hide legacy CTA components */
.tpcl-sticky-cta,
.tpcl-fab {
    display: none !important;
}

/* ====================================================================
   Modal Dialogs
   ==================================================================== */
.tpcl-modal {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.tpcl-modal[hidden] {
    display: none;
}

.tpcl-modal__overlay {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(4px);
    animation: fadeIn 0.3s ease;
}

.tpcl-modal__content {
    position: relative;
    background: white;
    border-radius: 1rem;
    max-width: 500px;
    width: 100%;
    max-height: 90vh;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    animation: slideUp 0.3s ease;
}

.tpcl-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem;
    border-bottom: 1px solid rgba(15, 23, 42, 0.1);
}

.tpcl-modal__title {
    font-size: 1.25rem;
    font-weight: 700;
    color: #1F2937;
    margin: 0;
}

.tpcl-modal__close {
    background: none;
    border: none;
    cursor: pointer;
    color: #6B7280;
    padding: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.5rem;
    transition: background 0.2s ease, color 0.2s ease;
}

.tpcl-modal__close:hover,
.tpcl-modal__close:focus {
    background: rgba(0, 0, 0, 0.05);
    color: #1F2937;
}

.tpcl-modal__body {
    padding: 1.5rem;
    overflow-y: auto;
    max-height: calc(90vh - 5rem);
}

/* Chat Platform Cards */
.tpcl-chat-card {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.25rem;
    border-radius: 0.75rem;
    background: white;
    border: 2px solid rgba(15, 23, 42, 0.1);
    text-decoration: none;
    color: inherit;
    transition: all 0.2s ease;
    margin-bottom: 0.75rem;
}

.tpcl-chat-card:last-child {
    margin-bottom: 0;
}

.tpcl-chat-card:hover,
.tpcl-chat-card:focus {
    border-color: var(--platform-color, var(--accent-color));
    background: rgba(var(--platform-color, 219, 39, 119), 0.02);
    transform: translateX(4px);
}

.tpcl-chat-card__icon {
    flex-shrink: 0;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 0.75rem;
    background: var(--platform-color, var(--accent-color));
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
}

.tpcl-chat-card__content {
    flex: 1;
    min-width: 0;
}

.tpcl-chat-card__name {
    font-size: 1.125rem;
    font-weight: 700;
    color: #1F2937;
    margin: 0 0 0.25rem 0;
}

.tpcl-chat-card__description {
    font-size: 0.875rem;
    color: #6B7280;
    margin: 0;
}

.tpcl-chat-card__arrow {
    flex-shrink: 0;
    color: #9CA3AF;
    transition: transform 0.2s ease, color 0.2s ease;
}

.tpcl-chat-card:hover .tpcl-chat-card__arrow,
.tpcl-chat-card:focus .tpcl-chat-card__arrow {
    color: var(--platform-color, var(--accent-color));
    transform: translateX(4px);
}

/* Modal Animations */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Mobile Modal Adjustments */
@media (max-width: 767px) {
    .tpcl-modal {
        padding: 0.5rem;
    }

    .tpcl-modal__content {
        max-width: 100%;
        border-radius: 0.75rem;
    }

    .tpcl-modal__header,
    .tpcl-modal__body {
        padding: 1rem;
    }

    .tpcl-chat-card {
        padding: 1rem;
    }

    .tpcl-chat-card__icon {
        width: 3rem;
        height: 3rem;
    }

    .tpcl-chat-card__name {
        font-size: 1rem;
    }
}

/* ==========================================================================
   CTA Banner - Content embedded CTA section
   ========================================================================== */
.tpcl-cta-banner {
    text-align: center;
    padding: 50px 30px;
    background: linear-gradient(135deg, #fce7f3 0%, #f5d0fe 25%, #e9d5ff 50%, #ddd6fe 75%, #e0e7ff 100%);
    border-radius: 16px;
    color: #1f2937;
    margin-top: 50px;
}

.tpcl-cta-banner h3 {
    margin: 0 0 15px 0;
    font-size: 1.5rem;
    color: #1f2937;
}

.tpcl-cta-banner p {
    margin: 0 0 25px 0;
    color: #4b5563;
}

.tpcl-cta-banner a {
    display: inline-block;
    padding: 18px 50px;
    background: var(--accent-color);
    color: white !important;
    text-decoration: none;
    border-radius: 30px;
    font-weight: bold;
    font-size: 1rem;
    box-shadow: 0 4px 15px rgba(0,0,0,0.15);
    transition: transform 0.2s;
}

.tpcl-cta-banner a:hover {
    transform: translateY(-2px);
}

.tpcl-footer {
    background: var(--surface);
    border-top: 1px solid var(--border-color);
    padding: 4rem 0 3rem;
    margin-top: 6rem;
}

.tpcl-footer__head {
    text-align: center;
    margin-bottom: 2.5rem;
}

.tpcl-footer__section-title {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 1.5rem;
}

.tpcl-footer__tagline {
    color: var(--text-gray);
    margin-top: 0.75rem;
}

.tpcl-footer__companies {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2.5rem;
}

@media (min-width: 768px) {
    .tpcl-footer__companies {
        flex-direction: row;
        justify-content: center;
        gap: 4rem;
    }
}

.tpcl-footer__company {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
}

.tpcl-footer__company-names {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
}

.tpcl-footer__company-name-en {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-dark);
    line-height: 1.3;
    text-align: center;
}

.tpcl-footer__company-name-ja {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--text-dark);
    line-height: 1.3;
    text-align: center;
}

.tpcl-footer__company-desc {
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--text-gray);
    line-height: 1.4;
    text-align: center;
}

.tpcl-footer__grid {
    display: grid;
    gap: 2rem;
    margin-bottom: 2.5rem;
}

@media (min-width: 768px) {
    .tpcl-footer__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .tpcl-footer__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.tpcl-footer__title {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
}

.tpcl-footer__link {
    display: block;
    color: var(--text-gray);
    margin-bottom: 0.4rem;
    font-size: 0.95rem;
}

.tpcl-footer__link:hover,
.tpcl-footer__link:focus {
    color: var(--accent-color);
}

.tpcl-footer__placeholder {
    font-size: 0.9rem;
    color: var(--text-muted);
}

.tpcl-footer__social {
    display: flex;
    justify-content: center;
    gap: 1.25rem;
    margin-bottom: 2rem;
}

.tpcl-footer__social-link {
    color: var(--text-muted);
}

.tpcl-footer__social-link:hover,
.tpcl-footer__social-link:focus {
    color: var(--accent-color);
}

.tpcl-footer__meta {
    text-align: center;
    color: var(--text-muted);
    font-size: 0.85rem;
}

/* Shared section titles */
.section-title-jp {
    font-size: clamp(1.25rem, 3vw, 1.5rem);
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 0.35rem;
}

.section-title-en {
    font-size: clamp(0.75rem, 2vw, 0.9rem);
    font-weight: 600;
    color: var(--accent-color);
    letter-spacing: 0.22em;
}

.card {
    background-color: var(--surface);
    border-radius: 0.9rem;
    box-shadow: 0 15px 35px rgba(15, 23, 42, 0.06);
    overflow: hidden;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    display: flex;
    flex-direction: column;
}

.card:hover,
.card:focus-within {
    transform: translateY(-6px);
    box-shadow: 0 20px 40px rgba(15, 23, 42, 0.12);
}

.card-content {
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    flex: 1;
}

/* カード内のボタン/リンクを下部固定 */
.card-content > .tpcl-button,
.card-content > a:last-child {
    margin-top: auto;
}

.card-tag {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--accent-color);
    background-color: var(--accent-light);
    padding: 0.35rem 0.65rem;
    border-radius: 999px;
}

.tag-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background-color: #F3F4F6;
    color: #4B5563;
    padding: 0.45rem 0.9rem;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 600;
}

.tag-pill:hover,
.tag-pill:focus {
    background-color: var(--accent-light);
    color: var(--accent-color);
}

.map-tab-btn {
    background-color: #F3F4F6;
    color: #4B5563;
    border-radius: 0.75rem;
    padding: 0.75rem 1.4rem;
    font-weight: 600;
    transition: all 0.2s ease;
}

.map-tab-btn:hover,
.map-tab-btn:focus {
    background-color: var(--accent-light);
    color: var(--accent-color);
}

.map-tab-btn.active {
    background-color: var(--accent-color);
    color: #fff;
}

.map-content {
    display: none;
}

.map-content.active {
    display: block;
}

.hover\:text-pink-600:hover,
.hover\:text-accent:hover {
    color: var(--accent-color) !important;
}

.text-pink-600,
.text-accent {
    color: var(--accent-color) !important;
}

.bg-pink-600,
.bg-accent-color {
    background-color: var(--accent-color) !important;
    color: #fff;
}

.bg-pink-50 {
    background-color: var(--accent-light) !important;
}

.border-pink-600 {
    border-color: var(--accent-color) !important;
}

.hover\:bg-pink-700:hover,
.hover\:bg-accent-color-dark:hover {
    background-color: var(--accent-dark) !important;
}

.hover\:border-pink-600:hover {
    border-color: var(--accent-color) !important;
}

.hover\:text-pink-800:hover {
    color: var(--accent-dark) !important;
}

.inline-block.bg-pink-100 {
    background-color: rgba(219, 39, 119, 0.15) !important;
    color: var(--accent-color) !important;
}

.text-gray-600 {
    color: var(--text-gray) !important;
}

.text-gray-500 {
    color: var(--text-muted) !important;
}

.text-gray-900 {
    color: var(--text-dark) !important;
}

.bg-gray-50 {
    background-color: #F9FAFB !important;
}

.bg-gray-100 {
    background-color: #F3F4F6 !important;
}

.border-gray-200 {
    border-color: var(--border-color) !important;
}

.shadow-lg {
    box-shadow: 0 20px 40px rgba(15, 23, 42, 0.12) !important;
}

.hover\:shadow-xl:hover {
    box-shadow: 0 35px 60px rgba(15, 23, 42, 0.18) !important;
}

@media print {
    @page {
        size: A4;
        margin: 1.5cm 1cm;
    }

    body {
        background: #fff;
    }

    a[href]:after {
        content: " (" attr(href) ")";
        font-size: 0.85em;
    }
}

.tpcl-placeholder {
    padding: 6rem 0;
    text-align: center;
    color: var(--text-gray);
}

.tpcl-placeholder__inner {
    background: rgba(255, 255, 255, 0.8);
    border: 1px dashed var(--border-color);
    border-radius: 1rem;
    padding: 3rem 2rem;
    max-width: 680px;
    margin: 0 auto;
    display: grid;
    gap: 1rem;
}

.tpcl-placeholder h1 {
    font-size: 1.5rem;
    color: var(--text-dark);
}
.tpcl-loop {
    padding: 4rem 0 5rem;
}

.tpcl-loop__grid {
    display: grid;
    gap: 2rem;
}

@media (min-width: 768px) {
    .tpcl-loop__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .tpcl-loop__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.tpcl-loop__thumb img {
    width: 100%;
    height: 240px;
    object-fit: cover;
}

.tpcl-loop__meta {
    font-size: 0.85rem;
    color: var(--text-muted);
}

.tpcl-loop__title a {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-dark);
    display: inline-block;
}

.tpcl-loop__excerpt {
    color: var(--text-gray);
    font-size: 0.95rem;
}

.tpcl-loop__more {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-weight: 600;
    color: var(--accent-color);
}

.tpcl-pagination {
    margin-top: 3rem;
    display: flex;
    justify-content: center;
}

.tpcl-pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    margin: 0 0.25rem;
    border-radius: 0.75rem;
    background-color: var(--surface);
    border: 1px solid var(--border-color);
    color: var(--text-gray);
    font-weight: 600;
}

.tpcl-pagination .page-numbers.current,
.tpcl-pagination .page-numbers:hover {
    background-color: var(--accent-color);
    color: #fff;
    border-color: var(--accent-color);
}

/* WordPress the_posts_pagination() styles */
.navigation.pagination {
    margin-top: 3rem;
}

.navigation.pagination .nav-links {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.navigation.pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.5rem;
    height: 2.5rem;
    padding: 0 0.75rem;
    border-radius: 0.75rem;
    background-color: var(--surface);
    border: 1px solid var(--border-color);
    color: var(--text-gray);
    font-weight: 600;
    transition: all 0.2s;
}

.navigation.pagination .page-numbers:hover {
    background-color: var(--accent-color);
    color: #fff;
    border-color: var(--accent-color);
}

.navigation.pagination .page-numbers.current {
    background-color: var(--accent-color);
    color: #fff;
    border-color: var(--accent-color);
}

.navigation.pagination .page-numbers.dots {
    background: transparent;
    border: none;
    color: var(--text-gray);
}

.navigation.pagination .page-numbers.dots:hover {
    background: transparent;
    color: var(--text-gray);
}

.tpcl-empty {
    text-align: center;
    padding: 4rem 2rem;
    background: var(--surface);
    border-radius: 1rem;
    box-shadow: 0 20px 40px rgba(15, 23, 42, 0.08);
}

.tpcl-page {
    padding: 4rem 0 6rem;
}

.tpcl-page__article {
    background: var(--surface);
    border-radius: 1rem;
    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.08);
    padding: 2.5rem 2rem;
}

@media (min-width: 768px) {
    .tpcl-page__article {
        padding: 3.5rem 3rem;
    }
}

.tpcl-page__title {
    font-size: clamp(2rem, 4vw, 2.75rem);
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 1.5rem;
}

.tpcl-page__content {
    color: var(--text-gray);
    font-size: 1rem;
    line-height: 1.8;
}

/* Heading styles (H1-H6) - Enhanced specificity for Tailwind CSS override */
.tpcl-page__content h1,
.tpcl-page__article h1,
article .tpcl-page__content h1 {
    font-size: 2.25rem !important;
    font-weight: 700 !important;
    color: var(--text-dark) !important;
    margin-top: 2.5rem !important;
    margin-bottom: 1.5rem !important;
    line-height: 1.3 !important;
}

.tpcl-page__content h2,
.tpcl-page__article h2,
article .tpcl-page__content h2 {
    font-size: 1.875rem !important;
    font-weight: 700 !important;
    color: var(--text-dark) !important;
    margin-top: 2.5rem !important;
    margin-bottom: 1rem !important;
    line-height: 1.4 !important;
}

.tpcl-page__content h3,
.tpcl-page__article h3,
article .tpcl-page__content h3 {
    font-size: 1.5rem !important;
    font-weight: 600 !important;
    color: var(--text-dark) !important;
    margin-top: 2rem !important;
    margin-bottom: 1rem !important;
    line-height: 1.4 !important;
}

.tpcl-page__content h4,
.tpcl-page__article h4,
article .tpcl-page__content h4 {
    font-size: 1.25rem !important;
    font-weight: 600 !important;
    color: var(--text-dark) !important;
    margin-top: 1.75rem !important;
    margin-bottom: 0.75rem !important;
    line-height: 1.5 !important;
}

.tpcl-page__content h5,
.tpcl-page__article h5,
article .tpcl-page__content h5 {
    font-size: 1.125rem !important;
    font-weight: 600 !important;
    color: var(--text-dark) !important;
    margin-top: 1.5rem !important;
    margin-bottom: 0.75rem !important;
    line-height: 1.5 !important;
}

.tpcl-page__content h6,
.tpcl-page__article h6,
article .tpcl-page__content h6 {
    font-size: 1rem !important;
    font-weight: 600 !important;
    color: var(--text-gray) !important;
    margin-top: 1.5rem !important;
    margin-bottom: 0.75rem !important;
    line-height: 1.5 !important;
}

/* First heading in content should not have top margin */
.tpcl-page__content > h1:first-child,
.tpcl-page__content > h2:first-child,
.tpcl-page__content > h3:first-child,
.tpcl-page__content > h4:first-child,
.tpcl-page__content > h5:first-child,
.tpcl-page__content > h6:first-child,
.tpcl-page__content > *:first-child > h1:first-child,
.tpcl-page__content > *:first-child > h2:first-child,
.tpcl-page__content > *:first-child > h3:first-child,
.tpcl-page__content > *:first-child > h4:first-child,
.tpcl-page__content > *:first-child > h5:first-child,
.tpcl-page__content > *:first-child > h6:first-child,
.tpcl-page__content > *:first-child > *:first-child > h1:first-child,
.tpcl-page__content > *:first-child > *:first-child > h2:first-child,
.tpcl-page__content > *:first-child > *:first-child > h3:first-child,
.tpcl-page__content > *:first-child > *:first-child > h4:first-child,
.tpcl-page__content > *:first-child > *:first-child > h5:first-child,
.tpcl-page__content > *:first-child > *:first-child > h6:first-child,
.tpcl-page__content > *:first-child > *:first-child > *:first-child > h1:first-child,
.tpcl-page__content > *:first-child > *:first-child > *:first-child > h2:first-child,
.tpcl-page__content > *:first-child > *:first-child > *:first-child > h3:first-child,
.tpcl-page__content > *:first-child > *:first-child > *:first-child > h4:first-child,
.tpcl-page__content > *:first-child > *:first-child > *:first-child > h5:first-child,
.tpcl-page__content > *:first-child > *:first-child > *:first-child > h6:first-child {
    margin-top: 0 !important;
}

/* Also handle .su-note as first element */
.tpcl-page__content > .su-note:first-child,
.tpcl-page__content > *:first-child > .su-note:first-child,
.tpcl-page__content > *:first-child > *:first-child > .su-note:first-child {
    margin-top: 0 !important;
}

/* ========================================
   Heading Decorations (EDU Style)
   ======================================== */

/* H2: Left vertical bar */
.tpcl-page__content h2,
.tpcl-page__article h2 {
    padding-left: 1rem !important;
    padding-bottom: 0 !important;
    border-left: 4px solid var(--accent-color) !important;
    position: relative !important;
}

/* H3: Bottom underline */
.tpcl-page__content h3,
.tpcl-page__article h3 {
    padding-left: 0 !important;
    padding-bottom: 0.5rem !important;
    border-bottom: 3px solid var(--accent-color) !important;
    position: relative !important;
}

/* H4: Square bullet before text */
.tpcl-page__content h4,
.tpcl-page__article h4 {
    padding-left: 1.25rem !important;
    position: relative !important;
}
.tpcl-page__content h4::before,
.tpcl-page__article h4::before {
    content: "■";
    position: absolute;
    left: 0;
    color: var(--accent-color);
    font-size: 0.875rem;
}

/* H5: Diamond bullet before text */
.tpcl-page__content h5,
.tpcl-page__article h5 {
    padding-left: 1.25rem !important;
    position: relative !important;
}
.tpcl-page__content h5::before,
.tpcl-page__article h5::before {
    content: "◆";
    position: absolute;
    left: 0;
    color: var(--accent-color);
    font-size: 0.75rem;
}

/* H6: Dot bullet before text */
.tpcl-page__content h6,
.tpcl-page__article h6 {
    padding-left: 1rem !important;
    position: relative !important;
}
.tpcl-page__content h6::before,
.tpcl-page__article h6::before {
    content: "・";
    position: absolute;
    left: 0;
    color: var(--accent-color);
    font-size: 1rem;
}

/* Lists */
.tpcl-page__content ul,
.tpcl-page__content ol {
    margin-top: 1rem;
    margin-bottom: 1rem;
    padding-left: 1.5rem;
}

.tpcl-page__content ul {
    list-style-type: disc;
}

.tpcl-page__content ol {
    list-style-type: decimal;
}

.tpcl-page__content li {
    margin-bottom: 0.5rem;
}

.tpcl-page__content li > ul,
.tpcl-page__content li > ol {
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
}

/* Paragraphs */
.tpcl-page__content p {
    margin-bottom: 1rem;
}

/* Blockquotes - Enhanced Modern Style */
.tpcl-page__content blockquote {
    background: linear-gradient(135deg, rgba(var(--accent-color-rgb, 233, 30, 99), 0.05) 0%, #fff 100%);
    border-left: 4px solid var(--accent-color);
    border-radius: 0 0.75rem 0.75rem 0;
    padding: 1.5rem 1.5rem 1.5rem 1.25rem;
    margin: 2rem 0;
    color: var(--text-gray);
    font-style: italic;
    position: relative;
}

.tpcl-page__content blockquote::before {
    content: '"';
    font-size: 4rem;
    color: var(--accent-color);
    opacity: 0.15;
    position: absolute;
    top: -0.5rem;
    left: 0.5rem;
    font-family: Georgia, serif;
    line-height: 1;
}

/* Code */
.tpcl-page__content code {
    background-color: var(--surface-muted);
    padding: 0.2rem 0.4rem;
    border-radius: 0.25rem;
    font-size: 0.9em;
    font-family: 'Courier New', Courier, monospace;
}

.tpcl-page__content pre {
    background-color: var(--surface-muted);
    padding: 1rem;
    border-radius: 0.5rem;
    overflow-x: auto;
    margin: 1.5rem 0;
}

.tpcl-page__content pre code {
    background-color: transparent;
    padding: 0;
}

/* Images */
.tpcl-page__content img {
    max-width: 100%;
    height: auto;
    border-radius: 0.5rem;
    margin: 1.5rem 0;
}

/* Links */
.tpcl-page__content a {
    color: var(--accent-color);
    text-decoration: underline;
}

.tpcl-page__content a:hover,
.tpcl-page__content a:focus {
    color: var(--accent-dark);
}

/* Tables */
.tpcl-page__content table {
    width: 100%;
    border-collapse: collapse;
    margin: 1.5rem 0;
}

.tpcl-page__content th,
.tpcl-page__content td {
    padding: 0.75rem;
    border: 1px solid var(--border-color);
}

.tpcl-page__content th {
    background-color: var(--surface-muted);
    font-weight: 700;
    text-align: left;
}

/* Table images - ensure responsiveness even with HTML width/height attributes */
.tpcl-page__content table img,
.prose table img,
.post-content table img {
    max-width: 100% !important;
    height: auto !important;
    width: auto !important;
    margin: 0 auto;
}

/* Table layout - auto for content-based column widths */
.tpcl-page__content table,
.prose table,
.post-content table {
    table-layout: auto;
    width: 100%;
}

/* Table header column styling */
.tpcl-page__content table th[style*="width"],
.prose table th[style*="width"],
.post-content table th[style*="width"] {
    white-space: normal;
}

.tpcl-page__content table th,
.tpcl-page__content table td,
.prose table th,
.prose table td,
.post-content table th,
.post-content table td {
    word-wrap: break-word;
    overflow-wrap: break-word;
}

/* Table responsive wrapper for mobile */
@media (max-width: 768px) {
    .tpcl-page__content table {
        display: block;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .tpcl-page__content table th,
    .tpcl-page__content table td {
        min-width: 120px;
    }
}

.tpcl-page__comments {
    margin-top: 3rem;
}

/* ================================================
   Table of Contents (TOC)
   ================================================ */

.tpcl-toc {
    transition: all 0.3s ease;
}

.tpcl-toc__toggle {
    cursor: pointer;
}

.tpcl-toc__toggle:hover {
    opacity: 0.8;
}

.tpcl-toc__icon {
    transition: transform 0.3s ease;
}

.tpcl-toc__icon.rotate-180 {
    transform: rotate(180deg);
}

.tpcl-toc__nav.hidden {
    display: none;
}

.tpcl-toc__link {
    text-decoration: none;
    border-left: 2px solid transparent;
    transition: all 0.2s ease;
}

.tpcl-toc__link:hover {
    border-left-color: var(--accent-color);
    padding-left: 0.75rem;
}

/* ================================================
   Info/Note Boxes
   ================================================ */

.tpcl-note {
    background: #e3f2fd;
    border-left: 4px solid #2196f3;
    border-radius: 0 0.75rem 0.75rem 0;
    padding: 1rem 1.25rem;
    margin: 1.5rem 0;
}

.tpcl-note--warning {
    background: #fff3e0;
    border-left-color: #ff9800;
}

.tpcl-note--success {
    background: #e8f5e9;
    border-left-color: #4caf50;
}

.tpcl-note--danger {
    background: #ffebee;
    border-left-color: #f44336;
}

/* ================================================
   Enhanced List Markers
   ================================================ */

.tpcl-page__content ul li::marker {
    color: var(--accent-color);
}

.tpcl-page__content ol li::marker {
    color: var(--accent-color);
    font-weight: 600;
}

/* ================================================
   Article Pages (single-support_service, etc.)
   ================================================ */

/* Article Layout */
.article-page {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    padding: 1rem;
}

@media (min-width: 768px) {
    .article-page {
        gap: 1.5rem;
        padding: 2rem 1rem;
    }
}

@media (min-width: 1024px) {
    .article-page {
        grid-template-columns: 0.75fr 2.25fr;
        gap: 2rem;
        padding: 3rem 2rem;
    }
}

/* Article Hero */
.article-hero {
    background: var(--surface);
    border-radius: 0.75rem;
    padding: 1.5rem;
    margin-bottom: 1rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

@media (min-width: 768px) {
    .article-hero {
        padding: 2rem;
        margin-bottom: 2rem;
    }
}

.article-hero--service {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    align-items: center;
    text-align: center;
}

@media (min-width: 768px) {
    .article-hero--service {
        flex-direction: row;
        align-items: center;
        text-align: left;
    }
}

.article-hero__icon-large {
    flex-shrink: 0;
    width: 3rem;
    height: 3rem;
    background: var(--accent-light);
    border-radius: 0.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

@media (min-width: 768px) {
    .article-hero__icon-large {
        width: 4rem;
        height: 4rem;
    }
}

.article-hero__icon-large i {
    width: 2rem;
    height: 2rem;
    color: var(--accent-color);
}

@media (min-width: 768px) {
    .article-hero__icon-large i {
        width: 2.5rem;
        height: 2.5rem;
    }
}

.article-hero__header {
    flex: 1;
    width: 100%;
}

.article-hero__title {
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
    color: var(--text-dark);
    line-height: 1.3;
}

@media (min-width: 768px) {
    .article-hero__title {
        font-size: 1.875rem;
        margin-bottom: 0.75rem;
    }
}

.article-hero__lead {
    font-size: 1rem;
    color: var(--text-gray);
    line-height: 1.6;
}

@media (min-width: 768px) {
    .article-hero__lead {
        font-size: 1.125rem;
        line-height: 1.75;
    }
}

/* Article Content */
.article-content {
    background: var(--surface);
    border-radius: 0.75rem;
    padding: 1.5rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    line-height: 1.7;
    overflow-wrap: break-word;
    word-wrap: break-word;
}

@media (min-width: 768px) {
    .article-content {
        padding: 2rem;
        line-height: 1.8;
    }
}

.article-content h2 {
    font-size: 1.25rem;
    font-weight: 700;
    margin: 1.5rem 0 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--accent-color);
    color: var(--text-dark);
}

@media (min-width: 768px) {
    .article-content h2 {
        font-size: 1.5rem;
        margin: 2rem 0 1rem;
    }
}

.article-content h3 {
    font-size: 1.125rem;
    font-weight: 600;
    margin: 1.25rem 0 0.5rem;
    color: var(--text-dark);
}

@media (min-width: 768px) {
    .article-content h3 {
        font-size: 1.25rem;
        margin: 1.5rem 0 0.75rem;
    }
}

.article-content p {
    margin-bottom: 1rem;
    color: var(--text-gray);
}

.article-content ul,
.article-content ol {
    margin: 1rem 0 1.5rem 1.5rem;
}

.article-content li {
    margin-bottom: 0.5rem;
    color: var(--text-gray);
}

.article-content strong {
    color: var(--accent-color);
    font-weight: 600;
}

/* Article CTA Section */
.article-cta {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 1rem 0;
}

@media (min-width: 768px) {
    .article-cta {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 1rem;
        padding: 2rem 0;
    }
}

.article-cta .tpcl-nav__link {
    width: 100%;
    justify-content: center;
}

@media (min-width: 768px) {
    .article-cta .tpcl-nav__link {
        flex: 1;
        width: auto;
        min-width: 200px;
    }
}

/* Sidebar */
.article-sidebar {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

@media (min-width: 768px) {
    .article-sidebar {
        gap: 1.5rem;
    }
}

.sidebar-section {
    background: var(--surface);
    border-radius: 0.75rem;
    padding: 1.25rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

@media (min-width: 768px) {
    .sidebar-section {
        padding: 1.5rem;
    }
}

.sidebar-title {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
    color: var(--text-dark);
}

@media (min-width: 768px) {
    .sidebar-title {
        font-size: 1.125rem;
        margin-bottom: 1rem;
    }
}

.sidebar-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.sidebar-list__item {
    margin-bottom: 0.5rem;
}

.sidebar-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem;
    border-radius: 0.5rem;
    transition: background-color 0.2s;
    color: var(--text-dark);
    font-size: 0.9375rem;
}

@media (min-width: 768px) {
    .sidebar-link {
        gap: 0.75rem;
        padding: 0.75rem;
        font-size: 1rem;
    }
}

.sidebar-link:hover {
    background-color: var(--surface-muted);
}

.sidebar-link i {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--accent-color);
    flex-shrink: 0;
}

@media (min-width: 768px) {
    .sidebar-link i {
        width: 1.25rem;
        height: 1.25rem;
    }
}

.sidebar-link span {
    flex: 1;
    line-height: 1.4;
}

/* Badge Styles */
.tpcl-support__badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    background: var(--accent-light);
    color: var(--accent-color);
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.tpcl-support__badge--large {
    padding: 0.375rem 1rem;
    font-size: 0.875rem;
    margin-bottom: 0.5rem;
}

/* ==========================================================================
   BACK-TO-LIST COMPONENT
   Reusable back navigation link for archive pages
   ========================================================================== */

.tpcl-back-to-list__link:hover,
.tpcl-back-to-list__link:focus {
    color: var(--accent-color);
}

/* ==========================================================================
   SIDEBAR PAGE MENU COMPONENT
   Sidebar navigation with current page highlighting
   ========================================================================== */

.tpcl-sidebar-menu__title-icon {
    color: var(--accent-color);
}

/* Current item highlighting (EDU-style: background + check icon) */
.tpcl-sidebar-menu__item--current {
    background-color: var(--accent-light);
    margin-left: -0.75rem;
    margin-right: -0.75rem;
    padding: 0.5rem 0.75rem;
    border-radius: 0.5rem;
}

/* Link hover and current states */
.tpcl-sidebar-menu__link:hover,
.tpcl-sidebar-menu__link:focus {
    color: var(--accent-color);
}

.tpcl-sidebar-menu__link:hover .tpcl-sidebar-menu__title,
.tpcl-sidebar-menu__link:focus .tpcl-sidebar-menu__title {
    color: var(--accent-color);
}

.tpcl-sidebar-menu__link--current,
.tpcl-sidebar-menu__link--current .tpcl-sidebar-menu__title {
    color: var(--accent-color);
}

/* ==========================================================================
   BUTTON COMPONENTS
   Primary button using accent colors
   ========================================================================== */

.tpcl-btn-primary {
    background-color: var(--accent-color);
    color: #ffffff;
}

.tpcl-btn-primary:hover,
.tpcl-btn-primary:focus {
    background-color: var(--accent-dark);
    color: #ffffff;
}

/* ==========================================================================
   TIMELINE COMPONENT
   Vertical timeline for company history, milestones, etc.
   ========================================================================== */

.tpcl-timeline {
    position: relative;
}

.tpcl-timeline__item {
    display: flex;
    gap: 1rem;
    padding-bottom: 1.5rem;
    position: relative;
}

@media (min-width: 768px) {
    .tpcl-timeline__item {
        gap: 1.5rem;
        padding-bottom: 2rem;
    }
}

.tpcl-timeline__item:last-child {
    padding-bottom: 0;
}

/* Vertical line connecting items */
.tpcl-timeline__item:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 2.5rem;
    top: 2.5rem;
    bottom: 0;
    width: 2px;
    background: linear-gradient(to bottom, var(--accent-color), var(--accent-light));
}

@media (min-width: 768px) {
    .tpcl-timeline__item:not(:last-child)::after {
        left: 3rem;
        top: 3rem;
    }
}

/* Year badge */
.tpcl-timeline__year {
    flex-shrink: 0;
    width: 5rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--accent-color);
    color: #fff;
    font-weight: 700;
    font-size: 0.875rem;
    border-radius: 0.5rem;
}

@media (min-width: 768px) {
    .tpcl-timeline__year {
        width: 6rem;
        height: 2.5rem;
        font-size: 1rem;
    }
}

.tpcl-timeline__content {
    flex: 1;
    background: var(--surface);
    border-radius: 0.75rem;
    padding: 1rem 1.25rem;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border: 1px solid var(--border-color);
}

@media (min-width: 768px) {
    .tpcl-timeline__content {
        padding: 1.25rem 1.5rem;
    }
}

.tpcl-timeline__event {
    padding: 0.5rem 0;
    border-bottom: 1px dashed var(--border-color);
}

.tpcl-timeline__event:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.tpcl-timeline__event:first-child {
    padding-top: 0;
}

.tpcl-timeline__month {
    display: inline-block;
    background: var(--accent-light);
    color: var(--accent-color);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.125rem 0.5rem;
    border-radius: 0.25rem;
    margin-bottom: 0.25rem;
}

.tpcl-timeline__event p {
    margin: 0;
    color: var(--text-gray);
    line-height: 1.6;
}

.tpcl-timeline__event p strong {
    color: var(--text-dark);
}
