/* Shared CCTV atmosphere. Foreground photography and readable copy stay separate. */
body.ah-body {
  /* Customer-only palette, sampled from the CCTV concrete and weathered metal. */
  --ah-surface: #151713;
  --ah-panel: #1c1f1a;
  --ah-paper: #e5e3da;
  --ah-soft: #b8b6aa;
  --ah-muted: #94978b;
  --ah-action: #e5e3da;
  --ah-action-hover: #ffffff;
  --ah-action-fill: #e5e3da;
  --ah-action-fill-hover: #ffffff;
  --ah-action-ink: #0a0a0c;
  --ah-accent: var(--ah-action);
  --ah-lime: var(--ah-paper);
  --ah-line: rgba(184, 182, 170, .14);
  --ah-control-border: rgba(229, 227, 218, .24);
  --ah-warning: #b7a177;
  --ah-control-fill: #262924;
  --ah-control-hover: #363b33;
  --ah-control-border-hover: rgba(229, 227, 218, .44);
  --ah-success-fill: #414638;
  --ah-success-hover: #505844;
  --ah-success: #87916f;
  --ah-danger-fill: #49332c;
  --ah-danger-hover: #5e3d31;
  --ah-danger: #9a7057;
  --ah-danger-border-hover: #be9270;
  --ah-signal-ash: var(--ah-action);
  --ah-signal-rust: var(--ah-danger);
  --ah-monitor: #a0b38e;
  --ah-telemetry-warning: #c4a16a;
  --ah-camera-image: url('../images/ug-cctv-cam-01.jpg');
  /* [Apple Inc. Refined Backdrop] จุดปรับความสว่าง/ความทึบของภาพพื้นหลัง (ปรับแต่งได้ที่นี่) */
  --ah-camera-opacity: 0.65; /* เพิ่มทึบดำ 20% (ทึบดำรวม 35% / เห็นภาพชัด 65% สบายตา อ่านตัวหนังสือง่าย) */
  --ah-camera-filter: contrast(1.06) saturate(0.9); /* สีสดใส คมชัด ไม่มัวหมอง */
  isolation: isolate;
}
html { scroll-padding-top: 128px; }

/* [Apple Obsidian Canvas] พื้นหลังโทนเรียบเนียนสม่ำเสมอทั่วทั้งจอ (ไม่มีหย่อมเงาหรือ radial spot) */
.ah-signal-backdrop {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  background: var(--ah-bg);
}

/* [Full Screen Cover + Center Pin] ปรับขนาดภาพให้พอดีเต็มพื้นที่จอ 100% กึ่งกลางสมมาตร */
.ah-signal-camera,
.ah-signal-camera::before,
.ah-signal-camera::after {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background: var(--ah-camera-image) center center / cover no-repeat;
}

/* [Uniform Apple Tint] ปลดขอบมืด/เงา Mask ด้านข้างออก ให้ความสว่างเรียบเนียนสม่ำเสมอทั่วทั้งภาพ */
.ah-signal-camera {
  opacity: var(--ah-camera-opacity, 0.65);
  filter: var(--ah-camera-filter, contrast(1.06) saturate(0.9));
  -webkit-mask-image: none;
  mask-image: none;
}

.ah-signal-camera::before,
.ah-signal-camera::after {
  content: "";
  background-blend-mode: multiply;
  mix-blend-mode: screen;
  opacity: 0;
  filter: none;
}

.ah-signal-camera::before {
  background-color: var(--ah-signal-ash);
  transform: translateX(-3px);
  clip-path: polygon(0 18%, 100% 18%, 100% 19%, 0 19%, 0 61%, 100% 61%, 100% 63%, 0 63%);
}

.ah-signal-camera::after {
  background-color: var(--ah-signal-rust);
  transform: translateX(3px);
  clip-path: polygon(0 36%, 100% 36%, 100% 37%, 0 37%, 0 78%, 100% 78%, 100% 80%, 0 80%);
}

