/* GoSunlite additions on top of the egsolar.app look (site.css + look-ice.css, copied unchanged).
   Same tokens, same glass cards and pills. Only components egsolar.app never needed live here:
   service catalog, toggle chips, tabs, job cards, admin lists, dialogs. */

[hidden] { display: none !important; }

/* component colors: dark ("ice") values by default, light ("sun") values below */
:root {
  --acc: #86e9ff; --acc-ink: #86e9ff; --strong: #fff;
  --chip-border: rgba(255,255,255,.3); --chip-bg: rgba(255,255,255,.04); --chip-on-bg: rgba(134,233,255,.16);
  --tab-on-bg: rgba(255,255,255,.15); --tab-on-border: rgba(255,255,255,.7);
  --ok-c: #8ff3bd; --ok-b: rgba(124,242,176,.35); --warn-c: #f5d58a; --warn-b: rgba(245,213,138,.4); --bad-c: #ff9aa9; --bad-b: rgba(255,120,140,.35);
  --dlg-bg: #0e1c2a; --dlg-border: rgba(255,255,255,.15); --dlg-scrim: rgba(3,8,14,.7); --toast-bg: #fff; --toast-c: #000;
}
[data-look="sun"] {
  --acc: #00c4dc; --acc-ink: #00707f; --strong: #111;
  --chip-border: #c5d0cd; --chip-bg: #fff; --chip-on-bg: rgba(0,224,200,.14);
  --tab-on-bg: #111; --tab-on-border: #111;
  --ok-c: #0a6b4f; --ok-b: rgba(11,122,75,.35); --warn-c: #8a5a00; --warn-b: rgba(160,110,0,.35); --bad-c: #b3203a; --bad-b: rgba(179,32,58,.3);
  --dlg-bg: #fbfdfd; --dlg-border: rgba(0,0,0,.1); --dlg-scrim: rgba(235,248,246,.6); --toast-bg: #111; --toast-c: #fff;
}
[data-look="sun"] .tabs .pill[aria-selected="true"] { color: #fff; }
[data-look="sun"] .tabs .pill[aria-selected="true"] .count { background: var(--mint); color: #111; }
[data-look="sun"] .st.open, [data-look="sun"] .st.active { background: rgba(0,240,176,.12); }
[data-look="sun"] .st.claimed, [data-look="sun"] .st.contacted, [data-look="sun"] .st.scheduled { background: rgba(0,208,248,.12); }
[data-look="sun"] .st.pending, [data-look="sun"] .st.won { background: rgba(255,190,60,.14); }
[data-look="sun"] .toast.err { background: #b3203a; color: #fff; }
[data-look="sun"] dialog.sheet-dialog { box-shadow: 0 24px 80px rgba(0,60,70,.18); }

/* ---------- service catalog ---------- */
.svc-cat { scroll-margin-top: 96px; margin-bottom: 56px; }
.svc-cat-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.svc-cat-head .face { width: 52px; height: 52px; flex: none; }
.svc-cat-head h2 { font: 600 clamp(24px, 3vw, 32px)/1.15 var(--display); color: var(--text); margin: 0; }
.svc-cat-head p { margin: 4px 0 0; font-size: 16px; color: var(--t60); }
a.card.svc { display: flex; flex-direction: column; gap: 6px; padding-right: 64px; min-height: 132px; }
a.card.svc h3 { font-size: 19px; margin: 0; }
a.card.svc p { margin: 0; font-size: 15px; color: var(--t60); }
.tier .face { margin-bottom: 16px; }

/* ---------- toggle chips (multi select) ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { position: relative; display: inline-flex; }
.chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.chip span {
  display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px; border-radius: var(--pill);
  border: 1px solid var(--chip-border); background: var(--chip-bg); color: var(--t80); font-size: 15px; line-height: 1.2;
  transition: background .2s var(--ease), border-color .2s var(--ease);
}
.chip input:checked + span { background: var(--chip-on-bg); border-color: var(--acc); color: var(--strong); font-weight: 600; }
.chip input:checked + span::before { content: "✓"; margin-right: 6px; color: var(--acc-ink); }
.chip input:focus-visible + span { outline: 2px solid var(--acc); outline-offset: 2px; }
.chips.states .chip span { min-width: 52px; justify-content: center; padding: 0 10px; }
.chip-group { margin: 0 0 14px; }
.chip-group > p { margin: 0 0 8px; font: 600 14px/1.2 var(--ui); color: var(--t60); text-transform: uppercase; letter-spacing: .06em; }
.chip-tools { display: flex; gap: 8px; margin: 0 0 10px; flex-wrap: wrap; }

/* ---------- forms ---------- */
.form fieldset { border: 0; padding: 0; margin: 0; display: grid; gap: 18px; }
.form legend.h3 { font: 600 22px/1.25 var(--display); color: var(--text); margin: 0 0 4px; padding: 0; }
.form .step-label { font: 600 13px/1 var(--ui); color: var(--acc-ink); letter-spacing: .08em; text-transform: uppercase; margin: 0 0 6px; }
.row3 { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 16px; }
.done-panel { text-align: left; }
.done-panel .ref { font: 600 clamp(28px, 4vw, 40px)/1 var(--display); color: var(--strong); letter-spacing: .02em; margin: 6px 0 14px; }

/* ---------- tabs ---------- */
.tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 24px; }
.tabs .pill[aria-selected="true"] { background: var(--tab-on-bg); border-color: var(--tab-on-border); }
.tabs .count { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; margin-left: 2px; border-radius: 999px; background: var(--chip-on-bg); color: var(--strong); font-size: 13px; }

/* ---------- status chips ---------- */
.st { display: inline-flex; align-items: center; gap: 6px; font: 700 12px/1 var(--ui); letter-spacing: .04em; text-transform: uppercase; padding: 6px 9px; border-radius: 999px; border: 1px solid var(--chip-border); color: var(--t80); white-space: nowrap; }
.st::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.st.open, .st.active, .st.pending-ok { color: var(--ok-c); border-color: var(--ok-b); }
.st.claimed, .st.contacted, .st.scheduled { color: var(--acc-ink); border-color: var(--acc); }
.st.won { color: var(--warn-c); border-color: var(--warn-b); }
.st.pending { color: var(--warn-c); border-color: var(--warn-b); }
.st.cancelled, .st.lost, .st.rejected, .st.refunded, .st.paused, .st.denied { color: var(--bad-c); border-color: var(--bad-b); }

/* ---------- job cards and list rows ---------- */
.list { display: grid; gap: 12px; }
.item { padding: 20px; }
.item-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 8px; }
.item h3 { font: 600 20px/1.25 var(--display); color: var(--text); margin: 0; }
.item .where { font-size: 15px; color: var(--t60); margin: 4px 0 0; }
.item .problem { font-size: 15px; color: var(--t80); margin: 10px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.item .specs { margin: 12px 0 0; }
.item-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; align-items: center; }
.fee { font: 600 22px/1 var(--display); color: var(--strong); }
.fee small { display: block; white-space: nowrap; font: 500 12px/1.2 var(--ui); color: var(--t50); margin-top: 4px; text-align: right; }
.item.flash { border-color: var(--acc); box-shadow: 0 0 0 1px var(--acc) inset; }
.empty { padding: 32px 20px; text-align: center; color: var(--t60); }
.empty b { display: block; color: var(--text); font: 600 20px/1.3 var(--display); margin-bottom: 6px; }

.balance { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.balance b { font: 600 clamp(36px, 5vw, 52px)/1 var(--display); color: var(--strong); letter-spacing: -.02em; }
.balance span { color: var(--t60); }

.kv { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; font-size: 15px; margin: 0; }
.kv dt { color: var(--t60); }
.kv dd { margin: 0; color: var(--text); overflow-wrap: anywhere; }

.ledger-row { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 12px 0; border-top: 1px solid var(--hair); font-size: 15px; }
.ledger-row .amt { font-weight: 600; text-align: right; color: var(--text); }
.ledger-row .amt.minus { color: var(--bad-c); }
.ledger-row .amt.plus { color: var(--ok-c); }
.ledger-row .sub { grid-column: 1 / -1; color: var(--t50); font-size: 13px; }

.stat-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 28px; }
.stat-tiles .card { padding: 18px; }
.stat-tiles b { display: block; font: 600 30px/1 var(--display); color: var(--strong); margin-bottom: 6px; }
.stat-tiles span { font-size: 14px; color: var(--t60); }
.stat-tiles .card.hot b { color: var(--warn-c); }

.toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 16px; }
.toolbar .input { max-width: 280px; }

