:root{--bg:#f7f8fa;--paper:#fff;--ink:#24302e;--muted:#6d7976;--line:#e3e8e5;--green:#365d4d;--pale:#edf2ee;--lime:#dcecbb;--orange:#a36a39;--blue:#577890;--serif:Georgia,'Times New Roman',serif;--sans: -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 var(--sans);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:inherit}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #82a88a;outline-offset:3px}button{transition:background .15s,transform .15s}button:hover:not(:disabled){filter:brightness(.97)}[hidden]{display:none!important}.sidebar{position:fixed;inset:0 auto 0 0;width:224px;background:#f0f3ef;border-right:1px solid #dde4dc;display:flex;flex-direction:column;padding:34px 22px}.brand{text-decoration:none;display:flex;align-items:center;font:600 36px/1 var(--serif);letter-spacing:-2px;margin:0 10px 42px;gap:11px}.brand-mark{font:42px/1 var(--sans);color:var(--green);letter-spacing:0}.brand-dot{color:#7c9c74;margin-left:-10px}.household-control{padding:0 10px 24px}.household-control label,.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:650;color:var(--muted);margin:0 0 10px}.household-control select{margin-top:9px;width:100%;border:0;background:transparent;font-weight:600;overflow:hidden;text-overflow:ellipsis}.household-control a.household-people{display:inline-block;margin-top:9px;font-size:11px;color:#5f7a58;text-decoration:none;border-bottom:1px solid #c3d2bd;padding-bottom:1px}
.household-control a.household-people:hover{color:#2f4a2c;border-bottom-color:#8da17d}
.nav-section{font-size:9px;letter-spacing:1.5px;color:var(--muted);padding:25px 12px 8px}.nav-link{display:flex;align-items:center;gap:13px;padding:11px 13px;margin:3px 0;border-radius:6px;text-decoration:none;color:#64706b;font-size:13px}.nav-link svg{width:18px;height:18px}.nav-link[aria-current=page]{background:#e0e8df;color:#284837;font-weight:650}.nav-link:hover{background:#e7ece5}.sidebar-bottom{margin-top:auto;padding:30px 12px 0}.sidebar-bottom p{font:18px/1.4 var(--serif);color:#677b67}.together-art{height:55px;display:flex;align-items:flex-end;padding-left:12px}.together-art i{display:block;width:27px;height:44px;border:1px solid #95a98c;border-radius:25px 25px 2px 2px;transform:rotate(-18deg);margin-left:-7px;background:#e3eacf}.together-art i:nth-child(2){height:57px;transform:rotate(0);background:#d4dfc4}.together-art i:nth-child(3){transform:rotate(18deg);background:#c5d5b8}.workspace{margin-left:224px}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px;color:var(--muted);font-size:12px}.person-control{display:flex;align-items:center;gap:9px}.person-control label{font-size:11px}.person-control select{border:0;background:transparent;max-width:150px;font-weight:600;color:var(--ink)}.avatar{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#e5ebdb;color:#536749;font-size:12px;font-weight:600;flex-shrink:0}.avatar.small{width:29px;height:29px;font-size:10px}main{max-width:1440px;margin:auto;padding:40px 42px 48px;min-height:calc(100vh - 132px)}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}h1{font:normal clamp(30px,3vw,43px)/1.17 var(--serif);letter-spacing:-1.4px;margin:0 0 10px}h2{font:normal 23px/1.25 var(--serif);letter-spacing:-.5px;margin:0}h3{font-size:14px;font-weight:600;margin:0}p{margin:0}.subtitle{color:var(--muted);font-size:13px}.button{border:1px solid var(--line);background:white;border-radius:6px;padding:10px 15px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:18px;text-decoration:none;white-space:nowrap}.button.primary{background:var(--green);color:#fff;border-color:var(--green)}.button.text{background:none;border:0;color:var(--green);padding:0}.button.secondary{background:var(--pale)}.panel{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}.panel-head{padding:24px 26px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head p{font-size:12px;color:var(--muted);margin-top:5px}.overview-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);gap:22px}.hero{background:#e9efdf;border:1px solid #dce5d0;border-radius:10px;padding:28px 30px;position:relative;overflow:hidden;min-height:207px}.hero .eyebrow{color:#5b6f51}.hero-number{font-size:48px;line-height:1.15;letter-spacing:-2px;font-weight:450;font-variant-numeric:tabular-nums;margin:12px 0 10px}.hero-number small{font-size:13px;letter-spacing:0;color:#64745b;font-weight:400}.hero p{color:#5f7055;max-width:75%;font-size:12px}.hero .orb{position:absolute;width:144px;height:144px;right:-24px;top:47px;border:1px solid #b8caa7;border-radius:50%}.hero .orb:before,.hero .orb:after{content:'';position:absolute;inset:18px;border:1px solid #b8caa7;border-radius:50%}.hero .orb:after{inset:37px}.period-pill{font-size:10px;padding:4px 9px;border:1px solid #cfdabe;border-radius:30px;float:right;color:#5c704f}.overview-left,.overview-right{display:flex;flex-direction:column;gap:22px;min-width:0}.split-content{display:grid;grid-template-columns:150px 1fr;gap:25px;align-items:center;padding:4px 26px 28px}.donut{width:140px;height:140px;border-radius:50%;position:relative;display:grid;place-items:center;background:var(--pale)}.donut:before{content:'';position:absolute;inset:19px;background:#fff;border-radius:50%}.donut-center{position:relative;text-align:center;font:22px var(--serif)}.donut-center small{display:block;font:10px var(--sans);color:var(--muted);margin-top:4px}.funder{display:flex;align-items:center;gap:9px;padding:12px 0;border-bottom:1px solid var(--line)}.funder:last-child{border:0}.funder .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.funder-name{flex:1;font-size:12px}.funder-name small{display:block;color:var(--muted);font-size:10px}.funder-value{text-align:right;font-size:14px;font-weight:550;font-variant-numeric:tabular-nums}.funder-value small{display:block;color:var(--muted);font-size:10px;font-weight:400}.attention-count{width:24px;height:24px;background:#f5eee4;border-radius:50%;display:grid;place-items:center;color:#91673b;font-size:11px}.attention-item{padding:18px 24px;border-top:1px solid var(--line);display:flex;align-items:flex-start;gap:12px}.attention-icon{background:#f5eee4;width:29px;height:29px;display:grid;place-items:center;border-radius:8px;color:#9b753e;flex-shrink:0}.attention-item p{font-size:12px;color:var(--muted);margin:5px 0 11px;line-height:1.6}.attention-item h3{font-size:13px}.attention-item .button{font-size:11px}.plan-note{background:#edf0f5;border:1px solid #e0e5ed;border-radius:10px;padding:24px}.plan-note h2{font-size:22px;margin:7px 0 14px}.plan-note p{font-size:12px;color:#687585;line-height:1.8}.plan-note .button{margin-top:18px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{font-size:9px;letter-spacing:1.1px;text-transform:uppercase;color:var(--muted);font-weight:550;padding:11px 24px;background:#fafbf9;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}td{padding:16px 24px;border-bottom:1px solid #eef0ed}tr:last-child td{border-bottom:0}.right{text-align:right}.numeric{font-variant-numeric:tabular-nums;white-space:nowrap}.transfer-person{display:flex;align-items:center;gap:10px}.transfer-person .avatar{width:29px;height:29px;font-size:10px}.muted{color:var(--muted)}.small-text{font-size:11px}.tag{font-size:9px;display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:4px;white-space:nowrap;background:#eef1ee;color:#657467}.tag:before{content:'';width:4px;height:4px;background:currentColor;border-radius:50%}.tag.estimated{color:#8c693a;background:#f8f1e4}.tag.asserted{color:#5b768b;background:#edf2f7}.tag.confirmed{color:#3e7052;background:#eaf3e9}.subtle-note{font-size:11px;color:var(--muted);padding:15px 24px;border-top:1px solid var(--line)}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.search{background:white;border:1px solid var(--line);border-radius:6px;padding:10px 14px;min-width:240px;flex:1}.filter{border:1px solid var(--line);background:white;border-radius:6px;padding:10px}.empty{padding:48px 24px;text-align:center;color:var(--muted)}.empty h2{color:var(--ink);margin-bottom:10px}.empty p{max-width:400px;margin:auto;font-size:13px}.empty .button{margin-top:20px}.loading{padding:50px;color:var(--muted);text-align:center}.loading:before{content:'';display:block;width:22px;height:22px;border:2px solid var(--line);border-top-color:var(--green);border-radius:50%;margin:0 auto 16px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{padding:15px 18px;background:#f8ede7;border:1px solid #ecd7c9;border-radius:7px;color:#865435;margin-bottom:18px;font-size:12px}.error-banner button{margin-left:15px}.evidence-list{padding:0 25px}.evidence{padding:22px 0;border-bottom:1px solid var(--line)}.evidence:last-child{border:0}.evidence h3{margin:8px 0;font-weight:500;font-size:15px}.evidence p{font-size:12px;color:var(--muted)}.evidence-meta{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.evidence details{font-size:12px;color:var(--muted);margin-top:12px}.evidence summary{cursor:pointer}.evidence details p{padding-top:8px;overflow-wrap:anywhere}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:22px}.bank-card{background:#3a5549;color:white;border-radius:10px;padding:26px;min-height:180px;display:flex;flex-direction:column;justify-content:space-between;margin:24px}.bank-card .card-number{font-size:22px;letter-spacing:5px}.bank-card p{font-size:11px;color:#dbe3da}.status-line{display:flex;align-items:center;gap:12px;padding:28px}.status-line h2{font-size:30px}.status-orb{width:48px;height:48px;border-radius:50%;background:var(--pale);display:grid;place-items:center;font-size:22px;color:var(--green)}.danger{color:#9c5543}.actions{display:flex;gap:8px;margin-top:16px;align-items:center}.proposal{padding:24px;border-bottom:1px solid var(--line)}.proposal h3{font-size:16px;margin:12px 0 8px}.proposal p{color:var(--muted);font-size:12px}.conversation-layout{display:grid;grid-template-columns:minmax(0,1fr) 255px;gap:30px}.chat-panel{background:white;border:1px solid var(--line);border-radius:10px;padding:25px;display:flex;flex-direction:column;min-height:590px}.chat-heading{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:20px}.chat-heading p{font-size:11px;color:var(--muted);margin-top:3px}.agent-symbol{font-size:31px;color:var(--green)}#thread{flex:1;max-height:48vh;min-height:240px;overflow:auto;padding:25px 0;display:flex;flex-direction:column;gap:18px}.welcome{text-align:center;padding:38px 10px}.welcome .agent-symbol{font-size:44px}.welcome h2{font-size:27px;margin:10px 0}.welcome p{font-size:12px;color:var(--muted)}.message{max-width:90%;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.message.member{align-self:flex-end;background:#edf2ea;padding:12px 17px;border-radius:10px 10px 0 10px}.message.agent{padding:8px 3px}.message.blocked{background:#f9f0e8;color:#855d39;padding:13px;border-radius:7px}.message.status{color:var(--muted);font-size:11px}.message .citation{font-size:10px;color:var(--green);display:block;margin-top:9px;white-space:normal}.composer-bottom{display:flex;align-items:center;justify-content:space-between;padding:10px 13px}#composer{border:1px solid #d9e1d7;border-radius:9px;background:#fcfdfb}textarea{width:100%;background:none;border:0;resize:vertical;min-height:76px;max-height:220px;padding:16px;display:block;font-size:13px;color:var(--ink)}textarea:focus{outline:0}#composer:focus-within{box-shadow:0 0 0 2px #c3d5bb}.send-button{border:0;background:var(--green);color:white;width:34px;height:34px;border-radius:7px;font-size:23px}.mode{display:flex;gap:3px}.mode button{border:0;background:none;border-radius:4px;font-size:10px;padding:6px 9px;color:var(--muted)}.mode button[aria-pressed=true]{background:#e9eee5;color:#3e5936}.chat-footnote{text-align:center;font-size:9px;color:var(--muted);margin-top:12px}.chat-context{padding:20px 0}.chat-context h2{font-size:29px;margin:15px 0}.chat-context>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:22px}.prompt{width:100%;border:0;background:none;border-top:1px solid var(--line);padding:17px 0;display:flex;justify-content:space-between;font-size:12px;text-align:left;gap:10px}.prompt span{color:#69825d}.context-note{font-size:11px;line-height:1.8;color:#7b857a;background:#edf1e8;padding:18px;border-radius:7px;margin-top:25px}footer{border-top:1px solid var(--line);padding:20px 42px;font-size:10px;color:#859087;display:flex;justify-content:space-between;gap:20px}.sr-only,.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip:focus{clip:auto;width:auto;height:auto;z-index:20;background:white;padding:10px}.member-sections{display:flex;flex-direction:column;gap:22px}.member-title{display:flex;align-items:center;gap:10px}.date-cell{white-space:nowrap;color:var(--muted)}.entry-detail{display:flex;gap:10px;justify-content:space-between;padding:4px 0}.flow-details summary{cursor:pointer;font-size:11px;color:var(--green)}.flow-details div{min-width:210px;padding-top:8px}.ledger-label{font-weight:500}.scope-note{font-size:11px;color:var(--muted);margin:0 0 20px}
@media(min-width:1550px){main{padding-top:50px}.overview-grid{gap:28px}.hero{min-height:225px}}
@media(max-width:1100px){.sidebar{width:188px;padding:30px 15px}.workspace{margin-left:188px}main{padding:30px 26px}.topbar{padding:0 26px}.overview-grid{grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr);gap:16px}.split-content{grid-template-columns:110px 1fr;gap:15px;padding:5px 20px 24px}.donut{width:110px;height:110px}.panel-head{padding:20px}.hero{padding:25px}.hero-number{font-size:42px}.conversation-layout{grid-template-columns:minmax(0,1fr) 205px;gap:20px}td,th{padding-left:18px;padding-right:18px}}
@media(max-width:850px){.sidebar{position:static;width:100%;padding:16px 22px;display:block;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:29px;margin:0 0 18px}.brand-mark{font-size:32px}.household-control{position:absolute;right:20px;top:16px;max-width:210px;padding:0}.household-control label{font-size:8px}.household-control select{display:block;margin-top:2px;font-size:12px}.sidebar nav{display:flex;overflow:auto;gap:4px}.nav-link{white-space:nowrap;padding:9px 12px;font-size:12px;gap:8px}.nav-section,.sidebar-bottom{display:none}.workspace{margin-left:0}.topbar{height:55px;padding:0 24px}.overview-grid{grid-template-columns:minmax(0,1.4fr) minmax(240px,1fr)}.page-heading{margin-bottom:24px}h1{font-size:35px}.split-content{grid-template-columns:1fr}.donut{display:none}.conversation-layout{grid-template-columns:1fr}.chat-context{display:none}main{min-height:65vh}footer{padding:18px 24px}}
@media(max-width:600px){main{padding:25px 18px 35px}.topbar{padding:0 18px}.page-heading{align-items:flex-start;gap:12px}h1{font-size:31px}.page-heading>.button{padding:9px 11px;font-size:10px;gap:8px;margin-top:23px}.subtitle{font-size:12px;max-width:250px}.eyebrow{font-size:9px}.overview-grid{grid-template-columns:1fr}.overview-right{gap:18px}.hero{min-height:196px}.hero-number{font-size:43px}.split-content{grid-template-columns:110px 1fr}.donut{display:grid}.panel-head{padding:20px}.overview-left{gap:18px}.panel-head h2{font-size:21px}.person-control label{display:none}.topbar #breadcrumb{font-size:11px}.chat-panel{padding:17px;min-height:530px}.chat-heading p{max-width:220px}#thread{max-height:46vh}.mode button{font-size:9px;padding:6px}.chat-footnote{font-size:9px}.search{min-width:160px}.toolbar{gap:8px}.filter{max-width:150px;font-size:12px}.period-pill{float:none;display:inline-block;margin-bottom:8px}.hero .eyebrow{margin-bottom:0}.hero p{max-width:85%}footer span{display:none}td,th{padding:13px 15px}.table-wrap table{min-width:470px}.attention-item{padding:18px 20px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:600px){.overview-grid .table-wrap table{min-width:0}.overview-grid th,.overview-grid td{padding:13px 12px}.overview-grid th{font-size:8px;letter-spacing:.6px}.overview-grid td{font-size:11px}.split-content{grid-template-columns:95px 1fr;gap:14px}.donut{width:95px;height:95px}.donut:before{inset:14px}.donut-center{font-size:17px}.donut-center small{font-size:8px}.hero .orb{opacity:.45;right:-60px}.funder-name small{font-size:9px}.funder-value{font-size:12px}.funder-value small{font-size:9px}}

/* Personal records and the amount-free clan map. */
.personal-scope{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.personal-scope h2{font-size:24px}.personal-scope p{font-size:12px;color:var(--muted);margin-top:5px}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.map-toolbar .search{flex:0 1 300px}.map-badge{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--green)}.map-badge>span{width:7px;height:7px;border-radius:50%;background:#809a70}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;overflow:hidden}.map-canvas{position:relative;min-width:0;background-color:#fafbf8;background-image:radial-gradient(#bdc9ba 0.7px,transparent .7px);background-size:22px 22px}.map-caption{position:absolute;top:25px;left:26px;pointer-events:none}.map-caption>p:last-child{font-size:10px;color:var(--muted);margin-top:7px}.clan-graph{display:block;width:100%;height:580px;touch-action:none;cursor:grab}.clan-graph:active{cursor:grabbing}.map-edge{fill:none;stroke:#9cad9e;stroke-width:1.6}.map-node{cursor:grab;outline:none}.node-core{fill:#e9eedf;stroke:#8da17d;stroke-width:1.3}.node-halo{fill:#eef2e9;opacity:.7}.node-initials{fill:#526449;font:14px var(--sans);pointer-events:none}.node-name{fill:#384d40;font:17px var(--serif);pointer-events:none}.node-you{fill:#6b8063;font:8px var(--sans);letter-spacing:2px;pointer-events:none}.is-you .node-core{fill:#3b6050;stroke:#3b6050}.is-you .node-initials{fill:white}.selected .node-halo,.map-node:focus-visible .node-halo{stroke:#57784b;stroke-width:1.5;fill:#e4edda}.dimmed{opacity:.18}.search-miss{opacity:.12}.map-controls{position:absolute;bottom:25px;left:25px;display:flex;gap:6px}.map-controls .button{background:#fff;border:1px solid var(--line);padding:8px 12px;font-size:12px}.map-hint{position:absolute;bottom:26px;right:20px;font-size:9px;color:var(--muted);max-width:185px;text-align:right}.map-detail{border-left:1px solid var(--line);padding:30px 26px;background:#fff}.map-detail-symbol{display:block;color:#69845a;font:38px var(--serif);margin:18px 0 24px}.map-detail h2{font-size:28px;line-height:1.2;margin:15px 0}.map-detail h2 small{font:12px var(--sans);color:var(--muted)}.map-detail>p:not(.eyebrow){font-size:12px;line-height:1.8;color:var(--muted);margin:13px 0}.map-people{margin-top:25px}.map-person-button{display:flex;justify-content:space-between;align-items:center;width:100%;padding:13px 0;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;color:var(--green);font-size:12px}.map-person-button:hover{color:#293e28;background:#f5f8f1}.map-connection-group{margin-top:25px}.map-connection-group>p:not(.eyebrow){font-size:11px;color:var(--muted);padding-top:10px}.map-detail-note{border-top:1px solid var(--line);padding-top:18px}.map-legend{display:flex;gap:25px;flex-wrap:wrap;color:var(--muted);font-size:10px;padding-top:17px}.map-legend span{display:flex;align-items:center;gap:8px}.legend-person{width:9px;height:9px;background:#dce6cf;border:1px solid #8da17d;border-radius:50%}.legend-flow{width:24px;height:1px;background:#8da17d;position:relative}.legend-flow:after{content:'›';position:absolute;right:-1px;top:-9px;font-size:17px;color:#8da17d}
@media(max-width:1100px){.map-layout{grid-template-columns:minmax(0,1fr) 230px}.map-detail{padding:22px 18px}.map-hint{display:none}.clan-graph{height:510px}}
@media(max-width:700px){.map-layout{grid-template-columns:1fr}.clan-graph{height:410px}.map-detail{border-left:0;border-top:1px solid var(--line);padding:22px}.map-detail-symbol{margin:6px 0;font-size:28px}.map-detail h2{font-size:25px}.map-toolbar{flex-wrap:wrap;gap:12px}.map-toolbar .search{flex:1 1 100%}.map-caption{left:18px;top:18px}.map-caption>p:last-child{max-width:230px}.map-controls{left:18px;bottom:15px}.map-legend{gap:14px}.personal-scope{align-items:flex-start;flex-direction:column}.personal-scope h2{font-size:22px}.node-name{font-size:22px}.node-you{font-size:12px}}

/* Keep the SVG viewport flush with its grid cell, even when the detail panel
   makes the row taller. A fixed-height SVG clipped nodes above blank canvas. */
.map-canvas{min-height:580px;overflow:hidden}.clan-graph{position:absolute;inset:0;width:100%;height:100%}.map-caption,.map-controls,.map-hint{z-index:1}.map-tooltip{position:absolute;z-index:3;width:240px;max-width:calc(100% - 24px);max-height:calc(100% - 24px);overflow:auto;background:#fff;border:1px solid #d9e2d3;border-radius:12px;padding:16px 18px;box-shadow:0 8px 30px #2945341a;color:var(--ink);font-size:12px;overflow-wrap:anywhere}.map-tooltip strong{display:block;font:22px var(--serif);margin-bottom:10px}.map-tooltip strong span{font:10px var(--sans);color:var(--green);background:#edf2e7;border-radius:12px;padding:3px 7px;margin-left:6px}.map-tooltip p{margin:9px 0;line-height:1.6}.map-tooltip p>span{display:block;font-size:10px;color:var(--muted);margin-bottom:2px}.map-tooltip small{display:block;border-top:1px solid var(--line);padding-top:10px;margin-top:12px;font-size:10px;color:var(--muted)}
@media(max-width:1100px){.map-canvas{min-height:510px}}
@media(max-width:700px){.map-canvas{min-height:410px}}
.view-switch{display:flex;padding:3px;border:1px solid var(--line);border-radius:7px;background:#eef2ea}.view-switch button{border:0;background:none;color:var(--muted);padding:8px 16px;border-radius:5px;font-size:12px}.view-switch button[aria-pressed=true]{background:white;color:var(--green);box-shadow:0 1px 4px #293e2812}#flow-graph{margin-bottom:24px}
.budget-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:18px}.budget-stat{padding:24px}.budget-stat h2{font-size:35px;margin:14px 0 10px}.budget-stat p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.7}.budget-columns{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px}.bill-list{padding:0 24px}.bill-row{display:flex;align-items:center;gap:16px;padding:20px 0;border-top:1px solid var(--line)}.bill-date{flex-shrink:0;width:44px;background:#eef2e8;border-radius:8px;text-align:center;padding:7px}.bill-date strong{display:block;font:23px var(--serif)}.bill-date span{font-size:10px;color:var(--muted)}.bill-body{flex:1;min-width:0}.bill-body h3{font-size:13px}.bill-body p{font-size:10px;color:var(--muted);margin-top:6px}.bill-amount{text-align:right;font-size:14px;font-variant-numeric:tabular-nums}.bill-amount small{display:block;font-size:9px;color:var(--muted);margin-top:5px}.bill-search{padding:0 24px}
@media(max-width:1000px){.budget-columns{grid-template-columns:1fr}.budget-stat{padding:18px}.budget-stat h2{font-size:28px}}
@media(max-width:600px){.budget-summary{grid-template-columns:1fr;gap:12px}.budget-stat h2{font-size:30px;margin:8px 0}.bill-list{padding:0 15px}.bill-row{gap:10px;flex-wrap:wrap}.bill-amount{font-size:12px}.bill-body h3{font-size:12px}.bill-search{padding:0 15px}.budget-stat p:not(.eyebrow){font-size:11px}}

.grocery-setup{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;margin-bottom:24px}.grocery-actions{display:flex;gap:10px;flex-wrap:wrap;padding:0 24px 24px}.grocery-routines{display:grid;gap:22px}.grocery-routine .panel-head{gap:15px;flex-wrap:wrap}.grocery-routine-body{padding:0 24px 24px;font-size:13px;line-height:1.8}.grocery-routine-body p{margin-bottom:8px}.grocery-routine-body details{margin:15px 0}.grocery-routine-body summary{color:var(--green);cursor:pointer}.grocery-routine-body ul{padding-left:20px}.grocery-root a{color:var(--green)}.grocery-routine-body .actions{flex-wrap:wrap;margin-bottom:15px}.grocery-history{margin-top:26px}.grocery-audit{padding:20px 24px;font-size:11px;color:var(--muted);border-top:1px solid var(--line)}.grocery-audit p{margin:10px 0}.grocery-attention{padding:24px;margin-bottom:24px;border-color:#d4dec4;background:#fbfcf6}.grocery-attention h2{margin:12px 0}.grocery-attention p{font-size:13px;line-height:1.7}.grocery-attention .actions{flex-wrap:wrap;margin-bottom:12px}.grocery-form{margin-bottom:24px}.grocery-form-body{padding:0 24px 26px}.grocery-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:20px}.grocery-form label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--muted)}.grocery-form input,.grocery-form select{width:100%;min-width:0;border:1px solid var(--line);border-radius:6px;padding:11px;background:#fff;color:var(--ink);font-size:13px}.grocery-form h3{margin-bottom:10px}.grocery-item{display:grid;grid-template-columns:1fr 1.3fr 80px 35px;gap:12px;align-items:end;padding:14px 0;border-top:1px solid var(--line)}.grocery-form .actions{margin-top:25px}.grocery-item button{padding:8px;font-size:20px}.grocery-worker{border-top:1px solid #dbe2d8;margin-top:18px;padding-top:14px}
@media(max-width:1000px){.grocery-setup{grid-template-columns:1fr}.grocery-item{grid-template-columns:1fr 1fr 70px 30px}}
@media(max-width:600px){.grocery-fields{grid-template-columns:1fr}.grocery-item{grid-template-columns:1fr 60px}.grocery-item label:nth-child(1),.grocery-item label:nth-child(2){grid-column:1/-1}.grocery-form-body{padding:0 18px 22px}.grocery-actions{padding:0 18px 20px}.grocery-routine-body{padding:0 18px 22px}.grocery-root .personal-scope>.button{width:100%}}
.grocery-receipt-label{display:flex;flex-direction:column;gap:5px;font-size:11px;min-width:220px;flex:1}.grocery-receipt-label input{padding:10px;border:1px solid var(--line);border-radius:6px;min-width:0;width:100%;font-size:12px}

.budget-back{display:inline-block;color:var(--green);font-size:12px;text-decoration:none;margin-bottom:17px}.budget-parts{margin-bottom:28px}.budget-parts-heading{margin:0 0 18px}.budget-parts-heading h2{font-size:26px}.budget-parts-heading p{font-size:12px;color:var(--muted);margin-top:7px}.budget-part-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:16px}.budget-part-card{display:flex;flex-direction:column;min-height:210px;padding:23px;border:1px solid var(--line);border-radius:10px;background:white;color:var(--ink);text-decoration:none;transition:border-color .15s,box-shadow .15s}.budget-part-card:hover{border-color:#9bb18d;box-shadow:0 5px 20px #2f50330b}.budget-part-card.grocery-part{background:#f0f4e9;border-color:#d9e2ce}.budget-part-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:20px}.budget-part-icon{font-size:24px;color:var(--green)}.budget-part-card h3{font:25px var(--serif);margin-bottom:8px}.budget-part-card p{font-size:12px;color:var(--muted);line-height:1.7}.budget-part-open{display:flex;justify-content:space-between;gap:15px;color:var(--green);font-size:12px;margin-top:auto;padding-top:23px}.budget-part-value{font-size:18px;margin-top:15px}.budget-part-value small{font-size:10px;color:var(--muted);margin-left:6px}.budget-parts-note{margin-top:13px}.bill-detail-link{color:var(--green);text-decoration:none}.bill-detail-link:hover{text-decoration:underline}.budget-bill-detail .panel-head{flex-wrap:wrap;gap:15px}.bill-detail-facts{display:grid;grid-template-columns:1fr 1fr;margin:0 24px;gap:0 24px}.bill-detail-facts>div{padding:20px 0;border-top:1px solid var(--line)}.bill-detail-facts dt{font-size:10px;color:var(--muted);margin-bottom:8px}.bill-detail-facts dd{margin:0;font-size:16px;overflow-wrap:anywhere}.bill-detail-bottom{padding:20px 24px;border-top:1px solid var(--line)}.bill-detail-bottom p{font-size:12px;color:var(--muted);margin-bottom:16px}.bill-occurrences{margin-top:22px}.bill-occurrences ul{list-style:none;margin:0;padding:0 24px 20px}.bill-occurrences li{display:flex;justify-content:space-between;gap:15px;padding:15px 0;border-top:1px solid var(--line);font-size:13px}
@media(max-width:600px){.budget-part-grid{grid-template-columns:1fr}.budget-part-card{min-height:190px;padding:20px}.budget-parts-heading h2{font-size:24px}.bill-detail-facts{grid-template-columns:1fr}.budget-section-content .personal-scope{margin-top:0}}

/* Budget categories open as pages, with the budget as their only navigation. */
.sample-banner{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 17px;background:#edf2e8;border:1px solid #dce5d3;border-radius:7px;margin-bottom:23px;font-size:11px;color:#62715b}.sample-banner strong{font-weight:650;color:var(--green)}.sample-banner a{color:var(--green);white-space:nowrap}.sample-plan{padding:27px 30px;margin-bottom:24px}.sample-plan-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.sample-plan-heading h2{font-size:29px}.sample-plan-heading p:not(.eyebrow){font-size:12px;color:var(--muted);margin-top:9px}.sample-remaining{text-align:right;flex-shrink:0}.sample-remaining strong{display:block;font:35px var(--serif)}.sample-remaining span{font-size:11px;color:var(--muted)}.sample-allocation{display:flex;gap:4px;height:12px;border-radius:10px;overflow:hidden;margin:26px 0 12px}.sample-plan-caption{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:var(--muted)}.sample-row-label{display:flex;justify-content:space-between;padding:15px 58px 15px 26px;font-size:10px;color:var(--muted);background:#fafbf8;border-bottom:1px solid var(--line)}.sample-category{display:grid;grid-template-columns:44px minmax(0,1fr) 120px 95px 12px;align-items:center;gap:17px;padding:22px 26px;text-decoration:none;border-bottom:1px solid var(--line);transition:background .15s}.sample-category:last-child{border-bottom:0}.sample-category:hover{background:#f3f6ee}.sample-category-icon{width:42px;height:42px;border-radius:12px;background:#f0f3ec;display:grid;place-items:center;font-size:25px}.sample-category-name strong{display:block;font:21px var(--serif)}.sample-category-name small{display:block;font-size:11px;color:var(--muted);margin-top:4px}.sample-mode{color:var(--muted);font-size:10px;text-align:right}.sample-category-amount{text-align:right;font-size:18px;font-variant-numeric:tabular-nums}.sample-chevron{color:#899b80;font-size:25px}.sample-footnote{font-size:11px;color:var(--muted);margin-top:18px;line-height:1.7}.sample-detail-grid{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr);gap:24px;align-items:start}.sample-detail-summary{padding:26px}.sample-detail-summary h2{font-size:40px;margin-bottom:17px}.sample-detail-summary h2 small{font:12px var(--sans);color:var(--muted)}.sample-detail-summary>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8}.sample-detail-summary hr{border:0;border-top:1px solid var(--line);margin:25px 0}.sample-detail-summary h3{margin-bottom:8px}.sample-detail-summary .button{margin-top:22px;white-space:normal}.sample-routine-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 26px 26px}.sample-routine label{display:flex;flex-direction:column;gap:8px;font-size:11px;color:var(--muted)}.sample-routine input,.sample-routine select,.sample-routine textarea{width:100%;min-width:0;border:1px solid var(--line);border-radius:6px;background:white;padding:11px;color:var(--ink);font-size:13px}.sample-routine textarea{resize:vertical}.sample-field-wide,.sample-save{grid-column:1/-1}.sample-save{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.sample-save [role=status]{font-size:11px;color:var(--green)}
@media(max-width:1100px){.sample-category{grid-template-columns:42px minmax(0,1fr) 85px 12px;gap:13px}.sample-mode{display:none}.sample-detail-grid{grid-template-columns:1fr}}
@media(max-width:600px){.sample-banner{align-items:flex-start;flex-direction:column;gap:7px}.sample-plan{padding:22px 18px}.sample-plan-heading h2{font-size:24px}.sample-remaining strong{font-size:28px}.sample-plan-caption{flex-direction:column}.sample-category{padding:18px 14px;grid-template-columns:32px minmax(0,1fr) 65px 9px;gap:10px}.sample-category-icon{width:32px;height:36px;font-size:21px}.sample-category-name strong{font-size:19px}.sample-category-name small{font-size:10px}.sample-category-amount{font-size:15px}.sample-row-label{padding:13px 33px 13px 15px}.sample-routine-fields{grid-template-columns:1fr;padding:0 20px 22px}.sample-detail-summary{padding:22px}}

.budget-detail-stack{display:grid;gap:22px;min-width:0}.budget-routine-note{margin-top:17px}.budget-breakdown-row{padding:21px 26px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.budget-breakdown-row h3{font-size:14px}.budget-breakdown-row p{color:var(--muted);font-size:11px;margin:6px 0 11px}.budget-breakdown-row>strong{font-size:17px;white-space:nowrap;font-weight:500}.budget-breakdown-row strong small{font-size:10px;color:var(--muted);font-weight:400;display:block;text-align:right}.budget-breakdown-row .button{white-space:normal;text-align:left}.budget-breakdown-total{display:flex;justify-content:space-between;padding:18px 26px;background:#f3f6ef;border-top:1px solid var(--line);font-size:12px}.budget-conversation{padding:26px}.budget-conversation>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8;margin-top:14px}.budget-conversation .button{margin-top:20px;white-space:normal}
.budget-evidence{margin-top:22px;font-size:12px;color:var(--muted)}.budget-evidence summary{cursor:pointer;color:var(--green)}.budget-evidence blockquote{margin:16px 0;padding:12px 16px;border-left:2px solid #b0c3a2;background:#f4f7ef;white-space:pre-wrap;overflow-wrap:anywhere}.budget-evidence p{overflow-wrap:anywhere}

/* First-use journey and prepared decisions share the everyday budget language. */
.journey-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(270px,.8fr);gap:45px;align-items:start}.journey-main{min-width:0}.journey-welcome{padding:6px 0 28px}.journey-symbol{display:block;font:55px var(--serif);color:#7c9870;margin-bottom:18px}.journey-welcome h2{font:38px/1.16 var(--serif);margin-bottom:20px;letter-spacing:-1px}.journey-welcome>p:last-child{font-size:14px;line-height:1.8;color:var(--muted);max-width:520px}.journey-introduction,.journey-story{padding:28px}.journey-introduction label{display:block;font-size:14px;font-weight:600;margin:0 0 8px}.journey-introduction p{font-size:12px;color:var(--muted);line-height:1.8;margin:8px 0 18px}.journey-introduction textarea,.journey-introduction input{width:100%;border:1px solid var(--line);border-radius:8px;padding:15px;background:#fbfcf9;color:var(--ink);margin:0 0 20px;resize:vertical;min-width:0}.journey-submit{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.journey-submit [role=status]{font-size:12px}.journey-story blockquote{font:23px/1.55 var(--serif);margin:15px 0 25px;white-space:pre-wrap;overflow-wrap:anywhere}.journey-progress{background:#eef3e7;border-color:#dce5d3;padding:30px;margin-top:16px}.journey-progress h2{font-size:26px}.journey-progress>p:not(.eyebrow){font-size:11px;color:var(--muted);margin-top:12px}.journey-progress ol{list-style:none;margin:28px 0 0;padding:0}.journey-progress li{display:flex;gap:14px;padding:0 0 25px}.journey-progress li>span{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border:1px solid #b8c9a8;color:#738668;border-radius:50%;font-size:11px}.journey-progress li.is-complete>span{background:var(--green);color:white;border-color:var(--green)}.journey-progress li strong{font-size:12px}.journey-progress li p{font-size:11px;color:var(--muted);margin:6px 0 10px;line-height:1.7}.journey-progress li:last-child{padding-bottom:0}.journey-next{padding:30px 0}.journey-next h2{font-size:25px}.journey-next p{font-size:12px;color:var(--muted);line-height:1.8;margin:12px 0 20px}.journey-next>a{display:inline-block;margin:14px;font-size:11px;color:var(--green)}.journey-connection-note{font-size:11px;color:var(--muted);padding:16px 3px;line-height:1.8}.journey-sources{margin-top:24px;border-top:1px solid #d1dcc7;padding-top:20px}.journey-sources p{font-size:12px;margin:10px 0}.journey-entry{margin-bottom:24px;padding:22px 26px;display:flex;justify-content:space-between;align-items:center;gap:20px;background:#edf2e7;border:1px solid #dce5d2;border-radius:10px}.journey-entry p{font-size:12px;color:var(--muted);margin-top:6px}.chat-context .button{margin-top:16px;white-space:normal}.context-note p{overflow-wrap:anywhere}.decision-intro{display:flex;justify-content:space-between;align-items:center;gap:25px;margin:10px 0 30px}.decision-intro h2{font-size:34px}.decision-intro>p{font-size:12px;color:var(--muted);max-width:230px}.decision-list{display:grid;gap:23px}.decision-card{padding:30px}.decision-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.decision-card h2{font-size:30px;margin:12px 0 18px}.decision-recommendation{font-size:15px;line-height:1.8;max-width:780px}.decision-reasons{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:25px 0;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.decision-reasons h3{font-size:12px;margin-bottom:8px}.decision-reasons p{font-size:12px;color:var(--muted);line-height:1.8}.decision-sources{font-size:11px;color:var(--muted)}.decision-actions{display:flex;gap:15px;flex-wrap:wrap;margin-top:25px}.decision-note{font-size:11px;color:var(--muted);margin-top:18px}.decision-history{margin-top:28px;color:var(--muted)}.decision-history summary{cursor:pointer;margin-bottom:18px}.decision-card [role=status]{font-size:12px;margin-top:12px}.decision-card{overflow-wrap:anywhere}
@media(max-width:1000px){.journey-layout{gap:24px;grid-template-columns:1fr}.journey-progress{margin-top:0}.journey-progress ol{display:grid;grid-template-columns:1fr 1fr;gap:20px}.journey-progress li{padding-bottom:0}}
@media(max-width:600px){.journey-welcome h2{font-size:32px}.journey-introduction,.journey-story,.journey-progress{padding:22px}.journey-progress ol{grid-template-columns:1fr}.journey-entry,.decision-intro{align-items:flex-start;flex-direction:column}.decision-card{padding:22px}.decision-card h2{font-size:26px}.decision-reasons{grid-template-columns:1fr}.decision-actions .button{white-space:normal}.decision-intro h2{font-size:29px}}
@media(max-width:850px){.chat-context{display:block;border-top:1px solid var(--line);padding-top:22px}.chat-context h2{font-size:24px}.chat-context h2 br{display:none}.chat-context .context-note{margin-top:18px}}

.overview-perspective{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:23px}.overview-perspective>p{font-size:12px;color:var(--muted)}.role-overview .hero .hero-number{margin-top:18px}.receiver-hero{background:#e8efeb;border-color:#d9e5dd}.overview-metrics{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 26px 26px}.overview-metrics span,.overview-metrics small{display:block;font-size:11px;color:var(--muted)}.overview-metrics strong{display:block;font:31px var(--serif);margin:10px 0}.overview-support-list{padding:0 26px 18px}.overview-support-list>div{display:flex;gap:13px;align-items:center;padding:16px 0;border-top:1px solid var(--line);font-size:13px}.overview-support-list strong{margin-left:auto;font-weight:500}.overview-budget-parts{padding:0 26px}.overview-budget-parts a{display:flex;justify-content:space-between;gap:18px;padding:17px 0;border-top:1px solid var(--line);text-decoration:none;font-size:13px}.overview-budget-parts a:hover{color:var(--green)}.overview-budget-parts strong{font-weight:500}.overview-footnote{font-size:11px;color:var(--muted);padding:15px 26px 22px}.overview-upcoming{padding:0 22px 16px}.overview-upcoming a{display:flex;gap:11px;align-items:center;padding:17px 0;border-top:1px solid var(--line);text-decoration:none;font-size:11px}.overview-upcoming time{color:var(--green);min-width:42px}.overview-upcoming strong{font-size:12px;display:block}.overview-upcoming small{display:block;color:var(--muted);margin-top:4px}.overview-upcoming a>span{margin-left:auto;white-space:nowrap}.overview-grid.role-overview{grid-template-columns:minmax(0,1.5fr) minmax(290px,1fr)}
@media(max-width:1000px){.overview-grid.role-overview{grid-template-columns:1fr}.overview-perspective{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.overview-metrics{grid-template-columns:1fr;gap:22px}.overview-support-list{padding:0 20px 15px}.overview-budget-parts{padding:0 20px}.overview-upcoming{padding:0 18px 15px}.overview-perspective .view-switch{width:100%}.overview-perspective .view-switch button{flex:1}}

/* Identity gate: private views stay hidden while session state is checked. */
.auth-pending body > :not(.auth-screen) { display:none !important; }
.auth-screen { min-height:100dvh; display:grid; place-items:center; padding:32px 20px; background:#f0f3ed; }
.auth-card { width:min(100%,510px); padding:40px; border:1px solid #dce3d8; border-radius:18px; background:#fafbf8; }
.auth-card h1 { font-size:42px; line-height:1.1; margin:20px 0; }
.auth-card .eyebrow { margin-top:36px; }
.auth-card form, .auth-dialog form:not([method]) { display:grid; gap:18px; margin:24px 0; }
.auth-card label, .auth-dialog label { display:grid; gap:8px; font-size:14px; }
.auth-card input, .auth-dialog input, .auth-dialog select { width:100%; min-width:0; box-sizing:border-box; padding:12px; border:1px solid #b9c6b8; border-radius:7px; background:white; font:inherit; }
.auth-card [role=alert], .auth-dialog [role=alert] { color:#8c3838; }
.auth-dialog { width:min(560px,calc(100vw - 40px)); max-height:85dvh; overflow:auto; padding:28px; border:1px solid #c5d0c1; border-radius:14px; color:#293c34; }
.auth-dialog::backdrop { background:#1e352a77; }
.auth-dialog details { margin:24px 0; }
@media(max-width:550px) { .auth-card { padding:24px; } .auth-card h1 { font-size:34px; } .person-control { flex-wrap:wrap; } }
.google-signin { display:flex; align-items:center; justify-content:center; gap:16px; width:100%; min-height:44px; margin-top:28px; padding:10px 16px; background:white; border:1px solid #747775; border-radius:6px; color:#1f1f1f; font:500 14px Arial,sans-serif; cursor:pointer; }
.google-signin:disabled { opacity:.6; cursor:default; }
/* Apple's button, per its Human Interface Guidelines: black, white mark, same height as Google's. */
.apple-signin { display:flex; align-items:center; justify-content:center; gap:12px; width:100%; min-height:44px; margin-top:12px; padding:10px 16px; background:#000; border:1px solid #000; border-radius:6px; color:#fff; font:500 15px -apple-system,BlinkMacSystemFont,Arial,sans-serif; cursor:pointer; }
.apple-signin:disabled { opacity:.6; cursor:default; }
#google-status { margin-top:12px; font-size:13px; color:#718078; }
.auth-card form[hidden], .auth-card button[hidden] { display:none; }

/* A letter that opens into the product, after identity and before setup. */
.letter-open body > .sidebar,.letter-open body > .workspace,.letter-open body > .skip { display:none; }
.letter-open body { background:#f8f7f2; }
.letter-shell { color:#2d4037; background:radial-gradient(ellipse at 50% 3%,#ecefe3 0,transparent 30%),#f8f7f2; min-height:100dvh; transition:opacity .4s,transform .4s; }
.letter-shell.letter-leaving { opacity:0; transform:translateY(-12px); }
.letter-top { height:100px; max-width:1260px; padding:0 48px; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.letter-top .brand { font-size:36px; }
.letter-top > span { color:#7a867a; font-family:Georgia,serif; font-style:italic; }
.letter-progress { height:2px; position:fixed; inset:0 0 auto; z-index:30; background:transparent; }
.letter-progress i { display:block; height:100%; background:#788e6e; transition:width .12s linear; }
.founder-letter { padding:0; max-width:none; }
.letter-opening { text-align:center; padding:64px 24px 0; }
.letter-opening .eyebrow { font-size:10px; letter-spacing:.22em; }
.letter-opening h1 { font:normal clamp(52px,6vw,84px)/1.03 Georgia,serif; letter-spacing:-.055em; margin:25px 0; }
.letter-deck { color:#7a867a; font-size:16px; }
.founder-photo { width:min(100%,510px); margin:48px auto 64px; position:relative; }
.founder-photo img { display:block; width:100%; max-height:570px; object-fit:cover; border-radius:180px 180px 8px 8px; }
.founder-photo figcaption { color:#7c8679; font-size:11px; margin:16px 0 0; letter-spacing:.04em; }
.photo-mat { aspect-ratio:1.2; border-radius:210px 210px 8px 8px; background:#e6e9df; border:1px solid #d7dece; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; box-shadow:inset 0 0 0 18px #eef0e8; }
.photo-mat span { font:italic 42px Georgia,serif; color:#74836c; }
.photo-mat span em { color:#a6b099; }
.photo-mat i { font:12px Georgia,serif; color:#809176; letter-spacing:.07em; }
.letter-prose { width:min(100% - 48px,560px); margin:0 auto; font:18px/1.85 Georgia,serif; }
.letter-prose p { margin:0 0 25px; }
.letter-prose .letter-salutation { font-size:26px; margin-bottom:28px; }
.letter-prose .letter-pullquote { font-size:38px; line-height:1.25; letter-spacing:-.035em; margin:48px 0; color:#59764f; }
.letter-economics { margin:84px auto 0; }
.letter-prose .eyebrow { font:10px/1.5 Arial,sans-serif; letter-spacing:.2em; margin-bottom:20px; }
.letter-economics h2,.letter-conversation h2 { font:normal clamp(34px,4vw,46px)/1.13 Georgia,serif; letter-spacing:-.035em; margin:0 0 24px; }
.letter-prose .button { font:14px/1.5 Arial,sans-serif; }
.letter-economics [data-expand] { padding-left:0; }
.economics-fold { display:grid; grid-template-rows:0fr; opacity:0; transition:grid-template-rows .65s ease,opacity .5s ease; }
.economics-fold.is-open { grid-template-rows:1fr; opacity:1; }
.economics-fold > div { overflow:hidden; min-height:0; }
.economics-card { width:min(100% - 48px,880px); margin:28px auto 8px; padding:36px; background:#edf0e7; border:1px solid #dce2d3; border-radius:16px; }
.economics-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.economics-heading .eyebrow { font-size:10px; }
.example-badge { font-size:11px; border:1px solid #c6cfbd; border-radius:100px; padding:5px 9px; white-space:nowrap; color:#697560; }
.economics-card h3 { font:normal 32px/1.12 Georgia,serif; margin:24px 0 12px; letter-spacing:-.025em; }
.economics-note { font-size:13px; max-width:490px; line-height:1.6; color:#727c6e; }
.economics-income { display:flex; justify-content:space-between; align-items:center; gap:20px; margin:32px 0 16px; font-size:13px; }
.economics-income strong { font:32px Georgia,serif; }
.cost-bar { display:flex; gap:4px; height:24px; border-radius:5px; overflow:hidden; }
.cost-bar i { width:var(--share); background:var(--cost-color); }
.cost-layout { display:grid; grid-template-columns:1.2fr 1fr; gap:34px; margin-top:28px; }
.cost-choices { display:grid; gap:5px; }
.cost-choices button { display:flex; justify-content:space-between; gap:15px; border:1px solid transparent; border-radius:7px; padding:12px; background:transparent; font:13px Arial,sans-serif; color:inherit; text-align:left; cursor:pointer; }
.cost-choices button[aria-pressed=true] { background:#fafbf7; border-color:#d4ddc9; }
.cost-choices button span { display:flex; align-items:center; gap:9px; }
.cost-choices i { width:8px; height:8px; border-radius:50%; background:var(--cost-color); flex-shrink:0; }
.cost-detail { align-self:center; }
.cost-detail .eyebrow { font-size:9px; line-height:1.5; }
.cost-detail h4 { font:normal 24px Georgia,serif; margin:15px 0; }
.cost-detail > p:last-child { font-size:14px; line-height:1.7; color:#6b7966; }
.letter-subscribe { padding-top:58px; }
.letter-checkout { margin:34px 0 52px; }
.letter-checkout .button { min-height:48px; display:inline-flex; gap:24px; align-items:center; padding:14px 22px; }
.letter-checkout .unavailable { opacity:.55; cursor:default; }
.letter-checkout p { font:12px/1.6 Arial,sans-serif; color:#7d8678; margin-top:14px; max-width:400px; }
.letter-prose .letter-signoff { margin:0 0 10px; font-size:16px; }
.founder-signature { font:italic 43px 'Snell Roundhand','Apple Chancery',cursive; letter-spacing:-.04em; }
.founder-signature span { color:#889675; }
.letter-prose .signature-caption { font:10px/1.5 Arial,sans-serif; color:#889080; margin-top:12px; }
.letter-conversation { margin:56px auto 76px; padding:0; background:transparent; text-align:left; }
.letter-connect-link { display:inline; padding:0; border:0; background:none; font:inherit; color:#355e4e; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; cursor:pointer; }
.letter-composer { width:100%; padding:16px 18px 12px; margin:28px 0 0; border:1px solid #d3d9cd; border-radius:8px; background:#fffefa; text-align:left; box-shadow:none; }
.letter-composer textarea { display:block; width:100%; resize:vertical; border:0; padding:0; background:transparent; color:#34472e; font:16px/1.65 Georgia,serif; min-height:80px; }
.letter-compose-footer { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-top:10px; }
.letter-compose-footer input { min-width:0; width:180px; max-width:calc(100% - 58px); padding:6px 0; border:0; border-bottom:1px solid #e1e5da; border-radius:0; background:transparent; color:inherit; font:13px/1.5 Arial,sans-serif; }
.letter-send { width:36px; height:36px; flex-shrink:0; display:grid; place-items:center; border:0; border-radius:50%; background:#355e4e; color:white; font:22px/1 Arial,sans-serif; cursor:pointer; }
.letter-send:disabled { opacity:.5; cursor:wait; }
.letter-composer .letter-status { font:12px/1.5 Arial,sans-serif; color:#74816b; margin:8px 0 0; }
.letter-composer .letter-status:empty { display:none; }
.letter-footer { display:flex; justify-content:space-between; gap:20px; padding:25px 40px; background:#edf1e8; border:0; font-size:10px; color:#86917f; }
.letter-reveal { opacity:0; transform:translateY(18px); transition:opacity .7s ease,transform .7s ease; }
.letter-reveal.is-visible { opacity:1; transform:none; }
@media(max-width:620px) {
 .letter-top { padding:0 22px; height:80px; }.letter-top > span { display:none; }.letter-top .brand { font-size:29px; }
 .letter-opening { padding-top:34px; }.letter-opening h1 { font-size:54px; }.letter-deck { font-size:14px; }
 .founder-photo { margin-top:34px; margin-bottom:48px; max-width:330px; }.photo-mat span { font-size:34px; }
 .letter-prose { font-size:17px; line-height:1.8; }.letter-prose .letter-pullquote { font-size:33px; }
 .economics-card { padding:22px; width:calc(100% - 28px); }.economics-card h3 { font-size:29px; }
 .cost-layout { grid-template-columns:1fr; gap:22px; }.cost-detail { border-top:1px solid #d5ddcc; padding:18px 12px 0; }
 .economics-income { align-items:start; }.economics-income span { max-width:125px; }.economics-heading { gap:8px; }
 .letter-economics { margin-top:60px; }.letter-conversation { margin-top:44px; padding:0; }.letter-composer { padding:16px; }
 .letter-footer { padding:24px; flex-direction:column; text-align:center; gap:8px; }
}
@media(prefers-reduced-motion:reduce) {
 .letter-reveal { opacity:1; transform:none; }.letter-shell,.economics-fold,.letter-reveal,.letter-progress i { transition:none; }
}
.letter-extension { margin:48px auto 0; padding:22px 0; border-top:1px solid #dce2d5; border-bottom:1px solid #dce2d5; }
.letter-extension h3 { font:24px Georgia,serif; margin:0 0 16px; }.letter-extension [role=status] { font:12px/1.6 Arial,sans-serif; margin:15px 0 0; color:#6a7965; }
.browser-connections { width:min(600px,calc(100vw - 40px)); max-height:85dvh; padding:28px; border:1px solid #ccd7c4; border-radius:12px; color:#30483a; }.browser-connections::backdrop { background:#23362966; }.browser-connections h2 { font:30px Georgia,serif; }.browser-connections section { border-top:1px solid #ddd; padding:16px 0; }.browser-connections section button { margin:6px 8px 0 0; }.browser-connections [role=status] { line-height:1.6; }.connection-waiting { background:#e6eddc; }
.extension-install { background:#f8f7f2; color:#30483a; }.extension-install main { max-width:680px; padding:48px 24px; margin:auto; }.extension-install h1 { font:42px Georgia,serif; margin:32px 0; }.extension-install p,.extension-install li { line-height:1.8; margin-bottom:16px; }
.conversation-browser-action { margin:0 24px 18px; padding:18px 20px; border:1px solid #cbd8c2; border-radius:10px; background:#f0f4ea; }
.conversation-browser-action[hidden] { display:none; }.conversation-browser-action h3 { font:22px Georgia,serif; margin:0 0 10px; }.conversation-browser-action p { font-size:13px; line-height:1.6; margin:8px 0; }.conversation-browser-action section { border-top:1px solid #d9e1d1; padding-top:12px; margin-top:12px; }.conversation-browser-action button { margin:5px 8px 5px 0; }.conversation-browser-action [role=status]:empty { display:none; }
.message a { color:#355e4e; text-decoration:underline; text-underline-offset:3px; overflow-wrap:anywhere; }
@media(max-width:600px){.conversation-browser-action{margin:0 12px 12px;padding:16px;}}
/* A provider connection is one conversational handoff, not a second control panel. */
.conversation-browser-action { background:#f5f7f1; padding:0; overflow:hidden; }
.conversation-browser-action .provider-handoff { display:flex; gap:16px; border:0; padding:22px; margin:0; }
.conversation-browser-action .provider-handoff + .provider-handoff { border-top:1px solid #dde4d8; }
.provider-mark { display:grid; place-items:center; flex:0 0 40px; height:40px; border-radius:50%; background:#e3eadb; color:#355e4e; font:18px Georgia,serif; }
.provider-handoff-body { min-width:0; flex:1; }.provider-handoff h3 { font:20px/1.35 Georgia,serif; margin:0 0 5px; }.provider-handoff p { margin:0; max-width:60ch; color:#66756a; font-size:14px; line-height:1.6; }
.provider-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:12px; }.provider-actions .button { margin:0; }.provider-handoff[data-phase=done] .provider-mark { background:#355e4e; color:#fff; }
@media(max-width:600px){.conversation-browser-action .provider-handoff{padding:16px;gap:12px;}.provider-handoff h3{font-size:18px;}.provider-actions{gap:4px;}}
.conversation-layout { grid-template-columns:190px minmax(0,1fr) 260px;gap:20px;align-items:start; }
.conversation-navigation { position:sticky;top:20px;min-width:0; }.conversation-navigation .search { width:100%;min-width:0;margin:14px 0;box-sizing:border-box; }.conversation-link { display:block;width:100%;border:0;background:transparent;text-align:left;padding:12px;border-radius:8px;color:#58675d;font:13px/1.5 inherit;overflow-wrap:anywhere;cursor:pointer; }.conversation-link[aria-current=true]{background:#e8eee2;color:#304d3d;}.conversation-link:disabled{opacity:.6;}
#conversation .chat-panel { min-height:70vh; }.research-card { border:1px solid #dde3d8;background:#f5f7f1;border-radius:10px;padding:16px;margin:14px 0;font-size:13px;overflow-wrap:anywhere; }.research-card p{font-size:12px;margin:8px 0;}.research-card details{line-height:1.7;white-space:pre-wrap;}.research-card summary{cursor:pointer;color:#355e4e;}.chat-context h2{font-size:25px;}
@media(max-width:1250px){.conversation-layout{grid-template-columns:160px minmax(0,1fr);}.chat-context{grid-column:2;display:block;padding:0;}}
@media(max-width:700px){.conversation-layout{grid-template-columns:minmax(0,1fr);}.conversation-navigation{position:static;}.conversation-navigation #conversation-list{display:flex;overflow:auto;gap:6px;max-height:100px;}.conversation-link{min-width:150px;}.chat-context{grid-column:1;display:block;}.conversation-navigation .search{margin:8px 0;}}

/* Commitments: the collapsed queue.
   A disclosure rather than a list, because the rows behind it are the ones that
   need nobody — and a page about automation should be quiet when it is working. */
.queue-details{padding:0}
.queue-details>summary{padding:20px 26px;cursor:pointer;font-size:13px;color:var(--green);list-style:none;display:flex;align-items:center;gap:9px}
.queue-details>summary::-webkit-details-marker{display:none}
.queue-details>summary:before{content:'▸';font-size:11px;transition:transform .15s}
.queue-details[open]>summary:before{transform:rotate(90deg)}
.queue-details[open]>summary{border-bottom:1px solid var(--line)}
.queue-group{padding:18px 26px 4px}
.queue-group+.queue-group{border-top:1px solid var(--line)}
.queue-group h3{font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:6px}
.rationale{font:15px/1.7 var(--serif);color:#5d6b62;padding:0 26px 4px;font-style:italic}
.budget-back{display:inline-block;font-size:12px;color:var(--green);text-decoration:none;margin-bottom:18px}
.attention-item .bill-amount{margin-left:auto;text-align:right;font-variant-numeric:tabular-nums;font-size:15px;white-space:nowrap}

/* Budget: the cash tray.
   Time across, level up, every payment on the day it really happens. Colour
   runs from the promises nothing outranks (darkest) to the first thing to go
   (lightest), and money arriving is the one warm tone. */
.cf-panel .panel-head p{max-width:none}
.cashflow{display:block;width:100%;height:auto}
.cf-controls{display:flex;align-items:center;gap:16px;padding:4px 26px 14px;flex-wrap:wrap}
.cf-controls .button{min-width:82px}
.cf-scrub{flex:1;min-width:180px;display:flex}
.cf-scrub input{width:100%;accent-color:#4a6b58}
.cf-zoom{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--muted)}
.cf-zoom select{border:1px solid var(--line);border-radius:6px;padding:7px 9px;background:#fff}
.cf-readout{display:flex;align-items:baseline;gap:14px;padding:0 26px 10px;flex-wrap:wrap}
.cf-readout strong{font:19px/1 var(--serif);min-width:78px}
.cf-readout span{font-size:19px;font-variant-numeric:tabular-nums}
.cf-readout span.cf-warn{color:var(--orange)}
.cf-readout span.cf-neg{color:#c0553f}
.cf-readout em{font-size:12px;color:var(--muted);font-style:normal}
.cf-legend{display:flex;gap:16px;flex-wrap:wrap;padding:6px 26px 20px}
.cf-key{font-size:10px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.cf-key:before{content:'';width:9px;height:9px;border-radius:2px;background:currentColor}
.cf-key.cf-in{color:#6f9a5f}.cf-key.cf-floor{color:#40624f}.cf-key.cf-obligation{color:#5f8069}
.cf-key.cf-goal{color:#87a184}.cf-key.cf-discretionary{color:#b9cca9}.cf-key.cf-support_out{color:#5f7f95}

.cf-area{fill:#cfe0c4}
.cf-area-neg{fill:#e8b6a5}
.cf-line{fill:none;stroke:#4a6b58;stroke-width:2;stroke-linejoin:round}
.cf-ghost{stroke:#b9c4bb;stroke-width:1.25}
.cf-floor{stroke:#a3b0a6;stroke-width:1;stroke-dasharray:4 4}
.cf-zero{stroke:#c0553f;stroke-width:1;stroke-opacity:.55}
.cf-short-band{fill:#c0553f;fill-opacity:.55;rx:2}
.cf-axis{font-size:11px;fill:#8d9891}
.cf-head{stroke:#2f4a3b;stroke-width:1.5}

.cf-flow{opacity:.18;transition:opacity .2s}
.cf-flow.is-dim{opacity:.06}
.cf-flow.is-dim.is-live,.cf-flow.is-dim.is-past{opacity:.12}
.cf-flow.is-dim .cf-flow-label,.cf-flow.is-dim .cf-flow-date{opacity:0}
.cf-flow.is-past{opacity:.34}
.cf-flow.is-live{opacity:1}
.cf-stem{stroke:currentColor;stroke-width:1.5;stroke-dasharray:3 3}
.cf-drop{fill:currentColor}
.cf-flow-label{font-size:11px;fill:currentColor;opacity:0}
.cf-flow-date{font-size:9.5px;fill:#8d9891;opacity:0;letter-spacing:.4px}
.cf-flow.is-live .cf-flow-label,.cf-flow.is-live .cf-flow-date{opacity:1}
.cf-flow.cf-in{color:#6f9a5f}.cf-flow.cf-floor{color:#40624f}.cf-flow.cf-obligation{color:#5f8069}
.cf-flow.cf-goal{color:#87a184}.cf-flow.cf-discretionary{color:#a8bd95}.cf-flow.cf-support_out{color:#5f7f95}

/* The explorer: breadcrumb, one level of children, constant columns. */
.ex-crumbs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:4px 26px 12px;font-size:12px}
.ex-crumbs button{border:0;background:none;padding:0;color:var(--green);font-size:12px}
.ex-crumbs button:hover{text-decoration:underline}
.ex-crumbs [aria-current]{color:var(--ink);font-weight:600}
.ex-sep{color:#b3bdb5}
.ex-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:0 26px 16px;flex-wrap:wrap}
.ex-head h3{font:normal 21px/1.25 var(--serif);letter-spacing:-.4px}
.ex-head p{font-size:12px;color:var(--muted);margin-top:4px}
.ex-drill{border:0;background:none;padding:0;color:var(--green);font-size:12px;font-weight:600;text-align:left}
.ex-drill:hover{text-decoration:underline}
.ex-drill:after{content:' ›';color:#9aa89c}
.ex-leaf{font-weight:600}
tfoot td{border-top:1px solid var(--line);font-weight:600;background:#fafbf9}

/* Budget, Monarch-shaped: Budget / Actual / Remaining on every row, buckets by
   predictability, and a pace tick on every bar. */
.mb-monthbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.mb-monthbar .button{padding:8px 13px;min-width:0}
.mb-monthbar strong{font:normal 21px/1 var(--serif);min-width:180px;text-align:center}
.mb-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:22px;align-items:start}
.mb-main{display:flex;flex-direction:column;gap:20px;min-width:0}
.mb-section{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.mb-strip,.mb-group,.mb-row,.mb-total{display:grid;grid-template-columns:minmax(0,1fr) 108px 108px 104px;align-items:center;gap:10px}
.mb-strip{padding:11px 20px;background:#fafbf9;border-bottom:1px solid var(--line);font-size:9px;letter-spacing:1.1px;text-transform:uppercase;color:var(--muted);font-weight:550}
.mb-strip span:first-child{letter-spacing:1.1px}
.mb-strip span:not(:first-child),.mb-group span:not(:first-child),.mb-row span:not(:first-child),.mb-total span:not(:first-child){text-align:right}
.mb-note{padding:12px 20px 0;font-size:12px;color:var(--muted)}
.mb-group{padding:15px 20px;font-weight:600;font-size:15px}
.mb-row{padding:13px 20px 17px;border-top:1px solid #eef0ed;position:relative;row-gap:0}
.mb-name{display:flex;flex-direction:column;gap:3px;min-width:0}
.mb-name a{color:inherit;text-decoration:none}
.mb-name a:hover{text-decoration:underline}
.mb-band{font-size:10px;color:var(--muted);font-style:normal;letter-spacing:.3px}
.mb-track{grid-column:1/-1;position:relative;height:3px;background:#eceee9;border-radius:2px;margin-top:11px}
.mb-track .mb-fill{position:absolute;left:0;top:0;bottom:0;width:var(--w,0);background:#4a8a58;border-radius:2px}
.mb-track .mb-fill.is-over{background:#c0553f}
.mb-pace{position:absolute;top:-3px;bottom:-3px;left:var(--w,0);width:1px;background:#8b978d}
.mb-total{padding:16px 22px;background:var(--paper);border:1px solid var(--line);border-radius:10px;font-weight:600}
.mb-pill{display:inline-block;min-width:62px;padding:4px 9px;border-radius:20px;font-size:12px;background:#eef1ee;color:#657467;font-variant-numeric:tabular-nums}
.mb-pill.is-pos{background:#e6f2e5;color:#2f6b3f}
.mb-pill.is-neg{background:#fbe9e4;color:#b0452f}
.mb-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:18px}
.mb-left{background:#e6f2e5;border:1px solid #cfe4cd;border-radius:10px;padding:22px;text-align:center}
.mb-left.is-over{background:#fbe9e4;border-color:#f0cfc5}
.mb-left strong{display:block;font:normal 33px/1.1 var(--serif);color:#2f6b3f;letter-spacing:-1px}
.mb-left.is-over strong{color:#b0452f}
.mb-left span{font-size:11px;color:#5f7059;display:block;margin-top:7px}
.mb-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:18px 20px}
.mb-card h3{font:normal 17px/1 var(--serif);margin-bottom:14px}
.mb-sum+.mb-sum{margin-top:15px;padding-top:15px;border-top:1px solid var(--line)}
.mb-sum-top,.mb-sum-bot{display:flex;justify-content:space-between;gap:10px;font-size:12px}
.mb-sum-top{margin-bottom:7px}
.mb-sum-bot{margin-top:7px;font-variant-numeric:tabular-nums}
.mb-pos{color:#2f6b3f}.mb-neg{color:#b0452f}
.mb-bar{height:6px;background:#eceee9;border-radius:3px;position:relative;overflow:hidden}
.mb-bar .mb-fill{position:absolute;left:0;top:0;bottom:0;width:var(--w,0);background:#4a8a58;border-radius:3px}
.mb-bar .mb-fill.is-over{background:#c0553f}
@media(max-width:1080px){.mb-layout{grid-template-columns:minmax(0,1fr)}.mb-side{position:static}}
@media(max-width:620px){.mb-strip,.mb-group,.mb-row,.mb-total{grid-template-columns:minmax(0,1fr) 74px 74px 72px;gap:6px;font-size:12px}.mb-pill{min-width:0;padding:3px 7px;font-size:11px}}
.mb-banner{background:#f6f1e4;border:1px solid #e8dcc2;border-radius:8px;padding:13px 17px;font-size:12px;color:#6d6145;line-height:1.7;margin-bottom:18px}
.mb-banner strong{color:#544a33}
.mb-axis{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;margin-left:auto}
.mb-axis button{border:0;background:#fff;padding:8px 13px;font-size:11px;color:var(--muted)}
.mb-axis button[aria-pressed=true]{background:#e9eee5;color:#3e5936;font-weight:600}
.mb-aside{display:block;font-size:9.5px;color:var(--muted);font-style:normal;letter-spacing:.3px;margin-top:2px}


/* Conversation: the home screen, and the emptiest page in the app.
   Empty state centres the composer; a thread pins it to the bottom. The
   controls do not move between the two, because the thing people learn first
   should not be relearned the moment they use it. */
.cv{display:grid;grid-template-columns:212px minmax(0,1fr);gap:26px;align-items:start}
.cv-rail{display:flex;flex-direction:column;gap:12px;position:sticky;top:18px}
.cv-new{justify-content:flex-start;font-size:12px}
.cv-list{display:flex;flex-direction:column;gap:2px}
.cv-link{border:0;background:none;text-align:left;padding:9px 11px;border-radius:7px;display:flex;flex-direction:column;gap:2px}
.cv-link:hover{background:#eef1ec}
.cv-link[aria-current=true]{background:#e4ebe1;font-weight:600}
.cv-link span{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-link small{font-size:10px;color:var(--muted)}
.cv-none{font-size:11px;color:var(--muted);padding:9px 11px}

.cv-main{display:flex;flex-direction:column;min-width:0}
.cv.is-empty .cv-main{min-height:min(62vh,540px);justify-content:center}
.cv-hero{text-align:center;margin-bottom:26px}
.cv-hero .agent-symbol{font-size:40px;display:block;margin-bottom:10px}
.cv-hero h2{font-size:31px;letter-spacing:-.7px}
.cv-hero p{font-size:13px;color:var(--muted);margin-top:9px}

.cv-composer{border:1px solid #d9e1d7;border-radius:12px;background:#fcfdfb;position:relative}
.cv-composer:focus-within{box-shadow:0 0 0 2px #c3d5bb}
.cv-composer textarea{min-height:auto;padding:16px 18px 6px}
.cv-bar{display:flex;align-items:center;gap:10px;padding:8px 12px 10px;flex-wrap:wrap}
.cv-modes{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:#fff}
.cv-modes button{border:0;background:none;padding:6px 11px;font-size:11px;color:var(--muted)}
.cv-modes button[aria-pressed=true]{background:#e9eee5;color:#3e5936;font-weight:600}
.cv-context{border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 10px;font-size:11px;color:var(--muted)}
.cv-hint{margin-left:auto;font-size:10px;color:#9aa89c}
.cv-send{border:0;background:var(--green);color:#fff;width:32px;height:32px;border-radius:8px;font-size:20px;flex-shrink:0}
.cv-chips{display:flex;gap:6px;flex-wrap:wrap;padding:12px 14px 0}
.cv-chips.is-sent{padding:8px 0 0}
.cv-chip{border:1px solid #cddcc6;background:#eef4ea;color:#41603c;border-radius:20px;padding:3px 9px;font-size:11px}
.cv-picker{position:absolute;bottom:calc(100% + 7px);left:0;right:0;max-height:250px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;z-index:5}
.cv-picker button{display:flex;justify-content:space-between;width:100%;border:0;background:none;padding:9px 11px;border-radius:7px;font-size:12.5px;text-align:left;gap:12px}
.cv-picker button:hover{background:#eef1ec}
.cv-picker small{color:var(--muted);font-size:10px}

.cv-suggestions{display:flex;flex-direction:column;gap:1px;margin-top:22px}
.cv-suggestion{border:0;background:none;border-top:1px solid var(--line);padding:14px 4px;display:flex;justify-content:space-between;gap:16px;text-align:left;font-size:13px}
.cv-suggestion:hover{background:#f2f5f1}
.cv-suggestion small{color:var(--muted);font-size:11.5px;text-align:right;flex-shrink:0;max-width:52%}

.cv-thread{display:flex;flex-direction:column;gap:20px;padding:4px 0 26px;max-height:58vh;overflow:auto}
.cv-turn{max-width:86%;font-size:13.5px;line-height:1.8}
.cv-turn p+p{margin-top:12px}
.cv-turn.is-member{align-self:flex-end;background:#edf2ea;padding:12px 17px;border-radius:12px 12px 2px 12px}
.cv-turn.is-agent{align-self:flex-start;max-width:100%;width:100%}
.cv-turn .table-wrap{margin-top:14px;border:1px solid var(--line);border-radius:9px}
.cv-notes{margin:12px 0 0;padding-left:18px;font-size:12.5px;color:var(--muted);line-height:1.9}
.cv-thinking{color:var(--muted);font-size:12px}
@media(max-width:900px){.cv{grid-template-columns:minmax(0,1fr)}.cv-rail{position:static;flex-direction:row;overflow:auto}.cv-list{flex-direction:row}.cv-link{min-width:150px}}
.empty .empty-more{margin-top:14px}

/* Onboarding: the form that finally lets a household be entered. */
.ob{display:flex;flex-direction:column;gap:20px}
.ob-step .panel-head p{max-width:72ch}
.ob-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:14px;padding:4px 24px 20px;align-items:end}
.ob-grid.ob-tight{padding:0 0 12px}
.ob-grid label,.ob-sub label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted)}
.ob-grid .ob-wide{grid-column:1/-1}
.ob input,.ob select,.ob textarea{border:1px solid var(--line);border-radius:7px;padding:9px 11px;background:#fff;font-size:13px;color:var(--ink);min-height:0}
.ob textarea{resize:vertical;padding:10px 11px}
.ob-row{border-top:1px solid var(--line);padding-top:16px}
.ob-row:first-child{border-top:0;padding-top:4px}
.ob-sub{padding:0 24px 16px;margin-left:14px;border-left:2px solid #e8ece6}
.ob-note{font-size:11px;color:var(--muted);padding:0 24px 14px;max-width:80ch;line-height:1.7}
.ob-check{flex-direction:row!important;align-items:center;gap:8px}
.ob-check input{min-height:auto}
.ob-unit{font-size:11px;color:var(--muted)}
.ob [data-add]{margin:0 24px 22px}
.ob-footer{position:sticky;bottom:0;background:var(--bg);border-top:1px solid var(--line);padding:16px 0;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ob-footer p{font-size:12px;color:var(--muted)}
.ob-footer p.ob-error{color:#b0452f}
.mercury-dialog{width:min(900px,94vw);max-height:90vh;border:1px solid #dce4d9;border-radius:18px;padding:32px;color:#293a32;background:#fafbf8;overflow:auto}.mercury-dialog::backdrop{background:#17271f66}.mercury-dialog header,.mercury-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.mercury-dialog h2{margin:6px 0}.mercury-dialog section,.mercury-dialog details{margin:20px 0}.mercury-dialog label,.mercury-action label{display:block;margin:12px 0}.mercury-dialog input,.mercury-dialog select,.mercury-dialog textarea,.mercury-action input{display:block;box-sizing:border-box;width:100%;padding:12px;border:1px solid #d1dbcf;border-radius:8px;background:white;color:inherit;font:inherit}.mercury-dialog pre,.mercury-action pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto;background:#f0f3ed;padding:16px;border-radius:8px;font-size:13px}.mercury-action{padding:20px 0;border-top:1px solid #dce4d9}.mercury-dialog [role=status]{color:#85472f}.mercury-dialog summary,.mercury-action summary{cursor:pointer}.mercury-dialog small{margin-left:12px}.mercury-row{padding:10px 0}@media(max-width:600px){.mercury-dialog{padding:18px}.mercury-dialog header{align-items:flex-start}}

/* Shared shell and focused conversation workspace. */
.sidebar { overflow-y:auto; }
.sidebar-bottom { padding-top:22px; }
.topbar { gap:20px; }
.person-control { flex-wrap:nowrap; min-width:0; }
.utility-menu { position:relative; margin-left:12px; color:var(--ink); }
.utility-menu > summary { display:flex; align-items:center; gap:16px; list-style:none; cursor:pointer; padding:10px 12px; border:1px solid var(--line); border-radius:7px; background:var(--paper); }
.utility-menu > summary::-webkit-details-marker { display:none; }
.utility-menu[open] > summary { background:var(--pale); }
.utility-actions { position:absolute; top:calc(100% + 8px); right:0; z-index:40; min-width:210px; padding:8px; background:white; border:1px solid var(--line); border-radius:10px; box-shadow:0 12px 36px #24302e16; }
.utility-actions .button.text { display:flex; width:100%; justify-content:flex-start; padding:12px; border-radius:5px; font-size:13px; }
.utility-actions .button:hover { background:var(--pale); }
summary:focus-visible { outline:3px solid #82a88a; outline-offset:3px; border-radius:5px; }
body[data-view=thread] main { padding-top:24px; padding-bottom:24px; min-height:0; }
body[data-view=thread] .page-heading { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
body[data-view=thread] .workspace > footer { display:none; }
.conversation-layout { grid-template-columns:200px minmax(0,1fr); gap:24px; max-width:1160px; margin:auto; }
.conversation-navigation { position:static; padding-top:10px; }
.conversation-navigation .eyebrow { margin:0 0 18px 10px; }
.conversation-navigation > .button { width:100%; justify-content:flex-start; font-size:13px; min-height:42px; }
.conversation-navigation .search { min-height:42px; font-size:13px; background:transparent; }
#conversation-list { max-height:calc(100dvh - 295px); overflow:auto; }
.conversation-link { font:400 13px/1.5 var(--sans); margin-bottom:4px; min-height:44px; }
.conversation-link[aria-current=true] { font-weight:600; background:#e4ebe1; }
.conversation-no-results { padding:12px; color:var(--muted); font-size:13px; }
#conversation .chat-panel { height:calc(100dvh - 124px); min-height:480px; padding:0; overflow:hidden; }
.chat-heading { flex-shrink:0; padding:18px 26px; gap:14px; }
.chat-heading strong { font-size:16px; font-weight:600; overflow-wrap:anywhere; }
.chat-heading p { font-size:12px; margin-top:2px; }
#conversation .chat-context { display:block; grid-column:auto; padding:0; min-width:0; }
.research-summary > summary { padding:12px 26px; font-size:12px; color:var(--green); cursor:pointer; border-bottom:1px solid var(--line); background:#fafbf8; }
.research-body { max-height:200px; overflow:auto; padding:0 26px; border-bottom:1px solid var(--line); background:#fafbf8; }
.research-body:has(.research-empty) { padding:14px 26px; }
.research-empty { font-size:13px; color:var(--muted); }
.research-card { margin:0; padding:16px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; }
.research-card:last-child { border-bottom:0; }
.research-card .button.text { min-height:32px; }
#thread { min-height:100px; max-height:none; padding:28px; gap:22px; overscroll-behavior:contain; }
.message { font-size:15px; line-height:1.75; max-width:88%; }
.message.agent { max-width:100%; }
.message.member { background:#edf2ea; border-radius:14px 14px 3px 14px; padding:12px 18px; }
.message.status { color:var(--muted); font-size:13px; font-style:italic; }
/* The row is always here, even before the message has an id and the controls
   can appear, so nothing shifts under the pointer mid-turn. */
.message-actions { display:flex; justify-content:flex-end; gap:2px; height:20px; margin-top:4px; }
.message-action { opacity:0; transition:opacity .12s ease; font-size:11px; min-height:20px; padding:2px 6px; color:#5a6b62; }
.message.member:hover .message-action, .message.member:focus-within .message-action { opacity:1; }
.message-action:focus-visible { opacity:1; }
.message-action[disabled] { opacity:0; }
/* Nothing hovers on a phone, so the controls simply stay. */
@media (hover:none) { .message-action { opacity:1; } .message-action[disabled] { opacity:.4; } }
/* Thumbs on an answer: faint until the answer is hovered, like the edit controls. */
.message-actions.feedback { justify-content:flex-start; height:auto; min-height:20px; align-items:center; gap:6px; }
.message.agent:hover .message-action, .message.agent:focus-within .message-action { opacity:1; }
.feedback-note { font-size:11px; color:#5a6b62; }
.feedback-reason { display:flex; gap:8px; align-items:center; width:100%; max-width:420px; }
.feedback-reason input { flex:1; border:1px solid var(--line); border-radius:6px; padding:6px 10px; font-size:12px; }
/* The first-week checklist on the Overview. */
.setup-checklist ul { list-style:none; margin:0; padding:0 26px 18px; }
.setup-checklist li { display:flex; gap:10px; align-items:flex-start; padding:9px 0; border-top:1px solid var(--line); font-size:13px; }
.setup-checklist li.is-done { color:var(--muted); }
.setup-checklist li small { display:block; color:var(--muted); font-size:11px; margin-top:3px; line-height:1.5; }
.setup-checklist .setup-mark { width:18px; color:var(--green); flex-shrink:0; }
.setup-checklist .bill-detail-bottom { padding:0 26px 20px; }
.message-edit { display:grid; gap:8px; }
.message-edit textarea { width:100%; font:inherit; color:var(--ink); background:var(--paper); border:1px solid #ccd8c8; border-radius:10px; padding:10px 12px; resize:vertical; }
.message-edit-bar { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:8px; }
.message-edit-note { margin-right:auto; font-size:11px; color:var(--muted); }
.send-button.is-stop { background:var(--orange); border-color:var(--orange); color:#fff; font-size:11px; }
.welcome { margin:auto 0; padding:24px 12px; }
.welcome h2 { font-size:32px; }
.welcome p { font-size:14px; }
#composer { flex-shrink:0; margin:0 22px; background:white; border-color:#ccd8c8; border-radius:12px; box-shadow:0 3px 12px #24302e06; }
#composer textarea { font-size:15px; min-height:70px; padding:16px 18px 8px; resize:none; }
.composer-bottom { padding:8px 12px 12px; }
.mode button { font-size:11px; min-height:34px; padding:7px 10px; }
.send-button { width:38px; height:38px; border-radius:9px; }
.chat-footnote { flex-shrink:0; font-size:10px; line-height:1.5; padding:10px 22px 14px; margin:0; }
.chat-footnote #history-note { display:none; }
.conversation-browser-action { flex-shrink:0; max-height:190px; overflow:auto; margin:0 22px 12px; }
.mercury-dialog { width:min(760px,94vw); background:var(--paper); padding:28px; }
.mercury-dialog header { padding-bottom:16px; border-bottom:1px solid var(--line); margin-bottom:16px; }
.mercury-dialog h2 { font-size:32px; }
.mercury-dialog > p { color:var(--muted); font-size:14px; }
.mercury-dialog > details { padding:16px 18px; border:1px solid var(--line); border-radius:9px; }
.mercury-dialog > details > summary { font-weight:600; font-size:14px; }
.mercury-dialog > section { padding-top:12px; }
.mercury-dialog section h3 { font-size:16px; margin-bottom:10px; }
.mercury-dialog section > p { font-size:13px; color:var(--muted); }
.mercury-dialog [role=status]:empty { display:none; }
.mercury-dialog .button.text { min-height:36px; padding:6px 8px; }
.mercury-action { padding:22px 0; }
.mercury-action h4 { font-size:16px; margin:0 0 6px; }
.mercury-action > p { color:var(--muted); font-size:12px; }
.mercury-action > .button { margin:8px 8px 0 0; min-height:40px; }
.action-facts { margin:18px 0; padding:4px 16px; background:#f6f8f4; border-radius:8px; }
.action-facts > div { display:grid; grid-template-columns:minmax(100px,1fr) minmax(0,2fr); gap:20px; padding:10px 0; border-bottom:1px solid var(--line); }
.action-facts > div:last-child { border:0; }
.action-facts dt { color:var(--muted); font-size:12px; }
.action-facts dd { margin:0; font-size:14px; overflow-wrap:anywhere; text-align:right; font-variant-numeric:tabular-nums; }
.request-details { font-size:12px; color:var(--muted); }
.execution-review { margin-top:24px; }
.execution-review > .mercury-action { margin:0 26px; }
.execution-review > p { margin:0 26px 20px; color:var(--muted); }
@media(max-width:1100px) {
 .conversation-layout { grid-template-columns:170px minmax(0,1fr); gap:18px; }
 .topbar { padding-left:26px; padding-right:26px; }
 .person-control label { display:none; }
}
@media(max-width:850px) {
 .sidebar { padding:14px 20px 8px; }
 .brand { margin-bottom:12px; }
 .sidebar nav { scrollbar-width:none; }
 .topbar { padding:0 20px; }
 body[data-view=thread] main { padding:16px 20px; }
 #conversation .chat-panel { height:calc(100dvh - 216px); min-height:470px; }
 .household-control { max-width:180px; }
}
@media(max-width:700px) {
 .conversation-layout { display:flex; flex-direction:column; gap:12px; }
 .conversation-navigation { width:100%; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:8px; }
 .conversation-navigation .eyebrow { display:none; }
 .conversation-navigation .search { margin:0; background:white; width:100%; }
 .conversation-navigation > .button { font-size:12px; padding:10px; }
 .conversation-navigation #conversation-list { grid-column:1/-1; display:flex; gap:6px; max-height:54px; overflow:auto; scrollbar-width:thin; }
 .conversation-link { width:auto; min-width:0; flex:0 0 auto; max-width:230px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding:10px 12px; margin:0; min-height:40px; }
 #conversation .chat-panel { width:100%; height:calc(100dvh - 318px); min-height:410px; }
 .chat-heading { padding:14px 18px; }
 .chat-heading p { display:none; }
 .chat-heading strong { font-size:15px; }
 .research-summary > summary { padding:10px 18px; }
 .research-body { max-height:160px; padding:0 18px; }
 #thread { padding:20px 18px; }
 .message { font-size:14px; max-width:94%; }
 #composer { margin:0 12px; }
 #composer textarea { font-size:16px; min-height:60px; }
 .chat-footnote { padding:8px 12px 12px; }
 .mode button { font-size:10px; padding:6px 8px; }
 .topbar #breadcrumb { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
 .person-control { gap:6px; flex-shrink:0; }
 .person-control select { max-width:90px; }
 .utility-menu { margin-left:4px; }
 .utility-menu > summary { padding:8px; gap:8px; }
 .mercury-dialog { padding:20px; }
 .action-facts > div { grid-template-columns:100px minmax(0,1fr); gap:12px; }
}
@media(max-width:420px) {
 .topbar #breadcrumb { display:none; }
 .topbar { justify-content:flex-end; }
 body[data-view=thread] main { padding:12px; }
 .household-control { max-width:155px; }
 .chat-footnote { font-size:9px; }
}
.mercury-dialog header { position:sticky; top:-28px; z-index:2; background:white; margin:-28px -28px 16px; padding:20px 28px; }
@media(max-width:700px) { .mercury-dialog header { top:-20px; margin:-20px -20px 16px; padding:16px 20px; } }
.provider-handoff.dismissible-notice { position:relative; padding-right:54px; touch-action:pan-y pinch-zoom; }
.dismiss-notice { position:absolute; right:10px; top:10px; width:34px; height:34px; display:grid; place-items:center; padding:0; border:0; border-radius:50%; background:transparent; color:var(--muted); font-size:24px; line-height:1; }
.dismiss-notice:hover { background:#e6ede2; color:var(--ink); }
@media(max-width:600px){.conversation-browser-action .provider-handoff.dismissible-notice{padding-right:50px;}.dismiss-notice{width:40px;height:40px;right:4px;top:4px;}}
.provider-handoff.collapsible-notice { position:relative; padding-right:54px; touch-action:pan-y pinch-zoom; }
.collapse-notice { position:absolute; right:10px; top:10px; width:34px; height:34px; display:grid; place-items:center; padding:0; border:0; border-radius:50%; background:transparent; color:#66756a; font:20px/1 Georgia,serif; cursor:pointer; }
.collapse-notice:hover { background:#e6ede2; color:var(--ink); }
.conversation-browser-action .provider-handoff.is-collapsed { padding:12px 54px 12px 16px; gap:10px; align-items:center; cursor:pointer; }
.provider-handoff.is-collapsed .provider-mark { flex:0 0 26px; height:26px; font-size:13px; }
.provider-handoff.is-collapsed h3 { font-size:16px; margin:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.provider-handoff.is-collapsed p, .provider-handoff.is-collapsed .provider-actions, .provider-handoff.is-collapsed .provider-handoff-body > button { display:none; }
.provider-handoff.is-collapsed .collapse-notice { top:50%; transform:translateY(-50%); }
@media(max-width:600px){.conversation-browser-action .provider-handoff.collapsible-notice{padding-right:50px;}.collapse-notice{width:40px;height:40px;right:4px;top:4px;}.conversation-browser-action .provider-handoff.is-collapsed{padding:10px 48px 10px 12px;}}

.letter-compose-footer { justify-content:flex-end; }
/* Shared conversation / work / browser workspace. */
.workspace-controls{display:flex;gap:4px;margin-left:auto;flex-shrink:0}.workspace-controls .button{min-height:36px;padding:6px 10px;font-size:12px}.workspace-body{display:flex;flex:1;min-height:0;min-width:0}.workspace-chat{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.workspace-chat #thread{flex:1;overflow:auto}.workspace-chat #composer{flex-shrink:0}.workspace-open{overflow:hidden}#conversation .chat-panel.workspace-expanded{position:fixed;inset:12px;z-index:90;width:auto;height:auto;min-height:0;border-radius:14px;box-shadow:0 0 0 30px var(--paper,#f4f6f3)}.work-dialog{width:min(820px,95vw);max-height:88dvh;border:1px solid var(--line);border-radius:16px;padding:28px;background:var(--paper,#fff);color:var(--ink)}.work-dialog::backdrop{background:#14291f66}.work-dialog>header,.work-card>header{display:flex;justify-content:space-between;align-items:center;gap:16px}.work-dialog h2{font-size:30px}.work-dialog>p{font-size:14px;margin:14px 0}.work-list{display:grid;gap:16px}.work-card{border:1px solid var(--line);border-radius:10px;padding:20px;background:white;font:14px/1.65 var(--sans)}.work-card h3{font-size:17px}.work-state{font-size:11px;text-transform:capitalize;white-space:nowrap;color:var(--green);background:#edf2e9;padding:3px 9px;border-radius:20px}.work-card p{margin:10px 0}.work-meta{font-size:12px;color:var(--muted)}.work-artifact{white-space:pre-wrap;padding:12px 0}.work-card summary{cursor:pointer;color:var(--green)}.work-card pre{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:300px;overflow:auto}.work-steps{padding-left:20px;margin:14px 0}.work-steps small{color:var(--muted);margin-left:8px}.work-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}.work-actions .button{font-size:12px}.work-empty,.browser-empty{padding:28px 0}.work-empty p,.browser-empty p{margin-top:10px;color:var(--muted)}
@media(max-width:1000px){.chat-heading{flex-wrap:wrap}.workspace-controls{gap:0}.work-dialog{padding:18px}}
@media(max-width:600px){#conversation .chat-panel.workspace-expanded{inset:0;border-radius:0}.workspace-controls .button{padding:6px;font-size:11px}.chat-heading{gap:8px}.work-card{padding:14px}.work-dialog h2{font-size:25px}}
.browser-upload{font-size:12px;display:block;padding:10px 0;color:var(--green)}.browser-upload input{font-size:11px;margin-top:6px}.browser-files{font-size:12px;overflow-wrap:anywhere}.browser-files a{text-decoration:underline;cursor:pointer}
.browser-setup{margin:10px 0}.browser-setup>summary{cursor:pointer;font-size:12px;color:var(--green)}


/* The conversation, harmonised with the preview.
   The app's existing IDs and transport are untouched — only the chrome is
   replaced — so these rules dress the real streaming thread as the preview's
   agent screen rather than reimplementing it. */
.conversation-layout.cv{grid-template-columns:200px minmax(0,1fr) 256px;gap:24px;align-items:start}
.cv .chat-panel{background:none;border:0;padding:0;min-height:0;display:flex;flex-direction:column}
/* Empty means empty: the hero says what this is, so no panel chrome around it. */
.cv:has(.welcome) .cv-main{min-height:min(58vh,520px);justify-content:center}
/* The thread keeps its own scroll region so a long conversation can never run
   underneath the composer — which it did once the max-height was removed. */
.cv #thread{max-height:52vh;overflow:auto;padding:0 0 20px;gap:20px}
.cv:has(.welcome) #thread{padding:0;overflow:visible}
.cv .welcome{padding:0 0 26px;text-align:center}
.cv .welcome .agent-symbol{font-size:40px;display:block;margin-bottom:10px}
.cv .welcome h2{font-size:31px;letter-spacing:-.7px}
.cv .welcome p{font-size:13px;color:var(--muted);margin-top:9px;max-width:46ch;margin-left:auto;margin-right:auto}
.cv #composer{border:1px solid #d9e1d7;border-radius:12px;background:#fcfdfb}
.cv #composer textarea{min-height:auto;padding:16px 18px 6px}
.cv .composer-bottom{padding:8px 12px 10px;gap:10px;flex-wrap:wrap}
.cv .mode{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:#fff;gap:0}
.cv .mode button{padding:6px 11px;font-size:11px}
.cv .mode button[aria-pressed=true]{background:#e9eee5;color:#3e5936;font-weight:600}
.cv .chat-footnote{text-align:left;margin-top:10px;font-size:10px}
/* Starter prompts sit under the composer, not in a right-hand rail. */
.cv .cv-suggestions{margin-top:20px}
.cv .cv-suggestion{border:0;background:none;border-top:1px solid var(--line);padding:14px 4px;display:flex;justify-content:space-between;gap:16px;text-align:left;font-size:13px;width:100%}
.cv .cv-suggestion:hover{background:#f2f5f1}
.cv .cv-suggestion small{color:var(--muted);font-size:11.5px;text-align:right;flex-shrink:0;max-width:52%}
.cv .conversation-navigation{position:sticky;top:18px}
.cv .message.member{border-radius:12px 12px 2px 12px}
@media(max-width:1200px){.conversation-layout.cv{grid-template-columns:200px minmax(0,1fr)}.cv .cv-side{grid-column:2}}
@media(max-width:900px){.conversation-layout.cv{grid-template-columns:minmax(0,1fr)}.cv .conversation-navigation{position:static}.cv .cv-side{grid-column:1}}
/* The research panel only earns space once there is research to show. */
.cv .chat-context{padding:0;margin-top:22px}
.cv .chat-context:empty{display:none}
/* Structural anchor for workspace.js and the conversation title; not shown. */
.cv .chat-heading{display:none}
/* With the hero up, the thread must not take the slack — otherwise it grows and
   shoves the composer to the bottom of the screen, splitting the one thing the
   empty state is meant to present as a single block. */
.cv:has(.welcome) #thread{flex:0 0 auto}
.cv .cv-suggestion span{color:var(--ink)}

/* The side rail: where to start, and research once there is any. */
.cv-side{position:sticky;top:18px;padding-top:2px}
.cv-side .eyebrow{margin-bottom:4px}
.cv .cv-side .cv-suggestions{margin-top:0;display:flex;flex-direction:column}
.cv .cv-side .cv-suggestion{flex-direction:column;align-items:flex-start;gap:3px;padding:13px 0;font-size:12.5px}
.cv .cv-side .cv-suggestion small{text-align:left;max-width:none;font-size:11px}
.cv-side .context-note{margin-top:18px}
@media(max-width:900px){.cv-side{position:static}}

/* Consent, second factor, deletion */
.auth-card label.consent { display:flex; grid-template-columns:none; gap:10px; align-items:flex-start; font-size:13px; line-height:1.5; color:var(--muted); margin:14px 0 12px; text-align:left; }
.auth-card label.consent input { width:16px; height:16px; margin:3px 0 0; padding:0; flex:0 0 auto; accent-color:#365d4d; }
.auth-card label.consent span { flex:1 1 auto; }
.auth-card .consent a, .auth-dialog .small-text a { color:#355e4e; text-decoration:underline; text-underline-offset:3px; }
.mfa-qr { display:block; margin:12px auto; border:1px solid var(--line); border-radius:12px; background:#fff; max-width:100%; }
.recovery-codes { font:14px/1.9 ui-monospace,SFMono-Regular,Menlo,monospace; background:var(--pale); border-radius:10px; padding:12px 16px; user-select:all; white-space:pre; overflow-x:auto; }
details.danger { margin-top:18px; border-top:1px solid var(--line); padding-top:12px; }
details.danger summary { color:#8a3a2a; cursor:pointer; }
details.danger em { font-style:normal; font-weight:600; }
.button.danger { background:#8a3a2a; border-color:#8a3a2a; color:#fff; }
.auth-dialog h3 { margin-top:22px; }

/* Images in the conversation */
.attach-button { width:34px; height:34px; border-radius:9px; border:1px solid transparent; background:transparent; font-size:16px; cursor:pointer; color:var(--muted); }
.attach-button:hover { background:#e6ede2; color:var(--ink); }
#composer.is-dropping { outline:2px dashed #365d4d; outline-offset:-6px; }
.attachment-strip { display:flex; flex-wrap:wrap; gap:8px; padding:6px 12px 0; }
.attachment { position:relative; display:grid; grid-template-columns:56px 1fr; gap:8px; align-items:center; max-width:320px; padding:6px 30px 6px 6px; border:1px solid var(--line); border-radius:10px; background:var(--pale); font-size:12px; }
.attachment img { width:56px; height:56px; object-fit:cover; border-radius:6px; background:#fff; }
.attachment-wait { width:56px; height:56px; display:grid; place-items:center; color:var(--muted); font-size:11px; }
.attachment-caption { color:var(--ink); overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; line-height:1.35; }
.attachment.is-flagged { border-color:#c98a2e; background:#fbf3e4; }
.attachment-warning { grid-column:1/-1; color:#8a5a12; font-size:11px; }
.attachment-remove { position:absolute; top:4px; right:4px; width:22px; height:22px; border:0; border-radius:50%; background:transparent; color:var(--muted); font-size:16px; line-height:1; cursor:pointer; }
.attachment-remove:hover { background:#e6ede2; color:var(--ink); }
.message-images { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.message-images img { max-width:min(100%,260px); max-height:220px; border-radius:10px; border:1px solid var(--line); background:#fff; }

.research-actions { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }
.research-actions .button { padding:2px 6px; }

/* The workspace controls sit with the composer's other actions. */
#composer .workspace-controls { display:flex; gap:2px; margin-left:auto; }
#composer .workspace-controls .button { padding:4px 7px; font-size:11px; min-height:28px; color:var(--muted); }
#composer .workspace-controls .button:hover { background:#e6ede2; color:var(--ink); }
#composer .workspace-controls .button[aria-pressed=true] { background:#e6ede2; color:var(--ink); }
@media(max-width:600px){#composer .workspace-controls .button{padding:4px;font-size:10px}}

/* The conversation rail: each thread, and the control to put it away. */
.conversation-row { display:flex; align-items:stretch; gap:2px; }
.conversation-row .conversation-link { flex:1; min-width:0; }
/* A conversation whose turn is still running, so leaving it is visibly safe. */
.conversation-link.is-running{position:relative}
.conversation-link.is-running:after{content:'';position:absolute;right:8px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:#7c9c74;animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
@media(prefers-reduced-motion:reduce){.conversation-link.is-running:after{animation:none}}
.conversation-archive { flex:0 0 auto; width:26px; border:0; border-radius:7px; background:transparent; color:var(--muted); font-size:14px; line-height:1; cursor:pointer; opacity:0; transition:opacity .12s ease; }
.conversation-row:hover .conversation-archive, .conversation-row:focus-within .conversation-archive { opacity:1; }
.conversation-archive:hover { background:#e6ede2; color:var(--ink); }
.conversation-archive:disabled { opacity:0; }
@media (hover:none) { .conversation-archive { opacity:1; } }
.conversation-archive-toggle { display:block; width:100%; margin-top:8px; text-align:left; font-size:11px; padding:6px 8px; }

/* ---------------------------------------------------------------------------
   Running inside a phone
   ---------------------------------------------------------------------------
   `viewport-fit=cover` lets the page use the full screen, which means the page
   is now responsible for not putting anything under the notch, the home
   indicator or a rounded corner. The insets are zero everywhere else, so this
   costs the desktop layout nothing.

   Only the OUTER frame takes the insets. Applying them per-panel would double
   them wherever two padded things nest, which is how a layout ends up with a
   40px gutter on one side of a phone and none on the other. */
:root { --safe-t: env(safe-area-inset-top, 0px); --safe-b: env(safe-area-inset-bottom, 0px);
        --safe-l: env(safe-area-inset-left, 0px); --safe-r: env(safe-area-inset-right, 0px); }
body { padding-left: var(--safe-l); padding-right: var(--safe-r); }
.topbar { padding-top: var(--safe-t); }
.auth-screen { padding-top: calc(var(--safe-t) + 16px); padding-bottom: calc(var(--safe-b) + 16px); }
/* The composer is the one thing pinned to the bottom edge, so it is the one
   thing that must clear the home indicator. */
#composer { margin-bottom: calc(var(--safe-b) * 0.5); }
.chat-footnote { padding-bottom: calc(10px + var(--safe-b)); }

/* A phone is a touch device held one-handed: targets get bigger, and the
   conversation rail stops competing with the thread for width. */
@media (hover: none) and (max-width: 820px) {
  .conversation-archive, .message-action, .attach-button { min-height: 32px; min-width: 32px; }
  .cv-suggestion, .conversation-link { min-height: 40px; }
  /* iOS zooms the page when a font smaller than 16px gains focus. */
  #input, .search, input, textarea, select { font-size: 16px; }
}

/* In the app there is no browser chrome to scroll away, and no second way out
   of a text field, so the layout is the full screen and stays put. */
.is-native, .is-native body { overscroll-behavior:none; }
.is-native body { -webkit-user-select:none; user-select:none; }
.is-native input, .is-native textarea, .is-native [contenteditable] { -webkit-user-select:text; user-select:text; }

/* ---------------------------------------------------------------------------
   The conversation, on a phone
   ---------------------------------------------------------------------------
   The rail is a column of threads beside the conversation, which is right on a
   desktop and wrong on a 390px screen: stacked above the thread it ate a third
   of the height before a single message showed. On a phone it becomes one
   scrolling row — the same information, along instead of down. */
@media (max-width: 760px) {
  .conversation-layout { grid-template-columns: minmax(0,1fr); gap: 10px; }
  .conversation-navigation {
    position: static; display: flex; align-items: center; gap: 6px;
    overflow-x: auto; overscroll-behavior-x: contain;
    scrollbar-width: none; padding-bottom: 2px;
  }
  .conversation-navigation::-webkit-scrollbar { display: none; }
  /* The label and the search are desktop affordances; the row itself says what
     it is, and a keyboard is expensive on a phone. */
  .conversation-navigation .eyebrow, .conversation-navigation .search { display: none; }
  .conversation-navigation #new-conversation { flex: 0 0 auto; width: auto; margin: 0; padding: 7px 12px; font-size: 12px; white-space: nowrap; }
  .conversation-navigation #conversation-list { display: flex; gap: 6px; max-height: none; overflow: visible; }
  .conversation-navigation .conversation-link { min-width: 0; }
  .conversation-row { flex: 0 0 auto; }
  .conversation-link { white-space: nowrap; max-width: 46vw; overflow: hidden; text-overflow: ellipsis; padding: 7px 10px; font-size: 12px; }
  .conversation-archive-toggle { flex: 0 0 auto; width: auto; margin: 0; white-space: nowrap; }
  .conversation-no-results { white-space: nowrap; font-size: 12px; margin: 0; }
  /* The research panel belongs under the conversation, not beside it. */
  .cv-side { grid-column: 1; }
}

/* A row that scrolls sideways should look like one. The fade is the only clue
   a touch screen gets that there is more past the edge. */
@media (max-width: 850px) {
  .sidebar nav { scrollbar-width: none; -webkit-mask-image: linear-gradient(to right, #000 88%, transparent); }
  .sidebar nav::-webkit-scrollbar { display: none; }
}

/* The receipt: what a turn wrote, read back from the rows, not from the reply. */
.message.receipt{align-self:stretch;max-width:100%;background:#f3f6f1;border:1px solid #dbe4d8;border-radius:8px;padding:12px 16px;font-size:12px;white-space:normal}
.message.receipt .receipt-title{font-size:9px;letter-spacing:1.5px;color:#5f7a58;font-weight:650;margin-bottom:8px}
.message.receipt ul{margin:0;padding:0;list-style:none}
.message.receipt li{padding:4px 0;border-top:1px solid #e6ece3}
.message.receipt li:first-child{border-top:0}
.message.receipt b{font-weight:600}
.message.receipt .retired{color:#8c693a}
.message.status.unanswered{color:#865435;background:#f8ede7;padding:10px 13px;border-radius:7px;font-size:12px}

/* A proposed match on the row it would explain: a reason and a yes or a no. */
.mb-propose{display:inline-flex;gap:6px;align-items:center;margin-left:8px;font-size:11px;color:#5f7a58}
.mb-propose em{color:var(--muted);font-style:normal;font-size:10px}
.mb-propose button{border:1px solid #c3d5bb;background:#fff;border-radius:4px;padding:2px 8px;font-size:11px;color:#2f4a2c}
.mb-propose button[data-accept='0']{color:var(--muted)}

/* The next 60 days: a day-level answer to "will the account be there when the bill is". */
.mb-cash{margin:12px 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:#fff}
.mb-cash.is-under{border-color:#e3c98a;background:#fffaf0}
.mb-cash.is-negative{border-color:#e09a9a;background:#fff5f5}
.mb-cash-lead{margin:0;font-size:13px}
.mb-cash-why{margin:6px 0 0;font-size:12px;color:var(--muted)}
.mb-cash-upcoming{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;font-size:12px}
.mb-cash-upcoming li{display:contents}
.mb-cash-upcoming li span:first-child{color:var(--muted);font-variant-numeric:tabular-nums}
.mb-cash-gaps{margin:8px 0 0;padding-left:18px;font-size:12px;color:#7a5a1e}

/* The balance line: solid past, solid projection, dotted hope, thin pace. */
.mb-chart-wrap{margin:0 0 10px;position:relative}
.mb-tip{position:absolute;z-index:3;background:#1f2430;color:#fff;border-radius:6px;padding:8px 10px;font-size:11px;min-width:180px;box-shadow:0 4px 14px rgba(0,0,0,.18);pointer-events:none}
.mb-tip strong{display:block;margin-bottom:4px;font-size:11px}
.mb-tip ul{list-style:none;margin:0;padding:0}
.mb-tip li{display:flex;justify-content:space-between;gap:14px;line-height:1.5}
.mb-chart-event{cursor:default;outline:none}
.mb-chart-hit{fill:transparent;pointer-events:all}
.mb-chart-event:hover line,.mb-chart-event:focus line{stroke:#2f3f86;stroke-width:1.4}
.mb-chart{display:block;width:100%;height:auto}
.mb-chart-grid{stroke:var(--line);stroke-width:1}
.mb-chart-line{fill:none;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.mb-chart-line.is-past{stroke:#5a6aa8}
.mb-chart-line.is-future{stroke:#2f3f86}
.mb-chart-line.is-hope{stroke:#4f9a63;stroke-dasharray:5 4;stroke-width:1.6}
.mb-chart-line.is-upheld{stroke:#7a5fb0;stroke-dasharray:1.5 3.5;stroke-width:1.5}
.mb-chart-line.is-pace{stroke:#c0632b;stroke-dasharray:2 3;stroke-width:1.4}
.mb-chart-today{stroke:#444;stroke-dasharray:2 3;stroke-width:1}
.mb-chart-today-label{fill:#333;font-weight:600;letter-spacing:.04em}
.mb-chart-event line{stroke:#8a93b8;stroke-dasharray:2 3;stroke-width:1}
.mb-chart-event circle{fill:#fff;stroke:#2f3f86;stroke-width:1.5}
.mb-chart-event.is-support line{stroke:#c9a24a}
.mb-chart-event.is-support circle{stroke:#b4842a}
.mb-chart-ev{font-size:8.5px;fill:#555;text-anchor:middle}
.mb-chart-ev-amt{fill:#2f3f86;font-weight:600}
.mb-chart-event:hover line{stroke:#2f3f86}
.mb-chart-zero{stroke:#c0392b;stroke-width:1}
.mb-chart-reserve{stroke:#c9a24a;stroke-dasharray:3 3}
.mb-chart-reserve-label{font-size:9px;fill:#9a7a2a;text-anchor:end}
.mb-chart-y{font-size:9px;fill:var(--muted);text-anchor:end;dominant-baseline:middle}
.mb-chart-x{font-size:9px;fill:var(--muted);text-anchor:middle}
.mb-cash.is-negative .mb-chart-line.is-future{stroke:#b4433a}
.mb-chart-legend{display:flex;gap:14px;font-size:11px;color:var(--muted);margin:4px 0 0 2px}
.mb-chart-key::before{content:'';display:inline-block;width:14px;height:0;border-top:2px solid #5a6aa8;margin-right:5px;vertical-align:middle}
.mb-chart-key.is-future::before{border-color:#2f3f86}
.mb-chart-key.is-hope::before{border-top-style:dashed;border-color:#4f9a63}
.mb-chart-key.is-upheld::before{border-top-style:dotted;border-color:#7a5fb0}
.mb-chart-key.is-pace::before{border-top-style:dotted;border-color:#c0632b}

/* The cursor: a dot on the line and a readout under the axis. */
.mb-chart-cursor line{stroke:#2f3f86;stroke-width:1;stroke-opacity:.5}
.mb-chart-cursor circle{fill:#2f3f86;stroke:#fff;stroke-width:2}
.mb-cursor-tip{position:absolute;z-index:2;background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:11px;box-shadow:0 3px 10px rgba(0,0,0,.08);pointer-events:none;white-space:nowrap}
.mb-cursor-tip strong{display:block;font-size:14px;font-variant-numeric:tabular-nums}
.mb-cursor-date{display:block;color:var(--muted)}
.mb-cursor-alt{display:block;font-size:10px;color:var(--muted)}
.mb-cursor-alt.is-upheld{color:#7a5fb0}
.mb-cursor-alt.is-pace{color:#c0632b}
.mb-cursor-alt.is-hope{color:#4f9a63}

/* Payments the scheduler prepared: a yes, a no, or a reason. */
.pay-item{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--line)}
.pay-item h3{margin:0 0 2px;font-size:14px}
.pay-item p{margin:0;font-size:12px;color:var(--muted)}
.pay-item.is-needs_human .pay-reason{color:#7a5a1e}
.pay-item .actions{display:flex;gap:8px;flex-shrink:0}
.pay-flight,.pay-done{font-size:12px;color:var(--muted);margin:10px 0 0}

/* The hub feed. */
.hub-item{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.hub-item.is-new .hub-body h3::after{content:'new';font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:#2f3f86;border-radius:3px;padding:1px 5px;margin-left:8px;vertical-align:middle}
.hub-when{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;padding-top:3px}
.hub-body h3{margin:0 0 2px;font-size:14px}
.hub-body p{margin:0;font-size:13px}
.hub-item.is-warn .hub-body h3{color:#9a5a1e}
.hub-item.is-ask .hub-body h3{color:#2f3f86}
.hub-reply{display:flex;gap:8px;margin-top:8px}
.hub-reply input{flex:1;max-width:260px;padding:6px 8px;border:1px solid var(--line);border-radius:6px}
.hub-item .actions{display:flex;gap:8px;margin-top:8px}

.hub-pref{display:block;font-size:13px;margin:8px 0}
.hub-pref select{margin-left:6px;padding:4px 6px;border:1px solid var(--line);border-radius:6px}

/* A yes that stands (ADR 0053) */
.hub-standing{display:inline-flex;align-items:center;gap:.4rem;margin-left:.75rem;font-size:.85rem;color:var(--muted,#666)}
.hub-standing-list{list-style:none;padding:0;margin:0}
.hub-standing-list li{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 0;border-top:1px solid var(--line,#eee)}
.hub-standing-list li:first-child{border-top:0}

/* The browser stage (ADR 0052, corrected): the room it needs, one line on whose turn it is, click and type like a browser. */
.live-browser{display:flex;flex-direction:column;min-width:0;min-height:0;width:62%;border-left:1px solid var(--line);background:#f3f5f1;font:13px/1.5 var(--sans)}
.live-browser[hidden]{display:none}
.has-browser .workspace-chat{width:38%;flex:0 0 38%}
.browser-focused .workspace-chat{display:none}.browser-focused .live-browser{width:100%;border-left:0}
.bp-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:#fff}
.bp-site{display:flex;align-items:center;gap:10px;min-width:0}.bp-site strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bp-site select{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;max-width:220px}
.bp-url{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bp-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.bp-actions .button{min-height:34px;padding:6px 10px;font-size:12px}
.bp-status{margin:0;padding:8px 14px;font-size:13px;border-bottom:1px solid var(--line);background:#fbfcfa}
.bp-status[data-kind=you]{background:#e8f1e3;color:#214d2e;font-weight:600}.bp-status[data-kind=ask]{background:#fbf3e3;color:#5a4418}.bp-status[data-kind=error]{background:#fde9e7;color:#7a2a22}
.bp-stage{flex:1;min-height:0;overflow:auto;background:#2a2d2a;display:flex;align-items:flex-start;justify-content:center;padding:10px}
.bp-frame-box{position:relative;height:100%;max-height:100%;width:auto;max-width:min(100%,1200px);aspect-ratio:3/2;margin:auto;background:#fff;box-shadow:0 2px 14px #0005;border-radius:4px;overflow:hidden}
.bp-stage.is-zoomed .bp-frame-box{width:200%;height:auto;max-width:none;max-height:none;margin:0}
.browser-frame{display:block;width:100%;height:100%;object-fit:fill;cursor:default;user-select:none;-webkit-user-drag:none}
/* Until the first frame arrives the image has no src; show a quiet wait instead of the browser's broken-image glyph. */
.browser-frame:not([src]){visibility:hidden}.bp-frame-wait{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--muted);background:#fff}.bp-frame-wait span:before{content:'';display:block;width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--green);border-radius:50%;margin:0 auto 10px;animation:spin 1s linear infinite}.browser-frame[src]+.bp-frame-wait{display:none}
.is-yours .browser-frame{cursor:pointer}
.bp-keys{position:absolute;inset:0;width:100%;height:100%;opacity:0;resize:none;border:0;padding:0;pointer-events:none;caret-color:transparent;font-size:16px}
.is-yours .bp-frame-box{outline:3px solid #4d8a5d;outline-offset:-3px}
.bp-veil{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-start;padding:10px;pointer-events:none}.bp-veil span{font-size:11px;letter-spacing:.3px;background:#14291fcc;color:#fff;padding:4px 9px;border-radius:14px}
.bp-empty{align-self:center;text-align:center;color:#e8ebe6;padding:40px 20px;max-width:420px}.bp-empty h3{font-size:18px;margin-bottom:8px;color:#fff}.bp-empty p{color:#c9cfc6}
.bp-keyrow{display:flex;gap:6px;align-items:center;padding:8px 14px;border-top:1px solid var(--line);background:#fff}.bp-keyrow form{flex:1;min-width:0;margin:0}.bp-keyrow input{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit}.bp-keyrow .button{min-height:34px;padding:6px 8px;font-size:12px}
.bp-proposed{padding:10px 14px;border-top:1px solid var(--line);background:#fff;max-height:30%;overflow:auto}.bp-proposed article{padding:8px 0}.bp-proposed ol{padding-left:20px;margin:6px 0;overflow-wrap:anywhere;font-size:12px}
.bp-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}.bp-row input[type=url]{flex:1;min-width:160px;padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit}
.bp-drawer{border-top:1px solid var(--line);background:#fff;padding:6px 14px;max-height:40%;overflow:auto}.bp-drawer>summary{cursor:pointer;font-size:12px;color:var(--green);padding:6px 0}.bp-history p{font-size:12px;margin:4px 0}.bp-history .tag{font-size:10px}
@media(max-width:1000px){.has-browser .workspace-body{flex-direction:column}.has-browser .workspace-chat{width:100%;flex:1 1 auto;min-height:200px}.live-browser{width:100%;border-left:0;border-top:1px solid var(--line);flex:0 0 58%}.browser-focused .live-browser{flex:1 1 auto}.browser-focused .workspace-chat{display:none}.bp-stage{padding:0}.bp-frame-box{border-radius:0;box-shadow:none}.bp-bar{padding:8px 10px}.bp-actions .button{padding:6px 7px;font-size:11px}.bp-status{padding:7px 10px;font-size:12px}}
@media(max-width:600px){.live-browser{flex:0 0 62%}.bp-site strong{font-size:13px}.bp-url{display:none}.bp-keyrow{padding:6px 8px}}

/* With the browser open the conversation gives up its rails: the stage and the chat are the page. */
.conversation-layout.cv.browser-open{grid-template-columns:minmax(0,1fr)}
.cv.browser-open .conversation-navigation,.cv.browser-open .cv-side{display:none}
.cv.browser-open .chat-panel{height:calc(100dvh - 124px);min-height:480px}
@media(max-width:900px){.cv.browser-open .chat-panel{height:calc(100dvh - 140px)}}

/* The site card (ADR 0054) */
#site-cards{margin:8px 0 10px}.site-cards[hidden]{display:none}
.site-card{border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px 14px;margin:8px 0;font:13px/1.5 var(--sans)}
.site-card header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.site-card header strong{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-card header .muted{margin-left:auto;white-space:nowrap;font-size:11px}
.site-dot{width:8px;height:8px;border-radius:50%;background:#9aa69b;flex-shrink:0}.site-card.is-signin .site-dot,.site-card.is-code .site-dot,.site-card.is-pay .site-dot,.site-card.is-needs_human .site-dot{background:#4d8a5d;box-shadow:0 0 0 3px #e8f1e3}.site-card.is-running .site-dot{background:#c9a24a}
.site-card p{margin:6px 0}.site-card .button{min-height:34px;font-size:12px}
.site-runtimes{display:grid;gap:6px;margin:8px 0}.site-runtime{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.site-runtime.is-on{border-color:#4d8a5d;background:#f3f8f1}.site-runtime input{margin-top:3px}.site-runtime small{display:block;color:var(--muted);margin-top:2px}.site-runtime em{font-style:normal;font-size:10px;color:#4d8a5d;margin-left:4px}
.site-code,.site-cred{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin:8px 0}.site-code input{flex:1;min-width:120px;padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit}
.site-cred{flex-direction:column;align-items:stretch}.site-cred label{display:flex;flex-direction:column;gap:4px;font-size:12px}.site-cred input{padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit}
.site-thumb{display:block;position:relative;width:min(100%,360px);aspect-ratio:3/2;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#2a2d2a;padding:0;cursor:pointer}.site-thumb img{width:100%;height:100%;object-fit:fill}.site-thumb span{position:absolute;right:8px;bottom:8px;font-size:11px;background:#14291fcc;color:#fff;padding:3px 8px;border-radius:12px}
.site-note{color:#7a2a22;font-size:12px}
/* Option 2: the stage, full-screen */
.browser-modal{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#f3f5f1}.browser-modal::backdrop{background:#14291fcc}
.browser-modal aside.live-browser{width:100%;height:100%;border:0}.browser-modal .bp-stage{padding:12px}
@media(max-width:1000px){.browser-modal .bp-stage{padding:0}}

/* The signed-out home page: the sign-in card inside the case for signing up. */
.auth-screen.landing{display:block;padding:0;background:#f0f3ed}
.landing-top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 28px;max-width:1120px;margin:0 auto;width:100%}.landing-top .brand{margin:0;font-size:26px}
.landing-top nav{display:flex;gap:18px;align-items:center;font-size:14px}.landing-top nav a{color:var(--ink);text-decoration:none}.landing-top nav a:hover{text-decoration:underline}
.landing-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:48px;align-items:center;max-width:1120px;margin:0 auto;padding:40px 28px 70px}
.landing-copy h1{font:64px/1.02 var(--serif);letter-spacing:-1.5px;margin:14px 0 18px}
.landing-copy .lede{font-size:18px;line-height:1.6;max-width:56ch;color:#3a4542}
.landing-points{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;font-size:13px;color:var(--muted)}
.landing .auth-card{width:100%;padding:32px}.landing .auth-card h2{font:30px/1.15 var(--serif);margin:10px 0 8px}.landing .auth-card .eyebrow{margin-top:0}.landing .auth-card>p{font-size:14px;color:var(--muted);margin:0 0 14px}
.landing-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr);gap:40px;max-width:1120px;margin:0 auto;padding:54px 28px;border-top:1px solid var(--line)}
.landing-row h2{font:34px/1.12 var(--serif);letter-spacing:-.6px;margin-top:8px;max-width:14ch}
.landing-steps{margin:0;padding-left:22px;font-size:16px;line-height:1.65;display:grid;gap:14px;color:#3a4542}.landing-steps strong{color:var(--ink)}
.landing-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:18px 28px;font-size:15px;line-height:1.6;color:#3a4542}.landing-grid strong{display:block;color:var(--ink);margin-bottom:2px}
.landing-founders p:not(.eyebrow),.landing-price p:not(.eyebrow){font-size:16px;line-height:1.65;max-width:60ch;color:#3a4542}.landing-row a{color:var(--green)}
.landing-price .button.primary{text-decoration:none;display:inline-block}
.landing-foot{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;max-width:1120px;margin:0 auto;padding:30px 28px 50px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.landing-foot nav{display:flex;gap:18px;flex-wrap:wrap}.landing-foot a{color:var(--muted)}
@media(max-width:900px){.landing-hero{grid-template-columns:minmax(0,1fr);gap:28px;padding:24px 20px 48px}.landing-copy h1{font-size:44px}.landing-row{grid-template-columns:minmax(0,1fr);gap:18px;padding:38px 20px}.landing-grid{grid-template-columns:1fr}.landing-top{padding:14px 20px}.landing-top nav{gap:12px}}

/* Your portrait (ADR 0057) */
.portrait-body{padding:4px 26px 8px}
.portrait-week{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;height:150px;align-items:end;margin:10px 0 8px}
.portrait-day{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:5px;font-size:11px;color:var(--muted)}
.portrait-bar{width:58%;min-height:3px;background:var(--green);border-radius:5px 5px 0 0;opacity:.85}
.portrait-day small{font-size:11px;font-variant-numeric:tabular-nums;color:var(--ink)}
.portrait-caption{font-size:12px;color:var(--muted);line-height:1.7;margin:4px 0 10px}
.portrait-section{border-top:1px solid var(--line);padding:18px 26px 10px}
.portrait-section h3{font:normal 17px/1.3 var(--serif);letter-spacing:-.2px;margin:0 0 6px}
.portrait-table{width:100%;border-collapse:collapse;font-size:13px}
.portrait-table th{padding:8px 0 6px;background:none;border:0;font-size:9px;letter-spacing:1.1px;text-transform:uppercase;color:var(--muted)}
.portrait-table td{padding:11px 0;border-bottom:1px solid #eef0ed;vertical-align:middle}
.portrait-table tr:last-child td{border-bottom:0}
.portrait-table td+td,.portrait-table th+th{padding-left:18px}
.portrait-when{color:var(--muted);white-space:nowrap;width:1%}
.portrait-who{color:var(--ink)}
.portrait-drift td.numeric,.portrait-drift th.right{width:14%}
.portrait-trend{font-size:10px;padding:4px 8px;border-radius:30px;white-space:nowrap;background:#eef1ee;color:#657467}
.portrait-trend.is-up{background:#f8f1e4;color:#8c693a}.portrait-trend.is-down{background:#eaf3e9;color:#3e7052}
.portrait-claims{list-style:none;padding:0 26px 10px;margin:0}
.portrait-claims li{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding:16px 0;border-top:1px solid var(--line)}
.portrait-claims li:first-child{border-top:0}
.portrait-claim-main{min-width:0;flex:1}
.portrait-statement{margin:0 0 7px;font-size:14px;line-height:1.65;color:var(--ink)}
.portrait-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:0}
.portrait-claim-actions{display:flex;gap:16px;align-items:center;flex-shrink:0;padding-top:3px}
.portrait-claim-actions .button.text{font-size:12px}
.portrait-claim-actions .button.text:last-child{color:var(--muted)}
.portrait-correct{margin-top:12px}
.portrait-empty{padding:0 26px 26px;font-size:13px}
.ob-top+.cv-thread{border-top:1px solid var(--line);padding-top:18px}
.hub-noticing p{margin:6px 0}.hub-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
@media(max-width:600px){.portrait-body,.portrait-section,.portrait-claims,.portrait-empty{padding-left:18px;padding-right:18px}.portrait-claims li{flex-direction:column;gap:10px}.portrait-week{gap:5px;height:120px}.portrait-day small{font-size:10px}.portrait-drift{font-size:12px}.portrait-table td+td,.portrait-table th+th{padding-left:10px}}
/* Connect your signals (ADR 0057) */
.signal-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.signal-card{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:#fff}.signal-card h3{font-size:15px;margin:0 0 6px}.signal-card p{font-size:13px;line-height:1.5;margin:0 0 8px;color:#3a4542}.signal-card .muted{color:var(--muted)}
.journey-signals{margin-top:18px}
/* Texting (ADR 0057) */
.msg-prefs{border:0;padding:0;margin:10px 0;display:grid;gap:6px;font-size:13px}.msg-prefs legend{font-size:11px;letter-spacing:1px;color:var(--muted);margin-bottom:4px}.msg-note{font-size:12px;margin-top:8px}.signal-card .error{color:#7a2a22;font-size:13px}.signal-card label{display:block;font-size:13px}.signal-card input[type=tel],.signal-card input[name=code]{display:block;margin-top:4px;padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit;min-width:200px}

/* Onboarding (ADR 0058): the thread, with an overview above it and a checklist beside it. */
body[data-view=onboarding] main{padding-top:24px;padding-bottom:24px;min-height:0}
body[data-view=onboarding] .page-heading{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
body[data-view=onboarding] .workspace > footer{display:none}
body[data-onboarding=full] .conversation-navigation{display:none}
body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr) 320px}
.nav-onboarding small{margin-left:auto;font-size:10px;color:var(--muted)}
.ob-top{margin:0 0 14px}
/* The overview: read once, then a slim bar. */
.ob-overview{border:1px solid var(--line);border-radius:12px;background:#fbfcfa;padding:10px 18px}
.ob-overview-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.ob-overview-head .eyebrow{margin:0}
.ob-overview-head .button.text{margin:0;font-size:12px}
.ob-overview-body{display:none;padding:4px 0 10px;color:#3a4542}
.ob-overview.is-open{padding-bottom:14px}.ob-overview.is-open .ob-overview-body{display:block}
.ob-overview-body h2{font:26px/1.15 var(--serif);letter-spacing:-.4px;margin:8px 0 16px;color:var(--ink)}
.ob-tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ob-tiles li{position:relative;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px 14px 48px;font-size:13px;line-height:1.5}
.ob-tiles strong{display:block;color:var(--ink);font-size:14px}.ob-tiles small{display:block;color:var(--muted);font-size:11px;margin:1px 0 6px}.ob-tiles p{margin:0;color:#3a4542}
.ob-num,.ob-phase-num{display:inline-flex;width:24px;height:24px;border-radius:50%;background:var(--green);color:#fff;font:600 12px/1 var(--sans);align-items:center;justify-content:center;flex:0 0 24px}
.ob-tiles .ob-num{position:absolute;left:14px;top:15px}
.ob-habits{list-style:none;margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;font-size:13px;line-height:1.5;color:#3a4542}
.ob-habits strong{color:var(--ink)}
.ob-closing{margin:14px 0 0;font:15px/1.5 var(--serif);color:var(--ink)}
/* The strip, when set-up is done or deferred. */
.ob-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:#f3f6f1;font-size:13px;margin:0 0 12px}
.ob-strip-text{color:var(--ink)}.ob-strip .button.text{margin:0;font-size:13px}
/* The checklist, in the rail: three phases, the current one lit. */
.ob-panel{font:13px/1.5 var(--sans)}
.ob-panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:4px}.ob-panel-head .eyebrow{margin:0}
.ob-panel-progress{font-size:12px;color:var(--muted)}.ob-panel-progress b{font:600 16px/1 var(--serif);color:var(--ink)}
.ob-phase{margin:10px 0 0;padding:12px 14px 4px;border:1px solid var(--line);border-radius:12px;background:#fff}
.ob-phase.is-current{border-color:#4d8a5d;box-shadow:0 0 0 3px #4d8a5d1a}
.ob-phase.is-done .ob-phase-num{background:#e8f1e3;color:#214d2e}
.ob-phase:not(.is-current):not(.is-done) .ob-phase-num{background:#e4e9e2;color:var(--muted)}
.ob-phase header{display:flex;align-items:flex-start;gap:10px;margin-bottom:6px}
.ob-phase header>div{flex:1;min-width:0}
.ob-phase h3{font:600 13px/1.3 var(--sans);margin:2px 0 0}.ob-phase header small{display:block;color:var(--muted);font-size:11px;margin-top:1px}
.ob-phase-progress{font-size:11px;color:var(--muted);margin-top:4px;white-space:nowrap}
.ob-phase.is-current .ob-phase-progress{color:#214d2e;font-weight:600}
.ob-phase ul{list-style:none;margin:0;padding:0}
.ob-phase li{display:flex;gap:10px;padding:9px 0;border-top:1px solid var(--line)}
.ob-phase li>div{min-width:0;flex:1}
.ob-check{flex:0 0 18px;height:18px;border:1.5px solid #c9d3c6;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:#fff;margin-top:1px}
.ob-phase li.is-done .ob-check{background:var(--green);border-color:var(--green)}
.ob-phase li strong{font-weight:600;color:var(--ink)}
.ob-phase li.is-done strong{color:var(--muted);font-weight:500}
.ob-phase li.is-optional:not(.is-done) strong{color:#4b5753;font-weight:500}
.ob-phase li em{font-style:normal;font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin-left:6px}
.ob-phase li p{margin:1px 0 0;color:var(--muted);font-size:12px}
.ob-phase li.is-done p{display:none}
.ob-do{display:inline-block;margin-top:4px;padding:0;border:0;background:none;color:var(--green);font:600 12px/1.4 var(--sans);cursor:pointer}.ob-do:hover{text-decoration:underline}
.ob-actions{margin:16px 0 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ob-actions .button{margin:0}
@media(max-width:900px){.ob-tiles,.ob-habits{grid-template-columns:1fr}}
@media(max-width:900px){body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr)}}
/* Signed-out home, second cut (2026-10-19): centred headline, the hub does the
   talking, the sign-in card gets its own section under it. */
.landing-top nav a.button.primary{color:#fff;margin:0;padding:9px 14px;font-size:13px}
.landing-hero-b{max-width:1120px;margin:0 auto;padding:64px 28px 40px;text-align:center}
.landing-hero-b h1{font:64px/1.04 var(--serif);letter-spacing:-1.8px;margin:14px auto 18px;max-width:17ch}
.landing-hero-b .lede{font-size:18px;line-height:1.6;max-width:62ch;margin:0 auto 24px;color:#3a4542}
.landing-cta{display:flex;gap:10px;justify-content:center;align-items:center}
.landing-cta .button.primary{margin:0;padding:13px 20px;font-size:14px;text-decoration:none}.landing-cta .button.text{margin:0;font-size:14px}
.landing-note{font-size:13px;color:var(--muted);margin:14px 0 0}
.landing-stage{max-width:720px;margin:36px auto 0;padding:0 28px}
.hub-sample{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:26px 28px;box-shadow:0 1px 2px rgba(36,48,46,.04)}
.hub-sample .eyebrow{margin-bottom:12px}
.hub-sample ul{list-style:none;margin:0;padding:0}
.hub-sample li{display:grid;grid-template-columns:auto 1fr;gap:10px 12px;padding:11px 0;border-top:1px solid var(--line);font-size:14px;line-height:1.5;color:#3a4542}
.hub-sample li:first-child{border-top:0;padding-top:0}
.hub-sample .dot{width:9px;height:9px;border-radius:50%;margin-top:7px;background:var(--green)}
.hub-sample .dot.needs{background:var(--orange)}.hub-sample .dot.quiet{background:#c9d3c6}.hub-sample .dot.ask{background:var(--blue)}
.hub-sample strong{color:var(--ink)}
.hub-sample .when{font-size:12px;color:var(--muted);margin-top:2px}
.hub-sample .reply{margin-top:12px;display:flex;gap:8px}.hub-sample .reply span{border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:12px;background:#fff}
.landing-signin{max-width:480px;margin:0 auto;padding:44px 28px 20px}
/* The home hides the card; #signin/#signup hide everything but the card. */
.landing:not(.is-auth) .landing-signin{display:none}
.landing.is-auth .landing-hero-b,.landing.is-auth .landing-stage,.landing.is-auth .landing-three,.landing.is-auth .landing-row,.landing.is-auth .landing-foot,.landing.is-auth .landing-pain,.landing.is-auth .landing-scope{display:none}
.landing.is-auth .landing-signin{min-height:calc(100vh - 120px);display:flex;align-items:center;padding:20px 28px 60px}
.landing-signin .auth-card{width:100%;padding:32px}.landing-signin .auth-card h2{font:28px/1.15 var(--serif);margin:10px 0 8px}.landing-signin .auth-card .eyebrow{margin-top:0}.landing-signin .auth-card>p{font-size:14px;color:var(--muted);margin:0 0 14px}
.landing-three{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;max-width:1120px;margin:0 auto;padding:60px 28px;border-top:1px solid var(--line)}
.landing-three h3{font:24px/1.2 var(--serif);margin:0 0 8px}.landing-three p{font-size:15px;line-height:1.6;color:#3a4542;margin:0}
.landing-foot small{display:block;width:100%;font-size:12px;line-height:1.6;color:var(--muted);max-width:70ch;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.landing-row p+p{margin-top:14px}.landing-price p:last-child{margin-top:18px}.landing-price p:last-child .button.text{margin-left:10px}
@media(max-width:900px){.landing-hero-b{padding:36px 20px 24px}.landing-hero-b h1{font-size:42px}.landing-three{grid-template-columns:1fr;padding:38px 20px}.landing-stage{padding:0 20px}.landing-signin{padding:32px 20px 12px}.landing-top nav a.button.primary{padding:8px 11px}}

/* Support */
.support-dialog{width:min(640px,94vw);border:1px solid var(--line);border-radius:16px;padding:26px;background:var(--paper,#fff);color:var(--ink)}.support-dialog::backdrop{background:#14291f66}
.support-form header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.support-form h2{font:26px/1.2 var(--serif);margin:4px 0 0}.support-form>p{font-size:14px;margin:14px 0}.support-form label{display:block;font-size:13px;margin:12px 0 4px}.support-form input,.support-form textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit;margin-top:4px}.support-actions{display:flex;align-items:center;gap:12px;margin-top:14px}

/* ===================================================================
   Conversation page, 2026-10-22 (docs/design/conversation-page-2026-10-22.md).
   One object: the thread is the page. These rules come last on purpose and
   override the conversation layers above them. The long prefix
   `#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded)`
   is the page in its ordinary state; with the browser stage open or the panel
   expanded, the older fixed-height, inner-scroll layout still applies. */
.conversation-layout.cv{grid-template-columns:200px minmax(0,1fr) 256px;gap:28px;max-width:1160px;align-items:start}
body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr) 300px}

/* 1. The thread is the page: no card, no inner scroll box; the page scrolls, the composer sticks. */
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded){height:auto;min-height:0;overflow:visible;background:none;border:0;padding:0;box-shadow:none}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded):has(.welcome){min-height:min(58vh,520px);justify-content:center}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) .workspace-body{display:block;min-height:0}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) .workspace-chat{display:flex;flex-direction:column;width:100%;max-width:720px;margin:0 auto;min-height:0}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #thread{flex:0 0 auto;max-height:none;min-height:0;overflow:visible;padding:0 0 18px;gap:14px;overscroll-behavior:auto}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer{position:sticky;bottom:0;z-index:4;margin:0;padding:12px 0 calc(12px + var(--safe-b,0px));border:0;border-radius:0;background:transparent;box-shadow:none}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::after{content:'';position:absolute;inset:0 -8px;background:var(--bg);border-top:1px solid var(--line);z-index:-2}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::before{content:'';position:absolute;inset:12px 0 calc(12px + var(--safe-b,0px));border:1px solid #ccd8c8;border-radius:12px;background:#fff;box-shadow:0 3px 12px #24302e06;z-index:-1}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer:focus-within{box-shadow:none}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer:focus-within::before{box-shadow:0 0 0 2px #c3d5bb}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer.is-dropping::before{outline:2px dashed #365d4d;outline-offset:-6px}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer.is-dropping{outline:0}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) .attachment-strip{position:relative;z-index:1}

/* 2. Measure: a 68ch text column, agent turns at 15.5px/1.6, member turns the quiet bubble, 14px between turns. */
#conversation .cv .message{font-size:15.5px;line-height:1.6;max-width:68ch}
#conversation .cv .message.agent{max-width:68ch;padding:4px 0}
#conversation .cv .message.member{max-width:75%;font-size:15px;padding:11px 16px}
#conversation .cv .message.status{font-size:13px}
#conversation .cv .message.receipt,#conversation .cv .message.blocked{max-width:68ch}
#conversation .cv .message.status.unanswered{max-width:68ch}
#conversation .cv .welcome{padding:0 0 22px}

/* The conversation's tools (Work, Browser, Expand): three icon buttons at the top right of the thread column. */
.cv-tools{display:flex;justify-content:flex-end;width:fit-content;margin-left:auto;gap:2px;padding:2px;position:sticky;top:0;z-index:3;background:var(--bg);box-shadow:0 0 0 6px var(--bg);border-radius:10px}
.cv-tools:empty{display:none}
.cv-tools .workspace-controls{margin:0;gap:2px}
.cv-tool{display:inline-flex;align-items:center;justify-content:center;gap:5px;width:32px;height:32px;border:0;border-radius:8px;background:none;color:var(--muted);cursor:pointer;padding:0;font:600 11px/1 var(--sans)}
.cv-tool svg{width:17px;height:17px;flex-shrink:0}
.cv-tool:hover,.cv-tool:focus-visible{background:#e6ede2;color:var(--ink)}
.cv-tool[aria-pressed=true]{background:#e4ebe1;color:#304d3d}
.cv-tool:has(.cv-tool-label:not([hidden])){width:auto;padding:0 8px 0 7px}
.cv-tool-label{font-size:10px;font-weight:600;color:#fff;background:var(--orange);border-radius:9px;min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center}
.cv-tool-label[hidden]{display:none}

/* 3. The composer: one quiet row under the textarea — a segmented mode switch, attach, send. */
#conversation .cv #composer textarea{font-size:15.5px;line-height:1.5;min-height:64px;padding:14px 16px 6px}
#conversation .cv .composer-bottom{display:flex;align-items:center;gap:6px;padding:4px 10px 10px;flex-wrap:nowrap;justify-content:flex-start}
#conversation .cv .mode{display:inline-flex;gap:0;border:1px solid var(--line);border-radius:8px;background:#f3f5f1;padding:2px;overflow:hidden}
#conversation .cv .mode button{border:0;background:none;border-radius:6px;font-size:11.5px;min-height:26px;padding:3px 10px;color:var(--muted);font-weight:500;white-space:nowrap}
#conversation .cv .mode button[aria-pressed=true]{background:#fff;color:#2f4a3f;font-weight:600;box-shadow:0 1px 2px #24302e14}
#conversation .cv .mode button:disabled{opacity:.6}
#conversation .cv .attach-button{margin-left:auto;width:32px;height:32px;font-size:15px}
#conversation .cv .send-button{width:32px;height:32px;border-radius:8px;font-size:18px}
#conversation .cv .send-button.is-stop{font-size:11px}
#conversation .cv .cv-hint{display:none}
/* The footnote is true only when a change is being explored, so that is the only time it shows. */
#conversation .cv .chat-footnote{display:none}
#conversation .cv #composer[data-mode=propose] .chat-footnote{display:block;font-size:11px;line-height:1.5;color:var(--muted);text-align:left;padding:0 12px 10px;margin:0}

/* 5. A site task in the thread column: a thin green rule, site and task on one line, body at 14px, one primary button and one text button. */
#conversation .cv #site-cards{margin:0 0 14px}
#conversation .cv .site-card{border:0;border-left:2px solid #4d8a5d;border-radius:0;background:none;padding:2px 0 2px 14px;margin:0 0 12px;font-size:14px;line-height:1.5}
#conversation .cv .site-card.is-running{border-left-color:#c9a24a}
#conversation .cv .site-card.is-requested{border-left-color:#9aa69b}
#conversation .cv .site-card.is-done,#conversation .cv .site-card.is-failed{border-left-color:var(--line)}
#conversation .cv .site-card header{margin-bottom:2px;gap:8px}
#conversation .cv .site-card header strong{font-size:13px;font-weight:600;color:var(--ink)}
#conversation .cv .site-card header .muted{font-size:12px}
#conversation .cv .site-card p{margin:4px 0;font-size:14px}
#conversation .cv .site-card p.muted{font-size:12.5px}
#conversation .cv .site-card .bp-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0 2px}
#conversation .cv .site-card .button{min-height:32px;font-size:12px;padding:7px 13px}
#conversation .cv .site-card .button.text{padding:0;min-height:auto}
#conversation .cv .site-card .site-dot{width:7px;height:7px}

/* 6. The conversations rail: a quiet list, the active one in the pale fill, no card chrome. */
.cv .conversation-navigation{position:sticky;top:18px;padding-top:2px}
.cv-rail-toggle{display:none}
.cv .conversation-navigation .eyebrow{margin:0 0 12px 10px}
.cv .cv-rail-body>.button{width:100%;justify-content:flex-start;font-size:12.5px;min-height:38px;background:none;border-color:transparent;color:var(--green);padding:8px 10px;gap:8px}
.cv .cv-rail-body>.button:hover{background:var(--pale)}
.cv .conversation-navigation .search{min-height:36px;font-size:12.5px;background:transparent;border-color:transparent;padding:8px 10px;margin:4px 0 8px;width:100%;box-sizing:border-box}
.cv .conversation-navigation .search:focus{border-color:var(--line);background:#fff}
.cv .conversation-link{font-size:12.5px;padding:9px 10px;min-height:38px;color:#58675d;margin-bottom:2px;border-radius:8px}
.cv .conversation-link[aria-current=true]{background:var(--pale);color:#304d3d;font-weight:600}
.cv .conversation-archive-toggle{font-size:11px;color:var(--muted)}

/* 4. Getting set up: one compact card. How far along, the current phase and its next step, one link; everything else behind "Show all steps". */
.ob-panel{font:13px/1.5 var(--sans)}
.ob-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px 16px}
.ob-card .ob-panel-head{margin-bottom:8px}
.ob-bar{height:4px;border-radius:2px;background:#e4e9e2;overflow:hidden;margin:0 0 12px}
.ob-bar i{display:block;height:100%;background:var(--green);border-radius:2px;transition:width .3s ease}
.ob-now{margin:0;display:flex;flex-direction:column;gap:2px;font-size:13px;line-height:1.45}
.ob-now-phase{font-size:11px;color:var(--muted)}
.ob-now strong{font-weight:600;color:var(--ink);font-size:14px}
.ob-now em{font-style:normal;font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.ob-now .ob-do{margin-top:4px;align-self:flex-start}
.ob-all{margin:12px 0 0;border-top:1px solid var(--line);padding-top:8px}
.ob-all>summary{cursor:pointer;font-size:12px;color:var(--muted);list-style:none;display:flex;align-items:center;gap:8px;padding:2px 0}
.ob-all>summary::-webkit-details-marker{display:none}
.ob-all>summary::before{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease;margin-left:3px;flex-shrink:0}
.ob-all[open]>summary::before{transform:rotate(45deg)}
.ob-all>summary:hover{color:var(--ink)}
.ob-all-hide{display:none}
.ob-all[open] .ob-all-show{display:none}
.ob-all[open] .ob-all-hide{display:inline}
.ob-all .ob-phase{border:0;border-radius:0;padding:10px 0 2px;margin:2px 0 0;background:none;box-shadow:none}
.ob-all .ob-phase.is-current{border:0;box-shadow:none}
.ob-all .ob-phase header{margin-bottom:4px}
.ob-all .ob-phase li{padding:7px 0}
.ob-all .ob-phase li p{font-size:11.5px}
.ob-card .ob-actions{margin-top:14px;gap:12px}
.ob-card .ob-actions .button.primary{min-height:34px;font-size:12px;padding:7px 12px}
.ob-card .ob-actions .button.text{font-size:12px}
.ob-overview-link{display:block;margin:10px 0 0 2px;border:0;background:none;padding:0;font:12px/1.5 var(--sans);color:var(--muted);cursor:pointer;text-align:left}
.ob-overview-link:hover{color:var(--green);text-decoration:underline}
.ob-new{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);vertical-align:middle;margin-left:4px}
.ob-overview-dialog{border:0;border-radius:14px;padding:0;width:100%;max-width:min(760px,calc(100vw - 32px));box-shadow:0 20px 60px #24302e33;background:#fbfcfa;color:var(--ink)}
.ob-overview-dialog::backdrop{background:#24302e66}
.ob-overview-dialog .ob-overview{border:0;padding:18px 24px 22px}
/* The strip, once set-up is finished or deferred: one quiet line, no box. */
.ob-strip{padding:4px 0 8px;border:0;background:none;font-size:12px;color:var(--muted);margin:0 0 6px;justify-content:flex-start;gap:12px}
.ob-strip-text{color:var(--muted)}
.ob-strip .button.text{font-size:12px}
.ob-top+.cv-thread{border-top:0;padding-top:0}

/* 7. Responsive. Below 1100 the conversations rail folds into a "Conversations" menu button; below 900 one column, the setup card first. */
@media(max-width:1100px){
 .conversation-layout.cv{grid-template-columns:minmax(0,1fr) 256px;gap:22px}
 body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr) 280px}
 .cv .conversation-navigation{position:relative;grid-column:1/-1;display:block;width:auto;padding:0;z-index:5;grid-template-columns:none}
 .cv .cv-rail-toggle{display:inline-flex;gap:8px;font-size:12.5px;min-height:36px;padding:6px 12px;width:auto}
 .cv .cv-rail-toggle svg{width:16px;height:16px}
 .cv .cv-rail-body{display:none;position:absolute;top:calc(100% + 6px);left:0;width:min(320px,calc(100vw - 36px));background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:0 10px 30px #24302e1f;z-index:6}
 .cv .conversation-navigation.is-open .cv-rail-body{display:block}
 .cv .conversation-navigation.is-open .cv-rail-toggle{background:var(--pale);border-color:transparent}
 .cv .cv-rail-body #conversation-list{display:block;max-height:50vh;overflow:auto}
 .cv .cv-rail-body .conversation-row{display:flex}
 .cv .conversation-link{display:block;width:100%;max-width:none;min-width:0;white-space:normal;flex:1 1 auto;margin:0 0 2px}
 .cv .conversation-navigation .eyebrow{display:block}
 .cv .conversation-navigation .search{margin:4px 0 8px;background:transparent}
}
@media(max-width:900px){
 .conversation-layout.cv,body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr)}
 .cv .cv-side{grid-column:1;position:static}
 body[data-onboarding=full] .cv .cv-side{order:-1}
 body[data-onboarding=full] .cv .conversation-navigation{order:-2}
}
@media(max-width:700px){
 .conversation-layout.cv{display:grid;gap:14px}
 #conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded){width:100%}
 #conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::after{inset:0 -18px}
 #conversation .cv .message{font-size:15px;max-width:100%}
 #conversation .cv .message.member{max-width:88%}
 #conversation .cv #composer textarea{font-size:16px;min-height:56px}
 #conversation .cv .mode button{font-size:11px;padding:3px 8px}
 .ob-card{padding:12px 14px}
 .ob-all .ob-phase li p{display:none}
}
/* The edit / send-again row inside a member bubble is reserved so nothing shifts on hover, but it need not read as padding. */
#conversation .cv .message.member{padding:10px 16px 6px}
#conversation .cv .message.member .message-actions{height:16px;margin-top:2px}

/* Landing on a signal card from the onboarding checklist: scrolled to the middle, ringed for a moment, then ordinary. */
.signal-card{scroll-margin:96px}
.signal-card.is-landed{border-color:#4d8a5d;box-shadow:0 0 0 3px #4d8a5d66;animation:land 2.4s ease-out forwards}
@keyframes land{0%,55%{box-shadow:0 0 0 3px #4d8a5d66;border-color:#4d8a5d}100%{box-shadow:0 0 0 0 transparent;border-color:var(--line)}}

/* ===== Conversation A ===== (web/variants/convo-a.html, convo-a-thread.html)
   One column. Empty: greeting, composer, suggestions, recent. Mid-thread: a title line, ✳︎-marked turns, the composer pinned. */
.conversation-layout.cv,body[data-onboarding=strip] .conversation-layout.cv{grid-template-columns:minmax(0,1fr);position:relative;max-width:760px}
body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr) 300px;max-width:1160px}
body:not([data-onboarding=full]) .cv .cv-side{display:none}
body:not([data-onboarding=full]) .cv .cv-side:has(.chat-context:not(:empty)){display:block;grid-column:1;order:1;width:100%;max-width:720px;margin:0 auto;box-sizing:border-box}
.cv .cv-side .context-note{display:none}
/* Past conversations: the rail is a sheet under the title line, open only when asked for. */
.cv .conversation-navigation,.cv .conversation-navigation.is-open{position:absolute;top:calc(100% + 6px);left:0;right:0;width:auto;margin:0;max-width:none;z-index:30;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 36px #24302e18;padding:14px 14px 10px;display:none;grid-template-columns:none}
.cv .conversation-navigation.is-open{display:block}
.cv .conversation-navigation .cv-rail-toggle,.cv .conversation-navigation .eyebrow{display:none}
.cv .conversation-navigation .cv-rail-body{display:grid;gap:8px}
.cv .conversation-navigation .search{margin:0;background:#fff}
.cv .conversation-navigation #conversation-list{max-height:min(50vh,360px);overflow:auto;display:block}
/* The title line. */
.ca-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:18px 0 14px;border-bottom:1px solid var(--line);margin-bottom:28px;position:sticky;top:0;background:var(--bg);z-index:5}
.ca-head h2{font:400 18px/1.3 var(--serif);margin:0;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ca-links{display:flex;align-items:center;gap:16px;font-size:12px;white-space:nowrap;flex-shrink:0}
.ca-link{border:0;background:none;padding:0;font:12px var(--sans);color:var(--muted);text-decoration:none;cursor:pointer;min-height:0}
.ca-link:hover,.ca-link:focus-visible{color:var(--ink)}.ca-link b{color:var(--ink);font-weight:600}
.ca-links .cv-tools{position:static;box-shadow:none;background:none;padding:0;margin:0;gap:16px;border-radius:0;display:flex}
.ca-links .cv-tools .workspace-controls{gap:16px}
.ca-links .cv-tool{width:auto;height:auto;padding:0;border-radius:0;background:none;color:var(--muted);font:400 12px var(--sans);gap:5px}
.ca-links .cv-tool svg{display:none}.ca-links .cv-tool::after{content:attr(aria-label)}
.ca-links .cv-tool:hover,.ca-links .cv-tool:focus-visible{background:none;color:var(--ink)}.ca-links .cv-tool[aria-pressed=true]{background:none;color:var(--ink);font-weight:600}
.ca-links .cv-tool:has(.cv-tool-label:not([hidden])){padding:0}
/* Blank state: no title, but the links stay, so Past conversations is always one click away. */
.cv.is-empty .ca-head{border-bottom:0;margin-bottom:0;padding-bottom:0;justify-content:flex-end}.cv.is-empty .ca-head h2{display:none}
.cv.is-empty .welcome.ca-hero{padding-top:52px}
.cv .conversation-navigation .conversation-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* The thread. */
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded):has(.welcome){min-height:0;justify-content:flex-start}
#conversation .cv .welcome.ca-hero{text-align:center;padding:84px 0 28px;margin:0}
#conversation .cv .welcome.ca-hero .mark{font-size:34px;color:var(--green);display:block;margin-bottom:14px}
#conversation .cv .welcome.ca-hero h2{font:400 38px/1.15 var(--serif);letter-spacing:-.6px;margin:0 0 8px}
#conversation .cv .welcome.ca-hero p{font-size:15px;color:var(--muted);margin:0;max-width:none}
#conversation .cv #thread{gap:0;padding:0 0 10px}
#conversation .cv .message{font-size:15px;line-height:1.7;max-width:none;margin:0 0 28px}
#conversation .cv .message.agent{display:grid;grid-template-columns:24px minmax(0,1fr);gap:0 12px;padding:0;max-width:none}
#conversation .cv .message.agent::before{content:'✳︎';color:var(--green);font-size:15px;padding-top:4px;grid-row:1;grid-column:1}
#conversation .cv .message.agent>*{grid-column:2}
#conversation .cv .message.agent .message-body p+p{margin-top:10px}
#conversation .cv .message.member{align-self:flex-end;max-width:78%;font-size:15px;line-height:1.6;background:#edf2ea;border-radius:14px 14px 3px 14px;padding:11px 16px 6px}
#conversation .cv .message.member .message-actions{height:16px;margin-top:2px}
/* "Allende is working…" with the step under it. */
#conversation .cv .message.status[data-live]{display:grid;grid-template-columns:24px minmax(0,1fr);gap:0 12px;font-style:normal;font-size:13.5px;color:var(--muted);max-width:none}
#conversation .cv .message.status[data-live]::before{content:'✳︎';color:var(--green);font-size:15px;padding-top:2px;animation:ca-pulse 1.6s ease-in-out infinite}
@keyframes ca-pulse{0%,100%{opacity:1}50%{opacity:.35}}
#conversation .cv .message.status[data-live] .message-body strong{display:block;color:var(--ink);font-weight:500;font-size:14px}
#conversation .cv .message.status[data-live] .message-body span{display:block;margin-top:3px}
#conversation .cv .ca-watch{display:inline;padding:0;min-height:0;font-size:inherit;color:var(--green);text-decoration:underline;text-underline-offset:3px}
#conversation .cv .message.status.unanswered{margin-left:36px}
/* The RECORDED card: what this turn wrote down, with its undo where the server offers one. */
#conversation .cv .message.receipt{margin:-16px 0 28px 36px;max-width:none;border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:#fff;font-size:13.5px}
#conversation .cv .message.receipt .receipt-title{font-size:9px;letter-spacing:1.5px;font-weight:650;color:var(--muted);margin:0 0 4px}
#conversation .cv .message.receipt ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 14px}
#conversation .cv .message.receipt li{margin:0}#conversation .cv .message.receipt li b{font-weight:600}
/* Tables an answer carries. */
#conversation .cv .message.agent .table-wrap{margin-top:12px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
#conversation .cv .message.agent table{width:100%;border-collapse:collapse;font-size:13.5px}
#conversation .cv .message.agent td{padding:9px 14px;border-top:1px solid #eef1ee}#conversation .cv .message.agent tr:first-child td{border-top:0}#conversation .cv .message.agent td:last-child{text-align:right;font-variant-numeric:tabular-nums}
/* The composer. */
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer{padding:22px 0 calc(10px + var(--safe-b,0px))}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::after{border-top:0;background:linear-gradient(to bottom,rgba(247,248,250,0),var(--bg) 24px)}
#conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::before{inset:22px 0 calc(10px + var(--safe-b,0px));border-color:#d9e1d7;border-radius:14px;box-shadow:0 1px 2px rgba(36,48,46,.04)}
#conversation .cv.is-empty:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer{position:relative;bottom:auto;padding:0 0 28px}
#conversation .cv.is-empty:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::after{display:none}
#conversation .cv.is-empty:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::before{inset:0 0 28px;z-index:0}
#conversation .cv.is-empty #composer>*:not(.sr-only){position:relative;z-index:1}
#conversation .cv #composer textarea{font:15px/1.5 var(--sans);min-height:54px;padding:16px 20px 6px}
#conversation .cv.is-empty #composer textarea{font-size:16px;min-height:84px;padding-top:18px}
#conversation .cv .composer-bottom{padding:6px 12px 12px;gap:8px;align-items:center}
#conversation .cv .ca-plus{width:34px;height:34px;min-height:0;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--muted);font-size:18px;line-height:1;display:grid;place-items:center;padding:0}
#conversation .cv .ca-mode-menu{position:relative}
#conversation .cv .ca-mode-menu summary{list-style:none;cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:12px;color:var(--ink);white-space:nowrap}
#conversation .cv .ca-mode-menu summary::-webkit-details-marker{display:none}
#conversation .cv .ca-mode-menu .mode{position:absolute;bottom:calc(100% + 8px);left:0;z-index:6;display:grid;gap:2px;min-width:280px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 36px #24302e18;padding:6px}
#conversation .cv .ca-mode-menu .mode button{display:grid;gap:2px;text-align:left;border:0;background:none;padding:9px 10px;border-radius:7px;font:600 13px var(--sans);color:var(--ink);min-height:0;white-space:normal}
#conversation .cv .ca-mode-menu .mode button small{font-weight:400;font-size:12px;color:var(--muted)}
#conversation .cv .ca-mode-menu .mode button:hover,#conversation .cv .ca-mode-menu .mode button[aria-pressed=true]{background:#e9eee5}
#conversation .cv .send-button{margin-left:auto;width:34px;height:34px;border-radius:9px;font-size:16px}
#conversation .cv .chat-footnote{text-align:center;font-size:11px;color:#9aa89c;padding:8px 0 0;margin:0;position:relative;z-index:1}
.cv.is-empty .chat-footnote{display:none}
/* Under the composer in the empty state. */
.ca-sugg{list-style:none;margin:0;padding:0}
.ca-sugg li{display:flex;justify-content:space-between;gap:16px;padding:13px 6px;border-top:1px solid var(--line);font-size:14px;cursor:pointer;color:var(--ink)}
.ca-sugg li:first-child{border-top:0}.ca-sugg li:hover{background:#f2f5f1}.ca-sugg small{color:var(--muted);font-size:12px;white-space:nowrap}
.ca-recent{margin-top:48px}.ca-recent .eyebrow{margin-bottom:8px}
.ca-recent ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 28px}
.ca-recent li{min-width:0;padding:0;border-top:1px solid var(--line);font-size:13.5px;display:flex;justify-content:space-between;gap:12px;align-items:center}
.ca-recent li button{flex:1;min-width:0;border:0;background:none;text-align:left;padding:10px 0;font:13.5px var(--sans);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.ca-recent li:hover button{color:var(--green)}.ca-recent small{color:var(--muted);font-size:11px;white-space:nowrap}
/* With the browser open the conversation gives up its width but keeps its shape. */
.cv.browser-open .ca-head{position:static;margin-bottom:14px;padding:10px 0}
.cv.browser-open .ca-links{gap:10px}
.cv.browser-open .message.member{max-width:92%}
@media(max-width:900px){.conversation-layout.cv{max-width:none}}
@media(max-width:700px){.ca-head{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:20px}.cv.is-empty .ca-head{align-items:flex-end;padding-top:10px}.ca-head h2{white-space:normal}#conversation .cv .welcome.ca-hero{padding:40px 0 20px}#conversation .cv .welcome.ca-hero h2{font-size:30px}.ca-recent ul{grid-template-columns:1fr}#conversation .cv .message.member{max-width:92%}#conversation .cv .message.receipt{margin-left:0}.ca-sugg small{display:none}}
#conversation .cv .composer-bottom{justify-content:flex-start}
#conversation .cv .message.agent .message-body{white-space:pre-wrap}

/* ===== Hub: the inbox (hub A) ===== */
/* Two panes: the list of what Allende noticed, did, and needs on the left; the one you picked, with its one action, on the right. The page heading is the list's own title. */
body[data-view=hub] .page-heading{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
body[data-view=hub] main{padding:0;min-height:0}
body[data-view=hub] #notice:not(:empty){padding:16px 20px 0}
body[data-view=hub] .workspace > footer{display:none}
.ib{display:grid;grid-template-columns:360px minmax(0,1fr);min-height:calc(100vh - 76px)}
.ib-list{border-right:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column}
.ib-top{display:flex;align-items:baseline;justify-content:space-between;padding:22px 20px 10px}
.ib-top h1{font:26px/1.1 var(--serif);letter-spacing:-.4px;margin:0}
.ib-top small{font-size:11px;color:var(--muted)}
.ib-sec{font-size:10px;letter-spacing:1.6px;font-weight:650;color:var(--muted);padding:16px 20px 6px;display:flex;align-items:center;gap:8px}
.ib-sec b{font-size:10px;background:var(--orange);color:#fff;border-radius:999px;padding:1px 7px;font-weight:650}
.ib-row{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:12px;align-items:start;padding:11px 20px;text-decoration:none;color:var(--ink);border-top:1px solid #f0f3f0}
.ib-row:hover{background:#f4f7f3}.ib-row[aria-current=true]{background:var(--pale)}
.ib-row .v-dot{width:9px;height:9px;border-radius:50%;background:var(--green);flex-shrink:0;display:inline-block;margin-top:7px}
.ib-row .v-dot.needs{background:var(--orange)}.ib-row .v-dot.quiet{background:#c9d3c6}.ib-row .v-dot.ask{background:var(--blue)}
.ib-row strong{display:block;font-size:13.5px;font-weight:600;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ib-row span{display:block;font-size:12px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ib-row time{font-size:11px;color:var(--muted);padding-top:3px;font-variant-numeric:tabular-nums}
.ib-row.done strong{font-weight:500;color:#3a4542}
.ib-row.done.is-new strong{font-weight:600;color:var(--ink)}
.ib-none{font-size:12.5px;color:var(--muted);padding:6px 20px 12px;margin:0;line-height:1.5}
.ib-foot{margin-top:auto;border-top:1px solid var(--line);padding:14px 20px;font-size:12px}
.ib-foot a{color:var(--muted);text-decoration:none}.ib-foot a:hover{color:var(--ink)}
.ib-detail{padding:44px 56px;max-width:680px}
.ib-detail .eyebrow{color:var(--muted)}.ib-detail .eyebrow.is-ask{color:var(--blue)}
.ib-detail h2{font:32px/1.15 var(--serif);letter-spacing:-.6px;margin:0 0 12px}
.ib-detail p{font-size:15px;line-height:1.65;color:#3a4542;max-width:56ch;margin:0 0 12px}
.ib-facts{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;font-size:13px;margin:22px 0;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ib-facts dt{color:var(--muted)}.ib-facts dd{margin:0;font-variant-numeric:tabular-nums}
.ib-act{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:8px}.ib-act .button{margin:0;font-size:13px;padding:11px 16px}.ib-act .button.text{padding:0}
.ib-reply{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}.ib-reply input{flex:1;min-width:180px;max-width:300px;padding:10px 12px;border:1px solid var(--line);border-radius:7px;font:14px var(--sans)}.ib-reply .button{margin:0}.ib-reply .hub-standing{width:100%;margin:6px 0 0;font-size:12.5px}
.ib-note{font-size:12px;color:var(--muted);margin-top:20px}.ib-note a{color:var(--green)}
.ib-quiet{font-size:14px;color:var(--muted);max-width:40ch}
.ib-support .button{margin:0}
@media(max-width:900px){.ib{grid-template-columns:minmax(0,1fr);min-height:0}.ib-list{border-right:0;border-bottom:1px solid var(--line)}.ib-detail{padding:26px 16px 40px}.ib-detail h2{font-size:26px}.ib-top,.ib-sec,.ib-row,.ib-foot,.ib-none{padding-left:16px;padding-right:16px}}

/* ===== How Allende is allowed to act ===== */
body[data-view=permissions] .page-heading h1{max-width:16ch}
body[data-view=permissions] .page-heading .subtitle{max-width:56ch}
.pm{max-width:720px}
.pm-back{display:inline-block;font-size:12px;color:var(--muted);text-decoration:none;margin-bottom:6px}.pm-back:hover{color:var(--ink)}
.pm-sec{border-top:1px solid var(--line);padding:30px 0 28px;display:grid;grid-template-columns:200px minmax(0,1fr);gap:8px 36px}
.pm-sec h2{font:400 20px/1.25 var(--serif);margin:0 0 6px}
.pm-why{font-size:13px;color:var(--muted);line-height:1.6;margin:0}
.pm-body{font-size:14px;line-height:1.6}
.pm-meter{display:grid;gap:10px;margin-bottom:16px}
.pm-meter div{display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:12px;align-items:center;font-size:13px}
.pm-meter i{display:block;height:6px;border-radius:3px;background:#e6ebe6;overflow:hidden}.pm-meter i::after{content:'';display:block;height:100%;width:var(--w);background:var(--green)}
.pm-meter b{font-variant-numeric:tabular-nums;font-weight:500;color:var(--muted)}
.pm-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin:0 0 10px}
.pm-fields label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
.pm-fields input{padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:14px var(--sans);color:var(--ink)}
.pm-note{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.6}
.pm-line{margin:0}
.pm-body .button{margin:12px 0 0;font-size:13px}
.pm-list{list-style:none;margin:0;padding:0}
.pm-list li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:10px 0;border-top:1px solid #eef1ee}.pm-list li:first-child{border-top:0;padding-top:0}
.pm-list small{color:var(--muted);font-size:12px}.pm-list .button.text{margin:0 0 0 auto;font-size:12px;padding:0;min-height:0}
.pm-cards{display:grid;gap:10px}
.pm-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--paper);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:start}
.pm-card strong{font-size:14px;font-weight:600;grid-column:1;grid-row:1}.pm-card p{margin:0;font-size:12.5px;color:var(--muted);grid-column:1}
.pm-card-act{grid-column:2;grid-row:1/3;display:flex;gap:12px;align-items:center}.pm-card-act .button.text{margin:0;font-size:12px;padding:0;min-height:0}.pm-card-act .button.text.is-on{color:var(--green);font-weight:600}
.pm-card .pm-phone{grid-column:1/-1}
.pm-card.is-landed{box-shadow:0 0 0 3px #c3d5bb}
.pm-radio{display:grid;gap:8px;margin-bottom:16px}
.pm-radio label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:9px;cursor:pointer;font-size:13.5px}
.pm-radio label.is-on{border-color:var(--green);background:#f3f7f2}
.pm-radio input{margin-top:3px}.pm-radio small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.pm-sel{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;font-size:13.5px}
.pm-sel label{display:flex;gap:8px;align-items:center}.pm-sel select{padding:6px 8px;border:1px solid var(--line);border-radius:7px;font:13px var(--sans);max-width:100%}
.pm-invoices{margin-top:14px;font-size:13px}.pm-invoices summary{cursor:pointer;color:var(--green)}
@media(max-width:760px){.pm-sec{grid-template-columns:minmax(0,1fr);gap:10px}.pm-fields{grid-template-columns:1fr}}
#conversation .cv .ca-plus{margin:0}
#conversation .cv .ca-mode-menu{margin:0}
#conversation .cv .ca-sugg.cv-suggestions{display:block;margin-top:0;gap:0}

/* ===== Browser D: the window ===== */
/* The browser is a mode: the app chrome steps aside, the conversation narrows into the window's left column, the stage slides in. */
body.browser-mode .sidebar{transition:transform .26s ease,visibility 0s linear .26s}
body.browser-mode-in .sidebar{transform:translateX(-100%);visibility:hidden}
body.browser-mode .workspace{transition:margin-left .26s ease}
body.browser-mode-in .workspace{margin-left:0}
body.browser-mode-in .topbar,body.browser-mode-in .workspace>footer,body.browser-mode-in .page-heading,body.browser-mode-in #notice:empty{display:none}
body.browser-mode-in main{padding:0!important;max-width:none}
body.browser-mode .conversation-layout.cv.browser-open{display:block;max-width:none;margin:0}
body.browser-mode .cv.browser-open .conversation-navigation,body.browser-mode .cv.browser-open .cv-side,body.browser-mode .cv.browser-open #thread-tools,body.browser-mode .cv.browser-open .chat-footnote{display:none}
body.browser-mode .cv.browser-open .chat-panel{height:100dvh;min-height:0;border:0;border-radius:0;background:var(--paper);padding:0;overflow:hidden;display:flex;flex-direction:column;box-shadow:none}
body.browser-mode .cv.browser-open .workspace-body{display:grid;flex:1;min-height:0;grid-template-columns:minmax(0,1fr) 0px;grid-template-rows:auto minmax(0,1fr);transition:grid-template-columns .26s ease}
body.browser-mode-in .cv.browser-open .workspace-body{grid-template-columns:300px minmax(0,1fr)}
body.browser-mode .cv.browser-open .workspace-chat{grid-row:2;grid-column:1;width:min(720px,100%);justify-self:center;display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;border-right:1px solid var(--line);background:var(--paper);transition:width .26s ease}
body.browser-mode-in .cv.browser-open .workspace-chat{width:100%}
body.browser-mode .cv.browser-open #thread{flex:1 1 auto;max-height:none;min-height:0;overflow:auto;padding:14px 16px 10px;gap:16px;font-size:13.5px}
body.browser-mode .cv.browser-open #composer{flex:0 0 auto;margin:0 12px 12px;position:static}
body.browser-mode .cv.browser-open #composer::before,body.browser-mode .cv.browser-open #composer::after{display:none}
body.browser-mode .cv.browser-open #site-cards{margin:0 12px}
body.browser-mode .cv.browser-open .live-browser{display:contents}
.live-browser[hidden]{display:none}
.bw-top,.bw-stage{opacity:0;transform:translateX(24px);transition:opacity .26s ease,transform .26s ease}
body.browser-mode-in .bw-top,body.browser-mode-in .bw-stage{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){body.browser-mode .sidebar,body.browser-mode .workspace,body.browser-mode .cv.browser-open .workspace-body,body.browser-mode .cv.browser-open .workspace-chat,.bw-top,.bw-stage{transition:none}}
/* The top strip: back, the site, whose turn, live, the one control. */
.bw-top{grid-row:1;grid-column:1/-1;display:flex;align-items:center;gap:16px;padding:9px 16px;border-bottom:1px solid var(--line);background:var(--paper);font-size:13px;min-height:52px}
.bw-back{border:0;background:none;color:var(--muted);font:13px var(--sans);cursor:pointer;padding:4px 0;white-space:nowrap}.bw-back:hover{color:var(--ink)}
.bw-site{display:flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap}.bw-site i{width:8px;height:8px;border-radius:50%;background:var(--green)}.bw-site i[data-kind=you]{background:#2f9e5e}.bw-site i[data-kind=ask]{background:var(--orange)}
.bw-pick{font:13px var(--sans);padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff}
.bw-state{min-width:0;color:#3a4542;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bw-state b{font-weight:600;color:var(--ink)}
.bw-state[data-kind=you]{color:#214d2e}.bw-state[data-kind=you] b{color:#214d2e}.bw-state[data-kind=error]{color:#7a2a22}.bw-state[data-kind=error] b{display:none}
.bw-live{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.bw-live i{width:7px;height:7px;border-radius:50%;background:#c9d3c6}.bw-live[data-on=true] i{background:#2f9e5e;box-shadow:0 0 0 3px #2f9e5e22}
.bw-top .button{margin:0;font-size:12px;padding:8px 12px;min-height:34px;white-space:nowrap}.bw-x{font-size:18px;padding:4px 8px;color:var(--muted)}
/* The stage and the window in it. */
.bw-stage{grid-row:2;grid-column:2;display:grid;place-items:start center;padding:18px;min-height:0;overflow:auto;background:#eef1ec}
.bw-win{width:min(100%,calc((100dvh - 196px) * 1.5));background:#fff;border-radius:10px;box-shadow:0 10px 40px rgba(36,48,46,.16),0 0 0 1px rgba(36,48,46,.08);display:flex;flex-direction:column;overflow:hidden;position:relative}
.bw-chrome{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#f5f7f4;border-bottom:1px solid var(--line);font-size:12px}
.bw-dots{display:flex;gap:5px}.bw-dots i{width:9px;height:9px;border-radius:50%;background:#d6dcd4}
.bw-url{flex:1;min-width:0;background:#fff;border:1px solid var(--line);border-radius:7px;padding:6px 10px;color:#3a4542;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bw-url b{color:var(--ink);font-weight:500}.bw-url::before{content:'🔒';font-size:10px;margin-right:6px}
.bw-act{border:0;background:none;color:var(--muted);font:12px var(--sans);cursor:pointer;padding:4px 6px;white-space:nowrap}.bw-act:hover,.bw-act[aria-expanded=true]{color:var(--ink)}
.bw-pop{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--line);background:#fbfcfa;font-size:13px}
.bw-pop input[type=url]{flex:1;min-width:160px;padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit}.bw-pop .button{margin:0;min-height:36px}
.bw-files{display:block;max-height:40vh;overflow:auto}.bw-files .browser-files p{margin:6px 0}
.bw-page{position:relative;aspect-ratio:3/2;background:#fff;overflow:hidden}
.bw-page .browser-frame{display:block;width:100%;height:100%;object-fit:fill;cursor:none;user-select:none;-webkit-user-drag:none}
.bw-page .browser-frame:not([src]){visibility:hidden}
.bw-win.is-yours{box-shadow:0 10px 40px rgba(36,48,46,.16),0 0 0 3px #4d8a5d}
.bw-win:not(.is-yours) .browser-frame{cursor:default}
.bw-empty{position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:40px 20px;color:var(--muted)}.bw-empty h3{font:400 20px/1.3 var(--serif);color:var(--ink);margin:0 0 8px}.bw-empty p{margin:0;max-width:40ch;font-size:13px}
/* Two cursors: yours is local and instant, Allende's follows the runtime's pointer. */
.bw-cur{position:absolute;pointer-events:none;z-index:4;display:flex;align-items:flex-start;gap:2px;transition:left .12s linear,top .12s linear}
.bw-cur.you{transition:none}
.bw-cur svg{width:18px;height:22px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.bw-cur.allende svg path{fill:#365d4d}.bw-cur.you svg path{fill:#2f3f86}
.bw-cur label{font-size:10px;font-weight:600;background:var(--green);color:#fff;border-radius:999px;padding:2px 7px;margin-top:14px;white-space:nowrap}.bw-cur.you label{background:#2f3f86}
.bw-veil{position:absolute;left:12px;bottom:12px;background:#14291fd9;color:#fff;font-size:12px;padding:7px 11px;border-radius:999px;display:flex;align-items:center;gap:8px;z-index:3;pointer-events:none;max-width:calc(100% - 24px)}.bw-veil i{width:7px;height:7px;border-radius:50%;background:#8fd3a3;animation:bwblink 1.2s infinite;flex-shrink:0}.bw-veil span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@keyframes bwblink{50%{opacity:.3}}
.bw-win .bp-keyrow{border-top:1px solid var(--line)}
/* Allende's steps, above the thread in the conversation column. */
.bw-narr{flex:0 0 auto;max-height:46%;overflow:auto;padding:14px 16px 10px;border-bottom:1px solid var(--line);background:#fbfcfa;font-size:13px}
.bw-narr[hidden]{display:none}
.bw-narr-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.bw-narr-head strong{font-weight:600}.bw-narr-head span{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.bw-steps{list-style:none;margin:0;padding:0}
.bw-steps li{display:grid;grid-template-columns:14px minmax(0,1fr);gap:10px;padding:5px 0;font-size:12.5px;color:#3a4542;position:relative}
.bw-steps li::before{content:'';position:absolute;left:5px;top:20px;bottom:-6px;width:1px;background:#e3e8e5}.bw-steps li:last-child::before{display:none}
.bw-steps i{width:11px;height:11px;border-radius:50%;background:var(--green);margin-top:3px;border:2px solid #fff;box-shadow:0 0 0 1px var(--green)}
.bw-steps li.now{color:var(--ink);font-weight:600}.bw-steps li.now i{background:#fff;animation:bwblink2 1.2s infinite}
.bw-steps li.next{color:var(--muted)}.bw-steps li.next i{background:#fff;box-shadow:0 0 0 1px #c9d3c6}
.bw-steps span{display:block;font-size:11px;font-weight:400;color:var(--muted)}
@keyframes bwblink2{50%{background:var(--green)}}
.bw-prop{margin:10px 0 4px;border:1px solid #e3d8c3;background:#fbf7ee;border-radius:10px;padding:10px 12px;font-size:12.5px}
.bw-prop small{display:block;font-size:10px;letter-spacing:1.3px;color:#8c693a;margin-bottom:4px}.bw-prop strong{display:block;font-size:13px}
.bw-prop details{margin:4px 0 8px}.bw-prop summary{cursor:pointer;color:var(--muted);font-size:12px}.bw-prop ol{margin:4px 0 0;padding-left:18px;overflow-wrap:anywhere}
.bw-prop .button{margin:0;font-size:12px;padding:7px 11px;min-height:32px}.bw-prop .button+.button{margin-left:6px}
@media(max-width:1000px){
 body.browser-mode .cv.browser-open .workspace-body{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto minmax(0,1fr) auto}
 body.browser-mode .cv.browser-open .workspace-chat{grid-row:3;grid-column:1;width:100%!important;border-right:0;border-top:1px solid var(--line);max-height:42dvh}
 .bw-stage{grid-row:2;grid-column:1;padding:10px}.bw-win{width:100%}
 .bw-top{gap:10px;padding:8px 12px;flex-wrap:wrap}.bw-state{flex:1 1 100%;order:9;white-space:normal;font-size:12px}.bw-live{margin-left:0}
 .bw-narr{max-height:34%}
}
@media(max-width:600px){.bw-back{font-size:12px}.bw-url{display:none}.bw-top .button{padding:7px 10px}.bw-cur label{display:none}}
/* Browser D, specificity notes: #conversation rules set the panel height and thread padding, so these carry the id too. */
body.browser-mode #conversation .cv.browser-open .chat-panel{height:100dvh;min-height:0}
body.browser-mode #conversation .cv.browser-open #thread{padding:14px 16px 10px}
body.browser-mode .cv.browser-open .ca-head{flex-wrap:wrap;gap:4px 10px;padding:12px 16px 8px;margin:0;border-bottom:1px solid var(--line)}
body.browser-mode .cv.browser-open .ca-head h2{font-size:15px;flex:1 1 100%;white-space:normal}
body.browser-mode .cv.browser-open .ca-links{font-size:11px;gap:10px}
body.browser-mode .cv.browser-open #thread-suggestions,body.browser-mode .cv.browser-open #thread-recent{display:none}
body.browser-mode .cv.browser-open .workspace-chat .bw-narr+.ca-head{border-top:0}
@media(max-width:850px){body.browser-mode-in .sidebar{display:none}}
/* Conversation A, follow-up, amended by ADR 0059: no rail on the thread once set-up is done or deferred (the "Getting set up" link in the title line stands for it). While set-up is under way the checklist card stays beside the thread: the current step and its "Do this →" are the one thing a person being led must always be able to see. */
body:not([data-onboarding=full]) .cv .cv-side:has(.chat-context:not(:empty)){display:block;grid-column:1;order:1;width:100%;max-width:720px;margin:0 auto;box-sizing:border-box}
body[data-onboarding=full] .cv .cv-side{display:block}
#thread-tools [aria-label="Expand conversation"]{display:none}
/* ===== Chat cards: one shape (site tasks, research, recorded) ===== */
#conversation .cv .site-card{border:1px solid var(--line);border-left-width:1px;border-left-color:var(--line);border-radius:12px;background:var(--paper);padding:0;margin:10px 0 0;font:14px/1.5 var(--sans);box-shadow:0 1px 2px rgba(36,48,46,.04);overflow:hidden}
#conversation .cv .site-card.is-you{border-color:#e3d8c3;background:#fdfbf6}
#conversation .cv .site-card header{display:flex;align-items:center;gap:8px;margin:0;padding:9px 14px;border-bottom:1px solid #eef1ee;font-size:12.5px}
#conversation .cv .site-card.is-you header{border-color:#efe6d3}
#conversation .cv .site-card header strong{font-size:12.5px}
#conversation .cv .site-card header .muted::before{content:'·';margin:0 6px}
#conversation .cv .site-card .site-dot{width:8px;height:8px;background:#c9d3c6}
#conversation .cv .site-card.is-you .site-dot{background:var(--orange)}
#conversation .cv .site-card.is-working .site-dot{background:var(--green);animation:site-blink 1.2s infinite}
#conversation .cv .site-card.is-done .site-dot{background:var(--green)}
@keyframes site-blink{50%{opacity:.3}}
#conversation .cv .site-card .site-watch,#conversation .cv .site-card .site-x{margin-left:auto;padding:0;min-height:auto;font-size:12.5px;color:var(--green)}
#conversation .cv .site-card .site-x{color:var(--muted);font-size:14px}
#conversation .cv .site-card .site-body{padding:12px 14px 14px}
#conversation .cv .site-card.is-done .site-body{padding:9px 14px}
#conversation .cv .site-card p{margin:0 0 10px;font-size:14px}#conversation .cv .site-card p:last-child{margin-bottom:0}
#conversation .cv .site-card .q{font-size:12.5px;color:var(--muted)}#conversation .cv .site-card .q a{color:var(--green)}
#conversation .cv .site-card .bp-row{margin:10px 0 0;gap:14px}
#conversation .cv .site-card .button{min-height:36px;font-size:13px;padding:9px 14px;margin:0}
#conversation .cv .site-card .button.text{padding:0;min-height:auto}
#conversation .cv .site-runtimes{gap:6px;margin:8px 0 2px}
#conversation .cv .site-runtime{padding:9px 11px;border-radius:9px;font-size:13px;align-items:flex-start}
#conversation .cv .site-runtime.is-on{border-color:var(--green);background:#f3f7f2}
#conversation .cv .site-runtime small{display:block;color:var(--muted);font-size:12px;margin-top:1px}
#conversation .cv .site-code{margin:8px 0 0}#conversation .cv .site-code input{flex:0 0 140px;font-size:16px;letter-spacing:4px;text-align:center}
#conversation .cv .site-cred{margin:10px 0 0}
#conversation .cv .site-live{display:grid;grid-template-columns:148px minmax(0,1fr);gap:14px;align-items:start}
#conversation .cv .site-live .site-thumb{width:100%;border-radius:6px;background:#fff}
#conversation .cv .site-live .site-thumb span{position:absolute;right:5px;bottom:5px;font-size:9px;letter-spacing:.5px;background:#14291fd9;color:#fff;border-radius:999px;padding:2px 7px}
#conversation .cv .site-live p{align-self:center}
@media(max-width:600px){#conversation .cv .site-live{grid-template-columns:minmax(0,1fr)}#conversation .cv .site-live .site-thumb{max-width:220px}}
/* Research: the same frame, one line with a quiet bar. */
#conversation .cv .research-summary>summary{font-size:12.5px;color:var(--muted);cursor:pointer}
#conversation .cv .research-card{border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:10px 14px;margin:10px 0 0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13.5px}
#conversation .cv .research-card strong{font-weight:500}
#conversation .cv .research-card p{margin:0;font-size:12.5px;color:var(--muted);margin-left:auto}
#conversation .cv .research-card details{flex-basis:100%;font-size:13px}
#conversation .cv .research-actions{display:flex;gap:14px}#conversation .cv .research-card .button.text{min-height:auto;padding:0;font-size:12.5px}
#conversation .cv .site-card header .muted{margin-left:0}
#conversation .cv .site-thumb img:not([src]){visibility:hidden}#conversation .cv .site-thumb{background:#f3f5f1}
#conversation .cv .site-card header .site-watch,#conversation .cv .site-card header .site-x{margin-left:auto}
/* ===== Commitments & payments: the statement (variant A) ===== */
.cm{max-width:820px}
.cm-title{font:400 30px/1.1 var(--serif);letter-spacing:-.5px;margin:0 0 8px}
.cm-lede{font-size:15px;color:#3a4542;margin:0 0 6px;max-width:60ch;line-height:1.6}.cm-lede b{font-weight:600;color:var(--ink)}
.cm-h{font:600 11px/1.3 var(--sans);letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);margin:34px 0 10px}
.cm-ask{border:1px solid #e3d8c3;background:#fdfbf6;border-radius:12px;padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 20px;align-items:start;margin-bottom:10px}
.cm-ask strong{font-size:15px;font-weight:600}.cm-ask p{margin:4px 0 0;font-size:13.5px;color:#3a4542;line-height:1.5}
.cm-ask .amt{font:400 22px/1 var(--serif);text-align:right;font-variant-numeric:tabular-nums}
.cm-ask .acts{grid-column:1/3;display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:6px}.cm-ask .button{margin:0;font-size:13px;padding:9px 14px;min-height:36px}.cm-ask .button.text{padding:0;min-height:auto}
.cm-list{border-top:1px solid var(--line)}
.cm-day{display:grid;grid-template-columns:72px minmax(0,1fr);gap:0 18px;border-bottom:1px solid var(--line);padding:12px 0}
.cm-day .d{font-size:12px;color:var(--muted);padding-top:3px;font-variant-numeric:tabular-nums}.cm-day .d b{display:block;font:400 18px/1 var(--serif);color:var(--ink);margin-bottom:2px}
.cm-day.today .d b{color:var(--green)}
.cm-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 16px;align-items:baseline;padding:4px 0;font-size:14px}
.cm-row+.cm-row{border-top:1px dashed #eef1ee;padding-top:8px;margin-top:4px}
.cm-row .who{font-weight:500}.cm-row .who a{color:var(--ink);text-decoration:none}.cm-row .who a:hover{text-decoration:underline}.cm-row .from{display:block;font-size:12px;color:var(--muted);font-weight:400}
.cm-row .st{font-size:11px;padding:3px 8px;border-radius:30px;background:#eef1ee;color:#657467;white-space:nowrap}
.cm-row .st.a{background:#eaf3e9;color:#3e7052}.cm-row .st.w{background:#eef2f5;color:#577890}
.cm-cancel{border:0;background:none;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}
.cm-row .amt{font-variant-numeric:tabular-nums;text-align:right;min-width:72px}
.cm-sum{display:flex;justify-content:space-between;gap:16px;padding:12px 0;font-size:13px;color:var(--muted)}.cm-sum b{color:var(--ink);font-variant-numeric:tabular-nums}.cm-sum a{color:var(--green)}
.cm-flight{font-size:13px;color:var(--muted);margin:4px 0}
.cm-people{display:grid;gap:10px}
.cm-p{border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:13px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;font-size:14px;color:var(--ink);text-decoration:none}
a.cm-p:hover{border-color:#c9d3c6}
.cm-p strong{font-weight:600}.cm-p p{margin:2px 0 0;font-size:13px;color:#3a4542;line-height:1.5}.cm-p small{display:block;font-size:12px;color:var(--muted);margin-top:4px}
.cm-p .amt{font-variant-numeric:tabular-nums;text-align:right}.cm-p .amt small{text-align:right}
.cm-risk{display:flex;gap:12px;align-items:baseline;padding:10px 0;border-top:1px solid var(--line);font-size:13.5px}.cm-risk:first-of-type{border-top:0}.cm-risk i{width:8px;height:8px;border-radius:50%;background:var(--orange);flex-shrink:0;position:relative;top:-1px}.cm-risk .amt{margin-left:auto;color:var(--muted);white-space:nowrap}.cm-risk a{color:var(--green)}
.cm-note{font-size:12.5px;color:var(--muted);margin-top:12px}
@media(max-width:600px){.cm-title{font-size:26px}.cm-day{grid-template-columns:56px minmax(0,1fr)}.cm-row{grid-template-columns:minmax(0,1fr) auto}.cm-row .st{grid-column:1}.cm-ask{grid-template-columns:minmax(0,1fr)}.cm-ask .amt{text-align:left}.cm-ask .acts{grid-column:1}}
/* ===== Phone shell ===== (≤700px, the Capacitor apps and small browsers)
   No sidebar. A compact top bar with the mark and the person; a tab bar along the bottom: Talk, Hub, Money, You.
   Money is Accounts, Budget and Commitments behind one tab with a switch at the top; You is the portrait with
   the permissions page and the household menu a tap away. */
@media(max-width:700px){
 body>.sidebar{display:none}
 .workspace{margin-left:0;padding-bottom:calc(64px + var(--safe-b,0px))}
 .topbar{height:auto;min-height:52px;padding:calc(var(--safe-t,0px) + 6px) 16px 6px;gap:10px;justify-content:space-between;position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}
 .topbar #breadcrumb{display:none}
 .phone-brand{font-size:24px;color:var(--green);text-decoration:none;line-height:1;display:inline-flex;align-items:center;gap:8px;font-family:var(--serif)}
 .phone-brand span{font-size:17px;color:var(--ink);letter-spacing:-.3px}
 .person-control{gap:8px}.person-control label,.person-control #sector{display:none}
 .utility-menu>summary{padding:7px 10px;font-size:13px}
 .utility-actions .household-control{display:block;position:static;max-width:none;padding:10px 0 6px;margin-bottom:6px;border-bottom:1px solid var(--line)}
 .utility-actions .household-control label{font-size:9px;letter-spacing:1.2px;color:var(--muted)}
 .utility-actions .household-control select,.utility-actions .phone-person{display:block;width:100%;margin:4px 0 6px;padding:8px;border:1px solid var(--line);border-radius:8px;font:14px var(--sans);background:#fff}
 .utility-actions .household-people{font-size:12px}
 main{padding:14px 16px 24px;min-height:0}
 .page-heading{margin-bottom:14px;gap:0;flex-direction:column;align-items:stretch}
 .page-heading .eyebrow{display:none}.page-heading h1{font-size:26px;letter-spacing:-.4px;margin:0}.page-heading .subtitle{font-size:13px;max-width:none;margin-top:4px}
 .page-heading>.button{display:none}
 .workspace>footer{display:none}
 /* The tab bar. */
 .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:25;display:grid;grid-template-columns:repeat(4,1fr);background:#fffffff2;backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 8px calc(6px + var(--safe-b,0px))}
 .tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px;font-size:10.5px;color:var(--muted);text-decoration:none;border-radius:10px}
 .tabbar a svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
 .tabbar a .mark{font-size:20px;line-height:22px;font-family:var(--serif)}
 .tabbar a[aria-current=page]{color:var(--green);font-weight:600}
 body[data-view=thread] .tabbar a[data-tab=thread],body[data-view=hub] .tabbar a[data-tab=hub],body[data-view=permissions] .tabbar a[data-tab=hub],body[data-view=accounts] .tabbar a[data-tab=money],body[data-view=budget] .tabbar a[data-tab=money],body[data-view=commitments] .tabbar a[data-tab=money],body[data-view=portrait] .tabbar a[data-tab=you]{color:var(--green);font-weight:600}
 body.browser-mode .tabbar,body[data-view=onboarding] .tabbar{display:none}
 /* Money: one tab, three pages, a switch at the top. */
 .money-switch{display:none}
 body[data-view=accounts] .money-switch,body[data-view=budget] .money-switch,body[data-view=commitments] .money-switch{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;background:#e9eee5;border-radius:10px;padding:3px;margin:0 0 16px}
 .money-switch a{text-align:center;padding:7px 4px;font-size:12.5px;color:var(--muted);text-decoration:none;border-radius:8px;white-space:nowrap}
 body[data-view=accounts] .money-switch a[href="#accounts"],body[data-view=budget] .money-switch a[href="#budget"],body[data-view=commitments] .money-switch a[href="#commitments"]{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(36,48,46,.08)}
 /* You: the portrait, with the rest of "you" one row away. */
 .you-links{display:none}
 body[data-view=portrait] .you-links{display:grid;gap:8px;margin:0 0 18px}
 .you-links a{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);text-decoration:none;font-size:14px}
 .you-links a span{color:var(--muted);font-size:12px}
 /* The conversation: one column, the composer riding above the tab bar. */
 .conversation-layout.cv,body[data-onboarding=full] .conversation-layout.cv{grid-template-columns:minmax(0,1fr);max-width:none}
 body[data-view=thread] main{padding:0 16px 8px}
 #thread-head.ca-head{position:sticky;top:0;z-index:5;background:var(--bg);flex-direction:row;align-items:baseline;gap:10px;padding:12px 0 10px;margin-bottom:16px}
 #thread-head h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}
 #thread-head .ca-links{flex:0 0 auto;overflow:auto;gap:12px;scrollbar-width:none;white-space:nowrap}
 #conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer{bottom:calc(64px + var(--safe-b,0px));padding:10px 0 10px}
 #conversation .cv:not(.browser-open) .chat-panel:not(.workspace-expanded) #composer::after{inset:0 -16px}
 /* The hub: the list is the screen; a row opens its detail as the next screen. */
 .ib{display:block;min-height:0}
 .ib-list{border-right:0;border-bottom:0;min-height:calc(100dvh - 140px)}
 .ib-detail{display:none;padding:18px 16px 40px}
 .ib.is-detail .ib-list{display:none}.ib.is-detail .ib-detail{display:block}
 .ib-back{display:inline-block;font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:14px}
 .ib-detail h2{font-size:24px}
 .ib-top,.ib-sec,.ib-row,.ib-foot{padding-left:16px;padding-right:16px}
 .ib-top h1{font-size:24px}
 .ib-foot{margin-top:0;border-top:1px solid var(--line)}
 /* Commitments and permissions. */
 .cm-title{font-size:24px}
 .pm section{grid-template-columns:minmax(0,1fr)}
}
@media(min-width:701px){.tabbar,.money-switch,.you-links,.phone-brand,.ib-back{display:none}}
@media(max-width:700px){
 #thread-head.ca-head{top:calc(var(--safe-t,0px) + 52px)}
 body[data-view=commitments] .cm-title{display:none}
 .you-links a{flex-direction:column;align-items:flex-start;gap:2px}
 .ib-row strong{white-space:normal}
}
@media(max-width:700px){
 #thread-head h1{flex:0 1 auto;max-width:55%}
 #thread-head .ca-links{flex:1 1 auto;justify-content:flex-end;min-width:0}
 .utility-actions .household-control label{display:block;font-size:9px;letter-spacing:1.2px;color:var(--muted);margin:0}
 .utility-actions select{display:block!important;width:100%;max-width:none;margin:4px 0 8px;padding:8px;border:1px solid var(--line);border-radius:8px;font:14px var(--sans);background:#fff;color:var(--ink)}
}
@media(max-width:700px){#thread-head .ca-links{justify-content:flex-start;font-size:12px;gap:14px}#thread-head h1{max-width:45%}}
/* Phone: the conversation's title line is the title, the setup count and a ··· menu holding the rest. */
@media(max-width:700px){
 #thread-head h1{max-width:none;flex:1 1 auto}
 #thread-head .ca-links{flex:0 0 auto;overflow:visible;gap:10px;align-items:center}
 #thread-head #setup-link{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:4px 9px;background:#fff}
 .ca-more{position:relative}.ca-more>summary{list-style:none;cursor:pointer;width:32px;height:32px;border:1px solid var(--line);border-radius:999px;background:#fff;display:grid;place-items:center;font-size:16px;letter-spacing:1px;color:var(--ink);line-height:1}
 .ca-more>summary::-webkit-details-marker{display:none}
 .ca-more-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:200px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 36px #24302e18;padding:6px;z-index:40;display:grid}
 .ca-more-menu .ca-link,.ca-more-menu #thread-tools button{display:block;width:100%;text-align:left;padding:10px 12px;border:0;background:none;border-radius:8px;font:14px var(--sans);color:var(--ink)}
 .ca-more-menu #thread-tools{display:grid;margin:0}
 .ca-more-menu #thread-tools button[aria-label="Expand conversation"]{display:none}
 .ca-more-menu .ca-link:hover,.ca-more-menu #thread-tools button:hover{background:#f2f5f1}
 .cv .conversation-navigation,.cv .conversation-navigation.is-open{left:0;right:0}
}
/* The hand-off sheet: on a phone, a site that needs you is finished on a computer unless you insist. */
.handoff{position:fixed;inset:0;z-index:60;background:#14291f00;transition:background .28s ease;display:flex;align-items:flex-end;justify-content:center}
.handoff.is-in{background:#14291f99}
.handoff-sheet{width:100%;max-width:520px;background:var(--paper);border-radius:18px 18px 0 0;padding:22px 20px calc(22px + var(--safe-b,0px));transform:translateY(100%);transition:transform .28s ease;text-align:center}
.handoff.is-in .handoff-sheet{transform:none}
.handoff-mark{display:block;font-size:28px;color:var(--green);margin-bottom:8px;font-family:var(--serif)}
.handoff-sheet h2{font:400 24px/1.15 var(--serif);letter-spacing:-.4px;margin:0 0 10px}
.handoff-sheet p{font-size:14.5px;line-height:1.6;color:#3a4542;margin:0 0 18px}
.handoff-sheet .button{width:100%;margin:0;justify-content:center}.handoff-sheet .button.text{margin-top:10px;color:var(--muted)}
@media(min-width:701px){.handoff{align-items:center}.handoff-sheet{border-radius:18px;margin:20px}}
@media(prefers-reduced-motion:reduce){.handoff,.handoff-sheet{transition:none}}
@media(max-width:700px){.ca-more-menu #thread-tools{grid-template-columns:1fr;gap:0}}
/* Phone, the window opened anyway: no title line under it, a tighter top strip. */
@media(max-width:700px){
 body.browser-mode #thread-head{display:none}
 body.browser-mode .workspace{padding-bottom:0}
}

/* Onboarding dashboard (ops): the Hub inbox shape with a progress bar per row, the onboarding card's checklist, a transcript, and the ask box. */
.ops .ib-row{grid-template-columns:9px minmax(0,1fr) auto}
.ops .ib-row time{text-align:right;line-height:1.3}
.ops .ops-bar{margin:6px 0 0;height:3px}
.ops .ib-detail{max-width:760px}
.ops-id{font-size:13px}
.ops-sec{margin-top:26px}
.ops-sec .eyebrow{margin-bottom:8px}
.ops-sec .eyebrow.is-bad,.ops-bad{color:#a53e2a}
.ops-phases .ob-phase{margin:0}
.ops-phases .ob-phase header{display:flex;align-items:center;gap:10px}
.ops-phases .ob-phase ul{list-style:none;margin:0;padding:0}
.ops-phases .ob-phase li{display:flex;gap:10px;align-items:flex-start;padding:4px 0}
.ops-phases .ob-phase li p{font-size:12.5px;margin:0;color:var(--muted)}
.ops-phases .ob-phase li strong{font-size:13px;font-weight:600}
.ops-phases .ob-phase li em{font-size:11px;color:var(--muted);margin-left:6px;font-style:normal}
.ops-facts{margin:0;padding:12px 0}
.ops-list{list-style:none;margin:0;padding:0;font-size:13.5px}
.ops-list li{padding:8px 0;border-top:1px solid var(--line);line-height:1.45}
.ops-list li:first-child{border-top:0}
.ops-list li span{display:block;font-size:10px;letter-spacing:1.2px;font-weight:650;color:var(--muted);text-transform:uppercase}
.ops-list li small{display:block;font-size:12px;color:var(--muted)}
.ops-errors li span{color:#a53e2a}
.ops-turns{list-style:none;margin:0 0 12px;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--paper);max-height:420px;overflow:auto}
.ops-turns li{padding:10px 14px;border-top:1px solid #f0f3f0}
.ops-turns li:first-child{border-top:0}
.ops-turns li small{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
.ops-turns li p{font-size:13.5px;line-height:1.5;margin:0;white-space:pre-wrap;max-width:none}
.ops-turns li.person{background:#fafcf8}
.ops-turns li.is-error,.ops-turns li.is-blocked{background:#fbf1ee;border-left:3px solid #a53e2a}
.ops-ask textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font:14px/1.5 var(--sans);resize:vertical;background:var(--paper)}
.ops-ask .ib-act{margin-top:8px}
.ops-ask-note{font-size:12px;max-width:48ch}
.ops-qa{margin-bottom:10px}
.ops-q,.ops-a{padding:8px 12px;border-radius:10px;margin-bottom:6px;background:var(--pale)}
.ops-a{background:var(--paper);border:1px solid var(--line)}
.ops-a.is-bad{border-color:#a53e2a}
.ops-q small,.ops-a small{display:block;font-size:10px;letter-spacing:1.2px;font-weight:650;color:var(--muted)}
.ops-q p,.ops-a p{margin:2px 0 0;font-size:13.5px;line-height:1.5;white-space:pre-wrap;max-width:none}
@media (max-width:700px){.ops .ops-bar{display:none}.ops-turns{max-height:300px}}

/* Budget: "what is this?" on an unplanned transaction */
.mb-match{font:inherit;font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:4px 8px;max-width:190px}
.mb-match:disabled{opacity:.6}
.mb-match-every{display:inline-flex;gap:6px}
.mb-match-every button{font:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);cursor:pointer}
.mb-match-every button:first-child{background:var(--pale);border-color:var(--green)}

/* ---------------------------------------------------------------------------
   The agent holds the hand (ADR 0059): the screen side. W3C COGA patterns on the
   checklist card, the website card, the connect card and the browser window:
   one clear step, big targets and type, controls that stay put, feedback on
   every press, nothing that relies on memory.
   --------------------------------------------------------------------------- */
/* The checklist's current step: large, one sentence on what the button does, and a real button. */
.ob-now{gap:4px}
.ob-now-phase{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
.ob-now strong{font:400 19px/1.25 var(--serif);color:var(--ink)}
.ob-now-detail{margin:2px 0 0;font-size:13.5px;line-height:1.55;color:#3a4542}
.ob-now-what{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--muted)}
.ob-now .ob-do,.ob-phase .ob-do{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;margin-top:10px;border:0;border-radius:10px;background:var(--green);color:#fff;font:600 15px/1 var(--sans);cursor:pointer;white-space:nowrap}
.ob-now .ob-do:hover,.ob-phase .ob-do:hover{text-decoration:none;filter:brightness(1.06)}
.ob-now .ob-do:disabled,.ob-phase .ob-do:disabled{opacity:.75;cursor:default}
.ob-phase .ob-do{min-height:36px;padding:7px 14px;font-size:13px;margin-top:6px}
.ob-card .ob-actions .button.primary{min-height:40px;font-size:13px;padding:9px 14px}
/* The website card: bigger words and targets, one plan sentence, one button, the choice behind a disclosure. */
.site-card{font-size:15px;line-height:1.55;padding:16px 18px}
.site-card header strong{font-size:15px}.site-card header .muted{font-size:12.5px}
.site-card .button{min-height:44px;font-size:15px;padding:10px 18px}.site-card .button.text{min-height:auto;padding:4px 0}
.site-card .site-x{min-height:auto;font-size:18px;padding:2px 8px}
.site-card .q{font-size:13px}
.site-plan{margin:0 0 10px;color:var(--ink)}
.site-main{min-width:160px}
.site-feedback:empty{display:none}
.site-change{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}
.site-change>summary{cursor:pointer;font-size:13px;color:var(--muted);padding:6px 0;list-style:none;display:flex;align-items:center;gap:8px}
.site-change>summary::-webkit-details-marker{display:none}
.site-change>summary::before{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);margin-left:3px;flex-shrink:0;transition:transform .15s ease}
.site-change[open]>summary::before{transform:rotate(45deg)}
.site-runtime{padding:12px 14px;font-size:14px;min-height:44px}.site-runtime small{font-size:12.5px}
.site-code input,.site-cred input{font-size:17px;padding:11px 12px;min-height:44px}
/* The connect card: the window in the conversation is the one big action; the add-on is a quiet line for someone who already has it. */
.provider-actions .button{min-height:44px;font-size:15px;padding:10px 18px}.provider-actions .button.text{min-height:auto;padding:4px 0}
.provider-secondary{margin:12px 0 0!important;font-size:12.5px!important;color:var(--muted)!important}
.provider-secondary a,.provider-secondary .button.text{font-size:12.5px;color:var(--green);padding:0;margin:0;min-height:auto;vertical-align:baseline}
/* The browser window: the one main button keeps its place and size whatever it says; the private typing field is unmistakable. */
.bw-top .bw-main{min-width:168px;min-height:40px;font-size:13.5px;justify-content:center}
.bw-top .bw-main.primary{font-weight:600}
.bw-win .bp-keyrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;align-items:end;padding:12px 16px;background:#f3f8f1;border-top:2px solid #4d8a5d}
.bp-private{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:end;margin:0}
.bp-private label{display:contents}
.bp-private-label{grid-column:1/-1;font:600 15px/1.3 var(--sans);color:#214d2e}
.bp-private-help{grid-column:1/-1;font-size:12.5px;line-height:1.5;color:#3a4542}
.bp-private input{width:100%;min-height:46px;padding:11px 12px;border:1.5px solid #4d8a5d;border-radius:9px;font:16px var(--sans);background:#fff;box-sizing:border-box}
.bp-private .button{margin:0;min-height:46px;padding:10px 16px;font-size:14px}
.bp-keys-row{display:flex;gap:6px;align-items:center}.bp-keys-row .button{margin:0;min-height:40px;min-width:48px;padding:6px 10px;font-size:13px}
.retry-turn{margin:10px 0 0;min-height:40px;font-size:14px}
/* When the page is the person's, the private typing row sits under the frame, so the window gives up the height it needs: the row is never below the fold. */
.bw-win.is-yours{width:min(100%,calc((100dvh - 300px) * 1.5))}
@media(max-width:700px){.bw-win .bp-keyrow{grid-template-columns:minmax(0,1fr)}.bp-keys-row{flex-wrap:wrap}.bw-top .bw-main{min-width:0}}

/* Landing page, static in index.html (heycatch site audit, 2026-10-30): the pain block, the free agreement,
   who it is not for, and the three fair questions. The returning flag is set by boot.js. */
html.returning #landing{display:none}
.landing-pain{max-width:1120px;margin:0 auto;padding:44px 28px 8px;text-align:center}
.landing-pain ul{list-style:none;margin:0 auto;padding:0;max-width:52ch}
.landing-pain li{font:26px/1.3 var(--serif);letter-spacing:-.4px;color:#3a4542;padding:12px 0;border-top:1px solid var(--line)}
.landing-pain li:first-child{border-top:0}
.landing-position{font:600 17px/1.5 var(--sans);color:var(--ink);margin:22px auto 0;max-width:40ch}
.landing-agreement h2{max-width:12ch}
.landing-scope{max-width:1120px;margin:0 auto;padding:0 28px 48px}
.landing-scope p{font-size:15px;line-height:1.65;color:#3a4542;max-width:64ch;margin:0 auto;text-align:center}
.landing-scope strong{color:var(--ink)}
.landing-faq dl{margin:0;max-width:60ch}
.landing-faq dt{font:600 17px/1.4 var(--sans);color:var(--ink);margin:0 0 6px}
.landing-faq dd{margin:0 0 22px;font-size:16px;line-height:1.65;color:#3a4542}
.landing-faq dd:last-child{margin-bottom:0}
.landing-top nav a[href="#how"],.landing-top nav a[href="/support.html"]{display:none}
@media(min-width:901px){.landing-top nav a[href="#how"],.landing-top nav a[href="/support.html"]{display:inline}}
@media(max-width:900px){.landing-top .brand{white-space:nowrap}.landing-pain{padding:30px 20px 4px}.landing-pain li{font-size:21px}.landing-scope{padding:0 20px 36px}.landing-top nav{gap:12px;flex-wrap:wrap;justify-content:flex-end}.landing-top nav a[href="/letter.html"]{display:none}}
@media(max-width:600px){.landing-cta{flex-direction:column;gap:6px}.landing-hero-b .lede{font-size:16px}}
/* The personal site (app.allende.finance, sites/personal/landing.html). Scoped so allende.finance is untouched. */
/* .auth-screen centres a grid; the landing is block layout, and Chrome now applies the leftover justify-items to block boxes too, shrinking every later row to its content. */
.auth-screen.landing{justify-items:normal}
[data-site="personal"] .landing-hero-b h1,[data-site="personal"] .landing-signin .auth-card h2{text-wrap:balance}
[data-site="personal"] .landing-hero-b .lede{max-width:60ch;text-wrap:pretty}
[data-site="personal"] .landing-pain ul{max-width:34em}
[data-site="personal"] .landing-pain li{font-size:22px;line-height:1.35;padding:14px 0;text-wrap:balance}
[data-site="personal"] .landing-stage{margin:44px auto 64px}
[data-site="personal"] .hub-sample .dot.needs+div .when{color:var(--orange)}[data-site="personal"] .hub-sample .dot.ask+div .when{color:var(--blue)}
[data-site="personal"] .landing-three h3{text-wrap:balance}
@media(min-width:901px){[data-site="personal"] .landing-three p,[data-site="personal"] .landing-row p,[data-site="personal"] .landing-faq dd,[data-site="personal"] .landing-scope p{text-wrap:pretty}}
[data-site="personal"] .landing-price p:last-child{margin-top:0}
.landing-watch p:not(.eyebrow){font-size:16px;line-height:1.65;max-width:60ch;color:#3a4542}
@media(max-width:900px){[data-site="personal"] .landing-pain li{font-size:19px}[data-site="personal"] .landing-stage{margin-bottom:40px}[data-site="personal"] .landing-foot{padding:28px 20px 40px}[data-site="personal"] .landing-foot>span{display:block;width:100%}}
