:root{
  --bg:#07111f;--panel:#0d1829;--panel2:#111f33;--border:rgba(255,255,255,.09);
  --text:#f6f8fb;--muted:#95a4ba;--accent:#5eead4;--accent2:#60a5fa;
  --buy:#34d399;--sell:#fb7185;--danger:#ef4444;--shadow:0 24px 70px rgba(0,0,0,.28);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 15% 0%,#14233b 0,#07111f 48%,#050b14 100%);color:var(--text)}body{min-height:100vh}.hidden{display:none!important}
html.booting #login-screen,html.booting #app{visibility:hidden}
html.booting body{background:#050b14}
button,input,select{font:inherit}button{cursor:pointer}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden}.login-orb{position:absolute;border-radius:999px;filter:blur(60px);opacity:.28}.orb-a{width:320px;height:320px;background:#5eead4;top:-80px;left:-60px}.orb-b{width:380px;height:380px;background:#60a5fa;right:-80px;bottom:-120px}.login-card{position:relative;z-index:1;width:min(430px,100%);padding:34px;border:1px solid var(--border);border-radius:28px;background:rgba(8,18,32,.74);box-shadow:var(--shadow);backdrop-filter:blur(22px)}
.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#08111d;font-weight:900;font-size:22px;box-shadow:0 12px 30px rgba(96,165,250,.28)}.brand-mark.small{width:38px;height:38px;border-radius:12px;font-size:18px}.brand-row{display:flex;align-items:center;gap:10px}.eyebrow{font-size:11px;letter-spacing:.18em;font-weight:900;color:#7f95b0}.muted{color:var(--muted)}h1,h2,h3,p{margin-top:0}.login-card h1{font-size:38px;margin:10px 0 6px}.login-card label,.field{display:block;margin:18px 0;font-weight:750}.login-card input,.field input,.field select,input,select{width:100%;margin-top:8px;padding:13px 14px;border:1px solid var(--border);border-radius:14px;background:#0b1728;color:var(--text);outline:none}.login-card input:focus,.field input:focus,.field select:focus,input:focus,select:focus{border-color:rgba(94,234,212,.55);box-shadow:0 0 0 4px rgba(94,234,212,.08)}
.primary,button{border:1px solid transparent;border-radius:14px;padding:11px 15px;font-weight:800}.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#06101b}.primary.big{width:100%;padding:14px 16px;margin-top:6px}.ghost{background:transparent;border-color:var(--border);color:var(--text)}.danger{background:var(--danger);color:white}.error{min-height:18px;color:#fca5a5;font-size:13px;margin-top:12px}.app{min-height:100vh;padding-bottom:86px}.topbar{position:sticky;top:0;z-index:30;padding:14px 18px;display:flex;justify-content:space-between;align-items:center;background:rgba(7,17,31,.82);backdrop-filter:blur(18px);border-bottom:1px solid var(--border)}.topbar h1{font-size:19px;margin:2px 0 0}.top-actions{display:flex;align-items:center;gap:8px}.icon-btn{width:40px;height:40px;padding:0;border-radius:12px;background:#0d1b2f;border-color:var(--border);color:var(--text);font-size:18px}.status-pill{font-size:11px;font-weight:900;padding:8px 10px;border-radius:999px;background:rgba(52,211,153,.14);color:#86efac}.status-pill.offline{background:rgba(248,113,113,.14);color:#fca5a5}
main{max-width:1200px;margin:auto;padding:18px}.view{display:none;animation:fade .18s ease}.view.active{display:block}@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.card,.card-glass{border:1px solid var(--border);border-radius:22px;background:linear-gradient(180deg,rgba(17,31,51,.94),rgba(10,21,36,.94));box-shadow:var(--shadow)}.card{padding:18px}.card-glass{padding:22px;background:linear-gradient(135deg,rgba(16,33,54,.92),rgba(9,21,36,.82))}.hero{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px}.hero h2{font-size:30px;margin:6px 0}.hero-btn{white-space:nowrap;padding:14px 18px}
.account-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:20px}.metric{padding:15px 16px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(180deg,rgba(18,32,52,.84),rgba(11,23,40,.84))}.metric span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.metric strong{display:block;font-size:20px;margin-top:6px}.good{color:#86efac}.bad{color:#fda4af}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:12px 0 14px}.section-head h2,.section-head h3{margin-bottom:3px}.section-actions,.actions{display:flex;flex-wrap:wrap;gap:8px}.back-btn{background:transparent;border-color:var(--border);color:#cbd5e1}.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.quick-card{text-align:left;padding:18px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(180deg,rgba(17,31,51,.9),rgba(9,20,34,.9));color:var(--text)}.quick-card:hover,.lot-btn:hover,.side-btn:hover{transform:translateY(-1px);border-color:rgba(94,234,212,.32)}.quick-card span{font-size:24px;color:var(--accent)}.quick-card b{display:block;margin:10px 0 5px}.quick-card small{color:var(--muted)}
.stepper{display:flex;gap:8px;overflow:auto;margin:0 0 12px}.step-chip{padding:8px 11px;border-radius:999px;border:1px solid var(--border);font-size:11px;font-weight:800;white-space:nowrap;color:var(--muted)}.step-chip.active{background:rgba(94,234,212,.12);color:var(--accent);border-color:rgba(94,234,212,.25)}
.wizard{max-width:820px;margin:auto}.wizard-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:18px}.wizard-title{font-size:26px;margin:0}.wizard-sub{color:var(--muted);margin:6px 0 0}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.choice{padding:16px 15px;text-align:left;background:#0c1a2c;border-color:var(--border);color:var(--text)}.choice span{display:block;font-size:13px;font-weight:900}.choice small{display:block;color:var(--muted);margin-top:5px}.choice.selected{border-color:rgba(94,234,212,.5);box-shadow:0 0 0 3px rgba(94,234,212,.08)}.buy{background:rgba(52,211,153,.09);color:#a7f3d0}.sell{background:rgba(251,113,133,.09);color:#fecdd3}.lots{display:grid;gap:8px}.lot-btn{width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;background:#0b1728;border-color:var(--border);color:var(--text);padding:15px 16px}.lot-btn small{color:var(--muted)}.preview{display:grid;gap:0}.risk-line{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.06)}.risk-line span{color:var(--muted)}.risk-line b{text-align:right}.strike-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.strike-btn{padding:13px 8px;background:#0b1728;border-color:var(--border);color:var(--text)}.strike-btn.atm{background:linear-gradient(135deg,rgba(94,234,212,.18),rgba(96,165,250,.12));border-color:rgba(94,234,212,.4)}.type-grid,.side-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.type-btn,.side-btn{padding:17px;font-size:16px}.loading{padding:28px;text-align:center;color:var(--muted)}
.position-card{padding:18px;border:1px solid var(--border);border-radius:20px;background:linear-gradient(180deg,rgba(17,31,51,.92),rgba(9,20,34,.92));margin-bottom:12px}.position-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.symbol{font-weight:900;word-break:break-word}.badge{font-size:10px;padding:6px 8px;border-radius:999px;font-weight:900}.badge.long{background:rgba(52,211,153,.14);color:#86efac}.badge.short{background:rgba(251,113,133,.14);color:#fda4af}.position-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:14px}.stat{padding:11px 12px;border:1px solid rgba(255,255,255,.06);border-radius:13px;background:#0a1626}.stat small{display:block;color:var(--muted)}.stat b{display:block;margin-top:4px}.table-wrap{overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:950px}.table-wrap th,.table-wrap td{padding:12px;border-bottom:1px solid rgba(255,255,255,.07);text-align:left;white-space:nowrap}.table-wrap th{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.card-title{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}
.bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:40;display:grid;grid-template-columns:repeat(5,1fr);width:min(840px,100%);padding:9px 10px calc(9px + env(safe-area-inset-bottom));background:rgba(7,17,31,.9);backdrop-filter:blur(18px);border:1px solid var(--border);box-shadow:0 -12px 40px rgba(0,0,0,.28)}.bottom-nav button{background:transparent;border:0;color:#8fa1b8;padding:8px 4px;border-radius:14px}.bottom-nav button.active{color:var(--accent);background:rgba(94,234,212,.08)}.bottom-nav span{display:block;font-size:20px}.bottom-nav small{font-size:12px;font-weight:800}
.toast{position:fixed;left:50%;bottom:92px;transform:translate(-50%,12px);max-width:min(520px,calc(100% - 28px));padding:12px 15px;border:1px solid var(--border);border-radius:14px;background:#0d1829;color:var(--text);box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.2s;z-index:80}.toast.show{opacity:1;transform:translate(-50%,0)}.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:rgba(2,6,23,.72);backdrop-filter:blur(8px)}.modal-card{width:min(540px,100%);padding:22px;border:1px solid var(--border);border-radius:22px;background:#0b1728;box-shadow:var(--shadow);position:relative}.modal-close{position:absolute;right:10px;top:10px;width:34px;height:34px;border-radius:10px;background:transparent;border-color:var(--border);color:var(--text)}
@media(max-width:900px){.account-grid{grid-template-columns:repeat(3,1fr)}.quick-grid{grid-template-columns:repeat(2,1fr)}.position-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){
  .login-card{
    transform:translateY(-6vh);
  }

main{padding:12px}.topbar{padding:12px}.hero{align-items:flex-start;flex-direction:column}.hero h2{font-size:24px}.account-grid{grid-template-columns:repeat(2,1fr)}.choices,.type-grid,.side-grid,.admin-grid{grid-template-columns:1fr}.position-grid{grid-template-columns:repeat(2,1fr)}.strike-grid{grid-template-columns:repeat(3,1fr)}.section-head{align-items:flex-start;flex-direction:column}.login-card{padding:26px}.quick-grid{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.account-grid{grid-template-columns:1fr 1fr}.metric strong{font-size:17px}.strike-grid{grid-template-columns:repeat(2,1fr)}}

/* =========================================================
   MOBILE UI PASS 1
   ========================================================= */

@media (max-width: 640px) {

  /* ---------- Global mobile ergonomics ---------- */

  html {
    -webkit-text-size-adjust: 100%;
  }

  body {
    overflow-x: hidden;
  }

  main {
    width: 100%;
    max-width: 100%;
    padding: 12px 12px calc(96px + env(safe-area-inset-bottom));
  }

  button,
  input,
  select {
    min-height: 46px;
  }

  button {
    touch-action: manipulation;
  }

  /* ---------- Top bar ---------- */

  .topbar {
    min-height: 62px;
    padding:
      10px
      12px
      10px
      12px;
  }

  .topbar h1 {
    font-size: 18px;
  }

  .top-actions {
    gap: 6px;
  }

  .top-actions .status-pill {
    max-width: 96px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .icon-btn {
    width: 44px;
    height: 44px;
    min-height: 44px;
  }

  /* ---------- Account metrics ---------- */

  .account-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-bottom: 16px;
  }

  .metric {
    min-width: 0;
    padding: 12px;
    border-radius: 15px;
  }

  .metric span {
    font-size: 10px;
  }

  .metric strong {
    font-size: 16px;
    line-height: 1.2;
    overflow-wrap: anywhere;
  }

  /* ---------- Section headings ---------- */

  .section-head {
    gap: 10px;
    margin: 8px 0 12px;
  }

  .section-head h2 {
    font-size: 22px;
  }

  /* ---------- Generic actions ---------- */

  .actions,
  .section-actions {
    width: 100%;
  }

  .actions > button,
  .section-actions > button {
    flex: 1 1 140px;
    min-width: 0;
  }

  /* ---------- Trade wizard ---------- */

  .wizard {
    width: 100%;
    max-width: none;
  }

  .wizard-head {
    gap: 8px;
    margin-bottom: 14px;
  }

  .wizard-title {
    font-size: 22px;
    line-height: 1.2;
  }

  .wizard-sub {
    font-size: 13px;
    line-height: 1.45;
  }

  .wizard-head .back-btn {
    flex: 0 0 auto;
    white-space: nowrap;
    min-height: 44px;
    padding: 10px 12px;
  }

  .choices,
  .type-grid,
  .side-grid {
    grid-template-columns: 1fr;
    gap: 9px;
  }

  .choice {
    min-height: 72px;
    padding: 15px 14px;
  }

  .type-btn,
  .side-btn {
    min-height: 64px;
    padding: 14px;
  }

  .lot-btn {
    min-height: 62px;
    padding: 13px 14px;
    gap: 10px;
  }

  .lot-btn > b {
    text-align: right;
  }

  /* ---------- Strike picker ---------- */

  .strike-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .strike-btn {
    min-height: 54px;
    padding: 10px 8px;
    font-size: 13px;
    line-height: 1.15;
  }

  /* ---------- Preview / risk lines ---------- */

  .risk-line {
    align-items: flex-start;
    gap: 12px;
    padding: 10px 0;
  }

  .risk-line span {
    flex: 0 0 42%;
  }

  .risk-line b {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  /* ---------- Position cards ---------- */

  .position-card {
    padding: 14px;
    border-radius: 17px;
  }

  .position-top {
    gap: 8px;
  }

  .symbol {
    font-size: 14px;
    line-height: 1.25;
  }

  .badge {
    flex: 0 0 auto;
  }

  .position-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-top: 12px;
  }

  .stat {
    min-width: 0;
    padding: 10px;
  }

  .stat small {
    font-size: 10px;
  }

  .stat b {
    font-size: 14px;
    overflow-wrap: anywhere;
  }

  .position-card .actions {
    margin-top: 10px;
  }

  .position-card .actions > button {
    flex: 1 1 30%;
    min-width: 0;
  }

  /* ---------- TP / SL editor ---------- */

  .risk-editor {
    width: 100%;
  }

  .risk-editor .form-row {
    width: 100%;
  }

  .risk-editor input {
    min-height: 48px;
    font-size: 16px;
  }

  /* ---------- History ---------- */

  .table-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: 15px;
  }

  .table-wrap table {
    min-width: 900px;
  }

  /* ---------- Admin ---------- */

  .admin-grid {
    grid-template-columns: 1fr;
  }

  .admin-grid .actions {
    flex-direction: column;
  }

  .admin-grid .actions > button {
    width: 100%;
    flex: 1 1 auto;
  }

  /* ---------- Bottom navigation ---------- */

  .bottom-nav {
    width: 100%;
    max-width: 100%;
    left: 0;
    right: 0;
    transform: none;

    grid-template-columns:
      repeat(5, minmax(0, 1fr));

    padding:
      6px
      8px
      calc(6px + env(safe-area-inset-bottom))
      8px;

    border-left: 0;
    border-right: 0;
    border-bottom: 0;
    border-radius: 18px 18px 0 0;

    gap: 4px;
  }

  .bottom-nav button {
    min-height: 52px;
    padding: 7px 3px;
    font-size: 11px;
    border-radius: 13px;
  }

  .bottom-nav span {
    display: block;
    font-size: 22px;
    line-height: 1;
  }

  .bottom-nav small {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    line-height: 1;
    white-space: nowrap;
  }

  .bottom-nav button.active {
    font-weight: 900;
  }

  /* ---------- Toast ---------- */

  .toast {
    bottom:
      calc(82px + env(safe-area-inset-bottom));
    max-width:
      calc(100% - 24px);
  }

  /* ---------- Login ---------- */

  .login-screen {
    padding: 16px;
  }

  .login-card {
    width: 100%;
    max-width: 430px;
    padding: 24px 18px;
    border-radius: 22px;
  }

  .login-card h1 {
    font-size: 32px;
  }
}

@media (max-width: 380px) {

  main {
    padding-left: 10px;
    padding-right: 10px;
  }

  .topbar {
    padding-left: 10px;
    padding-right: 10px;
  }

  .account-grid {
    gap: 6px;
  }

  .metric {
    padding: 10px;
  }

  .metric strong {
    font-size: 15px;
  }

  .wizard-head {
    flex-direction: column;
  }

  .wizard-head .back-btn {
    width: 100%;
  }

  .position-grid {
    grid-template-columns: 1fr 1fr;
  }

  .position-card .actions {
    flex-direction: column;
  }

  .position-card .actions > button {
    width: 100%;
  }

  .bottom-nav {
    padding-left: 5px;
    padding-right: 5px;
    gap: 2px;
  }

  .bottom-nav button {
    min-height: 50px;
    padding-left: 2px;
    padding-right: 2px;
  }

  .bottom-nav span {
    font-size: 21px;
  }

  .bottom-nav small {
    font-size: 10px;
  }
}

/*
 * Paper Trader — touch feedback fix
 *
 * Append this file to the END of web/static/styles.css.
 * Do NOT replace the existing styles.css with this file.
 */

/* Remove Android/WebView's blue tap-highlight rectangle. */
html,
body,
button,
a,
input,
select,
textarea,
label,
[role="button"] {
  -webkit-tap-highlight-color: transparent;
}

/* Prevent touch selection/callout on interactive controls. */
button,
a,
[role="button"] {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
}

/* Do not introduce a different pressed-state shape or color. */
button:active,
a:active,
[role="button"]:active {
  -webkit-tap-highlight-color: transparent;
  outline: none;
}

/* Keep keyboard focus accessible while removing touch-only outlines. */
button:focus:not(:focus-visible),
a:focus:not(:focus-visible),
[role="button"]:focus:not(:focus-visible),
input:focus:not(:focus-visible),
select:focus:not(:focus-visible),
textarea:focus:not(:focus-visible) {
  outline: none;
}

/* Explicitly cover Paper Trader's tile/button classes. */
.choice,
.type-btn,
.side-btn,
.lot-btn,
.strike-btn,
.quick-card,
.icon-btn,
.back-btn,
.primary,
.ghost,
.danger,
.bottom-nav button,
.actions > button,
.section-actions > button {
  -webkit-tap-highlight-color: transparent;
}

/* Keep the CSS design authoritative instead of native button styling. */
button,
input,
select {
  -webkit-appearance: none;
  appearance: none;
}
