/* The planner portal and a planner's landing page (public/partner.html). Built on style.css (tokens, buttons, fields, cards). */
html,body{overflow-x:hidden}
.pp-wrap{max-width:1080px;margin:0 auto;padding:0 max(16px,var(--sa-r,0px)) 0 max(16px,var(--sa-l,0px))}
.pp-top{background:var(--surface);border-bottom:1px solid var(--line);padding-top:var(--sa-t,0px)}
/* The installed web app (home screen): the phone's safe areas (--sa-*), as in owner.css; body.pwa from native.js, ?standalone=1 in tests */
@media (display-mode:standalone){:root{--sa-t:env(safe-area-inset-top,0px);--sa-b:env(safe-area-inset-bottom,0px);--sa-l:env(safe-area-inset-left,0px);--sa-r:env(safe-area-inset-right,0px)}}
body.pwa{--sa-t:env(safe-area-inset-top,0px);--sa-b:env(safe-area-inset-bottom,0px);--sa-l:env(safe-area-inset-left,0px);--sa-r:env(safe-area-inset-right,0px)}body.pwa-preview{--sa-t:47px;--sa-b:34px}
body{padding-bottom:var(--sa-b,0px)}body::before{content:"";position:fixed;left:0;right:0;top:0;height:var(--sa-t,0px);z-index:21;background:var(--surface)} /* the sticky menu stops under the status bar, never behind it */
.pp-row{display:flex;align-items:center;gap:12px;min-height:60px;flex-wrap:wrap}
.pp-brand{display:flex;align-items:center;gap:10px;font:600 1.05rem/1.2 var(--sans);color:var(--ink);text-decoration:none;min-width:0}
.pp-brand img{height:32px;width:auto;max-width:140px;object-fit:contain}
.pp-brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-who{margin-left:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:.86rem}
.pp-tabs{background:var(--surface);border-bottom:1px solid var(--line);overflow-x:auto;position:sticky;top:var(--sa-t,0px);z-index:20;scrollbar-width:none} /* the menu stays in reach while a long client list scrolls */
.pp-tabs::-webkit-scrollbar{display:none}
.pp-tabs .pp-wrap{display:flex;gap:4px}
.pp-tabs a{display:inline-flex;align-items:center;min-height:48px;padding:0 12px;color:var(--mute);text-decoration:none;font-weight:500;white-space:nowrap;border-bottom:2px solid transparent}
@media (max-width:420px){.pp-tabs .pp-wrap{gap:0;padding:0 6px}.pp-tabs a{padding:0 9px}}
.pp-tabs a[aria-current]{color:var(--ink);border-bottom-color:var(--accent)}
.pp-main{padding-top:28px;padding-bottom:48px}
.pp-main h1{font-size:clamp(1.9rem,4.6vw,2.8rem);margin:.2rem 0 .6rem}
.pp-main h2{font-size:1.4rem;margin:0 0 .8rem}
.pp-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:18px 0}
.pp-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.pp-stat b{display:block;font:500 1.8rem/1.1 var(--mono);color:var(--ink)}
.pp-stat span{color:var(--mute);font-size:.86rem}
.pp-cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.pp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;min-width:0}
.pp-card h3{font:600 1.05rem/1.3 var(--sans);margin:0 0 .3rem;overflow-wrap:anywhere}
.pp-card .row{display:flex;gap:8px;flex-wrap:wrap;margin-top:.8rem}
.pp-form{display:grid;gap:12px;max-width:640px}
.pp-form .two{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.pp-form input,.pp-form select{width:100%;min-width:0}.pp-form .chk input,.vs-card .chk input{width:20px;flex:none}.chk>span{min-width:0}
.pp-table{width:100%;border-collapse:collapse;font-size:.9rem}
.pp-table th,.pp-table td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}
.pp-scroll{overflow-x:auto;max-width:100%}
.pp-tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.78rem;background:var(--soft);color:var(--body)}
.pp-tag.g{background:var(--green-bg);color:var(--green)}.pp-tag.r{background:var(--red-bg);color:var(--red)}.pp-tag.y{background:var(--yellow-bg);color:var(--yellow)}
.pp-bad{color:var(--red)}
.pp-foot{padding-top:12px;padding-bottom:32px;border-top:1px solid var(--line)}
.pp-toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:var(--on-ink);padding:10px 16px;border-radius:999px;font-size:.9rem;opacity:0;pointer-events:none;transition:opacity .2s;max-width:calc(100vw - 32px)}
.pp-toast.on{opacity:1}.pp-toast.bad{background:var(--red)}
/* a planner's landing page (partner.js landing): one card on a soft wash of their color, the footer held to the foot of a short screen */
body.pp-landing{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}body.pp-landing .pp-top{display:none} /* the card names the planner, once */
body.pp-landing #pp-main{flex:1 0 auto;display:flex;flex-direction:column;width:100%;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left))}
.pp-land{position:relative;isolation:isolate;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;text-align:center}
.pp-land::before{content:"";position:fixed;inset:0 0 auto;height:62vh;z-index:-1;pointer-events:none;background:radial-gradient(120% 80% at 50% 0,color-mix(in srgb,var(--accent) 13%,transparent),transparent 70%)} /* the wash: a pseudo element, so text is checked against the page */
.pp-lbar{width:100%;max-width:520px;display:flex;justify-content:flex-end;min-height:44px}
.pp-lcard{width:100%;max-width:520px;box-sizing:border-box;background:var(--surface);border-radius:24px;padding:32px 24px 24px;box-shadow:0 1px 2px rgba(30,27,24,.05),0 18px 48px rgba(30,27,24,.08);display:flex;flex-direction:column;align-items:center}
[data-theme=dark] .pp-lcard{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 18px 48px rgba(0,0,0,.35)}[data-theme=dark] .pp-mono{box-shadow:0 0 0 1px rgba(255,255,255,.16),0 0 0 7px color-mix(in srgb,var(--accent) 22%,transparent)} /* a dark color still reads as a disc */
.pp-mono{display:inline-flex;align-items:center;justify-content:center;width:76px;height:76px;border-radius:50%;background:var(--accent);color:var(--pp-on-accent,#1E1B18);font:400 1.9rem/1 var(--serif);letter-spacing:.02em;box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 14%,transparent)}
.pp-llogo{display:block;max-height:80px;max-width:min(240px,100%);object-fit:contain}[data-theme=dark] .pp-llogo{background:#fff;border-radius:14px;padding:8px 12px} /* a dark logo stays legible in the dark */
.pp-lcard h1{margin:18px 0 6px;font-size:clamp(1.9rem,7vw,2.6rem);overflow-wrap:anywhere}.pp-lcard .lead{margin:0;font-size:1.05rem}
.pp-land .ctas{display:grid;grid-template-columns:1fr;gap:10px;width:100%;margin-top:24px}.pp-land .ctas .btn{min-height:50px;width:100%;box-sizing:border-box;font-size:1rem}
@media (min-width:560px){.pp-land .ctas{grid-template-columns:1fr 1fr}.pp-lcard{padding:40px 36px 28px}}
.pp-lsite{margin:14px 0 0}.pp-lsite a{display:inline-flex;align-items:center;gap:.3rem;min-height:44px;padding:0 6px;color:var(--ink);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 70%,transparent);text-underline-offset:4px;overflow-wrap:anywhere}
.pp-lcan{list-style:none;margin:0;padding:0;width:100%;max-width:520px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pp-lcan li{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:.86rem;line-height:1.3;color:var(--ink);min-width:0}
.pp-lcan svg{box-sizing:border-box;width:44px;height:44px;padding:10px;flex:none;border-radius:50%;color:color-mix(in srgb,var(--accent) 70%,var(--ink));background:color-mix(in srgb,var(--accent) 12%,var(--surface))}
body.pp-landing .pp-foot{flex:none;width:100%;box-sizing:border-box;max-width:none;text-align:center;border-top:0;padding:8px max(16px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
body.pp-landing .pp-foot:empty{padding:0}
.pp-pow{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--mute);text-decoration:none;font-size:.84rem}.pp-pow:hover{color:var(--ink)}.pp-pow img{height:18px;width:auto}
.pp-pow .dk,[data-theme=dark] .pp-pow .lt{display:none}[data-theme=dark] .pp-pow .dk{display:inline}
.pp-ways{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.pp-swatch{display:inline-block;width:18px;height:18px;border-radius:4px;vertical-align:middle;border:1px solid var(--line)}
@media (max-width:520px){.pp-main{padding-top:18px}.pp-card{padding:14px}}
/* Home in the portal and the vendor space (public/home.js, .hm in style.css): the tiles first; the page ends clear of the round + */
#pp-main>.hm{padding-bottom:8px}#pp-main:has(>.hm){padding-bottom:112px}#pp-main>.hm~#pp-nf{margin-top:28px}
/* The client list: Add Client and Buy Credits beside the heading, the counts (credits and texts open Credits), then search and a filter */
.pp-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.pp-head h1{margin:.2rem 0}
.pp-acts{display:flex;flex-wrap:wrap;gap:8px}.pp-acts>*{min-height:44px}
a.pp-stat{color:inherit;text-decoration:none;transition:border-color .2s}a.pp-stat:hover{border-color:var(--accent)}
.pp-form .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pp-next{margin-top:10px}
.pp-listhead{display:flex;align-items:baseline;gap:12px;margin-top:28px}.pp-listhead h2{margin:0 0 .8rem}
.pp-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 14px}
.pp-q{flex:1 1 220px;margin:0}.pp-q input{width:100%;min-height:44px}
.pp-chips{display:flex;gap:6px;flex-wrap:wrap}
.pp-chips button{min-height:44px;padding:0 14px;border-radius:999px;font-weight:500}
.pp-chips button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.pp-card .row button{min-height:44px}
a.pp-tag{text-decoration:none;color:var(--body);min-height:32px;display:inline-flex;align-items:center}

/* The quiet look and phones: soft cards, one strip of counts, the header on one line, the explanation in one line */
.pp-stat,.pp-card{border-color:transparent;box-shadow:0 1px 2px rgba(30,27,24,.04),0 0 0 1px rgba(30,27,24,.035)}[data-theme=dark] .pp-stat,[data-theme=dark] .pp-card{box-shadow:0 0 0 1px rgba(255,255,255,.05)}
.pp-top,.pp-tabs{border-bottom-color:color-mix(in srgb,var(--line) 70%,transparent)}
@media (max-width:640px){
  .pp-row{min-height:56px;gap:8px}.pp-who{gap:8px;font-size:.84rem;min-width:0}.pp-who>span:first-child{display:none}.pp-who select{max-width:100%;min-height:40px;font-size:15px!important} /* who is signed in is on Team */
  .pp-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:16px 0;background:var(--surface);border-radius:16px;box-shadow:0 0 0 1px var(--line);overflow:hidden}
  .pp-stat{border:0;border-radius:0;box-shadow:none;padding:12px}.pp-stat+.pp-stat{border-left:1px solid var(--line)}.pp-stat b{font-size:1.2rem}.pp-stat span{font-size:.74rem;line-height:1.3;display:block}
  .pp-head{gap:8px}.pp-acts{width:100%}.pp-acts>.p{flex:1}.pp-form{gap:12px}.pp-form .two{grid-template-columns:1fr}
  .pp-form p.mute{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
.pp-form h2{margin:0}.pp-form>p.mute{margin:0}

/* The vendor space (public/listing.html): the portal's header, tabs and cards, one listing or review per card */
.vs-mark{width:30px;height:34px;flex:none;color:var(--ink)}
.vs-list{display:grid;gap:12px;margin-top:18px}
.vs-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;margin-bottom:6px}.vs-head h2{font-size:1.3rem;margin:0 0 .2rem;overflow-wrap:anywhere}.vs-head h3{margin:.3rem 0 0}
.vs-card textarea{min-height:120px}.vs-card .chk{display:flex;gap:10px;align-items:flex-start;font-size:.92rem}
.vs-stars{color:var(--accent);letter-spacing:2px}.vs-stars span{color:var(--line-strong)}
.vs-text{white-space:pre-line;margin:.4rem 0}
.vs-reply{border-left:3px solid var(--line-strong);padding:2px 0 2px 12px;margin:10px 0}
.vs-rf{margin-top:12px;max-width:none}
.vs .pp-row{flex-wrap:nowrap}.vs .pp-who button{min-height:44px}
.vs-head p{margin:0}.vs-card .vs-head+p{margin:.4rem 0 .9rem}
.vs-foot{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between}.vs-foot .lnk{min-height:44px;font-weight:500;color:var(--mute)}
@media (max-width:640px){.vs-card .row .p{flex:1}}
.vs .pp-who{flex-wrap:nowrap;gap:8px}.vs .pp-who>*{flex:none}
@media (max-width:520px){.pp-row:has([data-spaces]) .pp-brand span{display:none}.pp-row:has([data-spaces]) .pp-who{margin-left:auto}} /* the switcher names the space */

/* Phones (under 700px): the portal's and the listing's menu is the bottom tab bar (.sptb in style.css, public/tabbar.js), in the couple
   planner's look; the page ends above it. On the listing, Account (the email, Appearance, Switch To, Sign Out) takes the header's place. */
.vs-acct{display:none}
@media (max-width:699px){
  .pp-foot{padding-bottom:calc(32px + var(--sptb-h,0px))}
  body:has(> nav.sptb:not([hidden])) .pp-toast{bottom:calc(16px + var(--sptb-h,0px))}
  .vs .vs-acct{display:flex}
  .vs #vs-who{display:none}
  .vs dialog.vs-am{margin:auto 0 0;width:100%;max-width:100%;max-height:calc(100dvh - var(--sa-t,0px) - 12px);border:0;border-radius:20px 20px 0 0;padding:20px 16px calc(24px + max(env(safe-area-inset-bottom,0px),var(--sa-b,0px)));background:var(--bg);color:var(--body);box-sizing:border-box}
}
dialog.vs-am{border:0;border-radius:20px;padding:20px;background:var(--bg);color:var(--body);width:min(420px,calc(100vw - 32px))}
dialog.vs-am::backdrop{background:rgba(15,10,18,.45)}
.vs-am-h{display:flex;align-items:center;justify-content:space-between;gap:12px}.vs-am-h h2{font-size:1.4rem;margin:0}
.vs-am-x{width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:var(--soft);color:var(--ink);font-size:1.4rem;line-height:1;display:grid;place-items:center}
.vs-am>p.mute{margin:4px 0 0;overflow-wrap:anywhere}
.vs-am-sec{margin:16px 4px 8px;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.vs-seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:14px}
.vs-seg button{min-height:40px;border:0;background:none;border-radius:10px;padding:0;color:var(--body);font-size:.875rem}.vs-seg button[aria-pressed=true]{background:var(--soft);color:var(--ink);font-weight:600}
.vs-am .sp-sw-nav{margin:16px 0 0;padding:0}
dialog.vs-am .vs-am-out{display:flex;width:100%;min-height:48px;margin-top:16px;justify-content:flex-start;padding:0 16px;background:var(--surface);border:1px solid var(--line);border-radius:14px;color:var(--red);font-weight:500}
/* phones: every control is at least 44px to tap (the brand link, the credit tag, Sign Out, the weddings switcher); tools/qa.mjs checks every tab */
@media (max-width:699px){
  .pp-brand,a.pp-tag,#pp-out,.pp-who select{min-height:44px}
  #pp-out{display:inline-flex;align-items:center}
  .vs-seg button{min-height:44px}
}
#pp-main p.s>a:only-child{display:inline-flex;align-items:center;min-height:44px}
/* one primary color in every space: plum main buttons, as in the planner and the console (dark mode keeps its light fill) */
html:not([data-theme=dark]) #pp-main :is(button.p,.btn.p,a.btn.p){background:var(--plum);border-color:var(--plum);color:#fff}html:not([data-theme=dark]) #pp-main :is(button.p,.btn.p,a.btn.p):hover{background:var(--plum-2);border-color:var(--plum-2)}

/* The business tools (public/pro.js): the proposal editor's line items and payment schedule, one row each; on a phone each row wraps */
.pro-form{max-width:820px}.pro-ed{border:0;padding:0;margin:0;min-width:0;display:grid;gap:12px}.pro-ed[disabled]{opacity:.85}
.pro-form textarea{width:100%;min-width:0;font:inherit}
.pro-line,.pro-pay{display:grid;gap:6px;align-items:center;margin-bottom:6px}
.pro-line{grid-template-columns:minmax(0,1fr) 72px 110px 44px}.pro-pay{grid-template-columns:minmax(0,1fr) 64px 96px 150px 44px}
.pro-line input,.pro-pay input,.pro-pay select{width:100%;min-width:0;min-height:44px}
.pro-head{margin:4px 0;font-size:.78rem;color:var(--mute)}.pro-head span{min-width:0}
.pro-x{min-height:44px;min-width:44px;padding:0;font-size:1.2rem;line-height:1}
.pro-total{margin-left:auto;font-family:var(--mono)}
div.f{display:grid;gap:.4rem;font-size:.84rem;color:var(--mute);font-weight:500}div.f .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* This Week and a client's team view: one line each, the whole line a link; a task's owner beside it */
.pro-wk,.pro-tasks,.pro-notes{list-style:none;padding:0;margin:0 0 8px;display:grid;gap:8px}
.pro-wk li,.pro-tasks li{background:var(--surface);border-radius:var(--r);box-shadow:0 0 0 1px rgba(30,27,24,.05)}.pro-wk li.mute,.pro-tasks li.mute{background:none;box-shadow:none;padding:4px 0}
.pro-wl{display:grid;gap:2px;padding:12px 14px;color:var(--ink);text-decoration:none;min-height:44px}.pro-wl:hover b{text-decoration:underline;text-decoration-color:var(--accent)}.pro-wl b{font-weight:600;overflow-wrap:anywhere}
.pro-tasks li{display:flex;align-items:center;gap:10px;padding:10px 14px;flex-wrap:wrap}.pro-tasks li>span{display:grid;gap:2px;flex:1 1 220px;min-width:0}.pro-tasks select{min-height:44px;max-width:100%;flex:0 1 200px}
.pro-notes .card{margin:0;padding:12px 14px}.pro-notes p{margin:0 0 4px;overflow-wrap:anywhere}.pro-acts{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 4px}
.pro-vc a{overflow-wrap:anywhere}.pp-card .row select{min-height:44px;max-width:100%}
.pp-listhead .pp-chips{margin-left:auto}.pp-listhead{flex-wrap:wrap;row-gap:0}.pp-listhead h2{white-space:nowrap}
@media (max-width:640px){
  .pro-head{display:none}.pro-line{grid-template-areas:"d d d" "q p x"}.pro-line [name=desc]{grid-area:d}.pro-line [name=qty]{grid-area:q}.pro-line [name=price]{grid-area:p}.pro-line .pro-x{grid-area:x}
  .pro-line{grid-template-columns:64px minmax(0,1fr) 44px}
  .pro-pay{grid-template-columns:64px minmax(0,1fr) 44px;grid-template-areas:"l l l" "h v x" "d d d"}.pro-pay [name=label]{grid-area:l}.pro-pay [name=how]{grid-area:h}.pro-pay [name=val]{grid-area:v}.pro-pay [name=due]{grid-area:d}.pro-pay .pro-x{grid-area:x}
  .pro-line,.pro-pay{padding:8px;border-radius:12px;background:var(--soft)}
}
/* Meeting Notes (public/notes.js): the recording indicator, always on screen while recording, and the notes */
.mn-ind{display:inline-flex;align-items:center;gap:.45rem;margin:0}.mn-ind i{width:12px;height:12px;border-radius:50%;background:var(--red);flex:none;animation:mn-pulse 1.2s ease-in-out infinite}.mn-ind.paused i{animation:none;background:var(--mute)}.mn-ind [data-mn-clock],.mn-clock{font-variant-numeric:tabular-nums}
@keyframes mn-pulse{50%{opacity:.3}}@media (prefers-reduced-motion:reduce){.mn-ind i{animation:none}}
#mn-bar{position:fixed;top:0;left:0;right:0;z-index:2000;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:calc(env(safe-area-inset-top,0px) + .4rem) 16px .4rem;background:var(--red-bg);color:var(--text);border-bottom:2px solid var(--red);box-shadow:var(--shadow-s)}
#mn-bar .mn-bb{display:flex;gap:.4rem;flex:none}#mn-bar button{min-height:36px;padding:.25rem .8rem}body.mn-recording{padding-top:calc(env(safe-area-inset-top,0px) + 52px)}
.mn-root .mn-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.2rem .8rem;margin-top:.6rem}.mn-root .mn-g .f{margin:0}.mn-root .chips{display:flex;flex-wrap:wrap;gap:.4rem}
.mn-consent{border:1px solid var(--yellow);background:var(--yellow-bg)}.mn-consent p{margin:0 0 .5rem}.mn-consent .chk{display:flex;gap:.5rem;align-items:flex-start;margin:.4rem 0 .8rem}
.mn-live{border:1px solid var(--red)}.mn-live .mn-ind{font-size:1.15rem;margin-bottom:.6rem}.mn-pane{margin-top:.8rem}.mn-use{margin:.6rem 0 0}
.mn-share{border:0;padding:0;margin:.8rem 0 0}.mn-share .chk{display:flex;gap:.5rem;align-items:center;margin:.3rem 0}
.mn-list .mn-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem}.mn-main{flex:1;min-width:0}.mn-main b{overflow-wrap:anywhere}
.mn-ul{margin:.2rem 0 .7rem;padding-left:1.2rem}.mn-ul li{margin:.3rem 0}.mn-pick{list-style:none;padding-left:0}.mn-pick .chk{display:flex;gap:.5rem;align-items:flex-start}
.mn-prop,.mn-done{margin-top:.4rem}.mn-prop p,.mn-done p{margin:0 0 .5rem}.mn-h{margin:.2rem 0}.mn-tr summary{cursor:pointer;font-weight:600;list-style-position:inside}.mn-trt{max-height:24rem;overflow:auto;overflow-wrap:anywhere}
/* Messages (public/pmail.js): the list, a conversation, compose, Settings > Email */
.pm-acts{margin:0 0 12px}.pm-views{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}.pm-views .btn{min-height:40px;padding:.45rem .9rem}.pm-views .btn[aria-pressed=true]{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.pm-th{display:block;color:inherit;text-decoration:none}.pm-th:hover{border-color:var(--line-strong)}.pm-th.un h3{font-weight:700}
.pm-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle}
.pm-badge{display:inline-block;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:999px;background:var(--accent);color:#1e1b18;font:600 .72rem/18px var(--sans);text-align:center}
.sptb .pm-badge{position:absolute;top:4px;margin-left:14px}
.pm-h1{overflow-wrap:anywhere}.pm-msgs{list-style:none;padding:0;margin:16px 0;display:grid;gap:12px}
.pm-msg{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;min-width:0}.pm-msg.out{border-left:3px solid var(--accent)}
.pm-who{margin:0 0 6px;overflow-wrap:anywhere}.pm-body{overflow-wrap:anywhere;color:var(--ink)}.pm-st,.pm-files{margin:8px 0 0;overflow-wrap:anywhere}
.pm-why{margin:4px 0 16px}.pm-why summary{cursor:pointer;color:var(--mute)}
.pm-hist{list-style:none;padding:0;margin:8px 0;display:grid;gap:8px}.pm-hrow{display:flex;gap:10px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-width:0}.pm-hrow .pro-wl{flex:1;min-width:0;display:grid;gap:2px;color:inherit;text-decoration:none}.pm-hrow .pro-wl>*{overflow-wrap:anywhere}
.pm-cf .pp-chips,.pm-to .pp-chips{display:flex;gap:6px;flex-wrap:wrap}.pm-ins{margin:0 0 6px}.pm-pv{border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:12px}
.pm-set{margin:0 0 16px;max-width:760px}.pm-dns code{font-size:.8rem;overflow-wrap:anywhere}.pm-val{display:block;max-width:28ch;word-break:break-all}.pm-rv{display:grid;gap:12px}
.pm-set p,.pm-set b,.pm-cf p,.pm-msgs b{overflow-wrap:anywhere}.pm-set p.mute,.pm-cf p.mute,.pm-rv p.mute,#pm-tf p.mute,#pm-af p.mute{white-space:normal;overflow:visible} /* the portal's one-line form notes (phones) would cut these */
@media (max-width:700px){.pm-dns thead{display:none}.pm-dns,.pm-dns tbody,.pm-dns tr,.pm-dns td{display:block;width:auto}.pm-dns tr{padding:10px 0;border-bottom:1px solid var(--line)}.pm-dns td{border:0;padding:2px 0}.pm-dns td:first-child{font-weight:600;color:var(--ink)}.pm-val{max-width:none}}

/* Wedding credit packs (api/_partners.js CREDIT_PACKS): one radio card per pack */
.pp-packs{border:0;padding:0;margin:0 0 12px;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.pp-packs legend{margin-bottom:6px}
.pp-pack{display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;cursor:pointer}.pp-pack:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.pp-pack>span{display:grid;gap:2px;min-width:0}.pp-form .pp-pack input[type=radio]{width:20px;height:20px;min-height:0;flex:none;margin:2px 0 0;padding:0}.pp-pack .tag{justify-self:start}
/* the inquiry form ("Check Availability", api/_landing.js formOf): under the landing card, and alone at /inquire for the planner's own website */
.pp-lask{margin:14px 0 0}.pp-lask a{display:inline-flex;align-items:center;min-height:44px;padding:0 6px;color:var(--ink);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 70%,transparent);text-underline-offset:4px;font-weight:600}
.pp-inq{width:100%;max-width:640px;box-sizing:border-box;background:var(--surface);border-radius:24px;padding:24px 20px;text-align:left;box-shadow:0 1px 2px rgba(30,27,24,.05),0 18px 48px rgba(30,27,24,.08);scroll-margin-top:16px}
[data-theme=dark] .pp-inq{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 18px 48px rgba(0,0,0,.35)}
.pp-inq h2{font-size:1.5rem;margin:0 0 .3rem}.pp-iform{max-width:none;margin-top:12px}.pp-iform textarea{width:100%;box-sizing:border-box}
.pp-iph{display:grid;gap:.4rem;font-size:.84rem;color:var(--mute);font-weight:500}.pp-iphr{display:grid;grid-template-columns:minmax(0,9.5rem) minmax(0,1fr);gap:8px}.pp-iphr select,.pp-iphr input{min-width:0;width:100%}
.pp-iund{align-self:end;min-height:44px}.pp-iev{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:4px 16px}.pp-iev legend{font-weight:500;color:var(--mute);margin-bottom:4px}.pp-iev .chk{min-height:40px}
.pp-imsg:empty{display:none}.pp-ipriv a{color:inherit}.pp-ithanks{padding:8px 0;outline:none}.pp-ithanks h2{margin:0 0 .4rem}
body.pp-embed{background:transparent}body.pp-embed .pp-main{padding-top:12px;padding-bottom:16px}body.pp-embed .pp-inq{max-width:none;box-shadow:none;border:1px solid var(--line)}.pp-epow{text-align:center;margin:12px 0 0}.pp-epow a{color:inherit}
@media (max-width:420px){.pp-inq{padding:20px 14px;border-radius:18px}.pp-iphr{grid-template-columns:minmax(0,7.5rem) minmax(0,1fr)}}
/* Leads (public/leads.js): the board, the list, the dashboard and a lead's record */
.ld-tools{align-items:flex-start;flex-wrap:wrap}.ld-tools .pp-q{flex:1 1 260px}.ld-more{flex:1 1 100%}.ld-more summary{cursor:pointer;min-height:40px;display:inline-flex;align-items:center;font-weight:500}
.ld-fgrid{display:grid;gap:10px 12px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));align-items:end;margin-top:8px}.ld-fgrid input,.ld-fgrid select{width:100%;min-width:0}
.ld-board{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:12px;overflow-x:auto;padding:4px 2px 12px;margin-top:12px;scroll-snap-type:x proximity}
.ld-col{background:var(--soft);border-radius:var(--r);padding:10px;min-width:0;scroll-snap-align:start;display:flex;flex-direction:column}.ld-col h2{font:600 .95rem/1.3 var(--sans);margin:2px 4px 10px;display:flex;justify-content:space-between;gap:8px}
.ld-cards{display:grid;gap:8px;align-content:start;flex:1;min-height:80px;border-radius:calc(var(--r) - 4px);transition:box-shadow .15s}.ld-cards.over{box-shadow:0 0 0 2px var(--accent) inset}
.ld-card{background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--r) - 2px);padding:10px 12px;cursor:grab;min-width:0}.ld-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ld-card.drag{opacity:.5}.ld-card.un{box-shadow:inset 3px 0 0 var(--accent)}
.ld-card h3{font:600 .98rem/1.3 var(--sans);margin:0 0 .2rem;overflow-wrap:anywhere}.ld-card h3 a{color:var(--ink);text-decoration:none}.ld-card h3 a:hover{text-decoration:underline}.ld-card p{margin:.15rem 0}
.ld-meta{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.ld-av{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--ink);color:var(--on-ink);font:600 .68rem/1 var(--sans);margin-left:auto}
.ld-mv{display:block;margin-top:6px}.ld-mv select{width:100%;min-height:36px;font-size:.84rem}.ld-empty{margin:6px 4px}
.ld-table td,.ld-table th{white-space:nowrap}.ld-table td:first-child{white-space:normal;min-width:180px}.ld-sort{font-weight:600;color:var(--ink);text-decoration:none;min-height:32px}
.ld-dash{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));margin-top:12px}.ld-dash .card{min-width:0}
.ld-bars{width:100%;border-collapse:collapse;font-size:.86rem}.ld-bars th{text-align:left;font-weight:500;color:var(--body);padding:4px 8px 4px 0;white-space:nowrap;width:1%}.ld-bars td{padding:4px 0;display:flex;align-items:center;gap:8px}
.ld-bar{display:inline-block;height:14px;min-width:2px;border-radius:7px;background:var(--accent)}.ld-bn{color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.ld-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0 16px}.ld-acts select{min-height:44px;max-width:100%}.ld-nocr{color:var(--body);max-width:36rem}
.ld-rec{display:grid;gap:16px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}@media (max-width:860px){.ld-rec{grid-template-columns:minmax(0,1fr)}}.ld-colm{display:grid;gap:16px;align-content:start;min-width:0}.ld-colm .card{min-width:0}.ld-colm .pp-form{max-width:none}
.ld-tasks,.ld-notes,.ld-tl{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:8px}.ld-tasks li{display:flex;gap:8px;align-items:center;justify-content:space-between}.ld-tasks li.done span{text-decoration:line-through;color:var(--mute)}
.ld-tl li{border-left:2px solid var(--line);padding:2px 0 2px 10px;overflow-wrap:anywhere;font-size:.92rem}.ld-tl li[data-k=stage],.ld-tl li[data-k=created],.ld-tl li[data-k=convert]{border-left-color:var(--accent)}.ld-tl a{color:var(--ink)}
.ld-notes li{border-bottom:1px solid var(--line);padding-bottom:6px}.ld-notes p{margin:.2rem 0;overflow-wrap:anywhere}.ld-tf{flex-wrap:wrap}.ld-tf .pp-q{flex:1 1 200px}
.ld-copy{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ld-copy code{overflow-wrap:anywhere}.ld-embed textarea{width:100%;box-sizing:border-box;font:500 .82rem/1.45 var(--mono)}.ld-dup{margin:0 0 12px}
.pp-iform p.mute,.ld-colm .pp-form p.mute,#ld-sf p.mute{white-space:normal;overflow:visible} /* the privacy note and the record's notes are read in full on a phone */
.pp-iphr:has(>input:only-child){grid-template-columns:minmax(0,1fr)}

/* The branded sender's setup steps (public/pmail.js brandSteps): done, the step under way (a spinner), or one that needs attention */
.pm-steps{list-style:none;padding:0;margin:10px 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;counter-reset:none}.pm-steps li{display:grid;justify-items:center;gap:6px;text-align:center;font-size:.8rem;color:var(--mute);position:relative}
.pm-steps li:not(:first-child)::before{content:"";position:absolute;top:14px;right:50%;width:100%;height:2px;background:var(--line);z-index:0}.pm-steps li.done:not(:first-child)::before,.pm-steps li.now:not(:first-child)::before{background:var(--accent)}
.pm-dot{position:relative;z-index:1;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--surface);border:2px solid var(--line);font-weight:600;color:var(--mute)}
.pm-steps li.done .pm-dot{background:var(--accent);border-color:var(--accent);color:var(--pp-on-accent,#fff)}.pm-steps li.done,.pm-steps li.now{color:var(--ink)}.pm-steps li.now .pm-dot{border-color:var(--accent)}.pm-steps li.bad .pm-dot{border-color:var(--red);color:var(--red)}.pm-steps li.bad{color:var(--red)}
.pm-spin{width:12px;height:12px;border-radius:50%;border:2px solid var(--accent);border-right-color:transparent;animation:pmspin .9s linear infinite}@keyframes pmspin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.pm-spin{animation:none}}
/* The planner team's sign-in on a planner's own address (partner.js gate): one centered card on a soft wash of their color, like the landing
   page: their logo (or initials) and name, Planner Team Sign In, Google and Apple as big buttons (signin.css, each in its own maker's colors),
   "or", the emailed code (the front door's six boxes), small links. No header bar (the card names them); room at the foot for the Help button. */
body.pp-signin{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}body.pp-signin .pp-top{display:none}
body.pp-signin #pp-main{flex:1 0 auto;display:flex;flex-direction:column;width:100%;max-width:none;padding:max(20px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left))}
.pp-sgn{position:relative;isolation:isolate;flex:1;display:flex;align-items:center;justify-content:center}
.pp-sgn::before{content:"";position:fixed;inset:0 0 auto;height:62vh;z-index:-1;pointer-events:none;background:radial-gradient(120% 80% at 50% 0,color-mix(in srgb,var(--accent) 13%,transparent),transparent 70%)}
.pp-scard{width:100%;max-width:440px;box-sizing:border-box;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:28px 20px 18px;display:grid;gap:14px;justify-items:center;text-align:center;
  box-shadow:0 1px 2px rgba(30,27,24,.06),0 8px 24px rgba(30,27,24,.06),0 24px 60px rgba(62,31,71,.08)}
[data-theme=dark] .pp-scard{box-shadow:0 0 0 1px rgba(255,255,255,.04),0 18px 48px rgba(0,0,0,.4)}
.pp-scard>*{width:100%;margin:0}.pp-scard>.pp-mono,.pp-scard>.pp-llogo{width:auto}.pp-scard .pp-mono{width:64px;height:64px;font-size:1.6rem}.pp-scard .pp-llogo{max-height:64px}
.pp-seb{font-size:.9rem;font-weight:600;color:var(--body);overflow-wrap:anywhere}
.pp-scard h1{font-size:clamp(1.75rem,7vw,2.1rem);line-height:1.1;margin:0;overflow-wrap:anywhere}.pp-scard h1 em{color:var(--accent-ink)}
.pp-ssub{color:var(--body);font-size:.95rem;line-height:1.5;margin-top:-6px!important}
.pp-serr,.pp-smsg{font-size:.92rem;line-height:1.5;text-align:left;overflow-wrap:anywhere}.pp-serr:empty,.pp-smsg:empty{display:none}
.pp-serr,.pp-smsg.bad{color:var(--red);background:var(--red-bg);border-radius:12px;padding:.7rem .9rem}.pp-smsg{color:var(--body)}
.pp-sbtns{display:grid;gap:10px}.pp-sbtns:not(:has(button:not([hidden]))){display:none}
.pp-scard .sgn-b{min-height:52px}
.pp-sform{display:grid;gap:12px;text-align:left}.pp-sstep{display:grid;gap:12px}.pp-sstep[hidden]{display:none}
.pp-sform label.f{display:grid;gap:6px;font-size:.875rem;font-weight:500;color:var(--body)}
.pp-sform input[type=email]{width:100%;min-height:52px;font-size:16px;border-radius:12px}
.pp-sgo{width:100%;min-height:52px;border-radius:999px;font-weight:600}a.pp-sgo{display:flex;align-items:center;justify-content:center;text-decoration:none}
.pp-sttl{margin:0;font-family:var(--serif);font-size:1.35rem;text-align:center;color:var(--ink)}.pp-ssent{margin:0;text-align:center;color:var(--body);line-height:1.5;overflow-wrap:anywhere}
.pp-sagain{margin:0;display:flex;gap:.4rem;justify-content:center;align-items:center;flex-wrap:wrap;color:var(--mute);font-size:.92rem;min-height:44px}.pp-sagain .sgn-link{min-height:0}.pp-schg{justify-self:center}
.pp-scard.coding :is(.pp-ssub,.pp-sbtns,.sgn-or,.pp-slinks,.pp-serr){display:none} /* the code step stands alone, like a confirm screen */
.pp-slinks{display:grid;gap:2px;padding-top:10px;border-top:1px solid var(--line);font-size:.875rem;color:var(--mute)}.pp-slinks p{margin:0}
.pp-slinks a{display:inline-flex;align-items:center;min-height:44px;color:var(--body);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:4px}.pp-slinks a:hover{color:var(--ink);text-decoration-color:var(--accent)}
body.pp-signin .pp-foot{flex:none;width:100%;max-width:none;box-sizing:border-box;text-align:center;border-top:0;padding:4px 16px calc(84px + env(safe-area-inset-bottom))} /* the floating Help button sits below the card and Powered by, never on them */
body.pp-signin .pp-foot a{display:inline-flex;align-items:center;min-height:44px}
@media (min-width:560px){.pp-scard{padding:36px 36px 22px}}
[data-theme=dark] .pp-scard .pp-llogo{background:#fff;border-radius:14px;padding:8px 12px}
/* Team: an invited person until their first sign-in, with Resend Invitation and Remove Person; the sign-in link to copy when email is off */
.pp-tmacts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}.pp-tmacts button,.pp-tmacts select{min-height:44px}
.pp-rm,.pp-rm:hover{color:var(--red);border-color:color-mix(in srgb,var(--red) 45%,var(--line))}.pp-rm:hover{background:var(--red-bg)}
.pp-tmsg{margin:6px 0 0}.pp-tmsg:empty{display:none}.pp-copy{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}.pp-copy code{overflow-wrap:anywhere;min-width:0;flex:1 1 200px;background:var(--soft);border-radius:8px;padding:6px 8px}
.pp-signways{max-width:720px;margin-top:16px}.pp-signways .sga-li .pp-tag{flex:none;white-space:nowrap}.pp-signways .sga-li button{min-height:44px}
a.pp-me{color:var(--ink);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}a.pp-me:hover{text-decoration:underline;text-decoration-color:var(--accent)}
.mn-edit .f{display:block;margin:0 0 .7rem}.mn-edit textarea,.mn-edit input:not([type=checkbox]){width:100%;box-sizing:border-box}.mn-qe{border:1px solid var(--line);border-radius:12px;padding:.6rem .8rem;margin:0 0 .7rem;min-width:0}.mn-qrow{gap:.5rem;align-items:end}.mn-qrow .f{flex:1 1 10rem;margin:0}.mn-qrow .mn-qa{flex:0 1 8rem}
