/* Account settings. Sits on customer-dashboard-v3.css, which owns the shell,
   the header and the tokens. Only what this page adds is here.

   Two-column blocks: what the section is on the left, the controls on the right.
   The reading half never competes with the doing half, and on a phone the
   reading half simply comes first. */

.set-wrap{max-width:1180px;margin:0 auto;padding:0 20px 80px}
.set-block{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1fr);
  gap:clamp(24px,4vw,64px);padding:clamp(28px,3.4vw,48px) 0;
  border-bottom:1px solid var(--rs-hair)}
.set-block[hidden]{display:none}
.set-block.end{border-bottom:0}
.set-intro h2{margin:0 0 10px;font:700 21px/1.15 var(--rs-disp);letter-spacing:-.03em}
.set-intro p{margin:0;font:400 14px/1.65 var(--rs-ui);color:var(--rs-dim);max-width:34em}
.set-body{min-width:0}
.set-note{margin:12px 0 0;font:400 12.5px/1.6 var(--rs-ui);color:var(--rs-dim);max-width:38em}
.set-note a{color:var(--rs-signal)}
.set-status{margin:14px 0 0;min-height:1.2em;font:400 12.5px/1.5 var(--rs-mono);
  color:var(--rs-dim)}
.set-status.bad{color:#F0A28A}

/* ---------- what speaks ---------- */
.stream-list{display:grid;gap:1px;background:var(--rs-hair);
  border-top:1px solid var(--rs-hair);border-bottom:1px solid var(--rs-hair)}
.stream{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;
  align-items:center;background:var(--rs-ink);padding:13px 4px}
.stream input{width:17px;height:17px;accent-color:var(--rs-signal);cursor:pointer}
.stream label{cursor:pointer;min-width:0}
.stream label b{display:block;font:600 14px/1.3 var(--rs-ui);color:var(--rs-cream)}
.stream label span{display:block;margin-top:2px;font:400 12px/1.4 var(--rs-ui);
  color:var(--rs-dim)}
.stream .state{font:500 9.5px/1 var(--rs-mono);letter-spacing:.14em;
  text-transform:uppercase;color:var(--rs-signal)}
.stream.off label b,.stream.off label span{color:var(--rs-dim)}
.stream.off .state{color:#7C8C82}

.rhythm{margin:26px 0 0;padding:0;border:0}
.rhythm legend{padding:0;font:500 9.5px/1 var(--rs-mono);letter-spacing:.16em;
  text-transform:uppercase;color:var(--rs-dim)}
.rhythm-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:8px;margin-top:12px}
.rhythm-opt{text-align:left;cursor:pointer;background:transparent;
  border:1px solid var(--rs-line);border-radius:2px;padding:12px 14px;
  font:inherit;color:var(--rs-cream)}
.rhythm-opt b{display:block;font:600 13.5px/1.3 var(--rs-ui)}
.rhythm-opt span{display:block;margin-top:4px;font:400 11.5px/1.45 var(--rs-ui);
  color:var(--rs-dim)}
.rhythm-opt[aria-pressed=true]{border-color:var(--rs-signal);
  background:rgba(216,255,71,.07)}
.rhythm-opt[aria-pressed=true] b{color:var(--rs-signal)}

/* ---------- how you pay ---------- */
.term-lab{margin:0;font:500 9.5px/1 var(--rs-mono);letter-spacing:.16em;
  text-transform:uppercase;color:var(--rs-dim)}
.term-fig{margin:8px 0 0;font:400 14px/1.2 var(--rs-ui);color:var(--rs-dim)}
.term-fig b{font:700 38px/1 var(--rs-disp);letter-spacing:-.045em;color:var(--rs-cream);
  margin-right:8px}
.term-switch{margin-top:22px}
.term-go{cursor:pointer;border:0;border-radius:2px;padding:14px 22px;
  font:600 14.5px/1 var(--rs-ui);background:var(--rs-signal);color:var(--rs-ink)}
.term-go:hover{background:var(--rs-signal-hot,#E6FF7A)}
.term-go b{font-weight:700}

/* ---------- seats ---------- */
.seat-list{list-style:none;margin:0;padding:0;display:grid;gap:1px;
  background:var(--rs-hair);border-top:1px solid var(--rs-hair);
  border-bottom:1px solid var(--rs-hair)}
.seat{display:flex;align-items:center;justify-content:space-between;gap:16px;
  background:var(--rs-ink);padding:13px 4px}
.seat .who b{display:block;font:600 13.5px/1.3 var(--rs-ui);color:var(--rs-cream)}
.seat .who span{display:block;margin-top:2px;font:400 11.5px/1.4 var(--rs-mono);
  color:var(--rs-dim)}
.seat.pending .who b{color:var(--rs-dim)}
.seat-revoke{cursor:pointer;background:none;border:0;padding:0;font:inherit;
  font-size:11.5px;color:var(--rs-dim);text-decoration:underline;text-underline-offset:3px}
.seat-revoke:hover{color:#F0A28A}
.seat-add{margin-top:22px}
.seat-add label{display:block;margin-bottom:8px;font:500 9.5px/1 var(--rs-mono);
  letter-spacing:.16em;text-transform:uppercase;color:var(--rs-dim)}
.seat-field{display:flex;gap:8px;flex-wrap:wrap}
.seat-field input{flex:1 1 240px;min-width:0;border:1px solid var(--rs-line);
  background:rgba(255,255,255,.03);color:var(--rs-cream);border-radius:2px;
  padding:12px 14px;font:inherit;font-size:14px}
.seat-field input:focus{outline:2px solid var(--rs-signal);outline-offset:1px}
.seat-field button{cursor:pointer;border:1px solid var(--rs-line);border-radius:2px;
  background:transparent;color:var(--rs-cream);padding:12px 18px;
  font:600 13.5px/1 var(--rs-ui)}
.seat-field button:hover{border-color:var(--rs-signal);color:var(--rs-signal)}

/* ---------- leaving ----------
   The alternatives come first and the exit is last and plainly worded. This is
   an interception, not an obstacle: the last card says cancel and means it. */
.leave-options{display:grid;gap:1px;background:var(--rs-hair);
  border:1px solid var(--rs-hair)}
.leave{background:var(--rs-ink);padding:18px 20px}
.leave h3{margin:0 0 6px;font:700 15px/1.25 var(--rs-disp);letter-spacing:-.02em;
  color:var(--rs-cream)}
.leave p{margin:0 0 12px;font:400 13px/1.6 var(--rs-ui);color:var(--rs-dim);max-width:44em}
.leave-go{display:inline-block;cursor:pointer;background:none;border:0;padding:0;
  font:600 12.5px/1 var(--rs-ui);color:var(--rs-signal);text-decoration:underline;
  text-underline-offset:4px}
.leave-go:hover{color:var(--rs-signal-hot,#E6FF7A)}
.leave.last{background:rgba(255,255,255,.02)}
.leave.last .leave-go{color:var(--rs-dim)}
.leave.last .leave-go:hover{color:#F0A28A}

@media (max-width:820px){
  .set-block{grid-template-columns:minmax(0,1fr);gap:20px;
    padding:26px 0}
}
