/**
 * Garage Connect - Main Styles
 * Version: 2.2.0
 *
 * [enqueue確認結果]
 * - gc-destyle / gc-bootstrap-grid / gc-style: garage-connect.php, class-gc-frontend.php で読み込み
 *   → 条件: 共通（全ページ）
 * - gc-woocommerce: garage-connect.php, class-gc-frontend.php で読み込み
 *   → 条件: is_woocommerce() || is_cart() || is_checkout() || is_account_page() || is_order_received_page()（条件あり）
 * - gc-myaccount: garage-connect.php, class-gc-frontend.php で読み込み
 *   → 条件: is_account_page()（条件あり）
 * - gc-cart-checkout: garage-connect.php, class-gc-frontend.php で読み込み
 *   → 条件: cart / checkout / order-received（条件あり）
 * - gc-booking-tab: class-gc-product-tabs.php, class-gc-frontend.php で読み込み
 *   → 条件: is_product() + 予約商品判定（条件あり）
 * - gc-checkin: class-gc-checkin.php で読み込み
 *   → 条件: checkin固定ページ判定（条件あり）
 * - gc-admin: garage-connect.php admin_enqueue_scripts(), includes/admin/class-gc-admin.php で読み込み
 *   → 条件: 管理画面フック判定（条件あり）
 * - class-gc-cart-booking.php / class-gc-checkout-vehicle.php / class-gc-order-complete.php
 *   → wp_enqueue_style/wp_enqueue_script 呼び出しなし
 *
 * 共通UIライブラリ。ページ固有CSSは gc-templates.css 等に分離する。
 * カラー変数は PHP の output_color_variables() が wp_head に優先出力する。
 * 以下の :root は万が一 PHP 出力が失敗した場合のフォールバック。
 */

/* =======================================
   CSS変数フォールバック定義
   ※ 実際の値は PHP の output_color_variables() で wp_head に出力される
   ======================================= */
:root {
    --gc-primary:        #1a6fc4;
    --gc-primary-dark:   #155a9e;
    --gc-primary-light:  #e8f1fb;
    --gc-accent:         #e07b00;
    --gc-accent-dark:    #b36200;
    --gc-text:           #1f1f1f;
    --gc-text-muted:     #6b7280;
    --gc-bg:             #f7f7f7;
    --gc-bg-card:        #ffffff;
    --gc-white:          #ffffff;
    --gc-border:         #dddddd;
    --gc-error:          #d32f2f;
    --gc-error-light:    #fdecea;
    --gc-success:        #2e7d32;
    --gc-success-light:  #e8f5e9;
    --gc-warning:        #e65100;
    --gc-warning-light:  #fff3e0;
    --gc-space-xs:       4px;
    --gc-space-sm:       8px;
    --gc-space-md:       16px;
    --gc-space-lg:       24px;
    --gc-space-xl:       32px;
    --gc-space-2xl:      48px;
    --gc-radius-sm:      4px;
    --gc-radius-md:      8px;
    --gc-radius-lg:      16px;
    --gc-shadow-sm:      0 1px 3px rgba(0,0,0,0.08);
    --gc-shadow-md:      0 4px 12px rgba(0,0,0,0.10);
    --gc-shadow-lg:      0 8px 24px rgba(0,0,0,0.12);
    --gc-transition:     0.15s ease;
    --gc-font-base:      'Noto Sans JP', 'Hiragino Sans', sans-serif;
    --gc-font-size-sm:   13px;
    --gc-font-size-md:   15px;
    --gc-font-size-lg:   18px;
    --gc-font-size-xl:   22px;
    --gc-font-size-2xl:  28px;

    /* gray スケール（gc-templates.css 共用） */
    --gc-gray-50:        #f9fafb;
    --gc-gray-100:       #f3f4f6;
    --gc-gray-200:       #e5e7eb;
    --gc-gray-300:       #d1d5db;
    --gc-gray-400:       #9ca3af;
    --gc-gray-500:       #6b7280;
    --gc-gray-700:       #374151;
    --gc-gray-900:       #111827;

    /* テキストエイリアス（gc-templates.css 共用） */
    --gc-text-primary:   #1f1f1f;
    --gc-text-secondary: #6b7280;

    /* radius エイリアス（gc-templates.css 共用） */
    --gc-radius:         8px;
}

/* =======================================
   ベーススタイル
   ======================================= */
body {
    font-family: var(--gc-font-base);
    font-size: var(--gc-font-size-md);
    color: var(--gc-text);
    background-color: var(--gc-bg);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

a {
    color: var(--gc-primary);
    text-decoration: none;
    transition: color var(--gc-transition);
}
a:hover { color: var(--gc-primary-dark); }

/* =======================================
   共通ボタン
   ======================================= */
.gc-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 20px;
    border-radius: var(--gc-radius-md);
    font-size: var(--gc-font-size-md);
    font-weight: 600;
    cursor: pointer;
    border: 2px solid transparent;
    transition: all var(--gc-transition);
    text-decoration: none;
    min-height: 44px;
}
.gc-btn-primary {
    background: var(--gc-primary);
    color: var(--gc-white);
    border-color: var(--gc-primary);
}
.gc-btn-primary:hover {
    background: var(--gc-primary-dark);
    border-color: var(--gc-primary-dark);
    color: var(--gc-white);
}
.gc-btn-secondary {
    background: var(--gc-white);
    color: var(--gc-primary);
    border-color: var(--gc-primary);
}
.gc-btn-secondary:hover {
    background: var(--gc-primary-light);
}
.gc-btn-outline {
    background: transparent;
    color: var(--gc-white);
    border-color: var(--gc-white);
}
.gc-btn-outline:hover {
    background: rgba(255,255,255,0.15);
    color: var(--gc-white);
}
.gc-btn-sm  { padding: 6px 14px; font-size: var(--gc-font-size-sm); min-height: 36px; }
.gc-btn-lg  { padding: 14px 28px; font-size: var(--gc-font-size-lg); min-height: 52px; }
.gc-btn-block { width: 100%; }

/* =======================================
   共通カード
   ======================================= */
.gc-card {
    background: var(--gc-bg-card);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-lg);
    box-shadow: var(--gc-shadow-sm);
    overflow: hidden;
}
.gc-card__header {
    padding: var(--gc-space-md) var(--gc-space-lg);
    border-bottom: 1px solid var(--gc-border);
    font-weight: 700;
    font-size: var(--gc-font-size-lg);
    color: var(--gc-text);
}
.gc-card__body  { padding: var(--gc-space-lg); }
.gc-card__footer {
    padding: var(--gc-space-md) var(--gc-space-lg);
    border-top: 1px solid var(--gc-border);
    background: var(--gc-bg);
}

/* =======================================
   共通フォーム
   ======================================= */
.gc-form__group  { margin-bottom: var(--gc-space-md); }
.gc-form__label  {
    display: block;
    font-size: var(--gc-font-size-sm);
    font-weight: 600;
    color: var(--gc-text);
    margin-bottom: 6px;
}
.gc-form__input,
.gc-form__select,
.gc-form__textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-md);
    font-size: var(--gc-font-size-md);
    color: var(--gc-text);
    background: var(--gc-white);
    transition: border-color var(--gc-transition), box-shadow var(--gc-transition);
    min-height: 44px;
    box-sizing: border-box;
}
.gc-form__input:focus,
.gc-form__select:focus,
.gc-form__textarea:focus {
    outline: none;
    border-color: var(--gc-primary);
    box-shadow: 0 0 0 3px var(--gc-primary-light);
}
.gc-form__error {
    font-size: var(--gc-font-size-sm);
    color: var(--gc-error);
    margin-top: 4px;
}

/* =======================================
   共通バッジ・通知
   ======================================= */
.gc-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 100px;
    font-size: 11px;
    font-weight: 700;
}
.gc-badge-success { background: var(--gc-success-light); color: var(--gc-success); }
.gc-badge-warning { background: var(--gc-warning-light); color: var(--gc-warning); }
.gc-badge-error   { background: var(--gc-error-light);   color: var(--gc-error);   }
.gc-badge-info    { background: var(--gc-primary-light);  color: var(--gc-primary); }

.gc-notice {
    padding: var(--gc-space-md);
    border-radius: var(--gc-radius-md);
    margin-bottom: var(--gc-space-md);
    font-size: var(--gc-font-size-sm);
}
.gc-notice-success { background: var(--gc-success-light); color: var(--gc-success); border-left: 4px solid var(--gc-success); }
.gc-notice-warning { background: var(--gc-warning-light); color: var(--gc-warning); border-left: 4px solid var(--gc-warning); }
.gc-notice-error   { background: var(--gc-error-light);   color: var(--gc-error);   border-left: 4px solid var(--gc-error);   }

/* =======================================
   状態クラス
   ======================================= */
.gc-is-hidden   { display: none !important; }
.gc-is-loading  { opacity: 0.6; pointer-events: none; }
.gc-is-disabled { opacity: 0.4; pointer-events: none; cursor: not-allowed; }

/* ==========================================================================
   以下は既存のカスタムプロパティ定義（後方互換のため残す）
   ========================================================================== */

/* ==========================================================================
   1. カスタムプロパティ（カラーパレット）
   ========================================================================== */
:root {
    /* --- Brand ---
     * primary / accent 系はファイル先頭のフォールバック :root（L14）で定義済み。
     * PHP (GC_Color_Settings) が wp_head に変数を出力するため、ここでは二重定義しない。
     * 万が一 PHP 出力が空のときは L14 の値が有効になる。
     */
    --gc-secondary:      #4b5563;
    --gc-secondary-dark: #374151;
    --gc-secondary-light:#e5e7eb;

    /* --- Semantic --- */
    --gc-success:        #059669;
    --gc-success-light:  #d1fae5;
    --gc-danger:         #dc2626;
    --gc-danger-light:   #fee2e2;
    --gc-warning:        #d97706;
    --gc-warning-light:  #fef3c7;
    --gc-info:           #0891b2;
    --gc-info-light:     #cffafe;

    /* --- Neutrals --- */
    --gc-white:          #ffffff;
    --gc-light:          #f9fafb;
    --gc-gray-50:        #f9fafb;
    --gc-gray-100:       #f3f4f6;
    --gc-gray-200:       #e5e7eb;
    --gc-gray-300:       #d1d5db;
    --gc-gray-400:       #9ca3af;
    --gc-gray-500:       #6b7280;
    --gc-gray-600:       #4b5563;
    --gc-gray-700:       #374151;
    --gc-gray-800:       #1f2937;
    --gc-gray-900:       #111827;
    --gc-dark:           #111827;

    /* --- Semantic text shortcuts --- */
    --gc-text-primary:   var(--gc-gray-900);
    --gc-text-secondary: var(--gc-gray-600);
    --gc-text-muted:     var(--gc-gray-400);
    --gc-border:         var(--gc-gray-200);
    --gc-bg-body:        var(--gc-gray-50);

    /* --- 仕様書互換エイリアス --- */
    --gc-text:           var(--gc-gray-900);
    --gc-bg:             var(--gc-gray-50);
    --gc-error:          var(--gc-danger);
    --gc-error-light:    var(--gc-danger-light);

    /* --- 仕様書追加変数（デザイントークン完全準拠） --- */
    --gc-bg-card:        #ffffff;
    --gc-bg-section:     #f8fafc;
    --gc-border-strong:  #cbd5e1;
    --gc-text-light:     #94a3b8;
    --gc-radius-full:    9999px;
    --gc-radius-md:      8px;

    /* スペーシング */
    --gc-space-xs:   4px;
    --gc-space-sm:   8px;
    --gc-space-md:   16px;
    --gc-space-lg:   24px;
    --gc-space-xl:   40px;
    --gc-space-2xl:  64px;

    /* フォント */
    --gc-font-family:          var(--gc-font-sans);
    --gc-font-size-xs:         0.75rem;
    --gc-font-size-sm:         0.875rem;
    --gc-font-size-base:       1rem;
    --gc-font-size-lg:         1.125rem;
    --gc-font-size-xl:         1.25rem;
    --gc-font-size-2xl:        1.5rem;
    --gc-font-size-3xl:        1.875rem;
    --gc-font-weight-normal:   400;
    --gc-font-weight-medium:   500;
    --gc-font-weight-semibold: 600;
    --gc-font-weight-bold:     700;
    --gc-line-height-tight:    1.3;
    --gc-line-height-normal:   1.6;
    --gc-line-height-loose:    1.8;

    /* トランジション */
    --gc-transition-fast:      0.12s ease;
    --gc-transition-normal:    var(--gc-transition);

    /* z-index */
    --gc-z-dropdown: 100;
    --gc-z-modal:    200;
    --gc-z-toast:    300;

    /* --- Radius / Shadow --- */
    --gc-radius-sm:      6px;
    --gc-radius:         10px;
    --gc-radius-lg:      16px;
    --gc-radius-xl:      24px;
    --gc-shadow-xs:      0 1px 2px rgba(0,0,0,.04);
    --gc-shadow-sm:      0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
    --gc-shadow:         0 4px 6px -1px rgba(0,0,0,.07), 0 2px 4px -2px rgba(0,0,0,.05);
    --gc-shadow-md:      0 10px 15px -3px rgba(0,0,0,.08), 0 4px 6px -4px rgba(0,0,0,.05);
    --gc-shadow-lg:      0 20px 25px -5px rgba(0,0,0,.08), 0 8px 10px -6px rgba(0,0,0,.04);

    /* --- Transition --- */
    --gc-transition:     .2s ease;
    --gc-transition-slow:.35s ease;

    /* --- Typography --- */
    --gc-font-sans:      "Hiragino Kaku Gothic ProN","Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
    --gc-font-mono:      "SF Mono","Fira Code",Consolas,monospace;
}

