/* ============================================================
   v4-app.css — relies on the :root tokens already defined in
   css/styles.css (--bg, --green, --mono, etc.) — load AFTER it.
   ============================================================ */
*{box-sizing:border-box;}
html,body{height:100%;}
body{background:var(--bg); color:var(--text); font-family:var(--sans); font-size:14px; -webkit-font-smoothing:antialiased;}
svg{display:block;}

.grain{position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.5;
  background-image:radial-gradient(rgba(255,255,255,.02) 1px, transparent 1px); background-size:3px 3px;}

.screen{position:relative; z-index:1; width:100%; min-height:100vh; min-height:100dvh; display:flex; flex-direction:column;}
.hidden{display:none !important;}

/* ============================================================
   HOME / DASHBOARD PAGE — the default page shown after login.
   Connect-Deriv lives here as one section (room for more
   sections — Bots, etc. — to be added later), not a separate
   blocking gate screen.
   ============================================================ */
.home-page{padding:8px 0 20px; display:flex; flex-direction:column; align-items:center;}
.home-heading{font-family:var(--display); font-size:22px; font-weight:700; margin-bottom:6px; align-self:flex-start;}
.home-sub{font-family:var(--mono); font-size:11.5px; color:var(--text-faint); margin-bottom:26px; align-self:flex-start;}
.landing-card{width:100%; max-width:420px; background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:26px 26px 22px; margin-bottom:20px;}
.landing-eyebrow{font-family:var(--mono); font-size:10px; letter-spacing:.12em; color:var(--text-faint); text-transform:uppercase; margin-bottom:16px; text-align:center;}
.btn{display:flex; align-items:center; justify-content:center; gap:9px; width:100%; text-align:center; font-family:var(--mono); font-size:12.5px; font-weight:600; letter-spacing:.02em; padding:13px; border-radius:6px; border:1px solid transparent; cursor:pointer; text-decoration:none; background:none; color:inherit;}
.btn + .btn{margin-top:9px;}
.btn-primary{background:var(--green); color:#031008; border-color:var(--green);}
.btn-primary:hover{background:#4dffa0;}
.btn-secondary{background:transparent; border-color:var(--border); color:var(--text);}
.btn-secondary:hover{border-color:var(--text-dim);}
.landing-or{display:flex; align-items:center; gap:12px; margin:16px 0; font-family:var(--mono); font-size:10px; color:var(--text-faint); letter-spacing:.06em; text-transform:uppercase;}
.landing-or::before, .landing-or::after{content:''; flex:1; height:1px; background:var(--border-soft);}
.landing-fine{text-align:center; font-family:var(--mono); font-size:10.5px; color:var(--text-faint); margin-top:18px; line-height:1.7;}
.landing-fine a{color:var(--text-dim);}
.home-more{width:100%; max-width:420px; border:1px dashed var(--border-soft); border-radius:10px; padding:18px; text-align:center; font-family:var(--mono); font-size:10.5px; color:var(--text-faint);}

/* ============================================================
   DASHBOARD SHELL
   ============================================================ */
#app-shell{flex-direction:column; height:100vh; height:100dvh; position:relative; z-index:1;}

.hdr{display:flex; align-items:center; justify-content:space-between; padding:22px 24px; border-bottom:1px solid var(--border-soft); background:rgba(5,8,6,.85); backdrop-filter:blur(6px); flex-shrink:0;}
.hdr-left{display:flex; align-items:center; gap:12px;}
.home-btn{width:32px; height:32px; border-radius:7px; background:var(--panel2); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; cursor:pointer;}
.home-btn:hover{border-color:var(--green-dim);}
.home-btn svg rect{fill:var(--text-dim);}
.home-btn:hover svg rect{fill:var(--green);}
.brand{display:flex; align-items:center; gap:12px;}
.brand-mark{width:40px; height:40px; border-radius:8px; background:var(--panel2); border:1px solid var(--green-dim); display:flex; align-items:center; justify-content:center;}
.brand-word{font-family:var(--display); font-weight:700; font-size:22px; letter-spacing:.01em;}
.brand-word span{color:var(--green);}
.connection-pill{display:flex; align-items:center; gap:7px; font-family:var(--mono); font-size:10.5px; color:var(--text-dim); background:var(--panel2); border:1px solid var(--border); border-radius:20px; padding:5px 11px 5px 9px;}
.connection-pill .dot{width:6px; height:6px; border-radius:50%; background:var(--green);}
@media (max-width: 600px) {
  .connection-pill { display: none; }
}
.hdr-right{display:flex; align-items:center; gap:10px;}
.env-tag{font-family:var(--mono); font-size:9.5px; letter-spacing:.08em; color:var(--blue); border:1px solid var(--blue-dim); border-radius:3px; padding:3px 7px;}
.avatar-btn{width:32px; height:32px; border-radius:50%; background:var(--panel2); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; cursor:pointer; font-family:var(--mono); font-size:11.5px; font-weight:700; color:var(--text-dim);}
.avatar-btn:hover{border-color:var(--green-dim); color:var(--green);}

.main{flex:1; overflow-y:auto; overflow-x:hidden;}
.main-inner{max-width:1440px; margin:0 auto; padding:22px 24px 60px;}

.page-head{display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:16px; flex-wrap:wrap; gap:12px;}
.page-title{font-family:var(--display); font-size:19px; font-weight:700;}
.page-sub{font-family:var(--mono); font-size:11px; color:var(--text-faint); margin-top:4px;}
.page-refresh{font-family:var(--mono); font-size:10.5px; color:var(--text-dim); display:flex; align-items:center; gap:6px;}
.page-refresh .dot{width:5px; height:5px; border-radius:50%; background:var(--green);}

.subtabs{display:flex; align-items:center; gap:6px; padding:10px 24px; background:rgba(5,8,6,.6); border-bottom:1px solid var(--border-soft); overflow-x:auto; flex-shrink:0;}
.subtabs button{all:unset; cursor:pointer; font-family:var(--mono); font-size:11px; font-weight:500; color:var(--text-faint); padding:9px 20px; border-radius:6px; white-space:nowrap;}
.subtabs button.active{background:var(--panel); color:var(--text); border:1px solid var(--border);}
.subtabs button:not(.active):hover{color:var(--text-dim);}

/* ---------- Radar Sweep terminal status header ---------- */
.status-box{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:18px; margin-bottom:24px;}
.status-top{display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; font-family:var(--mono); font-size:10.5px; color:var(--text-faint);}
.status-top .prompt{color:var(--green);}
.status-top .prompt .path{color:var(--blue);}
.status-top .links{display:flex; gap:14px;}
.status-top .links span{cursor:pointer;}
.status-top .links span:hover{color:var(--text-dim);}
.status-dials{display:flex; justify-content:space-around; flex-wrap:wrap; gap:14px;}
.status-dial{text-align:center;}
.status-ring{width:76px; height:76px; position:relative; margin:0 auto 8px; border-radius:50%; overflow:hidden;}
.status-ring::before{content:''; position:absolute; inset:0; background:conic-gradient(from 0deg, rgba(57,255,136,.4), transparent 35%); animation:status-spin 3s linear infinite;}
.status-ring.blue::before{background:conic-gradient(from 0deg, rgba(75,224,255,.4), transparent 35%);}
.status-ring.faint::before{background:conic-gradient(from 0deg, rgba(60,92,76,.4), transparent 35%); animation-duration:6s;}
@keyframes status-spin{to{transform:rotate(360deg);}}
.status-ring-in{position:absolute; inset:6px; background:var(--panel); border-radius:50%; border:1px solid var(--border-soft); display:flex; flex-direction:column; align-items:center; justify-content:center;}
.status-ring-in .num{font-family:var(--display); font-size:14px; font-weight:700;}
.status-ring-in .sub{font-family:var(--mono); font-size:7.5px; color:var(--text-faint); margin-top:2px; letter-spacing:.04em;}
.status-dial .l{font-family:var(--mono); font-size:9px; color:var(--text-faint); letter-spacing:.05em; text-transform:uppercase;}

.section-row{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:14px;}
.section-title{font-family:var(--mono); font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--text-faint);}
.section-meta{font-family:var(--mono); font-size:10.5px; color:var(--text-faint);}

.disclaimer{font-family:var(--mono); font-size:10.5px; color:var(--text-faint); line-height:1.75; padding:24px 0 4px; border-top:1px solid var(--border-soft); margin-top:26px;}

/* ============================================================
   MARKET FEED — exact card styling from the approved
   design-4-detailed-feed.html reference. Horizontal grid on
   wider screens; collapses to a single scrolling column only
   on phone-sized viewports.
   ============================================================ */
.feed{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; align-items:start;}
@media(max-width:640px){
  .feed{grid-template-columns:1fr;}
}
.pcard{background:var(--panel); border:1px solid var(--border); border-radius:14px; padding:26px 24px 28px; transition:border-color .15s;}
.pcard:hover{border-color:#20402f;}
.pcard-head{display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:26px;}
.pcard-name{font-family:var(--display); font-size:17px; font-weight:700;}
.pcard-sym{font-family:var(--mono); font-size:10px; color:var(--text-faint); margin-top:3px;}
.pcard-live{display:flex; align-items:center; gap:6px; font-family:var(--mono); font-size:10.5px; color:var(--green); letter-spacing:.03em;}
.pcard-live .d{width:6px; height:6px; border-radius:50%; background:var(--green); box-shadow:0 0 6px var(--green); animation:pcard-pulse 1.4s infinite;}
@keyframes pcard-pulse{50%{opacity:.35;}}

.pcard-body{display:flex; flex-direction:column; align-items:center; text-align:center; gap:14px;}

.wait-ring{width:130px; height:130px; border-radius:50%; border:2px dashed var(--blue-dim); display:flex; align-items:center; justify-content:center; position:relative;}
.wait-ring .spin{width:44px; height:44px; border-radius:50%; border:2px solid var(--border); border-top-color:var(--blue); animation:pcard-spin 1.6s linear infinite;}
@keyframes pcard-spin{to{transform:rotate(360deg);}}

.reveal-circle{width:130px; height:130px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-size:46px; font-weight:700; color:#031008;}
.reveal-circle.green{background:radial-gradient(circle at 35% 30%, #7CFFB0, #1B9C55); box-shadow:0 0 40px rgba(57,255,136,.28);}
.reveal-circle.blue{background:radial-gradient(circle at 35% 30%, #9FEEFF, #1E8FB0); color:#031420; box-shadow:0 0 40px rgba(75,224,255,.24);}
.reveal-circle.amber{background:radial-gradient(circle at 35% 30%, #FFE0A0, #B37A12); color:#2B1900; box-shadow:0 0 40px rgba(255,194,75,.24);}

.pcard-conf{font-family:var(--mono); font-size:15px; font-weight:700; color:var(--amber);}
.pcard-timer{font-family:var(--display); font-size:17px; font-weight:700; letter-spacing:.03em; color:var(--text);}
.pcard-timer.wait-label{color:var(--text-dim); font-family:var(--mono); font-size:13px; font-weight:600; letter-spacing:.05em;}

.pcard-action{margin-top:8px; width:100%; max-width:280px; background:var(--green); color:#031008; font-family:var(--mono); font-weight:700; font-size:13px; letter-spacing:.03em; padding:13px; border:none; border-radius:8px; cursor:pointer;}
.pcard-action:hover{box-shadow:0 0 22px rgba(57,255,136,.4);}
.pcard-action.pending{background:transparent; border:1px solid var(--border); color:var(--text-faint); cursor:default; box-shadow:none;}

/* ============================================================
   PROFILE PANEL
   ============================================================ */
.overlay{position:fixed; inset:0; background:transparent; z-index:200; display:none;}
.overlay.open{display:block;}
.panel{position:fixed; top:64px; right:20px; width:min(300px,90vw); max-height:80vh; background:var(--panel); border:1px solid var(--border); border-radius:12px; box-shadow:0 20px 60px rgba(0,0,0,.5); z-index:201; opacity:0; transform:translateY(-8px); pointer-events:none; transition:opacity .18s ease, transform .18s ease; display:flex; flex-direction:column; overflow:hidden;}
.panel.open{opacity:1; transform:translateY(0); pointer-events:auto;}
.panel-head{display:flex; align-items:center; justify-content:space-between; padding:20px 22px; border-bottom:1px solid var(--border-soft);}
.panel-head-id{display:flex; align-items:center; gap:10px;}
.panel-avatar{width:34px; height:34px; border-radius:50%; background:var(--panel2); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:12px; font-weight:700;}
.panel-head-id .name{font-family:var(--sans); font-size:13px; font-weight:600;}
.panel-head-id .sub{font-family:var(--mono); font-size:10px; color:var(--text-faint); margin-top:1px;}
.panel-close{all:unset; cursor:pointer; color:var(--text-faint); padding:6px;}
.panel-close:hover{color:var(--text);}
.panel-tabs{display:flex; flex-direction:column; padding:10px 0; gap:0; border-bottom:1px solid var(--border-soft);}
.panel-tabs button{all:unset; cursor:pointer; font-family:var(--mono); font-size:11px; color:var(--text-faint); padding:12px 22px; border-left:2px solid transparent; width:100%; box-sizing:border-box;}
.panel-tabs button.active{color:var(--text); border-left-color:var(--green); background:var(--panel2);}
.panel-body{flex:1; overflow-y:auto; padding:20px 22px;}
.panel-block-title{font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-faint); margin:18px 0 10px;}
.panel-block-title:first-child{margin-top:0;}
.field-row{display:flex; align-items:center; justify-content:space-between; padding:11px 0; border-bottom:1px solid var(--border-soft);}
.field-row .k{font-size:12.5px; color:var(--text);}
.field-row .v{font-family:var(--mono); font-size:11.5px; color:var(--text-dim);}
.switch{width:32px; height:18px; background:var(--panel2); border:1px solid var(--border); border-radius:20px; position:relative; cursor:pointer;}
.switch::after{content:''; position:absolute; width:12px; height:12px; background:var(--text-faint); border-radius:50%; top:2px; left:2px; transition:.15s;}
.switch.on{background:rgba(57,255,136,.12); border-color:var(--green-dim);}
.switch.on::after{left:16px; background:var(--green);}
.history-row{display:flex; align-items:center; justify-content:space-between; padding:11px 0; border-bottom:1px solid var(--border-soft); font-size:12px;}
.history-row .s{font-family:var(--mono); font-size:10.5px;}
.history-row .s.won{color:var(--green);}
.history-row .s.lost{color:var(--red);}
.history-row .s.pending{color:var(--text-faint);}
.headroom{display:flex; align-items:center; gap:16px; padding:6px 0 18px;}
.headroom-ring{position:relative; width:76px; height:76px; flex-shrink:0;}
.headroom-ring svg{position:absolute; inset:0; transform:rotate(-90deg);}
.headroom-ring circle{fill:none; stroke-width:5;}
.headroom-ring .track{stroke:var(--border-soft);}
.headroom-ring .prog{stroke:var(--green); stroke-linecap:round;}
.headroom-num{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-size:18px; font-weight:700;}
.headroom-text .zone{font-family:var(--mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--green);}
.headroom-text .desc{font-size:12px; color:var(--text-dim); margin-top:4px; line-height:1.5;}

/* ============================================================
   TRADE MODAL
   ============================================================ */
.modal-overlay{position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:300; display:none; align-items:center; justify-content:center; padding:20px;}
.modal-overlay.open{display:flex;}
.modal{width:100%; max-width:360px; background:var(--panel); border:1px solid var(--border); border-radius:10px; overflow:hidden;}
.modal-head{padding:18px 20px; border-bottom:1px solid var(--border-soft);}
.modal-head .t{font-family:var(--display); font-size:14px; font-weight:700;}
.modal-head .s{font-family:var(--mono); font-size:10.5px; color:var(--text-faint); margin-top:3px;}
.modal-body{padding:16px 20px;}
.modal-row{display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px solid var(--border-soft); font-size:12.5px;}
.modal-row .k{color:var(--text-faint);}
.modal-row .v{font-family:var(--mono); color:var(--text); font-weight:600;}
.modal-actions{display:flex; gap:8px; padding:16px 20px 20px;}
.modal-actions .btn{margin:0;}

@media(max-width:640px){
  .status-dials{gap:20px;}
  .pcard{padding:22px 18px 24px;}
}

/* Settings panel — theme toggle + logout */
.settings-block { display: flex; flex-direction: column; gap: 4px; }
.settings-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 0;
  border-top: 1px solid var(--border-soft);
}
.settings-row:first-child { border-top: none; padding-top: 0; }
.settings-row-label { display: flex; flex-direction: column; gap: 3px; }
.settings-row-title { font-family: var(--sans); font-size: 13px; font-weight: 600; color: var(--text); }
.settings-row-sub { font-family: var(--mono); font-size: 10.5px; color: var(--text-faint); }

.theme-toggle-btn {
  width: 38px; height: 38px;
  border-radius: 9px;
  background: var(--panel2);
  border: 1px solid var(--border);
  color: var(--text);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
}
.theme-toggle-btn:hover { border-color: var(--green-dim); color: var(--green); }
.theme-toggle-btn:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }

/* ============================================================
   Mobile spacing tightening — the header/content/card paddings
   above are sized generously for desktop (22-26px). On narrow
   phone screens that eats a large share of the available width,
   contributing to a "zoomed in" feel even with text-size-adjust
   fixed. This trims padding (not font sizes) below 480px.
   ============================================================ */
@media (max-width: 480px) {
  .hdr { padding: 16px 16px; }
  .main-inner { padding: 16px 16px 40px; }
  .landing-card { padding: 20px 18px 18px; }
  .home-page { padding: 4px 0 16px; }
  .subtabs { padding: 8px 12px; gap: 2px; }
  .subtabs button { padding: 9px 12px; }
}
