:root{--paper:#f7f2e8;--paper-2:#eee4d3;--ink:#1a1a4e;--soft:#555269;--clay:#b95537;--gold:#c9862b;--line:rgba(26,26,78,.16);--serif:"Cormorant Garamond",Georgia,serif;--sans:"Hanken Grotesk",system-ui,sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}html{background:var(--paper)}body{margin:0;color:var(--ink);font-family:var(--sans);background:radial-gradient(circle at 82% 8%,rgba(201,134,43,.14),transparent 28rem),var(--paper);min-height:100vh}a{color:inherit}.member-header{min-height:72px;padding:14px clamp(20px,5vw,68px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(247,242,232,.92)}.member-header nav{display:flex;align-items:center;gap:18px}.member-brand{font:600 1.55rem/1 var(--serif);text-decoration:none}.member-link,.text-button{font:600 .88rem var(--sans);border:0;background:none;color:var(--ink);cursor:pointer;text-underline-offset:3px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:700;color:var(--clay);margin:0 0 .55rem}.auth-shell{min-height:calc(100vh - 72px);display:grid;place-items:center;padding:40px 20px}.auth-card{position:relative;width:min(480px,100%);padding:clamp(28px,6vw,54px);background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:0 24px 70px rgba(26,26,78,.1);overflow:hidden}.auth-card--invite{background:linear-gradient(145deg,#fffdf8 0%,#fff 58%,#f5ead7 100%);border-color:rgba(201,134,43,.34);box-shadow:0 28px 80px rgba(78,51,30,.15)}.auth-card--invite:before{content:"";position:absolute;inset:0 auto 0 0;width:7px;background:linear-gradient(var(--gold),var(--clay))}.auth-mark{display:none;width:52px;height:52px;margin-bottom:22px;border-radius:50%;place-items:center;background:rgba(201,134,43,.14)}.auth-card--invite .auth-mark{display:grid}.auth-mark span{width:16px;height:16px;border-radius:50%;background:var(--gold);box-shadow:0 -13px 0 -5px var(--ink),11px -6px 0 -5px var(--ink),11px 7px 0 -5px var(--ink),0 13px 0 -5px var(--ink),-11px 7px 0 -5px var(--ink),-11px -6px 0 -5px var(--ink)}h1,h2{font-family:var(--serif);line-height:1.03;letter-spacing:-.02em;margin:.2rem 0}.auth-card h1{font-size:clamp(2.4rem,7vw,3.8rem)}.auth-card>p{color:var(--soft);line-height:1.6}.auth-form{display:grid;gap:16px;margin:26px 0 14px}.auth-form label{display:grid;gap:7px;font-size:.85rem;font-weight:700}.auth-form input{width:100%;padding:.95rem 1rem;border:1px solid var(--line);border-radius:12px;background:#fff;font:1rem var(--sans);color:var(--ink)}.auth-form input:focus{outline:3px solid rgba(201,134,43,.22);border-color:var(--gold)}.auth-form button{padding:1rem;border:0;border-radius:999px;background:var(--clay);color:#fff;font-weight:700;cursor:pointer;box-shadow:0 9px 22px rgba(185,85,55,.2)}.auth-form button:hover{background:#a94a30}.auth-form button:disabled{opacity:.68;cursor:wait}.field-help{margin:-7px 0 0;color:var(--soft);font-size:.8rem;line-height:1.45}.auth-form--small{padding-top:18px;border-top:1px solid var(--line)}.auth-status{min-height:1.5em;color:var(--clay)!important;font-weight:600}.auth-help{font-size:.84rem}.invite-success{padding:18px 0 4px}.invite-success h2{font-size:clamp(2.8rem,8vw,4.4rem);color:var(--ink)}.invite-success p:not(.eyebrow){color:var(--soft);line-height:1.6}.invite-success a{display:inline-block;margin-top:8px;padding:.85rem 1.2rem;border-radius:999px;background:var(--clay);color:#fff;text-decoration:none;font-weight:700}.member-main{width:min(1180px,calc(100% - 40px));margin:auto;padding:clamp(48px,8vw,96px) 0}.member-welcome{max-width:780px;margin-bottom:48px}.member-welcome h1{font-size:clamp(3rem,8vw,5.5rem)}.member-welcome>p:not(.eyebrow){font-size:1.1rem;line-height:1.6;color:var(--soft)}.member-plan,.member-state{display:inline-block;padding:.4rem .65rem;border-radius:999px;background:var(--paper-2);font-size:.75rem;font-weight:700}.member-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.member-card{padding:28px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.68)}.member-card--wide{grid-column:1/-1;background:var(--ink);color:#fff}.member-card h2,.member-section h2{font-size:clamp(1.8rem,4vw,2.8rem)}.member-card p:not(.eyebrow){line-height:1.55;color:var(--soft)}.member-card--wide p:not(.eyebrow){color:rgba(255,255,255,.78)}.member-card a{display:inline-block;margin-top:8px;font-weight:700}.member-section{margin-top:64px;padding-top:36px;border-top:1px solid var(--line)}.room-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:24px}.room-card{display:grid;gap:7px;padding:22px;background:#fff;border:1px solid var(--line);border-radius:14px;text-decoration:none}.room-card b{font:600 1.5rem var(--serif)}.room-card span{color:var(--soft);line-height:1.45}.account-section{display:flex;justify-content:space-between;gap:30px;align-items:end}.account-links{display:flex;gap:18px;flex-wrap:wrap;font-size:.87rem;font-weight:600}.account-links .text-button{padding:0;text-decoration:underline}
@media(max-width:680px){.member-header{padding:14px 20px}.member-link{display:none}.member-grid,.room-grid{grid-template-columns:1fr}.account-section{display:block}.account-links{display:grid;margin-top:22px}.member-main{width:min(100% - 28px,1180px)}}
.welcome-main{width:min(920px,calc(100% - 40px));margin:auto;padding:clamp(36px,6vw,72px) 0}.welcome-intro{max-width:720px;margin:0 auto 30px;text-align:center}.welcome-intro h1{font-size:clamp(3rem,7vw,5.2rem);text-wrap:balance}.welcome-intro p{margin:.45rem auto;color:var(--soft);font-size:1.02rem;line-height:1.55;text-wrap:pretty}.onboarding-card{width:min(720px,100%);margin:auto;padding:clamp(24px,5vw,42px);background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 24px 70px rgba(26,26,78,.09)}.onboarding-progress{margin:0 0 .65rem;color:var(--clay);font-size:.76rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.onboarding-card h2{font-size:clamp(2rem,5vw,3rem);text-wrap:balance}.onboarding-help{margin:.7rem 0 0;color:var(--soft);line-height:1.55}.onboarding-choices{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 18px}.choice-button{border:1px solid var(--line);border-radius:999px;padding:.72rem 1rem;background:var(--paper);color:var(--ink);font:650 .9rem var(--sans);cursor:pointer}.choice-button:hover,.choice-button:focus-visible{border-color:var(--gold);background:#fff9ed;outline:3px solid rgba(201,134,43,.16)}.choice-button[aria-pressed="true"]{border-color:var(--ink);background:var(--ink);color:#fff}.welcome-response{padding-top:4px}.welcome-response textarea{width:100%;resize:vertical;min-height:88px;border:1px solid var(--line);border-radius:12px;padding:13px;font:1rem/1.5 var(--sans);color:var(--ink)}.welcome-response textarea:focus{outline:3px solid rgba(201,134,43,.18);border-color:var(--gold)}.welcome-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:10px}.primary-button,.secondary-button{border:0;border-radius:999px;padding:.78rem 1.05rem;font:700 .86rem var(--sans);cursor:pointer}.primary-button{background:var(--ink);color:#fff}.secondary-button{background:var(--paper-2);color:var(--ink)}.primary-button:disabled,.secondary-button:disabled{opacity:.55;cursor:wait}.voice-status{min-height:1.3em;font-size:.8rem;color:var(--soft);margin:.72rem 0}.onboarding-panel{margin:24px 0 18px;padding:22px;border:1px solid rgba(201,134,43,.34);border-radius:16px;background:#fff9ed}.onboarding-panel h3{margin:0 0 .6rem;font:600 1.7rem/1.1 var(--serif)}.onboarding-panel p{margin:.55rem 0;color:var(--soft);line-height:1.55}.onboarding-panel ul{margin:.8rem 0;padding-left:1.2rem;color:var(--soft);line-height:1.55}.onboarding-panel__actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.onboarding-panel__actions a,.onboarding-panel__actions button{display:inline-block;text-decoration:none}.memory-list{display:grid;gap:9px;margin:15px 0;padding:0;list-style:none}.memory-list li{padding:11px 13px;border-radius:10px;background:#fff;border:1px solid var(--line)}.display-name{margin:14px 0;padding:14px;border-radius:10px;background:#fff;font-weight:700}.welcome-exits{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:20px;padding-top:18px;border-top:1px solid var(--line);font-size:.82rem}.welcome-exits .text-button,.welcome-exits a{font-size:.82rem}.onboarding-privacy{margin:16px 0 0;font-size:.78rem;color:var(--soft)}.auth-status:empty{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:680px){.welcome-main{width:min(100% - 28px,920px);padding:28px 0 48px}.welcome-intro{text-align:left;margin-bottom:22px}.welcome-intro h1{font-size:clamp(2.8rem,15vw,4.2rem)}.onboarding-card{padding:24px 19px;border-radius:18px}.onboarding-choices{display:grid}.choice-button{text-align:left}.welcome-actions{justify-content:stretch}.welcome-actions button{flex:1}.onboarding-panel__actions{display:grid}.onboarding-panel__actions a,.onboarding-panel__actions button{text-align:center;width:100%}}
.welcome-main{padding:clamp(22px,3vw,38px) 0 56px}.welcome-intro{margin-bottom:18px}.welcome-intro h1{font-size:clamp(2.8rem,5vw,4.2rem);margin:0 0 .45rem}.welcome-intro p{margin:.18rem auto;font-size:.98rem;line-height:1.42}.onboarding-card{padding:clamp(24px,4vw,34px)}.welcome-response textarea[rows="1"]{min-height:52px;resize:none}@media(max-width:680px){.welcome-main{padding:20px 0 44px}.welcome-intro{margin-bottom:16px}.welcome-intro h1{font-size:clamp(2.7rem,13vw,3.7rem)}}

/* ===== Phase 2 (2026-08-13): the lobby speaks the public site's language ===== */
:root{--paper:#FBF3E8;--paper-2:#F5E8D4;--ink:#2B2013;--soft:#5D4F3E;--clay:#A84214;--gold:#C79A52;--line:rgba(58,40,16,.18)}
.member-header{background:rgba(251,243,232,.94)}
.auth-card,.room-card,.member-card{background:#FFFDF8}
.member-card--wide{background:var(--ink)}
.room-grid{grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.room-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.room-grid{grid-template-columns:1fr}}
.room-card{position:relative;gap:9px;padding:24px;border-radius:16px;box-shadow:8px 9px 0 -2px rgba(43,32,19,.10);transition:transform .18s,box-shadow .18s}
a.room-card:hover{transform:translate(-2px,-2px);box-shadow:11px 12px 0 -2px rgba(43,32,19,.14)}
.room-card b{font-size:1.6rem;letter-spacing:-.01em}
.room-tag{display:inline-block;width:max-content;padding:.28rem .6rem;border-radius:999px;font:700 .68rem/1 var(--sans);letter-spacing:.09em;text-transform:uppercase}
.room-tag--open{background:rgba(138,101,36,.14);color:#8A6524}
.room-tag--soon{background:var(--paper-2);color:var(--soft)}
.room-card--soon{background:rgba(255,253,248,.6);box-shadow:none}
.room-card--soon b,.room-card--soon span{opacity:.75}
.room-note{font-size:.78rem;color:var(--soft);opacity:.85}
.member-state{background:var(--paper-2)}
.member-plan{background:rgba(199,154,82,.18);color:#7E300C}

/* ===== the front desk (member Concierge) ===== */
.desk-card{display:grid;gap:14px}
.desk-thread{display:grid;gap:9px;max-height:56vh;overflow-y:auto;padding-right:4px}
.desk-q{font:600 1.6rem/1.2 var(--serif);margin:.2rem 0 .4rem}
.desk-msg{margin:0;padding:.62rem .85rem;border-radius:13px;font-size:.95rem;line-height:1.5;max-width:92%}
.desk-msg--me{background:var(--paper-2);justify-self:end}
.desk-msg--c{background:rgba(199,154,82,.16);justify-self:start}
.desk-chips{display:flex;flex-wrap:wrap;gap:8px;margin:.35rem 0}
.desk-chips button{border:1px solid var(--line);border-radius:999px;padding:.6rem .9rem;background:#FFFDF8;color:var(--ink);font:650 .86rem var(--sans);cursor:pointer}
.desk-chips button:hover,.desk-chips button:focus-visible{border-color:var(--gold);background:#FFF6E6;outline:3px solid rgba(199,154,82,.18)}
.desk-chips--quick button{font-style:italic}
.desk-block{border-left:2px solid var(--gold);padding:.4rem 0 .4rem .85rem;display:grid;gap:6px}
.desk-label{font:700 .68rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--clay)}
.desk-act{margin:0;font:600 1.05rem/1.45 var(--serif)}
.desk-found{margin:0;padding-left:1.1rem;font-size:.9rem;line-height:1.55}
.desk-found a{color:var(--clay);font-weight:700}
.desk-note{margin:0;font-size:.76rem;color:var(--soft)}
.desk-query{margin:0}
.desk-query code{display:block;padding:.5rem .7rem;background:var(--paper-2);border-radius:8px;font-size:.85rem;word-break:break-word;user-select:all}
.desk-steps{margin:0;padding-left:1.2rem;font-size:.9rem;line-height:1.55}
.desk-route{margin:.2rem 0;font-size:.92rem}
.desk-route a{color:var(--clay);font-weight:700}
.desk-pending{margin:.3rem 0 0;font-size:.8rem;color:var(--soft)}
.desk-reset{justify-self:start;font-size:.8rem;opacity:.75}
.desk-ask{display:flex;gap:9px}
.desk-ask input{flex:1;min-width:0;padding:.85rem .95rem;border:1px solid var(--line);border-radius:12px;background:#fff;font:1rem var(--sans);color:var(--ink)}
.desk-ask input:focus{outline:3px solid rgba(199,154,82,.2);border-color:var(--gold)}
.desk-wraplist{display:grid;gap:8px;margin:.4rem 0 .8rem}
.desk-wrapitem{display:flex;gap:.55rem;align-items:flex-start;font-size:.92rem;line-height:1.45;cursor:pointer}
.desk-wrapitem input{margin-top:.2rem;accent-color:var(--clay)}

/* no word stands alone in the member area */
h1,h2,h3,.auth-card h1,.member-welcome h1,.welcome-intro h1{text-wrap:balance}
p,li,.member-card p,.onboarding-help,.welcome-intro p{text-wrap:pretty}

.desk-invite{margin:0 auto 14px;width:min(720px,100%);padding:16px 20px;border:1px solid rgba(199,154,82,.4);border-radius:14px;background:#FFF6E6}
.desk-invite p{margin:0 0 .6rem;font-size:.92rem;line-height:1.5}
.desk-invite .welcome-actions{justify-content:flex-start;margin:0}
.desk-invite a{text-decoration:none}
/* room banners on the member map */
.room-card{overflow:hidden}
.room-card__img{width:calc(100% + 48px);margin:-24px -24px 10px;display:block;height:118px;object-fit:cover;object-position:center;border-bottom:1px solid var(--line)}
.room-card--soon .room-card__img{opacity:.65;filter:saturate(.8)}
@media(max-width:600px){.room-card__img{height:100px}}
/* the welcome line is ONE line: size down until it fits, never wrap the name.
   Lobby only — on room pages (studio, account, record) the h1 is a full
   sentence, and nowrap+overflow:hidden was truncating it mid-word. */
.member-welcome h1{font-size:clamp(1.9rem,4.2vw,3.4rem);max-width:100%}
body[data-auth-page="member"] .member-welcome h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.welcome-intro h1{font-size:clamp(1.9rem,4vw,3.2rem)}
/* your saved things: what the Villager kept, and the way to unkeep it */
.saved-cards{display:grid;gap:10px;margin:.2rem 0 .6rem}
.saved-card-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.saved-card{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#FFFDF8}
.saved-card__text{margin:0!important;font-size:.94rem;line-height:1.45;color:var(--ink)!important}
.saved-card__meta{display:flex;gap:12px;align-items:baseline;justify-content:space-between;margin-top:.4rem;font-size:.76rem;color:var(--soft)}
.saved-card__remove{font-size:.76rem;text-decoration:underline;opacity:.8;padding:.55rem 0 .55rem .6rem;margin:-.55rem 0}
.saved-card__remove:hover,.saved-card__remove:focus-visible{opacity:1;color:var(--clay)}
.saved-card__status{margin:.35rem 0 0!important;font-size:.82rem;font-weight:650;color:var(--clay)!important}
.saved-card__actions{display:flex;gap:14px;margin-top:.4rem}
.saved-card__actions .text-button{font-size:.8rem;text-decoration:underline}
.saved-cards .text-button{justify-self:start;font-size:.8rem;text-decoration:underline}
.member-card--saved .room-note{margin:0}
/* keeping what the desk produced, and showing it again in the lobby */
.desk-end{display:grid;gap:6px;padding:6px 0}
.desk-end .welcome-actions{justify-content:flex-start}
.desk-end .welcome-actions a{text-decoration:none;text-align:center}
.desk-wraplist+.welcome-actions{justify-content:flex-start}
.desk-wrapnote{display:block;margin-top:.15rem;font-size:.76rem;color:var(--soft)}
.saved-card__detail{margin:.5rem 0 0;padding:.6rem .7rem;border-left:2px solid rgba(199,154,82,.55);background:rgba(245,232,212,.45);border-radius:0 8px 8px 0}
.saved-card__query{margin:0!important;font-size:.8rem}
.saved-card__query code{word-break:break-word;font-size:.78rem}
.saved-card__note{margin:.35rem 0 0!important;font-size:.74rem;color:var(--soft)!important}
.saved-card__steps,.saved-card__places{margin:.4rem 0 0;padding-left:1.1rem;font-size:.8rem;line-height:1.45;color:var(--soft)}
.saved-card__steps li,.saved-card__places li{margin:.2rem 0}
.saved-card__places a{font-weight:650;color:var(--ink)}
/* the Record room: one wide light card, the note reads quietly */
.member-card--record{grid-column:1/-1}
.record-note{max-width:640px;line-height:1.55;color:var(--soft)}
/* the Record leaves with her: two downloads, one row */
.record-actions{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 12px}
.record-actions .secondary-button{text-decoration:none;display:inline-block}
/* the HUSH shelf: honest entries, what it is good for and where it stops */
.shelf{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:20px}
.shelf-item{display:grid;gap:7px;align-content:start;padding:22px;background:#FFFDF8;border:1px solid var(--line);border-radius:14px}
.shelf-item h3{margin:0;font:600 1.35rem/1.15 var(--serif)}
.shelf-item h3 a{text-decoration-thickness:1px;text-underline-offset:3px}
.shelf-item p{margin:0;color:var(--soft);line-height:1.5;font-size:.92rem}
.shelf-org{font-size:.78rem!important;font-weight:650;color:var(--clay)!important}
.shelf-limits{font-size:.84rem!important}
.shelf-meta{font-size:.76rem!important;opacity:.85}
.shelf-item--soon{background:rgba(255,253,248,.6)}
.shelf-item .room-tag{justify-self:start}
@media(max-width:680px){.shelf{grid-template-columns:1fr}}
/* My Practice: what she chose to keep within reach */
.member-card--desk{grid-column:auto}
.member-card--practice{display:grid;gap:10px;align-content:start}
.practice-head{display:flex;justify-content:space-between;gap:14px;align-items:start}
.practice-head h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.practice-head>div>p:not(.eyebrow){margin:.2rem 0 0;color:var(--soft);font-size:.92rem}
.practice-toggle{display:flex;gap:6px;align-items:center;font-size:.82rem;color:var(--soft);white-space:nowrap;padding-top:.4rem}
.practice-toggle .text-button{font-size:.82rem}
.practice-toggle .text-button[aria-pressed="true"]{text-decoration:underline;color:var(--clay)}
.practice-body{display:grid;gap:6px}
.practice-note{margin:0;color:var(--soft);font-size:.9rem;line-height:1.5}
.practice-group{margin:.5rem 0 0;font:700 .72rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--clay)}
.practice-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.practice-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#FFFDF8}
.practice-check{flex:0 0 auto;width:22px;height:22px;margin-top:.1rem;border:1.5px solid var(--line);border-radius:50%;background:#fff;color:var(--clay);font-size:.8rem;line-height:1;cursor:pointer;display:grid;place-items:center}
.practice-check[aria-pressed="true"]{border-color:var(--clay);background:rgba(168,66,20,.08)}
.practice-item__main{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;font-size:.92rem}
.practice-title{font-weight:650}
.practice-link{font-size:.82rem;font-weight:650}
.practice-when,.practice-done{font-size:.76rem;color:var(--soft)}
.practice-done{color:var(--clay);font-weight:650}
.practice-tools{flex-basis:100%;font-size:.76rem;color:var(--soft)}
.practice-tools .text-button{font-size:.76rem;text-decoration:underline;opacity:.85}
.practice-week{display:grid;gap:8px}
.practice-day{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#FFFDF8}
.practice-chip,.practice-chip--plain{display:inline-block;margin:.25rem .4rem 0 0;font-size:.82rem;color:var(--ink)}
.village-dates{margin-top:6px;padding-top:12px;border-top:1px solid var(--line);display:grid;gap:6px}
.village-dates__list{display:grid;gap:10px}
.village-date{display:grid;gap:3px;font-size:.92rem}
.village-date b{font-weight:650}
.village-date__actions{display:flex;gap:14px;align-items:baseline;font-size:.8rem}
.village-date__actions .text-button{font-size:.8rem;text-decoration:underline}
.room-add{justify-self:start;text-decoration:underline;font-size:.8rem;color:var(--clay);text-align:left;padding:0}
.room-add--ondark{color:#F5E8D4}
.saved-card__day{width:max-content;margin-top:.4rem;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;font:1rem var(--sans);color:var(--ink);background:#fff}
@media(max-width:680px){.practice-head{flex-direction:column}.practice-toggle{padding-top:0}}
/* the Concierge lives on the member home: no hallway between her and help */
.member-card--desk-embed{display:grid;gap:10px;align-content:start;background:rgba(30,19,9,.94);border:1px solid rgba(247,244,238,.2);border-radius:22px;color:#F7F4EE;box-shadow:0 30px 60px -24px rgba(30,19,9,.4)}
.desk-embed-head{display:flex;align-items:center;gap:.7rem;padding-bottom:.9rem;border-bottom:1px solid rgba(247,244,238,.14)}
.desk-embed-head strong{font-family:var(--serif);font-size:1.15rem;display:block;color:#FBF9F4}
.desk-embed-avatar{width:38px;height:38px;border-radius:50%;background:#FBF9F4;display:grid;place-items:center;flex:0 0 auto}
.desk-embed-live{font-size:.74rem;color:rgba(247,244,238,.62);display:flex;align-items:center;gap:.4em}
.desk-embed-live i{width:7px;height:7px;border-radius:50%;background:#8FBF7F;display:inline-block}
.member-card--desk-embed .desk-thread{max-height:430px;overflow-y:auto;display:grid;gap:9px;padding-right:2px}
.member-card--desk-embed .desk-q{color:#FBF9F4}
.member-card--desk-embed p:not(.eyebrow){color:#F7F4EE}
.member-card--desk-embed .desk-msg{color:#FBF9F4}
.member-card--desk-embed .desk-msg--c{background:rgba(199,154,82,.26)}
.member-card--desk-embed .desk-act,.member-card--desk-embed .desk-found,.member-card--desk-embed .desk-steps,.member-card--desk-embed .desk-route{color:#F7F4EE}
.member-card--desk-embed .desk-msg--me{background:rgba(247,244,238,.14)}
.member-card--desk-embed .desk-msg--c{background:rgba(199,154,82,.2)}
.member-card--desk-embed .desk-chips button{background:rgba(247,244,238,.09);border:1px solid rgba(247,244,238,.22);color:#F7F4EE}
.member-card--desk-embed .desk-chips button:hover,.member-card--desk-embed .desk-chips button:focus-visible{background:var(--clay);border-color:var(--clay);color:#fff;outline:none}
.member-card--desk-embed .desk-note,.member-card--desk-embed .desk-pending,.member-card--desk-embed .onboarding-privacy{color:rgba(247,244,238,.72)!important}
.member-card--desk-embed .desk-query code{background:rgba(247,244,238,.12);color:#F7F4EE}
.member-card--desk-embed .desk-found a{color:#E9B872}
.member-card--desk-embed .desk-label{color:#E9B872}
.member-card--desk-embed .text-button{color:#F7F4EE}
.member-card--desk-embed .desk-wrapitem{color:#F7F4EE}
.member-card--desk-embed .desk-ask input{background:#FFFDF8;border-color:rgba(247,244,238,.3)}
.member-card--desk-embed .onboarding-privacy{margin:2px 0 0;font-size:.76rem}
.member-card--desk-embed .desk-invite{width:auto;margin:0 0 6px;color:var(--ink)}
.account-links .member-plan{font-size:.75rem}
/* the welcome line under the greeting holds one line on desktop */
@media(min-width:921px){body[data-auth-page="member"] .member-welcome{max-width:none}body[data-auth-page="member"] .member-welcome>p:not(.eyebrow){white-space:nowrap}}
/* In the Village: quiet links, aligned, unbolded */
.village-date__actions .text-button{padding:0;font-weight:400}
.village-date{gap:4px}
.village-date__actions{gap:16px}
.member-card--desk-embed .desk-ask .primary-button{background:var(--clay)}
.member-card--desk-embed .desk-ask .primary-button:hover{background:#8f3811}
/* session end: what she kept, and what she wants in front of her again */
.desk-comeback{margin:.6rem 0 .2rem;display:grid;gap:6px}
.desk-comeback .desk-q{font-size:1.15rem;margin:0}
.desk-comeback__list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.desk-comeback__list li{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;font-size:.9rem;line-height:1.45;min-width:0}
.desk-comeback__list li span{flex:1 1 12rem;min-width:0;overflow-wrap:anywhere}
.desk-comeback__list .text-button{font-size:.8rem;text-decoration:underline;white-space:nowrap}
.desk-comeback__list .text-button[disabled]{text-decoration:none;opacity:.75;cursor:default}
.member-card--desk-embed .desk-comeback__list li{color:#F7F4EE}
/* what happened: her words on a thing she acted on */
.saved-card__note-shown{margin:.5rem 0 0;padding:.5rem .7rem;border-left:2px solid var(--clay);background:rgba(168,66,20,.06);border-radius:0 8px 8px 0}
.saved-card__notehead{margin:0!important;font:700 .68rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--clay)!important}
.saved-card__notebody{margin:.2rem 0 0!important;font-size:.9rem;line-height:1.45;color:var(--ink)!important;white-space:pre-wrap}
.saved-card__noteedit{display:grid;gap:8px;margin-top:.5rem}
.saved-card__notelabel{display:grid;gap:5px;font-size:.8rem;font-weight:650}
.saved-card__notelabel textarea{width:100%;resize:vertical;border:1px solid var(--line);border-radius:10px;padding:10px;font:.95rem/1.5 var(--sans);color:var(--ink);background:#fff}
.saved-card__notelabel textarea:focus{outline:3px solid rgba(199,154,82,.22);border-color:var(--gold)}

/* short standalone lines hold together on desktop instead of breaking mid-thought */
.shelf-close{max-width:none;margin-top:18px}
@media(min-width:921px){.shelf-close{white-space:nowrap}}
/* the account page: facts, then two erasures that are never one click */
.account-actions{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0 6px;align-items:center}
.account-actions .secondary-button{text-decoration:none;display:inline-block}
.account-danger{color:var(--clay);text-decoration:underline;font-weight:650}
.account-danger[disabled]{color:var(--soft);text-decoration:none;cursor:default;opacity:.7}
.account-danger-form{display:grid;gap:8px;margin-top:4px}
.account-danger-form input{width:min(220px,100%);padding:.6rem .7rem;border:1px solid var(--line);border-radius:10px;font:1rem var(--sans);color:var(--ink);background:#fff;letter-spacing:.08em}
.account-danger-form input:focus{outline:3px solid rgba(168,66,20,.25);border-color:var(--clay)}
.account-error{color:var(--clay)!important;font-weight:650}
.member-card h3{margin:0 0 .3rem;font:600 1.5rem/1.15 var(--serif)}

/* ============================================================
   Member polish pass (2026-08-15, JoYi's GO): the member area
   earns the landing's restraint. Status labels instead of pills,
   real elevation instead of a hard offset, scroll reveal, glass.
   Appended per house rules: overrides only, nothing above moved.
   ============================================================ */

/* 1. status reads as a label, not a badge (the landing's treatment) */
.room-tag,
.shelf-item .room-tag{
  background:none!important;
  padding:0!important;
  border-radius:0!important;
  font:700 .68rem/1 var(--sans);
  letter-spacing:.11em;
  text-transform:uppercase;
  margin-bottom:.15rem;
}
.room-tag--open{color:#6E7F55!important}
.room-tag--soon{color:#99876F!important}

/* 2. elevation, not stickers */
.room-card,
.shelf-item{
  box-shadow:0 18px 40px -26px rgba(43,32,19,.45), 0 2px 6px -4px rgba(43,32,19,.25);
  border-color:rgba(58,40,16,.13);
  transition:transform .28s cubic-bezier(.2,.8,.2,1), box-shadow .28s cubic-bezier(.2,.8,.2,1), border-color .28s ease;
}
.room-card:hover,
.room-card:focus-visible,
.shelf-item:hover{
  transform:translateY(-3px);
  box-shadow:0 30px 60px -28px rgba(43,32,19,.5), 0 3px 10px -5px rgba(43,32,19,.28);
  border-color:rgba(199,154,82,.5);
}
.member-card{
  box-shadow:0 20px 46px -30px rgba(43,32,19,.4);
  border-color:rgba(58,40,16,.13);
}
.member-card--desk-embed{
  box-shadow:0 42px 84px -30px rgba(30,19,9,.55), 0 4px 14px -8px rgba(30,19,9,.4);
}

/* 3. the light layer: cards sit on the ground, not in it */
.member-card:not(.member-card--wide):not(.member-card--desk-embed){
  background:rgba(255,253,248,.82);
  -webkit-backdrop-filter:blur(14px) saturate(1.08);
  backdrop-filter:blur(14px) saturate(1.08);
}
.room-card:not(.room-card--soon){
  background:rgba(255,253,248,.88);
  -webkit-backdrop-filter:blur(10px) saturate(1.05);
  backdrop-filter:blur(10px) saturate(1.05);
}

/* 4. scroll reveal, the landing's own curve and timing */
.pv-reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1);transition-delay:var(--d,0s)}
.pv-reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .pv-reveal{opacity:1;transform:none;transition:none}
  .room-card,.shelf-item{transition:none}
}

/* 5. buttons with intention: primary stays round, secondary gets a hairline */
.secondary-button{
  border-radius:10px;
  border:1px solid rgba(58,40,16,.22);
  background:transparent;
  color:var(--ink);
  font-weight:650;
  transition:border-color .2s ease,background .2s ease,transform .2s ease;
}
.secondary-button:hover,.secondary-button:focus-visible{
  border-color:var(--clay);
  background:rgba(168,66,20,.06);
  transform:translateY(-1px);
}
.primary-button{box-shadow:0 10px 24px -12px rgba(168,66,20,.55)}

/* 6. a scrim so titles never fight the photograph */
.room-card{position:relative}
.room-card__img{position:relative}
.room-card__img+*{position:relative}
.room-card:before{
  content:"";position:absolute;left:0;right:0;top:0;height:130px;
  background:linear-gradient(to bottom,rgba(43,32,19,0) 62%,rgba(255,253,248,.85) 100%);
  pointer-events:none;z-index:1;
}
@media(max-width:600px){.room-card:before{height:112px}}
.room-card>*:not(.room-card__img){position:relative;z-index:2}
/* ============================================================================
   MEMBER LOBBY — FOUNDATION ONLY
   Navigation bar and colour. Nothing else is touched: no hero, no cards,
   no grid, no spacing, no content. Every value below is measured from
   thepracticevillage.org, not approximated.
   ============================================================================ */

/* ---------------------------------------------------------------------------
   COLOUR — the ground
   The lobby was painting its own gradient: radial-gradient(circle at 82% 8%,
   rgba(201,134,4,...)) — a single gold circle top-right. That is the odd beige.
   The landing uses two washes, gold from the top-left and CLAY from the right.
   The clay wash is where the warmth in the landing's paper comes from.
   --------------------------------------------------------------------------- */
body[data-auth-page="member"]{
  background:
    radial-gradient(120% 80% at 12% -5%, rgba(199,154,82,.20), transparent 55%),
    radial-gradient(120% 80% at 100% 8%, rgba(168,66,20,.10), transparent 50%),
    #FBF3E8 !important;
}

/* the one measured contrast failure, shared with the landing */
:root{ --ink-faint:#6E5F4A; }

/* ---------------------------------------------------------------------------
   NAVIGATION — exact parity with the landing's .nav
   landing: sticky · 71px · padding 14.4px 64px · flex gap 32px
            bg cream .84 · backdrop blur(9px)
            border-bottom 1.5px transparent, line appears on scroll
   lobby was: static · no blur · bg .94 · a permanent 1px line
   --------------------------------------------------------------------------- */
.member-header{
  position:sticky !important; top:0; z-index:100;
  height:71px !important;
  padding:14.4px 64px !important;
  display:flex !important; align-items:center !important; gap:32px !important;
  background:rgba(251,243,232,.84) !important;
  -webkit-backdrop-filter:blur(9px) !important;
  backdrop-filter:blur(9px) !important;
  border-bottom:1.5px solid transparent !important;
  transition:border-color .3s ease !important;
}
.member-header.is-stuck{ border-bottom-color:rgba(58,40,16,.18) !important; }

/* ---------------------------------------------------------------------------
   THE BRAND — this is where the orange comes back.
   The landing's brand is a 34px mark of six navy dots around a CLAY centre,
   then the wordmark in Cormorant 21.6px/600, NAVY #1A1A4E.
   The lobby had no mark at all and set the wordmark in brown at 24.8px.
   The mark is decoration, so it is added as a background image: no markup
   change, no new content, nothing moved.
   --------------------------------------------------------------------------- */
.member-brand{
  display:inline-flex !important; align-items:center !important;
  gap:8.8px !important;
  font-family:"Cormorant Garamond",Georgia,serif !important;
  font-size:21.6px !important;
  font-weight:600 !important;
  color:#1A1A4E !important;
  text-decoration:none !important;
  line-height:1 !important;
}
.member-brand::before{
  content:"" !important;
  width:34px !important; height:34px !important; flex:0 0 34px !important;
  background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%20width%3D%2234%22%20height%3D%2234%22%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%228%22%20r%3D%222.8%22%20fill%3D%22%231A1A4E%22%2F%3E%3Ccircle%20cx%3D%2230.4%22%20cy%3D%2214%22%20r%3D%222.8%22%20fill%3D%22%231A1A4E%22%2F%3E%3Ccircle%20cx%3D%2230.4%22%20cy%3D%2226%22%20r%3D%222.8%22%20fill%3D%22%231A1A4E%22%2F%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%2232%22%20r%3D%222.8%22%20fill%3D%22%231A1A4E%22%2F%3E%3Ccircle%20cx%3D%229.6%22%20cy%3D%2226%22%20r%3D%222.8%22%20fill%3D%22%231A1A4E%22%2F%3E%3Ccircle%20cx%3D%229.6%22%20cy%3D%2214%22%20r%3D%222.8%22%20fill%3D%22%231A1A4E%22%2F%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%2220%22%20r%3D%225.5%22%20fill%3D%22%23A84214%22%2F%3E%3C%2Fsvg%3E") no-repeat center/contain !important;
}

/* ---------------------------------------------------------------------------
   NAV LINKS — the landing's exact treatment
   landing: Hanken 13.76px / 600 / #5D4F3E / no underline / gap 12.8px
   lobby was: 14.08px / 600 / #2B2013 / UNDERLINED
   --------------------------------------------------------------------------- */
.member-header nav{
  margin-left:auto !important;
  display:flex !important; align-items:center !important;
  gap:12.8px !important;
}
.member-header .member-link,
.member-header #logoutButton,
.member-header .text-button{
  font-family:"Hanken Grotesk",system-ui,sans-serif !important;
  font-size:13.76px !important;
  font-weight:600 !important;
  color:#5D4F3E !important;
  text-decoration:none !important;
  background:none !important;
  border:0 !important;
  padding:0 !important;
  cursor:pointer;
  transition:color .2s ease;
}
.member-header .member-link:hover,
.member-header #logoutButton:hover{ color:#2B2013 !important; }

/* ============================================================================
   COMPOSITION — landing parity (2026-08-15)
   Rhythm, headline scale, and one card treatment. No content, no grid changes.
   ============================================================================ */

/* 1. HEADLINE SCALE
   Lobby h1 was clamp(3rem,8vw,5.5rem) = up to 88px. The landing's h1 renders
   at 54px. An 88px headline on a short page is what opens the void under it. */
.member-welcome h1{
  font-size:clamp(2.3rem,4.6vw,3.375rem);
  line-height:1.03;
  letter-spacing:-.025em;
}
.member-welcome>p:not(.eyebrow){font-size:1.05rem;max-width:56ch}

/* 2. VERTICAL RHYTHM
   96px top padding + 48px welcome margin + 64px section margin is why the
   sections drift apart. Tightened to the landing's density. */
.member-main{padding:clamp(28px,3.4vw,52px) 0}
.member-welcome{margin-bottom:30px}
.member-section{margin-top:46px;padding-top:28px}

/* 3. ONE CARD TREATMENT
   The desk card was 22px with a 30px-deep shadow; the practice card was 18px
   with no shadow at all. Two treatments side by side read as two designs. */
.member-card,
.member-card--desk-embed{
  border-radius:18px;
  border:1px solid var(--line);
  box-shadow:0 16px 36px -18px rgba(43,32,19,.30);
}
.member-card--desk-embed{
  border-color:rgba(247,244,238,.16);
  box-shadow:0 18px 44px -20px rgba(30,19,9,.5);
}

/* 4. CONCIERGE CHIPS
   Were heavy filled pills with weak contrast on the dark card. Now a quiet
   chip set: translucent cream, hairline, smaller, still clearly tappable. */
.member-card--desk-embed .desk-chips{gap:7px}
.member-card--desk-embed .desk-chips button{
  background:rgba(247,244,238,.10);
  border:1px solid rgba(247,244,238,.26);
  color:#F7F4EE;
  border-radius:10px;
  padding:.48rem .78rem;
  font:600 .82rem var(--sans);
}
.member-card--desk-embed .desk-chips button:hover,
.member-card--desk-embed .desk-chips button:focus-visible{
  background:rgba(199,154,82,.22);
  border-color:rgba(199,154,82,.55);
  outline:none;
}

/* 5. GRID GAPS
   18px in the top grid, 14px and 16px in the room grid. One value. */
.member-grid{gap:18px}
.room-grid{gap:18px}

/* ============================================================================
   CLARITY PASS (2026-08-15)
   Less beige, one hierarchy, and the voucher stops shouting.
   Informed by Chief (chief.com), the closest comparable: cream ground, but
   every content surface is genuinely light and only ONE thing is large.
   ============================================================================ */

/* 1. SURFACES STOP BEING BEIGE
   Cards were #FFFDF8 — cream on a cream ground, so nothing read as a surface.
   White cards against the warm paper is what gives the page its edges back. */
.member-card{background:#FFFFFF}
.member-card--desk-embed{background:rgba(30,19,9,.96)}

/* the ground wash was tuned for a page full of content; on the lobby it
   dominates. Same two washes, dialled back. */
body[data-auth-page="member"]{
  background:
    radial-gradient(120% 80% at 12% -5%, rgba(199,154,82,.13), transparent 55%),
    radial-gradient(120% 80% at 100% 8%, rgba(168,66,20,.07), transparent 50%),
    #FBF3E8 !important;
}

/* 2. ONE HIERARCHY
   Every section and card h2 was clamping to 44.8px, competing with the 54px
   welcome. Nothing was large because everything was. One display, one step
   down for sections, one step down again inside cards. */
.member-section h2{
  font-size:clamp(1.5rem,2.4vw,1.75rem);
  line-height:1.15;
  letter-spacing:-.015em;
}
.member-card h2{
  font-size:1.35rem;
  line-height:1.2;
  letter-spacing:-.01em;
}

/* 3. THE VOUCHER
   A full section, a two-column grid holding one card, 28px padding and a
   44.8px heading — for one line of status. It becomes a compact strip. */
#voucher{margin-top:34px;padding-top:24px}
#voucher .member-grid{grid-template-columns:1fr}
#voucher .member-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:10px 24px;
  padding:18px 22px;
}
#voucher .member-card h2{font-size:1.1rem;margin:0}
#voucher .member-card .eyebrow{grid-column:1;margin:0 0 2px}
#voucher .member-card h2{grid-column:1;grid-row:2}
#voucher #voucherSummary{grid-column:1;grid-row:3;margin:2px 0 0;font-size:.92rem}
#voucher .room-note{grid-column:1;grid-row:4;margin:4px 0 0}
#voucher #voucherYear{grid-column:2;grid-row:1/3;justify-self:end}

/* 4. CHIPS AND STATE READ AS OUTLINES, NOT FILLED BEIGE BLOBS */
.member-state{
  background:transparent;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--soft);
  font-size:.72rem;
  letter-spacing:.04em;
}

/* 5. CLARITY IN THE SMALL TEXT
   Supporting copy sat at --soft on white; the notes were lighter still.
   Both step up so nothing on the page is a whisper. */
.member-card p:not(.eyebrow){color:#4A3E30}
.room-note{color:#6E5F4A}

/* Surfaces, final word. The earlier light-layer rule uses :not() chains, so it
   outranks a plain .member-card. Matched here so cards actually read white
   against the warm ground instead of dissolving into it. */
.member-card:not(.member-card--wide):not(.member-card--desk-embed){
  background:#FFFFFF;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
.room-card:not(.room-card--soon){
  background:#FFFFFF;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
.room-card--soon{background:#FCFAF6}

/* The Safety Hall door previews the room behind it. Every other room is warm;
   that one is cool navy, and a member should not be surprised by the switch
   when the door opens. A navy rule and tag, nothing more. */
.room-card[href^="/safety-hall"]{
  border-left:3px solid #1F2E5C;
}
.room-card[href^="/safety-hall"] .room-tag--open{ color:#1F2E5C; }
.room-card[href^="/safety-hall"]:hover{ border-color:#33507A; }
.room-card[href^="/safety-hall"]:hover{ border-left-color:#1F2E5C; }

/* ============================================================================
   EVERY MEMBER ROOM, NOT JUST THE LOBBY (2026-08-15)
   The ground rule was scoped to body[data-auth-page="member"], which is only
   the lobby. Your Record is "record", the account page is "account", HUSH and
   the Kitchen are "room", the welcome is "welcome" — all five kept the old
   single gold circle at 82% 8%. Scoped to the attribute itself so every room
   stands on the same ground.
   ============================================================================ */
body[data-auth-page]{
  background:
    radial-gradient(120% 80% at 12% -5%, rgba(199,154,82,.13), transparent 55%),
    radial-gradient(120% 80% at 100% 8%, rgba(168,66,20,.07), transparent 50%),
    #FBF3E8 !important;
}

/* The same cream-on-cream problem the member cards had, in the components the
   other rooms are built from. #FFFDF8 on a cream ground is not a surface. */
.saved-card,
.shelf-item,
.practice-item,
.practice-day,
.record-actions>*{
  background:#FFFFFF !important;
}
.saved-card,
.shelf-item{
  border:1px solid var(--line) !important;
  border-radius:18px !important;
  box-shadow:0 16px 36px -18px rgba(43,32,19,.30) !important;
}
.practice-item,
.practice-day{
  border:1px solid var(--line) !important;
  border-radius:12px !important;
}

/* Cormorant has deep descenders. line-height:1.03 plus overflow:hidden on the
   heading clipped the g in "Intelligence" by 4.9px. Headings get their
   descender room back and stop clipping. */
.member-welcome h1,
.member-section h2,
.member-card h2,
.auth-card h1,
.invite-success h2{
  overflow:visible !important;
  line-height:1.12 !important;
  padding-bottom:.04em !important;
}

/* ============================================================================
   THE KITCHEN — sage, restrained (2026-08-15)
   Accents only. The cream ground, the geometry and the type are the Village's;
   what changes is the colour the room answers in. No green paper, no leaves,
   no vegetable iconography — the room is about learning to eat mostly plants,
   and it can say that with one considered colour rather than a costume.
     accent  #4A5A37  6.80:1 on cream
     action  #3F5233  7.74:1 on cream, white on it 8.52:1 (AAA both ways)
   ============================================================================ */
body[data-room="kitchen"]{
  --clay:#4A5A37;
  --clay-deep:#3F5233;
  --gold:#7C8A5E;
}
body[data-room="kitchen"] .eyebrow{ color:#4A5A37 !important; }
body[data-room="kitchen"] .primary-button,
body[data-room="kitchen"] .auth-form button{
  background:#3F5233 !important;
  box-shadow:0 6px 18px -8px rgba(63,82,51,.65) !important;
}
body[data-room="kitchen"] .primary-button:hover{ background:#33421F !important; }
body[data-room="kitchen"] .room-tag--open{ color:#4A5A37 !important; }
body[data-room="kitchen"] .member-card:hover,
body[data-room="kitchen"] .shelf-item:hover{ border-color:#7C8A5E !important; }
body[data-room="kitchen"] .member-state{ border-color:rgba(74,90,55,.34) !important; color:#3F5233 !important; }
/* the sage stays a note, never the page: the ground is still the Village's */
body[data-room="kitchen"]{
  background:
    radial-gradient(120% 80% at 12% -5%, rgba(124,138,94,.12), transparent 55%),
    radial-gradient(120% 80% at 100% 8%, rgba(168,66,20,.05), transparent 50%),
    #FBF3E8 !important;
}

/* ============================================================================
   MEMBER LOBBY HERO SCENE (2026-08-16)
   Same treatment the landing hero uses: hero-meadow-web.jpg under a cream overlay,
   heaviest where the welcome copy sits, thinning to the right so the scene
   carries to the edge. Scoped to the welcome block so the rest of the lobby
   keeps its plain ground.
   ============================================================================ */
.member-welcome{
  position:relative;
  padding:clamp(26px,3vw,40px) clamp(22px,3vw,38px);
  border-radius:18px;
  border:1px solid var(--line);
  overflow:hidden;
  background-image:
    linear-gradient(100deg,
      rgba(251,243,232,.95) 0%,
      rgba(251,243,232,.90) 34%,
      rgba(251,243,232,.58) 58%,
      rgba(251,243,232,.22) 80%,
      rgba(251,243,232,.10) 100%),
    linear-gradient(to bottom,
      rgba(251,243,232,.40) 0%,
      rgba(251,243,232,.04) 55%,
      rgba(251,243,232,0) 100%),
    url("/assets/hero-meadow-web.jpg");
  background-size:cover;
  background-position:center 74%;
  background-repeat:no-repeat;
}
@media (max-width:680px){
  .member-welcome{
    background-image:
      linear-gradient(rgba(251,243,232,.95), rgba(251,243,232,.88)),
      url("/assets/hero-meadow-web.jpg");
    background-position:center 80%;
  }
}

/* Password visibility toggle. A member retyping a password she cannot see is
   how "not matching" happens. */
.pw-field {
  position: relative;
  display: block;
}
.pw-field input {
  width: 100%;
  padding-right: 4.5rem;
}
.pw-toggle {
  position: absolute;
  top: 50%;
  right: .55rem;
  transform: translateY(-50%);
  background: none;
  border: 0;
  padding: .35rem .5rem;
  font: 600 .78rem/1 "Hanken Grotesk", system-ui, sans-serif;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--clay, #a84214);
  cursor: pointer;
  border-radius: 6px;
}
.pw-toggle:hover { text-decoration: underline; }
.pw-toggle:focus-visible { outline: 2px solid var(--clay, #a84214); outline-offset: 2px; }

/* The studio headline sits in the welcome card, and that card clips what
   overflows it. Let the heading wrap instead of running off the edge. */
body[data-room="moxie"] .member-welcome h1{ white-space:normal; overflow-wrap:break-word; }
body[data-room="moxie"] .eyebrow{ color:var(--clay); }

/* 2026-08-18: this site is light-only. Stops Android Chrome auto-dark and similar from inverting the cream/ink palette. */
:root{ color-scheme: light; }
html{ background: var(--paper, #FBF3E8); }

/* ---- Projects (PROJECTS_PRD.md, slice 1, 2026-09-01). New rules only, at the
   bottom per JoYi's rules. Reuses the desk-* conversation styles above. ---- */
.proj-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:18px}
.proj-card{display:grid;gap:7px;padding:22px;background:#fff;border:1px solid var(--line);border-radius:14px;text-align:left;cursor:pointer;font:inherit;color:inherit}
.proj-card:hover,.proj-card:focus-visible{border-color:var(--gold);background:#fff9ed;outline:none}
.proj-card b{font:600 1.4rem/1.15 var(--serif)}
.proj-meta{font-size:.76rem;color:var(--soft)}
.proj-next{font-size:.85rem;color:var(--ink);line-height:1.4}
.proj-room{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:22px;align-items:start}
.proj-room__work{padding:clamp(20px,4vw,32px);background:#fff;border:1px solid var(--line);border-radius:22px}
.proj-room__side{display:grid;gap:14px}
.proj-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.proj-toolbar select{border:1px solid var(--line);border-radius:999px;padding:.45rem .8rem;font:650 .82rem var(--sans);color:var(--ink);background:var(--paper)}
.proj-thread{max-height:52vh;overflow-y:auto}
.proj-drop{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:12px;padding:10px 14px;border:1.5px dashed var(--line);border-radius:12px}
.proj-drop--over{border-color:var(--gold);background:#fff9ed}
.proj-brief,.proj-artifacts,.proj-assets{padding:18px;background:rgba(255,255,255,.68);border:1px solid var(--line);border-radius:14px;display:grid;gap:8px}
.proj-brief__row{margin:0;font-size:.87rem;line-height:1.45;color:var(--soft)}
.proj-brief__row b{color:var(--ink);display:block;font-size:.74rem;text-transform:uppercase;letter-spacing:.07em}
.proj-artifact{border-top:1px solid var(--line);padding-top:8px}
.proj-artifact summary{cursor:pointer;font-weight:650;font-size:.9rem}
.proj-artifact__body{white-space:pre-wrap;overflow-x:auto;font:.8rem/1.5 var(--sans);color:var(--soft);background:var(--paper);border-radius:10px;padding:12px;max-height:340px;overflow-y:auto}
.proj-assets ul{margin:0;padding-left:1.1rem;font-size:.85rem;color:var(--soft);line-height:1.6}
.welcome-actions--stack{flex-direction:column;align-items:stretch}
.desk-projectoffer{margin:14px 0;padding:16px;border:1px solid rgba(199,154,82,.4);border-radius:14px;background:#fff9ed;display:grid;gap:10px;justify-items:start}
@media(max-width:820px){.proj-room{grid-template-columns:1fr}}
/* Roo's floating button sits bottom-right; keep the projects page's own
   actions clear of it. */
#projectsBody{padding-bottom:96px}
#projectsBody>.welcome-actions{margin-right:96px}
/* 2026-09-02: .member-card p:not(.eyebrow) (0,2,1) was beating the desk embed's
   .desk-msg color (0,2,0), painting chat bubbles dark-on-dark on the member
   home. Matching specificity, declared later, so the embed wins. */
.member-card--desk-embed p.desk-msg{color:#FBF9F4}