/* ==========================================================================
   2. ベーススタイル
   ========================================================================== */
body {
    font-family: var(--gc-font-sans);
    color: var(--gc-text-primary);
    background: var(--gc-bg-body);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

a {
    color: var(--gc-primary);
    text-decoration: none;
    transition: color var(--gc-transition);
}
a:hover {
    color: var(--gc-primary-dark);
}

img {
    max-width: 100%;
    height: auto;
}

/* ==========================================================================
   3. 共通レイアウト
   ========================================================================== */
.gc-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

.gc-wrap--narrow {
    max-width: 800px;
}

.gc-wrap--wide {
    max-width: 1400px;
}

.gc-section {
    margin-bottom: 2.5rem;
}

.gc-site-content {
    min-height: 60vh;
}

/* ==========================================================================
   4. ヘッダー (.gc-header)
   ========================================================================== */
.gc-header {
    position: sticky;
    top: 0;
    z-index: 1000;
    background: var(--gc-white);
    border-bottom: 1px solid var(--gc-gray-100);
    transition: box-shadow var(--gc-transition);
}

.gc-header--scrolled {
    box-shadow: var(--gc-shadow-md);
}

.gc-header__inner {
    display: flex;
    align-items: center;
    gap: 24px;
    height: 72px;
}

.gc-header__brand {
    flex-shrink: 0;
}

.gc-header__logo-link {
    display: flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    color: var(--gc-text-primary);
}

.gc-header__logo-img {
    height: 44px;
    width: auto;
    object-fit: contain;
}

.gc-header__site-name {
    font-size: 1.25rem;
    font-weight: 800;
    letter-spacing: -.02em;
    color: var(--gc-gray-900);
    white-space: normal; /* was: nowrap – 店舗名が長い場合にヘッダーが横溢れするため修正 */
}

.gc-header__tagline {
    display: none;
    font-size: .75rem;
    color: var(--gc-text-muted);
    margin: 0;
}

/* --- Hamburger --- */
.gc-header__hamburger {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 40px;
    height: 40px;
    padding: 8px;
    background: none;
    border: none;
    cursor: pointer;
    margin-left: auto;
}

.gc-header__hamburger-line {
    display: block;
    width: 100%;
    height: 2px;
    background: var(--gc-gray-700);
    border-radius: 2px;
    transition: transform var(--gc-transition), opacity var(--gc-transition);
}

.gc-header__hamburger[aria-expanded="true"] .gc-header__hamburger-line:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}
.gc-header__hamburger[aria-expanded="true"] .gc-header__hamburger-line:nth-child(2) {
    opacity: 0;
}
.gc-header__hamburger[aria-expanded="true"] .gc-header__hamburger-line:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

/* --- Nav Menu --- */
.gc-header__nav {
    flex: 1;
    display: flex;
    justify-content: center;
}

.gc-header__menu {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: 4px;
}

.gc-header__menu li {
    position: relative;
}

.gc-header__menu > li > a {
    display: inline-flex;
    align-items: center;
    padding: 8px 16px;
    font-size: .9rem;
    font-weight: 500;
    color: var(--gc-gray-700);
    border-radius: var(--gc-radius-sm);
    transition: background var(--gc-transition), color var(--gc-transition);
    white-space: nowrap;
}

.gc-header__menu > li > a:hover,
.gc-header__menu > li.current-menu-item > a {
    background: var(--gc-primary-light);
    color: var(--gc-primary);
}

/* Dropdown */
.gc-header__menu .sub-menu {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 200px;
    padding: 8px;
    background: var(--gc-white);
    border: 1px solid var(--gc-gray-100);
    border-radius: var(--gc-radius);
    box-shadow: var(--gc-shadow-md);
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity var(--gc-transition), transform var(--gc-transition), visibility var(--gc-transition);
    list-style: none;
    z-index: 100;
}

.gc-header__menu li:hover > .sub-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.gc-header__menu .sub-menu a {
    display: block;
    padding: 8px 12px;
    font-size: .85rem;
    color: var(--gc-gray-700);
    border-radius: var(--gc-radius-sm);
}

.gc-header__menu .sub-menu a:hover {
    background: var(--gc-gray-50);
    color: var(--gc-primary);
}

/* --- Header Actions (cart, account) --- */
.gc-header__actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.gc-header__action {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    color: var(--gc-gray-600);
    transition: background var(--gc-transition), color var(--gc-transition);
    position: relative;
}

.gc-header__action:hover {
    background: var(--gc-gray-100);
    color: var(--gc-primary);
}

.gc-header__status {
    width: auto;
    height: 32px;
    padding: 0 12px;
    border-radius: 999px;
    background: var(--gc-gray-100);
    color: var(--gc-gray-700);
    font-size: .82rem;
    font-weight: 600;
    white-space: nowrap;
    pointer-events: none;
}

.gc-header__status:hover {
    background: var(--gc-gray-100);
    color: var(--gc-gray-700);
}

.gc-header__icon {
    display: block;
}

.gc-header__cart-count {
    position: absolute;
    top: 2px;
    right: 0;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    font-size: .65rem;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    color: var(--gc-white);
    background: var(--gc-danger);
    border-radius: 999px;
}

/* ==========================================================================
   5. フッター (.gc-footer)
   ========================================================================== */
.gc-footer {
    margin-top: auto;
    background: var(--gc-gray-900);
    color: var(--gc-gray-300);
}

.gc-footer__main {
    padding: 48px 0 40px;
}

.gc-footer__grid {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr;
    gap: 40px;
}

.gc-footer__heading {
    font-size: 1rem;
    font-weight: 700;
    color: var(--gc-white);
    margin-bottom: 16px;
    letter-spacing: .02em;
}

.gc-footer__address,
.gc-footer__phone,
.gc-footer__email {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 0 10px;
    font-size: .875rem;
    line-height: 1.6;
}

.gc-footer__icon {
    flex-shrink: 0;
    margin-top: 2px;
    opacity: .6;
}

.gc-footer a {
    color: var(--gc-gray-300);
    transition: color var(--gc-transition);
}

.gc-footer a:hover {
    color: var(--gc-white);
}

/* Footer menu */
.gc-footer__menu {
    list-style: none;
    margin: 0;
    padding: 0;
}

.gc-footer__menu li {
    margin-bottom: 8px;
}

.gc-footer__menu a {
    display: inline-block;
    font-size: .875rem;
    padding: 2px 0;
}

.gc-footer__menu a:hover {
    color: var(--gc-white);
    text-decoration: underline;
}

/* Footer hours */
.gc-footer__hours {
    margin: 0;
    font-size: .8125rem;
}

.gc-footer__hours-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    border-bottom: 1px solid rgba(255,255,255,.06);
}

.gc-footer__hours-row dt {
    font-weight: 600;
    color: var(--gc-gray-200);
    min-width: 28px;
}

.gc-footer__hours-row dd {
    margin: 0;
    color: var(--gc-gray-400);
}

.gc-footer__hours-row--closed dd {
    color: var(--gc-gray-500);
    font-style: italic;
}

/* Footer bottom */
.gc-footer__bottom {
    padding: 16px 0;
    border-top: 1px solid rgba(255,255,255,.08);
}

.gc-footer__copyright {
    font-size: .8125rem;
    color: var(--gc-gray-500);
    text-align: center;
    margin: 0;
}

/* ==========================================================================
   6. ボタン (.gc-btn)
   ========================================================================== */
.gc-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5em;
    padding: .625rem 1.25rem;
    font-size: .9375rem;
    font-weight: 600;
    line-height: 1.5;
    text-align: center;
    text-decoration: none;
    border: 2px solid transparent;
    border-radius: var(--gc-radius);
    cursor: pointer;
    transition: background var(--gc-transition), border-color var(--gc-transition),
                color var(--gc-transition), box-shadow var(--gc-transition),
                transform .1s ease;
    -webkit-appearance: none;
    appearance: none;
}

.gc-btn:active {
    transform: translateY(1px);
}

.gc-btn:focus-visible {
    outline: 3px solid var(--gc-primary-light);
    outline-offset: 2px;
}

/* --- Primary --- */
.gc-btn--primary {
    background: var(--gc-primary);
    color: var(--gc-white);
}
.gc-btn--primary:hover,
.gc-btn--primary:focus {
    background: var(--gc-primary-dark);
    color: var(--gc-white);
    box-shadow: 0 4px 14px rgba(var(--gc-primary-rgb), .35);
}

/* --- Secondary --- */
.gc-btn--secondary {
    background: var(--gc-gray-100);
    color: var(--gc-gray-700);
    border-color: var(--gc-gray-200);
}
.gc-btn--secondary:hover,
.gc-btn--secondary:focus {
    background: var(--gc-gray-200);
    color: var(--gc-gray-900);
}

/* --- Outline --- */
.gc-btn--outline {
    background: transparent;
    color: var(--gc-primary);
    border-color: var(--gc-primary);
}
.gc-btn--outline:hover,
.gc-btn--outline:focus {
    background: var(--gc-primary);
    color: var(--gc-white);
}

/* --- Danger --- */
.gc-btn--danger {
    background: var(--gc-danger);
    color: var(--gc-white);
}
.gc-btn--danger:hover,
.gc-btn--danger:focus {
    background: #b91c1c;
    color: var(--gc-white);
}

/* --- Ghost --- */
.gc-btn--ghost {
    background: transparent;
    color: var(--gc-text-secondary);
    border-color: transparent;
}
.gc-btn--ghost:hover,
.gc-btn--ghost:focus {
    background: var(--gc-gray-100);
    color: var(--gc-text-primary);
}

