/* Shared responsive layer — loaded after each page's inline styles.
   Mobile-first. Does not change brand colors or typefaces. */

:root{
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-right: env(safe-area-inset-right, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --safe-left: env(safe-area-inset-left, 0px);
}

html{
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
html,body{
  min-height: 100vh;
  min-height: 100dvh;
  max-width: 100%;
}
body{
  padding-left: var(--safe-left);
  padding-right: var(--safe-right);
}
img,svg,video,canvas,iframe{
  max-width: 100%;
  height: auto;
}
button,input,select,textarea{
  max-width: 100%;
}
:focus-visible{
  outline: 2px solid #fff;
  outline-offset: 3px;
}
body.overlay-open{
  overflow: hidden;
}

.lang-toggle{
  display:inline-flex;border:1px solid rgba(255,255,255,0.4);border-radius:2px;overflow:hidden;
}
.lang-toggle a{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;min-height:40px;padding:8px 12px;
  color:rgba(255,255,255,0.75);text-decoration:none;
  font-family:'Jost',sans-serif;font-size:11px;font-weight:700;letter-spacing:0.16em;
}
.lang-toggle a.on{background:#fff;color:#CF202E;}
.lang-toggle a:focus-visible{outline-offset:-2px;}
.app-chrome-tools{
  display:flex;
  align-items:center;
  gap:8px;
  margin-left:auto;
}
body.lottery-off .mode-toggle,
body.lottery-off #mode-lottery,
body.lottery-off #ticketOverlay{
  display:none !important;
}
.lot-disclaimer{
  margin:0 0 16px;padding:12px 14px;
  border:1px solid rgba(255,220,160,0.45);
  background:rgba(0,0,0,0.22);
  font-size:12px;line-height:1.5;color:#FFE8C8;
  font-family:'Jost',sans-serif;
}

/* ========== LOGIN (index.php) ========== */
body:has(.login-wrap){
  padding: max(16px, var(--safe-top)) max(16px, var(--safe-right)) max(16px, var(--safe-bottom)) max(16px, var(--safe-left));
  min-height: 100dvh;
}
.login-wrap{
  padding: clamp(28px, 6vw, 44px) clamp(18px, 5vw, 36px) clamp(24px, 5vw, 40px);
}
.login-wrap h1{
  font-size: clamp(32px, 10vw, 42px);
}
.login-wrap .eyebrow,
.login-wrap .subtitle{
  letter-spacing: 0.18em;
  overflow-wrap: anywhere;
}
.login-wrap .field{
  font-size: 16px;
  min-height: 48px;
}
.login-wrap .btn-login{
  min-height: 48px;
  letter-spacing: 0.18em;
}

/* ========== DRAW APP (app.php / standalone) ========== */
.page-wrap{
  width: 100%;
  max-width: min(880px, 100%);
  padding: 12px max(12px, var(--safe-left)) max(20px, var(--safe-bottom));
  min-height: 100vh;
  min-height: 100dvh;
}
#app{
  min-height: 0;
  width: 100%;
  overflow: hidden;
}
.app-chrome{
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  position: relative;
  z-index: 50;
  padding: max(10px, var(--safe-top)) 12px 0;
}
.app-chrome form{
  position: static;
  margin: 0;
}
.btn-logout,
.sound-toggle{
  position: static;
  top: auto;
  left: auto;
  right: auto;
  min-width: 44px;
  min-height: 44px;
}
.btn-logout{
  padding: 10px 14px;
  letter-spacing: 0.16em;
}
.wrap{
  padding: 16px 14px 24px;
}
.header .eyebrow{
  flex-wrap: wrap;
  justify-content: center;
  letter-spacing: 0.14em;
  font-size: clamp(10px, 2.8vw, 13px);
  max-width: 100%;
  overflow-wrap: anywhere;
  gap: 8px;
}
#app h1,
.header h1{
  font-size: clamp(32px, 11vw, 76px);
  overflow-wrap: anywhere;
}
.h1-sub{
  letter-spacing: 0.18em;
  overflow-wrap: anywhere;
}
.logo-mark{
  height: clamp(44px, 10vw, 70px);
  width: auto;
}
.mode-btn{
  min-height: 52px;
  padding: 12px 8px;
  font-size: clamp(16px, 4.6vw, 22px);
  letter-spacing: 0;
}
.mode-sub{
  letter-spacing: 0.12em;
}
.tabs{
  width: 100%;
}
.tab{
  min-height: 44px;
  padding: 10px 4px;
  font-size: clamp(10px, 2.7vw, 14px);
  letter-spacing: 0.06em;
  overflow-wrap: anywhere;
  hyphens: auto;
}
.field,
textarea.field,
select.field,
input.field{
  font-size: 16px;
}
.field-row{
  flex-wrap: wrap;
}
.field-row .field{
  flex: 1 1 10rem;
  min-width: 0;
}
.field-row .btn-sm,
.btn-sm,
.btn-reset,
.btn-cta,
.btn-clear-hist{
  min-height: 44px;
}
.btn-cta{
  letter-spacing: 0.12em;
  font-size: clamp(12px, 3.4vw, 16px);
  padding: 14px 12px;
}
.btn-sm{
  letter-spacing: 0.12em;
}
.roster-top,
.h-actions{
  flex-wrap: wrap;
  gap: 8px;
}
.speed-row{
  justify-content: center;
}
.sp-btn{
  min-height: 40px;
  padding: 8px 12px;
}
.arena,
.pot-hero{
  min-height: 0;
  padding: 20px 12px;
  width: 100%;
}
.a-stage,
.a-count{
  position: static;
  display: inline-block;
  margin: 0 8px 8px;
  font-size: 11px;
  letter-spacing: 0.16em;
}
.candidates{
  margin-top: 8px;
  max-width: 100%;
}
.cand{
  max-width: 100%;
  overflow-wrap: anywhere;
  letter-spacing: 0.04em;
}
.twist{
  white-space: normal;
  max-width: calc(100% - 16px);
  font-size: clamp(28px, 9vw, 72px);
  padding: 0 8px;
  text-align: center;
  word-break: break-word;
}
.cd-num{
  font-size: clamp(72px, 28vw, 200px);
}
.w-name,
#finalWinAmt{
  font-size: clamp(28px, 8vw, 96px);
  overflow-wrap: anywhere;
}
.reels-wrap{
  gap: 4px;
  margin: 16px 0 12px;
  max-width: 100%;
}
.reel{
  width: clamp(32px, 12vw, 66px);
  height: clamp(46px, 17vw, 94px);
  font-size: clamp(20px, 7vw, 52px);
  flex: 0 0 auto;
}
.lot-stats{
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.lot-stats .stat-card:last-child{
  grid-column: 1 / -1;
}
.qty-display{
  font-size: clamp(40px, 16vw, 72px);
  min-width: 0;
}
.qty-btn{
  min-width: 48px;
  min-height: 48px;
}
.ticket-overlay{
  position: fixed;
  inset: 0;
  z-index: 200;
  overflow-y: auto;
  padding: max(12px, var(--safe-top)) 12px max(16px, var(--safe-bottom));
  align-items: center;
}
.ticket-card{
  max-width: min(480px, 100%);
  padding: 22px 14px 18px;
  margin: auto;
}
.ticket-brand{
  letter-spacing: 0.16em;
  overflow-wrap: anywhere;
}
.ticket-num{
  min-width: 0;
  width: min(100%, 11rem);
  font-size: clamp(20px, 6vw, 36px);
  padding: 10px 12px;
}
.ticket-meta{
  flex-wrap: wrap;
  gap: 8px;
}
.ticket-actions{
  flex-direction: column;
}
.ticket-btn{
  min-height: 44px;
  letter-spacing: 0.12em;
  font-size: 11px;
}
.toast{
  left: 50%;
  max-width: min(calc(100% - 24px), 360px);
  white-space: normal;
}
.pot-amount{
  font-size: clamp(40px, 16vw, 140px);
}
.pot-label{
  letter-spacing: 0.2em;
}
.pot-split{
  flex-wrap: wrap;
  gap: 16px;
}
.win-banner{
  font-size: clamp(24px, 7vw, 56px);
  overflow-wrap: anywhere;
}
.claim-form .btn-reset,
.claim-form .btn-sm{
  min-height: 44px;
}
.h-item{
  flex-wrap: wrap;
}
.h-badge,
.h-date{
  white-space: normal;
}
.footer{
  letter-spacing: 0.12em;
  overflow-wrap: anywhere;
}

@media (min-width: 480px){
  .lot-stats{
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .lot-stats .stat-card:last-child{
    grid-column: auto;
  }
  .ticket-actions{
    flex-direction: row;
  }
}
@media (min-width: 641px){
  .page-wrap{
    padding: 28px 24px 48px;
  }
  .wrap{
    padding: 28px 24px 34px;
  }
  .a-stage{
    position: absolute;
    top: 20px;
    left: 28px;
    margin: 0;
  }
  .a-count{
    position: absolute;
    top: 20px;
    right: 28px;
    margin: 0;
  }
  .arena,
  .pot-hero{
    padding: 34px 22px;
    min-height: 400px;
  }
  .tab{
    letter-spacing: 0.18em;
  }
  .btn-cta{
    letter-spacing: 0.22em;
  }
}
@media (min-width: 1024px){
  .page-wrap{
    padding: 52px 40px 72px;
  }
  .wrap{
    padding: 40px 36px 46px;
  }
  .app-chrome{
    padding: 16px 18px 0;
  }
}

@media (max-height: 500px) and (orientation: landscape){
  .page-wrap{
    padding-top: 8px;
    padding-bottom: 12px;
  }
  .arena,
  .pot-hero{
    min-height: 220px;
    padding: 16px 12px;
  }
  #app h1,
  .header h1{
    font-size: clamp(28px, 8vh, 48px);
  }
}

/* ========== ADMIN LEDGER ========== */
.shell{
  width: 100%;
  max-width: min(1120px, 100%);
  padding: max(16px, var(--safe-top)) max(14px, var(--safe-right)) max(40px, var(--safe-bottom)) max(14px, var(--safe-left));
}
.shell h1{
  font-size: clamp(34px, 10vw, 52px);
}
.shell .tabs{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.shell .tabs a{
  min-width: 0;
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0.1em;
  font-size: 10px;
  padding: 12px 8px;
  border-right: 1px solid rgba(255,255,255,0.12);
}
.shell .logout{
  min-height: 44px;
  min-width: 44px;
}
.shell input,
.shell select,
.shell textarea{
  font-size: 16px;
  min-height: 44px;
}
.shell .btn{
  min-height: 48px;
}
.shell .btn.ghost{
  min-height: 44px;
  padding: 10px 12px;
}
.shell .secret code{
  overflow-wrap: anywhere;
}
.table-wrap{
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.table-wrap[data-scrollable]::after{
  content: "Swipe to see more \2192";
  display: none;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.5);
  margin-top: 8px;
}
@media (max-width: 860px){
  .shell .grid{
    grid-template-columns: 1fr;
  }
  .data-table thead{
    display: none;
  }
  .data-table,
  .data-table tbody,
  .data-table tr,
  .data-table td{
    display: block;
    width: 100%;
  }
  .data-table tr{
    padding: 14px 0 16px;
    border-bottom: 1px solid rgba(255,255,255,0.12);
  }
  .data-table td{
    padding: 6px 0;
    border-bottom: none;
  }
  .data-table td[data-label]::before{
    content: attr(data-label);
    display: block;
    font-size: 10px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.5);
    margin-bottom: 4px;
  }
  .table-wrap[data-scrollable]::after{
    display: none;
  }
}
@media (min-width: 861px){
  .shell .tabs{
    display: flex;
  }
  .shell .tabs a{
    flex: 1;
    letter-spacing: 0.18em;
    font-size: 11px;
  }
  .table-wrap{
    position: relative;
  }
}

/* ========== MARKETING LANDING (index.html) ========== */
.nav{
  padding: 12px max(16px, var(--safe-left)) 12px max(16px, var(--safe-right));
}
.nav-inner{
  gap: 12px;
  flex-wrap: wrap;
}
.nav-cta{
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 10px 16px;
}
.nav-name{
  letter-spacing: 0.16em;
}
.hero{
  padding: clamp(40px, 8vw, 90px) max(16px, var(--safe-left)) clamp(48px, 8vw, 100px) max(16px, var(--safe-right));
}
.hero-ctas .btn-primary,
.hero-ctas .btn-secondary,
.final-ctas .btn-primary,
.final-ctas .btn-secondary{
  min-height: 48px;
  letter-spacing: 0.14em;
  padding: 14px 20px;
  text-align: center;
}
.preview{
  padding: 0 max(16px, var(--safe-left)) 64px max(16px, var(--safe-right));
}
.preview-frame{
  padding: clamp(24px, 5vw, 50px) clamp(14px, 4vw, 32px);
}
.problem-grid,
.features-grid,
.pillars{
  grid-template-columns: minmax(0, 1fr);
}
section{
  padding: clamp(48px, 8vw, 80px) max(16px, var(--safe-left));
}
.footer-inner{
  grid-template-columns: minmax(0, 1fr);
}
.footer-contact{
  text-align: left;
}
.footer-bottom{
  letter-spacing: 0.12em;
}

@media (min-width: 640px){
  .problem-grid,
  .features-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pillars{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 900px){
  .problem-grid,
  .features-grid{
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  }
  .pillars{
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .footer-inner{
    grid-template-columns: 1fr auto;
  }
  .footer-contact{
    text-align: right;
  }
}

@media (min-width: 1280px){
  .page-wrap{
    max-width: 920px;
  }
}
@media (min-width: 1920px){
  .page-wrap{
    max-width: 960px;
  }
  .shell{
    max-width: 1200px;
  }
}
