:root{--gold:#c49a2c;--gold-d:#9c7a1c;--gold-l:#f6edd3;--ink:#1f2a24;--muted:#6b6f6a;--bg:#f7f5ef;--card:#fff;--line:#e8e3d6;--red:#b3261e;--red-l:#fbe9e7;--amber:#a15c00;--amber-l:#fff3dc;--green:#2e6b3a;--green-l:#e6f2e6;--r:14px;--safe-b:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:var(--gold-d)}
h1,h2,h3,h4{margin:.2em 0 .4em;line-height:1.2}
.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.gold{color:var(--gold-d)}
.page{max-width:640px;margin:0 auto;padding:12px 16px calc(84px + var(--safe-b))}
.spacer{height:12px}
/* app bar */
.appbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;background:#fff;border-bottom:1px solid var(--line)}
.appbar-title{flex:1;font-weight:700;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brandmark img{width:36px;height:36px;display:block}
.iconbtn{font-size:2rem;line-height:1;text-decoration:none;color:var(--ink);width:36px;text-align:center}
.linkbtn{background:none;border:0;color:var(--gold-d);font:inherit;font-size:.9rem;padding:6px 4px;cursor:pointer;text-decoration:none}
.linkbtn.danger,.danger{color:var(--red)!important}
.logout{margin:0}
/* tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;background:#fff;border-top:1px solid var(--line);padding-bottom:var(--safe-b)}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;font-size:.72rem;color:var(--muted);text-decoration:none}
.tabbar a .ti{font-size:1.3rem;filter:grayscale(1);opacity:.7}
.tabbar a.on{color:var(--gold-d);font-weight:600}.tabbar a.on .ti{filter:none;opacity:1}
/* buttons/forms */
.btn{display:inline-flex;justify-content:center;align-items:center;gap:6px;width:100%;margin:8px 0;padding:12px 16px;border-radius:12px;border:0;background:linear-gradient(180deg,var(--gold),var(--gold-d));color:#fff;font:600 1rem/1.2 inherit;text-decoration:none;cursor:pointer;box-shadow:0 2px 6px rgba(156,122,28,.25)}
.btn:disabled{opacity:.6}
.btn-lg{padding:15px 18px;font-size:1.05rem}
.btn-ghost{background:#fff;color:var(--gold-d);border:1.5px solid var(--gold);box-shadow:none}
.btn-ghost.danger{border-color:var(--red)}
.stack{display:flex;flex-direction:column;gap:12px}
label{display:flex;flex-direction:column;gap:5px;font-size:.85rem;font-weight:600;color:#444}
label small{font-weight:400;color:var(--muted)}
label.check{flex-direction:row;align-items:center;gap:10px;font-size:1rem}
input,select,textarea{font:16px/1.3 inherit;padding:11px 12px;border:1px solid #d9d3c3;border-radius:10px;background:#fff;color:var(--ink);width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);border-color:transparent}
input[type=checkbox]{width:22px;height:22px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.inline{display:flex;gap:10px}.inline .btn{flex:1}
.alert{background:var(--red-l);color:var(--red);padding:10px 12px;border-radius:10px;margin:8px 0}
.toast{position:fixed;top:calc(64px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);z-index:9;background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;font-size:.9rem;box-shadow:0 4px 14px rgba(0,0,0,.2);transition:opacity .4s;max-width:90vw;text-align:center}
.toast.gone{opacity:0;pointer-events:none}
/* cards & lists */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:12px 0}
details.card summary{font-weight:600;cursor:pointer;color:var(--gold-d)}
details.card[open] summary{margin-bottom:12px}
.sect{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gold-d);margin:20px 2px 8px}
.list{display:flex;flex-direction:column;gap:8px}
.row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;color:inherit;text-decoration:none}
.row.col{flex-direction:column;align-items:stretch}
.row form{margin:0}
.grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.grow small,.right small{color:var(--muted);font-size:.8rem}
.right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
.pill{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:600;background:#f0ede4;color:#555;text-decoration:none;white-space:nowrap}
.pill.paid,.pill.unpaid,.pill.overdue,.pill.void{text-transform:capitalize}
.pill.paid,.pill.ok{background:var(--green-l);color:var(--green)}
.pill.unpaid,.pill.soon{background:var(--amber-l);color:var(--amber)}
.pill.overdue{background:var(--red-l);color:var(--red)}
.pill.void{background:#eee;color:#888;text-decoration:line-through}
.greet{font-size:1.35rem;font-weight:700;margin:6px 2px 4px}
.banner{display:flex;justify-content:space-between;align-items:center;background:var(--gold-l);border:1px solid #ead9a6;border-radius:12px;padding:12px 14px;color:var(--ink);text-decoration:none;margin:8px 0}
.banner b{font-size:1.15rem;color:var(--gold-d)}
/* dog cards */
.dogcard{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px;color:inherit;text-decoration:none}
.dogthumb{width:68px;height:68px;border-radius:12px;overflow:hidden;background:var(--gold-l);display:flex;align-items:center;justify-content:center;font-size:2rem;flex:none}
.dogthumb img{width:100%;height:100%;object-fit:cover}
.dogmeta{flex:1;display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.dogmeta b{font-size:1.1rem}.dogmeta small{color:var(--muted)}
.chev{font-size:1.6rem;color:var(--muted)}
/* trials */
.trial{display:flex;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px}
.trial .date{flex:none;width:50px;height:54px;border-radius:10px;background:var(--ink);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.trial .date b{font-size:1.3rem}.trial .date small{font-size:.7rem;text-transform:uppercase;color:#e9d99c;margin-top:3px}
.entries{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
/* dog page */
.doghero{text-align:center;margin:4px 0 8px}
.dogphoto{width:100%;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:var(--gold-l);display:flex;align-items:center;justify-content:center;font-size:4rem}
.dogphoto img{width:100%;height:100%;object-fit:cover}
.doghero h2{margin:12px 0 0;font-size:1.6rem}
.regname{margin:2px 0;font-style:italic;color:#555}
.seg{display:flex;gap:4px;background:#ebe6d8;border-radius:12px;padding:4px;margin:10px 0 12px;position:sticky;top:57px;z-index:4}
.seg.scroll{overflow-x:auto;scrollbar-width:none}.seg.scroll::-webkit-scrollbar{display:none}
.seg a{flex:1;text-align:center;padding:8px 6px;border-radius:9px;font-size:.82rem;font-weight:600;color:#555;text-decoration:none;white-space:nowrap;position:relative}
.seg a.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.seg .dot{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--red)}
.tabpane{display:none}.tabpane.on{display:block}
.facts{display:grid;grid-template-columns:auto 1fr;gap:10px 14px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:0}
.facts dt{color:var(--muted);font-size:.85rem}.facts dd{margin:0;font-weight:600;text-align:right}
.facts.compact{border:0;padding:6px 0}
.vax.overdue{border-left:4px solid var(--red)}.vax.soon{border-left:4px solid #e0a020}.vax.ok{border-left:4px solid #6aa36f}
/* pedigree tree */
.pedwrap{overflow-x:auto;margin:0 -16px;padding:0 16px}
.ped{display:grid;min-width:340px;grid-template-columns:.9fr 1fr 1.1fr;grid-template-rows:repeat(8,minmax(44px,auto));gap:4px;
grid-template-areas:"s ss sss" "s ss ssd" "s sd sds" "s sd sdd" "d ds dss" "d ds dsd" "d dd dds" "d dd ddd"}
.pc{background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px 6px;word-break:break-word;display:flex;flex-direction:column;justify-content:center;gap:1px;font-size:.8rem;position:relative}
.pc.sire{border-left:4px solid #5b7fa6}.pc.dam{border-left:4px solid #b9767f}
.pc small{color:var(--muted);font-size:.58rem;text-transform:uppercase;letter-spacing:.04em}
.pc b{font-size:.74rem;line-height:1.15}.pc.g2 b{font-size:.8rem}.pc em{color:var(--gold-d);font-style:normal;font-weight:700;font-size:.72rem}.pc i{color:var(--muted);font-size:.7rem;font-style:normal}
.pc.g1 b{font-size:.88rem}.pc.g3 small{display:none}
.pedfield{border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.pedfield legend{font-size:.8rem;font-weight:700;color:#555;padding:0 4px}
.pedfield.sire{border-left:4px solid #5b7fa6}.pedfield.dam{border-left:4px solid #b9767f}
.pedfield input{padding:8px 10px}
/* gallery */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gallery figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.gallery img,.gallery video{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#000}
.gallery figcaption{padding:6px 8px;font-size:.78rem}
.gallery.admin .acts{display:flex;justify-content:space-between;padding:0 4px 4px}
.gallery.admin .acts form{margin:0}
/* wins */
.medal{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;background:#9aa;flex:none}
.medal.p1{background:linear-gradient(135deg,#c9a12f,#8a6a12)}.medal.p2{background:linear-gradient(135deg,#b4b8be,#6b7078)}.medal.p3{background:linear-gradient(135deg,#d9a273,#9a5f31)}
/* invoice */
.invhead{display:flex;justify-content:space-between;align-items:center;gap:10px}
.invhead img{width:130px}
.items{width:100%;border-collapse:collapse;margin:8px 0}
.items td{padding:9px 0;border-bottom:1px solid var(--line);font-size:.92rem}
.items td small{color:var(--muted)}
.items .num{text-align:right;white-space:nowrap;padding-left:10px}
.items .total td{font-weight:800;font-size:1.05rem;border-bottom:0}
/* admin */
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.quick a{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 4px;text-align:center;font-size:.8rem;font-weight:700;color:var(--gold-d);text-decoration:none}
.dogbar{display:flex;align-items:baseline;gap:8px;margin:4px 2px}
.dogbar b{font-size:1.3rem}.dogbar small{color:var(--muted);flex:1}
.picker{align-items:center;text-align:center;border:2px dashed var(--gold);border-radius:var(--r);padding:26px 12px;background:var(--gold-l);cursor:pointer;color:var(--ink)}
.picker .big{font-size:2.6rem}.picker b{font-size:1.1rem}.picker small{color:var(--muted);font-weight:400}
.picker input{position:absolute;opacity:0;width:1px;height:1px}
.previews{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.pv{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;background:#000}
.pv img,.pv video{width:100%;height:100%;object-fit:cover}
.pv span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.4rem;text-shadow:0 1px 4px #000}
.progress{position:relative;height:26px;border-radius:999px;background:#eee;overflow:hidden}
.progress div{height:100%;width:0;background:var(--gold);transition:width .2s}
.progress span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}
/* landing */
body.landing{background:#fff}
.landing .page{padding-bottom:30px}
.hero{text-align:center;padding:18px 4px 6px}
.hero-logo{width:100%;max-width:420px}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--gold-d);margin:4px 0 10px;font-weight:700}
.hero h1{font-size:1.65rem;margin:0 0 10px}
.lead{color:#444;font-size:.98rem;margin:0 0 14px}
.install-hint{margin-top:6px}
.features{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}
.feat{background:var(--bg);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:3px}
.feat span{font-size:1.5rem}.feat b{font-size:.9rem}.feat small{color:var(--muted);font-size:.78rem}
.footnote{text-align:center;color:#999;font-size:.75rem}
.login{max-width:420px;margin:0 auto;padding-top:20px}
.login-logo{width:100%;max-width:320px;display:block;margin:0 auto}
.login h2{text-align:center}
.standalone .install-hint,.standalone #installBtn{display:none}
/* v2: landing login, running statement, trial entry, line-item editor */
.landbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;padding:calc(8px + env(safe-area-inset-top,0px)) 14px 8px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);margin:-12px -16px 0}
.landbar img{width:30px;height:30px}.landbar span{flex:1;font-weight:700;font-size:.95rem}
.landbar-login{background:var(--ink);color:#fff;text-decoration:none;font-weight:700;font-size:.9rem;padding:9px 14px;border-radius:999px}
.btn-xl{padding:18px 20px;font-size:1.25rem;border-radius:16px;margin:14px 0 4px;box-shadow:0 6px 18px rgba(156,122,28,.35);letter-spacing:.01em}
.btn-xl .lock{font-size:1.1rem}
.login-sub{margin:4px 0 18px}
.btn-sm{width:auto;padding:8px 14px;font-size:.88rem;margin:8px 0 0;align-self:flex-start;border-radius:10px}
.pill.open{background:#e7eef8;color:#2b5797}
.statement{background:#fff;border:1px solid #ead9a6;border-radius:var(--r);padding:14px;margin:8px 0;box-shadow:0 2px 10px rgba(156,122,28,.08)}
.st-head{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--gold-l);padding-bottom:8px;margin-bottom:4px}
.st-head small{display:block;color:var(--gold-d);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.st-head b{font-size:1.2rem}
.st-items,.items{width:100%;border-collapse:collapse}
.st-items th{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:left;padding:6px 0;font-weight:600}
.st-items td{padding:8px 0;border-bottom:1px solid var(--line);font-size:.88rem;vertical-align:top}
.st-items td small{color:var(--muted)}
.st-items .dt,.items .dt{white-space:nowrap;color:var(--muted);width:54px;padding-right:6px;font-size:.82rem}
.st-items .num,.st-items th.num{text-align:right;white-space:nowrap;padding-left:8px}
.st-items tfoot td{border:0;font-weight:800;font-size:1.1rem;padding-top:10px}
.st-items tfoot .num{color:var(--gold-d)}
.st-note{margin:6px 0 2px}
.banner.warn{background:var(--red-l);border-color:#f2c5c0}.banner.warn b{color:var(--red)}
.trial small.closed{color:var(--red)}
.myentries{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.entry{display:flex;align-items:center;gap:6px}.entry form{margin:0}.entry .linkbtn{font-size:.8rem;padding:2px 4px}
.enterdog{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px}
.enterdog:has(input:checked){border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-l)}
.pick{flex-direction:row;align-items:center;gap:10px;font-weight:400;color:var(--ink)}
.pick input{flex:none}
.dogthumb.sm{width:48px;height:48px;font-size:1.5rem;border-radius:10px}
.enterdog select{padding:9px 10px}
.enterdog select:disabled{opacity:.45}
.quick a.hot{background:var(--gold);color:var(--on-gold,#fff);border-color:var(--gold)}
.list.tight{gap:4px}
.entryrow{display:flex;justify-content:space-between;align-items:center;background:var(--bg);border-radius:8px;padding:6px 8px}
.entryrow a{color:inherit;text-decoration:none;font-size:.88rem}.entryrow a.btn{color:#fff}.entryrow form{margin:0}
.items-edit{gap:6px}
.li{background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 12px}
.li summary{list-style:none;display:flex;align-items:center;gap:10px;padding:12px 0;cursor:pointer}
.li summary::-webkit-details-marker{display:none}
.li summary .dt{color:var(--muted);font-size:.8rem;width:46px;flex:none}
.li summary .grow{font-size:.9rem}
.li summary .edit{color:var(--gold-d);font-size:1rem}
.li[open]{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-l)}
.li form{margin:0 0 10px}
.tag{display:inline-block;margin-top:2px;font-size:.66rem!important;background:var(--gold-l);color:var(--gold-d)!important;border-radius:6px;padding:1px 6px;font-weight:700;align-self:flex-start}
.totalbar{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;margin:8px 0;background:var(--ink);color:#fff;border-radius:12px}
.totalbar b{font-size:1.2rem;color:#f0d77e}
.three{display:grid;grid-template-columns:1.4fr .7fr 1fr;gap:8px}
.entry{flex-wrap:nowrap}.entry .pill{white-space:normal;flex:0 1 auto;min-width:0}.entry form{flex:none}
/* v3: compact accordions on customer home */
details.balance{margin:8px 0}
details.balance>summary{list-style:none;cursor:pointer;margin:0}
details.balance>summary::-webkit-details-marker,details.tcard>summary::-webkit-details-marker{display:none}
details.balance>summary small{display:block;font-size:.72rem;color:var(--muted);margin-top:1px}
.bal-amt{display:flex;align-items:center;gap:8px}
.caret{font-style:normal;color:var(--gold-d);font-size:.9rem;transition:transform .2s}
details[open]>summary .caret{transform:rotate(180deg)}
details.balance[open]>summary{border-bottom-left-radius:0;border-bottom-right-radius:0}
.bal-body{background:#fff;border:1px solid #ead9a6;border-top:0;border-radius:0 0 12px 12px;padding:10px 14px 12px}
.st-items tfoot .pastdue td{font-size:.88rem;font-weight:600;color:var(--red);padding-top:4px}
.st-items tfoot .pastdue a{color:var(--red)}
.st-items tfoot .grand td{border-top:1px solid var(--line);padding-top:8px}
details.tcard{display:block;padding:0}
details.tcard>summary{list-style:none;display:flex;gap:12px;padding:12px;cursor:pointer;align-items:flex-start}
.adddog{flex:none;align-self:center;background:var(--gold-l);color:var(--gold-d);border:1px solid #ead9a6;font-weight:700;font-size:.78rem;padding:6px 9px;border-radius:999px;text-decoration:none;white-space:nowrap}
details.tcard[open]{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-l)}
.tdetail{padding:0 12px 12px;border-top:1px solid var(--line)}
.tdetail .facts{gap:6px 12px}
.tdetail dd.closed{color:var(--red)}
.tdetail .sect{margin-top:10px}
.er-right{display:flex;align-items:center;gap:8px}
.entryrow small{color:var(--muted)}

/* ===== v4: multi-tenant SaaS (platform, owner console, billing) ===== */
.brandname{font-size:1.7rem;color:var(--gold-d);margin:18px 0 8px;text-align:center;letter-spacing:.01em}
.pad{margin-left:16px;margin-right:16px}
.pricecard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:14px 0;text-align:center}
.pricecard b{font-size:2rem;color:var(--ink)}.pricecard span{color:var(--muted)}.pricecard small{display:block;color:var(--muted);margin-top:4px}
.small-logo{max-width:180px}
.prefixed{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.prefixed span{padding:0 4px 0 12px;color:var(--muted)}.prefixed input{border:0!important;margin:0!important;flex:1}
label.check{display:flex;gap:10px;align-items:flex-start;font-weight:500}label.check input{width:22px;height:22px;margin:2px 0 0}
.susp-icon{display:flex;justify-content:center;margin:10px 0 2px;color:var(--gold)}.susp-icon svg{display:block}.susp-icon .si-ring{fill:currentColor;fill-opacity:.14;stroke:currentColor;stroke-width:2.5}.susp-icon .si-bar{fill:currentColor}
.suspended h2{text-align:center}
/* ended/paused screen fills the viewport, content centered (Oct 25 2026) */
body.susp-page{min-height:100vh;min-height:100dvh}
body.susp-page .page{min-height:100vh;min-height:100dvh;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding-top:24px;padding-bottom:calc(24px + var(--safe-b))}
body.susp-page .suspended{width:100%;max-width:420px;margin:0 auto}
html:has(body.susp-page:not([class*="theme-"])){background:#fff}
.pill.s-free{background:#f3ecd6;color:#7a5d09}.pill.s-trial{background:#e7eef8;color:#2b5797}.pill.s-active{background:var(--green-l);color:var(--green)}
.pill.s-past_due,.pill.failed{background:var(--amber-l);color:var(--amber)}.pill.s-suspended{background:var(--red-l);color:var(--red)}.pill.s-canceled,.pill.void{background:#eee;color:#666}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 12px}
.tiles div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 8px;text-align:center}
.tiles b{display:block;font-size:1.15rem}.tiles small{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}
.acct{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-bottom:10px;color:inherit;text-decoration:none}
.acct-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.acct-top b{font-size:1.02rem}
.acct-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;margin-top:8px;font-size:.82rem}
.acct-grid span{color:var(--muted)}.acct-grid em{font-style:normal;font-weight:600;color:var(--ink)}
.kv{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:4px 14px;margin-bottom:12px}
.kv div{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9rem}.kv div:last-child{border-bottom:0}
.kv span{color:var(--muted)}.kv b{text-align:right}
.bill{background:var(--ink);color:#fff;border-radius:var(--r);padding:14px 16px;margin-bottom:12px}
.bill .amt{font-size:2rem;font-weight:700;color:#f0d77e}.bill small{color:#cfd6d0;display:block}
.bill .calc{margin-top:8px;font-size:.85rem;color:#e6e9e6}
.nb.warn{background:var(--amber-l);color:var(--amber);border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:.88rem}
.nb.bad{background:var(--red-l);color:var(--red);border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:.88rem}
.nb.info{background:#e7eef8;color:#2b5797;border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:.88rem}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.actions form{margin:0}.actions .btn{width:100%}
.btn.btn-stop{background:var(--red);border:0;color:#fff;box-shadow:none}
.sim{border:1px dashed var(--line);border-radius:var(--r);padding:10px;margin-bottom:12px}.sim p{margin:0 0 8px}
.bars{display:flex;align-items:flex-end;gap:6px;height:90px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 10px 6px;margin-bottom:12px}
.bars div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:.66rem;color:var(--muted)}
.bars i{display:block;width:100%;background:var(--gold);border-radius:6px 6px 0 0;min-height:3px}.bars b{font-size:.72rem;color:var(--ink)}
.privacy{font-size:.78rem;color:var(--muted);text-align:center;margin:6px 0 14px}
.filters{display:flex;gap:6px;overflow-x:auto;margin:0 0 10px;align-items:center}.filters .pill{padding:6px 12px;font-size:.8rem}.filters a{white-space:nowrap}
.pill.on{background:var(--ink);color:#fff}
.swatch{display:flex;gap:10px}
input[type=color]{height:46px;padding:4px 6px;background:#fff;border:1px solid var(--line);border-radius:10px;width:100%}

/* ===== v5: per-kennel dark login background + empty states ===== */
.empty{text-align:center;padding:10px 6px}.empty p{margin:4px 0}
.art-icon{display:inline-block;width:28px;height:28px;background:currentColor;-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;vertical-align:middle}
body.login-dark{background:var(--login-bg,#000);color:#efe7d2}
body.login-dark .login{padding-top:28px}
body.login-dark .login h2{color:#f6eedb;letter-spacing:.02em}
body.login-dark label{color:#e8dfc6}
body.login-dark input{background:#141414;color:#fff;border:1px solid #5a4b2a}
body.login-dark input::placeholder{color:#9b9078}
body.login-dark input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(196,154,44,.35)}
body.login-dark input:-webkit-autofill{-webkit-text-fill-color:#fff;-webkit-box-shadow:0 0 0 40px #141414 inset;caret-color:#fff}
body.login-dark .btn{background:linear-gradient(180deg,#e0b84a,var(--gold));color:#111;box-shadow:0 4px 16px rgba(196,154,44,.25)}
body.login-dark .muted{color:#b9af97}
body.login-dark a{color:#e6bf55}
body.login-dark .alert{background:#3b1411;color:#ffcfc7;border-color:#7a2a22}
body.login-dark .login-logo{max-width:340px}
.login-divider{display:flex;align-items:center;gap:10px;margin:6px auto 0;max-width:260px;color:var(--gold)}
.login-divider span{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.login-divider .art-icon{width:20px;height:20px}
html:has(body.login-dark){background:var(--login-bg,#000)}
body.login-dark{min-height:100vh}

/* ===== v6: per-kennel banner (hero) ===== */
.kbanner{position:relative;margin:4px 0 12px;border-radius:16px;overflow:hidden;aspect-ratio:2.2/1;background:linear-gradient(135deg,var(--gold-d),var(--ink));box-shadow:0 2px 10px rgba(0,0,0,.12)}
.kbanner.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.kbanner.has-text::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(0,0,0,.62));pointer-events:none}
.kbanner-text{position:absolute;left:14px;right:14px;bottom:11px;z-index:1;color:#fff;font-weight:700;font-size:1.08rem;line-height:1.25;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.kbanner.fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:14px;aspect-ratio:2.6/1}
.kbanner.fallback .kbanner-text{position:static;text-align:center;font-size:.98rem}
.kb-logo{max-width:70%;max-height:70%;object-fit:contain}
.kb-logocard{background:#fff;border-radius:12px;padding:8px 14px;max-width:70%;display:flex}.kb-logocard img{max-width:100%;max-height:64px;object-fit:contain}
.kb-name{color:#fff;font-size:1.4rem;letter-spacing:.02em}
.hero .kbanner{margin:16px 0 14px}
.hero-pos{display:flex;gap:6px}.hero-pos label{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:8px;font-weight:600;font-size:.88rem;background:#fff}
.hero-preview{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:2.2/1;background:#ddd}
.hero-preview img{width:100%;height:100%;object-fit:cover;display:block}

/* ===== v7: heat cycles + editable rows ===== */
details.heat{padding:0;margin:12px 0}
details.heat>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer}
details.heat>summary::-webkit-details-marker{display:none}
details.heat>summary small{display:block;color:var(--muted);font-size:.82rem;margin-top:2px}
details.heat>summary small b{color:var(--ink)}
details.heat .heat-ic{flex:none;width:30px;height:30px;border-radius:50%;background:var(--gold-l);color:var(--gold-d);display:flex;align-items:center;justify-content:center;font-weight:700}
details.heat .caret{transition:transform .2s;color:var(--gold-d);font-style:normal}
details.heat[open] .caret{transform:rotate(180deg)}
.heat-body{border-top:1px solid var(--line);padding:6px 14px 10px}
.heat-year{font-size:.74rem;font-weight:700;letter-spacing:.08em;color:var(--gold-d);margin:10px 0 4px}
.heat-row{display:flex;flex-wrap:wrap;gap:4px 10px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:.9rem}
.heat-row b{min-width:58px}.heat-row span{color:var(--muted)}.heat-row small{flex-basis:100%;color:var(--muted)}
details.editrow{display:block}
details.editrow>summary{list-style:none;display:flex;align-items:center;gap:10px;cursor:pointer}
details.editrow>summary::-webkit-details-marker{display:none}
details.editrow[open]>summary{margin-bottom:8px}
details.editrow form{margin:6px 0 0}
/* v8: messages + client notes */
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#c62828;color:#fff;font:700 .72rem/1 inherit}
.tabbar a{position:relative}
.tb-badge{position:absolute;top:3px;left:calc(50% + 6px);min-width:18px;height:18px;font-size:.66rem;box-shadow:0 0 0 2px #fff}
.msg-link{margin:0 0 12px}.msg-link .ti{font-size:1.4rem}
.chat-head{display:flex;flex-direction:column;gap:2px;margin:2px 0 10px}.chat-head small{color:var(--muted)}
.chat{display:flex;flex-direction:column;gap:8px;padding:4px 0 8px;min-height:40vh}
.chat-empty{text-align:center;padding:30px 16px}
.bub{max-width:82%;padding:8px 12px 6px;border-radius:18px;background:#fff;border:1px solid var(--line);align-self:flex-start;word-wrap:break-word;overflow-wrap:anywhere}
.bub.me{align-self:flex-end;background:var(--gold-d);border-color:transparent;color:#fff;border-bottom-right-radius:6px}
.bub.them{border-bottom-left-radius:6px}
.bub p{margin:0;white-space:pre-wrap;line-height:1.35}
.bub .who{display:block;font-size:.72rem;font-weight:700;color:var(--gold-d);margin-bottom:2px}
.bub img{display:block;max-width:100%;max-height:320px;border-radius:12px;margin:2px 0 6px}
.bub time{display:block;font-size:.68rem;opacity:.7;margin-top:3px;text-align:right}
.seen{align-self:flex-end;font-size:.7rem;color:var(--muted);margin-top:-4px}
.composer{position:sticky;bottom:calc(64px + var(--safe-b,0px));display:flex;align-items:flex-end;gap:8px;background:var(--bg,#faf8f3);padding:8px 0;border-top:1px solid var(--line);z-index:3}
.composer textarea{resize:none;border-radius:20px;padding:10px 14px;max-height:140px}
.composer .cam{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:#fff;border:1px solid var(--line);font-size:1.2rem;cursor:pointer;flex:none}
.composer .send{width:42px;height:42px;border-radius:50%;border:0;background:var(--gold-d);color:#fff;font-size:1.1rem;flex:none;cursor:pointer}
.composer .send:disabled{opacity:.5}
.composer .att{display:flex;align-items:center;gap:10px;margin-bottom:6px}.composer .att img{width:56px;height:56px;object-fit:cover;border-radius:10px}
.chat-note{text-align:center;margin:6px 0 0}
.thread .avatar{width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex:none}
.thread .snip{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56vw}
.thread .right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.thread.unread b{font-weight:800}.thread.unread .snip{color:var(--ink);font-weight:600}
.notes{display:flex;flex-direction:column;gap:10px}
.note{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.note.pinned{border-color:var(--gold);box-shadow:inset 3px 0 0 var(--gold)}
.note header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.78rem;color:var(--muted)}
.note .pin{color:var(--gold-d);font-weight:600}
.note h4{margin:6px 0 2px;font-size:1rem}
.note p{margin:4px 0 0;white-space:pre-wrap;line-height:1.4}
.more-notes>summary{cursor:pointer;color:var(--gold-d);font-weight:600;font-size:.9rem;padding:4px 0}
.more-notes[open]{display:flex;flex-direction:column;gap:10px}
.note-actions{display:flex;justify-content:space-between;margin-top:6px}
.note-row.pinned{border-color:var(--gold)}
/* v9: Kennel Home, news, clients */
.quick{grid-template-columns:repeat(auto-fit,minmax(62px,1fr))}
.dash-links{margin:4px 0 8px}.dash-links .ti,.msg-link .ti{font-size:1.35rem}
.kh-back{display:inline-block;font-size:.85rem;font-weight:600;color:var(--gold-d);text-decoration:none;margin:2px 0 4px}
.mk-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:2px 0 10px}.mk-head h2{margin:0;font-size:1.35rem}
.mykennel{flex-direction:column;gap:2px;margin:12px 0 4px}.mykennel span{font-size:1.1rem}.mykennel small{font-weight:500;opacity:.9;font-size:.78rem}
.preview-note{background:#fff7e0;border:1px solid var(--gold);border-radius:10px;padding:8px 12px;font-size:.85rem;margin-bottom:10px}
.spot{padding:0;overflow:hidden}
.spot-img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;object-position:50% 40%;border-radius:12px 12px 0 0}
form .spot-img{border-radius:10px}
.spot-body{padding:12px 14px 14px}.spot-body h4{margin:0;font-size:1.2rem}.spot-body p{margin:8px 0 0;line-height:1.45;white-space:pre-wrap}
.spot-wins{margin-top:10px}.spot-wins summary{cursor:pointer;font-weight:600;color:var(--gold-d)}
.spot-wins ul{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}
.news{display:flex;flex-direction:column;gap:12px}
.post header{display:flex;gap:8px;align-items:center;font-size:.78rem;color:var(--muted)}.post .pin{color:var(--gold-d);font-weight:600}
.post h4{margin:4px 0 6px;font-size:1.05rem}.post p{margin:6px 0 0;white-space:pre-wrap;line-height:1.45}
.post.pinned{border-color:var(--gold);box-shadow:inset 3px 0 0 var(--gold)}
.post-media{display:block;width:100%;max-height:420px;object-fit:cover;border-radius:10px;margin:6px 0;background:#000}
.event .cal{width:46px;flex:none;text-align:center;border:1px solid var(--line);border-radius:10px;padding:4px 0;line-height:1.1}.event .cal b{display:block;font-size:1.15rem}.event .cal small{font-size:.7rem;text-transform:uppercase;color:var(--gold-d)}
.news-row{align-items:flex-start}.news-row .thumb{width:56px;height:56px;border-radius:10px;object-fit:cover;flex:none;background:#222;color:#fff;display:flex;align-items:center;justify-content:center}
.row-actions{display:flex;gap:14px;margin-top:4px;align-items:center}.row-actions form{margin:0}
.cur-media img,.cur-media video{width:100%;max-height:240px;object-fit:cover;border-radius:10px}
.search{margin:0 0 10px}
.client-row .avatar{width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex:none}
.client-row .right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
/* Phase 1: trash / archive / history */
.undobar{position:fixed;left:12px;right:12px;bottom:calc(76px + var(--safe-b));z-index:6;display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:616px;margin:0 auto;padding:10px 14px;border-radius:12px;background:var(--ink);color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.25);transition:opacity .4s}
.undobar .linkbtn{color:var(--gold-l);font-weight:700;font-size:1rem}
.undobar.fade{opacity:0;pointer-events:none}
.trashrow{align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.trashrow:last-child{border-bottom:0}
.trashrow form{margin:0}
.trash-thumb{width:56px;height:56px;object-fit:cover;border-radius:10px;flex:none;background:var(--line)}
.archived-banner{border-left:4px solid var(--amber)}
.purge{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line)}
.purge summary{color:var(--red);cursor:pointer;font-size:.9rem}
.center-card{max-width:420px;margin:40px auto;text-align:center}
.status-form{margin-top:10px}
.history summary{cursor:pointer;font-weight:600}
.hist{list-style:none;margin:8px 0 0;padding:0}
.hist li{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.hist li:last-child{border-bottom:0}
.hist small{color:var(--muted)}
/* Phase 1: alerts */
.bell{font-size:1.25rem;width:auto;padding:0 4px;filter:grayscale(1);opacity:.75}.bell.on{filter:none;opacity:1}
.pushcard,.installcard{position:fixed;left:12px;right:12px;bottom:calc(76px + var(--safe-b));z-index:7;display:flex;gap:12px;align-items:flex-start;max-width:616px;margin:0 auto;box-shadow:0 8px 24px rgba(0,0,0,.18);border:1px solid var(--line)}
.pushcard small,.installcard small{display:block;color:var(--muted);margin-top:2px}
.pushcard-ico{font-size:1.8rem;line-height:1}.pushcard-ico img{width:40px;height:40px;border-radius:10px;display:block}
.pushcard-btns{gap:8px;align-items:center;margin-top:8px}.pushcard-btns .btn{width:auto;margin:0;padding:9px 14px}
.check{flex-direction:row;align-items:flex-start;gap:10px;font-weight:500}.check input{width:20px;height:20px;margin-top:1px;flex:none}.check small{display:block}
.chat-note.warn{color:var(--amber);background:var(--amber-l);padding:8px 10px;border-radius:10px}
.seen{font-size:.75rem;color:var(--muted);text-align:right;margin:-4px 4px 4px}
.install-icon{width:72px;height:72px;border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.howto h3{margin-top:4px}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.steps li{display:flex;gap:10px;align-items:flex-start}.stepn{flex:none;width:26px;height:26px;border-radius:50%;background:var(--gold);color:var(--on-gold,#fff);font-weight:700;display:flex;align-items:center;justify-content:center;font-size:.85rem}
.shareico,.plusico{display:inline-block;border:1.5px solid var(--gold-d);border-radius:6px;padding:0 5px;color:var(--gold-d);font-weight:700}
.reach{display:inline-block;font-size:.75rem;padding:2px 8px;border-radius:99px;background:var(--green-l);color:var(--green)}.reach.no{background:var(--amber-l);color:var(--amber)}
.reach-row{flex-wrap:wrap;gap:6px;margin:4px 0 10px}
/* Phase 1: invites (big, calm screens for older owners: 20 px+ text, 56 px+ buttons) */
body.joinpage{background:#faf7ef}
.join{max-width:460px;margin:0 auto;padding:20px 18px 40px;display:flex;flex-direction:column;gap:14px;font-size:20px;text-align:center}
.join-top{display:flex;justify-content:center}.join-logo{max-width:220px;max-height:90px;object-fit:contain}
.join-h{font-size:30px;line-height:1.15;margin:8px 0 0}
.join-p{font-size:20px;margin:0;color:var(--ink)}
.join-small{font-size:18px;margin:4px 0 0}
.join-photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:18px;box-shadow:0 4px 16px rgba(0,0,0,.15);background:var(--line)}
.join-nophoto{display:flex;align-items:center;justify-content:center;font-size:72px}
.btn-xl{min-height:58px;font-size:1.2rem;border-radius:14px;margin:4px 0}
.join-alert{font-size:18px;text-align:left}
.codeboxes{display:flex;gap:10px;justify-content:center;margin:6px 0 10px}
.codebox{width:64px;height:72px;text-align:center;font:700 34px/1 ui-monospace,Menlo,Consolas,monospace;text-transform:uppercase;border:2px solid var(--gold);border-radius:12px;background:#fff;color:var(--ink);padding:0}
.codebox:focus{outline:3px solid var(--gold-l);border-color:var(--gold-d)}
.invitecard{border-left:4px solid var(--gold)}
.invite-status{gap:8px;align-items:center;margin-bottom:6px}
.invite-btns{display:flex;flex-direction:column;gap:0}
.invite-code{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0;padding:10px 12px;border-radius:12px;background:var(--gold-l)}
.invite-code .code{font:700 1.6rem/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.25em}
.invite-text{background:var(--bg);border-radius:10px;padding:10px;font-size:.9rem}
.copyfield{font-size:.85rem}
.invite-again{display:flex;flex-direction:column;align-items:flex-start;margin:6px 0 0}
/* ---- trip manager ---- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid2 label{min-width:0}
.tripcard{display:block;text-decoration:none;color:inherit;margin:12px 0;border-left:4px solid var(--gold)}
.tc-head{display:flex;align-items:center;gap:10px}.tc-head .ti{font-size:1.4rem}.tc-head small{display:block;color:var(--muted)}
.tc-dogs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}.tc-latest,.tc-sub{margin:8px 0 0}
.pp-mini{font-size:.72rem;font-weight:600}.pp-mini.red{color:var(--red)}.pp-mini.amber{color:var(--amber)}
.trip-head{margin:4px 0 10px}.trip-head h2{margin:0 0 2px}.trip-stats{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:.85rem}.trip-stats a{color:var(--gold-d)}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:8px 0}
.pp-dot{display:inline-block;width:11px;height:11px;border-radius:50%;flex:none;vertical-align:middle;margin-right:4px}
.pp-dot.green{background:#3f8f4c}.pp-dot.amber{background:#e0a020}.pp-dot.red{background:var(--red)}
.pp-tally{display:flex;align-items:center;gap:4px;font-weight:600}.pp-tally .pp-dot{margin-left:6px}
.rosterrow .rr-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rosterrow small{display:block}
.heatflag{display:inline-block;font-size:.8rem;margin:4px 0}.heatflag.during{color:#a0306b;font-weight:600}.heatflag.unknown{color:var(--muted)}.heatflag.clear{color:var(--green)}
.paperscard{margin:10px 0}.pc-head{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}.pc-head .linkbtn{margin-left:auto}
.pp-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:6px 0}
.pp{border-radius:10px;padding:7px 9px;font-size:.8rem;border-left:4px solid;min-width:0;overflow-wrap:anywhere}.pp b{display:block;font-size:.78rem}.pp small{display:block;line-height:1.3}
.pp.green{background:var(--green-l);border-color:#3f8f4c}.pp.amber{background:var(--amber-l);border-color:#e0a020}.pp.red{background:var(--red-l);border-color:var(--red)}
.pp .during{display:inline-block;margin-top:3px;font-style:normal;font-size:.7rem;font-weight:700;color:var(--amber);text-transform:uppercase;letter-spacing:.02em}
.btnrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}
.st-note small{display:block;margin-top:3px}.st-note.check{border-left:4px solid #e0a020}
.checks{display:flex;flex-wrap:wrap;gap:8px 16px}.check{display:flex;align-items:center;gap:6px;font-weight:600}
.papers-link{margin:6px 0 10px;text-decoration:none;color:inherit}.papers-link small{display:block;color:var(--muted)}
.docrow{flex-wrap:wrap}
.tm-lines{display:flex;flex-direction:column;gap:6px;margin:8px 0}.tm-line{display:flex;justify-content:space-between;gap:10px;font-size:.88rem;align-items:baseline}.tm-line b{white-space:nowrap}
.moneyform .extra input{min-width:0}
.rate-sum small{display:block;margin-top:3px}.rate-card{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
/* ---- field & care log (glove-friendly) ---- */
.fl-dash{display:grid;gap:8px;margin:6px 0 12px}
.seg.big a{font-size:1rem;padding:12px 0}
.fl-form{display:flex;flex-direction:column;gap:12px;margin-top:10px}.fl-form.hidden{display:none}
.fl-form input,.fl-form select,.fl-form textarea{font-size:1.05rem;min-height:48px}
.fl-form fieldset{border:0;padding:0;margin:0}.fl-form legend{font-weight:700;margin-bottom:6px}
.fl-dogs{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px}.fl-dogs legend{grid-column:1/-1}
.fl-dog input,.seg3 input,.rate input,.fl-kinds input,.fl-toggle input{position:absolute;opacity:0;pointer-events:none}
.fl-dog span{display:flex;flex-direction:column;justify-content:center;min-height:64px;padding:8px 10px;border:2px solid var(--line);border-radius:14px;background:#fff;font-weight:700;text-align:center}
.fl-dog span small{font-weight:400;color:var(--muted)}
.fl-dog input:checked+span,.seg3 input:checked+span,.rate input:checked+span,.fl-kinds input:checked+span,.fl-toggle input:checked+span{background:var(--ink);color:#fff;border-color:var(--ink)}
.fl-dog input:checked+span small{color:#ddd}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}.seg3 span,.fl-kinds span{display:flex;align-items:center;justify-content:center;min-height:52px;border:2px solid var(--line);border-radius:12px;background:#fff;font-weight:600}
.fl-kinds{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.counter{display:grid;grid-template-columns:1fr 60px 70px 60px;align-items:center;gap:6px;margin:6px 0}.counter span{font-weight:600}
.counter button{min-height:56px;font-size:1.6rem;border-radius:12px;border:2px solid var(--line);background:#fff}.counter input{text-align:center;min-height:56px;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:-4px}.chips button{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:.95rem}
.rate{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0}.rate>span{font-weight:600;flex:1}.rate div{display:flex;gap:4px}
.rate div span{display:flex;align-items:center;justify-content:center;width:44px;height:48px;border:2px solid var(--line);border-radius:10px;background:#fff;font-weight:700}
.fl-toggle span{display:flex;align-items:center;justify-content:center;min-height:52px;border:2px dashed var(--line);border-radius:12px;font-weight:600}
.fl-file{display:flex;flex-direction:column;gap:6px;font-weight:700}
.fl-save{min-height:60px;font-size:1.15rem}
.fl-queue{display:flex;align-items:center;gap:10px;background:var(--amber-l);color:var(--amber);border-radius:12px;padding:10px 12px;margin-bottom:8px}.fl-queue small{display:block;color:#7a4a00}
.fl-qlist{list-style:none;padding:0;margin:0 0 8px;font-size:.85rem}.fl-qlist li{padding:4px 0;border-bottom:1px solid var(--line)}.fl-qlist .err{color:var(--red)}
.fl-saved{background:var(--green-l);color:var(--green);border-radius:12px;padding:10px 12px;font-weight:700}
.fl-banner{position:fixed;left:12px;right:12px;bottom:calc(70px + var(--safe-b));z-index:6;background:var(--amber-l);color:var(--amber);border:1px solid #f0d49a;border-radius:12px;padding:10px 12px;font-weight:700;text-align:center;text-decoration:none}
.weeknav{display:flex;align-items:center;justify-content:space-between;margin:4px 0 8px}
.pickgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.pick{position:relative}.pick img,.pick .vid{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#222;color:#fff}
.pick input{position:absolute;top:6px;left:6px;width:24px;height:24px}
/* weekly field report card */
.frc{position:relative;padding-top:14px}.frc-pill{display:inline-block;background:var(--ink);color:var(--gold);font-weight:800;font-size:.72rem;letter-spacing:.08em;padding:4px 10px;border-radius:999px}
.frc-media img,.frc-media video{width:100%;border-radius:12px;margin-top:10px;max-height:320px;object-fit:cover}
.frc-name{margin:10px 0 0;letter-spacing:.04em}.frc-sub{display:block;color:var(--muted)}
.frc-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0 6px}.frc-tiles div{background:var(--gold-l);border-radius:10px;padding:8px 4px;text-align:center}.frc-tiles b{display:block;font-size:1.35rem}.frc-tiles small{font-size:.68rem;line-height:1.1;display:block}
.frc-bars{margin:10px 0}.frc-bar{display:grid;grid-template-columns:96px 1fr 52px;align-items:center;gap:8px;margin:5px 0;font-size:.85rem}
.frc-bar i{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.frc-bar em{height:10px;border-radius:3px;background:#e6e1d3}.frc-bar em.on{background:var(--gold)}.frc-bar b{text-align:right}
.frc-line{font-size:.95rem;border-left:3px solid var(--gold);padding-left:10px}
.frc-thumbs{display:grid;grid-template-columns:1fr 1fr;gap:6px}.frc-thumbs img,.frc-thumbs video{width:100%;border-radius:10px;aspect-ratio:4/3;object-fit:cover}
/* ---- trial entry approval + placement proof (layout only; colors come from the theme variables) ---- */
.ok-needed{margin:0 0 12px;border:1.5px solid var(--gold)}.ok-needed .ti{font-size:1.35rem}
.approval .pill{margin-left:8px;vertical-align:middle}
small.warn,b.warn{display:block;color:var(--amber)}
.te-row{flex-wrap:wrap;gap:4px 8px}.te-row>a{flex:1 1 60%}.te-row small.muted,.te-row small.warn{flex-basis:100%}
.te-actions{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;flex-basis:100%}.te-actions form{margin:0}
.te-actions details{flex-basis:100%}.te-actions details[open]{background:var(--card);border-radius:10px;padding:4px 8px}
.tpick{display:flex;flex-direction:row;align-items:center;gap:10px;font-weight:400;color:var(--ink)}.tpick input{position:static;flex:none;width:22px;height:22px;margin:0;padding:0}
.seg-radio{display:flex;gap:10px}.seg-radio .tpick{flex:1;border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.proofs{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;align-items:flex-end}
.proof{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-decoration:none;max-width:96px}
.proof img,.proof .pdf{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:var(--bg)}
.proof .pdf{display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--muted)}
.proof small{font-size:.7rem;color:var(--muted);line-height:1.2}
.proofrow{align-items:center;gap:10px}.proofrow form{margin:0}
.addproof{margin-top:4px}
/* payments received (Venmo / check / cash / card / other), recorded by the trainer */
.pay-form fieldset.bare{border:0;padding:0;margin:0;min-width:0}.pay-form legend.lbl{font-weight:600;font-size:.9rem;margin-bottom:6px}
.seg3.pay-methods{grid-template-columns:repeat(5,1fr);gap:5px}.seg3.pay-methods span{min-height:48px;font-size:.84rem;padding:0 2px}
.paychips{display:flex;flex-wrap:wrap;gap:6px;margin:-4px 0 4px}.paychips button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 11px;font-size:.82rem;font-weight:600;color:inherit}
.pay-month{display:flex;align-items:center;justify-content:space-between;margin:14px 0 4px}.pay-month b{font-size:1.05rem}
.pay-totals{padding:10px 14px}.pay-total-row{display:flex;justify-content:space-between;padding:6px 0;border-top:1px solid var(--line)}.pay-total-row:first-child{border-top:0}
.pay-total-row.grand b{font-size:1.2rem}.pay-total-row small{color:var(--muted)}
.row.voided b{text-decoration:line-through;opacity:.7}
.pay-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.pay-amt{font-size:1.7rem}.pay-amt.struck{text-decoration:line-through;opacity:.6}
.pay-lines td{font-size:.86rem}.pay-lines .num{white-space:nowrap}
tr.paid-line td{color:var(--green)}tr.credit-line td{color:var(--green)}
.inv-pay{display:flex;gap:8px;flex-wrap:wrap}.inv-pay .btn{flex:1}
.quick{grid-template-columns:repeat(3,1fr)} /* 6 quick actions (with $ Payment): two rows of three */
/* Oct 19 2026 decisions: Dog of the Week ribbon photo, answer-by, log edit */
.spot-ribbon img{display:block;width:96px;height:96px;object-fit:cover;border-radius:8px;margin-top:6px;border:1px solid var(--line,#ddd)}
.answerby legend small{font-weight:400}
.te-row small.muted{display:block}
.logedit-actions{display:flex;gap:10px;align-items:center}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.inline-price{display:flex;gap:8px;margin-top:6px}.inline-price input{width:7.5em}
.dotw-ribbon .tpick b,.dotw-ribbon .tpick small{display:block}.dotw-ribbon .tpick small{margin-top:4px;font-weight:400}
.fl-kinds label,.seg3 label,.rate label{position:relative}.fl-kinds input,.seg3 input,.rate input{left:0;top:0;width:1px;height:1px;margin:0}
.log-edit .rate{flex-wrap:wrap}.log-edit .rate>span{flex-basis:100%}.log-edit .rate div{flex-wrap:wrap}.log-edit .rate div span{width:42px}
.doglist{gap:8px}.dogrow{min-height:88px}.dogrow .dogmeta small{display:block}.dogrow .dog-owner{margin-top:2px}.dogflags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.dogsearch input{min-height:52px;font-size:1.05rem}.dogs-sum{margin:6px 2px 10px}

/* ----- Kennel Home upgrade (Oct 20 2026): trial dogs, results board, cheers, trips out, privacy. Phone first: 48px+ taps, high contrast. ----- */
.kh-jump{display:flex;gap:8px;overflow-x:auto;margin:14px 0 2px;padding-bottom:2px;-webkit-overflow-scrolling:touch}
.kh-jump a{flex:0 0 auto;min-height:44px;display:inline-flex;align-items:center;padding:0 14px;border-radius:999px;border:1.5px solid var(--gold);color:var(--ink);font-weight:700;font-size:.92rem;text-decoration:none;background:#fff}
.kh-week{margin:-4px 2px 6px}
.kh-empty{color:#555;font-size:.95rem}
.kh-trial{padding:0;overflow:hidden}
.kh-trial>header,.kh-trip>header{display:flex;align-items:center;gap:10px;padding:12px 14px}
.kh-trial>header b,.kh-trip>header b{font-size:1.05rem;display:block}
.kh-trial>header small,.kh-trip>header small{display:block;color:#555;font-size:.85rem;margin-top:2px}
.kh-dogs{list-style:none;margin:0;padding:0}
.kh-dogs li{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line)}
.kh-dogs li b{font-size:1.12rem;display:block}
.kh-dogs li small{display:block;color:#555;font-size:.85rem}
.cheerform{margin:0}
.btn.cheer{width:auto;min-height:48px;min-width:132px;margin:0;padding:8px 14px;font-size:1rem;font-weight:700;gap:6px;border-radius:999px}
.btn.cheer .ci{font-size:1.15rem;line-height:1}
.btn.cheer .cn{min-width:26px;padding:2px 7px;border-radius:999px;background:var(--gold-l);color:var(--ink);font-size:.9rem}
.btn.cheer.on{background:var(--gold);color:#111;border-color:var(--gold-d)}
.btn.cheer.on .cn{background:#111;color:#fff}
.kh-result{display:flex;flex-direction:column;gap:6px}
.kh-result .cheerform{align-self:flex-start;margin-top:4px}
.kh-place{font-size:1.25rem}
.kh-rdog b{font-size:1.15rem}.kh-rdog small{color:#555}
.kh-verified{color:var(--green);font-weight:700}
.kh-trip{padding:0}.kh-trip .ti{font-size:1.4rem}
.kh-tripdogs{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0 14px 12px}.kh-tripdogs .pill{font-size:.9rem;padding:5px 11px}
.kh-privacy{display:flex;flex-direction:column;gap:4px;margin-top:22px}
.kh-privacy small{font-size:.88rem}
.kh-offline{margin:10px 0;padding:12px 14px;border-radius:12px;background:#fff4d6;color:#4a3700;font-weight:600;font-size:.92rem;border:1.5px solid #e0b84a}
.kh-postrow .btn-sm{margin:0;min-height:44px}
.kh-boardform small{font-size:.88rem}

/* ----- One-tap quick log (Oct 20 2026): field-first, one hand, 56 px+ targets, sun-readable ----- */
.ql-strip{display:flex;flex-direction:column;gap:8px}
.ql-striphead{font-size:1.05rem}
.ql-dogs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0}
.ql-dogbtn{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-height:64px;padding:10px 14px;border-radius:14px;border:2px solid var(--gold);background:#fff;color:var(--ink);font:inherit;text-align:left;text-decoration:none;cursor:pointer}
.ql-dogbtn b{font-size:1.1rem;line-height:1.2}.ql-dogbtn small{font-size:.82rem;color:#555;margin-top:2px}
.ql-dogbtn.hidden{display:none}
.ql-all,.ql-strip .btn{min-height:56px;margin:0}
.ql-running{display:flex;align-items:center;justify-content:center;min-height:60px;border-radius:14px;background:var(--gold);color:#111;font-weight:800;font-size:1.05rem;text-decoration:none;padding:8px 12px;text-align:center}
.ql-start{min-height:64px;margin:10px 0}
.ql-search{width:100%;min-height:56px;font-size:1.1rem;padding:0 14px;border-radius:12px;margin-bottom:6px}
.ql-run{text-align:center;padding:8px 0 4px}
.ql-rundog{font-size:1.3rem;margin:4px 0}
.ql-timer{font-size:5rem;font-weight:800;letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.05;margin:4px 0}
.ql-gps{font-size:1rem;font-weight:600;margin:2px 0 10px}
.ql-endlabel{font-size:.95rem;margin:6px 0 4px;color:#555}
.ql-ends{display:flex;flex-direction:column;gap:12px}
.btn.ql-end{min-height:76px;font-size:1.4rem;font-weight:800;margin:0;border-radius:16px}
.ql-cancel{margin:18px auto 0;display:block;min-height:48px;font-size:1rem}
.ql-done h3{font-size:1.3rem;margin:0 0 4px}.ql-spot{font-weight:600;margin:0 0 6px}
.ql-row{border:0;padding:0;margin:0}.ql-row legend{font-weight:700;margin-bottom:6px}
.ql-count{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.ql-count .btn{width:72px;min-height:56px;font-size:1.6rem;margin:0}.ql-count output{min-width:48px;text-align:center;font-size:1.8rem;font-weight:800}
.ql-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.ql-chips button{min-height:56px;min-width:56px;padding:0 16px;border-radius:999px;border:2px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-weight:700;font-size:1rem}
.ql-chips button.on{background:var(--gold);border-color:var(--gold-d);color:#111}
.ql-done textarea{font-size:1.05rem;min-height:72px}
.ql-mic,.ql-save{min-height:60px}
.ql-note{margin:8px 0;padding:12px 14px;border-radius:12px;font-weight:700;background:#fff4d6;color:#4a3700;border:1.5px solid #e0b84a}
.ql-logs{list-style:none;margin:0;padding:0}.ql-logs li{padding:10px 2px;border-bottom:1px solid var(--line)}.ql-logs small{display:block;margin-top:2px}
.ql-logs li.waiting small{color:#7a5a00}
.fl-queue[hidden]{display:none}

/* flat monthly plans (Oct 2026) */
.tierlist{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 12px}
.tierlist .tier{position:relative;background:var(--card,#fff);border:1px solid var(--line,#ddd);border-radius:12px;padding:12px 8px;text-align:center;display:flex;flex-direction:column;gap:2px;min-height:96px}
.tierlist .tier b{font-size:1rem}.tierlist .tp{font-size:1.35rem;font-weight:700}.tierlist .tp small{font-size:.75rem;font-weight:500}
.tierlist .tier>small{font-size:.75rem;color:var(--muted,#666);line-height:1.25}
.tierlist .tier.on{border:2px solid var(--gold,#c49a2c)}.tierlist .tier em{font-style:normal;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gold-t,var(--gold-d))}

/* guided setup (Oct 2026): phone-first, big targets */
.su-top{position:sticky;top:56px;z-index:3;background:var(--bg);padding:6px 0 10px}
.su-count{display:flex;justify-content:space-between;font-weight:700;font-size:.95rem}.su-count span{font-weight:500;color:var(--muted);font-size:.85rem}
.su-bar{height:10px;border-radius:6px;background:var(--line);overflow:hidden;margin:8px 0}.su-bar i{display:block;height:100%;background:var(--gold);border-radius:6px;transition:width .3s}
.su-steps{display:flex;gap:8px}.su-steps a{flex:1;min-height:48px;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);border-radius:12px;text-decoration:none;color:var(--ink);font-weight:700;background:var(--card)}
.su-steps a.done{border-color:var(--gold);color:var(--gold-d)}.su-steps a.skipped{border-style:dashed}.su-steps a.on{background:var(--gold);border-color:var(--gold);color:#fff}
.su-h{font-size:1.6rem;margin-top:8px}.su-h small{font-size:.8rem;font-weight:600;color:var(--muted);vertical-align:middle}.su-sub{color:var(--muted);margin:0 0 14px}
.su-form{display:flex;flex-direction:column;gap:14px}.su-form label{display:flex;flex-direction:column;gap:6px;font-weight:600}
.su-form input:not([type=radio]):not([type=file]),.su-form select{min-height:56px;font-size:1.1rem;padding:0 14px;border-radius:12px}
.su-form .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.su-presets{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.su-presets legend{font-weight:600;margin-bottom:6px}
.su-preset{position:relative}.su-preset input{position:absolute;opacity:0;width:1px;height:1px}
.su-preset span{min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:2px solid var(--line);border-radius:12px;font-weight:600;font-size:.85rem;background:var(--card)}
.su-preset span i{width:28px;height:28px;border-radius:50%;background:var(--c)}
.su-preset input:checked+span{border-color:var(--c);box-shadow:0 0 0 2px var(--c) inset}.su-preset input:focus-visible+span{outline:3px solid var(--c);outline-offset:2px}
.su-file{position:relative;min-height:64px;justify-content:center;align-items:center;border:2px dashed var(--line);border-radius:12px;background:var(--card);text-align:center}
.su-file input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}
.su-save{min-height:64px}.su-skip{min-height:56px}
.su-done{display:flex;flex-direction:column;gap:10px}.su-done .btn-xl{min-height:64px}.su-star{font-size:3rem;text-align:center}
.su-invite .two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.su-invite .btn{min-height:56px}
.su-card .su-card-h{display:flex;justify-content:space-between;align-items:baseline}.su-card .su-card-h span{color:var(--muted);font-size:.85rem}
.su-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.su-chips span{font-size:.8rem;padding:4px 10px;border-radius:999px;border:1px solid var(--line)}.su-chips .done{border-color:var(--gold);color:var(--gold-d)}
.su-card .btn-lg{min-height:56px;width:100%}.su-hide{width:100%;margin-top:6px;min-height:48px}.su-reopen{margin-bottom:10px}.su-reopen .btn{width:100%;min-height:56px}
.su-file img{max-height:140px;max-width:100%;border-radius:10px;margin:8px auto 0;display:block}

/* Pay with Venmo: Venmo blue (#008CFF), own label (no Venmo logo file). Wins over theme button colors. */
.venmo-box{margin:14px 0 6px;padding:14px;border-radius:14px;background:rgba(0,140,255,.07);border:1px solid rgba(0,140,255,.28)}
body .btn.btn-venmo,body.theme-ceedee .btn.btn-venmo,body.theme-upland .btn.btn-venmo{background:#008CFF!important;border:0!important;color:#fff!important;min-height:58px;font-size:1.2rem;font-weight:800;flex-direction:column;gap:2px;border-radius:14px;box-shadow:0 4px 14px rgba(0,140,255,.35);margin:0 0 8px}
body .btn.btn-venmo small,body.theme-ceedee .btn.btn-venmo small{color:#fff!important;opacity:.95;font-size:.88rem;font-weight:600}
.btn.btn-venmo:active{background:#0074d4!important}
.venmo-after{margin:4px 0 6px}
.venmo-pay{margin:0;display:flex;flex-direction:column;gap:8px}
.venmo-amt{display:flex;flex-direction:column;gap:4px;font-weight:700}
.venmo-amt>span{display:flex;align-items:center;gap:8px;font-size:1.35rem;font-weight:800}
.venmo-amt input{flex:1;font-size:1.35rem;font-weight:800;min-height:52px}
.venmo-amt small{font-weight:500;opacity:.85}
.venmo-reported{display:flex;flex-direction:column;align-items:center;margin:8px 0 2px;padding:12px;border-radius:12px;background:#e8f4ff;color:#063b6b;font-weight:700;text-align:center}
.venmo-reported small{font-weight:500;color:#063b6b;opacity:.8}
body.theme-ceedee .venmo-reported{background:#0e2440;color:#dcebff}
body.theme-ceedee .venmo-reported small{color:#dcebff}
.venmo-staff{margin:12px 0;padding:12px 14px;border-radius:14px;border:1.5px solid #008CFF;background:rgba(0,140,255,.06)}
.venmo-staff p{margin:0 0 6px}.venmo-staff p small{display:block;margin-top:3px}
.venmo-flag{color:#0a6fd1;font-weight:700}
body.theme-ceedee .venmo-flag{color:#6fb6ff}
.venmo-at{display:flex;align-items:center;gap:6px}.venmo-at input{flex:1}
.ownerbtn{margin-left:auto;margin-right:6px;padding:6px 10px;border-radius:999px;border:1.5px solid var(--gold);color:var(--gold-d);font-size:.8rem;font-weight:700;text-decoration:none;white-space:nowrap}
body.theme-ceedee .ownerbtn{color:var(--gold);border-color:var(--gold)}
.owner-switch{background:var(--gold-l);padding:10px;border-radius:10px}

.send-link{margin:10px 0 6px}.send-link-email{margin:0 0 8px}
.msg-preview{padding:12px 14px;border-radius:16px;background:rgba(127,127,127,.12);white-space:pre-wrap;word-break:break-word}
.sms-bubble{background:#1f8cff;color:#fff;border-radius:18px 18px 4px 18px;margin-left:12%}
.msg-body{white-space:pre-wrap;font:inherit;margin:6px 0 0}
.link-help{margin:10px 0}.link-help summary{cursor:pointer;text-align:center;font-size:.92rem}.link-help form{margin-top:8px}
.link-help-sent{display:flex;flex-direction:column;gap:4px;text-align:center}
/* Oct 21 2026: the invite link's first screen (email + password) — smaller dog photo so the form fits a phone screen */
.join-photo.join-photo-sm{max-height:150px;object-fit:cover;width:100%}
.join-h2{font-size:1.25rem;margin:.6rem 0 .2rem;text-align:center}
.join-setup{text-align:left;margin-top:.4rem}
.reset-link-box{border-top:1px solid rgba(127,127,127,.25);margin-top:.6rem;padding-top:.6rem}
/* Oct 21 2026: "The Kennel · Owner console" card on the linked house-kennel trainer's admin home (TK-in-a-circle icon) */
.dash-links .ti-img{width:36px;height:36px;border-radius:50%;flex:0 0 36px;display:block;object-fit:cover}

/* Oct 21 2026: two plans (Trainer, Single owner), monthly or yearly */
.tierlist.plans{grid-template-columns:repeat(2,1fr)}
.tierlist .ty{font-size:.78rem;font-weight:600;color:var(--muted,#666)}
.signup-kind{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:.2rem 0 .4rem}
.signup-kind label{position:relative;display:flex;flex-direction:column;gap:2px;border:1px solid var(--line,#ddd);border-radius:12px;padding:12px 10px;background:var(--card,#fff);cursor:pointer;text-align:center}
.signup-kind label b{font-size:1rem}.signup-kind label small{font-size:.75rem;color:var(--muted,#666);line-height:1.25}
.signup-kind label .tp{font-size:1.1rem;font-weight:700}
.signup-kind input{position:absolute;opacity:0;pointer-events:none}
.signup-kind label:has(input:checked){border:2px solid var(--gold,#c49a2c);box-shadow:0 0 0 1px var(--gold,#c49a2c) inset}
.signup-kind label:focus-within{outline:2px solid var(--gold,#c49a2c);outline-offset:2px}
.acct-type{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.pill.s-owner{background:#e8f0fb;color:#1f3d73}.pill.s-trainer{background:#efe9da;color:#6b5414}
/* Oct 21 2026: Branding colors row (brand, text, background) */
.three-colors{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.three-colors input[type=color]:disabled{opacity:.35}
label.check.inline{display:inline-flex;gap:6px;margin-top:4px}
/* Terms / Privacy (Oct 21 2026) */
.legal-foot{text-align:center;padding:18px 16px 28px;color:#7a7d78;font-size:.85rem;line-height:1.6}
.legal-foot nav a{color:inherit;text-decoration:underline}
.legal-foot small{display:block;font-size:.8rem}
.legal h1{font-size:1.5rem;margin:.2em 0 .4em}
.legal h2{font-size:1.15rem;margin:1.3em 0 .4em}
.legal h3{font-size:1.05rem;margin:1.1em 0 .3em}
.legal p,.legal li{font-size:1rem;line-height:1.55}
.legal ul,.legal ol{padding-left:1.25em}
.legal li{margin:.3em 0}
.legal a{word-break:break-word}
.legal blockquote.legal-draft{margin:.6em 0 1em;padding:10px 12px;border-left:4px solid #c9a227;background:#fbf6e6;color:#4a4320;font-size:.95rem;border-radius:6px}
.legal hr{border:0;border-top:1px solid #e3e0d6;margin:1.2em 0}
label.check.agree{align-items:flex-start;line-height:1.45}
label.check.agree a{text-decoration:underline}
/* Dog picker on the admin home (Oct 21 2026) */
.dog-picker{padding:14px 14px 10px}
.dog-picker .pick-label{display:block;font-weight:700;font-size:1.05rem;margin:0 0 8px}
.dog-picker .pick-input{width:100%;font-size:1.15rem;padding:14px 14px;min-height:54px;border-radius:12px;box-sizing:border-box}
.dog-picker .pick-results{margin-top:8px}
.dog-picker .pick-results:empty{display:none}
.dog-picker .pick-row{min-height:52px}
.dog-picker .pick-row b{font-size:1.05rem}
.dog-picker .pick-foot{margin:8px 2px 0}
.dog-picker [hidden]{display:none!important}
.dog-picker .pick-row small{display:block}
.dog-picker .pick-foot a{color:var(--gold);font-weight:600;text-decoration:none}
body:not([class*="theme-"]) .dog-picker .pick-foot a{color:var(--gold-t,var(--gold-d))} /* Classic look: plain gold on white was 2.6:1 */
/* in-app Help (help.js, Oct 22 2026): guide steps, pictures, videos and Tips; colors come from the theme variables */
.help-h1{font-size:1.5rem;margin:6px 0 8px}
.help-p{margin:0 0 10px;line-height:1.5}
.help-toc{padding:12px}.help-toc-h{display:block;margin:0 0 6px}.help-toc ol{margin:0;padding:0;list-style:none}
.help-num{display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--gold);color:#fff;font-weight:700;font-size:.9rem;margin-right:10px}
.theme-ceedee .help-num{color:#0c0c0e}
.help-sec{scroll-margin-top:64px;margin:22px 0 8px;padding-top:6px;border-top:1px solid var(--line)}
.help-h2{display:flex;align-items:center;font-size:1.2rem;margin:10px 0 12px}
.help-step{scroll-margin-top:64px;margin:0 0 18px}.help-step p{margin:0 0 10px;line-height:1.5}.help-steplabel{color:var(--gold-d)}
.help-shot{display:block;width:72%;max-width:280px;height:auto;margin:0 auto;border-radius:16px;border:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.18);background:var(--card)}
.help-video{margin:0 0 18px;text-align:center}.help-video video{display:block;width:72%;max-width:280px;height:auto;margin:0 auto 6px;border-radius:16px;border:2px solid var(--gold);background:#000}
.help-tip{margin:6px 0 16px;padding:12px 14px 6px;border-radius:12px;background:var(--gold-l);border-left:5px solid var(--gold)}
.help-tip ul{margin:6px 0 0;padding-left:20px}.help-tip li{margin:0 0 6px;line-height:1.45}
.help-table{width:100%;border-collapse:collapse;margin:0 0 16px;font-size:.9rem;background:var(--card);border-radius:12px;overflow:hidden}
.help-table th,.help-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}.help-table th{font-size:.8rem;color:var(--muted)}
.help-top{text-align:right;margin:4px 0 0}
.help code{font:inherit;font-weight:600}
.helpbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;font-size:1.05rem;font-weight:800;border-radius:50%;border:2px solid var(--gold);color:var(--gold-d);text-decoration:none;flex:none}
/* Branding page (Oct 22 2026): looks, Match my logo, live preview. The preview's colors come from --pv-* (palette.js). */
.looks{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.look-tile{position:relative;display:flex;flex-direction:column;gap:2px;padding:8px;border:2px solid var(--line);border-radius:14px;background:var(--card);cursor:pointer;font-weight:600}
.look-tile input{position:absolute;opacity:0;pointer-events:none}
.look-tile:has(input:checked),.look-tile.on{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}
.look-tile:has(input:focus-visible){outline:2px solid var(--gold-d);outline-offset:2px}
.look-sw{position:relative;display:block;height:64px;border-radius:10px;overflow:hidden;margin-bottom:4px;border:1px solid rgba(127,127,127,.35)}
.look-sw em{position:absolute;left:0;right:0;top:0;height:12px}
.look-sw i{position:absolute;left:10%;right:10%;top:20px;height:22px;border-radius:6px;border:1px solid}
.look-sw b{position:absolute;left:25%;right:25%;bottom:6px;height:10px;border-radius:5px}
.look-name{font-size:.92rem}.look-tile small{font-weight:400}
.match-logo{display:flex;flex-direction:column;gap:4px;margin:4px 0}
.match-swatches{display:flex;gap:6px}.match-swatches span{width:26px;height:26px;border-radius:50%;border:1px solid rgba(127,127,127,.5)}
.pv-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}
.pv-phone{width:220px;border-radius:26px;border:6px solid #1b1b1d;overflow:hidden;background:var(--pv-bg);color:var(--pv-ink);font-size:13px;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.pv-bar{display:flex;align-items:center;gap:8px;padding:10px;background:var(--pv-bar);color:var(--pv-barfg);border-bottom:3px solid var(--pv-bartrim)}
.pv-bar b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-logo{width:24px;height:24px;border-radius:50%;background:var(--pv-tint);overflow:hidden;flex:none}.pv-logo img{width:100%;height:100%;object-fit:contain}
.pv-page{padding:10px;display:flex;flex-direction:column;gap:6px}
.pv-greet{font-weight:700;font-size:15px}
.pv-card{position:relative;display:flex;flex-direction:column;background:var(--pv-card);border:1px solid var(--pv-line);border-radius:10px;padding:8px}
.pv-card small{color:var(--pv-muted)}
.pv-pill{position:absolute;right:8px;top:8px;font-size:10px;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--pv-chip);color:var(--pv-chipfg)}
.pv-label{font-weight:600;font-size:11px}
.pv-input{background:var(--pv-input);border:1px solid var(--pv-inputbd);border-radius:8px;padding:7px 8px;color:var(--pv-ink)}
.pv-btn{text-align:center;font-weight:700;padding:8px;border-radius:9px;background:linear-gradient(180deg,var(--pv-btn),var(--pv-btn2));color:var(--pv-btnfg)}
.pv-link{color:var(--pv-accent);font-weight:600;text-decoration:underline}
.pv-tabs{display:flex;justify-content:space-around;padding:8px 0;background:var(--pv-bar);color:var(--pv-barmuted);border-top:2px solid var(--pv-bartrim);font-size:11px}
.pv-tabs .on{color:var(--pv-baracc);font-weight:700}
[data-contrast][data-ok="1"]{color:var(--green)}[data-contrast][data-ok="0"]{color:var(--red)}
body.pal-dark .venmo-reported{background:#0e2440;color:#dcebff}body.pal-dark .venmo-reported small{color:#dcebff}body.pal-dark .venmo-flag{color:#6fb6ff}

/* ===== Trainer home active dogs, dog page with its own quick point log, desktop fit (Oct 22 2026) ===== */
.active-dogs{margin:4px 0 12px}
.ad-head{display:flex;align-items:center;gap:10px;margin:6px 2px 8px}
.ad-title{flex:1;font-size:1.35rem;margin:0}.ad-title small{font-size:.95rem;font-weight:600}
.ad-search{margin:0 0 8px}.ad-search input{min-height:50px;font-size:1.05rem}
.ad-grid{display:grid;grid-template-columns:1fr;gap:8px}
.adcard{min-height:80px}.adcard .dogthumb{width:60px;height:60px}.adcard .dogmeta{gap:1px}.adcard .dogflags{margin-top:4px}
.quick.quick-one{grid-template-columns:minmax(120px,180px)}
.doghead{display:flex;align-items:center;gap:12px;margin:4px 2px 10px}
.dogthumb.lg{width:72px;height:72px}
.dogname{font-size:1.6rem;line-height:1.15;margin:0}
.doghead small{display:block;color:var(--muted);margin-top:2px}
.doglinks{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:4px}
.ql-dogcard{margin:0 0 10px}.ql-head{margin:0 0 4px;font-size:1.1rem}
.ql-dogcard .ql-start{width:100%;margin:6px 0 4px}.ql-pickhint{margin:2px 0 6px}
.ql-dogcard .ql-done{border:0;box-shadow:none;background:transparent;padding:0;margin:0}
.ql-dogcard .ql-timer{font-size:4rem}.ql-today{margin:10px 0 4px;font-size:.95rem}
.ql-dogcard #qlNoLogs{margin:0}
.dog-quick a{padding:12px 2px;font-size:.78rem}
/* Oct 23 2026 declutter: trainer home quick row = one line of 5 at 360px; dog page = 3 over 2 (trainer) or one row of 3 (single owner) */
.quick.quick-home{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.quick.quick-home a{white-space:nowrap;padding-left:2px;padding-right:2px}
.dog-quick{grid-template-columns:repeat(3,minmax(0,1fr))}
.dog-quick.dog-quick-5{grid-template-columns:repeat(6,minmax(0,1fr))}
.dog-quick.dog-quick-5 a{grid-column:span 2}.dog-quick.dog-quick-5 a:nth-child(n+4){grid-column:span 3}
.dog-quick a{white-space:nowrap}
/* wider screens: trainer and helper pages use the room; phones are unchanged */
@media (min-width:900px){
  body.staff-ui .page{max-width:860px;padding-left:24px;padding-right:24px}
  body.staff-ui.wide .page{max-width:1100px}
  body.staff-ui .tabbar{justify-content:center}body.staff-ui .tabbar a{flex:0 1 130px}
  .wide .ad-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
  .wide .ad-search{max-width:520px}
  .wide .home-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;align-items:start}
  .wide .home-cols .home-col>.sect:first-child{margin-top:10px}
  .wide .doglist{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
  .wide .dogsearch{max-width:520px}
  .wide .dog-cols{display:grid;grid-template-columns:380px 1fr;gap:24px;align-items:start}
  .wide .dog-side{position:sticky;top:70px}
  .wide .dog-main>.seg{margin-top:0}
}
/* American Field link-out + quick add (Oct 22 2026): "Find field trials in NH, VT" card, state picker, "See the ad" links (af-trials.js) */
.afc{display:block}.afc-head{display:flex;gap:12px;align-items:flex-start}
.afc-icon{width:42px;height:42px;flex:none;border-radius:12px;background:var(--gold-l);position:relative}
.afc-icon::after{content:"";position:absolute;inset:8px;background:var(--gold-d);-webkit-mask:url(/themes/upland/grouse.svg) center/contain no-repeat;mask:url(/themes/upland/grouse.svg) center/contain no-repeat}
.afc-title{margin:2px 0 2px;font-size:1.05rem;line-height:1.3;overflow-wrap:anywhere;text-wrap:balance}.afc-sub{margin:0}
.afc-steps{margin:12px 0 12px;padding-left:22px;line-height:1.5}.afc-steps li{margin:4px 0}
/* state names: plain text (comma list) until app.js finds a way to copy, then tap-to-copy pills */
.afc-names{display:flex;flex-wrap:wrap;gap:2px 6px;margin-top:6px}.afc-name{font-weight:600}
.afc-names:not(.afc-copyable) .afc-name:not(:last-child)::after{content:","}
.afc-copyable{gap:8px}
.afc-copy{font:inherit;font-size:.9rem;font-weight:600;color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:6px 14px;min-height:38px;background:var(--bg);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;-webkit-tap-highlight-color:transparent;transition:background .15s,border-color .15s}
.afc-copy::after{content:"";width:13px;height:13px;flex:none;opacity:.7;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2'/%3E%3Cpath d='M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2'/%3E%3Cpath d='M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1'/%3E%3C/svg%3E") center/contain no-repeat}
.afc-copy:hover{border-color:var(--gold-d)}.afc-copy:focus-visible{outline:3px solid var(--gold-d);outline-offset:2px}
.afc-copy.copied{border-color:var(--green);color:var(--green);background:var(--green-l)}.afc-copy.copied::after{display:none}
.afc-copyhint{display:block;margin-top:6px}.afc-copyhint.hidden{display:none}
.afc-go{display:flex;justify-content:center;align-items:center;gap:6px;width:100%;text-decoration:none}
.afc-credit{margin:8px 0 0;font-size:.78rem;color:var(--muted);text-align:center}.afc-change{margin:8px 0 0;text-align:center}
.afc-prompt{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.afc-prompt .grow{display:flex;flex-direction:column;gap:2px}.afc-chev{font-size:1.6rem;color:var(--muted);line-height:1}
.afs{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.afs>summary{cursor:pointer;font-weight:600}.afs .afs-sum-open{list-style:none;font-size:.9rem;color:var(--muted)}.afs .afs-sum-open::-webkit-details-marker{display:none}
.afs-form{margin-top:10px}.afs-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.afs-q{flex:1 1 220px;min-width:0}.afs-count{white-space:nowrap}
.afs-group{border:0;padding:0;margin:10px 0 0}.afs-group legend{font-weight:700;font-size:.85rem;color:var(--muted);padding:0;margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}
.afs-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:6px}
.afs-chip{position:relative;display:block}.afs-chip input{position:absolute;opacity:0;width:1px;height:1px;margin:0;left:0;top:0}
.afs-chip span{display:flex;align-items:center;gap:8px;min-height:44px;padding:6px 10px;border:1.5px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);font-size:.9rem;line-height:1.2;cursor:pointer;overflow-wrap:break-word}
.afs-chip span b{flex:none;min-width:24px;font-size:.8rem;letter-spacing:.03em}
.afs-chip input:checked+span{background:var(--ink);color:var(--card);border-color:var(--ink)}
.afs-chip input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.afs-bar{display:flex;gap:14px;align-items:center;margin-top:12px;flex-wrap:wrap}.afs-none{margin:10px 0 0}
.afq-tag{margin:-4px 0 0;min-height:1.2em}.afq-tag.good{color:var(--green);font-weight:600}.afq-tag.bad{color:var(--red)}.afq-tag.other{color:var(--muted)}
.afad{display:flex!important;flex-wrap:wrap;gap:4px 10px;align-items:center;margin-top:3px}.afad a{font-weight:600}
.pill.afpill{background:var(--gold-l);color:#6b5414}
/* American Field / AKC (Oct 23 2026): "Which trials do you run?", two buttons on the Both card, Rules pick on quick add, trial badges */
form.tkb{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding-top:12px;padding-bottom:12px}
.tkb-set{border:0;margin:0;padding:0;min-width:0;flex:1 1 260px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.tkb-q{float:left;padding:0;font-weight:700;font-size:.95rem}
.tkb-seg{display:flex;flex:1 1 230px;gap:4px;padding:3px;border-radius:11px;background:var(--bg);border:1px solid var(--line)}
.tkb-opt{position:relative;flex:1 1 auto;margin:0;display:block}.tkb-opt input{position:absolute;opacity:0;width:1px;height:1px;margin:0;left:0;top:0}
.tkb-opt span{display:flex;align-items:center;justify-content:center;min-height:38px;padding:4px 10px;border-radius:8px;font-size:.88rem;font-weight:600;color:var(--ink);cursor:pointer;white-space:nowrap}
.tkb-opt input:checked+span{background:var(--ink);color:var(--card)}
.tkb-opt input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.tkb-save{margin:0}
.afc-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.afc-two .afc-go{margin:0;padding-left:8px;padding-right:8px;white-space:nowrap}
.afc-where{display:block;margin-top:4px}
.afq-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 12px;margin:-4px 0 0}.afq-row .afq-tag{margin:0;flex:1 1 0;min-width:7.5em}
.afq-rules{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;margin:0;font-size:.85rem;font-weight:600;white-space:nowrap}.afq-rules select{width:auto;margin:0;padding:6px 8px;font-size:.88rem}
b.tname .tagpill{margin-left:4px;vertical-align:2px}
.pill.tagpill.tag-af{background:var(--gold-l);color:#6b5414}
.pill.tagpill.tag-akc{background:#dfe8f5;color:#1c3d6e}
.trow .grow b{overflow-wrap:anywhere}.row.event .grow b{overflow-wrap:anywhere}
@media (min-width:700px){.afc-go{display:inline-flex;width:auto;padding-left:22px;padding-right:22px}.afc-credit,.afc-change{text-align:left}.afc-two{display:flex;flex-wrap:wrap;gap:10px}}

/* AF: line up date boxes when one label has a note; anchors land below the sticky top bar */
.afq .two{align-items:end}
.afc,.afq,.afs,.trow{scroll-margin-top:72px}
.afq .two label>span small{font-weight:400}
.tfix{font-weight:600;white-space:nowrap}
.facts dd.afad{justify-content:flex-end;margin-top:0}
/* shared field trial calendar (Oct 24 2026): partials/trial-calendar.ejs, the add form's stakes and duplicate warning */
.tcal{scroll-margin-top:72px}.tcal-head{display:flex;gap:10px;align-items:flex-start}.tcal-title{margin:0;font-size:1.05rem}.tcal-sub{margin:2px 0 0}
.tcal-icon{flex:none;width:34px;height:34px;border-radius:9px;background:var(--gold-l,#f6edd2) center/20px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a6d1a' stroke-width='2' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E")}
.tcal-filter{display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:space-between;align-items:center;margin:10px 0 4px;padding:6px 10px;border-radius:8px;background:var(--bg,#f7f5ef);color:var(--ink)}.tcal-filter a{font-weight:600;white-space:nowrap}
.tcal-list{list-style:none;margin:0;padding:0}.tcal-row{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line);scroll-margin-top:72px}.tcal-row:first-child{border-top:0}
.tcal-date{width:46px;flex:none;text-align:center;border:1px solid var(--line);border-radius:10px;padding:4px 0;line-height:1.1}.tcal-date b{display:block;font-size:.7rem;text-transform:uppercase;color:var(--gold-d)}.tcal-date span{display:block;font-size:1.15rem;font-weight:700}
.tcal-body{min-width:0}.tcal-body small{display:block;overflow-wrap:anywhere}.tcal-where{color:var(--ink);font-weight:600}
.tcal-act{flex:none;align-self:center}.tcal-act .btn-sm{margin:0}.tcal-going{white-space:nowrap;text-decoration:none}
@media (max-width:420px){.tcal-row{flex-wrap:wrap}.tcal-act{flex-basis:100%;padding-left:56px}}
.tcal-more{margin:8px 0 0}.tcal-empty{margin:10px 0 0}.tshared{display:block}
.tstakes{border:0;padding:0;margin:0;min-width:0}.tstakes legend{padding:0;margin:0 0 6px;font-weight:600;font-size:.95rem}.tstakes legend small{font-weight:400}
.tstake-chips{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));margin-bottom:8px}.tstake-chips .afs-chip span{justify-content:center;text-align:center}
.tdup p{margin:0}.tdup p+p,.tdup-go{margin-top:8px}.afq-top{margin-bottom:10px}
/* Cancel plan (Oct 25 2026): quiet link, plain confirm, ending banner with Resume, ended card, owner list */
.cancel-link{text-align:center;margin:18px 0 0}.cancel-link a{color:var(--muted);font-size:.85rem;text-decoration:underline}
.cancel-plan h2{margin:0 0 4px}.cancel-facts{margin:0;padding-left:18px;display:grid;gap:8px;font-size:.92rem;line-height:1.4}
.cancel-plan .btn{width:100%;text-align:center}
.plan-ending{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.plan-ending form{margin:0}
.plan-ending .linkbtn{color:inherit;font-weight:700;text-decoration:underline;padding:2px 0}
.plan-ended .ended-msg{font-size:1.05rem;font-weight:600;margin:0;line-height:1.4}.plan-ended{margin-bottom:14px}
.leaving .leave-note{display:block;font-style:italic;white-space:normal}