/* --- Accent --- */
.gc-btn--accent {
    background: var(--gc-accent);
    color: var(--gc-white);
}
.gc-btn--accent:hover,
.gc-btn--accent:focus {
    background: var(--gc-accent-dark);
    color: var(--gc-white);
}

/* --- Sizes --- */
.gc-btn--sm {
    padding: .375rem .75rem;
    font-size: .8125rem;
    border-radius: var(--gc-radius-sm);
}
.gc-btn--lg {
    padding: .875rem 2rem;
    font-size: 1.0625rem;
}
.gc-btn--block {
    display: flex;
    width: 100%;
}

/* --- Disabled state --- */
.gc-btn:disabled,
.gc-btn.gc-is-disabled {
    opacity: .5;
    pointer-events: none;
}

/* --- Loading state --- */
.gc-btn.gc-is-loading {
    pointer-events: none;
    position: relative;
    color: transparent !important;
}
.gc-btn.gc-is-loading::after {
    content: "";
    position: absolute;
    width: 1.1em;
    height: 1.1em;
    border: 2px solid var(--gc-white);
    border-top-color: transparent;
    border-radius: 50%;
    animation: gc-spin .6s linear infinite;
}

@keyframes gc-spin {
    to { transform: rotate(360deg); }
}

/* ==========================================================================
   7. カード (.gc-card)
   ========================================================================== */
.gc-card {
    background: var(--gc-white);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-lg);
    box-shadow: var(--gc-shadow-xs);
    overflow: hidden;
    transition: box-shadow var(--gc-transition);
}

.gc-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    font-size: 1.05rem;
    font-weight: 700;
    border-bottom: 1px solid var(--gc-gray-100);
    color: var(--gc-text-primary);
}

.gc-card__header h2,
.gc-card__header h3 {
    margin: 0;
    font-size: inherit;
    font-weight: inherit;
}

.gc-card__body {
    padding: 1.25rem;
    line-height: 1.7;
}

.gc-card__footer {
    padding: .75rem 1.25rem;
    background: var(--gc-gray-50);
    border-top: 1px solid var(--gc-gray-100);
}

/* ==========================================================================
   8. フォーム (.gc-form)
   ========================================================================== */
.gc-form__group {
    margin-bottom: 1.125rem;
}

.gc-form__label {
    display: block;
    margin-bottom: .375rem;
    font-size: .875rem;
    font-weight: 600;
    color: var(--gc-text-primary);
}

.gc-form__label--required::after {
    content: " *";
    color: var(--gc-danger);
}

.gc-form__required {
    color: var(--gc-danger);
    font-size: .75rem;
}

.gc-form__input,
.gc-form__select,
.gc-form__textarea {
    display: block;
    width: 100%;
    padding: .625rem .875rem;
    font-size: .9375rem;
    font-family: var(--gc-font-sans);
    line-height: 1.5;
    color: var(--gc-text-primary);
    background: var(--gc-white);
    border: 1px solid var(--gc-gray-300);
    border-radius: var(--gc-radius);
    transition: border-color var(--gc-transition), box-shadow var(--gc-transition);
    -webkit-appearance: none;
    appearance: none;
}

.gc-form__input:focus,
.gc-form__select:focus,
.gc-form__textarea:focus {
    border-color: var(--gc-primary);
    box-shadow: 0 0 0 3px var(--gc-primary-light);
    outline: none;
}

.gc-form__input.gc-is-invalid,
.gc-form__select.gc-is-invalid,
.gc-form__textarea.gc-is-invalid {
    border-color: var(--gc-danger);
    box-shadow: 0 0 0 3px var(--gc-danger-light);
}

.gc-form__help {
    display: block;
    margin-top: .25rem;
    font-size: .8125rem;
    color: var(--gc-text-muted);
}

.gc-form__error {
    display: block;
    margin-top: .25rem;
    font-size: .8125rem;
    color: var(--gc-danger);
}

.gc-form__actions {
    display: flex;
    gap: 10px;
    margin-top: 1.25rem;
}

/* ==========================================================================
   9. バッジ (.gc-badge)
   ========================================================================== */
.gc-badge {
    display: inline-flex;
    align-items: center;
    padding: .2em .625em;
    font-size: .75rem;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 999px;
    white-space: nowrap;
}

.gc-badge--primary   { background: var(--gc-primary-light);   color: var(--gc-primary-dark); }
.gc-badge--success   { background: var(--gc-success-light);   color: var(--gc-success); }
.gc-badge--danger    { background: var(--gc-danger-light);    color: var(--gc-danger); }
.gc-badge--warning   { background: var(--gc-warning-light);   color: var(--gc-warning); }
.gc-badge--info      { background: var(--gc-info-light);      color: var(--gc-info); }
.gc-badge--secondary { background: var(--gc-secondary-light); color: var(--gc-secondary-dark); }

/* ステータスバッジ */
.gc-badge--arrived   { background: var(--gc-success-light);   color: var(--gc-success); }
.gc-badge--confirmed { background: var(--gc-warning-light);   color: var(--gc-warning); }
.gc-badge--noshow    { background: var(--gc-danger-light);    color: var(--gc-danger); }
.gc-badge--cancelled { background: var(--gc-secondary-light); color: var(--gc-secondary-dark); }
.gc-badge--on-hold   { background: var(--gc-info-light);      color: var(--gc-info); }
.gc-badge--processing { background: var(--gc-primary-light); color: var(--gc-primary); }
.gc-badge--completed  { background: var(--gc-success-light); color: var(--gc-success); }
.gc-badge--pending    { background: var(--gc-warning-light); color: var(--gc-warning); }

/* ==========================================================================
   10. 通知 (.gc-notice)
   ========================================================================== */
.gc-notice {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: 1rem 1.25rem;
    border-radius: var(--gc-radius);
    margin-bottom: 1rem;
    font-size: .875rem;
    line-height: 1.7;
}

.gc-notice--info    { background: var(--gc-info-light);    border-left: 4px solid var(--gc-info);    color: var(--gc-info); }
.gc-notice--success { background: var(--gc-success-light); border-left: 4px solid var(--gc-success); color: var(--gc-success); }
.gc-notice--warning { background: var(--gc-warning-light); border-left: 4px solid var(--gc-warning); color: var(--gc-warning); }
.gc-notice--danger  { background: var(--gc-danger-light);  border-left: 4px solid var(--gc-danger);  color: var(--gc-danger); }

.gc-notice strong {
    display: block;
    margin-bottom: .25rem;
}

.gc-access-notice {
    display: block;
    margin: 12px 0 0;
    padding: 12px 14px;
    border-radius: var(--gc-radius-md);
    font-size: .9375rem;
    line-height: 1.75;
    text-align: left;
}

.gc-access-notice--warning {
    background: var(--gc-warning-light);
    border-left: 4px solid var(--gc-warning);
    color: var(--gc-warning);
}

.gc-access-notice__text {
    margin: 0;
    word-break: normal;
    overflow-wrap: break-word;
}

.gc-access-notice__text a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* ==========================================================================
   11. ページヒーロー (.gc-hero)
   ========================================================================== */
.gc-hero {
    background: linear-gradient(135deg, var(--gc-gray-900) 0%, var(--gc-gray-800) 100%);
    color: var(--gc-white);
    padding: 48px 0;
    margin-bottom: 40px;
}

.gc-hero__title {
    font-size: 2rem;
    font-weight: 800;
    margin: 0 0 8px;
    letter-spacing: -.02em;
}

.gc-hero__subtitle {
    font-size: 1rem;
    color: var(--gc-gray-400);
    margin: 0;
}

.gc-hero__breadcrumb {
    margin-bottom: 12px;
    font-size: .8125rem;
    color: var(--gc-gray-400);
}

.gc-hero__breadcrumb a {
    color: var(--gc-gray-300);
}

.gc-hero__breadcrumb a:hover {
    color: var(--gc-white);
}

.gc-hero--compact {
    padding: 36px 0;
}

.gc-hero--compact .gc-hero__title {
    font-size: 1.625rem;
}

/* ==========================================================================
   12. サブ商品UI
   ========================================================================== */
.gc-sub-products {
    margin: 1.5rem 0;
    padding: 1.25rem;
    background: var(--gc-gray-50);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius);
}

.gc-sub-products__item {
    margin-bottom: 1.25rem;
}
.gc-sub-products__item:last-child {
    margin-bottom: 0;
}

.gc-sub-products__title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: .5rem;
    color: var(--gc-text-primary);
}

.gc-sub-products__required {
    color: var(--gc-danger);
    font-size: .75rem;
    margin-left: .25em;
}

.gc-sub-products__select {
    width: 100%;
    padding: .5rem .75rem;
    border: 1px solid var(--gc-gray-300);
    border-radius: var(--gc-radius);
    font-size: .9375rem;
}

.gc-sub-products__label {
    display: block;
    margin-bottom: .5rem;
    cursor: pointer;
}

.gc-sub-products__label input[type="radio"] {
    margin-right: .5rem;
}

/* ==========================================================================
   13. ペナルティ警告
   ========================================================================== */
.gc-penalty-warning {
    margin-bottom: 1.25rem;
    padding: 1rem;
    border-radius: var(--gc-radius);
    background: var(--gc-warning-light);
    border-left: 4px solid var(--gc-warning);
    color: #92400e;
}
.gc-penalty-warning strong {
    display: block;
    margin-bottom: .375rem;
}

.gc-cash-only-notice {
    margin: 1rem 0;
    padding: .75rem 1rem;
    background: var(--gc-warning-light);
    border: 1px solid var(--gc-warning);
    border-radius: var(--gc-radius-sm);
    color: #92400e;
}

/* ==========================================================================
   14. テーブル共通
   ========================================================================== */
.gc-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .875rem;
}

.gc-table th {
    text-align: left;
    font-weight: 600;
    color: var(--gc-text-secondary);
    text-transform: uppercase;
    font-size: .75rem;
    letter-spacing: .04em;
    padding: 12px 16px;
    background: var(--gc-gray-50);
    border-bottom: 2px solid var(--gc-gray-200);
}

.gc-table td {
    padding: 14px 16px;
    border-bottom: 1px solid var(--gc-gray-100);
    vertical-align: middle;
}

.gc-table tbody tr:hover {
    background: var(--gc-gray-50);
}

.gc-table tbody tr:last-child td {
    border-bottom: none;
}

/* ==========================================================================
   15. ユーティリティ
   ========================================================================== */
.gc-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}

.gc-text-center { text-align: center; }
.gc-text-right  { text-align: right; }
.gc-text-muted  { color: var(--gc-text-muted); }
.gc-text-danger { color: var(--gc-danger); }

.gc-mt-0 { margin-top: 0; }
.gc-mt-1 { margin-top: .5rem; }
.gc-mt-2 { margin-top: 1rem; }
.gc-mt-3 { margin-top: 1.5rem; }
.gc-mb-0 { margin-bottom: 0; }
.gc-mb-1 { margin-bottom: .5rem; }
.gc-mb-2 { margin-bottom: 1rem; }
.gc-mb-3 { margin-bottom: 1.5rem; }

.gc-d-none    { display: none !important; }
.gc-d-block   { display: block !important; }
.gc-d-flex    { display: flex !important; }
.gc-flex-wrap { flex-wrap: wrap; }
.gc-gap-1     { gap: .5rem; }
.gc-gap-2     { gap: 1rem; }

/* ==========================================================================
   16. 状態クラス (.gc-is-*)
   ========================================================================== */
