:root{--ap-main:var(--ap-main);--ap-sub:var(--ap-sub);--ap-on-main:#050505;}
.athlete-pass-body .page { background:#050505; }
.ap-page{background:#050505;color:#fff;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Noto Sans JP",sans-serif;overflow:hidden;}
.ap-hero{min-height:88vh;padding:86px 6%;display:grid;grid-template-columns:1.08fr .92fr;gap:42px;align-items:center;background:radial-gradient(circle at 82% 18%,color-mix(in srgb, var(--ap-main) 25%, transparent),transparent 31%),linear-gradient(135deg,#050505 0%,#111 100%);}
.ap-hero-top{background:radial-gradient(circle at 76% 22%,color-mix(in srgb, var(--ap-main) 30%, transparent),transparent 32%),linear-gradient(135deg,#050505 0%,#121212 100%);}
.ap-label,.ap-section-label{letter-spacing:.18em;color:var(--ap-main);font-size:13px;font-weight:800;text-transform:uppercase;}
.ap-badge{display:inline-block;border:1px solid var(--ap-main);color:var(--ap-main);padding:7px 13px;border-radius:999px;font-size:12px;letter-spacing:.12em;margin:0 0 24px;font-weight:800;}
.ap-hero h1{font-size:clamp(48px,8vw,96px);line-height:1.02;margin:0 0 20px;font-weight:900;letter-spacing:.02em;}
.ap-hero h2{font-size:clamp(22px,3vw,36px);margin:0 0 24px;color:#fff;}
.ap-lead{color:#d0d0d0;line-height:1.9;font-size:17px;margin:0 0 32px;max-width:720px;}
.ap-btn{display:inline-block;background:var(--ap-main);color:var(--ap-on-main)!important;text-decoration:none;font-weight:900;padding:16px 30px;border-radius:999px;border:0;box-shadow:0 12px 30px color-mix(in srgb, var(--ap-main) 35%, transparent);cursor:pointer;}
.ap-btn-small{padding:11px 18px;font-size:14px;margin-top:12px;}
.ap-hero-visual{width:100%;display:flex;justify-content:center;align-items:center!important;text-align:center;}
.ap-hero-visual img{display:block;margin-left:auto;margin-right:auto;max-width:82%;max-height:620px;object-fit:contain;object-position:center center;filter:drop-shadow(0 30px 40px rgba(0,0,0,.62));}
.ap-pass-mock{width:min(360px,80vw);aspect-ratio:1/1.2;margin:auto;border:1px solid color-mix(in srgb, var(--ap-main) 55%, transparent);border-radius:34px;background:linear-gradient(150deg,#171717,#050505);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 30px 80px rgba(0,0,0,.55), inset 0 0 80px color-mix(in srgb, var(--ap-main) 8%, transparent);}
.ap-pass-mock span{color:var(--ap-main);letter-spacing:.18em;font-weight:900;font-size:12px;margin-bottom:28px;}
.ap-pass-mock strong{font-size:54px;line-height:.9;text-align:center;font-weight:950;}
.ap-pass-mock em{color:#aaa;font-style:normal;letter-spacing:.12em;font-size:12px;margin-top:28px;}
.ap-section{padding:82px 6%;border-top:1px solid #1f1f1f;}
.ap-section h2{font-size:clamp(28px,4vw,48px);margin:0 0 24px;}
.ap-section p{color:#d0d0d0;line-height:1.9;max-width:900px;}
.ap-card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:32px;}
.ap-card,.ap-athlete-card,.ap-profile-box,.ap-content-item,.ap-keyholder-box,.ap-form-card{background:#111;border:1px solid #2a2a2a;border-radius:22px;padding:27px;}
.ap-card span{color:var(--ap-main);font-weight:900;font-size:14px;}
.ap-card h3{font-size:18px;margin:18px 0 10px;}
.ap-card p{font-size:14px;color:#b8b8b8;line-height:1.7;}
.ap-lineup-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:32px;}
.ap-athlete-card{display:block;text-decoration:none;color:#fff!important;transition:transform .18s ease,border-color .18s ease;overflow:hidden;}
.ap-athlete-card:hover{transform:translateY(-4px);border-color:var(--ap-main);}
.ap-athlete-img{height:260px;display:flex;align-items:flex-end;justify-content:center;background:radial-gradient(circle at center,rgba(217,138,31,.17),transparent 55%);border-radius:18px;margin-bottom:18px;overflow:hidden;}
.ap-athlete-img img{width:100%;height:100%;object-fit:contain;}
.ap-athlete-card p{color:var(--ap-main);font-size:12px;letter-spacing:.14em;font-weight:900;margin:0 0 8px;}
.ap-athlete-card h3{font-size:24px;margin:0 0 8px;}
.ap-athlete-card span{color:#cfcfcf;line-height:1.6;font-size:14px;}
.ap-profile-box strong{color:var(--ap-main);}
.ap-bio{color:#d0d0d0;line-height:1.9;margin-top:18px;}
.ap-bio *{max-width:100%;}
.ap-keyholder-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:30px;}
.ap-keyholder-box h3{color:var(--ap-main);letter-spacing:.16em;margin:0 0 18px;}
.ap-keyholder-box img{width:100%;max-height:520px;object-fit:contain;border-radius:18px;background:#080808;}
.ap-placeholder{min-height:280px;border:1px dashed #555;border-radius:18px;color:#aaa;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;}
.ap-cta{padding:90px 6%;text-align:center;background:radial-gradient(circle at center,color-mix(in srgb, var(--ap-main) 22%, transparent),transparent 35%),#080808;}
.ap-cta p{color:var(--ap-main);letter-spacing:.16em;font-weight:800;}
.ap-cta h2{font-size:clamp(32px,5vw,60px);margin:0 0 20px;}
.ap-price{font-size:24px;font-weight:900;margin-bottom:28px;}
.ap-mini-list{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px;}
.ap-mini-list a{color:#fff;text-decoration:none;border:1px solid #333;border-radius:999px;padding:10px 16px;}
.ap-mini-list a:hover{border-color:var(--ap-main);color:var(--ap-main);}
.ap-empty{color:#aaa;}
.ap-form-page{min-height:70vh;padding:80px 6%;display:flex;align-items:center;justify-content:center;}
.ap-form-card{width:min(720px,100%);}
.ap-form-card h1{font-size:clamp(30px,5vw,56px);margin:8px 0 18px;}
.ap-form{margin-top:28px;}
.ap-form p{margin:0 0 18px;color:#ddd;}
.ap-form label{display:block;color:var(--ap-main);font-size:13px;font-weight:900;letter-spacing:.08em;margin-bottom:7px;}
.ap-form input,.ap-form textarea{width:100%;box-sizing:border-box;border:1px solid #333;border-radius:14px;background:#070707;color:#fff;padding:14px 16px;font:inherit;}
.ap-form input:focus,.ap-form textarea:focus{outline:none;border-color:var(--ap-main);box-shadow:0 0 0 3px color-mix(in srgb, var(--ap-main) 18%, transparent);}
.ap-member-hero{min-height:64vh;}
.ap-content-list{display:grid;grid-template-columns:1fr;gap:22px;margin-top:28px;}
.ap-content-type{color:var(--ap-main)!important;font-size:12px!important;letter-spacing:.16em;font-weight:900;margin:0 0 6px!important;}
.ap-content-item h3{font-size:26px;margin:0 0 12px;}
.ap-content-item img,.ap-content-item video{width:100%;max-height:720px;object-fit:contain;border-radius:18px;background:#050505;margin-top:14px;}
.ap-message-form{max-width:760px;}
@media (max-width:980px){.ap-hero{min-height:auto;grid-template-columns:1fr;text-align:center;padding:58px 5%;}.ap-hero-text{order:2}.ap-hero-visual{order:1;width:100%;display:flex;justify-content:center;align-items:center!important}.ap-hero-visual img{margin-left:auto;margin-right:auto;max-width:86%;max-height:390px;object-fit:contain;object-position:center center}.ap-card-grid,.ap-lineup-grid{grid-template-columns:1fr 1fr}.ap-keyholder-grid{grid-template-columns:1fr}.ap-section{padding:58px 5%;}}
@media (max-width:560px){.ap-card-grid,.ap-lineup-grid{grid-template-columns:1fr}.ap-athlete-img{height:230px}.ap-btn{width:100%;box-sizing:border-box;text-align:center}.ap-hero h1{font-size:46px}.ap-pass-mock strong{font-size:42px}.ap-form-page{padding:46px 5%;}}

/* v3: LP / member page refinements */
.ap-hero-lp{padding-top:100px;position:relative;}
.ap-hero-lp:after{content:"TOUCH NFC";position:absolute;right:5%;bottom:24px;color:rgba(255,255,255,.045);font-size:clamp(46px,10vw,148px);font-weight:950;letter-spacing:.04em;pointer-events:none;}
.ap-hero-actions{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.ap-btn-outline{display:inline-block;color:#fff!important;text-decoration:none;font-weight:900;padding:15px 28px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.03);}
.ap-btn-outline:hover{border-color:var(--ap-main);color:var(--ap-main)!important;}
.ap-btn-disabled{opacity:.72;box-shadow:none;}
.ap-intro-band{display:grid;grid-template-columns:.9fr 1.1fr;gap:36px;align-items:center;padding:58px 6%;background:linear-gradient(90deg,#0a0a0a,#12100b);border-top:1px solid #1f1f1f;border-bottom:1px solid #1f1f1f;}
.ap-intro-band h2{font-size:clamp(28px,4vw,48px);line-height:1.25;margin:0;}
.ap-intro-band p{color:#d0d0d0;line-height:1.95;margin:0;}
.ap-card-grid-5{grid-template-columns:repeat(5,1fr);}
.ap-howto{background:#070707;}
.ap-step-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:30px;}
.ap-step{background:#111;border:1px solid #2a2a2a;border-radius:22px;padding:26px;}
.ap-step b{display:inline-block;color:var(--ap-main);letter-spacing:.13em;font-size:12px;margin-bottom:12px;}
.ap-step h3{font-size:20px;margin:0 0 10px;}
.ap-step p{font-size:14px;color:#b8b8b8;line-height:1.7;margin:0;}
.ap-season-box{background:linear-gradient(135deg,#050505,#0e0b06);}
.ap-member-page .ap-member-hero{min-height:72vh;}
.ap-status-box{display:inline-flex;flex-direction:column;gap:4px;margin-top:8px;padding:16px 20px;border:1px solid rgba(217,138,31,.48);border-radius:18px;background:color-mix(in srgb, var(--ap-main) 8%, transparent);}
.ap-status-box span{font-size:11px;letter-spacing:.18em;color:var(--ap-main);font-weight:900;}
.ap-status-box strong{font-size:22px;letter-spacing:.08em;}
.ap-status-box small{color:#cfcfcf;}
.ap-content-head{border-bottom:1px solid #282828;margin-bottom:18px;padding-bottom:10px;}
.ap-content-empty{background:#111;border:1px dashed #444;border-radius:22px;padding:36px;text-align:center;}
.ap-content-empty h3{font-size:26px;margin:0 0 12px;}
.ap-message-section{background:#070707;}
.ap-message-form{max-width:820px;background:#111;border:1px solid #2a2a2a;border-radius:22px;padding:28px;margin-top:26px;}
.ap-content-item{position:relative;overflow:hidden;}
.ap-content-item:before{content:"LIMITED";position:absolute;right:22px;top:20px;color:rgba(217,138,31,.16);font-weight:950;letter-spacing:.12em;font-size:30px;}
@media (max-width:1100px){.ap-card-grid-5{grid-template-columns:repeat(3,1fr);}.ap-step-grid{grid-template-columns:repeat(2,1fr);}.ap-intro-band{grid-template-columns:1fr;}}
@media (max-width:700px){.ap-hero-actions{justify-content:center}.ap-card-grid-5,.ap-step-grid{grid-template-columns:1fr}.ap-intro-band{padding:46px 5%;}.ap-status-box{width:100%;box-sizing:border-box;align-items:center}.ap-content-item:before{font-size:22px;right:16px;top:16px;}.ap-message-form{padding:22px;}}

/* v4: 複数キーホルダー商品・NFC支援導線 */
.ap-product-grid,
.ap-support-cta-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  margin-top: 34px;
}

.ap-product-card,
.ap-support-cta-card {
  position: relative;
  background: linear-gradient(180deg, rgba(255,255,255,0.055), rgba(255,255,255,0.025));
  border: 1px solid rgba(217,138,31,0.28);
  border-radius: 26px;
  padding: 24px;
  overflow: hidden;
}

.ap-product-card::before,
.ap-support-cta-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 80% 0%, color-mix(in srgb, var(--ap-main) 16%, transparent), transparent 34%);
  pointer-events: none;
}

.ap-product-badge {
  position: relative;
  z-index: 1;
  display: inline-block;
  margin-bottom: 14px;
  padding: 5px 11px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--ap-main) 16%, transparent);
  border: 1px solid rgba(217,138,31,0.55);
  color: var(--ap-main);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.1em;
}

.ap-product-image {
  position: relative;
  z-index: 1;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.28);
  border-radius: 20px;
  margin-bottom: 18px;
}

.ap-product-image img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.ap-product-card h3,
.ap-support-cta-card h3,
.ap-product-card p,
.ap-support-cta-card p,
.ap-product-price,
.ap-product-card .ap-btn,
.ap-support-cta-card .ap-btn,
.ap-support-cta-card .ap-btn-outline {
  position: relative;
  z-index: 1;
}

.ap-product-card h3,
.ap-support-cta-card h3 {
  margin: 0 0 12px;
  font-size: 22px;
}

.ap-product-price {
  margin: 18px 0;
  color: #fff;
  font-size: 20px;
  font-weight: 900;
}

.ap-support-cta-section {
  background: linear-gradient(135deg, color-mix(in srgb, var(--ap-main) 10%, transparent), rgba(0,0,0,0.10));
}

@media (max-width: 900px) {
  .ap-product-grid,
  .ap-support-cta-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 560px) {
  .ap-product-grid,
  .ap-support-cta-grid {
    grid-template-columns: 1fr;
  }
}

/* v5: 4ヶ月アクセス＋月額480円サブスク導線 */
.ap-subscription-notice,
.ap-expired-section {
  background: linear-gradient(135deg, color-mix(in srgb, var(--ap-main) 16%, transparent), rgba(255,255,255,0.035));
  border-top: 1px solid rgba(217,138,31,0.32);
  border-bottom: 1px solid rgba(217,138,31,0.18);
}

.ap-subscription-notice {
  border: 1px solid rgba(217,138,31,0.38);
  border-radius: 24px;
  padding: 24px;
  margin: 0 0 28px;
}

.ap-subscription-notice h3 {
  margin: 0 0 10px;
  font-size: 24px;
}

.ap-subscription-card {
  border-color: rgba(217,138,31,0.55);
}

.ap-note,
.ap-cta-note {
  color: #b8b8b8;
  font-size: 14px;
  line-height: 1.8;
}

.ap-cta-note {
  max-width: 680px;
  margin: 0 auto 24px;
}

/* Athlete Quick Post */
.athlete-post-page {
  min-height: 100vh;
}

.ap-post-hero {
  padding: 72px 6% 48px;
  background:
    radial-gradient(circle at 80% 20%, rgba(217, 138, 31, 0.22), transparent 32%),
    linear-gradient(135deg, #050505 0%, #111 100%);
  border-bottom: 1px solid #1f1f1f;
}

.ap-post-hero h1 {
  font-size: clamp(34px, 6vw, 68px);
  margin: 18px 0 20px;
  line-height: 1.1;
}

.ap-post-form-section {
  max-width: 860px;
  margin: 0 auto;
}

.ap-notice-box {
  background: rgba(217, 138, 31, 0.12);
  border: 1px solid rgba(217, 138, 31, 0.35);
  border-radius: 16px;
  padding: 16px 18px;
  color: #f4d7aa;
  line-height: 1.7;
  margin: 0 0 28px;
}

.ap-post-form {
  background: #111;
  border: 1px solid #2a2a2a;
  border-radius: 24px;
  padding: 28px;
}

.ap-form-row {
  margin-bottom: 20px;
}

.ap-form-row-hidden {
  display: none;
}

.ap-form-row label {
  display: block;
  color: #fff;
  font-weight: 700;
  margin-bottom: 8px;
}

.ap-form-row input,
.ap-form-row select,
.ap-form-row textarea {
  width: 100%;
  box-sizing: border-box;
  background: #050505;
  color: #fff;
  border: 1px solid #333;
  border-radius: 14px;
  padding: 14px 16px;
  font-size: 16px;
}

.ap-form-row input[type="file"] {
  padding: 12px;
  background: #0b0b0b;
}

.ap-help,
.ap-mini-text {
  color: #9f9f9f;
  font-size: 13px;
  line-height: 1.6;
  margin-top: 8px;
}

.ap-error {
  color: #ff9a9a;
  font-size: 13px;
  margin-top: 8px;
}

.ap-btn-full {
  border: 0;
  width: 100%;
  cursor: pointer;
  font-size: 16px;
}

.ap-card-grid-posts {
  grid-template-columns: repeat(3, 1fr);
}

.ap-post-thanks {
  min-height: 70vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

@media (max-width: 760px) {
  .ap-post-hero {
    padding: 48px 5% 36px;
  }

  .ap-post-form {
    padding: 20px;
  }

  .ap-card-grid-posts {
    grid-template-columns: 1fr;
  }
}

/* v9: NFC限定ページ LINE風トーク + リッチメニュー風固定メニュー */
.ap-chat-page {
  padding-bottom: 148px;
}

.ap-chat-section {
  background:
    radial-gradient(circle at 8% 0%, rgba(217,138,31,.12), transparent 26%),
    #070707;
}

.ap-chat-timeline {
  display: flex;
  flex-direction: column;
  gap: 22px;
  margin-top: 30px;
  max-width: 920px;
}

.ap-chat-message,
.ap-chat-empty {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: 14px;
  align-items: flex-start;
}

.ap-chat-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  overflow: hidden;
  background: linear-gradient(135deg, var(--ap-main), var(--ap-sub));
  border: 1px solid rgba(217,138,31,.45);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 24px rgba(0,0,0,.35);
}

.ap-chat-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ap-chat-avatar span {
  color: #050505;
  font-weight: 950;
  font-size: 20px;
}

.ap-chat-main {
  min-width: 0;
}

.ap-chat-meta {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 6px;
}

.ap-chat-meta strong {
  color: #fff;
  font-size: 14px;
  letter-spacing: .03em;
}

.ap-chat-meta time {
  color: #8f8f8f;
  font-size: 12px;
}

.ap-chat-bubble {
  position: relative;
  display: inline-block;
  max-width: min(680px, 100%);
  background: #151515;
  border: 1px solid #2d2d2d;
  border-radius: 6px 22px 22px 22px;
  padding: 18px 18px 16px;
  box-shadow: 0 16px 36px rgba(0,0,0,.32);
}

.ap-chat-bubble:before {
  content: "";
  position: absolute;
  left: -8px;
  top: 12px;
  width: 0;
  height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-right: 9px solid #151515;
}

.ap-chat-athlete .ap-chat-bubble {
  background: linear-gradient(135deg, color-mix(in srgb, var(--ap-main) 20%, transparent), rgba(17,17,17,.98));
  border-color: rgba(217,138,31,.38);
}

.ap-chat-athlete .ap-chat-bubble:before {
  border-right-color: #24180a;
}

.ap-chat-team .ap-chat-bubble {
  background: #101722;
  border-color: rgba(120,155,210,.30);
}

.ap-chat-team .ap-chat-bubble:before {
  border-right-color: #101722;
}

.ap-chat-bubble h3 {
  margin: 4px 0 10px;
  font-size: 22px;
  line-height: 1.35;
}

.ap-chat-bubble p {
  margin: 0 0 12px;
  color: #d8d8d8;
  line-height: 1.8;
}

.ap-chat-bubble .ap-content-type {
  color: var(--ap-main) !important;
  font-size: 11px !important;
  letter-spacing: .16em;
  font-weight: 950;
  margin: 0 0 4px !important;
}

.ap-chat-bubble img,
.ap-chat-bubble video {
  display: block;
  width: 100%;
  max-height: 640px;
  object-fit: contain;
  border-radius: 16px;
  background: #050505;
  margin-top: 12px;
}

.ap-rich-menu {
  position: fixed;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  z-index: 80;
  width: min(720px, calc(100% - 22px));
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  overflow: hidden;
  background: rgba(7,7,7,.92);
  border: 1px solid rgba(217,138,31,.42);
  border-radius: 24px;
  box-shadow: 0 20px 60px rgba(0,0,0,.58), inset 0 1px 0 rgba(255,255,255,.06);
  backdrop-filter: blur(12px);
}

.ap-rich-item {
  min-height: 64px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  color: #fff !important;
  text-decoration: none;
  border-right: 1px solid rgba(255,255,255,.09);
  border-bottom: 1px solid rgba(255,255,255,.09);
  background: rgba(255,255,255,.025);
}

.ap-rich-item:nth-child(3n) {
  border-right: 0;
}

.ap-rich-item:nth-child(n+4) {
  border-bottom: 0;
}

.ap-rich-item span {
  font-weight: 950;
  font-size: 14px;
  letter-spacing: .03em;
}

.ap-rich-item small {
  color: #a8a8a8;
  font-size: 10px;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.ap-rich-item:hover,
.ap-rich-item:focus {
  background: rgba(217,138,31,.14);
  outline: none;
}

.ap-rich-primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--ap-main) 90%, transparent), color-mix(in srgb, var(--ap-sub) 82%, transparent));
  color: #050505 !important;
}

.ap-rich-primary small {
  color: rgba(0,0,0,.72);
}

@media (max-width: 560px) {
  .ap-chat-page {
    padding-bottom: 138px;
  }

  .ap-chat-message,
  .ap-chat-empty {
    grid-template-columns: 40px minmax(0, 1fr);
    gap: 10px;
  }

  .ap-chat-avatar {
    width: 40px;
    height: 40px;
  }

  .ap-chat-bubble {
    max-width: 100%;
    padding: 15px;
    border-radius: 6px 18px 18px 18px;
  }

  .ap-chat-bubble h3 {
    font-size: 19px;
  }

  .ap-rich-menu {
    bottom: 10px;
    width: calc(100% - 14px);
    border-radius: 18px;
  }

  .ap-rich-item {
    min-height: 58px;
  }

  .ap-rich-item span {
    font-size: 12px;
  }

  .ap-rich-item small {
    font-size: 9px;
  }
}


/* v10: 応援メッセージ LINE風送信UI */
.ap-line-message-section {
  background:
    radial-gradient(circle at 86% 8%, rgba(217,138,31,.14), transparent 30%),
    #050505;
}

.ap-line-message-wrap {
  max-width: 920px;
  margin-top: 30px;
}

.ap-line-guide-message {
  margin-bottom: 18px;
}

.ap-line-message-form {
  margin-left: 62px;
  background: linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.022));
  border: 1px solid rgba(217,138,31,.24);
  border-radius: 28px;
  padding: 18px;
  box-shadow: 0 18px 50px rgba(0,0,0,.38);
}

.ap-line-input-card {
  background: rgba(0,0,0,.42);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 18px;
  padding: 14px;
}

.ap-line-input-card label {
  display: block;
  color: var(--ap-main);
  font-size: 12px;
  font-weight: 950;
  letter-spacing: .08em;
  margin: 0 0 8px;
}

.ap-line-input-card input,
.ap-line-input-card textarea {
  width: 100%;
  box-sizing: border-box;
  background: #050505;
  color: #fff;
  border: 1px solid #2f2f2f;
  border-radius: 14px;
  padding: 14px 15px;
  font: inherit;
}

.ap-line-input-card textarea {
  min-height: 128px;
  resize: vertical;
  line-height: 1.7;
}

.ap-line-input-card input:focus,
.ap-line-input-card textarea:focus {
  outline: none;
  border-color: var(--ap-main);
  box-shadow: 0 0 0 3px rgba(217,138,31,.16);
}

.ap-line-sender-details {
  margin-top: 12px;
}

.ap-line-sender-details summary {
  cursor: pointer;
  color: #d8d8d8;
  font-weight: 850;
  font-size: 13px;
  letter-spacing: .04em;
  padding: 10px 4px;
  list-style: none;
}

.ap-line-sender-details summary::-webkit-details-marker {
  display: none;
}

.ap-line-sender-details summary:before {
  content: "+";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  margin-right: 8px;
  border-radius: 50%;
  color: #050505;
  background: var(--ap-main);
  font-weight: 950;
}

.ap-line-sender-details[open] summary:before {
  content: "−";
}

.ap-line-sender-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.ap-line-sendbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  margin-top: 14px;
}

.ap-line-send-note {
  color: #9f9f9f;
  font-size: 12px;
  line-height: 1.6;
}

.ap-line-send-btn {
  min-width: 92px;
  border: 0;
  border-radius: 999px;
  padding: 13px 22px;
  background: var(--ap-main);
  color: var(--ap-on-main);
  font-weight: 950;
  cursor: pointer;
  box-shadow: 0 12px 28px rgba(217,138,31,.24);
}

.ap-form-errors,
.ap-line-message-form .ap-error {
  color: #ffb4b4;
  font-size: 12px;
  line-height: 1.6;
  margin-top: 8px;
}

.ap-line-thanks-card {
  width: min(720px, 100%);
  margin: 0 auto;
}

.ap-line-thanks-card .ap-chat-message {
  margin: 22px 0 26px;
}

@media (max-width: 700px) {
  .ap-line-message-form {
    margin-left: 0;
    padding: 14px;
    border-radius: 22px;
  }

  .ap-line-sender-grid {
    grid-template-columns: 1fr;
  }

  .ap-line-sendbar {
    grid-template-columns: 1fr;
  }

  .ap-line-send-btn {
    width: 100%;
  }
}

/* v11: 応援メッセージは本文だけ入力。登録者情報はNFCパスから自動記録 */
.ap-line-sender-auto {
  margin: 12px 0 16px;
  padding: 12px 14px;
  border: 1px solid color-mix(in srgb, var(--ap-main) 22%, transparent);
  border-radius: 14px;
  background: rgba(217,138,31,.07);
  color: #cfcfcf;
  font-size: 12px;
  line-height: 1.7;
}

/* v12: PC表示バランス調整（応援メッセージ・限定トークを中央カラム化） */
@media (min-width: 981px) {
  .ap-chat-page .ap-member-hero,
  .ap-chat-page .ap-chat-section,
  .ap-chat-page .ap-line-message-section,
  .ap-chat-page .ap-profile,
  .ap-chat-page .ap-expired-section {
    padding-left: max(6%, calc((100vw - 1040px) / 2));
    padding-right: max(6%, calc((100vw - 1040px) / 2));
  }

  .ap-chat-page .ap-member-hero {
    min-height: 72vh;
    grid-template-columns: minmax(0, 1fr) 380px;
  }

  .ap-chat-page .ap-hero-text,
  .ap-chat-page .ap-chat-section > .ap-section-label,
  .ap-chat-page .ap-chat-section > h2,
  .ap-chat-page .ap-chat-section > p,
  .ap-chat-page .ap-line-message-section > .ap-section-label,
  .ap-chat-page .ap-line-message-section > h2,
  .ap-chat-page .ap-line-message-section > p,
  .ap-chat-page .ap-profile > .ap-section-label,
  .ap-chat-page .ap-profile > h2,
  .ap-chat-page .ap-profile > .ap-profile-box,
  .ap-chat-page .ap-expired-section > * {
    max-width: 920px;
  }

  .ap-chat-page .ap-chat-timeline,
  .ap-chat-page .ap-line-message-wrap {
    width: min(760px, 100%);
    max-width: 760px;
  }

  .ap-chat-page .ap-chat-bubble {
    max-width: 620px;
  }

  .ap-chat-page .ap-line-message-form {
    margin-left: 62px;
    max-width: 690px;
  }

  .ap-chat-page .ap-line-input-card textarea {
    min-height: 150px;
    max-height: 230px;
  }

  .ap-chat-page .ap-rich-menu {
    width: min(720px, calc(100vw - 48px));
  }
}

/* PCでは応援メッセージ画面を少しコンパクトに見せる */
@media (min-width: 1200px) {
  .ap-chat-page .ap-line-message-section {
    padding-top: 72px;
    padding-bottom: 96px;
  }

  .ap-chat-page .ap-line-message-section h2 {
    font-size: clamp(34px, 3.2vw, 52px);
    line-height: 1.25;
  }
}

/* v13: PCではリッチメニューを固定せず、フッターとかぶらないように本文内へ配置 */
@media (min-width: 981px) {
  .ap-chat-page {
    padding-bottom: 0;
  }

  .ap-chat-page .ap-rich-menu {
    position: relative;
    left: auto;
    right: auto;
    bottom: auto;
    transform: none;
    z-index: 1;
    width: min(720px, 100%);
    margin: 64px auto 72px;
  }

  .ap-chat-page .ap-rich-item {
    min-height: 66px;
  }
}


/* v14: スマホでは通常下部固定、フッター表示時は本文内メニューに切り替える */
@media (max-width: 980px) {
  .ap-chat-page.ap-rich-menu-inline {
    padding-bottom: 0;
  }

  .ap-chat-page.ap-rich-menu-inline .ap-rich-menu {
    position: relative;
    left: auto;
    right: auto;
    bottom: auto;
    transform: none;
    z-index: 1;
    width: calc(100% - 20px);
    margin: 32px auto 28px;
  }
}


/* v15: 応援メッセージ送信後は本人画面だけにLINE風の右吹き出しで表示 */
.ap-user-message-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 8px 0 18px;
}

.ap-chat-user-message {
  display: flex;
  justify-content: flex-end;
  grid-template-columns: none;
}

.ap-chat-user-message .ap-chat-main {
  width: min(620px, 88%);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}

.ap-chat-meta-user {
  justify-content: flex-end;
  margin-right: 8px;
}

.ap-user-bubble {
  border-radius: 22px 6px 22px 22px;
  background: linear-gradient(135deg, color-mix(in srgb, var(--ap-main) 92%, transparent), color-mix(in srgb, var(--ap-sub) 92%, transparent));
  border-color: rgba(217,138,31,.95);
  color: #050505;
  box-shadow: 0 14px 34px color-mix(in srgb, var(--ap-main) 18%, transparent);
}

.ap-user-bubble:before {
  left: auto;
  right: -8px;
  border-right: 0;
  border-left: 9px solid color-mix(in srgb, var(--ap-main) 92%, transparent);
}

.ap-user-bubble p {
  color: #050505;
  font-weight: 700;
  margin: 0;
}

@media (max-width: 560px) {
  .ap-chat-user-message .ap-chat-main {
    width: min(330px, 86%);
  }
}


/* v17: ヒーロー画像を左右中央に固定 */
.ap-hero-visual,
.ap-member-hero .ap-hero-visual,
.ap-hero-lp .ap-hero-visual {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center !important;
  text-align: center;
}

.ap-hero-visual img,
.ap-member-hero .ap-hero-visual img,
.ap-hero-lp .ap-hero-visual img {
  display: block;
  margin-left: auto;
  margin-right: auto;
  object-fit: contain;
  object-position: center center;
}

@media (max-width: 980px) {
  .ap-hero-visual,
  .ap-member-hero .ap-hero-visual,
  .ap-hero-lp .ap-hero-visual {
    justify-content: center;
    align-items: center !important;
  }
}

/* v18: 限定トークと応援メッセージ入力を同一セクションに統合 */
.ap-chat-input-area {
  width: min(760px, 100%);
  max-width: 760px;
  margin: 22px 0 0;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.08);
}

.ap-chat-input-guide {
  margin-bottom: 14px;
}

.ap-timeline-message-form {
  margin-top: 12px;
}

.ap-timeline-message-form .ap-line-input-card {
  padding: 14px;
}

.ap-timeline-message-form textarea {
  min-height: 112px;
}

.ap-timeline-message-form .ap-line-sendbar {
  margin-top: 12px;
}

@media (max-width: 980px) {
  .ap-chat-section {
    padding-top: 44px;
    padding-bottom: 32px;
  }

  .ap-chat-input-area {
    margin-top: 18px;
    padding-top: 14px;
  }

  .ap-chat-input-guide {
    margin-bottom: 10px;
  }

  .ap-timeline-message-form textarea {
    min-height: 104px;
  }
}

@media (min-width: 981px) {
  .ap-chat-page .ap-chat-input-area {
    width: min(760px, 100%);
    max-width: 760px;
  }

  .ap-chat-page .ap-timeline-message-form {
    margin-left: 62px;
    max-width: 690px;
  }

  .ap-chat-page .ap-timeline-message-form textarea {
    min-height: 132px;
    max-height: 210px;
  }
}

.ap-subscription-management { max-width: 760px; margin: 32px auto 80px; }
.ap-subscription-cancel-box { margin-top: 28px; padding: 24px; border: 1px solid #ddd; border-radius: 14px; background: #fff; }
.ap-btn-danger { background: #c62828 !important; border-color: #c62828 !important; color: #fff !important; }

/* Athlete dashboard */
.ap-inline-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 16px;
}

.ap-dashboard-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px;
}

.ap-stat-card {
  background: #fff;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 18px;
  padding: 18px;
  box-shadow: 0 8px 24px rgba(0,0,0,.04);
}

.ap-stat-card span,
.ap-stat-card small {
  display: block;
}

.ap-stat-card span {
  color: #666;
  font-size: .92rem;
  margin-bottom: 8px;
}

.ap-stat-card strong {
  display: block;
  font-size: 2rem;
  line-height: 1.1;
  margin-bottom: 6px;
}

.ap-stat-card small {
  color: #888;
}

.ap-dashboard-post-list,
.ap-dashboard-message-list {
  display: grid;
  gap: 16px;
}

.ap-dashboard-post-item,
.ap-dashboard-message-item {
  background: #fff;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 18px;
  padding: 18px;
  box-shadow: 0 8px 24px rgba(0,0,0,.04);
}

.ap-dashboard-post-head,
.ap-dashboard-message-head,
.ap-dashboard-message-meta {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
}

.ap-dashboard-message-item.is-unread {
  border-left: 6px solid var(--ap-main, #D98A1F);
}

.ap-dashboard-chip {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,.06);
  font-size: .82rem;
  margin-right: 6px;
}

.ap-dashboard-chip-public {
  background: rgba(40,167,69,.12);
}

.ap-dashboard-chip-private {
  background: rgba(255,193,7,.18);
}

.ap-dashboard-sub {
  color: #777;
  font-size: .85rem;
  margin-left: 10px;
}

.ap-dashboard-supporter-table-wrap {
  overflow-x: auto;
}

.ap-dashboard-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 720px;
  background: #fff;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(0,0,0,.04);
}

.ap-dashboard-table th,
.ap-dashboard-table td {
  padding: 14px 16px;
  border-bottom: 1px solid rgba(0,0,0,.07);
  text-align: left;
  vertical-align: top;
}

.ap-dashboard-table th {
  background: rgba(0,0,0,.04);
  font-size: .9rem;
}

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

.ap-dashboard-pin-form {
  max-width: 420px;
}

@media (max-width: 767px) {
  .ap-dashboard-table {
    min-width: 560px;
  }

  .ap-stat-card strong {
    font-size: 1.7rem;
  }
}


/* Athlete supporter screen preview */
.ap-preview-banner {
  position: sticky;
  top: 0;
  z-index: 1000;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 12px 18px;
  background: #111;
  color: #fff;
  box-shadow: 0 4px 16px rgba(0,0,0,.22);
}
.ap-preview-banner strong,
.ap-preview-banner span { display: block; }
.ap-preview-banner span { font-size: .86rem; opacity: .82; margin-top: 2px; }
.ap-preview-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--ap-main, #D98A1F);
  color: var(--ap-on-main, #050505);
  text-decoration: none;
  font-weight: 700;
  white-space: nowrap;
}
.ap-preview-disabled {
  padding: 16px;
  border-radius: 14px;
  background: rgba(0,0,0,.05);
  color: #555;
  text-align: center;
}
.ap-athlete-preview-mode .ap-chat-input-guide { opacity: .72; }
@media (max-width: 767px) {
  .ap-preview-banner { align-items: flex-start; flex-direction: column; }
  .ap-preview-back { width: 100%; }
}

/* v35: dashboard white-card text visibility */
.ap-dashboard-page .ap-stat-card,
.ap-dashboard-page .ap-dashboard-post-item,
.ap-dashboard-page .ap-dashboard-message-item,
.ap-dashboard-page .ap-dashboard-table {
  color: #171717;
}

.ap-dashboard-page .ap-stat-card strong,
.ap-dashboard-page .ap-dashboard-post-item h3,
.ap-dashboard-page .ap-dashboard-message-item strong,
.ap-dashboard-page .ap-dashboard-table strong {
  color: #111;
}

.ap-dashboard-page .ap-dashboard-post-item p,
.ap-dashboard-page .ap-dashboard-message-item p,
.ap-dashboard-page .ap-dashboard-table td,
.ap-dashboard-page .ap-dashboard-table td small {
  color: #333;
}

.ap-dashboard-page .ap-dashboard-post-head small,
.ap-dashboard-page .ap-dashboard-message-head small,
.ap-dashboard-page .ap-dashboard-message-meta,
.ap-dashboard-page .ap-dashboard-sub {
  color: #6b7280;
}

.ap-dashboard-page .ap-dashboard-table th {
  color: #202020;
  background: #f4f5f7;
  font-weight: 700;
}

.ap-dashboard-page .ap-dashboard-table tbody tr {
  background: #fff;
}

.ap-dashboard-page .ap-dashboard-table tbody tr:hover {
  background: #fafafa;
}

.ap-dashboard-page .ap-dashboard-table a.ap-btn,
.ap-dashboard-page .ap-dashboard-table a.ap-btn:visited {
  color: var(--ap-on-main, #050505);
  white-space: nowrap;
}

.ap-dashboard-page .ap-dashboard-post-item a,
.ap-dashboard-page .ap-dashboard-message-item a {
  color: #1668c7;
  text-decoration: underline;
}

.ap-dashboard-page .ap-dashboard-chip {
  color: #333;
}

.ap-dashboard-page .ap-dashboard-chip-public {
  color: #166534;
}

.ap-dashboard-page .ap-dashboard-chip-private {
  color: #8a5a00;
}

.ap-dashboard-page .ap-note {
  color: #d8d8d8;
}

@media (min-width: 1100px) {
  .ap-dashboard-page .ap-dashboard-table th:last-child,
  .ap-dashboard-page .ap-dashboard-table td:last-child {
    width: 170px;
    text-align: center;
  }
}

/* Athlete message read status */
.ap-dashboard-section-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  flex-wrap: wrap;
}

.ap-dashboard-inline-form {
  display: inline;
  margin: 0;
}

.ap-dashboard-unread-label {
  display: inline-block;
  margin-left: 8px;
  padding: 3px 9px;
  border-radius: 999px;
  background: #1677ff;
  color: #fff !important;
  font-size: .76rem;
  font-weight: 700;
}

.ap-dashboard-message-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.ap-dashboard-text-button {
  appearance: none;
  border: 0;
  background: transparent;
  color: #555;
  text-decoration: underline;
  cursor: pointer;
  padding: 4px;
  font: inherit;
}

.ap-dashboard-message-item.is-unread {
  border-left: 6px solid #1677ff !important;
}

@media (max-width: 767px) {
  .ap-dashboard-message-meta {
    align-items: flex-start;
  }
}

/* v37: mobile supporter cards */
.ap-supporter-mobile-view {
  display: none;
}

@media (max-width: 767px) {
  .ap-supporter-desktop-view {
    display: none;
  }

  .ap-supporter-mobile-view {
    display: grid;
    gap: 14px;
  }

  .ap-supporter-mobile-card {
    background: #fff;
    color: #171717;
    border-radius: 18px;
    padding: 16px;
    box-shadow: 0 10px 28px rgba(0,0,0,.14);
    border: 1px solid rgba(0,0,0,.07);
  }

  .ap-supporter-mobile-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 14px;
  }

  .ap-supporter-mobile-head > div {
    min-width: 0;
  }

  .ap-supporter-mobile-head strong,
  .ap-supporter-mobile-head small {
    display: block;
  }

  .ap-supporter-mobile-head strong {
    color: #111;
    font-size: 1.08rem;
    line-height: 1.4;
    margin-bottom: 4px;
    word-break: break-word;
  }

  .ap-supporter-mobile-head small {
    color: #7a7a7a;
    font-size: .78rem;
    word-break: break-all;
  }

  .ap-supporter-status-badge {
    flex: 0 0 auto;
    max-width: 48%;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(217,138,31,.14);
    color: #7a4a00;
    font-size: .76rem;
    font-weight: 700;
    line-height: 1.35;
    text-align: center;
  }

  .ap-supporter-mobile-metrics {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 14px;
  }

  .ap-supporter-metric {
    padding: 12px;
    border-radius: 14px;
    background: #f5f6f8;
    min-width: 0;
  }

  .ap-supporter-metric-wide {
    grid-column: 1 / -1;
  }

  .ap-supporter-metric span,
  .ap-supporter-metric strong {
    display: block;
  }

  .ap-supporter-metric span {
    color: #777;
    font-size: .76rem;
    margin-bottom: 4px;
  }

  .ap-supporter-metric strong {
    color: #111;
    font-size: .98rem;
    line-height: 1.4;
    word-break: break-word;
  }

  .ap-supporter-preview-btn,
  .ap-supporter-preview-btn:visited {
    width: 100%;
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    color: var(--ap-on-main, #050505);
    text-align: center;
  }
}