.ah-signal-sort {
  position: absolute;
  inset: -8px;
  display: none;
  pointer-events: none;
  opacity: 0;
  background:
    linear-gradient(90deg, transparent 8%, rgba(184, 182, 170, .3) 29%, rgba(154, 112, 87, .14) 67%, transparent 94%),
    var(--ah-camera-image) center / cover no-repeat;
  background-blend-mode: screen;
  filter: grayscale(.72) contrast(1.2);
  mix-blend-mode: screen;
}

.ah-signal-sort--one {
  clip-path: polygon(0 16%, 23% 16%, 23% 17%, 49% 17%, 49% 16.3%, 77% 16.3%, 77% 17%, 100% 17%, 100% 18%, 64% 18%, 64% 17.3%, 38% 17.3%, 38% 18%, 9% 18%, 9% 17.3%, 0 17.3%);
}
.ah-signal-sort--two {
  clip-path: polygon(0 43%, 17% 43%, 17% 43.8%, 57% 43.8%, 57% 43.2%, 84% 43.2%, 84% 42.5%, 100% 42.5%, 100% 43.4%, 72% 43.4%, 72% 44%, 35% 44%, 35% 44.5%, 7% 44.5%, 7% 44%, 0 44%);
}
.ah-signal-sort--three {
  clip-path: polygon(0 73%, 31% 73%, 31% 72.3%, 62% 72.3%, 62% 73%, 100% 73%, 100% 74%, 79% 74%, 79% 74.6%, 46% 74.6%, 46% 74%, 18% 74%, 18% 74.6%, 0 74.6%);
}

.ah-signal-static {
  position: absolute;
  inset: -8px;
  background: var(--ah-grain) 0 0 / 128px 128px repeat;
  opacity: .07;
}

.ah-signal-static::before,
.ah-signal-static::after {
  position: absolute;
  inset: 0;
  content: "";
}

.ah-signal-static::before {
  background: repeating-linear-gradient(0deg, transparent 0 3px, rgba(184, 182, 170, .14) 3px 4px);
}

.ah-signal-static::after {
  height: 12%;
  border-top: 1px solid var(--ah-signal-ash);
  background: linear-gradient(180deg, rgba(184, 182, 170, .18), transparent);
  transform: translateY(30vh);
}

.ah-signal-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  width: min(1160px, calc(100% - 32px));
  max-width: 1160px;
  min-height: 46px;
  margin: 0 auto;
  box-sizing: border-box;
  padding: 3px clamp(12px, 2.5vw, 24px);
  color: var(--ah-muted);
  background: transparent;
  font: 11px/1.4 var(--ah-mono);
  letter-spacing: .08em;
  overflow: hidden;
}

.ah-signal-channel,
.ah-signal-tools { display: flex; align-items: center; gap: 14px; }
.ah-signal-channel { color: var(--ah-monitor); }
[data-signal-status] { min-width: 12ch; }
body.ah-signal-fault [data-signal-status] { color: var(--ah-telemetry-warning); }
.ah-signal-rec { color: var(--ah-monitor); }
.ah-signal-rec::before { content: ""; display: inline-block; width: 5px; height: 5px; margin-right: 6px; background: currentColor; }
.ah-signal-timecode { color: var(--ah-monitor); font-variant-numeric: tabular-nums; letter-spacing: .1em; white-space: nowrap; }
.ah-signal-toggle {
  min-height: 44px;
  padding: 8px 4px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ah-soft);
  font: 12px/1.5 var(--ah-text);
  cursor: pointer;
}
.ah-signal-toggle[hidden] { display: none; }
.ah-signal-toggle:hover { color: var(--ah-action-hover); }
.ah-signal-toggle[aria-pressed="true"] { color: var(--ah-signal-ash); }
.ah-signal-toggle:focus-visible { outline: 2px solid var(--ah-signal-ash); outline-offset: 2px; }

.ah-signal-hud {
  position: absolute;
  bottom: 26px;
  display: grid;
  gap: 8px;
  padding: 14px;
  border-left: 1px solid rgba(184, 182, 170, .28);
  color: var(--ah-monitor);
  font: 10px/1.4 var(--ah-mono);
  letter-spacing: .1em;
}
.ah-signal-hud-left { left: 18px; }
.ah-signal-hud-right { right: 18px; text-align: right; border-left: 0; border-right: 1px solid rgba(184, 182, 170, .28); }
.ah-signal-ticks { display: block; height: 7px; width: 72px; background: repeating-linear-gradient(90deg, var(--ah-signal-ash) 0 1px, transparent 1px 6px); opacity: .6; }
.ah-signal-hud-right .ah-signal-ticks { justify-self: end; }