.gc-is-hidden   { display: none !important; }
.gc-is-visible  { display: block !important; }
.gc-is-active   { /* コンテキストで上書き */ }
.gc-is-disabled { opacity: .5; pointer-events: none; }
.gc-is-loading  { position: relative; pointer-events: none; }

/* ==========================================================================
   17. WooCommerceオーバーライド
   ========================================================================== */
.woocommerce .gc-btn {
    border-radius: var(--gc-radius);
}
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
    border-top: none;
    border-left: 4px solid;
    border-radius: var(--gc-radius-sm);
    padding: 1rem 1.25rem;
    font-size: .875rem;
}

.woocommerce-message {
    background: var(--gc-success-light);
    border-color: var(--gc-success);
    color: #065f46;
}
.woocommerce-info {
    background: var(--gc-info-light);
    border-color: var(--gc-info);
    color: #155e75;
}
.woocommerce-error {
    background: var(--gc-danger-light);
    border-color: var(--gc-danger);
    color: #991b1b;
}

/* WooCommerce quantity input */
.woocommerce .quantity .qty {
    width: 64px;
    padding: .5rem;
    text-align: center;
    border: 1px solid var(--gc-gray-300);
    border-radius: var(--gc-radius-sm);
    font-size: .9375rem;
}

/* WooCommerce breadcrumb */
.woocommerce-breadcrumb {
    font-size: .8125rem;
    color: var(--gc-text-muted);
    margin-bottom: 12px;
}

.woocommerce-breadcrumb a {
    color: var(--gc-text-secondary);
}

.woocommerce-breadcrumb a:hover {
    color: var(--gc-primary);
}

/* ==========================================================================
   18. レスポンシブ - ヘッダー
   ========================================================================== */
@media (max-width: 991.98px) {
    .gc-header__hamburger {
        display: flex;
    }

    .gc-header__nav {
        position: fixed;
        top: 72px;
        left: 0;
        right: 0;
        bottom: 0;
        background: var(--gc-white);
        flex-direction: column;
        justify-content: flex-start;
        padding: 24px;
        transform: translateX(100%);
        transition: transform var(--gc-transition-slow);
        overflow-y: auto;
        z-index: 999;
    }

    .gc-header__nav--open {
        transform: translateX(0);
    }

    .gc-header__menu {
        flex-direction: column;
        gap: 0;
    }

    .gc-header__menu > li > a {
        padding: 14px 16px;
        font-size: 1rem;
        border-bottom: 1px solid var(--gc-gray-100);
        border-radius: 0;
    }

    .gc-header__menu .sub-menu {
        position: static;
        box-shadow: none;
        border: none;
        opacity: 1;
        visibility: visible;
        transform: none;
        padding: 0 0 0 20px;
    }
}

@media (max-width: 767.98px) {
    .gc-header__inner {
        height: auto;
        min-height: 60px;
        flex-wrap: wrap;
        row-gap: 8px;
        padding: 8px 0;
    }

    .gc-header__nav {
        top: 60px;
    }

    .gc-header__actions {
        order: 4;
        width: 100%;
        justify-content: flex-end;
        gap: 8px;
        flex-wrap: nowrap;
        margin-top: 2px;
    }

    .gc-header__status {
        max-width: calc(100vw - 140px);
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .gc-btn--block-mobile {
        display: flex;
        width: 100%;
    }

    .gc-card__body {
        padding: 1rem;
    }

    .gc-sub-products {
        padding: 1rem;
    }

    /* Footer responsive */
    .gc-footer__grid {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .gc-hero {
        padding: 32px 0;
    }

    .gc-hero__title {
        font-size: 1.5rem;
    }
}

/* 後方互換: 旧クラス名 → 新クラス名マッピング */
.gc-button         { /* → .gc-btn を使用 */ }
.gc-button-primary { /* → .gc-btn--primary を使用 */ }
.gc-card-header    { /* → .gc-card__header を使用 */ }
.gc-card-body      { /* → .gc-card__body を使用 */ }
.gc-status-badge   { /* → .gc-badge を使用 */ }

/* ==========================================================================
   19. クラス名エイリアス（シングルハイフン ↔ BEMダブルハイフン 両対応）
   テンプレートで gc-btn-primary / gc-btn--primary の両方が使われているため
   ========================================================================== */

/* ボタン */
.gc-btn-primary   { background: var(--gc-primary);  color: var(--gc-white); border-color: var(--gc-primary); box-shadow: 0 2px 8px rgba(0,0,0,.15); }
.gc-btn-primary:hover,
.gc-btn-primary:focus { background: var(--gc-primary-dark); border-color: var(--gc-primary-dark); color: var(--gc-white); }

.gc-btn-secondary { background: var(--gc-gray-100); color: var(--gc-gray-700); border-color: var(--gc-gray-200); }
.gc-btn-secondary:hover,
.gc-btn-secondary:focus { background: var(--gc-gray-200); color: var(--gc-gray-900); }

.gc-btn-accent    { background: var(--gc-accent);   color: var(--gc-white); border-color: var(--gc-accent); }
.gc-btn-accent:hover,
.gc-btn-accent:focus { background: var(--gc-accent-dark); border-color: var(--gc-accent-dark); color: var(--gc-white); }

.gc-btn-outline   { background: transparent; color: var(--gc-primary); border-color: var(--gc-primary); }
.gc-btn-outline:hover,
.gc-btn-outline:focus { background: var(--gc-primary); color: var(--gc-white); }

.gc-btn-danger    { background: var(--gc-danger); color: var(--gc-white); border-color: var(--gc-danger); }
.gc-btn-danger:hover,
.gc-btn-danger:focus { background: var(--gc-danger); border-color: var(--gc-danger); color: var(--gc-white); }

.gc-btn-ghost     { background: transparent; color: var(--gc-text-secondary); border-color: transparent; }
.gc-btn-ghost:hover,
.gc-btn-ghost:focus { background: var(--gc-gray-100); color: var(--gc-text-primary); }

.gc-btn-sm  { padding: .375rem .75rem;  font-size: var(--gc-font-size-sm); border-radius: var(--gc-radius-sm); min-height: 36px; }
.gc-btn-lg  { padding: .875rem 2rem;    font-size: var(--gc-font-size-lg); min-height: 52px; }
.gc-btn-block { display: flex; width: 100%; }

/* バッジ（仕様書スタイル: gc-badge-success 等） */
.gc-badge-primary  { background: var(--gc-primary-light);   color: var(--gc-primary-dark); }
.gc-badge-success  { background: var(--gc-success-light);   color: var(--gc-success); }
.gc-badge-error    { background: var(--gc-danger-light);    color: var(--gc-danger); }
.gc-badge-danger   { background: var(--gc-danger-light);    color: var(--gc-danger); }
.gc-badge-warning  { background: var(--gc-warning-light);   color: var(--gc-warning); }
.gc-badge-info     { background: var(--gc-info-light);      color: var(--gc-info); }
.gc-badge-neutral  { background: var(--gc-bg-section);      color: var(--gc-text-muted); }

/* 予約ステータスバッジ（単語バリアント） */
.gc-badge-confirmed   { background: var(--gc-info-light);    color: var(--gc-info); }
.gc-badge-checked-in  { background: var(--gc-secondary-light); color: var(--gc-secondary); }
.gc-badge-in-progress { background: var(--gc-warning-light); color: var(--gc-warning); }
.gc-badge-completed   { background: var(--gc-success-light); color: var(--gc-success); }
.gc-badge-cancelled   { background: var(--gc-danger-light);  color: var(--gc-danger); }
.gc-badge-pending     { background: var(--gc-warning-light); color: var(--gc-warning); }
.gc-badge-processing  { background: var(--gc-primary-light); color: var(--gc-primary); }
.gc-badge-on-hold     { background: var(--gc-info-light);    color: var(--gc-info); }

/* =======================================
   固定ページ見出し（page.php: .entry-header / .entry-title）
   ======================================= */
.entry-header {
    margin-block: var(--gc-space-xl) var(--gc-space-lg);
}

.entry-title {
    font-family:   var(--gc-font-base);
    font-size:     clamp(1.5rem, 3.5vw, 2.125rem); /* 24px → 34px */
    font-weight:   700;
    line-height:   1.3;
    color:         var(--gc-text);
    margin:        0;
    padding-left:  var(--gc-space-md);
    border-left:   4px solid var(--gc-primary);
}

@media (min-width: 768px) {
    .entry-title {
        font-size:   clamp(1.875rem, 3vw, 2.5rem); /* 30px → 40px */
    }
}

/* フォント選択UI */
.gc-card-radios.gc-font-selector {
    display: grid;
    gap: 10px;
    margin-top: 10px;
}

.gc-font-selector__toggle-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
}

.gc-font-selector__large-toggle {
    margin: 0 6px 0 0;
    vertical-align: middle;
}

.gc-font-selector__large-toggle + .gc-font-selector__toggle-label {
    vertical-align: middle;
}

.gc-font-selector__item {
    display: block;
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-md);
    padding: 12px;
    background: var(--gc-bg-card);
    cursor: pointer;
}

.gc-font-selector__item input[type="radio"] {
    margin: 0 0 10px;
}

/* フォント選択グリッド（2列） */
.gc-font-selector { grid-template-columns: repeat(2, 1fr); }

/* フォント名・見本テキスト */
.gc-font-selector__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.gc-font-selector__name    { font-size: 14px; font-weight: 700; display: block; margin-bottom: 6px; }
.gc-font-selector__samples { display: flex; gap: 14px; flex-wrap: wrap; }
.gc-font-selector__sample-ja  { font-size: 15px; color: var(--gc-text); }
.gc-font-selector__sample-num { font-size: 15px; color: var(--gc-text-muted); }
.gc-font-selector__sample-en  { font-size: 15px; color: var(--gc-text-muted); }

.gc-font-selector__large-toggle:checked ~ .gc-font-selector .gc-font-selector__sample-ja,
.gc-font-selector__large-toggle:checked ~ .gc-font-selector .gc-font-selector__sample-num,
.gc-font-selector__large-toggle:checked ~ .gc-font-selector .gc-font-selector__sample-en {
    font-size: 30px;
}

/* 種別タグ */
.gc-font-selector__tag {
    font-size: 10px; font-weight: 700;
    padding: 2px 8px; border-radius: 99px;
    background: var(--gc-primary-light); color: var(--gc-primary);
    white-space: nowrap; flex-shrink: 0; align-self: center;
}

/* モバイル: 1列 */
@media (max-width: 575px) { .gc-font-selector { grid-template-columns: 1fr; } }

/* =======================================
   Design Spec Overrides (2026-02)
   ======================================= */
:root {
    --gc-primary: #1a6fc4;
    --gc-primary-dark: #155a9e;
    --gc-primary-light: #e8f1fb;
    --gc-accent: #e07b00;
    --gc-accent-dark: #b36200;

    --gc-text: #1a1a2e;
    --gc-text-muted: #64748b;
    --gc-text-light: #94a3b8;
    --gc-bg: #f0f4f8;
    --gc-bg-card: #ffffff;
    --gc-border: #e2e8f0;
    --gc-border-strong: #cbd5e1;

    --gc-success-bg: #f0fdf4;
    --gc-success: #16a34a;
    --gc-warning-bg: #fffbeb;
    --gc-warning: #d97706;
    --gc-error-bg: #fef2f2;
    --gc-error: #dc2626;
    --gc-info-bg: #f0f9ff;
    --gc-info: #0284c7;

    --gc-space-xs: 4px;
    --gc-space-sm: 8px;
    --gc-space-md: 16px;
    --gc-space-lg: 24px;
    --gc-space-xl: 40px;
    --gc-space-2xl: 64px;

    --gc-radius-sm: 4px;
    --gc-radius-md: 8px;
    --gc-radius-lg: 12px;
    --gc-radius-xl: 16px;

    --gc-white: var(--gc-bg-card);
}

