/*
Theme Name: Satosig Analytics Theme
Theme URI: https://satosig.com
Author: Satosig
Author URI: https://satosig.com
Description: Tema modular SATOSIG dengan Heatmap, Chart Explorer, dan penyimpanan data persisten melalui WP Admin.
Version: 1.4.26
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: satosig
*/

/* Kosongkan saja di sini karena styling utama kita pakai Tailwind CSS 
dan styling khusus komponen sudah ditaruh di dalam page template.
*/

/* SATOSIG v1.3.1: mobile-friendly modal sheets */
.satosig-mobile-modal { touch-action: pan-y; }
.satosig-mobile-panel { -webkit-overflow-scrolling: touch; }
.satosig-modal-body { scrollbar-gutter: stable; }
.satosig-table-scroll { -webkit-overflow-scrolling: touch; }
.satosig-table-scroll table { border-collapse: collapse; }
.satosig-table-scroll th { position: sticky; top: 0; z-index: 2; background: rgb(248 250 252); }
@media (max-width: 640px) {
  .satosig-mobile-modal { padding: 0 !important; align-items: flex-end !important; }
  .satosig-mobile-panel { width: 100% !important; max-width: none !important; max-height: 96dvh !important; border-radius: 1rem 1rem 0 0 !important; }
  .satosig-modal-header { padding: .75rem 1rem !important; }
  .satosig-modal-body { padding: .75rem !important; max-height: calc(96dvh - 64px) !important; }
  .satosig-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .satosig-table-scroll { margin-inline: -.75rem; padding-inline: .75rem; }
  .satosig-table-scroll::after { content: 'Geser tabel ke samping →'; display: block; padding: .5rem .75rem; font-size: .625rem; font-weight: 700; color: rgb(100 116 139); }
}


/* SATOSIG v1.3.2: clean responsive cards and overflow guards */
html, body { max-width: 100%; overflow-x: hidden; }
#heatmap-section, #heatmap-grid, .satosig-day-pin, .satosig-strategy-stack { min-width: 0; max-width: 100%; }
.satosig-ohlc-card { max-width: 100%; overflow: hidden; white-space: normal; }
.satosig-ohlc-values { max-width: 100%; overflow-wrap: anywhere; }
.satosig-strategy-card { max-width: 100%; overflow: hidden; overflow-wrap: anywhere; white-space: normal; }
.satosig-csv-actions { display: flex; flex-wrap: wrap; gap: .5rem; min-width: 0; max-width: 100%; }
.satosig-csv-button { max-width: 100%; white-space: normal; line-height: 1.2; }
@media (max-width: 640px) {
  #heatmap-section { padding: .75rem !important; border-radius: 1rem !important; }
  #heatmap-section > div:first-child { gap: .75rem !important; margin-bottom: 1rem !important; }
  #current-view-title { width: 100%; min-width: 0; font-size: 1rem !important; line-height: 1.3; overflow-wrap: anywhere; }
  .satosig-csv-actions { width: 100%; display: grid; grid-template-columns: minmax(0, 1fr); }
  .satosig-csv-button { width: 100%; font-size: .6875rem !important; }
  .satosig-day-pin { gap: .375rem !important; }
  .satosig-ohlc-card { align-items: flex-start !important; padding: .6rem .7rem !important; }
  .satosig-ohlc-values { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; gap: .25rem .65rem !important; }
  .satosig-ohlc-direction { grid-column: 1 / -1; border-left: 0 !important; border-top: 1px solid currentColor; padding-left: 0 !important; padding-top: .35rem; margin-top: .1rem; }
  .satosig-strategy-stack { width: 100%; }
  .satosig-strategy-card { width: 100% !important; }
  .satosig-mobile-panel { max-height: 94dvh !important; }
  .satosig-modal-header > div:first-child { min-width: 0; }
  .satosig-modal-header .text-xs { font-size: .65rem !important; line-height: 1.25; }
}