/* Existing copy panels get identical HUD brackets; no overlays on photo areas. */
.ah-main :is(.ah-home-featured-copy, .ah-home-event-copy, .ah-event-info,
.ah-article-copy, .ah-artist-copy, .ah-artist-profile-copy, .ah-detail-copy,
.ah-ticket-copy, .ah-summary, .ah-sec-panel, .ah-auth, .ah-auth-apple, .mp-section) {
  position: relative;
  isolation: isolate;
}
.ah-main :is(.ah-home-featured-copy, .ah-home-event-copy, .ah-event-info,
.ah-article-copy, .ah-artist-copy, .ah-artist-profile-copy, .ah-detail-copy,
.ah-ticket-copy, .ah-summary, .ah-sec-panel, .ah-auth, .ah-auth-apple, .mp-section)::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 7px;
  border-radius: inherit;
  pointer-events: none;
  opacity: .48;
  background:
    linear-gradient(var(--ah-signal-ash), var(--ah-signal-ash)) left top / 14px 1px no-repeat,
    linear-gradient(var(--ah-signal-ash), var(--ah-signal-ash)) left top / 1px 14px no-repeat,
    linear-gradient(var(--ah-signal-ash), var(--ah-signal-ash)) right bottom / 14px 1px no-repeat,
    linear-gradient(var(--ah-signal-ash), var(--ah-signal-ash)) right bottom / 1px 14px no-repeat;
}

.ah-header { border-bottom-color: rgba(184, 182, 170, .16); }
.ah-footer { background: rgba(10, 10, 12, .9); border-top-color: rgba(184, 182, 170, .16); }

@media (prefers-reduced-motion: no-preference) {
  .ah-signal-static { animation: ah-signal-grain 2s steps(1, end) infinite; }
  .ah-signal-static::after { animation: ah-signal-roll 16s linear infinite; }
}
@media (prefers-reduced-motion: no-preference) {
  body.ah-signal-fault .ah-signal-camera::before,
  body.ah-signal-fault .ah-signal-camera::after { opacity: .5; }
  body.ah-signal-fault .ah-signal-sort--one { display: block; animation: ah-signal-interact .8s steps(2, end) both; }
  body.ah-signal-fault .ah-signal-static { opacity: .14; animation-play-state: paused; }
  body.ah-signal-fault .ah-signal-static::after { animation-play-state: paused; }
}
@media (prefers-reduced-motion: no-preference) {
  body.ah-body:has(.ah-main :is(a, button, input, select, textarea, summary):is(:hover, :focus-visible, :active)) .ah-signal-sort--one {
    display: block;
    animation: ah-signal-interact .38s steps(2, end) both;
  }
}
@keyframes ah-signal-interact {
  0%, 100% { opacity: 0; transform: none; }
  24%, 55% { opacity: .38; transform: translateX(2.5%) scaleX(1.14); }
  42%, 74% { opacity: .22; transform: translateX(-1.5%) scaleX(.92); }
}
@keyframes ah-signal-grain {
  0%, 100% { transform: translate(0, 0); }
  33% { transform: translate(-4px, 3px); }
  66% { transform: translate(4px, -3px); }
}
@keyframes ah-signal-roll {
  from { transform: translateY(-15vh); }
  to { transform: translateY(110vh); }
}

/* Prevent the existing perspective grid from extending the page horizontally. */
.ah-home { overflow: clip; }
@media (max-width: 1699px) { .ah-signal-hud { display: none; } }
@media (max-width: 767px) {
  .ah-signal-channel-detail { display: none; }
  .ah-signal-channel, .ah-signal-tools { gap: 8px; }
  .ah-signal-bar { width: calc(100% - 24px); font-size: 10px; letter-spacing: .025em; padding-inline: 4px; }
  .ah-signal-camera { opacity: .17; }
  .ah-signal-toggle { padding-inline: 8px; }
}
@media (max-width: 359px) { .ah-signal-rec { display: none; } }