.gc-btn,
.gc-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--gc-space-sm);
    min-height: 44px;
    min-width: 44px;
    padding: 10px 20px;
    border: 1px solid transparent;
    border-radius: var(--gc-radius-md);
    background: transparent;
    color: var(--gc-text);
    text-decoration: none;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, opacity .15s ease;
}

.gc-btn-primary,
.gc-button-primary {
    background: var(--gc-primary);
    border-color: var(--gc-primary);
    color: var(--gc-bg-card);
}

.gc-btn-primary:hover,
.gc-button-primary:hover {
    background: var(--gc-primary-dark);
    border-color: var(--gc-primary-dark);
    color: var(--gc-bg-card);
}

.gc-btn-secondary,
.gc-button-secondary {
    background: var(--gc-secondary);
    border-color: var(--gc-secondary);
    color: var(--gc-bg-card);
}

.gc-btn-secondary:hover,
.gc-button-secondary:hover {
    background: var(--gc-secondary-dark);
    border-color: var(--gc-secondary-dark);
    color: var(--gc-bg-card);
}

.gc-btn-outline,
.gc-button-outline {
    background: transparent;
    border-color: var(--gc-primary);
    color: var(--gc-primary);
}

.gc-btn-outline:hover,
.gc-button-outline:hover {
    background: var(--gc-primary-light);
    color: var(--gc-primary-dark);
}

.gc-btn-ghost,
.gc-button-ghost {
    background: transparent;
    border-color: transparent;
    color: var(--gc-text-muted);
}

.gc-btn-ghost:hover,
.gc-button-ghost:hover {
    background: var(--gc-bg);
    color: var(--gc-text);
}

.gc-btn-danger,
.gc-button-danger {
    background: var(--gc-error);
    border-color: var(--gc-error);
    color: var(--gc-bg-card);
}

.gc-btn-danger:hover,
.gc-button-danger:hover {
    opacity: .9;
    color: var(--gc-bg-card);
}

.gc-btn-sm,
.gc-button-sm {
    min-height: 44px;
    min-width: 44px;
    padding: 8px 14px;
}

.gc-btn-lg,
.gc-button-large {
    min-height: 52px;
    padding: 14px 28px;
}

.gc-btn-block,
.gc-button-block {
    width: 100%;
}

.gc-btn:disabled,
.gc-button:disabled,
.gc-btn[aria-disabled="true"],
.gc-button[aria-disabled="true"] {
    opacity: .5;
    cursor: not-allowed;
}

.gc-card {
    background: var(--gc-bg-card);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-lg);
    overflow: hidden;
    box-shadow: var(--gc-shadow-sm);
}

.gc-card__header,
.gc-card-header {
    padding: var(--gc-space-md) var(--gc-space-lg);
    border-bottom: 1px solid var(--gc-border);
    background: var(--gc-bg-card);
}

.gc-card__body,
.gc-card-body {
    padding: var(--gc-space-lg);
}

.gc-tax-breakdown {
    display: block;
    margin-top: 4px;
}

.gc-tax-breakdown__main {
    display: block;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--gc-text-primary);
}

.gc-tax-breakdown__label {
    font-size: .875rem;
    font-weight: 500;
    color: var(--gc-text-secondary);
}

.gc-tax-note {
    display: block;
    font-size: .8125rem;
    line-height: 1.4;
    color: var(--gc-text-secondary);
}

.gc-tax-note--inline {
    margin-top: 2px;
}

.gc-card__footer,
.gc-card-footer {
    padding: var(--gc-space-md) var(--gc-space-lg);
    border-top: 1px solid var(--gc-border);
    background: var(--gc-bg);
}

.gc-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
}

.gc-badge-success { background: var(--gc-success-bg); color: var(--gc-success); }
.gc-badge-warning { background: var(--gc-warning-bg); color: var(--gc-warning); }
.gc-badge-error { background: var(--gc-error-bg); color: var(--gc-error); }
.gc-badge-info { background: var(--gc-info-bg); color: var(--gc-info); }

.gc-badge-confirmed { background: var(--gc-primary-light); color: var(--gc-primary-dark); }
.gc-badge-checked-in { background: var(--gc-info-bg); color: var(--gc-primary-dark); }
.gc-badge-in-progress { background: var(--gc-warning-bg); color: var(--gc-warning); }
.gc-badge-completed { background: var(--gc-success-bg); color: var(--gc-success); }
.gc-badge-cancelled { background: var(--gc-error-bg); color: var(--gc-error); }

.gc-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
}

.gc-modal.is-open,
.gc-modal.gc-is-open {
    display: block;
}

.gc-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(26, 26, 46, .55);
}

.gc-modal-content {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-height: 86vh;
    overflow-y: auto;
    background: var(--gc-bg-card);
    border-radius: var(--gc-radius-xl) var(--gc-radius-xl) 0 0;
    border: 1px solid var(--gc-border);
}

.gc-modal-header,
.gc-modal-body,
.gc-modal-footer {
    padding: var(--gc-space-md);
}

.gc-modal-header {
    border-bottom: 1px solid var(--gc-border);
}

.gc-modal-footer {
    border-top: 1px solid var(--gc-border);
}

.gc-toast {
    position: fixed;
    left: 50%;
    top: 50%;
    bottom: auto;
    transform: translate(-50%, -50%);
    z-index: 10000;
    min-width: min(92vw, 360px);
    padding: 12px 16px;
    border-radius: var(--gc-radius-md);
    color: var(--gc-bg-card);
    background: var(--gc-primary);
    opacity: 0;
    pointer-events: none;
    transition: opacity .2s ease, transform .2s ease;
}

.gc-toast.gc-toast-show,
.gc-toast.is-visible {
    opacity: 1;
    transform: translate(-50%, -50%);
}

.gc-toast-success { background: var(--gc-success); }
.gc-toast-error { background: var(--gc-error); }
.gc-toast-info { background: var(--gc-primary); }

.gc-skeleton,
.gc-skeleton-card {
    background: linear-gradient(90deg, var(--gc-bg) 25%, var(--gc-primary-light) 50%, var(--gc-bg) 75%);
    background-size: 200% 100%;
    animation: gc-skeleton-shimmer 1.4s linear infinite;
}

@keyframes gc-skeleton-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (min-width: 640px) {
    .gc-modal-content {
        left: 50%;
        right: auto;
        top: 50%;
        bottom: auto;
        transform: translate(-50%, -50%);
        width: min(92vw, 640px);
        max-height: 90vh;
        border-radius: var(--gc-radius-xl);
    }
}

@media (min-width: 768px) {
    .gc-btn-block,
    .gc-button-block {
        width: auto;
    }
}

/* =======================================
   Design Spec Final Overrides (2026-02)
   ======================================= */
:root {
    --gc-primary: #1a6fc4;
    --gc-primary-dark: #155a9e;
    --gc-primary-light: #e8f1fb;
    --gc-accent: #e07b00;
    --gc-accent-dark: #b36200;

    --gc-text: #1a1a2e;
    --gc-text-muted: #64748b;
    --gc-text-light: #94a3b8;
    --gc-bg: #f0f4f8;
    --gc-bg-card: #ffffff;
    --gc-border: #e2e8f0;
    --gc-border-strong: #cbd5e1;

    --gc-space-xs: 4px;
    --gc-space-sm: 8px;
    --gc-space-md: 16px;
    --gc-space-lg: 24px;
    --gc-space-xl: 40px;
    --gc-space-2xl: 64px;

    --gc-radius-sm: 4px;
    --gc-radius-md: 8px;
    --gc-radius-lg: 12px;
    --gc-radius-xl: 16px;

    --gc-success-light: #f0fdf4;
    --gc-success: #16a34a;
    --gc-warning-light: #fffbeb;
    --gc-warning: #d97706;
    --gc-error-light: #fef2f2;
    --gc-error: #dc2626;
    --gc-info-light: #f0f9ff;
    --gc-info: #0284c7;

    --gc-white: var(--gc-bg-card);
    --gc-danger: var(--gc-error);
    --gc-danger-light: var(--gc-error-light);
    --gc-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.08);
    --gc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
    --gc-transition: 0.15s ease;
    --gc-font-size-md: 15px;
}

body {
    background: var(--gc-bg);
    color: var(--gc-text);
    font-size: 15px;
    line-height: 1.6;
}

.gc-section,
.gc-page-section,
section.gc-section {
    padding: 32px 0;
}

.gc-btn,
.gc-button,
button.gc-btn,
a.gc-btn {
    min-height: 48px;
    min-width: 44px;
    width: 100%;
    padding: 0 24px;
    border-radius: var(--gc-radius-md);
    font-weight: 600;
    font-size: 15px;
    line-height: 1.2;
}

.gc-btn-primary,
.gc-button-primary {
    background: var(--gc-primary);
    border-color: var(--gc-primary);
    color: var(--gc-white);
}

.gc-btn-primary:hover,
.gc-button-primary:hover {
    background: var(--gc-primary-dark);
    border-color: var(--gc-primary-dark);
}

.gc-btn-secondary,
.gc-button-secondary {
    background: var(--gc-secondary);
    border-color: var(--gc-secondary);
    color: var(--gc-white);
}

.gc-btn-secondary:hover,
.gc-button-secondary:hover {
    background: var(--gc-secondary-dark);
    border-color: var(--gc-secondary-dark);
}

.gc-btn-outline,
.gc-button-outline {
    background: transparent;
    border-color: var(--gc-primary);
    color: var(--gc-primary);
}

.gc-btn-outline:hover,
.gc-button-outline:hover {
    background: var(--gc-primary-light);
    color: var(--gc-primary-dark);
}

.gc-btn-ghost,
.gc-button-ghost {
    background: transparent;
    border-color: transparent;
    color: var(--gc-text-muted);
}

.gc-btn-ghost:hover,
.gc-button-ghost:hover {
    background: var(--gc-primary-light);
    color: var(--gc-primary);
}

.gc-btn-danger,
.gc-button-danger {
    background: var(--gc-error);
    border-color: var(--gc-error);
    color: var(--gc-white);
}

.gc-btn-danger:hover,
.gc-button-danger:hover {
    background: var(--gc-danger);
    border-color: var(--gc-danger);
}

.gc-card {
    background: var(--gc-bg-card);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-lg);
    box-shadow: var(--gc-shadow-sm);
    margin-bottom: 24px;
}

.gc-card__body,
.gc-card-body {
    padding: 24px;
}

.gc-card--interactive {
    transition: transform var(--gc-transition), box-shadow var(--gc-transition);
}

.gc-card--interactive:hover {
    transform: translateY(-2px);
    box-shadow: var(--gc-shadow-md);
}

.gc-badge-confirmed {
    background: var(--gc-primary-light);
    color: var(--gc-primary);
}

.gc-badge-checked-in {
    background: color-mix(in srgb, var(--gc-primary-light) 70%, var(--gc-accent) 30%);
    color: var(--gc-primary-dark);
}

.gc-badge-in-progress {
    background: var(--gc-warning-light);
    color: var(--gc-warning);
}

.gc-badge-completed {
    background: var(--gc-success-light);
    color: var(--gc-success);
}

.gc-badge-cancelled {
    background: var(--gc-error-light);
    color: var(--gc-error);
}

.gc-modal-content {
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    transform: none;
    width: 100%;
    max-width: none;
    border-radius: var(--gc-radius-xl) var(--gc-radius-xl) 0 0;
}

.gc-toast {
    bottom: var(--gc-space-lg);
    border-radius: var(--gc-radius-lg);
}

