/* MyHero self-serve CRM — shell, screens, components. Desktop: sidebar. Phone: header + tab bar. */
:root{--forest:#1d1d1f;--forest2:#2c2c2e;--teal:#0e6b57;--teal-d:#0a4f41;--lime:#0e6b57;--sand:#f5f5f7;--ink:#1d1d1f;--muted:#6e6e73;--line:#e5e5ea;--card:#fff;--hot:#b3462f;--warm:#8a5a00;--ok:#1f7a4d;--blue:#1f4f8a;--radius:16px;--side:232px;--top:60px}
*{box-sizing:border-box}
html{color-scheme:light;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--sand);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh}
a{color:var(--teal)}
button{font:inherit;cursor:pointer}
input,textarea,select{font:inherit;color:var(--ink)}
.hidden{display:none!important}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- app shell ---- */
.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}
.side{background:var(--forest);color:#e5e5ea;padding:18px 14px calc(env(safe-area-inset-bottom) + 14px);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:6px}
.logo{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:22px;letter-spacing:-.02em;color:#fff;text-decoration:none;display:flex;align-items:center;gap:8px;flex:none;padding:4px 8px 14px}
.logo .o{color:var(--lime)}.logo .lmark{transform-origin:50% 50%}
@keyframes keyturn{0%{transform:rotate(0)}45%{transform:rotate(-100deg) scale(1.08)}62%{transform:rotate(-88deg) scale(1.04)}100%{transform:rotate(0)}}
.lmark.turn{animation:keyturn .85s cubic-bezier(.4,0,.2,1)}
.side .grp{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#6e6e73;font-weight:600;padding:12px 10px 4px}
.side a.nl{display:flex;align-items:center;gap:10px;color:#e5e5ea;text-decoration:none;font-size:14px;font-weight:600;padding:9px 10px;border-radius:12px;position:relative}
.side a.nl:hover{background:rgba(255,255,255,.07)}
.side a.nl.on{background:rgba(255,255,255,.12);color:#fff}
.side a.nl i{font-style:normal;width:22px;text-align:center;font-size:17px;opacity:.9}
.side a.nl .cnt{margin-left:auto;font-size:12px;font-weight:600;background:var(--lime);color:var(--forest);border-radius:980px;padding:1px 7px;font-variant-numeric:tabular-nums}
.side a.nl .cnt.q{background:rgba(255,255,255,.14);color:#fff}
.side .spacer{flex:1}
.plancard{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:12px 12px 10px;margin-top:8px}
.plancard b{display:flex;align-items:center;justify-content:space-between;font-size:14px;color:#fff}
.plancard b .plan-pill{margin:0}
.plancard small{display:block;color:#aeaeb2;font-size:12px;margin-top:4px;line-height:1.4}
.plancard .bar{background:rgba(255,255,255,.12)}
.plancard .btn{margin-top:10px;width:100%;justify-content:center}
.plan-pill{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--lime);border:1px solid rgba(14,107,87,.5);border-radius:980px;padding:3px 8px;font-weight:600;white-space:nowrap}
.mainwrap{min-width:0}
.top{position:sticky;top:0;z-index:20;background:rgba(245,245,247,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);height:var(--top);display:flex;align-items:center;gap:12px;padding:0 22px}
.top h1.t{font-weight:400;font-size:21px;letter-spacing:-.01em;margin:0;flex:none}
.top .sub-t{color:var(--muted);font-size:14px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.top .spacer{flex:1}
.top .mlogo{display:none}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--lime);color:var(--forest);font-weight:600;display:inline-flex;align-items:center;justify-content:center;font-size:14px;flex:none;border:0}
main{max-width:1180px;margin:0 auto;padding:20px 22px 60px}
.view{display:none}.view.on{display:block;animation:vin .18s ease}
@keyframes vin{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:2px 0 16px}
.ph h1{font-weight:400;font-size:28px;letter-spacing:-.02em;line-height:1.1;margin:0;text-wrap:balance}
.ph p{color:var(--muted);margin:4px 0 0;font-size:14px}
.ph .acts{display:flex;gap:8px;flex-wrap:wrap}
h2{font-size:17px;margin:0;letter-spacing:-.01em}
.sub{color:var(--muted);margin:0 0 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.card + .card{margin-top:14px}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.card-h .kv{white-space:nowrap}
.grid2{display:grid;grid-template-columns:1.25fr .9fr;gap:14px;align-items:start}
@media(max-width:860px){.grid2{grid-template-columns:1fr}}
.stack>*+*{margin-top:14px}

/* ---- buttons, chips, forms ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:980px;border:1.5px solid var(--line);background:#fff;font-weight:600;color:var(--ink);text-decoration:none;white-space:nowrap;line-height:1.2;transition:background .12s,border-color .12s,transform .06s}
.btn:hover{border-color:#c7c7cc;background:#fafafa}
.btn:active{transform:translateY(1px)}
.btn.solid{background:var(--teal);color:#fff;border-color:var(--teal)}
.btn.solid:hover{background:var(--teal-d);border-color:var(--teal-d)}
.btn.lime{background:var(--lime);color:var(--forest);border-color:var(--lime)}
.btn.lime:hover{background:#0e6b57;border-color:#0e6b57}
.btn.sm{padding:7px 12px;font-size:14px}
.btn.xs{padding:5px 10px;font-size:12px}
.btn.quiet{border-color:transparent;color:var(--muted);font-weight:600;background:transparent}
.btn.quiet:hover{background:#ececf1;color:var(--ink)}
.btn.danger{color:var(--hot);border-color:#f0d6cf}
.btn.danger:hover{background:#fdf2ef}
.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0;align-items:center}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:980px;padding:6px 12px;font-size:14px;font-weight:600;color:#3a3a3c;white-space:nowrap}
.chip.on{background:var(--forest);color:#fff;border-color:var(--forest)}
.search{width:100%;padding:11px 14px 11px 38px;border:1.5px solid var(--line);border-radius:12px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235f6b65' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E") 12px 50%/18px no-repeat}
.search:focus,input:not([type=checkbox]):not([type=radio]):focus,textarea:focus,select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(14,107,87,.12)}
label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px;font-weight:600}
input,textarea,select.f{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff}
textarea{resize:vertical;min-height:44px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
@media(max-width:480px){.three{grid-template-columns:1fr 1fr}}
.check-l{display:flex;gap:10px;align-items:center;margin-top:12px;font-size:14px;color:var(--ink);font-weight:400}
.check-l input{width:auto;margin:0}
.actions{display:flex;gap:10px 12px;flex-wrap:wrap;margin:12px 0;align-items:center}
.actions.tight{margin:6px 0}
.ok{color:var(--teal);font-size:14px;font-weight:600}
.err{color:var(--hot);font-size:14px;margin-top:8px;min-height:1em}
.note-p{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.5}
.kv{font-size:14px;color:var(--muted)}
.kv b{color:var(--ink);font-weight:600}
.empty{color:var(--muted);padding:28px 12px;text-align:center}
.empty b{display:block;color:var(--ink);margin-bottom:4px;font-size:17px}
.empty .btn{margin-top:12px}
pre{background:var(--forest);color:var(--lime);padding:14px;border-radius:12px;font-size:12px;white-space:pre-wrap;word-break:break-all;margin:8px 0}

/* ---- KPI tiles + chart ---- */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 14px}
@media(max-width:640px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 14px 12px;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color .12s,transform .06s}
.kpi:hover{border-color:#c7c7cc}
.kpi b{display:block;font-size:28px;line-height:1;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.kpi span{display:block;font-size:12px;color:var(--muted);margin-top:6px}
.kpi.hot b{color:var(--hot)}
.bar{height:5px;background:#e5e5ea;border-radius:980px;margin-top:8px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--teal);border-radius:980px}
.chart{position:relative}
.chart svg{width:100%;height:auto;display:block}
.chart .tip{position:absolute;pointer-events:none;background:var(--forest);color:#fff;font-size:12px;padding:5px 8px;border-radius:8px;transform:translate(-50%,-115%);white-space:nowrap;opacity:0;transition:opacity .12s}
.chart .tip.on{opacity:1}

/* ---- lead rows ---- */
.row{display:flex;gap:12px;align-items:flex-start;padding:12px 6px;border-top:1px solid var(--line);cursor:pointer;background:none;border-left:0;border-right:0;border-bottom:0;width:100%;text-align:left;font:inherit;color:inherit;border-radius:0}
.row:first-of-type{border-top:0}
.row:hover{background:#fafafa}
.row.sel{background:#e4f0ec}
.ini{width:38px;height:38px;border-radius:50%;background:#e5e5ea;color:#3a3a3c;font-weight:600;font-size:14px;display:flex;align-items:center;justify-content:center;flex:none}
.ini.hot{background:#fdeee9;color:var(--hot)}.ini.warm{background:#e4f0ec;color:var(--teal)}
.row .b{flex:1;min-width:0}
.row .n{font-weight:600;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row .m{font-size:12px;color:var(--muted);margin-top:2px}
.row .s{font-size:14px;color:#3a3a3c;margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.score{display:inline-flex;align-items:center;font-size:12px;font-weight:600;border-radius:980px;padding:2px 8px;background:#f2f2f7;color:var(--muted);font-variant-numeric:tabular-nums}
.score.hot{background:#fdeee9;color:var(--hot)}.score.warm{background:#e4f0ec;color:var(--teal)}
.stage{display:inline-flex;font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;border-radius:980px;padding:2px 8px;background:#f2f2f7;color:#515154}
.stage.new{background:#e7f0fb;color:var(--blue)}.stage.contacted{background:#e4f0ec;color:var(--teal)}.stage.qualified{background:#e4f0ec;color:var(--ok)}.stage.viewing{background:#fff4dc;color:var(--warm)}.stage.offer{background:#f3e8ff;color:#5b2d9c}.stage.won{background:var(--lime);color:var(--forest)}.stage.lost{background:#f0f0f0;color:#777}
.due{font-size:12px;color:var(--hot);font-weight:600}
.due.ok{color:var(--muted);font-weight:600}

/* ---- leads two-pane + detail ---- */
.leads{display:grid;grid-template-columns:400px 1fr;gap:14px;align-items:start}
@media(max-width:900px){.leads{grid-template-columns:1fr}}
.listcard{padding:4px 8px}
.detail{position:sticky;top:calc(var(--top) + 14px)}
@media(max-width:900px){
  .detail{position:fixed;inset:0;z-index:30;background:var(--sand);overflow-y:auto;padding:0 14px 120px;display:none}
  .detail.open{display:block}
  .detail .back{position:sticky;top:0;z-index:2;background:var(--sand);padding:12px 0 8px;margin:0 -14px 6px;padding-left:14px}
}
@media(min-width:901px){.detail .back{display:none}}
.dhead{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.dhead h2{font-weight:400;font-size:21px;letter-spacing:-.02em;margin:0}
.dhead .ini{width:44px;height:44px;font-size:17px}
select.stage-sel{padding:8px 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;font-weight:600;font-size:14px;width:auto}
.dsec{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.dsec h3{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 8px;display:flex;align-items:center;gap:8px}
.quote{border-left:3px solid var(--lime);padding:6px 12px;color:#3a3a3c;white-space:pre-wrap;font-size:14px}
.draft{background:var(--sand);border-radius:12px;padding:12px 14px;font-size:14px;white-space:pre-wrap}
.draft b{display:block;margin-bottom:4px}
.flags{font-size:12px;color:var(--warm);margin:6px 0 0}.flags li.sys{color:var(--muted)}
.summary{margin:8px 0 0;font-size:14px}
.notes .note{padding:8px 0;border-top:1px solid var(--line);font-size:14px;white-space:pre-wrap}
.notes .note:first-child{border-top:0}
.notes .note small{display:block;color:var(--muted);font-size:12px;margin-bottom:2px}
.notes .note.sys{color:var(--muted);font-size:14px;font-style:italic}
.notes .note.out,.notes .note.reply{border-top:0;border-radius:12px;padding:8px 10px;margin:6px 0}
.notes .note.out{background:var(--sand)}
.notes .note.reply{background:#e4f0ec}
.notes .note .who{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-weight:600;margin-bottom:2px}
.notes .note.out .who{color:var(--muted)}
.thread{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow-y:auto;margin:6px 0;padding:8px;background:var(--sand);border-radius:12px}
.thread .m{max-width:86%;padding:8px 11px;border-radius:12px;font-size:14px;line-height:1.45;white-space:pre-wrap}
.thread .m.me{align-self:flex-end;background:var(--teal);color:#fff}.thread .m.them{align-self:flex-start;background:#fff;border:1px solid var(--line)}
.thread .m small{display:block;font-size:12px;opacity:.7;margin-top:2px}
.inline-form{background:var(--sand);border-radius:12px;padding:12px;margin:8px 0}
.scoring{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:14px}
.scoring i{width:14px;height:14px;border:2px solid #d1d1d6;border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---- pipeline ---- */
.pipe{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);gap:10px;overflow-x:auto;padding-bottom:10px;-webkit-overflow-scrolling:touch}
.col{background:#f2f2f7;border-radius:12px;padding:10px;min-height:220px;transition:background .12s}
.col.over{background:#d3e6df;outline:2px dashed var(--teal);outline-offset:-2px}
.col h3,.col .colh{margin:2px 4px 8px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#515154;display:flex;justify-content:space-between}
.pcard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px;cursor:grab;width:100%;text-align:left;font:inherit;color:inherit;display:block}
.pcard:active{cursor:grabbing}
.pcard.drag{opacity:.45}
.pcard b{display:block;font-size:14px}
.pcard small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.pcard .hint{display:none;margin-top:6px}
@media(max-width:900px){.pcard{cursor:pointer}}

/* ---- setup checklist / locks / tiles ---- */
.check{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.check:first-of-type{border-top:0}
.check i{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-style:normal;font-size:12px;flex:none}
.check.done i{background:var(--teal);border-color:var(--teal);color:#fff}
.check.done span{color:var(--muted);text-decoration:line-through}
.check button{margin-left:auto}
.locks{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media(max-width:640px){.locks{grid-template-columns:repeat(2,1fr)}}
.locks .lock{border:1.5px dashed var(--line);border-radius:12px;padding:12px;text-align:left;background:#fff;font:inherit;color:var(--ink);cursor:pointer}
.locks .lock:hover{border-color:var(--teal)}
.locks .lock b{display:block;font-size:14px}
.locks .lock small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.locks .lock::before{content:"🔒 Pro";font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-weight:600;display:block;margin-bottom:4px}
.locks .lock.prem::before{content:"🔒 Premium"}
.locks .lock.dev::before{content:"🔒 Developers"}
.tile{border:1.5px solid var(--line);border-radius:12px;padding:12px;text-align:left;background:#fff;text-decoration:none;color:var(--ink);display:block}
.tile:hover{border-color:var(--teal)}
.tile b{display:block;font-size:14px}
.tile small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.tile::before{content:"✓ Included";font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-weight:600;display:block;margin-bottom:4px}

/* ---- listings ---- */
.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.lcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.lcard .img{aspect-ratio:4/3;background:#e5e5ea center/cover no-repeat;position:relative}
.lcard .img .st{position:absolute;left:8px;top:8px;background:var(--forest);color:#fff;font-size:12px;font-weight:600;border-radius:980px;padding:3px 8px}
.lcard .img .src{position:absolute;right:8px;top:8px;background:rgba(255,255,255,.92);color:var(--ink);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-radius:8px;padding:2px 7px}
.lcard .bd{padding:10px 12px 6px}.lcard .bd b{display:block;font-size:17px}.lcard .bd span{display:block;font-size:14px;color:#3a3a3c}.lcard .bd small{display:block;color:var(--muted);margin-top:2px}
.lcard .ac{display:flex;gap:10px;flex-wrap:wrap;padding:4px 12px 12px}
.lcard .ac a,.lcard .ac button{font:inherit;font-size:12px;font-weight:600;color:var(--teal);background:none;border:0;padding:0;cursor:pointer;text-decoration:none}
.lcard .ac .del{color:var(--hot)}

/* ---- pages & QR ---- */
.pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.pagecard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:6px}
.pagecard .ico{width:38px;height:38px;border-radius:12px;background:#e4f0ec;color:var(--teal);display:inline-flex;align-items:center;justify-content:center;font-size:17px;margin-bottom:4px}
.pagecard b{font-size:17px}
.pagecard span{font-size:14px;color:var(--muted);line-height:1.45;flex:1}
.pagecard .actions{margin:8px 0 0}

/* ---- tables ---- */
.otable{width:100%;border-collapse:collapse;font-size:14px;min-width:720px}
.otable th,.otable td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}
.otable th{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.otable td.n{font-variant-numeric:tabular-nums;text-align:right}
.otable select{padding:5px 8px;border:1.5px solid var(--line);border-radius:8px;background:#fff;font-size:14px}
.dealcards{display:none}
@media(max-width:700px){
  .dealtable{display:none}.dealcards{display:grid;gap:10px}
  .dealcard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}
  .dealcard b{display:block;font-size:17px}
  .dealcard .dates{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;margin-top:8px;font-size:14px}
  .dealcard .dates span{color:var(--muted);font-size:12px;display:block}
}

/* ---- settings tabs ---- */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:10px 12px;font-weight:600;color:var(--muted);white-space:nowrap;margin-bottom:-1px}
.tabs button.on{color:var(--ink);border-bottom-color:var(--teal)}
.tabpane{display:none}.tabpane.on{display:block}

/* ---- sheets, toasts, progress ---- */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:40}
.sheet{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(560px,100%);max-height:88vh;overflow-y:auto;background:#fff;border-radius:18px 18px 0 0;padding:18px 18px calc(env(safe-area-inset-bottom) + 18px);z-index:41;animation:sheetin .2s ease}
@keyframes sheetin{from{transform:translate(-50%,16px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
@media(min-width:700px){.sheet{bottom:auto;top:50%;transform:translate(-50%,-50%);border-radius:18px}@keyframes sheetin{from{transform:translate(-50%,-48%);opacity:0}to{transform:translate(-50%,-50%);opacity:1}}}
.sheet h2{font-size:17px;margin-bottom:6px}
.sheet.pv{width:min(720px,100%)}
.toasts{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 84px);transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(420px,calc(100% - 32px))}
@media(min-width:901px){.toasts{bottom:24px}}
.toast{background:var(--forest);color:#fff;padding:10px 14px;border-radius:12px;font-size:14px;font-weight:600;box-shadow:0 10px 30px rgba(0,0,0,.3);animation:tin .2s ease;max-width:100%}
.toast.err{background:var(--hot)}
.toast.ok{background:var(--teal)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.progress{position:fixed;left:0;top:0;height:3px;background:var(--lime);z-index:70;width:0;opacity:0;transition:width .3s ease,opacity .3s}
.progress.on{opacity:1}

/* ---- paywall previews ---- */
.pv-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.pv-head h2{font-weight:400;font-size:21px;letter-spacing:-.02em;margin:0}
.pv-tag{color:var(--muted);margin:0 0 12px}
.pv-mock{background:var(--sand);border:1px solid var(--line);border-radius:12px;padding:14px;margin:0 0 12px;overflow:hidden;font-size:14px;color:#3a3a3c}
.pv-mock .win{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.pv-mock .win+.win{margin-top:8px}
.pv-mock .lbl{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:4px}
.pv-mock .hl{font-weight:600;color:var(--ink)}
.pv-mock .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pv-mock .row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pv-mock .stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.pv-mock .stat b{display:block;font-size:21px;font-weight:600;letter-spacing:-.02em}
.pv-mock .stat span{font-size:12px;color:var(--muted)}
.pv-mock .pill{display:inline-block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;border-radius:8px;padding:2px 7px;background:#e4f0ec;color:var(--teal)}
.pv-mock .pill.hot{background:#fdeee9;color:var(--hot)}.pv-mock .pill.warn{background:#fff4dc;color:var(--warm)}.pv-mock .pill.lime{background:var(--lime);color:var(--forest)}
.pv-mock .steps{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pv-mock .step{background:#fff;border:1px solid var(--line);border-radius:980px;padding:5px 10px;font-weight:600;font-size:12px}
.pv-mock .step.on{background:var(--teal);color:#fff;border-color:var(--teal)}
.pv-mock .bubble{max-width:82%;padding:8px 11px;border-radius:12px;background:#fff;border:1px solid var(--line);margin:4px 0}
.pv-mock .bubble.me{margin-left:auto;background:var(--teal);color:#fff;border-color:var(--teal)}
.pv-mock .grid7{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.pv-mock .day{background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 4px;text-align:center;font-size:12px}
.pv-mock .day.on{background:var(--lime);border-color:var(--lime);color:var(--forest);font-weight:600}
.pv-mock .homes{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}
.pv-mock .home{aspect-ratio:1;border-radius:8px;background:#b0cfc3}
.pv-mock .home.held{background:#ffd98a}.pv-mock .home.sold{background:#d1d1d6}
.pv-mock .qr{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;width:88px}
.pv-mock .qr i{aspect-ratio:1;background:var(--forest);border-radius:8px}.pv-mock .qr i.o{background:transparent}
.pv-mock .field{background:#fff;border:1.5px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12px;color:var(--muted)}
.pv-mock .field.ai{border-color:var(--teal);color:var(--ink)}
.pv-mock .field.you{border-color:var(--warm)}
.pv-mock .imgcard{border-radius:12px;padding:14px;color:#fff;background:linear-gradient(135deg,#1d1d1f,#0e6b57 70%,#0e6b57);min-height:110px;display:flex;flex-direction:column;justify-content:flex-end}
.pv-mock .imgcard b{font-size:17px;line-height:1.15}
.pv-mock .imgcard small{opacity:.85}
.pv-mock .gal{display:grid;grid-template-columns:2fr 1fr 1fr;gap:6px}
.pv-mock .gal div{border-radius:8px;min-height:44px;background:linear-gradient(135deg,#e5e5ea,#c7c7cc)}
.pv-mock .gal div:first-child{grid-row:span 2;min-height:96px;position:relative}
.pv-mock .gal div:first-child::after{content:"▶ video · 3D";position:absolute;left:8px;bottom:6px;font-size:12px;font-weight:600;color:#fff;background:rgba(0,0,0,.7);padding:2px 7px;border-radius:980px}
.pv-list{padding-left:18px;margin:0 0 14px}
.pv-list li{margin:3px 0}
.pv-cta{display:flex;gap:8px;flex-wrap:wrap}

/* ---- auth ---- */
.auth{max-width:440px;margin:30px auto 0}
.auth h1{text-align:center;font-weight:400;font-size:34px;letter-spacing:-.02em;line-height:1.1;margin:6px 0 4px}
.auth .sub{text-align:center}
.auth .btn{width:100%}
.or{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;margin:16px 0;text-transform:uppercase;letter-spacing:.12em}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
.code{font-size:28px;letter-spacing:.3em;text-align:center;font-weight:600}
body.authing .side,body.authing .tabbar,body.authing .top .avatar,body.authing .top .addbtn{display:none!important}
body.authing .shell{grid-template-columns:1fr}
body.authing .top .mlogo{display:flex}

/* ---- tab bar (phones) ---- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:25;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:none;justify-content:space-around;padding:6px 6px calc(env(safe-area-inset-bottom) + 6px)}
.tabbar a{flex:1;text-align:center;text-decoration:none;color:var(--muted);font-size:12px;font-weight:600;padding:4px 0;position:relative}
.tabbar a b{display:block;font-size:21px;line-height:1.1}
.tabbar a.on{color:var(--teal)}
.tabbar a .dot{position:absolute;top:2px;left:calc(50% + 10px);min-width:16px;height:16px;border-radius:980px;background:var(--hot);color:#fff;font-size:12px;line-height:16px;padding:0 4px}
.morelist{display:grid;gap:8px}
.morelist a{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;text-decoration:none;color:var(--ink);font-weight:600}
.morelist a i{font-style:normal;width:34px;height:34px;border-radius:12px;background:#e4f0ec;color:var(--teal);display:inline-flex;align-items:center;justify-content:center;font-size:17px}
.morelist a small{display:block;color:var(--muted);font-weight:400;font-size:12px;margin-top:1px}
.morelist a .chev{margin-left:auto;color:var(--muted)}
@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{display:none}
  .top{background:var(--forest);color:#f2f2f7;border-bottom:0;padding:calc(env(safe-area-inset-top) + 8px) 14px 8px;height:auto;gap:10px}
  .top h1.t,.top .sub-t{display:none}
  .top .mlogo{display:flex;padding:0;font-size:21px}
  .tabbar{display:flex}
  main{padding:16px 14px 110px}
  .ph h1{font-size:28px}
  .card{padding:16px 14px}
}
@media(max-width:380px){.top .addbtn{padding:7px 11px;font-size:14px}}

/* lead header on narrow screens: name gets the row, the stage select drops below */
@media(max-width:600px){.dhead{gap:10px}.dhead h2{font-size:21px}.dhead>div{flex:1 1 180px}.dhead .stage-sel{flex-basis:100%}}

/* ---- judge 1 fixes: reply-first sheet, tap targets, phone pipeline, settings tabs, listing photos ---- */
.detail .back{display:flex;align-items:center;gap:8px}
.detail .back .backname{font-weight:600;font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(min-width:901px){.detail .back{display:none}}
.dsec.replied{border-top:0;margin-top:14px;padding:12px 14px;background:#e4f0ec;border-radius:12px}
.dsec.replied h3{color:var(--teal)}
.quote.reply{border-left-color:var(--teal);background:#fff;border-radius:0 10px 10px 0;padding:8px 12px}
ul.flags{margin:8px 0 0;padding-left:18px;font-size:12px;color:var(--warm);line-height:1.5}
ul.flags li{margin:2px 0}
details.fold{margin-top:12px}
details.fold summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;list-style:none;display:flex;align-items:center;gap:6px}
details.fold summary::before{content:'›';font-size:17px;transition:transform .15s}
details.fold[open] summary::before{transform:rotate(90deg)}
details.fold summary::-webkit-details-marker{display:none}
details.fold > .draft{margin-top:8px}
.pipe.narrow{display:block;overflow:visible}
.stagechips{margin:0 0 10px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;scrollbar-width:none}
.stagechips::-webkit-scrollbar{display:none}
.lcard .img.none{aspect-ratio:auto;min-height:88px;background:repeating-linear-gradient(135deg,#f2f2f7 0 12px,#e5e5ea 12px 24px);display:flex;align-items:center;justify-content:center}
.lcard .img.none .addph{font:inherit;font-size:12px;font-weight:600;color:var(--teal);background:#fff;border:1.5px solid var(--line);border-radius:980px;padding:8px 14px;cursor:pointer}
.lcard .ac a,.lcard .ac button{padding:8px 10px;border-radius:980px;background:#f2f2f7;font-size:12px;min-height:34px;display:inline-flex;align-items:center}
.lcard .ac.quiet-ac{padding-top:0}
.lcard .ac.quiet-ac .del{background:none;color:var(--muted);font-weight:600}
.lcard .ac.quiet-ac .del:hover{color:var(--hot)}
.danger-card{border-color:#f0d6cf}
@media(max-width:640px){
  .tabs{flex-wrap:nowrap;gap:2px 4px;overflow-x:auto}
  .tabs button{padding:9px 10px;font-size:14px}
}
@media(hover:none){
  .btn.sm{min-height:44px;padding:9px 14px}.btn.xs{min-height:40px;padding:7px 12px}
  .chip{min-height:44px;display:inline-flex;align-items:center}
  .top .addbtn{min-height:44px}
  .tabbar a{font-size:12px}
}
.toasts{bottom:calc(env(safe-area-inset-bottom) + 92px)}
@media(min-width:901px){.toasts{bottom:24px}}

/* ---- judge 2 fixes: header pattern, tokens, icons, filters, contrast, a11y ---- */
.skip{position:absolute;left:-999px;top:8px;z-index:100;background:var(--lime);color:var(--forest);padding:8px 12px;border-radius:8px;font-weight:600}
.skip:focus{left:8px}
.top{height:52px}
.top h1.t,.top .sub-t{display:none}
.side a.nl i{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center}
.side a.nl i svg{width:18px;height:18px}
.side a.nl:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.side .plancard .btn:focus-visible{outline:2px solid #fff}
.tabbar a b{height:24px;display:flex;align-items:center;justify-content:center}
.tabbar a b svg{width:22px;height:22px}
.plancard small{color:#d1d1d6}
.stage.lost{color:#6e6e73}
.score .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#aeaeb2;margin-right:6px}
.score.hot .dot{background:var(--hot)}.score.warm .dot{background:var(--teal)}
.locks .lock::before{content:"Pro";color:var(--teal);background:#e4f0ec;border-radius:8px;padding:2px 7px;display:inline-block}
.locks .lock.prem::before{content:"Premium";background:var(--lime);color:var(--forest)}
.locks .lock.dev::before{content:"Developers";background:#e7f0fb;color:var(--blue)}
.tile::before{content:"Included"}
.btn.xs{min-height:28px}.btn.sm{min-height:32px}.btn{min-height:40px}
.actions.tight{align-items:center}
#sendSubject{resize:none;overflow:hidden;min-height:44px;line-height:1.35}
/* Two allowances govern this account and only one of them was ever on screen. Whichever is nearly
   gone says so here, above the numbers, because being told everything is fine when it is not is
   what makes somebody stop trusting the rest of the screen. */
.dupwarn{margin:12px 0 0;padding:12px 14px;border-radius:12px;border:1.5px solid #e6c98a;background:#fdf6e6}
.dupwarn b{display:block;font-size:17px;color:var(--ink)}
.dupwarn span{display:block;margin-top:2px;font-size:14px;color:#515154;line-height:1.45}
.dupwarn .actions{margin:8px 0 0}
.aistate{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 14px;padding:13px 16px;border-radius:12px;border:1.5px solid #e6c98a;background:#fdf6e6}
.aistate.spent{border-color:#e0a3a0;background:#fdf0ef}
.aistate b{font-size:17px;color:var(--ink);flex:1 1 100%}
.aistate span{font-size:14px;color:#515154;flex:1 1 260px;line-height:1.45}
.aistate .btn{flex:none}
.pubmsg{margin:10px 0 0;font-size:17px;font-weight:600;color:#7a3a10;line-height:1.4}
/* The realtor who arrives from a photographer's pitch page has no account and no idea what this
   screen is. This tells her whose page it is and what claiming does, before the email box. */
.claimbox{margin:0 0 14px;padding:14px 16px;border-radius:12px;border:1.5px solid var(--line);background:#f5f5f7}
.claimbox b{display:block;font-size:17px;color:var(--ink);margin-bottom:4px}
.claimbox span{display:block;font-size:14px;color:#515154;line-height:1.45}
/* Answer is harmless; Book viewing puts an appointment in a real diary. Room between them. */
.dsec.replied .actions{gap:14px 12px}
.actions.tight input,.actions.tight textarea{min-height:40px;padding-top:8px;padding-bottom:8px}
.actions.tight textarea{resize:none}
.actions.tight .btn.sm{min-height:40px}
.chips{flex-wrap:wrap;overflow:visible;gap:8px;padding-right:4px}
.chips::-webkit-scrollbar{display:none}
.seg{display:inline-flex;flex:0 0 auto;flex-wrap:nowrap;gap:0;background:#fff;border:1.5px solid var(--line);border-radius:980px;padding:3px}
.seg .chip{border:0;background:transparent;padding:6px 12px;min-height:30px}
.seg .chip.on{background:var(--forest);color:#fff}
.chip.sel{padding-right:30px;appearance:none;-webkit-appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235f6b65' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 10px center/14px no-repeat}
#sort{margin-left:auto}
.link{background:none;border:0;padding:0;font:inherit;color:var(--teal);font-weight:600;cursor:pointer;text-decoration:underline}
details.fold.more{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
details.fold.more > summary{font-size:12px}
details.fold.more .dsec:first-of-type{border-top:0;padding-top:4px}
.pipe{grid-auto-columns:minmax(150px,1fr)}
.col{min-height:160px}
.pcard{padding:9px 10px}
.pcard b{font-size:14px}
.otable{min-width:0;font-size:12px}
.otable th,.otable td{white-space:normal;padding:8px 6px;vertical-align:top}
.sheet form > .actions:last-of-type,.sheet > .actions:last-child{position:sticky;bottom:calc(-1 * (env(safe-area-inset-bottom) + 18px));background:#fff;padding:12px 0;margin:8px 0 calc(-1 * (env(safe-area-inset-bottom) + 18px));border-top:1px solid var(--line)}
@media(min-width:700px){.sheet form > .actions:last-of-type,.sheet > .actions:last-child{bottom:-18px;margin-bottom:-18px}}
@media(min-width:901px){#moreNav{display:none}.top .plan-pill{display:none}}
@media(max-width:900px){.top{height:auto}}

/* the leads column must never grow past the viewport because its filter row scrolls */
.leads>*{min-width:0}
.listcard{min-width:0;overflow:hidden}

/* long notes, links and pasted tokens wrap instead of widening the card */
.notes .note,.quote,.summary,.row .s,.thread .m,.draft{overflow-wrap:anywhere;word-break:break-word}
.detail{min-width:0}
input[aria-invalid="true"]{border-color:var(--hot)}

/* ---- pages & QR editor ---- */
.qrcard{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.qr-box{flex:none;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;width:200px;height:200px}.qr-box img{width:100%;height:100%;display:block}
.qr-side{flex:1;min-width:240px}.qr-side h2{margin:0 0 4px}
.segq{display:inline-flex;flex-wrap:wrap;gap:4px;background:#f2f2f7;border-radius:12px;padding:4px}
.segq button{border:0;background:transparent;border-radius:12px;padding:7px 12px;font:inherit;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;min-height:34px}
.segq button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.pagerows{display:grid;gap:8px;margin-top:14px}
.pagerow{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;flex-wrap:wrap}
.pagerow .t{flex:1;min-width:180px}.pagerow b{display:block;font-size:14px}.pagerow span{font-size:14px;color:var(--muted);display:block}.pagerow .actions{margin:0}
.avatar-edit{display:flex;gap:14px;align-items:center;margin:4px 0 14px}
.avatar-pv{width:72px;height:72px;border-radius:50%;background:#f5f5f7 center/cover no-repeat;border:1px solid #d2d2d7;flex:none}
.avatar-edit b{font-size:14px}
.cover-edit{margin:0 0 4px}
.cover-pv{height:110px;border-radius:12px;background:#f5f5f7 center/cover no-repeat;border:1px solid #d2d2d7;display:flex;align-items:flex-end;padding:10px;color:#6e6e73;font-size:14px;margin-bottom:8px}
.cover-pv.has span{display:none}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin:6px 0 8px}.thumbs:empty{display:none}
.thumb{position:relative;aspect-ratio:4/3;border-radius:12px;background:#e5e5ea center/cover no-repeat;overflow:hidden}
.thumb button{position:absolute;right:4px;top:4px;width:26px;height:26px;border-radius:50%;border:0;background:rgba(0,0,0,.82);color:#fff;font-size:14px;cursor:pointer;line-height:1}
.switches{display:grid;gap:6px;margin:4px 0 0}
.switches label{display:flex;gap:10px;align-items:center;margin:0;padding:8px 10px;background:#f5f5f7;border-radius:12px;font-size:14px;color:var(--ink);font-weight:400;cursor:pointer}
.switches label input{width:auto;margin:0;flex:none}.switches label small{color:var(--muted);font-weight:400;display:block;font-size:14px;line-height:1.35}
.rev{background:#f5f5f7;border-radius:12px;padding:10px;margin:6px 0 0}.rev textarea,.rev input{margin:0 0 6px}.rev .actions{margin:0}
.lockrow{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#f5f5f7;border:1px dashed #c7c7cc;border-radius:12px;padding:10px 12px;margin:10px 0 0;cursor:pointer}
.lockrow b{display:block;font-size:14px}.lockrow span{font-size:14px;color:var(--muted)}.lockrow .pro-pill{color:var(--lime)}
.pro-pill{background:var(--forest);color:var(--lime);font-size:12px;font-weight:600;letter-spacing:.06em;border-radius:980px;padding:3px 9px;text-transform:uppercase;flex:none}
@media(max-width:700px){.qr-box{width:150px;height:150px}.qrcard{gap:14px}}

/* field grids never force the card wider than the phone: inputs shrink, three columns become two */
.two>*,.three>*{min-width:0}input,select.f,textarea{min-width:0}
@media(max-width:600px){.three{grid-template-columns:1fr 1fr}}

/* the editor column never takes its width from a chip row: it shrinks to the phone and rows wrap inside it */
.grid2>*,.stack{min-width:0}#svcChips{flex-wrap:wrap;overflow:visible}

/* ---- today queue, call outcome bar, deposits, import ---- */
.qitem{border-bottom:1px solid var(--line)}.qitem:last-child{border-bottom:0}.qitem .qacts{display:flex;gap:10px 12px;flex-wrap:wrap;padding:0 0 10px 58px}
.callbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fff8e6;border:1px solid #f1dfae;border-radius:12px;padding:10px 12px;margin:0 0 12px;font-size:14px;font-weight:600}
.deps{display:grid;gap:6px;margin:6px 0 8px}.dep{display:flex;gap:10px;align-items:center;margin:0;padding:8px 10px;background:#f5f5f7;border-radius:12px;font-size:14px;font-weight:400;color:var(--ink);cursor:pointer}.dep input{width:auto;margin:0}.dep small{margin-left:auto;color:var(--muted);font-weight:400}.dep.ok{background:#e4f0ec}.dep.ok small{color:var(--ok)}
.impmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:6px 0 10px}.impmap label{margin:0;padding:8px 10px;background:#f5f5f7;border-radius:12px;font-weight:600;color:var(--ink)}.impmap label span{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;overflow-wrap:anywhere}
.rel{display:block;font-size:12px;color:var(--muted);font-weight:400}
@media(max-width:700px){.dealcard .dates{font-size:14px}.dealcard .dates b{font-size:14px}}

/* ---- round two: controls, focus, targets, switches, the save bar ---- */
input[type=checkbox],input[type=radio]{accent-color:var(--teal);width:18px;height:18px;flex:0 0 auto;margin:0}
.switches label input{appearance:none;-webkit-appearance:none;width:44px;height:26px;border-radius:12px;background:#d1d1d6;position:relative;transition:background .15s;cursor:pointer}
.switches label input::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.switches label input:checked{background:var(--teal)}.switches label input:checked::after{left:21px}
.switches label input:disabled{opacity:.45;cursor:not-allowed}
input:not([type=checkbox]):not([type=radio]):focus,textarea:focus,select:focus{outline:none;box-shadow:0 0 0 3px rgba(14,107,87,.35)}
.nowrap{white-space:nowrap}
.thumb button{width:32px;height:32px;font-size:14px}
.savebar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:center;align-items:center;gap:12px;padding:10px 16px;background:rgba(0,0,0,.96);color:#fff;font-size:14px;font-weight:600;backdrop-filter:blur(6px)}
@media(max-width:700px){.savebar{bottom:64px}}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;margin:12px 0 4px}.dgrid div{background:#f5f5f7;border-radius:12px;padding:10px 12px}.dgrid b{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}.dgrid span{display:block;font-size:17px;font-weight:600;margin-top:2px}.dgrid small{display:block;font-size:12px;color:var(--teal);font-weight:600}.dgrid .soon span{color:var(--hot)}.dgrid .past span{color:var(--muted);font-weight:600}
@media(max-width:480px){.two>div:has(input[type=datetime-local]){grid-column:1/-1}}
@media(hover:none){.btn.sm{min-height:44px}.chip{min-height:44px}.avatar{width:40px;height:40px}.seg .chip{min-height:44px}}
@media(prefers-reduced-motion:reduce){.switches label input,.switches label input::after{transition:none}}
@media(max-width:700px){.dgrid{grid-template-columns:1fr 1fr}}

/* ---- round three: phone filter row, deposit rows, targets, the overlay title ---- */
@media(max-width:480px){.chips{flex-wrap:wrap;overflow:visible}.chips .seg{flex:0 0 auto}.chips .sel{flex:1 1 40%}}
.deprow{display:grid;grid-template-columns:1.3fr 1fr 1fr auto auto;gap:6px;align-items:center;margin:6px 0}.deprow input[type=text],.deprow input:not([type]){min-width:0}.deprow .check-l{font-size:12px;white-space:nowrap}
@media(max-width:600px){.deprow{grid-template-columns:1fr 1fr;grid-template-areas:"l l" "a d" "r x"}.deprow>input:nth-child(1){grid-area:l}.deprow>input:nth-child(2){grid-area:a}.deprow>input:nth-child(3){grid-area:d}.deprow>label{grid-area:r}.deprow>button{grid-area:x;justify-self:end}}
@media(hover:none){.btn.xs{min-height:44px;padding:8px 12px}.thumb button{width:44px;height:44px}}
@media(max-width:900px){.detail .back .backname{display:none}}

/* ---- round four: touch targets, the settings tab strip, the save bar beside the sidebar ---- */
@media(hover:none){.chip{min-height:44px;padding:10px 14px}.btn.sm,.sheet .btn,.stage-sel,select,.avatar{min-height:44px}.avatar{width:44px;height:44px}.deprow .check-l{min-height:44px;display:inline-flex;align-items:center}}
.tabs.more{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent)}
@media(min-width:901px){.savebar{left:var(--side)}}
.seqsteps{margin:6px 0 0;padding-left:18px;font-size:14px;color:#3a3a3c;line-height:1.5}.seqsteps li{margin:2px 0}.seqauto{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 16px;margin:6px 0 10px}.seqauto label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.seqauto select{margin:0}
@media(hover:none){.actions.tight .btn.sm,.segq button,.tabs button{min-height:44px}}
@media(min-width:901px){#v-settings .card{max-width:720px}}
@media(hover:none){#v-settings .actions .btn,.link{min-height:44px;display:inline-flex;align-items:center}}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.switch input:focus-visible+span,.check-l input:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
@media(min-width:1240px){#v-settings .tabpane{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}#v-settings .tabpane>.card:only-child{grid-column:1/-1;max-width:720px}}

/* Choosing the look of your public pages. Four swatches, each painted in its own colours so the
   choice is made by eye rather than by reading. The selected one is marked by a ring AND a tick,
   never by colour alone. */
.themes{border:0;margin:0 0 14px;padding:0}
.themes legend{padding:0;font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--muted,#6e6e73);margin-bottom:7px}
.themes .row{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:9px}
.themes label{position:relative;display:block;border:1.5px solid var(--line,#e5e5ea);border-radius:12px;padding:0;cursor:pointer;overflow:hidden;background:#fff}
.themes input{position:absolute;opacity:0;width:1px;height:1px}
.themes .sw{height:56px;display:flex;align-items:flex-end;gap:5px;padding:8px}
.themes .sw i{display:block;width:15px;height:15px;border-radius:50%;border:1px solid rgba(255,255,255,.28)}
.themes .tx{padding:8px 10px 10px;border-top:1px solid var(--line,#e5e5ea)}
.themes .tx b{display:block;font-size:14px}
.themes .tx span{display:block;font-size:14px;line-height:1.35;color:var(--muted,#6e6e73);margin-top:2px}
.themes label:hover{border-color:#aeaeb2}
.themes .sw.hd{background:#f5f5f7;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;padding:10px 12px}
.themes .sw.hd b{display:block;height:6px;width:62%;border-radius:8px;background:#1d1d1f}.themes .sw.hd b+b{height:4px;width:80%;background:#aeaeb2}
.themes .sw.hd i{display:none;border:0;background:#c7c7cc}
.themes .sw.hd-portrait i{display:block;width:22px;height:22px;border-radius:50%}.themes .sw.hd-cover i{display:block;align-self:stretch;width:auto;height:14px;border-radius:8px}
.themes label.off{opacity:.6;cursor:not-allowed}
.themes input:focus-visible+.sw{outline:2px solid var(--brand,#1d1d1f);outline-offset:-2px}
.themes input:checked~.tx b::after{content:" \2713";color:var(--brand,#1d1d1f);font-weight:600}
.themes label:has(input:checked){border-color:var(--brand,#1d1d1f);box-shadow:0 0 0 2px rgba(0,0,0,.22)}

/* Text for a screen reader only: a bare checkbox in a table tells a sighted person what it is by
   its column heading, and tells everyone else nothing at all. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Every control in a listing row is a real tap target. 42x35 is a miss on a phone, and a miss on
   the Edit button is a realtor jabbing at their own listing. */
@media(max-width:700px){.ac a,.lcard .ac button,.lcard .ac a{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:10px 14px}}
/* the list of an account with more leads than the app holds: a page at a time */
.listmore{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 8px 12px;color:#4a5750;font-size:14px;text-align:center}
.listmore .btn{min-height:44px;min-width:200px}
.listmore .btn[aria-disabled="true"]{cursor:progress}

/* ---- Paste and fill (Add listing): the box at the top of the sheet, the progress line, and the cue on filled boxes ---- */
.pastefill{margin:10px 0 14px;padding:12px 12px 8px;border:1.5px solid var(--line);border-radius:12px;background:#f5f5f7}
.pastefill label{margin:0 0 4px;color:var(--ink);font-size:14px}
.pastefill textarea{min-height:92px}
.pastefill .note-p{font-size:14px;color:#3a3a3c}
.pastefill .pf-msg{font-weight:600;color:var(--ink)}
.pastefill[aria-busy="true"] .pf-msg::before{content:"";display:inline-block;width:12px;height:12px;margin-right:8px;vertical-align:-1px;border:2px solid var(--teal);border-right-color:transparent;border-radius:50%;animation:pfspin .8s linear infinite}
@keyframes pfspin{to{transform:rotate(360deg)}}
.pf-notes{margin:6px 0 0;padding-left:20px;font-size:14px;line-height:1.5;color:#3a3a3c}
.pf-notes li{margin:3px 0}
#listForm .pf{border-color:var(--teal);background:#f1f7f4}

/* ---- group consent, campaigns, contracts (15 Oct 2026) ---- */
.side a.nl .lockt{margin-left:auto;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#aeaeb2;border:1px solid rgba(255,255,255,.25);border-radius:980px;padding:1px 7px}
.gc-big{margin:8px 0 0;font-size:17px;line-height:1.5}
.gc-big b{font-variant-numeric:tabular-nums}
.gc-done{margin:6px 0 0;font-weight:600;color:var(--ok)}
.gc-list{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:4px;font-size:14px;color:#3a3a3c;line-height:1.45}
.gc-list li b{font-variant-numeric:tabular-nums}
fieldset.aud-f{border:0;margin:16px 0 0;padding:0;min-width:0}
fieldset.aud-f legend{font-size:14px;font-weight:600;color:var(--ink);padding:0;margin:0 0 4px}
.aud{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:2px 16px}
.aud .check-l{margin:0;padding:6px 0;font-weight:400;align-items:flex-start}
.aud .check-l input{margin-top:3px;flex:none}
.countbox{border:1.5px solid var(--line);border-radius:12px;background:#f5f5f7;padding:14px 16px;margin-top:18px}
.countbox{min-height:132px;transition:opacity .15s}
.countbox.busy{opacity:.55}
.countbox .big{margin:0;font-size:28px;font-weight:600;letter-spacing:-.02em;line-height:1.2}
.countbox .big b{font-variant-numeric:tabular-nums}
.countbox ul{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:5px;font-size:14px;color:#3a3a3c;line-height:1.45}
.countbox li b{font-variant-numeric:tabular-nums}
.camprow{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--line)}
.camprow .t{flex:1 1 240px;min-width:0}
.camprow .t b{display:block;font-size:17px;overflow-wrap:anywhere}
.camprow .t small{display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:2px;overflow-wrap:anywhere}
.camprow .r{display:flex;gap:10px;align-items:center}
.card-h + .camprow{border-top:0}
.cstats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}
@media(max-width:560px){.cstats{grid-template-columns:repeat(2,1fr)}}
.cstat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.cstat b{display:block;font-size:28px;line-height:1;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.cstat span{display:block;font-size:12px;color:var(--muted);margin-top:6px}
.preview{border:1.5px dashed var(--line);border-radius:12px;padding:16px;background:#fff;margin-top:14px}
.preview .subj{margin:0 0 10px;font-weight:600;font-size:17px;overflow-wrap:anywhere}
.preview .msg{white-space:pre-wrap;font-size:17px;line-height:1.55;overflow-wrap:anywhere}
.preview .foot{margin-top:16px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.6;overflow-wrap:anywhere}
dl.conf{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:8px 0 0;font-size:14px}
dl.conf dt{color:var(--muted);font-weight:600}
dl.conf dd{margin:0;overflow-wrap:anywhere}
.ct-setup{border-color:#a8681a;background:#fdf6e6}
.ct-cards{display:none}
.ct-table td.wrap{white-space:normal;min-width:160px;max-width:280px;overflow-wrap:anywhere}
.ct-table .kvn{color:var(--muted);font-size:12px}
@media(max-width:700px){.dealtable-x{display:none}.ct-cards{display:grid;gap:10px}}
#ctLeadPicked{display:flex;align-items:center;gap:10px;margin-top:6px;font-weight:600}
.ct-hits{display:grid;gap:6px;margin-top:6px}
.ct-hit{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;min-height:44px;color:var(--ink)}
.ct-hit:hover{border-color:var(--teal)}
.ct-hit small{color:var(--muted);font-size:12px;overflow-wrap:anywhere}

/* the phone header on a Premium account ran 5px past a 390px screen (the longer plan label); tighten it only where it needs it */
@media(max-width:420px){.top{gap:8px;padding-left:12px;padding-right:12px}.top .plan-pill{letter-spacing:.06em;padding:3px 7px}}

/* ---- smart import: one summary card, its numbers, and the "who agreed, and how?" and Finish setup sheets ---- */
.note-p.warn{color:#7a3a10;font-weight:600}
.impcard{margin-top:12px;padding:16px;border:1.5px solid var(--line);border-radius:12px;background:#fff}
.impcard h4{margin:0 0 4px;font-size:17px;font-weight:600;letter-spacing:-.01em;line-height:1.25}
.impnums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;margin:12px 0 0;padding:0}
.impnums dt{font-size:14px;color:#3a3a3c;line-height:1.35}
.impnums dd{margin:2px 0 0;font-size:28px;font-weight:600;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}
@media(max-width:420px){.impnums{gap:10px 12px}.impnums dd{font-size:21px}}
.impcard h4:focus-visible{outline-offset:4px;border-radius:8px}
.agrow{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;padding:12px 0;border-top:1px solid var(--line)}
.agrow:first-child{border-top:0}
.agrow .check-l{margin:0;align-items:flex-start}
.agrow .check-l input{margin-top:3px;flex:none}
.agrow .check-l b{display:block;overflow-wrap:anywhere}
.agrow .check-l small{display:block;color:var(--muted);font-size:12px;margin-top:1px;font-weight:400}
.agrow select{width:100%;margin:0}
#suForm>div{margin-top:12px}
#suForm label{display:block}
.su-wait{margin:8px 0 6px;padding:10px 12px;border-radius:12px;background:#f5f5f7;border:1.5px solid var(--line);font-size:14px;line-height:1.5;color:#26332c;overflow-wrap:anywhere}
.su-done{margin:8px 0 0;font-weight:600;color:var(--ok);overflow-wrap:anywhere}
/* the state-of-things card on Campaigns: a ticked line is information, not a finished chore, so it is not struck through */
.status .check{align-items:flex-start;flex-wrap:wrap}
.status .check i{margin-top:1px}
.status .check span{flex:1 1 220px;min-width:0;line-height:1.45}
.status .check.done span{text-decoration:none;color:var(--ink)}
.status .check button{margin-left:32px;flex:none}
@media(min-width:561px){.status .check button{margin-left:auto}}

/* ---- Bookings (coming soon): a placeholder that records interest and nothing else ---- */
.bk-p{font-size:17px;line-height:1.55;color:var(--ink);margin:8px 0 0;max-width:68ch}
.bk-note{background:#fff4dc;color:#6b4500;border-radius:12px;padding:10px 12px}
.bk-next{color:#3a3a3c}
.bk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:14px 0 4px}
.bk-tile{border:1.5px solid var(--line);border-radius:12px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:6px;min-width:0}
.bk-tile.on{border-color:var(--teal);background:#f1f7f4}
.bk-tile>svg{color:var(--teal)}
.bk-tile h3{margin:2px 0 0;font-size:17px;color:var(--ink)}
.bk-tile p{margin:0 0 6px;font-size:17px;line-height:1.45;color:#3a3a3c}
.bk-tile .btn{min-height:44px;margin-top:auto;white-space:normal;text-align:center}
.bk-form{max-width:720px}
.bk-form label{font-size:14px;color:var(--ink)}
.bk-form input,.bk-form select{min-height:44px}
.bk-row{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
@media(max-width:640px){.bk-row{grid-template-columns:1fr}}
.bk-consent{align-items:flex-start;line-height:1.5;margin-top:14px;font-size:17px;min-height:44px}
.bk-consent input{margin-top:3px;width:22px;height:22px}
.bk-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.bk-go{min-height:44px}
.bk-fine{font-size:14px}
.bk-done{background:#e4f0ec;border:1px solid #bcd8cd;border-radius:12px;padding:14px 16px;margin-top:10px;color:var(--ink)}
.bk-done:focus{outline:2px solid var(--teal);outline-offset:2px}
.bk-counts{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.bk-counts li{display:flex;justify-content:space-between;gap:10px;background:#f5f5f7;border-radius:12px;padding:10px 12px;font-size:17px}
.bk-h3{font-size:17px;margin:18px 0 6px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.bk-plist{list-style:none;margin:0;padding:0}
.bk-plist li{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border-top:1px solid var(--line);padding:10px 0;font-size:17px;line-height:1.5}
.bk-plist li:first-child{border-top:0}
.bk-pwho{min-width:0;overflow-wrap:anywhere}
.bk-rm{min-height:44px;flex:none}

/* ---- Studio pass (17 Oct 2026): one type scale, one voice, quiet chrome ----
   Scale: 12 caption / 14 UI / 15 body / 17 lead / 20 / 24 / 28 / 34. Sans only: the old serif headings fell back to Georgia, whose
   old-style figures made every number look uneven. Weights stop at 600. Pills become quiet text actions; only the primary action is filled. */
@font-face{font-family:"Inter";src:url(/fonts/inter-var.woff2) format("woff2");font-weight:100 900;font-display:swap}
:root{--sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Inter","Segoe UI",Roboto,Helvetica,Arial,sans-serif;--hair:rgba(0,0,0,.1)}
body,button,input,select,textarea{font-family:var(--sans)}
h1,h2,h3,h4{font-weight:600;letter-spacing:-.018em}
.ph h1{font-size:28px;line-height:1.14;letter-spacing:-.022em}
.top h1.t{font-size:17px;letter-spacing:-.012em}
.kpi b,.stat b{font-weight:600;letter-spacing:-.025em}
.countbox .big,.cstat b,.impnums dd{font-size:21px;font-weight:600;letter-spacing:-.022em}
.auth h1{font-size:34px;font-weight:600;letter-spacing:-.025em}
.dhead h2,.pv-head h2{font-size:21px}
/* headings take focus after a screen change; they are not controls, so they carry no box */
h1:focus,h1:focus-visible,h2:focus,h2:focus-visible,h3:focus,h3:focus-visible{outline:none}
/* buttons: hairline, regular weight; secondary actions are text, the one primary action is filled */
.btn{font-weight:400;border:1px solid var(--hair)}
.btn.solid,.btn.lime{font-weight:600}
.btn.solid,.btn.lime{border-color:transparent}
.btn.xs:not(.solid):not(.lime){border-color:transparent;background:transparent;color:var(--teal);font-weight:400}
.btn.xs.quiet{color:var(--muted)}
.btn.xs:not(.solid):not(.lime):hover{background:rgba(0,0,0,.05)}
.lcard .ac a,.lcard .ac button{background:transparent;border-radius:8px;font-weight:400}
.lcard .ac a:hover,.lcard .ac button:hover{background:rgba(0,0,0,.05)}
.lcard .ac.quiet-ac .del{font-weight:400}
.side a.nl{font-weight:400}
.chip{font-weight:400}
.plan-pill,.side .grp{font-weight:600}
/* phone: inputs at 16px so iOS does not zoom on focus; the plan pill lives in Settings, not the header */
@media(max-width:700px){input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:17px}.top .plan-pill{display:none}}
b,strong{font-weight:600}
.row .m b{font-weight:400}
.qitem .qacts{gap:2px 4px;padding-left:46px}
/* listing cards: actions are quiet links aligned with the text above them */
.lcard .ac{gap:0 16px;padding:0 12px 12px}
.lcard .ac a,.lcard .ac button{padding:8px 0;min-height:34px}
@media(hover:hover){.lcard .ac a,.lcard .ac button{padding:4px 0;min-height:28px}}
.lcard .ac a:hover,.lcard .ac button:hover{background:transparent;text-decoration:underline;text-underline-offset:3px}
@media(hover:none),(max-width:700px){.lcard .ac{gap:0 2px;padding:0 0 10px}.lcard .ac a,.lcard .ac button{padding:10px 12px;min-height:44px}}

/* ---- Apple theme ---- */
:root{--accent:#0e6b57;--accent-d:#0a4f41;--hot:#d70015;--warm:#b25e00;--ok:#248a3d}
.btn{border-radius:12px}
.btn.lime,.btn.solid{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.lime:hover,.btn.solid:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn.xs:not(.solid):not(.lime){color:var(--accent)}.btn.xs.quiet{color:var(--muted)}
.avatar{background:#e5e5ea;color:var(--ink)}
.side a.nl .cnt{background:var(--accent);color:#fff}
.stage.won{background:#e6f4ea;color:#248a3d}
.stage.contacted{background:#f2f2f7;color:#515154}
.stage.qualified{background:#e4f0ec;color:#0a4f41}
.score.warm,.ini.warm{background:#e4f0ec;color:#0a4f41}
.score.warm .dot{background:var(--accent)}
.chip{border-radius:12px}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.seg{background:#e9e9ee;border:0;border-radius:12px}.seg .chip{border-radius:8px}
.seg .chip.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.14)}
.lcard .ac a,.lcard .ac button{color:var(--accent)}
.lcard .ac .del,.lcard .ac.quiet-ac .del{color:var(--muted)}
.tabbar a.on{color:var(--accent)}
/* phone: buttons are iOS-style, tinted grey with blue text and no outline, 44px, the one primary action filled */
@media(max-width:700px){
  .btn{min-height:44px;border-radius:12px;font-size:17px;font-weight:400;padding:11px 16px;border-color:transparent;background:#f2f2f7;color:var(--accent)}
  .btn.solid,.btn.lime{background:var(--accent);color:#fff;font-weight:600}
  .btn.quiet{background:transparent;color:var(--muted)}
  .btn.xs:not(.solid):not(.lime){background:transparent;padding:10px 10px;font-size:17px}
  .btn.danger{background:#fff0ef;color:#d70015}
  #detailCard>.actions .btn.sm{flex:1 1 0;min-width:0;padding-left:8px;padding-right:8px}
  .dsec .actions.tight input[type=date]{flex:1 1 100%;width:100%!important}
  .dsec .actions.tight input[type=date]~.btn.sm{flex:1 1 0;min-width:0;padding-left:6px;padding-right:6px}
  .chip{border-radius:12px}
  .qitem .qacts{gap:4px 2px;padding-left:58px}
  .qitem .qacts .btn[data-q=snooze],.qitem .qacts .btn[data-q=hide]{order:2;font-size:14px;color:var(--muted);min-height:36px}
  .qitem .qacts .btn[data-q=done]{order:1}
}

/* A: light sidebar and header */
.lmark circle{fill:#0e6b57}.logo .o{color:#0e6b57}
.side{background:#f5f5f7;color:var(--ink);border-right:1px solid var(--line)}
.logo{color:var(--ink)}
.side .grp{color:#6e6e73}
.side a.nl{color:#3a3a3c}
.side a.nl:hover{background:rgba(0,0,0,.05)}
.side a.nl.on{background:rgba(14,107,87,.12);color:var(--accent)}
.side a.nl .cnt,.side a.nl .cnt.q{background:#e5e5ea;color:#3a3a3c}
.side a.nl.on .cnt{background:var(--accent);color:#fff}
.plancard{background:#fff;border:1px solid var(--line)}.plancard b{color:var(--ink)}.plancard small{color:var(--muted)}.plancard .bar{background:#e5e5ea}
.side a.nl .lockt{color:#6e6e73;border-color:#d2d2d7}
.plan-pill{color:var(--accent);border-color:rgba(14,107,87,.35)}
.side a.nl:focus-visible{outline-color:var(--accent)}
@media(max-width:900px){.top{background:rgba(245,245,247,.88);color:var(--ink);border-bottom:1px solid var(--line)}}
.skip{background:var(--accent);color:#fff}
.stage.won{color:#1d6b30}
.pro-pill,.lockrow .pro-pill{background:var(--accent);color:#fff}
.side a.nl.on{background:rgba(14,107,87,.1);color:#0a4f41}
pre{background:#f2f2f7;color:#1d1d1f;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.side .plancard small,#plancard small{color:#6e6e73;opacity:1!important}
.side a.nl.on .lockt,.side a.nl:hover .lockt{color:#515154;border-color:#8e8e93}

/* ---- Events ---- */
.ev-p{margin:0 0 8px;font-size:17px;line-height:1.5;color:var(--ink)}
.ev-p b{font-weight:600}
.ev-sum{margin:10px 0 0;font-size:17px;font-weight:400;color:var(--ink)}
.ev-sum.bad{color:#a02818}
.ev-presets{margin:0 0 6px}
.ev-pic img{display:block;max-width:100%;width:320px;border-radius:12px;margin:6px 0 8px}
.ev-link{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ev-link input{flex:1 1 240px;min-width:0}
.ev-slotlist{display:grid}
.ev-slotrow{display:grid;grid-template-columns:1fr 110px auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.ev-st b{display:block;font-weight:600}
.ev-st small{display:block;color:var(--muted);font-size:14px}
.ev-sa{display:flex;gap:4px;flex-wrap:wrap}
@media(max-width:700px){.ev-slotrow{grid-template-columns:1fr 104px}.ev-sa{grid-column:1/-1}}
.ev-filters{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:10px;margin:0 0 10px}
@media(max-width:700px){.ev-filters{grid-template-columns:1fr}}
.ev-guest{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 0;border-top:1px solid var(--line);align-items:center}
.ev-gw b{font-weight:600}
.ev-gw small{display:block;color:var(--muted);font-size:14px;overflow-wrap:anywhere}
.ev-ga{grid-column:1/-1;display:flex;gap:4px;flex-wrap:wrap}
.ev-tabs{display:flex;max-width:100%;overflow-x:auto}
.ev-tabs .chip{min-height:40px;padding:8px 16px;white-space:nowrap}
@media(hover:none),(max-width:700px){.ev-tabs .chip{min-height:44px}}
@media(max-width:700px){.ev-tabs{display:flex;width:100%;overflow:visible}.ev-tabs .chip{flex:1 1 auto;padding:8px 4px;text-align:center}}
.ev-state{color:var(--muted);font-size:14px}
.ev-mail .ev-p:last-child{margin-bottom:0}

/* ---- Events: the door and the invitations ---- */
.ev-cam{position:relative;margin:12px 0;border-radius:18px;overflow:hidden;background:#000;max-width:520px}
.ev-cam video{display:block;width:100%;max-height:56vh;object-fit:cover}
.ev-aim{position:absolute;inset:16% 16%;border:3px solid rgba(255,255,255,.92);border-radius:18px;box-shadow:0 0 0 9999px rgba(0,0,0,.3);pointer-events:none}
.ev-cammsg{min-height:1.4em;margin:8px 0 0}
.ev-auto{margin:12px 0}
.ev-result{margin:12px 0;padding:16px 18px;border-radius:18px;border-left:8px solid #c7c7cc;background:#f2f2f7;color:var(--ink);display:grid;gap:4px;font-size:17px;line-height:1.4}
.ev-result b{font-size:21px;letter-spacing:-.02em;font-weight:600}
.ev-result .ev-who{font-size:21px;font-weight:600}
.ev-result .ev-prof{font-size:14px}
.ev-result.ok{background:#d9f2e0;border-color:#1d7a3a;color:#0b3a1a}
.ev-result.warn{background:#ffeab8;border-color:#a8670a;color:#4a2f00}
.ev-result.bad{background:#fbd9d4;border-color:#b3261e;color:#5c0f08}
.ev-result.idle{color:#515154}
.ev-result:focus{outline:none}
.ev-result .actions{margin-top:6px}
.ev-hits{margin-top:6px}
.ev-hit{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 0;border-top:1px solid var(--line);align-items:center}
.ev-table{display:grid;font-variant-numeric:tabular-nums}
.ev-tr{display:grid;grid-template-columns:1.6fr repeat(5,1fr);gap:6px;padding:9px 0;border-top:1px solid var(--line);align-items:center;font-size:17px}
.ev-th{border-top:0;color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.ev-tr.now{background:#e4f0ec;border-radius:12px;padding-left:8px;padding-right:8px}
.ev-tot{font-weight:600;border-top:2px solid var(--line)}
.ev-l{display:none}
.ev-nowtag{font-style:normal;font-size:12px;font-weight:600;background:var(--accent);color:#fff;border-radius:8px;padding:1px 6px;text-transform:uppercase}
.ev-zero{color:var(--muted)}
.ev-over{color:#b3261e}
.ev-bad{color:#a02818}
@media(max-width:700px){
  .ev-th{display:none}
  .ev-tr{grid-template-columns:repeat(5,1fr);gap:4px 6px;font-size:17px}
  .ev-tr>span:first-child{grid-column:1/-1;font-weight:600}
  .ev-l{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-weight:600}
}
.ev-modes{border:0;margin:0 0 6px;padding:0;display:grid;gap:8px;min-width:0}
.ev-modes legend{font-size:12px;color:var(--muted);font-weight:600;padding:0;margin:10px 0 4px}
.ev-mode{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer;margin:0;font-size:17px;color:var(--ink);font-weight:400;min-height:44px}
.ev-mode input{width:22px;height:22px;margin:2px 0 0;flex:none}
.ev-mode b{display:block;font-weight:600}
.ev-mode small{display:block;color:var(--muted);font-size:14px;margin-top:2px}
.ev-mode:has(input:checked){border-color:var(--accent);background:#f2f8ff}

/* ---- Passkeys (18 Oct 2026): the sign-in button and the Security card. 44px targets at every width, text at 4.5:1 or better ---- */
.auth .btn.pkbtn{margin-top:10px;min-height:44px;white-space:normal;text-align:center;line-height:1.25}
.auth .btn.pkbtn svg{flex:none}
.pkbox{margin:0 0 16px;padding:0 0 16px;border-bottom:1px solid var(--line)}
.pkbox h3{margin:0 0 4px;font-size:17px}
.pklist{margin:8px 0 4px}
.pkrow{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:8px 0;border-top:1px solid var(--line)}
.pkrow:first-child{border-top:0}
.pkrow .pkn{min-width:0;font-size:14px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.pkrow .pkn small{display:block;margin-top:2px;font-size:12px;font-weight:400;color:var(--muted)}
.pkrow .btn{flex:none;min-height:44px;color:var(--hot)}
.pknone{margin:0}
/* the Apple button is a placeholder ("soon"): quiet grey text at 5:1 instead of half-faded blue, which fell under 4.5:1 */
.auth #btnApple{opacity:1!important;color:var(--muted)}
.pkadd{margin:10px 0 0}
.pkbox .actions.tight .btn.sm,.pkrow .btn.sm{min-height:44px}

/* ---- Apple system layer (18 Oct 2026) ----
   Text: 12 caption, 14 secondary and controls, 17 body and headline, 21 sheet title, 28 page title, 34 sign-in. Weights 400 and 600.
   Colour: ink #1d1d1f, secondary #6e6e73, fill #f5f5f7, hairline #d2d2d7, action blue #0e6b57, links #0e6b57. Radius: pills 980, fields 12, cards 18. */
:root{--ink:#1d1d1f;--muted:#6e6e73;--line:#d2d2d7;--sand:#f5f5f7;--card:#fff;--accent:#0e6b57;--accent-d:#0e6b57;--teal:#0e6b57;--teal-d:#0a4f41;--radius:18px;--r-card:18px;--r-field:12px;--r-pill:980px}
body{font:400 17px/1.47 var(--sans);letter-spacing:-.011em;color:var(--ink);background:var(--sand)}
h1,h2,h3,h4{font-weight:600;letter-spacing:-.022em}
.ph h1{font-size:28px;line-height:1.14;letter-spacing:-.022em;font-weight:600}
.ph p,.ph .sub{font-size:14px;line-height:1.43;color:var(--muted)}
.top h1.t{font-size:17px;font-weight:600}
.auth h1{font-size:34px;line-height:1.1;font-weight:600}
.kpi b,.stat b{font-size:28px;line-height:1.1;font-weight:600;letter-spacing:-.022em}
.kpi span,.stat span{font-size:14px;color:var(--muted)}
.dhead h2,.sheet h2{font-size:21px;line-height:1.19;font-weight:600;letter-spacing:-.016em}
.card h2,.card h3,.card h4{font-size:17px;line-height:1.3;font-weight:600;letter-spacing:-.016em}
.dsec h3{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.card{border-radius:18px;padding:24px;border:1px solid var(--line);box-shadow:none}
p,li,.kv,.hint,small{line-height:1.43}
small,.kv{font-size:14px;color:var(--muted)}
/* one corner: cards, banners, images, sheets and tiles are 18; fields and inner tiles 12; controls are pills; avatars are circles */
img,video{border-radius:18px}
.avatar,.avatar-pv,img.avatar{border-radius:50%}
.lcard{border-radius:18px;overflow:hidden}
.lcard .img,.cover-pv,.cover-edit,.ev-pic img,.ev-cam{border-radius:18px}
.lcard .img{border-radius:0}
.sheet{border-radius:18px}
.toast{border-radius:12px}
.avatar{width:36px;height:36px}.ini{width:40px;height:40px}
/* sidebar and top bar */
.side a.nl{font-size:14px;font-weight:400;min-height:36px;padding:7px 12px;border-radius:8px}
.side a.nl.on{font-weight:600}
.side .grp{font-size:12px;font-weight:600;letter-spacing:.08em}
.plancard b{font-size:14px;font-weight:600}.plancard small{font-size:12px}
.tabbar a{font-size:12px;font-weight:400}.tabbar a.on{font-weight:600}
/* buttons: Apple pills. 36px on a desktop, 44px on a phone. One filled blue action, the rest hairline or text. */
.btn{font-size:14px;font-weight:400;line-height:1.2;min-height:36px;padding:0 16px;border-radius:980px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.btn.sm{font-size:14px;min-height:36px;padding:0 16px}
.btn.xs{font-size:14px;min-height:32px;padding:0 12px}
.btn.solid,.btn.lime{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:400}
.btn.solid:hover,.btn.lime:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn.quiet,.btn.xs:not(.solid):not(.lime){border-color:transparent;background:transparent;color:var(--teal)}
.btn.quiet{color:var(--muted)}
.btn.danger{color:#d70015;border-color:#d2d2d7;background:#fff}
.chip{font-size:14px;font-weight:400;min-height:32px;padding:0 14px;border-radius:980px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.seg{background:#e8e8ed;border:0;border-radius:980px;padding:2px}.seg .chip{border:0;background:transparent;min-height:30px}
.seg .chip.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
/* fields */
input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:14px;line-height:1.3;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}
textarea{padding:8px 12px;min-height:72px}
label,.lab{font-size:14px;font-weight:600;color:var(--ink)}
/* lists */
.row{padding:12px 16px}
.row .n{font-size:17px;font-weight:600;line-height:1.3}
.row .m{font-size:12px;color:var(--muted)}
.row .s{font-size:14px;line-height:1.43;color:var(--muted)}
.score,.stage{font-size:12px;font-weight:600;line-height:1.3;padding:2px 8px}
.toast{font-size:14px}
.avatar-pv{background:#e8e8ed;color:#1d1d1f}
@media(max-width:700px){
  main{padding:16px 16px 110px}
  .card{padding:16px;border-radius:16px}
  input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:17px;min-height:44px;border-radius:12px}
  textarea{min-height:88px;padding:10px 12px}
  .btn,.btn.sm{font-size:14px;min-height:44px;padding:0 16px}
  .sheet .btn,.sheet .btn.sm,form .btn.solid{font-size:17px;padding:0 20px}
  .top .btn{min-height:36px;padding:0 14px}
  .btn.xs,.btn.xs:not(.solid):not(.lime){font-size:14px;min-height:44px;padding:0 12px}
  .chip{min-height:36px;min-width:44px;font-size:14px}
  html{scroll-padding-top:64px;scroll-padding-bottom:100px}
  .ph h1{font-size:28px}
  .row .n{font-size:17px}.row .s{font-size:14px}.row .m{font-size:12px}
  label,.lab{font-size:14px}
  .sheet{border-radius:18px 18px 0 0}
  .avatar{width:44px;height:44px}
}
/* tabs inside a segmented bar: 36px on a desktop, 44px on a phone (the Events tabs) */
.seg .chip{min-height:36px}
@media(max-width:700px){.seg.ev-tabs .chip,.ev-tabs .chip{min-height:44px}}