body.ah-signal-paused .ah-main *,
body.ah-signal-paused .ah-main *::before,
body.ah-signal-paused .ah-main *::after,
body.ah-signal-paused .ah-signal-bar *,
body.ah-signal-paused .ah-signal-bar *::before,
body.ah-signal-paused .ah-signal-bar *::after,
body.ah-signal-paused .ah-signal-backdrop *,
body.ah-signal-paused .ah-signal-backdrop *::before,
body.ah-signal-paused .ah-signal-backdrop *::after { animation: none !important; }
body.ah-signal-paused .ah-page-transition { display: none !important; }
body.ah-signal-paused .ah-signal-static::after { display: none; }
body.ah-signal-hidden .ah-signal-backdrop * { animation-play-state: paused; }
body.ah-signal-hidden .ah-signal-backdrop *::before,
body.ah-signal-hidden .ah-signal-backdrop *::after { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
  .ah-signal-backdrop *, .ah-signal-backdrop *::before, .ah-signal-backdrop *::after { animation: none; }
  .ah-signal-static::after { display: none; }
}
@media (forced-colors: active) { .ah-signal-backdrop { display: none; } }
@media print { .ah-signal-backdrop, .ah-signal-bar, .ah-signal-hud, .ah-signal-code, .ah-signal-camera, .ah-signal-static, .ah-cctv-drift { display: none !important; visibility: hidden !important; } }

/* Low-density dead pixels add texture without competing with customer content. */
.ah-signal-backdrop::before {
  position: absolute;
  inset: 0;
  content: "";
  opacity: .12;
  pointer-events: none;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.72) 0 1px, transparent 1.2px),
    radial-gradient(circle, rgba(0,0,0,.9) 0 1px, transparent 1.2px),
    radial-gradient(circle, rgba(184,182,170,.55) 0 1px, transparent 1.2px);
  background-size: 97px 113px, 131px 89px, 173px 137px;
  background-position: 11px 23px, 47px 61px, 89px 17px;
  -webkit-mask-image: none;
  mask-image: none;
}

/* Customer artwork gets tiny corner reticles; image sizing and crop remain untouched. */
.ah-main :is(.ah-event-art, .ah-home-event-poster, .ah-artist-list-image-link,
  .ah-artist-poster-frame, .ah-article-card-cover, .ah-article-image-link,
  .ah-detail-cover, .ah-detail-poster, .ah-home-featured-poster,
  .ah-hero-slide, .ah-story-visual, .ah-event-gallery-grid figure) {
  position: relative;
  isolation: isolate;
}
.ah-main :is(.ah-event-art, .ah-home-event-poster, .ah-artist-list-image-link,
  .ah-artist-poster-frame, .ah-article-card-cover, .ah-article-image-link,
  .ah-detail-cover, .ah-detail-poster, .ah-home-featured-poster,
  .ah-hero-slide, .ah-story-visual, .ah-event-gallery-grid figure)::before {
  content: "";
  position: absolute;
  z-index: 3;
  inset: 8px;
  pointer-events: none;
  opacity: .74;
  background:
    linear-gradient(var(--ah-signal-ash),var(--ah-signal-ash)) left top / 10px 1px no-repeat,
    linear-gradient(var(--ah-signal-ash),var(--ah-signal-ash)) left top / 1px 10px no-repeat,
    linear-gradient(var(--ah-signal-ash),var(--ah-signal-ash)) right top / 10px 1px no-repeat,
    linear-gradient(var(--ah-signal-ash),var(--ah-signal-ash)) right top / 1px 10px no-repeat,
    linear-gradient(var(--ah-signal-rust),var(--ah-signal-rust)) left bottom / 10px 1px no-repeat,
    linear-gradient(var(--ah-signal-rust),var(--ah-signal-rust)) left bottom / 1px 10px no-repeat,
    linear-gradient(var(--ah-signal-rust),var(--ah-signal-rust)) right bottom / 10px 1px no-repeat,
    linear-gradient(var(--ah-signal-rust),var(--ah-signal-rust)) right bottom / 1px 10px no-repeat;
}