.gc-toast-success {
    background: var(--gc-success);
}

.gc-toast-error {
    background: var(--gc-error);
}

.gc-toast-info {
    background: var(--gc-primary);
}

.gc-skeleton,
.gc-skeleton-card {
    background: linear-gradient(90deg, var(--gc-border) 25%, var(--gc-primary-light) 50%, var(--gc-border) 75%);
    background-size: 200% 100%;
    animation: gc-skeleton-shimmer 1.5s ease-in-out infinite;
}

input[type="checkbox"],
input[type="radio"] {
    appearance: auto;
    width: 18px;
    height: 18px;
    min-width: 18px;
    min-height: 18px;
    cursor: pointer;
    flex-shrink: 0;
}

.gc-form__check,
label:has(input[type="checkbox"]),
label:has(input[type="radio"]) {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    cursor: pointer;
}

.gc-form__select,
select {
    appearance: auto;
    width: 100%;
    min-height: 48px;
    padding: 10px 14px;
    border: 1px solid var(--gc-border-strong);
    border-radius: var(--gc-radius-md);
    font-size: 1rem;
    background: var(--gc-bg-card);
    color: var(--gc-text);
    cursor: pointer;
}

.gc-form__select:not([multiple]):not([size]),
select:not([multiple]):not([size]):not(.select2-hidden-accessible) {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 40px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath fill='%236b7280' d='M3 5l4 4 4-4z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 14px 14px;
}

input,
select,
textarea,
button,
label,
a.gc-btn,
.gc-btn,
.gc-button {
    min-width: 44px;
}

input:focus,
select:focus,
textarea:focus,
button:focus,
.gc-btn:focus,
.gc-button:focus {
    outline: none;
    border-color: var(--gc-primary);
    box-shadow: 0 0 0 3px var(--gc-primary-light);
}

input:disabled,
select:disabled,
textarea:disabled,
button:disabled,
.gc-btn:disabled,
.gc-button:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

@media (min-width: 768px) {
    .gc-section,
    .gc-page-section,
    section.gc-section {
        padding: 48px 0;
    }

    .gc-btn,
    .gc-button,
    button.gc-btn,
    a.gc-btn,
    .gc-btn-block,
    .gc-button-block {
        width: auto;
    }
}

/* =======================================
   Design Consistency Tokens (Phase2)
   ======================================= */
/* [要確認]: 既存互換のため本ファイル内の複数 :root を即時削除せず、最終ブロックで値を統一して上書き。 */
:root {
    --gc-space-xs:   4px;
    --gc-space-sm:   8px;
    --gc-space-md:   16px;
    --gc-space-lg:   24px;
    --gc-space-xl:   32px;
    --gc-space-2xl:  48px;
    --gc-space-3xl:  64px;

    --gc-card-padding:  var(--gc-space-lg);
    --gc-section-gap:   var(--gc-space-2xl);
    --gc-form-gap:      var(--gc-space-md);
    --gc-btn-padding-y: 10px;
    --gc-btn-padding-x: var(--gc-space-lg);

    --gc-text-xs:   11px;
    --gc-text-sm:   13px;
    --gc-text-base: 15px;
    --gc-text-md:   17px;
    --gc-text-lg:   20px;
    --gc-text-xl:   24px;
    --gc-text-2xl:  28px;
    --gc-text-3xl:  32px;

    --gc-leading-tight:  1.3;
    --gc-leading-normal: 1.6;
    --gc-leading-loose:  1.8;

    --gc-font-normal: 400;
    --gc-font-medium: 500;
    --gc-font-bold:   700;

    --gc-transition: 0.2s ease;
}

body {
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-normal);
}

.container {
    padding-left: var(--gc-space-md);
    padding-right: var(--gc-space-md);
}

@media (min-width: 768px) {
    .container {
        padding-left: 0;
        padding-right: 0;
    }
}

.gc-page,
.gc-page-section,
.gc-section,
section.gc-section {
    margin-top: 0;
    margin-bottom: 0;
    padding-top: var(--gc-space-xl);
    padding-bottom: var(--gc-space-xl);
}

@media (min-width: 768px) {
    .gc-page,
    .gc-page-section,
    .gc-section,
    section.gc-section {
        padding-top: var(--gc-space-2xl);
        padding-bottom: var(--gc-space-2xl);
    }

    .gc-page-section + .gc-page-section,
    .gc-section + .gc-section,
    section.gc-section + section.gc-section {
        margin-top: var(--gc-section-gap);
    }
}

.gc-card,
.gc-card__body {
    padding: var(--gc-card-padding);
}

.gc-card__title,
.gc-section-title,
.gc-h3 {
    font-size: var(--gc-text-lg);
    line-height: var(--gc-leading-tight);
}

@media (min-width: 768px) {
    .gc-card__title,
    .gc-section-title,
    .gc-h3 {
        font-size: var(--gc-text-xl);
    }
}

h1,
.gc-page-title,
.gc-h1 {
    font-size: var(--gc-text-2xl);
    line-height: var(--gc-leading-tight);
}

@media (min-width: 768px) {
    h1,
    .gc-page-title,
    .gc-h1 {
        font-size: var(--gc-text-3xl);
    }
}

h2,
.gc-h2 {
    font-size: var(--gc-text-xl);
    line-height: var(--gc-leading-tight);
}

@media (min-width: 768px) {
    h2,
    .gc-h2 {
        font-size: var(--gc-text-2xl);
    }
}

.gc-form__group {
    margin-bottom: var(--gc-form-gap);
}

.gc-form__label {
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-normal);
}

.gc-form__input,
.gc-form__select,
.gc-form__textarea {
    width: 100%;
    padding: var(--gc-space-sm) var(--gc-space-md);
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-normal);
    color: var(--gc-text);
    background: var(--gc-white);
    border: 1px solid var(--gc-border);
    border-radius: 6px;
    min-height: 44px;
    transition: border-color 0.2s ease;
}

.gc-form__input:focus,
.gc-form__select:focus,
.gc-form__textarea:focus {
    outline: none;
    border-color: var(--gc-primary);
    box-shadow: 0 0 0 3px var(--gc-primary-light);
}

.gc-btn,
.gc-button {
    min-width: 44px;
    min-height: 44px;
    padding: var(--gc-btn-padding-y) var(--gc-btn-padding-x);
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-tight);
}

.gc-badge,
.gc-status-badge {
    font-size: var(--gc-text-xs);
    line-height: var(--gc-leading-tight);
}

.gc-note,
.gc-help,
.gc-caption,
.gc-notice,
.gc-remaining-slots {
    font-size: var(--gc-text-sm);
    line-height: var(--gc-leading-normal);
}

table th,
table td,
.gc-table th,
.gc-table td {
    padding: var(--gc-space-sm) var(--gc-space-md);
}

@media (min-width: 768px) {
    table th,
    table td,
    .gc-table th,
    .gc-table td {
        padding: var(--gc-space-md);
    }
}

input[type="checkbox"],
input[type="radio"] {
    width: 18px;
    height: 18px;
    min-width: 18px;
    min-height: 18px;
    accent-color: var(--gc-primary);
}

/* =======================================
   UI統一（クラス互換）
   ======================================= */
.gc-btn {
    line-height: 1.4;
    white-space: nowrap;
    transition: background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}

.gc-btn-primary,
.gc-btn--primary {
    background-color: var(--gc-primary);
    border-color: var(--gc-primary);
    color: var(--gc-white);
}

.gc-btn-primary:hover,
.gc-btn-primary:focus,
.gc-btn--primary:hover,
.gc-btn--primary:focus {
    background-color: var(--gc-primary-dark);
    border-color: var(--gc-primary-dark);
    color: var(--gc-white);
}

.gc-btn-secondary,
.gc-btn--secondary {
    background-color: var(--gc-secondary);
    border-color: var(--gc-secondary);
    color: var(--gc-white);
}

.gc-btn-secondary:hover,
.gc-btn-secondary:focus,
.gc-btn--secondary:hover,
.gc-btn--secondary:focus {
    background-color: var(--gc-secondary-dark);
    border-color: var(--gc-secondary-dark);
    color: var(--gc-white);
}

.gc-btn-outline,
.gc-btn--outline {
    background-color: transparent;
    border-color: var(--gc-primary);
    color: var(--gc-primary);
}

.gc-btn-outline:hover,
.gc-btn-outline:focus,
.gc-btn--outline:hover,
.gc-btn--outline:focus {
    background-color: var(--gc-primary-light);
    color: var(--gc-primary);
}

.gc-badge-neutral {
    background-color: #f0f0f0;
    color: var(--gc-text-muted);
}

.gc-notice-info,
.gc-notice--info {
    background-color: var(--gc-primary-light);
    border-color: var(--gc-primary);
    color: var(--gc-primary);
}

.gc-notice-warning,
.gc-notice--warning {
    background-color: var(--gc-warning-light);
    border-color: var(--gc-warning);
    color: var(--gc-warning);
}

.gc-notice-error,
.gc-notice--error,
.gc-notice--danger {
    background-color: var(--gc-error-light);
    border-color: var(--gc-error);
    color: var(--gc-error);
}

.gc-is-loading {
    position: relative;
}

.gc-is-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 20px;
    height: 20px;
    margin: -10px 0 0 -10px;
    border: 2px solid var(--gc-border);
    border-top-color: var(--gc-primary);
    border-radius: 50%;
    animation: gc-spin 0.7s linear infinite;
}

@keyframes gc-spin {
    to {
        transform: rotate(360deg);
    }
}

@media (max-width: 767px) {
    .gc-btn,
    .gc-button {
        width: 100%;
        justify-content: center;
    }

    .gc-btn.gc-btn--inline {
        width: auto;
    }
}

/* =======================================
   タブ: PC横並び / SP縦スタック
   ======================================= */
.gc-tabs,
.woocommerce-tabs ul.tabs,
.wc-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    border-bottom: 2px solid var(--gc-border);
    margin: 0 0 20px;
    padding: 0;
    list-style: none;
}

.gc-tabs li,
.woocommerce-tabs ul.tabs li,
.wc-tabs li {
    margin: 0;
}

.gc-tabs li a,
.gc-tabs li button,
.woocommerce-tabs ul.tabs li a {
    display: block;
    padding: 10px 20px;
    font-size: 14px;
    font-weight: 600;
    color: var(--gc-text-muted);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    white-space: nowrap;
    transition: color 0.15s, border-color 0.15s;
}

.gc-tabs li.active a,
.gc-tabs li.active button,
.woocommerce-tabs ul.tabs li.active a {
    color: var(--gc-primary);
    border-bottom-color: var(--gc-primary);
}

@media (max-width: 767px) {
    .gc-tabs,
    .woocommerce-tabs ul.tabs,
    .wc-tabs {
        flex-direction: column;
        border-bottom: none;
        border: 1px solid var(--gc-border);
        border-radius: 8px;
        overflow: hidden;
        gap: 0;
    }

    .gc-tabs li,
    .woocommerce-tabs ul.tabs li,
    .wc-tabs li {
        border-bottom: 1px solid var(--gc-border);
    }

    .gc-tabs li:last-child,
    .woocommerce-tabs ul.tabs li:last-child,
    .wc-tabs li:last-child {
        border-bottom: none;
    }

    .gc-tabs li a,
    .gc-tabs li button,
    .woocommerce-tabs ul.tabs li a {
        width: 100%;
        padding: 14px 16px;
        min-height: 48px;
        border-bottom: none;
        border-left: 4px solid transparent;
        margin-bottom: 0;
        display: flex;
        align-items: center;
        background-color: var(--gc-white);
        font-size: 15px;
    }

    .gc-tabs li.active a,
    .gc-tabs li.active button,
    .woocommerce-tabs ul.tabs li.active a {
        border-left-color: var(--gc-primary);
        background-color: var(--gc-primary-light);
        color: var(--gc-primary);
        border-bottom: none;
    }

    .gc-tabs li.active a::after,
    .woocommerce-tabs ul.tabs li.active a::after {
        content: '›';
        margin-left: auto;
        font-size: 20px;
        line-height: 1;
        color: var(--gc-primary);
    }

    .woocommerce-tabs .panel,
    .gc-tab-panel {
        padding: 16px 0;
    }
}