/* SATOSIG v1.3.33: non-blocking loader and responsive render pipeline */
#satosig-loading-overlay {
  position: fixed !important;
  inset: auto .75rem auto auto !important;
  top: max(4.5rem, env(safe-area-inset-top)) !important;
  z-index: 2147483647 !important;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding: 0;
  background: transparent !important;
  pointer-events: none !important;
}
#satosig-loading-overlay.hidden { display: none !important; }
.satosig-loader-card {
  width: min(22.5rem, calc(100vw - 1.5rem));
  border: 1px solid rgba(191, 219, 254, .95);
  border-radius: .9rem;
  background: rgba(255, 255, 255, .98);
  box-shadow: 0 18px 48px rgba(15, 23, 42, .22);
  padding: .85rem 1rem;
  display: flex;
  align-items: center;
  gap: .75rem;
  pointer-events: none !important;
}
.satosig-loader-ring {
  width: 1.8rem;
  height: 1.8rem;
  flex: 0 0 auto;
  border: 4px solid rgb(219 234 254);
  border-top-color: rgb(37 99 235);
  border-radius: 9999px;
  animation: satosig-spin .7s linear infinite;
}
@keyframes satosig-spin { to { transform: rotate(360deg); } }
.satosig-rendering { cursor: progress; }
.satosig-loading-button { position: relative; cursor: progress !important; }
#satosig-inline-load-status:not(.hidden) { display: block !important; }
.satosig-box-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(38px, 1fr));
  gap: 4px;
  min-width: 0;
}
@media (min-width: 768px) {
  .satosig-box-grid { grid-template-columns: repeat(var(--satosig-box-count, 24), minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .satosig-loader-ring { animation-duration: 1.4s; }
}

/* SATOSIG v1.3.32: modal click lock. Critical behavior no longer depends on Tailwind runtime classes. */
.satosig-runtime-modal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2147483000 !important;
  display: none !important;
  pointer-events: none !important;
  isolation: isolate;
  width: 100vw !important;
  height: 100dvh !important;
}
.satosig-runtime-modal.is-open {
  display: flex !important;
  pointer-events: auto !important;
}
.satosig-runtime-modal > [data-satosig-modal-backdrop],
.satosig-runtime-modal > [data-martingale-backdrop],
.satosig-runtime-modal > [data-modal-backdrop],
.satosig-runtime-modal > [data-alt-backdrop] {
  position: absolute !important;
  inset: 0 !important;
  z-index: 0 !important;
  pointer-events: auto !important;
}
.satosig-runtime-modal > .satosig-mobile-panel,
.satosig-runtime-modal > div:not([data-satosig-modal-backdrop]):not([data-martingale-backdrop]):not([data-modal-backdrop]):not([data-alt-backdrop]) {
  position: relative !important;
  z-index: 1 !important;
  pointer-events: auto !important;
}
.satosig-modal-trigger {
  position: relative;
  z-index: 1;
  cursor: pointer !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(8, 145, 178, .18);
  user-select: none;
  min-height: 44px;
}
.satosig-modal-trigger:active { transform: scale(.99); }
.satosig-action-group { position: relative; z-index: 1; }


/* SATOSIG v1.3.34: restore full SATOSIG modal and offset table without blocking UI */


/* SATOSIG v1.3.35: universal modal paint loader + exchange-time clarity */
.satosig-modal-panel-runtime { position: relative !important; }
.satosig-modal-loading-layer {
  position: absolute !important;
  inset: 0 !important;
  z-index: 80 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 1rem !important;
  background: rgba(248, 250, 252, .94) !important;
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  opacity: 1;
  visibility: visible;
  pointer-events: none !important;
  transition: opacity .16s ease, visibility .16s ease;
}
.satosig-modal-loading-layer.is-hidden {
  opacity: 0 !important;
  visibility: hidden !important;
}
.satosig-modal-loading-card {
  width: min(22rem, calc(100vw - 2rem));
  display: flex;
  align-items: center;
  gap: .8rem;
  border: 1px solid rgb(186 230 253);
  border-radius: 1rem;
  background: rgba(255,255,255,.99);
  box-shadow: 0 20px 55px rgba(15,23,42,.22);
  padding: 1rem;
}
.satosig-modal-loading-ring {
  width: 2rem;
  height: 2rem;
  flex: 0 0 auto;
  border: 4px solid rgb(224 242 254);
  border-top-color: rgb(2 132 199);
  border-radius: 9999px;
  animation: satosig-modal-spin .7s linear infinite;
}
.satosig-modal-loading-title { font-size: .875rem; line-height: 1.2; font-weight: 800; color: rgb(15 23 42); }
.satosig-modal-loading-detail { margin-top: .25rem; font-size: .7rem; line-height: 1.35; font-weight: 600; color: rgb(71 85 105); }
@keyframes satosig-modal-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .satosig-modal-loading-ring { animation-duration: 1.4s; } }