/* Contextual customer actions use worn stone, charcoal, olive, and rust with Apple tactile depth. */
.ah-main :is(.ah-button, .ah-article-cta, .ah-artist-event-link, .ah-btn-tactile, .ah-btn-secondary, .ah-filter-submit) {
  border: 1px solid var(--ah-control-border);
  background-color: var(--ah-control-fill);
  background-image:
    linear-gradient(var(--ah-bg),var(--ah-bg)),
    linear-gradient(var(--ah-bg),var(--ah-bg));
  background-repeat: no-repeat;
  background-size: 18px 2px, 18px 2px;
  background-position: center top, center bottom;
  color: var(--ah-paper);
  text-shadow: none;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 -1px 0 rgba(0, 0, 0, 0.35), 0 2px 6px rgba(0, 0, 0, 0.35);
  transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.ah-main :is(.ah-button, .ah-article-cta, .ah-artist-event-link, .ah-btn-tactile, .ah-btn-secondary, .ah-filter-submit):hover:not(:disabled),
.ah-main :is(.ah-button, .ah-article-cta, .ah-artist-event-link, .ah-btn-tactile, .ah-btn-secondary, .ah-filter-submit):focus-visible {
  border-color: var(--ah-control-border-hover);
  background-color: var(--ah-control-hover);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.16), 0 4px 12px rgba(0, 0, 0, 0.45);
  transform: translateY(-1px);
}
.ah-main :is(.ah-button, .ah-article-cta, .ah-artist-event-link, .ah-btn-tactile, .ah-btn-secondary, .ah-filter-submit):focus-visible {
  outline: 2px solid var(--ah-action-hover);
  outline-offset: 3px;
}
.ah-main :is(.ah-button-bright, .ah-btn-tactile.ah-btn-primary, .ah-btn-primary) {
  border: 1px solid var(--ah-action);
  background-color: var(--ah-action-fill);
  color: var(--ah-action-ink);
  text-shadow: none;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7), inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 4px 14px rgba(0, 0, 0, 0.45);
  transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.ah-main :is(.ah-button-bright, .ah-btn-tactile.ah-btn-primary, .ah-btn-primary):hover:not(:disabled),