/* =======================================
   レスポンシブテーブル
   ======================================= */
.gc-table-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.gc-responsive-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.gc-responsive-table thead th {
    background-color: var(--gc-bg);
    border-bottom: 2px solid var(--gc-border);
    padding: 10px 14px;
    text-align: left;
    font-size: 13px;
    font-weight: 600;
    color: var(--gc-text-muted);
    white-space: nowrap;
}

.gc-responsive-table tbody td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--gc-border);
    vertical-align: middle;
    color: var(--gc-text);
}

.gc-responsive-table tbody tr:last-child td {
    border-bottom: none;
}

.gc-responsive-table tbody tr:hover td {
    background-color: var(--gc-primary-light);
}

@media (max-width: 767px) {
    .gc-table-wrap {
        overflow-x: visible;
    }

    .gc-responsive-table,
    .gc-responsive-table thead,
    .gc-responsive-table tbody,
    .gc-responsive-table tr,
    .gc-responsive-table th,
    .gc-responsive-table td {
        display: block;
    }

    .gc-responsive-table thead {
        display: none;
    }

    .gc-responsive-table tbody tr {
        background-color: var(--gc-white);
        border: 1px solid var(--gc-border);
        border-radius: 8px;
        margin-bottom: 12px;
        padding: 4px 0;
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
        overflow: hidden;
    }

    .gc-responsive-table tbody tr:hover {
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.10);
    }

    .gc-responsive-table tbody td {
        display: flex;
        align-items: baseline;
        gap: 8px;
        padding: 10px 16px;
        border-bottom: 1px solid var(--gc-bg);
        font-size: 14px;
        min-height: 44px;
    }

    .gc-responsive-table tbody td:last-child {
        border-bottom: none;
    }

    .gc-responsive-table tbody td::before {
        content: attr(data-label);
        flex-shrink: 0;
        width: 7em;
        font-size: 12px;
        font-weight: 600;
        color: var(--gc-text-muted);
        white-space: nowrap;
    }

    .gc-responsive-table tbody td[data-label=""]::before {
        display: none;
    }

    .gc-responsive-table tbody td.gc-table-actions {
        justify-content: flex-end;
        gap: 8px;
        padding: 12px 16px;
        background-color: var(--gc-bg);
        flex-wrap: wrap;
    }

    .gc-responsive-table tbody td.gc-table-actions::before {
        display: none;
    }

    .gc-responsive-table tbody td.gc-table-actions .gc-btn {
        flex: 1;
        min-width: 100px;
        justify-content: center;
    }
}

/* WooCommerce 標準テーブルにも適用 */
.woocommerce-orders-table,
.woocommerce table.shop_table {
    width: 100%;
    border-collapse: collapse;
}

@media (max-width: 767px) {
    .woocommerce-orders-table,
    .woocommerce table.shop_table,
    .woocommerce-orders-table thead,
    .woocommerce table.shop_table thead,
    .woocommerce-orders-table tbody,
    .woocommerce table.shop_table tbody,
    .woocommerce-orders-table tr,
    .woocommerce table.shop_table tr,
    .woocommerce-orders-table th,
    .woocommerce table.shop_table th,
    .woocommerce-orders-table td,
    .woocommerce table.shop_table td {
        display: block;
    }

    .woocommerce-orders-table thead,
    .woocommerce table.shop_table thead {
        display: none;
    }

    .woocommerce-orders-table tbody tr,
    .woocommerce table.shop_table tbody tr {
        background-color: var(--gc-white);
        border: 1px solid var(--gc-border);
        border-radius: 8px;
        margin-bottom: 12px;
        padding: 4px 0;
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
    }

    .woocommerce-orders-table tbody td,
    .woocommerce table.shop_table tbody td {
        display: flex;
        align-items: baseline;
        gap: 8px;
        padding: 10px 16px;
        border-bottom: 1px solid var(--gc-bg);
        font-size: 14px;
        min-height: 44px;
    }

    .woocommerce-orders-table tbody td::before,
    .woocommerce table.shop_table tbody td::before {
        content: attr(data-title);
        flex-shrink: 0;
        width: 7em;
        font-size: 12px;
        font-weight: 600;
        color: var(--gc-text-muted);
    }
}

/* =======================================
   横スクロール防止 / 余白統一
   ======================================= */
html,
body {
    overflow-x: hidden;
    max-width: 100%;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

img,
video,
iframe,
table {
    max-width: 100%;
}

.gc-page-content > * + *,
.gc-section > * + *,
.gc-card__body > * + * {
    margin-top: 1.25rem;
}

/* 固定ページ本文内に出力されるテンプレート側タイトルは非表示（テーマの entry-header に統一） */
.page .entry-content > header.entry-header {
    display: none;
}

@media (max-width: 767px) {
    .gc-page:not(.container),
    .gc-section:not(.container) {
        padding-left: 15px;
        padding-right: 15px;
    }

    .gc-table-wrap {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* =======================================
   Front UI Refresh (2026-02-25)
   ======================================= */
:root {
    --gc-space-xs: 4px;
    --gc-space-sm: 8px;
    --gc-space-md: 16px;
    --gc-space-lg: 24px;
    --gc-space-xl: 32px;
    --gc-space-2xl: 48px;

    --gc-text-xs: 12px;
    --gc-text-sm: 14px;
    --gc-text-base: 16px;
    --gc-text-md: 18px;
    --gc-text-lg: 20px;
    --gc-text-xl: 24px;
    --gc-text-2xl: 28px;

    --gc-leading-tight: 1.4;
    --gc-leading-normal: 1.7;
    --gc-leading-loose: 1.9;

    --gc-card-padding: var(--gc-space-lg);
    --gc-btn-padding-y: 11px;
    --gc-btn-padding-x: var(--gc-space-lg);
    --gc-form-gap: var(--gc-space-md);
}

html {
    font-size: var(--gc-text-base);
}

body {
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-normal);
}

h1,
h2,
h3,
.gc-page-title,
.gc-section-title,
.gc-card__title {
    line-height: var(--gc-leading-tight);
    margin-bottom: var(--gc-space-md);
}

.gc-card {
    border-radius: var(--gc-radius-lg);
    border: 1px solid var(--gc-border);
    box-shadow: var(--gc-shadow-sm);
}

.gc-card__header {
    padding: var(--gc-space-md) var(--gc-space-lg);
    font-size: var(--gc-text-md);
}

.gc-card__body,
.gc-card__footer {
    padding: var(--gc-card-padding);
}

.gc-form__group {
    margin-bottom: var(--gc-form-gap);
}

.gc-form__label {
    font-size: var(--gc-text-sm);
    line-height: var(--gc-leading-normal);
    margin-bottom: var(--gc-space-xs);
}

.gc-form__input,
.gc-form__select,
.gc-form__textarea,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
    min-height: 44px;
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-normal);
    border-radius: var(--gc-radius-md);
    border: 1px solid var(--gc-border-strong);
    padding: 10px 12px;
}

.gc-btn,
.gc-button {
    min-height: 44px;
    min-width: 44px;
    font-size: var(--gc-text-base);
    line-height: var(--gc-leading-tight);
    border-radius: var(--gc-radius-md);
    padding: var(--gc-btn-padding-y) var(--gc-btn-padding-x);
}

.gc-btn + .gc-btn,
.gc-button + .gc-button {
    margin-left: var(--gc-space-sm);
}

.gc-badge,
.gc-status-badge {
    font-size: var(--gc-text-xs);
    line-height: var(--gc-leading-tight);
    padding: 3px 10px;
}

.gc-notice,
.gc-notice-success,
.gc-notice-warning,
.gc-notice-error,
.gc-notice--success,
.gc-notice--warning,
.gc-notice--error,
.gc-notice--info {
    font-size: var(--gc-text-sm);
    line-height: var(--gc-leading-normal);
    padding: var(--gc-space-md);
    border-radius: var(--gc-radius-md);
}

.gc-notice--success,
.gc-notice-success {
    background: var(--gc-success-bg);
    border-color: var(--gc-success);
    color: var(--gc-success);
}

.gc-notice--warning,
.gc-notice-warning {
    background: var(--gc-warning-bg);
    border-color: var(--gc-warning);
    color: var(--gc-warning);
}

.gc-notice--error,
.gc-notice-error {
    background: var(--gc-error-bg);
    border-color: var(--gc-error);
    color: var(--gc-error);
}

@media (max-width: 767px) {
    .gc-card__body,
    .gc-card__footer,
    .gc-card__header {
        padding-left: var(--gc-space-md);
        padding-right: var(--gc-space-md);
    }

    .gc-btn,
    .gc-button {
        width: 100%;
    }
}

@media (min-width: 768px) {
    :root {
        --gc-card-padding: var(--gc-space-xl);
    }

    .gc-btn,
    .gc-button {
        width: auto;
    }
}

/* =======================================
   Table & Date Unification (2026-02-25)
   ======================================= */
.gc-table-wrap {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}

.gc-site-content table,
.gc-page-content table,
.gc-cart__table,
.gc-order-review-table,
.gc-order-details-table,
.gc-orders-table,
.woocommerce-orders-table,
.woocommerce table.shop_table {
    width: 100%;
    max-width: 100%;
    border-collapse: collapse;
    table-layout: auto;
}

.gc-cart__table,
.gc-order-review-table,
.gc-order-details-table,
.gc-orders-table,
.woocommerce-orders-table,
.woocommerce table.shop_table {
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-lg);
    overflow: hidden;
    background: var(--gc-bg-card);
}

.gc-cart__table thead th,
.gc-order-review-table thead th,
.gc-order-details-table thead th,
.gc-orders-table thead th,
.woocommerce-orders-table thead th,
.woocommerce table.shop_table thead th {
    background: var(--gc-bg);
    color: var(--gc-text-muted);
    font-size: var(--gc-text-sm);
    font-weight: 700;
    line-height: var(--gc-leading-tight);
    padding: var(--gc-space-sm) var(--gc-space-md);
    border-bottom: 1px solid var(--gc-border);
    white-space: nowrap;
}

.gc-cart__table tbody td,
.gc-order-review-table tbody td,
.gc-order-details-table tbody td,
.gc-orders-table tbody td,
.woocommerce-orders-table tbody td,
.woocommerce table.shop_table tbody td,
.gc-cart__table tfoot td,
.gc-order-review-table tfoot td,
.gc-order-details-table tfoot td,
.woocommerce table.shop_table tfoot td,
.woocommerce table.shop_table tfoot th {
    font-size: var(--gc-text-sm);
    line-height: var(--gc-leading-normal);
    padding: var(--gc-space-sm) var(--gc-space-md);
    vertical-align: middle;
    border-bottom: 1px solid var(--gc-border);
    overflow-wrap: anywhere;
    word-break: break-word;
}

.gc-cart__table tbody tr:last-child td,
.gc-order-review-table tbody tr:last-child td,
.gc-order-details-table tbody tr:last-child td,
.gc-orders-table tbody tr:last-child td {
    border-bottom: 0;
}

