/* RallyPointPC app layer: install banner/sheet (browser) and tab bar (installed app).
   Uses the site palette from style.css / oled-skin.css. */
body{padding-left:env(safe-area-inset-left); padding-right:env(safe-area-inset-right);}

/* ---------- footer "Get the App" ---------- */
.foot-links .app-get{background:none; border:0; padding:0; cursor:pointer; font:inherit; color:var(--brass);}
.foot-links .app-get:hover{color:var(--paper);}

/* ---------- install banner (mobile browser) ---------- */
.app-install-banner{
  position:fixed; left:10px; right:10px; bottom:calc(10px + env(safe-area-inset-bottom)); z-index:140;
  display:flex; align-items:center; gap:12px; padding:10px 10px 10px 12px; border-radius:20px;
  background:rgba(29,35,21,.92); backdrop-filter:blur(18px) saturate(1.3); -webkit-backdrop-filter:blur(18px) saturate(1.3);
  box-shadow:0 0 0 1px var(--line-2) inset, 0 20px 50px -12px #000;
  animation:app-rise .45s cubic-bezier(.2,.8,.2,1) both;
}
.app-install-banner img{border-radius:10px; flex:none;}
.app-install-banner div{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px;}
.app-install-banner b{font:600 .9rem/1.1 'Oswald',sans-serif; letter-spacing:.05em; text-transform:uppercase; color:var(--paper);}
.app-install-banner span{font-size:.68rem; color:var(--paper-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.app-install-go{flex:none; border:0; border-radius:99px; padding:10px 16px; cursor:pointer;
  background:var(--rust); color:var(--rust-text); font:600 .74rem/1 'Oswald',sans-serif; letter-spacing:.08em; text-transform:uppercase;}
.app-install-x{flex:none; width:32px; height:32px; border:0; border-radius:99px; cursor:pointer; background:none;
  color:var(--paper-dim); font-size:1.3rem; line-height:1;}
.has-install-banner .back-to-top{bottom:calc(84px + env(safe-area-inset-bottom));}

/* ---------- install instructions sheet ---------- */
.app-sheet{display:none; position:fixed; inset:0; z-index:200; background:rgba(10,12,7,.7);
  align-items:flex-end; justify-content:center; padding:12px 12px calc(12px + env(safe-area-inset-bottom));}
.app-sheet.open{display:flex;}
.app-sheet-card{width:100%; max-width:440px; background:var(--panel-2); border-radius:24px; padding:26px 22px 20px;
  box-shadow:0 0 0 1px var(--line-2) inset, 0 30px 70px -10px #000; text-align:center; animation:app-rise .4s cubic-bezier(.2,.8,.2,1) both;}
.app-sheet-card img{border-radius:16px; margin:0 auto 12px; display:block;}
.app-sheet-card h3{font:600 1.25rem/1.1 'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.05em; color:var(--paper); margin-bottom:14px;}
.app-sheet-card ol{text-align:left; margin:0 0 18px 1.2em; display:flex; flex-direction:column; gap:10px; font-size:.84rem; line-height:1.55; color:var(--paper);}
.app-sheet-card p{font-size:.84rem; line-height:1.6; color:var(--paper); margin-bottom:18px;}
.app-sheet-card ol svg{width:18px; height:18px; vertical-align:-3px; color:var(--brass);}
.app-sheet-close{width:100%; border:0; border-radius:99px; padding:14px; cursor:pointer;
  background:var(--rust); color:var(--rust-text); font:600 .85rem/1 'Oswald',sans-serif; letter-spacing:.08em; text-transform:uppercase;}

/* ---------- installed app ---------- */
.is-app body{padding-bottom:calc(74px + env(safe-area-inset-bottom)); -webkit-tap-highlight-color:transparent;}
.is-app header{top:calc(10px + env(safe-area-inset-top));}
.is-app .back-to-top{bottom:calc(86px + env(safe-area-inset-bottom));}
/* the tab bar carries Account and Ticket, so the header keeps only logo + menu on phones */
@media (max-width:860px){
  .is-app header nav > div:last-of-type{display:none !important;}
  .is-app .nav-toggle{margin-left:auto;}
  .is-app .logo-word{display:inline;}
}

.app-tabbar{
  position:fixed; left:0; right:0; bottom:0; z-index:99;
  display:flex; justify-content:space-around; align-items:stretch;
  padding:6px max(6px, env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left));
  background:rgba(20,23,15,.86); backdrop-filter:blur(20px) saturate(1.3); -webkit-backdrop-filter:blur(20px) saturate(1.3);
  box-shadow:0 1px 0 var(--line) inset, 0 -20px 40px -20px rgba(0,0,0,.8);
  user-select:none; -webkit-user-select:none; -webkit-touch-callout:none;
}
.app-tabbar a, .app-tabbar button{
  flex:1; min-width:0; min-height:52px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px;
  background:none; border:0; border-radius:14px; cursor:pointer; text-decoration:none; color:var(--paper-dim);
  font:500 .62rem/1 'Oswald',sans-serif; letter-spacing:.09em; text-transform:uppercase; transition:color .2s, background .2s;
}
.app-tabbar svg{width:23px; height:23px;}
.app-tabbar .on{color:var(--brass); background:rgba(212,180,110,.08);}
.app-tabbar .on svg{filter:drop-shadow(0 0 8px var(--brass-glow));}
.app-tabbar a:active, .app-tabbar button:active{background:rgba(236,231,214,.06);}

@keyframes app-rise{from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:none;}}
@media (prefers-reduced-motion:reduce){.app-install-banner, .app-sheet-card{animation:none;}}

/* ---------- ticket alerts card (account dashboard) ---------- */
.push-card{margin-top:22px; padding:16px; border-radius:var(--r, 14px); background:rgba(236,231,214,.03); box-shadow:0 0 0 1px var(--line) inset; display:flex; flex-direction:column; gap:12px;}
.push-head{display:flex; gap:12px; align-items:flex-start;}
.push-head svg{width:24px; height:24px; flex:none; color:var(--brass); margin-top:2px;}
.push-head div{display:flex; flex-direction:column; gap:3px;}
.push-head b{font:600 .95rem/1.2 'Oswald',sans-serif; letter-spacing:.05em; text-transform:uppercase; color:var(--paper);}
.push-head span, .push-note{font-size:.76rem; line-height:1.55; color:var(--paper-dim);}
.push-note b{color:var(--paper);}
.push-note.err{color:var(--rust);}
.push-row{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;}
.push-on{font-size:.78rem; color:var(--field);}
.push-btn{border:0; border-radius:99px; padding:12px 18px; cursor:pointer; background:var(--rust); color:var(--rust-text);
  font:600 .78rem/1 'Oswald',sans-serif; letter-spacing:.08em; text-transform:uppercase;}
.push-btn.ghost{background:rgba(236,231,214,.05); color:var(--paper); box-shadow:0 0 0 1px var(--line-2) inset;}
.push-btn[disabled]{opacity:.6; cursor:default;}

/* ---------- show / hide password ---------- */
.pw-wrap{position:relative; display:block;}
.pw-wrap input{padding-right:52px !important;}
.pw-eye{position:absolute; top:50%; right:6px; transform:translateY(-50%); width:40px; height:40px; display:grid; place-items:center;
  background:none; border:0; border-radius:99px; cursor:pointer; color:var(--paper-dim); padding:0;}
.pw-eye:hover, .pw-eye[aria-pressed="true"]{color:var(--brass);}
.pw-eye:focus-visible{outline:2px solid var(--brass); outline-offset:-2px;}
.pw-eye svg{width:20px; height:20px;}

/* ---------- in-app alert banner ---------- */
.app-toast{position:fixed; left:10px; right:10px; top:calc(10px + env(safe-area-inset-top)); z-index:250; display:flex; align-items:center; gap:12px;
  padding:12px 14px; border:0; border-radius:18px; text-align:left; cursor:pointer; color:var(--paper);
  background:rgba(29,35,21,.96); box-shadow:0 0 0 1px var(--line-2) inset, 0 20px 50px -10px #000; animation:app-drop .4s cubic-bezier(.2,.8,.2,1) both;}
.app-toast img{border-radius:9px; flex:none;}
.app-toast > span{display:flex; flex-direction:column; gap:2px; min-width:0;}
.app-toast b{font:600 .95rem/1.2 'Oswald',sans-serif; letter-spacing:.04em; text-transform:uppercase;}
.app-toast span span{font-size:.78rem; line-height:1.4; color:var(--paper-dim);}
@keyframes app-drop{from{opacity:0; transform:translateY(-16px);} to{opacity:1; transform:none;}}
@media (min-width:861px){.app-toast{left:auto; width:380px;}}