.ah-main :is(.ah-button-bright, .ah-btn-tactile.ah-btn-primary, .ah-btn-primary):focus-visible {
  border-color: var(--ah-action-hover);
  background-color: var(--ah-action-fill-hover);
  color: var(--ah-action-ink);
  box-shadow: inset 0 1px 0 #ffffff, 0 6px 20px rgba(0, 0, 0, 0.55);
  transform: translateY(-1px);
}
.ah-main :is(.ah-button-bright, .ah-btn-tactile.ah-btn-primary, .ah-btn-primary):focus-visible {
  outline: 2px solid var(--ah-action-hover);
  outline-offset: 3px;
}
/* More specific legacy hero/article rules must use the same matte materials. */
.ah-main .ah-home-hero-cta.ah-button-bright,
.ah-main .ah-home-featured-copy > .ah-button.ah-button-bright {
  border-color: var(--ah-action);
  background-color: var(--ah-action-fill);
  background-image: linear-gradient(var(--ah-bg),var(--ah-bg)), linear-gradient(var(--ah-bg),var(--ah-bg));
  background-repeat: no-repeat;
  background-size: 18px 2px, 18px 2px;
  background-position: center top, center bottom;
  color: var(--ah-action-ink);
  box-shadow: none;
}
.ah-main .ah-home-hero-cta.ah-button-bright:is(:hover, :focus-visible):not(:disabled),
.ah-main .ah-home-featured-copy > .ah-button.ah-button-bright:is(:hover, :focus-visible):not(:disabled) {
  background-color: var(--ah-action-fill-hover);
  border-color: var(--ah-action-hover);
}
.ah-main .ah-article-card.is-featured .ah-article-cta {
  background-color: var(--ah-control-fill);
  background-image: linear-gradient(var(--ah-bg),var(--ah-bg)), linear-gradient(var(--ah-bg),var(--ah-bg));
  background-repeat: no-repeat;
  background-size: 18px 2px, 18px 2px;
  background-position: center top, center bottom;
  border-color: var(--ah-control-border);
  color: var(--ah-paper);
  box-shadow: none;
}
.ah-main .ah-article-card.is-featured .ah-article-cta:is(:hover, :focus-visible) {
  background-color: var(--ah-control-hover);
  border-color: var(--ah-control-border-hover);
}
.ah-main .ah-application-page .ah-form button.ah-button:not(.ah-button-bright) {
  border-color: var(--ah-danger);
  background-color: var(--ah-danger-fill);
  color: var(--ah-paper);
  text-shadow: none;
  box-shadow: none;
}
.ah-main .ah-application-page .ah-form button.ah-button:not(.ah-button-bright):hover,
.ah-main .ah-application-page .ah-form button.ah-button:not(.ah-button-bright):focus-visible {
  border-color: var(--ah-danger-border-hover);
  background-color: var(--ah-danger-hover);
}
.ah-main :is(.ah-security-view .ah-challenge-form:has(input[name="action"][value="verify_code"]) .ah-btn-primary,
  .ah-security-view form:has(input[name="token"]) .ah-btn-primary,
  .ah-writing-form button[name="action"][value="save"],
  .ah-article-images-manager form:has(input[name="action"][value="set_cover"]) button) {
  border-color: var(--ah-success);
  background-color: var(--ah-success-fill);
  color: var(--ah-paper);
  text-shadow: none;
  box-shadow: none;
}
.ah-main :is(.ah-security-view .ah-challenge-form:has(input[name="action"][value="verify_code"]) .ah-btn-primary,
  .ah-security-view form:has(input[name="token"]) .ah-btn-primary,
  .ah-writing-form button[name="action"][value="save"],
  .ah-article-images-manager form:has(input[name="action"][value="set_cover"]) button):is(:hover, :focus-visible) {
  border-color: var(--ah-action-hover);
  background-color: var(--ah-success-hover);
  color: var(--ah-paper);
}
/* Writer controls without legacy button classes share the primary/secondary states. */
.ah-main .ah-writing-form button[name="action"][value="preview"] {
  border-color: var(--ah-control-border);
  background-color: var(--ah-control-fill);
  color: var(--ah-paper);
}
.ah-main .ah-writing-form button[name="action"][value="preview"]:is(:hover, :focus-visible) {
  border-color: var(--ah-control-border-hover);
  background-color: var(--ah-control-hover);
}
.ah-main :is(.ah-writing-form button[name="action"][value="submit"],
  .ah-article-images-manager form:has(input[name="action"][value="upload_image"]) button) {
  border-color: var(--ah-action);
  background-color: var(--ah-action-fill);
  color: var(--ah-action-ink);
}
.ah-main :is(.ah-writing-form button[name="action"][value="submit"],
  .ah-article-images-manager form:has(input[name="action"][value="upload_image"]) button):is(:hover, :focus-visible) {
  border-color: var(--ah-action-hover);
  background-color: var(--ah-action-fill-hover);
}
.ah-main :is(.ah-article-images-manager form:has(input[name="action"][value="delete_image"]) button,
  .ah-sec-panel form:has(input[name="action"][value="disable_2fa"]) .ah-btn-secondary) {
  border-color: var(--ah-danger);
  background-color: var(--ah-danger-fill);
  color: var(--ah-paper);
  text-shadow: none;
  box-shadow: none;
}
.ah-main :is(.ah-article-images-manager form:has(input[name="action"][value="delete_image"]) button,
  .ah-sec-panel form:has(input[name="action"][value="disable_2fa"]) .ah-btn-secondary):is(:hover, :focus-visible) {
  border-color: var(--ah-danger-border-hover);
  background-color: var(--ah-danger-hover);
  color: var(--ah-paper);
}