.gc-table-wrap .gc-responsive-table,
.gc-table-wrap > .gc-order-details-table {
    min-width: 640px;
}

.gc-cart .gc-table-wrap > .gc-cart__table,
.gc-checkout .gc-table-wrap > .gc-order-review-table {
    min-width: 0;
}

.gc-cart__item-layout {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr) minmax(140px, auto);
    gap: var(--gc-space-md);
    align-items: start;
}

.gc-cart__item-image img,
.gc-cart__item-image .attachment-woocommerce_thumbnail {
    width: 88px;
    max-width: 88px;
    height: auto;
    display: block;
}

.gc-cart__item-name {
    font-weight: 700;
    font-size: var(--gc-text-lg);
    margin-bottom: 4px;
    white-space: normal;
    word-break: break-word;
}

.gc-cart__item-row {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    margin-bottom: 2px;
    line-height: 1.5;
}

.gc-cart__item-row:last-child {
    margin-bottom: 0;
}

.gc-cart__item-label {
    flex: 0 0 64px;
    color: var(--gc-text-muted);
    font-size: var(--gc-text-xs);
}

.gc-cart__item-value {
    min-width: 0;
    white-space: normal;
    word-break: break-word;
}

.gc-cart__item-pricebox {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gc-cart__item-price-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    white-space: nowrap;
}

.gc-cart__item-price-label {
    color: var(--gc-text-muted);
    font-size: var(--gc-text-xs);
}

.gc-cart__item-price-value {
    text-align: right;
    margin-left: auto;
}

.gc-cart__item-price-row--subtotal .gc-cart__item-price-value {
    font-weight: 700;
    font-size: var(--gc-text-lg);
}

.gc-cart__table .gc-cart__col-image img,
.gc-cart__table .gc-cart__col-image .attachment-woocommerce_thumbnail {
    width: 88px;
    max-width: 88px;
    height: auto;
}

.gc-cart__item-line1 {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--gc-space-sm);
}

.gc-cart__item-title-wrap {
    min-width: 0;
    flex: 1 1 auto;
}

.gc-cart__item-title-wrap a,
.gc-cart__item-title-wrap {
    white-space: normal;
    word-break: break-word;
}

.gc-cart__item-meta {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--gc-space-sm);
    font-size: var(--gc-text-xs);
    line-height: var(--gc-leading-tight);
    white-space: nowrap;
}

.gc-cart__item-meta small {
    color: var(--gc-text-muted);
}

.gc-cart__item-meta .qty {
    width: 58px;
    min-height: 34px;
    padding: 4px 6px;
    font-size: var(--gc-text-xs);
}

.gc-cart__item-line2 {
    display: flex;
    align-items: baseline;
    justify-content: flex-end;
    gap: var(--gc-space-xs);
    margin-top: var(--gc-space-xs);
}

.gc-cart__item-subtotal-label {
    font-size: var(--gc-text-xs);
    color: var(--gc-text-muted);
}

.gc-cart__item-subtotal-value {
    text-align: right;
    font-weight: 700;
}

.gc-checkout-item__line1 {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--gc-space-sm);
}

.gc-checkout-item__layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    gap: var(--gc-space-sm);
    align-items: start;
}

.gc-checkout-item__layout--no-image {
    grid-template-columns: minmax(0, 1fr) max-content;
}

.gc-checkout-item__info {
    min-width: 0;
}

.gc-checkout-item__pricebox {
    min-width: 0;
}

.gc-checkout-item__name {
    min-width: 0;
    flex: 1 1 auto;
    white-space: normal;
    word-break: break-word;
}

.gc-checkout-item__meta {
    display: inline-flex;
    gap: var(--gc-space-xs);
    align-items: center;
    font-size: var(--gc-text-xs);
    white-space: nowrap;
}

.gc-checkout-item__meta--no-qty {
    justify-content: flex-end;
}

.gc-checkout-item__meta small {
    color: var(--gc-text-muted);
}

.gc-checkout-item__line2 {
    display: flex;
    align-items: baseline;
    justify-content: flex-end;
    gap: var(--gc-space-xs);
    margin-top: var(--gc-space-xs);
}

.gc-checkout-item__subtotal-label {
    font-size: var(--gc-text-xs);
    color: var(--gc-text-muted);
}

.gc-checkout-item__subtotal-value {
    font-weight: 700;
    text-align: right;
}

.gc-cart .cart_totals .shop_table th,
.gc-checkout .gc-order-review-table tfoot th {
    text-align: left;
}

.gc-cart .cart_totals .shop_table td,
.gc-checkout .gc-order-review-table tfoot td {
    text-align: right;
}

.gc-cart .cart_totals .shop_table tr.order-total td .amount,
.gc-cart .cart_totals .shop_table tr.order-total td .woocommerce-Price-amount,
.gc-cart .cart_totals .shop_table tr.order-total td .woocommerce-Price-amount bdi {
    font-size: var(--gc-font-size-xl, 22px);
    font-weight: 700;
    line-height: 1.2;
}

/* 日付強調（専用クラス優先） */
.gc-booking-item__datetime,
.gc-cart-booking-date,
.gc-cart-booking-time,
#gc-summary-date,
.gc-datetime-info .gc-date,
.gc-monitor-date,
.gc-dashboard__vehicle-year {
    font-size: var(--gc-text-md);
    font-weight: 700;
    line-height: var(--gc-leading-tight);
    color: var(--gc-primary);
}

.gc-booking-details dd,
.gc-booking-details-list dd {
    font-size: var(--gc-text-md);
    font-weight: 700;
    color: var(--gc-primary);
}

.gc-order-details-table td [style*="font-size:12px"] > div {
    font-size: var(--gc-text-sm) !important;
    line-height: var(--gc-leading-normal) !important;
    color: var(--gc-text) !important;
}

/* [要確認]: 注文完了テーブル内の予約日行は専用クラスがないため、商品メタ行全体の可読性を引き上げて対応。 */

@media (max-width: 767px) {
    .gc-table-wrap,
    .gc-cart__items,
    .gc-checkout__order-review,
    .woocommerce-MyAccount-content,
    .gc-card__body {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .gc-cart__table,
    .gc-order-details-table,
    .woocommerce-orders-table,
    .woocommerce table.shop_table,
    .gc-table-wrap .gc-responsive-table {
        display: table !important;
        width: 100% !important;
        min-width: 600px;
    }

    .gc-cart__table,
    .gc-order-review-table {
        display: table !important;
        width: 100% !important;
        min-width: 0;
    }

    .gc-cart__table thead,
    .gc-order-review-table thead,
    .gc-order-details-table thead,
    .woocommerce-orders-table thead,
    .woocommerce table.shop_table thead,
    .gc-table-wrap .gc-responsive-table thead {
        display: table-header-group !important;
    }

    .gc-cart__table tbody,
    .gc-order-review-table tbody,
    .gc-order-details-table tbody,
    .woocommerce-orders-table tbody,
    .woocommerce table.shop_table tbody,
    .gc-table-wrap .gc-responsive-table tbody {
        display: table-row-group !important;
    }

    .gc-cart__table tr,
    .gc-order-review-table tr,
    .gc-order-details-table tr,
    .woocommerce-orders-table tr,
    .woocommerce table.shop_table tr,
    .gc-table-wrap .gc-responsive-table tr {
        display: table-row !important;
    }

    .gc-cart__table th,
    .gc-cart__table td,
    .gc-order-review-table th,
    .gc-order-review-table td,
    .gc-order-details-table th,
    .gc-order-details-table td,
    .woocommerce-orders-table th,
    .woocommerce-orders-table td,
    .woocommerce table.shop_table th,
    .woocommerce table.shop_table td,
    .gc-table-wrap .gc-responsive-table th,
    .gc-table-wrap .gc-responsive-table td {
        display: table-cell !important;
        font-size: var(--gc-text-xs);
        padding: var(--gc-space-xs) var(--gc-space-sm);
        white-space: normal;
        overflow-wrap: anywhere;
        word-break: break-word;
    }

    .gc-table-wrap .gc-responsive-table td::before,
    .woocommerce-orders-table td::before,
    .woocommerce table.shop_table td::before {
        content: none !important;
        display: none !important;
    }

    .gc-booking-item__datetime,
    .gc-cart-booking-date,
    .gc-cart-booking-time,
    #gc-summary-date,
    .gc-datetime-info .gc-date,
    .gc-dashboard__vehicle-year {
        font-size: var(--gc-text-base);
    }

    .gc-order-review-table td[data-label="数量"],
    .gc-order-review-table td[data-label="小計"],
    .gc-order-details-table td[data-label="数量"],
    .gc-order-details-table td[data-label="小計"],
    .gc-order-details-table td[data-label="合計"] {
        white-space: nowrap;
    }

    .gc-cart__table .gc-cart__col-image img,
    .gc-cart__table .gc-cart__col-image .attachment-woocommerce_thumbnail {
        width: 72px;
        max-width: 72px;
    }

    .gc-cart__item-layout {
        grid-template-columns: 72px minmax(0, 1fr);
        gap: var(--gc-space-sm);
    }

    .gc-cart__item-pricebox {
        grid-column: 1 / -1;
        margin-top: 4px;
    }

    .gc-cart__item-label {
        flex-basis: 58px;
    }

    .gc-cart__item-line1,
    .gc-checkout-item__line1 {
        flex-direction: column;
        align-items: stretch;
        gap: 4px;
    }

    .gc-checkout-item__layout,
    .gc-checkout-item__layout--no-image {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .gc-cart__item-meta,
    .gc-checkout-item__meta {
        justify-content: flex-start;
        white-space: normal;
        flex-wrap: wrap;
    }

    .gc-cart .cart_totals .shop_table tr.order-total th,
    .gc-cart .cart_totals .shop_table tr.order-total td,
    .gc-cart .cart_totals .shop_table tr.cart-subtotal th,
    .gc-cart .cart_totals .shop_table tr.cart-subtotal td,
    .gc-checkout .gc-order-review-table tr.order-total th,
    .gc-checkout .gc-order-review-table tr.order-total td,
    .gc-checkout .gc-order-review-table tr.cart-subtotal th,
    .gc-checkout .gc-order-review-table tr.cart-subtotal td {
        display: table-cell !important;
        width: auto !important;
        white-space: normal;
    }
}
/* ========================================
   ログイン/新規登録必須バナー（商品ページ）
   ======================================== */

.gc-login-required-notice {
    margin-bottom: var(--gc-space-md, 1.5rem);
}

.gc-login-required-notice a {
    font-weight: 600;
    text-decoration: underline;
}

/* ------------------------------------------------------------------
 * パターンB：価格変更免責ノーティス
 * ------------------------------------------------------------------ */
.gc-pattern-b-notice {
    margin-bottom: 1.25rem;
    padding: 0.875rem 1rem;
    border-left: 4px solid var(--gc-warning);
    background-color: var(--gc-warning-light);
    border-radius: 0 4px 4px 0;
}

.gc-pattern-b-notice__message {
    margin: 0 0 0.625rem;
    font-size: 0.875rem;
    color: var(--gc-text-secondary);
    line-height: 1.6;
}

.gc-pattern-b-notice__label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    color: var(--gc-text);
}

.gc-pattern-b-notice__checkbox {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    cursor: pointer;
    accent-color: var(--gc-primary);
}

/* 価格変動ありバッジ */
.gc-badge-price-variable {
    display: inline-block;
    padding: 2px 7px;
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 1.4;
    border-radius: 3px;
    background-color: var(--gc-warning);
    color: var(--gc-white);
    vertical-align: middle;
    letter-spacing: 0.02em;
    white-space: nowrap;
}