/* ---------- dialog ---------- */
dialog.sheet-dialog {
  width: min(560px, calc(100vw - 32px)); max-height: calc(100vh - 48px); overflow: auto; padding: 24px; border-radius: 16px;
  border: 1px solid var(--dlg-border); background: var(--dlg-bg); color: var(--t80);
}
dialog.sheet-dialog::backdrop { background: var(--dlg-scrim); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
dialog.sheet-dialog h3 { font: 600 22px/1.25 var(--display); color: var(--strong); margin: 0 0 10px; }
dialog.sheet-dialog .item-actions { justify-content: flex-end; }

.toast {
  position: fixed; left: 50%; bottom: 24px; transform: translate(-50%, 20px); opacity: 0; z-index: 90; pointer-events: none;
  background: var(--toast-bg); color: var(--toast-c); padding: 12px 18px; border-radius: 10px; font-size: 15px; font-weight: 600; max-width: calc(100vw - 32px);
  transition: opacity .25s var(--ease), transform .25s var(--ease);
}
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.toast.err { background: #ffd6dc; }

.callout-ice { padding: 16px 18px; border-radius: 12px; border: 1px solid var(--acc); background: var(--chip-on-bg); font-size: 15px; color: var(--t80); }
.callout-ice b { color: var(--strong); }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; overflow-wrap: anywhere; }

@media (max-width: 1024px) {
  .stat-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .tabs { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
  .tabs .pill { flex: none; }
  .item-actions .pill.sm { height: 40px; padding: 0 14px; }
  .brand small { white-space: nowrap; font-size: 11px; }
  .row3 { grid-template-columns: 1fr; }
  a.card.svc { min-height: 0; }
  .item { padding: 16px; }
  .kv { grid-template-columns: 1fr; gap: 2px; }
  .kv dd { margin-bottom: 8px; }
  .toolbar .input { max-width: none; flex: 1 1 100%; }
}