/* Header/drawer controls are outside ah-main but belong to the same customer theme. */
body.ah-body :is(.ah-account .ah-wallet, .ah-hamburger-btn) {
  border-color: var(--ah-control-border);
  background: var(--ah-control-fill);
  color: var(--ah-paper);
  box-shadow: none;
}
body.ah-body :is(.ah-account .ah-wallet, .ah-hamburger-btn, .ah-settings-item):is(:hover, :focus-visible) {
  border-color: var(--ah-control-border-hover);
  background-color: var(--ah-control-hover);
  color: var(--ah-paper);
}
body.ah-body .ah-profile-card { background: var(--ah-surface); box-shadow: 0 12px 32px rgba(0,0,0,.45); }
body.ah-body :is(.ah-account .ah-wallet, .ah-hamburger-btn, .ah-settings-item):focus-visible,
.ah-main :is(.ah-writing-form button, .ah-article-images-manager button):focus-visible {
  outline: 2px solid var(--ah-action-hover);
  outline-offset: 3px;
}
/* Disabled must win over legacy page-specific hover and action selectors. */
body.ah-body .ah-main button:disabled {
  background: var(--ah-surface) !important;
  border-color: var(--ah-control-border) !important;
  color: var(--ah-muted) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

/* Weathered, soft-fading card edges; keep each card's existing size and fill. */
.ah-main :is(.ah-event-card, .ah-home-event-card, .ah-artist-card,
  .ah-article-card, .ah-ticket-card, .ah-sec-panel, .ah-summary) {
  border-color: rgba(184,182,170,.05);
  box-shadow: 0 0 24px -18px rgba(184,182,170,.28),
    0 8px 26px -24px rgba(154,112,87,.25),
    inset 0 0 24px -22px rgba(184,182,170,.2);
}
.ah-main :is(.ah-eyebrow, .ah-home-event-meta, .ah-article-meta,
  .ah-event-meta, .ah-card-type, figcaption small, .ah-signal-label) {
  opacity: 1;
  text-shadow: 1px 0 rgba(154,112,87,.06), -1px 0 rgba(184,182,170,.06);
}
.ah-main :is(.ah-eyebrow, .ah-index) {
  color: var(--ah-soft);
  opacity: .94;
  -webkit-mask-image: none;
  mask-image: none;
}

/* Preserve full vertical glyph box for Thai 4-tier vowels and tone marks. */
body.ah-body :where(h1, h2, h3, h4, h5, h6, p) {
  -webkit-mask-image: none;
  mask-image: none;
}

/* Keep signal bars decorative while preserving all customer copy. */
.ah-signal-hud,
.ah-signal-channel {
  -webkit-mask-image: repeating-linear-gradient(180deg, #000 0 6px, rgba(0,0,0,.82) 6px 7px, #000 7px 14px);
  mask-image: repeating-linear-gradient(180deg, #000 0 6px, rgba(0,0,0,.82) 6px 7px, #000 7px 14px);
}
body.ah-signal-paused :is(.ah-eyebrow, .ah-index, .ah-signal-hud, .ah-signal-channel) {
  -webkit-mask-image: none;
  mask-image: none;
}
@media print, (forced-colors: active) {
  :is(.ah-eyebrow, .ah-index, .ah-signal-hud, .ah-signal-channel) {
    -webkit-mask-image: none;
    mask-image: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ah-signal-backdrop::before { animation: none; }
}
@media (forced-colors: active) {
  .ah-main :is(.ah-eyebrow, .ah-home-event-meta, .ah-article-meta,
    .ah-event-meta, .ah-card-type, figcaption small, .ah-signal-label) {
    opacity: 1;
    text-shadow: none;
  }
  .ah-main :is(.ah-eyebrow, .ah-index) { opacity: 1; -webkit-mask-image: none; mask-image: none; }
  .ah-main :is(.ah-event-art, .ah-home-event-poster, .ah-artist-list-image-link,
    .ah-artist-poster-frame, .ah-article-card-cover, .ah-article-image-link,
    .ah-detail-cover, .ah-detail-poster, .ah-home-featured-poster,
    .ah-hero-slide, .ah-story-visual, .ah-event-gallery-grid figure)::before { display: none; }
}