/* SATOSIG v1.3.36: feedback muncul sejak pointerdown, sebelum pekerjaan modal dimulai. */
#satosig-modal-intent-loader {
  position: fixed !important;
  left: 50% !important;
  top: max(5.25rem, calc(env(safe-area-inset-top) + 4.25rem)) !important;
  z-index: 2147483646 !important;
  width: min(24rem, calc(100vw - 1.5rem)) !important;
  transform: translate3d(-50%, -8px, 0) scale(.985);
  opacity: 0;
  visibility: hidden;
  pointer-events: none !important;
  contain: layout paint style;
  will-change: transform, opacity;
  transition: opacity .08s linear, transform .08s ease, visibility 0s linear .08s;
}
#satosig-modal-intent-loader.is-visible {
  transform: translate3d(-50%, 0, 0) scale(1);
  opacity: 1;
  visibility: visible;
  transition: opacity .04s linear, transform .06s ease;
}
.satosig-modal-intent-card {
  display: flex;
  align-items: center;
  gap: .8rem;
  min-height: 4.25rem;
  padding: .85rem 1rem;
  border: 1px solid #7dd3fc;
  border-radius: 1rem;
  background: rgba(255,255,255,.99);
  box-shadow: 0 18px 50px rgba(15,23,42,.28);
}
.satosig-modal-intent-ring {
  width: 1.8rem;
  height: 1.8rem;
  flex: 0 0 auto;
  border: 4px solid #dbeafe;
  border-top-color: #2563eb;
  border-radius: 9999px;
  animation: satosigModalIntentSpin .62s linear infinite;
}
.satosig-modal-intent-copy { min-width: 0; }
.satosig-modal-intent-title {
  color: #0f172a;
  font-size: .9rem;
  font-weight: 900;
  line-height: 1.25;
}
.satosig-modal-intent-detail {
  margin-top: .18rem;
  color: #64748b;
  font-size: .75rem;
  font-weight: 650;
  line-height: 1.35;
}
@keyframes satosigModalIntentSpin { to { transform: rotate(360deg); } }

[data-satosig-badge],
[data-satosig-alt-response],
[data-open-satosig-alt],
[data-open-satosig-martingale],
[data-signal-count],
[data-combo-badge],
[data-contrarian-badge] {
  position: relative;
}
.satosig-modal-opening-now {
  box-shadow: 0 0 0 3px rgba(37,99,235,.22) !important;
}
.satosig-modal-opening-now::after {
  content: '';
  position: absolute;
  right: .55rem;
  top: .55rem;
  z-index: 20;
  width: 1rem;
  height: 1rem;
  border: 2px solid rgba(255,255,255,.62);
  border-top-color: currentColor;
  border-radius: 9999px;
  animation: satosigModalIntentSpin .62s linear infinite;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .satosig-modal-intent-ring,
  .satosig-modal-opening-now::after { animation-duration: 1.25s; }
}
