@font-face{font-family:Figtree;src:url('fonts/figtree-latin.woff2?v=c09dd4c4ea2ca696') format('woff2');font-style:normal;font-weight:300 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+20B9,U+2122,U+2190-2199,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Figtree;src:url('fonts/figtree-ext.woff2?v=c5f4d79973fb98bd') format('woff2');font-style:normal;font-weight:300 900;font-display:swap;unicode-range:U+0100-0113,U+0116-0127,U+012A-012B,U+012E-0130,U+0132-0137,U+0139-013E,U+0141-0148,U+014A-014D,U+0150-0151,U+0154-0161,U+0164-0165,U+016A-017E,U+01CD-01CE,U+0218-021B,U+0237,U+02C7,U+02D8-02D9,U+02DB,U+02DD,U+0300-0303,U+0306-0307,U+030A-030C,U+0312,U+0326-0328,U+1E80-1E85,U+1E9E,U+1EF2-1EF3,U+2070,U+2075-2079,U+2080-2089,U+215B-215E,U+2260,U+2264-2265}
@font-face{font-family:Figtree;src:url('fonts/figtree-italic-latin.woff2?v=8711c843bc862ed8') format('woff2');font-style:italic;font-weight:300 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+20B9,U+2122,U+2190-2199,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Figtree;src:url('fonts/figtree-italic-ext.woff2?v=ebf989a632efda7e') format('woff2');font-style:italic;font-weight:300 900;font-display:swap;unicode-range:U+0100-0113,U+0116-0127,U+012A-012B,U+012E-0130,U+0132-0137,U+0139-013E,U+0141-0148,U+014A-014D,U+0150-0151,U+0154-0161,U+0164-0165,U+016A-017E,U+01CD-01CE,U+0218-021B,U+0237,U+02C7,U+02D8-02D9,U+02DB,U+02DD,U+0300-0303,U+0306-0307,U+030A-030C,U+0312,U+0326-0328,U+1E80-1E85,U+1E9E,U+1EF2-1EF3,U+2070,U+2075-2079,U+2080-2089,U+215B-215E,U+2260,U+2264-2265}
@font-face{font-family:Newsreader;src:url('fonts/newsreader-latin.woff2?v=c77f66db410630e0') format('woff2');font-style:normal;font-weight:200 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+20B9,U+2122,U+2190-2199,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Newsreader;src:url('fonts/newsreader-ext.woff2?v=46dc02270ce9f48c') format('woff2');font-style:normal;font-weight:200 800;font-display:swap;unicode-range:U+0100-0130,U+0134-0148,U+014A-0151,U+0154-017E,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01C4-01CC,U+01E6-01E7,U+01EA-01EB,U+01FA-021B,U+022A-022D,U+0230-0233,U+0237,U+0259,U+02B9-02BA,U+02C7,U+02D8-02D9,U+02DB,U+02DD,U+0300-0303,U+0306-0307,U+0309-030C,U+030F,U+0311-0312,U+031B,U+0323-0324,U+0326-0328,U+032E,U+0331,U+0335,U+1E80-1E85,U+1E9E,U+1EA0-1EF9,U+2070,U+20A1,U+20A3-20A4,U+20A6-20A7,U+20A9,U+20AB,U+20AD,U+20B1-20B2,U+20B5,U+20BA,U+20BC-20BD,U+2116,U+2219,U+2248,U+2260,U+2264-2265,U+27E8-27E9,U+FB00-FB04}
@font-face{font-family:Newsreader;src:url('fonts/newsreader-italic-latin.woff2?v=2347b630f3bd17af') format('woff2');font-style:italic;font-weight:200 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+20B9,U+2122,U+2190-2199,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Newsreader;src:url('fonts/newsreader-italic-ext.woff2?v=c549f1593d73ce33') format('woff2');font-style:italic;font-weight:200 800;font-display:swap;unicode-range:U+0100-0130,U+0134-0148,U+014A-0151,U+0154-017E,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01C4-01CC,U+01E6-01E7,U+01EA-01EB,U+01FA-021B,U+022A-022D,U+0230-0233,U+0237,U+0259,U+02B9-02BA,U+02C7,U+02D8-02D9,U+02DB,U+02DD,U+0300-0303,U+0306-0307,U+0309-030C,U+030F,U+0311-0312,U+031B,U+0323-0324,U+0326-0328,U+032E,U+0331,U+0335,U+1E80-1E85,U+1E9E,U+1EA0-1EF9,U+2070,U+20A1,U+20A3-20A4,U+20A6-20A7,U+20A9,U+20AB,U+20AD,U+20B1-20B2,U+20B5,U+20BA,U+20BC-20BD,U+2116,U+2219,U+2248,U+2260,U+2264-2265,U+27E8-27E9,U+FB00-FB04}
:root{font:16px/1.6 'Figtree',system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,textarea,select{font:inherit}button,.button{cursor:pointer;border:1px solid var(--control-border);border-radius:9px;padding:11px 18px;min-height:46px;background:var(--control);color:var(--ink);text-decoration:none;display:inline-block}button:hover,.button:hover{background:var(--hover)}button.primary,.button.primary{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}button:disabled{opacity:.5;cursor:default}button[aria-current=true]{background:var(--selected);border-color:var(--control-border)}button.danger{color:var(--error)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:4px}.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;background:var(--surface);z-index:10}.demo{text-align:center;background:var(--selected);font-size:.72rem;letter-spacing:.1em;padding:8px}header{max-width:1280px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:25px 40px;border-bottom:1px solid var(--line);gap:20px}.wordmark{font-family:'Newsreader',Georgia,serif;font-size:1.5rem;text-decoration:none}.wordmark span{font:10px 'Figtree',system-ui;letter-spacing:.18em;display:block;margin-top:3px}nav,.actions{display:flex;gap:10px;flex-wrap:wrap}nav button{font-size:.83rem;padding:8px 14px}main{max-width:1200px;margin:auto;padding:44px 40px 90px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:'Newsreader',Georgia,serif;font-weight:400;line-height:1.15}h1{font-size:clamp(2.5rem,5vw,4.5rem);letter-spacing:-.04em;max-width:850px;margin-bottom:20px}h2{font-size:2rem}h3{font-size:1.05rem}.eyebrow{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:650}.lede{font-size:1.1rem;color:var(--muted);max-width:650px}.hero{display:grid;grid-template-columns:1.5fr 1fr;gap:40px;align-items:center;margin-bottom:40px}.art{aspect-ratio:1.15;border-radius:48% 48% 12px 12px;background:var(--art);position:relative;overflow:hidden;display:grid;place-items:center}.art:before,.art:after{content:'✳';position:absolute;color:var(--decoration-one);font-size:180px;line-height:1;left:-20px;bottom:10px;transform:rotate(15deg)}.art:after{left:auto;right:-25px;top:-5px;color:var(--decoration-two);font-size:230px}.art span{font:italic 3rem 'Newsreader',Georgia;text-align:center;z-index:1;color:var(--art-ink)}.stats{display:flex;gap:30px;border-top:1px solid var(--line);padding-top:18px;margin:24px 0}.stats strong{display:block;font:1.8rem 'Newsreader',Georgia}.stats small{color:var(--muted)}.sectionhead{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:36px 0 18px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.panel,.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:26px}.card{display:flex;flex-direction:column;gap:14px}.card p{margin:0}.card .actions{margin-top:auto}.avatar{width:44px;height:44px;display:grid;place-items:center;background:var(--badge);border-radius:50%;font:1.2rem 'Newsreader',Georgia}.tag{font-size:.74rem;background:var(--badge);padding:4px 10px;border-radius:20px;width:fit-content}.muted{color:var(--muted)}.small{font-size:.85rem}.notice{background:var(--notice);border-radius:14px;padding:16px 20px;margin:24px 0}.reading{max-width:740px;margin:auto}.letter{white-space:pre-wrap;overflow-wrap:anywhere;font-family:'Newsreader',Georgia,serif;font-size:1.2rem;line-height:1.85}.meta{display:flex;gap:14px;align-items:center;margin-bottom:22px}.stack>*+*{margin-top:20px}label{display:block;font-weight:600;margin-bottom:6px}input,textarea,select{width:100%;border:1px solid var(--control-border);border-radius:8px;padding:12px;background:var(--control);color:inherit}textarea{min-height:160px;resize:vertical}form{max-width:720px}.field{margin-bottom:22px}.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}.error{color:var(--error);font-weight:600}details{border-top:1px solid var(--line);padding:15px 0;overflow-wrap:anywhere}summary{cursor:pointer;min-height:44px;padding-top:8px}#status{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--primary);color:var(--primary-ink);padding:10px 20px;border-radius:8px;width:max-content;max-width:calc(100% - 32px);overflow-wrap:anywhere;z-index:5}#status:empty{display:none}.media{background:var(--selected);padding:20px;border-radius:12px;margin:16px 0}.media p{margin:10px 0}.divider{border:0;border-top:1px solid var(--line);margin:30px 0}.tv{background:var(--tv-bg);color:var(--tv-ink);min-height:100vh}.tv main{max-width:1300px;text-align:center;padding-top:9vh}.tv .letter{text-align:left;max-width:950px;margin:30px auto;font-size:clamp(1.3rem,2.4vw,2.1rem);line-height:1.65}.tv .eyebrow,.tv .muted{color:var(--tv-muted)}.tv .actions{justify-content:center}.tv h1{margin-inline:auto}.tv .notice{background:var(--tv-surface);text-align:left}.tv .panel{background:var(--tv-surface);color:inherit}.tv .pagecount{font-size:.85rem;margin:20px}.tv .art{max-width:440px;margin:20px auto}.tv label{font-weight:400}.tv input[type=checkbox]{width:auto;min-width:22px;min-height:22px}input[type=radio]{width:auto;min-height:0;padding:0}.hidden{display:none}@media(max-width:800px){header{padding:20px;align-items:flex-start;flex-direction:column}main{padding:30px 20px 80px}.hero{grid-template-columns:1fr;gap:22px}.art{max-height:250px;aspect-ratio:1.5}.grid{grid-template-columns:1fr 1fr}.two{grid-template-columns:1fr}.sectionhead{align-items:flex-start;flex-direction:column}h1{font-size:2.8rem}}@media(max-width:520px){.grid{grid-template-columns:1fr}.panel,.card{padding:20px}.stats{gap:20px}.actions button,.actions .button{flex-grow:1}nav{gap:6px}nav button{padding:8px 10px}.tv main{padding-top:35px}.tv h1{font-size:2.5rem}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

main:focus{outline:none}

h1,h2,h3,label,.wordmark,.tv .eyebrow{overflow-wrap:anywhere}

.theme-tools{max-width:1200px;margin:20px auto 0;padding:0 40px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.theme-tools label{font-size:.78rem;margin:0;letter-spacing:.06em}
.theme-tools select{width:auto;max-width:100%;min-width:220px}
.theme-tools p{font-size:.8rem;color:var(--muted);margin:0}
.tv button,.tv .button,.tv select{background:var(--tv-control);color:var(--tv-control-ink);border-color:var(--tv-control-border)}
.tv button:hover{background:var(--tv-control-hover)}
.tv button:focus-visible,.tv a:focus-visible,.tv input:focus-visible,.tv select:focus-visible{outline-color:var(--tv-focus)}
.tv #error{color:var(--tv-ink)}
.tv .theme-caption{font-size:.72rem;letter-spacing:.12em;color:var(--tv-muted);text-align:center;margin:20px}
input[type=checkbox]{accent-color:var(--primary)}
@media(max-width:800px){.theme-tools{padding:0 20px;gap:8px}.theme-tools select{width:100%}}
.art span{background:var(--art);padding:10px;border-radius:12px}
.tv .lede{color:var(--tv-muted)}

audio{max-width:100%;width:100%}

/* Respect semantic hidden state,including managed versus fixture navigation. */
[hidden]{display:none!important}

/* Shared Ribbon chrome does not overwrite personalized collection palettes. */
.wordmark{display:flex;align-items:center;gap:12px;color:var(--wordmark,#54203d);flex-shrink:0}
.wordmark .brand-name{font:600 2.2rem/1.1 "Avenir Next","Trebuchet MS",sans-serif;letter-spacing:-.055em;margin:0}
.wordmark small{display:block;font:600 9px/1.8 'Figtree',system-ui;letter-spacing:.2em;margin-top:5px}
.brand-mark{width:56px;height:56px;object-fit:contain}
[data-theme=velvet] .brand-mark{content:url('app-icon.svg?v=aeb837d83f36fc58');border-radius:14px}
#managed-auth{max-width:1200px;margin:24px auto;padding:24px 40px;border-bottom:1px solid var(--line)}
#managed-auth h2{font-size:1.4rem}#managed-auth>div{display:flex;gap:10px;flex-wrap:wrap}
button:disabled{opacity:1;color:var(--muted);background:var(--surface);border-style:dashed;cursor:not-allowed}
button:disabled:hover{background:var(--surface)}
@media(max-width:800px){#managed-auth{padding:24px 20px}.wordmark .brand-name{font-size:2rem}}

/* Approved Ribbon redesign: local native styles,no CDN or font requests.
   Existing palette variables preserve collection personalization. */
:root{--ff-radius:24px;--ff-gutter:clamp(20px,5vw,72px);--ff-heading:'Newsreader',Georgia,'Times New Roman',serif}
body{font-size:17px;line-height:1.55}
.app-header{max-width:1440px;padding:24px var(--ff-gutter);min-height:96px;flex-wrap:wrap}
.wordmark .brand-name{font-size:1.5rem;letter-spacing:-.035em}
.brand-mark{width:36px;height:36px}.wordmark{gap:8px}.wordmark small{font-size:8px}
main{max-width:1440px;padding:40px var(--ff-gutter) 96px}
h1{font-size:clamp(2.5rem,5vw,4.5rem);letter-spacing:-.035em}
h2{font-size:clamp(1.5rem,2.5vw,2rem)}
button,.button{border-radius:999px;min-height:48px;font-weight:600;padding:12px 20px}
input,textarea,select{border-radius:12px;min-height:48px}
textarea{line-height:1.65}
.panel,.card{border-radius:var(--ff-radius);padding:28px}
.notice{border-radius:16px}.tag{font-size:.82rem}.small{font-size:.94rem}
.reading{max-width:800px}.stack>*+*{margin-top:24px}
.actions{gap:12px;margin-block:20px}.card .actions{margin-bottom:0}
#app-navigation{max-width:1440px;margin:auto;padding:0 var(--ff-gutter);display:flex;flex-wrap:nowrap;gap:24px;border-bottom:1px solid var(--line)}
#app-navigation button{border:0;border-radius:0;background:transparent;padding:14px 0;color:var(--muted);border-bottom:3px solid transparent;min-width:0}
#app-navigation button[aria-current=page]{color:var(--ink);border-bottom-color:var(--decoration-one)}
#app-navigation button:hover{color:var(--ink);background:var(--hover)}
.theme-tools{max-width:1440px;padding:0 var(--ff-gutter);margin-top:20px;gap:12px}.theme-tools p{font-size:.85rem}
#managed-auth{max-width:1440px;padding:24px var(--ff-gutter)}
.overview-heading{margin-bottom:32px}.overview-heading .lede{max-width:760px}
.overview-panels{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:32px;align-items:start}
.next-step{border-radius:var(--ff-radius);padding:40px;background:var(--primary);color:var(--primary-ink);min-height:320px}
.next-step h2{font-size:clamp(2rem,3.4vw,3.3rem);max-width:520px}
.next-step .eyebrow{color:inherit}.next-step button.primary{background:#ffac8c;color:#3b1d2e;border-color:#ffac8c}
.next-step button:focus-visible{outline-color:var(--primary-ink)}
.overview-stats{display:grid;gap:16px}.overview-stats .panel{padding:24px}
.overview-stats h2{font:600 1rem/1.5 'Figtree',system-ui;margin-bottom:8px}.overview-stats p{margin-bottom:0;color:var(--muted)}
.overview-stats .stat-value{font:1.5rem/1.3 var(--ff-heading);color:var(--ink);margin-bottom:12px}
#organizer-cards,#organizer-keepsake,#organizer-overview{scroll-margin-top:24px}
#organizer-cards:focus,#organizer-keepsake:focus,#organizer-overview:focus{outline:2px solid var(--focus);outline-offset:8px}
@media(max-width:900px){.app-header{align-items:center;flex-direction:row}#app-navigation{gap:20px}.overview-panels{grid-template-columns:1fr}.next-step{min-height:0}.overview-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.overview-stats .panel{padding:18px}.overview-stats p{overflow-wrap:anywhere}}
@media(max-width:600px){main{padding-top:28px;padding-bottom:112px}.app-header{padding-block:16px}.app-header nav{width:100%}.app-header nav button{flex:1 1 40%}.wordmark .brand-name{font-size:1.4rem}#app-navigation{position:sticky;top:0;z-index:4;background:var(--bg);gap:0;justify-content:space-between;padding:0 12px}#app-navigation button{font-size:.78rem;padding:14px 4px;white-space:normal}.overview-stats{grid-template-columns:1fr}.next-step{padding:28px}.panel,.card{padding:22px}.theme-tools select{min-width:0}.theme-tools p{width:100%}.actions{gap:8px}.overview-heading h1{font-size:2.7rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Redesign checkpoint 2: author composer and organizer read-only review. */
.composer-page,.review-page{max-width:1200px;margin:auto}
.composer-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;align-items:start;margin-top:32px}
.composer-layout form{max-width:none;background:var(--surface);padding:28px;border:1px solid var(--line);border-radius:24px}
.composer-layout textarea{font:1.25rem/1.65 'Newsreader',Georgia,serif;min-height:240px}
.composer-layout details textarea{font:inherit;min-height:140px}
.composer-layout .media{padding:20px;background:var(--notice)}
.composer-layout .media button{margin:4px 4px 4px 0}
.composer-layout input[type=file]{padding:12px 0;border:0;font-size:.9rem}
.composer-layout input[type=file]::file-selector-button{border:1px solid var(--control-border);border-radius:20px;padding:10px;background:var(--control);color:var(--ink)}
.composer-actions{position:static;background:var(--surface);padding:16px;border:1px solid var(--line);border-radius:16px;z-index:2}
.privacy-guide{position:sticky;top:24px}.privacy-guide h2{font:600 1.15rem 'Figtree',system-ui}
.privacy-guide ol{padding-left:22px}.privacy-guide li{padding-left:8px;margin:20px 0}.privacy-guide p{font-size:.94rem;color:var(--muted);margin-bottom:0}
.review-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:32px;align-items:start}
.review-list{border:1px solid var(--line);border-radius:20px;padding:16px;background:var(--surface)}
.review-list summary{font-weight:600}.review-list button{display:block;width:100%;border-radius:12px;text-align:left;margin:8px 0}
.review-list button span{display:block;font-size:.85rem;font-weight:400;margin-top:8px}
.review-content .letter{margin:28px 0;font-size:1.4rem;line-height:1.7}.review-content .media{overflow-wrap:anywhere}
.review-content img,.review-content video{max-width:100%;height:auto}
#leave-composer{max-width:min(540px,calc(100vw - 32px));border:1px solid var(--control-border);border-radius:24px;padding:28px;background:var(--surface);color:var(--ink)}
#leave-composer::backdrop{background:rgb(25 10 20 / .6)}
#leave-composer h2{font-size:2rem}
@media(max-width:1000px){.composer-layout{grid-template-columns:minmax(0,1fr) 250px;gap:24px}.review-layout{grid-template-columns:1fr}.review-list{position:static}.review-list>div{display:flex;gap:12px;overflow-x:auto}.review-list button{min-width:180px;width:auto}.privacy-guide{position:static}}
@media(max-width:759px){.composer-layout{grid-template-columns:1fr}.composer-layout form{padding:20px}.composer-actions{bottom:8px;padding:12px}.composer-actions button{flex:1 1 40%}.privacy-guide{margin-top:8px}.review-content{padding:22px}.review-list>div{display:block;max-height:260px;overflow-y:auto}.review-list button{width:100%}.review-content .letter{font-size:1.25rem}}

/* Recipient collection,private media and authorized snapshot keepsakes. */
.recipient-page{max-width:1200px;margin:auto}.recipient-page.reading{max-width:820px}
.collection-cover{padding:32px 0 48px;max-width:900px}.collection-cover .eyebrow{font:italic 1.25rem 'Newsreader',Georgia;text-transform:none;letter-spacing:0}
.recipient-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.recipient-grid .letter{font-size:1.4rem;line-height:1.6}.recipient-grid .card{padding:32px}
.attachment-list{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}
.private-gift{border:1px solid var(--line);border-radius:16px;padding:20px;background:var(--notice)}
.private-gift summary{font-weight:600}.private-gift a{overflow-wrap:anywhere}
.media-view{margin:28px 0}.media-view[aria-busy=true]{border-left:3px solid var(--focus);padding-left:16px}
.media-view .panel{padding:24px}.media-view img,.media-view video{max-width:100%}
.keepsake-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:32px;align-items:start}
.keepsake-layout aside p{color:var(--muted)}#export-job button{margin:12px 12px 0 0}
@media(max-width:759px){.recipient-grid,.keepsake-layout{grid-template-columns:1fr}.collection-cover{padding:16px 0 28px}.recipient-grid .card{padding:24px}.recipient-page h1{font-size:2.5rem}.attachment-list button{width:100%}}

/* People{max-width:1200px;margin:auto}.invitation-form{padding:24px}.invitation-form summary{font-weight:600;font-size:1.2rem}.invitation-form label{margin-top:18px}.invitation-form input[readonly]{font-size:.85rem}
.invitation-form form{margin:16px 0}.invitation-form button{margin-top:12px}
.join-panel{max-width:800px;margin:0 auto 40px}.join-panel h2{font-size:2.1rem}.join-panel .actions{margin-bottom:0}
.lifecycle-page{max-width:900px;margin:auto}.lifecycle-panel{margin:28px 0}.lifecycle-panel h2{margin-top:18px}
.deadline-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;border-block:1px solid var(--line);padding-block:24px;margin-block:28px}
.deadline-grid dt{font-size:.9rem;color:var(--muted)}.deadline-grid dd{font:1.4rem/1.4 'Newsreader',Georgia,serif;margin:8px 0 0}
@media(max-width:759px){.deadline-grid{grid-template-columns:1fr}.lifecycle-page h1{font-size:2.5rem}.join-panel h2{font-size:1.8rem}}

/* Approved entry/workspace responsive surfaces; existing theme tokens retained. */
.auth-card{max-width:960px;margin:48px auto;padding:32px;border:1px solid var(--line);border-radius:24px;display:grid;grid-template-columns:1fr 1fr;gap:40px}.auth-controls{display:flex;flex-direction:column;gap:12px}.auth-card h2{font-size:2.5rem}.auth-card[hidden]{display:none}.workspace-switcher{max-width:480px;margin-bottom:28px;border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--surface)}.workspace-switcher summary{cursor:pointer;font-weight:700;overflow-wrap:anywhere}.workspace-menu nav{display:flex;gap:8px;flex-wrap:wrap}.workspace-menu [aria-current=true]{outline:2px solid currentColor;outline-offset:2px}.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.collection-grid h3{overflow-wrap:anywhere;font-size:1.7rem}.create-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(240px,1fr);gap:40px;align-items:start}.create-page{max-width:1120px;margin:auto}.create-layout aside{background:var(--selected);line-height:1.8}.create-layout li+li{margin-top:16px}.contributor-page{max-width:1120px;margin:auto}.contributor-heading{max-width:720px;margin-bottom:32px}.contributor-page .card{display:flex;flex-direction:column;gap:12px}.contributor-page .card .actions{margin-top:auto}.empty-state{padding:40px}#checkout-panel{padding:24px;border:1px solid var(--line);border-radius:16px;margin-top:24px}#checkout-panel [role=status]{padding:16px;background:var(--selected);border-radius:12px;line-height:1.6}#checkout-panel button{margin:4px}
@media(max-width:900px){.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.create-layout{grid-template-columns:minmax(0,1fr);gap:24px}.auth-card{margin:24px}}
@media(max-width:600px){.auth-card{grid-template-columns:1fr;padding:24px;gap:16px;margin:20px}.collection-grid{grid-template-columns:1fr}.workspace-switcher{max-width:none}.workspace-menu nav{display:grid;grid-template-columns:1fr;width:100%}.contributor-page .grid{grid-template-columns:1fr}.create-page h1{font-size:2.5rem}}

.auth-card.signed-in{display:block;margin:16px auto;padding:16px 24px}.auth-card.signed-in .auth-intro,.auth-card.signed-in #auth-start,.auth-card.signed-in #auth-cancel{display:none}.auth-card.signed-in .auth-controls{flex-direction:row;align-items:center;justify-content:flex-end;flex-wrap:wrap}.auth-card.signed-in #auth-status{margin:0}.auth-card[hidden]{display:none}

#managed-auth.auth-card{max-width:960px;margin:32px auto;padding:32px}#managed-auth.auth-card> .auth-intro{display:block}#managed-auth.auth-card h2{font-size:2.5rem}#managed-auth.auth-card>.auth-controls{display:flex;flex-direction:column}#managed-auth.auth-card.signed-in{max-width:1200px;margin:12px auto;padding:12px 24px}#managed-auth.auth-card.signed-in>.auth-intro{display:none}#managed-auth.auth-card.signed-in>.auth-controls{flex-direction:row}#managed-auth.auth-card[hidden]{display:none}@media(max-width:1000px){#managed-auth.auth-card{margin:20px}}

.wizard-fields{border:0;padding:0;margin:0;min-width:0}.wizard-fields[hidden]{display:none}.wizard-steps{list-style:none;display:flex;gap:24px;padding:0;margin:0 0 28px;color:var(--muted)}.wizard-steps [aria-current=step]{color:var(--ink);border-bottom:3px solid var(--focus);font-weight:700}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%)}.workspace-trigger{max-width:100%;margin-bottom:28px;overflow-wrap:anywhere}#workspace-dialog{width:min(560px,calc(100% - 40px));max-height:85dvh;padding:24px;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--ink)}#workspace-dialog::backdrop{background:rgba(45,15,34,.48)}.sheet-heading{display:flex;gap:20px;align-items:center;justify-content:space-between}.sheet-heading h2{font-size:1.5rem;margin:0}.sheet-collections{display:grid;gap:12px;margin:24px 0}.sheet-collections button{text-align:left;display:flex;flex-wrap:wrap;gap:10px;overflow-wrap:anywhere}.sheet-collections strong{width:100%}.sheet-footer{border-top:1px solid var(--line);padding-top:20px;display:grid;gap:10px}.sheet-footer p{font-size:.85rem;margin-top:12px}@media(max-width:600px){#workspace-dialog{width:100%;max-width:100%;max-height:85dvh;margin:auto 0 0;border-radius:24px 24px 0 0;padding:20px;box-sizing:border-box}.wizard-steps{gap:16px;font-size:.9rem}}

#workspace-anchor{min-width:0;flex:1}#workspace-anchor .workspace-trigger{margin:0;max-width:440px;font-size:.9rem}.app-header{flex-wrap:wrap}.sheet-collections button{border-radius:14px}@media(max-width:600px){#workspace-anchor{flex-basis:100%}#workspace-anchor .workspace-trigger{width:100%;max-width:none;text-align:left}.app-header{gap:12px}}

.preview-page .panel{margin:28px 0}.preview-page .letter{font-size:clamp(1.25rem,2vw,1.7rem)}.preview-page .actions{margin-top:28px}.ready-list{list-style:none;padding:0}.ready-list li{padding:16px 0;border-top:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}.presentation-page label{padding:18px;border:1px solid var(--line);border-radius:14px}.tv main{max-width:1100px;margin:auto;padding:48px 32px}.tv .letter{font-size:clamp(1.4rem,3vw,2.4rem);max-width:850px;margin:32px auto}.tv .actions{justify-content:center;margin-top:28px}.tv .panel{background:var(--surface);color:var(--ink)}.tv #picture{width:auto}.tv h1{margin-inline:auto}.tv button:focus-visible{outline:3px solid var(--focus);outline-offset:4px}@media(max-width:800px){.preview-page .actions{display:grid;grid-template-columns:1fr}.tv main{padding:32px 20px}}

#confirm-action,#leave-composer{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:24px;padding:32px;width:min(560px,calc(100% - 40px));max-height:85dvh;overflow:auto}#confirm-action::backdrop,#leave-composer::backdrop{background:rgba(45,15,34,.48)}#confirm-message{white-space:pre-wrap;overflow-wrap:anywhere}.recovery-panel{max-width:1120px;margin:24px auto;padding:24px;background:var(--surface);border:2px solid var(--error);border-radius:16px}.recovery-panel[hidden]{display:none}.session-notice{margin-bottom:32px}.access-ended .panel{margin:28px 0}.access-ended .actions{margin-top:24px}@media(max-width:600px){#confirm-action,#leave-composer{width:100%;max-width:100%;margin:auto 0 0;border-radius:24px 24px 0 0;padding:24px}#confirm-action .actions,#leave-composer .actions{display:grid;grid-template-columns:1fr}.recovery-panel{margin:20px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Approved entry,checkout,recorder and compact review layouts. */
.entry-page{max-width:1200px;margin:auto}.entry-how,#entry-plans{padding:56px 0;border-top:1px solid var(--line)}.entry-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.entry-steps article{border-top:2px solid var(--primary);padding-top:20px}.entry-plans{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:28px 0}.entry-plans h3{font-size:2rem}.plan-price{font-size:1.4rem;font-weight:700}.entry-page footer{padding:32px 0;border-top:1px solid var(--line)}.entry-page a.button{display:inline-block;padding:16px 22px;border-radius:40px;text-decoration:none;background:var(--primary);color:var(--primary-ink)}.payment-page{max-width:1120px;margin:32px auto}.payment-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,1fr);gap:48px;align-items:start}.payment-page #checkout-panel{padding:0;border:0}.order-summary dl>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0}.order-summary dd{margin:0;text-align:right}.order-summary h2{overflow-wrap:anywhere}.upload-choice{border:2px dashed var(--line);border-radius:18px;padding:24px;margin:24px 0}.upload-choice input{max-width:100%;background:var(--surface)}.upload-choice[aria-busy=true]{border-color:var(--primary)}.record-choice{padding:24px;background:var(--selected);border-radius:18px}.media-panel button{margin:6px 6px 6px 0}#recorder-dialog{background:var(--surface);color:var(--ink);width:min(620px,calc(100% - 40px));max-height:90dvh;overflow:auto;border:1px solid var(--line);border-radius:24px;padding:32px}#recorder-dialog::backdrop,#review-dialog::backdrop{background:rgba(45,15,34,.48)}.recorder-close{display:block;margin-left:auto!important}#recorder-dialog audio,#recorder-dialog video{display:block;width:100%;margin:20px 0}#recorder-dialog audio:not([src]),#recorder-dialog video:not([src]){min-height:0}#recorder-status{padding:16px;border:1px solid var(--line);border-radius:12px}.review-drawer-trigger{display:none}#review-dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:24px;padding:28px;width:min(460px,calc(100% - 32px));max-height:85dvh;overflow:auto}#review-dialog .review-list{display:grid;gap:12px;margin-top:24px}#review-dialog .review-list button{width:100%;text-align:left}
@media(max-width:1000px){.review-layout>.review-list{display:none}.review-drawer-trigger{display:block;justify-self:start}.review-layout{grid-template-columns:1fr}.entry-steps{grid-template-columns:1fr 1fr}.payment-layout{gap:28px}}
@media(max-width:600px){.entry-steps,.entry-plans,.payment-layout{grid-template-columns:1fr}.entry-how,#entry-plans{padding:36px 0}.order-summary{grid-row:1}.upload-choice,.record-choice{padding:18px}#recorder-dialog,#review-dialog{width:100%;max-width:100%;margin:auto 0 0;border-radius:24px 24px 0 0;padding:24px}#recorder-dialog button{width:100%}.payment-page h1{font-size:2.5rem}}

#recorder-dialog audio[hidden],#recorder-dialog video[hidden]{display:none}

#recorder-dialog [hidden]{display:none!important}

/* Native control subparts can hold focus without matching host :focus-visible. */
input[type=date]:focus-within,input[type=datetime-local]:focus-within,audio:focus-within,video:focus-within{outline:3px solid var(--focus);outline-offset:4px}

/* Fidelity correction: approved S06 overview,actual server-derived state. */
.overview-panels{grid-template-columns:minmax(0,1.22fr) minmax(0,1fr);gap:20px;align-items:stretch}
.next-step{position:relative;overflow:hidden;padding:32px;min-height:0;display:flex;flex-direction:column;justify-content:center}
.next-step:after{content:"";position:absolute;right:-20px;bottom:-24px;width:180px;height:180px;background:url('ribbon.svg?v=d94c2dc9eaa4ce3d') center/contain no-repeat;opacity:.15;pointer-events:none}
.next-step>*{position:relative;z-index:1}.next-step .actions{margin-bottom:0}.next-step h2{max-width:460px;line-height:1.08;margin-bottom:24px}
.overview-stats{gap:12px}.overview-stats .panel{padding:22px 24px;display:grid;grid-template-columns:1fr auto;column-gap:16px;align-items:center}
.overview-stats h2,.overview-stats .stat-value{margin:0}.overview-stats h2{font:600 1rem 'Figtree',system-ui}.overview-stats .stat-value{font:1.45rem 'Newsreader',Georgia;text-align:right}
.overview-stats p:not(.stat-value),.overview-stats meter{grid-column:1/-1}.overview-stats p:not(.stat-value){font-size:.9rem;margin:8px 0 0}
meter{width:100%;height:10px;margin-top:12px;appearance:none;border:0;background:var(--line);border-radius:8px;overflow:hidden}meter::-webkit-meter-bar{background:var(--line);border:0}meter::-webkit-meter-optimum-value{background:var(--primary)}meter::-moz-meter-bar{background:var(--primary)}
.overview-timeline{margin:32px 0}.overview-timeline ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;list-style:none;padding:0}.overview-timeline li{border-top:2px solid var(--line);position:relative;padding-top:18px}.overview-timeline li:before{content:"";position:absolute;top:-9px;width:14px;height:14px;border:2px solid var(--muted);border-radius:50%;background:var(--surface)}.overview-timeline .done:before{background:var(--primary);border-color:var(--primary)}.overview-timeline .now:before{background:var(--decoration-one);border-color:var(--decoration-one)}.overview-timeline li span{font-size:.8rem;color:var(--muted)}.overview-timeline h3{font:1.2rem 'Newsreader',Georgia;margin:0 0 4px}.overview-timeline li p{font-size:.9rem;color:var(--muted)}.timeline-note{background:var(--notice);padding:16px;border-radius:14px;width:fit-content}
@media(max-width:900px){.overview-panels{grid-template-columns:1fr}.overview-stats{grid-template-columns:1fr}.overview-timeline ol{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:24px}}
@media(max-width:420px){.next-step{padding:24px}.overview-stats .panel{padding:20px}.overview-stats .stat-value{font-size:1.2rem}.overview-timeline ol{grid-template-columns:1fr}}

/* Test-only identity tools are outside product chrome,below the app. */
.test-harness{max-width:1440px;margin:auto;padding:20px var(--ff-gutter);border-top:1px dashed var(--line)}.test-harness:has([hidden]){display:none}.test-harness nav:before{content:"Local test identities (not sign-in)";width:100%;font-size:.8rem;color:var(--muted)}
.next-step button:not(.primary){background:transparent;color:var(--primary-ink);border-color:var(--primary-ink)}.next-step button:focus-visible{outline-color:var(--primary-ink)}
@media(min-width:760px) and (max-width:900px){.overview-panels{grid-template-columns:minmax(0,1.22fr) minmax(0,1fr)}.next-step{padding:24px}.next-step h2{font-size:2.1rem}.overview-stats .panel{padding:18px}.overview-stats .stat-value{font-size:1.1rem}.overview-timeline ol{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:759px){.overview-timeline ol{grid-template-columns:1fr}.overview-timeline li{border-top:0;border-left:2px solid var(--line);padding:0 0 20px 24px}.overview-timeline li:before{top:4px;left:-9px}.overview-timeline ol{gap:0}}

#organizer-overview:focus,#organizer-cards:focus{outline:none}
@media(max-width:759px){#app-navigation{position:fixed;top:auto;bottom:0;left:0;right:0;z-index:4;background:var(--surface);border-top:1px solid var(--line);border-bottom:0;padding:0 12px;padding-bottom:env(safe-area-inset-bottom);gap:0;justify-content:space-between}#app-navigation button{font-size:.75rem;min-height:64px;padding:12px 4px;border-bottom:0;border-top:3px solid transparent;white-space:normal}#app-navigation button[aria-current=page]{border-top-color:var(--decoration-one)}.overview-heading h1{font-size:2.5rem}.next-step .actions button{flex-grow:0}.next-step .actions{align-items:flex-start;flex-direction:column}.test-harness{padding-bottom:100px}}

body,input,textarea,select,button{font-family:Figtree,system-ui,sans-serif}.wordmark .brand-name{font-family:Figtree,system-ui,sans-serif}h1,h2,.letter{font-optical-sizing:auto}

/* Handoff typography,form width and row hierarchy. */
:root,[data-theme=original]{--ink:#3b1d2e;--muted:#6b5161;--surface:#fffdf9;--line:#ead8d3;--notice:#f4ebe6;--error:#8f1d33;--focus:#b8432f}
.app-header{min-height:80px;padding-block:14px;justify-content:flex-start;gap:16px}.wordmark .brand-name{font-size:21px;font-weight:650;letter-spacing:-.02em}.brand-mark{width:34px;height:34px}.wordmark small{display:none}
#workspace-anchor .workspace-trigger{border:1px solid var(--line);border-radius:12px;min-height:44px;padding:8px 14px;background:var(--surface)}
h1{font-size:clamp(1.75rem,1.3rem + 2vw,3rem);font-weight:500;line-height:1.08;letter-spacing:-.015em}.entry-page h1,.overview-heading h1,.collection-cover h1{font-size:clamp(2.125rem,1.2rem + 4vw,4.5rem);font-weight:400;line-height:1.02;letter-spacing:-.025em}
h2{font-weight:500}.workspace-page,.create-page,.composer-page{max-width:1000px;margin:auto}.workspace-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:32px}.workspace-heading p{margin:0;color:var(--muted)}.workspace-heading h1{margin:4px 0 0}.collection-picker .collection-grid{display:grid;grid-template-columns:1fr;gap:12px}.collection-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:24px;padding:22px 24px}.collection-row h3{font:500 1.4rem/1.2 Newsreader,Georgia,serif;margin:0 0 4px}.collection-row p{margin:0;color:var(--muted)}.collection-row .actions{margin:0}.collection-row .actions button{background:transparent;color:var(--primary);border:1px solid var(--line)}
.composer-page>.lede{font-size:.94rem;max-width:620px;margin-bottom:24px}.composer-layout{grid-template-columns:minmax(0,1fr) 300px;gap:40px;margin-top:24px}.composer-layout form{border:0;background:transparent;padding:0;border-radius:0}.composer-back{margin-bottom:24px}.quiet{background:transparent;border:0;text-decoration:underline;padding:0 4px;color:var(--primary)}.composer-layout textarea#text{padding:22px 24px;border-radius:22px;min-height:220px;font-size:1.75rem;line-height:1.5}.composer-layout .privacy-guide{padding:22px}.privacy-guide ol{list-style:none;padding:0}.privacy-guide li{padding:0 0 0 22px;position:relative;margin:16px 0}.privacy-guide li:before{content:"";position:absolute;left:0;top:7px;width:10px;height:10px;border:1px solid var(--muted);border-radius:50%}.privacy-guide li:first-child:before{background:var(--primary);border-color:var(--primary)}.privacy-guide strong{font-size:.94rem}.privacy-guide p{font-size:.85rem}.privacy-guide h2{font:500 1.25rem Newsreader,Georgia,serif}.composer-layout .private-gift{background:var(--surface);border:1px solid var(--line);margin-top:24px;padding:18px}.composer-actions{position:sticky;bottom:0;padding:14px 0;background:var(--bg);border:0;border-top:1px solid var(--line);border-radius:0;z-index:2}
.review-page{max-width:1120px}.review-heading{display:flex;justify-content:space-between;align-items:center;gap:24px}.review-heading p{font-size:.94rem;color:var(--muted)}.review-layout{grid-template-columns:240px minmax(0,1fr);gap:28px}.review-author{display:flex;gap:12px;align-items:center;margin-bottom:12px}.review-author h2{font:600 1rem Figtree,system-ui;margin:0}.review-list{border:0;background:transparent;padding:0}.review-list button{background:transparent;border-color:transparent;padding:12px}.review-list button[aria-current=true]{background:var(--surface);border-color:var(--line)}.review-list button span{margin-top:4px}.review-content .letter{font-size:1.875rem;line-height:1.45}.create-layout{grid-template-columns:minmax(0,1fr) 340px;gap:40px}.create-layout aside{border:0;background:var(--notice);font-size:.94rem}.create-layout aside h2{font-size:1.4rem}
@media(min-width:760px) and (max-width:1099px){.composer-layout{grid-template-columns:minmax(0,1fr) 300px;gap:24px}.create-layout{grid-template-columns:minmax(0,1fr) 250px;gap:24px}.review-layout{grid-template-columns:1fr}}
@media(max-width:759px){.workspace-heading{align-items:stretch;flex-direction:column;gap:16px}.collection-row{grid-template-columns:1fr;gap:12px}.collection-row .actions{justify-content:flex-end}.composer-layout,.create-layout{grid-template-columns:1fr;gap:24px}.composer-layout form{padding:0}.composer-layout textarea#text{font-size:1.5rem;padding:18px}.composer-actions{padding-bottom:calc(14px + env(safe-area-inset-bottom))}.review-heading{display:block}.review-content .letter{font-size:1.5rem}.review-page h1,.composer-page h1,.create-page h1,.contributor-page h1,.lifecycle-page h1{font-size:2rem}.overview-heading h1{font-size:2.5rem}.app-header{flex-wrap:nowrap}#workspace-anchor{flex:1;min-width:0}#workspace-anchor .workspace-trigger{font-size:.85rem;padding:6px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace-trigger .tag{display:none}}

/* Reference fidelity: compact author attachments and recipient cover. */
.media-panel{margin:24px 0}.media-panel h3{font-size:1rem}.attachment-preview{border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:12px;margin:12px 0}.attachment-preview summary{display:flex;align-items:center;gap:16px;padding:0;min-height:64px}.attachment-preview summary small{display:block;color:var(--muted);font-size:.85rem;font-weight:400}.attachment-symbol{display:grid;place-items:center;width:64px;height:64px;border-radius:12px;background:var(--art);font-size:28px;flex-shrink:0}.attachment-preview img,.attachment-preview video{display:block;margin:16px auto 0}.media-choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}.media-choices article{background:#f4ebe6;padding:18px 14px;border-radius:18px}.media-choices h4{margin:0 0 8px}.media-choices p{font-size:.82rem;color:var(--muted);min-height:40px;margin-bottom:12px}.media-choices button{font-size:.8rem;padding:9px 12px;margin:3px 0;min-height:44px}.upload-choice{background:transparent;padding:0;border:0}.upload-choice p{margin-top:12px}.media-panel>[data-upload-space]{font-size:.88rem;color:var(--muted)}
.collection-cover{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:56px;text-align:left;background:transparent;border:0;padding:24px 0 40px}.collection-cover h1{margin-inline:0}.collection-cover .eyebrow{font:italic 1.35rem Newsreader,Georgia,serif;letter-spacing:0;text-transform:none}.collection-art{height:360px;background:#f5d0be;border-radius:50% 50% 5px 5px;position:relative;overflow:hidden}.collection-art i{position:absolute;width:39%;height:52%;left:19%;top:31%;background:var(--surface);border-radius:14px;transform:rotate(-6deg)}.collection-art i+i{left:45%;top:27%;background:var(--bg);transform:rotate(4deg)}.collection-art:before,.collection-art:after{content:'';position:absolute;width:12px;height:12px;border-radius:50%;background:#df554a;left:30%;top:16%}.collection-art:after{left:85%;top:83%;background:var(--bg);width:9px;height:9px}.recipient-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.recipient-author{display:flex;gap:12px;align-items:center}.recipient-author strong{font-size:1rem}.recipient-grid .letter{font-size:1.45rem;line-height:1.4}.recipient-grid .card{padding:24px}.recipient-grid .avatar{flex-shrink:0;width:40px;height:40px}.recipient-grid .card>button{align-self:flex-start;margin-top:auto}
@media(max-width:1100px){.media-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-cover{gap:28px}.collection-art{height:280px}.recipient-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:759px){.collection-cover{grid-template-columns:1fr;gap:24px;padding-top:0}.collection-art{height:240px;max-width:440px;width:100%;margin:auto}.recipient-grid{grid-template-columns:1fr}.media-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.media-choices article{padding:16px}.recipient-grid .letter{font-size:1.35rem}}

.collection-cover{max-width:none}.collection-deadline{display:flex;align-items:center;justify-content:space-between;gap:24px;border:1px solid var(--line);border-radius:18px;background:var(--surface);padding:18px;margin:0 0 40px}.collection-deadline p{margin:0;font-size:.94rem}.collection-deadline button{flex-shrink:0}.review-content .media-panel>img,.review-content .media-panel>video{display:block;max-width:100%;margin:16px 0;border-radius:12px}.review-content .media-panel>audio{display:block;margin:16px 0}.review-content .media-panel>[data-upload-space]{display:none}
@media(max-width:759px){.collection-deadline{align-items:flex-start;flex-direction:column;gap:8px}.composer-page>.lede{font-size:.9rem;margin-bottom:16px}.composer-actions{gap:8px}.composer-actions button{font-size:.85rem;padding:10px 14px}.composer-actions button[data-action=home],.composer-actions .danger{flex-grow:0;background:transparent;border-color:transparent;min-height:40px;padding:6px 10px}}
@media(max-width:759px){.review-layout{grid-template-columns:minmax(0,1fr)}.review-layout>div{min-width:0}}

/* Reading and keepsake proportions follow the approved narrow reading column. */
.recipient-reading{max-width:720px}.recipient-reading .recipient-author{margin-bottom:24px}.recipient-reading .recipient-author h1{font:600 1rem Figtree,system-ui;margin:0}.recipient-reading>.recipient-author .avatar{flex-shrink:0}.recipient-reading .letter,.preview-page .letter{font-size:1.6rem;line-height:1.45}.recipient-reading .media-panel>h3,.preview-page .media-panel>h3{font-size:.85rem;color:var(--muted)}.recipient-reading .media-panel>img,.recipient-reading .media-panel>video,.preview-page .media-panel>img,.preview-page .media-panel>video{display:block;max-width:100%;margin:18px 0;border-radius:16px}.recipient-reading .media-panel>[data-upload-space],.preview-page .media-panel>[data-upload-space]{display:none}.recipient-reading .private-gift{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:16px;margin-top:24px}.card-neighbours{justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:28px}.keepsake-page{max-width:1000px;margin:auto}.keepsake-layout{grid-template-columns:minmax(0,1fr) 300px;gap:40px}.keepsake-layout>section{border:0;padding:0;background:transparent}.keepsake-layout>aside{padding:24px;font-size:.9rem}.keepsake-layout>aside h2{font-size:1.5rem}.keepsake-layout>section h2{font-size:2rem}.preview-page{max-width:760px}.preview-page>.notice{font-size:.9rem}.preview-page>.panel{padding:28px}.preview-page .private-gift{border:1px dashed var(--control-border);padding:16px;border-radius:16px}
@media(max-width:759px){.keepsake-layout{grid-template-columns:minmax(0,1fr);gap:24px}.recipient-reading .letter,.preview-page .letter{font-size:1.4rem}.preview-page>.panel{padding:20px}.card-neighbours{gap:12px}.card-neighbours button{font-size:.85rem}}

.presentation-page{max-width:1120px;margin:auto}.presentation-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;align-items:start}.presentation-layout>aside{background:var(--notice);border:0;font-size:.9rem;padding:24px}.presentation-layout>aside h2{font-size:1.4rem}.presentation-layout .notice{margin-top:0}.presentation-choices label{display:flex;align-items:flex-start;gap:12px;padding:16px;margin-bottom:12px;background:var(--surface)}.presentation-choices input{min-height:20px;min-width:20px;flex-shrink:0;margin:3px 0}.presentation-choices small{display:block;font-weight:400;overflow-wrap:anywhere;color:var(--muted)}.presentation-layout ul{padding-left:20px}.presentation-layout li{margin-bottom:14px}
@media(min-width:760px) and (max-width:1000px){.presentation-layout{grid-template-columns:minmax(0,1fr) 250px;gap:24px}}
@media(max-width:759px){.presentation-layout{grid-template-columns:minmax(0,1fr);gap:24px}.presentation-layout .actions button{font-size:.85rem;padding-inline:14px}}

.fixture-invitation{border:1px dashed var(--line);border-radius:12px;padding:10px 16px;margin:24px 0;background:transparent}.fixture-invitation summary{font-size:.85rem;color:var(--muted)}.fixture-invitation form{max-width:560px}.contributor-page>.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contributor-page{max-width:1000px}.contributor-page .card .letter{font-size:1.35rem;line-height:1.45}.lifecycle-panel{border:0;background:transparent;padding:0}.lifecycle-panel>.overview-timeline{margin-top:32px}.lifecycle-panel>.overview-timeline h2{display:none}.lifecycle-page{max-width:1120px;margin:auto}.lifecycle-panel>p:not(.tag){max-width:780px}.lifecycle-panel>.tag{margin-bottom:20px}
@media(max-width:759px){.contributor-page>.grid{grid-template-columns:minmax(0,1fr)}}

/* Approved People hierarchy: requests span the page{max-width:1056px}.people-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0 32px}.request-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;max-width:320px}.request-actions details{flex-basis:100%;font-size:.875rem}.member-rows{list-style:none;padding:0}.member-rows li{display:flex;gap:16px;align-items:center;padding:20px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.member-rows .avatar{flex-shrink:0}.invitation-panels{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;margin-top:24px}.invitation-panels form{display:grid;gap:14px}.invitation-panels .panel{padding:32px}.invitation-panels button{justify-self:start}
@media(max-width:759px){.invitation-panels{grid-template-columns:minmax(0,1fr)}.request-actions{max-width:none}.invitation-panels .panel{padding:24px}.people-tabs{margin:20px 0 24px}}.request-actions{max-width:360px;justify-content:flex-end}.request-actions>button{white-space:nowrap}.request-actions details{margin:0;padding-top:8px}
@media(max-width:759px){.request-actions{justify-content:flex-start}}

.contributor-after-access{max-width:560px;margin:72px auto}.contributor-after-access h1{font-size:2.5rem;line-height:1.15;margin:20px 0}.contributor-after-access>p{line-height:1.75}.contributor-after-access .notice{padding:18px;border-radius:16px}.lifecycle-page{max-width:1056px}.lifecycle-panel{border:0;background:none;padding:0}.lifecycle-explanation{padding:20px 24px;border-radius:16px;background:var(--selected);max-width:720px}.lifecycle-panel>details{margin-top:32px}.lifecycle-panel>.tag{margin-bottom:12px}
@media(max-width:759px){.contributor-after-access{margin:32px auto}.contributor-after-access h1{font-size:2rem}.lifecycle-explanation{padding:18px}}

.contributor-page .sectionhead{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.contributor-page .author-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:900px}.author-empty{max-width:720px;border:1px dashed var(--control-border);border-radius:20px;padding:28px}.author-empty h2{font-size:1.5rem}.author-empty p{margin-bottom:0}.author-card-grid .card{padding:24px}.author-card-grid .letter{font-size:1.15rem;line-height:1.6}
@media(max-width:759px){.contributor-page .author-card-grid{grid-template-columns:minmax(0,1fr)}}

/* Current-state fidelity: quiet status views without simulated progress. */
.scoped-author-page{max-width:960px}.scoped-author-page .contributor-dates{margin:24px 0}.scoped-author-page .author-card-grid{margin:28px 0}.keepsake-layout>section.panel{border:0;background:transparent;padding:0}.keepsake-page h1{max-width:780px}#export-job:not(:empty){margin:24px 0}#export-job .export-phase{display:inline-block;margin-bottom:14px}.session-notice{max-width:560px;margin:56px auto;padding:0;background:transparent;border:0}.session-notice h1{font-size:2.5rem}.loading-page{max-width:1056px;margin:auto}.skeleton-title,.skeleton-panels>div{background:var(--notice);border-radius:18px}.skeleton-title{width:55%;height:48px;margin:12px 0 24px}.skeleton-panels{display:grid;grid-template-columns:1.6fr 1fr;gap:24px}.skeleton-panels>div{height:300px}.loading-page>p{margin-top:24px}.recovery-panel{max-width:640px;border:1px solid var(--control-border);padding:32px}.recovery-panel h2{font-size:2rem}#recorder-dialog{max-width:560px}#recorder-dialog #recorder-status:focus{outline:3px solid var(--focus);outline-offset:3px}
@media(max-width:759px){.skeleton-panels{grid-template-columns:1fr}.skeleton-panels>div{height:240px}.session-notice{margin:32px auto}.session-notice h1{font-size:2rem}.recovery-panel{padding:24px}}

#recorder-dialog .recorder-close{width:44px;height:44px;min-height:44px;padding:0;border-radius:50%;font-size:1.5rem;line-height:1;margin-bottom:16px}.keepsake-page #keepsake-intro[hidden]{display:none}#export-job [data-media-action="retry-export"],#export-job [data-media-action="download-export"]{background:var(--primary);color:var(--primary-ink)}

#offline-notice{position:fixed;inset:auto 0 0;z-index:25;background:#5a3c00;color:#fff8ef;padding:12px 24px;text-align:center;font-size:.9375rem}#offline-notice[hidden]{display:none}@media(max-width:759px){#offline-notice{bottom:64px;padding:12px 20px}}

/* Recorder phase hierarchy: live preview precedes actions,matching the approved sheet. */
#recorder-dialog[open]{display:flex;flex-direction:column;gap:12px}#recorder-dialog>h2,#recorder-dialog>p{margin:0}#recorder-dialog .recorder-close{align-self:flex-end;margin:0!important}#recorder-dialog #recorder-help{color:var(--muted)}#recorder-dialog #recorder-limit{font-size:.85rem;padding:12px;border:0;border-radius:8px}#recorder-dialog #recorder-clock{font-variant-numeric:tabular-nums;font-weight:600}#recorder-dialog[data-phase=recording] #recorder-help,#recorder-dialog[data-phase=recording] #recorder-limit{display:none}#recorder-dialog video,#recorder-dialog audio{order:1;margin:0}#recorder-dialog button:not(.recorder-close){order:2;margin:0}#recorder-dialog[data-phase=recording] [data-media-action=stop]{background:var(--primary);color:var(--primary-ink)}#recorder-dialog[data-phase=recording] #recorder-status{border:0;padding:0;color:var(--muted)}

#recorder-dialog video{border-radius:16px;background:#251720;min-height:180px}#recorder-dialog #recorder-phase{background:#e6edf6;color:#23406b}#recorder-dialog [data-media-action=upload-recording]{background:var(--primary);color:var(--primary-ink)}

/* Product creation controls; test harness remains separate from managed chrome. */
.app-header #managed-auth.signed-in{margin:0 0 0 auto;padding:0;border:0;border-radius:0;max-width:360px;width:auto}.app-header #managed-auth.signed-in .auth-controls{display:flex;flex-direction:row;align-items:center;gap:12px}.app-header #managed-auth.signed-in #auth-status{font-size:.8rem;margin:0;max-width:220px}.demo[hidden]{display:none}.choice-group{border:0;padding:0;margin:0 0 24px;min-width:0}.choice-group legend{font-weight:600;margin-bottom:10px}.choice-card{display:flex;align-items:flex-start;gap:12px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-weight:400;margin:10px 0;cursor:pointer}.choice-card:has(input:checked){border-color:var(--primary)}.choice-card input{width:18px;height:18px;margin-top:4px;accent-color:var(--primary);flex:none}.choice-card small{display:block;color:var(--muted);margin-top:4px}.create-page .field[hidden]{display:none}.create-page .wizard-fields>p{font-size:.85rem;color:var(--muted)}
@media(max-width:759px){.app-header{flex-wrap:wrap}.app-header #managed-auth.signed-in{margin-left:auto}.app-header #managed-auth.signed-in #auth-status{max-width:150px}.create-page .actions>button{width:100%}.create-page .actions{display:flex;flex-direction:column}}

.entry-page .entry-art{min-height:320px;border-radius:999px 999px 8px 8px;overflow:hidden}.entry-page .entry-art:before,.entry-page .entry-art:after{content:'';width:9px;height:9px;border-radius:50%;background:var(--decoration-one);font-size:0;left:45%;top:8%;bottom:auto}.entry-page .entry-art:after{left:10%;top:85%;background:var(--primary)}.sample-note{position:absolute;left:10%;top:24%;width:72%;padding:24px 20px;border-radius:10px;background:var(--surface);color:var(--ink);box-shadow:0 6px 18px #54203d14;transform:rotate(-4deg);font:1.25rem/1.3 Newsreader,Georgia,serif}.sample-note small{display:block;margin-top:12px;font:.8rem/1.4 Figtree,system-ui}.sample-note.voice-note{left:25%;top:54%;width:66%;transform:rotate(4deg)}.entry-page .hero .actions{align-items:center}.entry-page .hero h1{max-width:640px}@media(max-width:759px){.entry-page .entry-art{max-width:420px;width:100%;justify-self:center;min-height:300px}.entry-page .hero{gap:32px}}
@media(max-width:759px){.app-header #managed-auth.signed-in{flex-basis:100%;max-width:none;display:flex;justify-content:flex-end}.app-header #managed-auth.signed-in .auth-controls{flex-direction:row}.app-header #workspace-anchor{min-width:130px}}

.payment-phase{margin:18px 0}.payment-phase[data-tone=warning]{background:#fcefcf;color:#5a3c00}.payment-phase[data-tone=success]{background:#e2efe3;color:#1f4d2b}.payment-phase[data-tone=info]{background:#e6edf6;color:#23406b}.payment-page .order-total{border-top:1px solid var(--line);margin-top:12px;padding-top:20px}.order-total dd{font:1.5rem Newsreader,Georgia,serif}.payment-page h1{font-size:clamp(2rem,3.8vw,3.25rem)}#checkout-panel [hidden],.payment-phase[hidden]{display:none!important}@media(max-width:759px){.payment-page .order-summary{grid-row:auto}.payment-page .payment-layout{gap:28px}.payment-page .order-summary{margin-top:8px}}

#recorder-dialog .recording-preview{order:1;position:relative}#recorder-dialog .recording-preview:has(video:not([hidden])){background:#251720;border-radius:16px;overflow:hidden}#recorder-dialog .recording-preview #recorder-clock{position:absolute;bottom:12px;left:12px;z-index:1;background:#160e14;color:#fff8ef;padding:4px 10px;border-radius:20px;margin:0}#recorder-dialog .recorder-close{order:-4}#recorder-dialog #recorder-phase{order:-3}#recorder-dialog #recorder-title{order:-2}

.payment-page:not([data-payment-phase=ready]) .lede{display:none}.payment-page[data-payment-phase=confirmed] .checkout-rule{display:none}#checkout-panel{display:flex;flex-wrap:wrap;align-items:center;gap:12px}#checkout-panel [role=status]{flex-basis:100%;order:-1;margin:0 0 8px}.payment-page .checkout-rule{font-size:.9rem;color:var(--muted)}

/* Approved workspace empty-state illustration; decorative only. */
.workspace-empty{text-align:left;padding:20px}.workspace-empty h2{font:500 26px var(--font-display,Newsreader,serif);margin:0 0 16px}.workspace-empty p{margin:0 0 30px}.empty-card-art{max-width:400px;margin:0 auto}.empty-card-art svg{display:block;width:100%;height:auto}
/* Payment progress uses the handoff's plain explanatory text,not an error panel. */
.payment-page .payment-layout>div>.eyebrow{display:none}
.payment-page .payment-phase{display:inline-flex;margin:18px 0}
.payment-page #checkout-panel [role=status]{padding:0;background:transparent;border-radius:0;color:var(--muted);font-size:1.125rem}
.payment-page[data-payment-phase=checking] .checkout-rule,.payment-page[data-payment-phase=opening] .checkout-rule{display:none}

/* Compact account disclosure preserves the existing sign-out/status controls. */
.account-menu{position:relative}.account-menu>summary{display:none}#managed-auth:not(.signed-in) .account-menu{border:0;padding:0;margin:0}
.app-header #managed-auth.signed-in{flex:0 0 auto;max-width:none;display:block;margin:0 0 0 auto}
.app-header .account-menu{border:0;padding:0;margin:0}.app-header .account-menu>summary{display:grid;place-items:center;list-style:none;width:44px;height:44px;border-radius:50%;background:var(--primary);color:var(--primary-ink);cursor:pointer}.account-menu>summary::-webkit-details-marker{display:none}
.app-header .account-menu .auth-controls{position:absolute;right:0;top:52px;z-index:8;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 8px 24px #3b1d2e20;width:260px;max-width:calc(100vw - 40px)}
.app-header .account-menu:not([open]) .auth-controls{display:none!important}
.join-panel{max-width:720px;margin:40px auto}.join-panel h1{max-width:650px}.join-panel>p{color:var(--muted)}.join-form{max-width:460px;margin:20px 0}.join-form .field{margin-bottom:14px}.join-form .muted{font-weight:400;color:var(--muted)}.join-signin{margin-top:28px}.join-signin summary{cursor:pointer;color:var(--muted)}.review-setting{display:flex;gap:8px;align-items:center;margin:10px 0 0;font-size:.95rem}.reveal-link{margin:20px 0}
@media(max-width:759px){.app-header{flex-wrap:nowrap}.app-header #workspace-anchor{min-width:0}.app-header #managed-auth.signed-in{flex-basis:auto}.join-panel{margin:20px 0}}

@media(min-width:760px){.workspace-page{max-width:976px;margin:32px auto 0}.workspace-empty{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:40px;padding:32px}.workspace-empty p{margin-bottom:0}.workspace-empty .empty-card-art{width:100%;max-width:none}}.people-tabs button{min-height:44px;padding:10px 18px;font-size:.875rem}

@media(min-width:1100px){.composer-page{max-width:1056px}.composer-layout{grid-template-columns:minmax(0,1fr) 360px}.composer-layout textarea#text{min-height:300px}.review-page{max-width:1216px}.review-layout{grid-template-columns:320px minmax(0,1fr);gap:24px}}
.review-list button{display:grid;grid-template-columns:40px minmax(0,1fr);gap:4px 12px;align-items:center}.review-list button .avatar{grid-row:1 / 3;width:40px;height:40px;margin:0;font:600 .875rem Figtree,system-ui}.review-list button .review-badge{justify-self:start;grid-column:2;font-size:.75rem;margin:0}.review-badge[data-review=pending]{background:#fcefcf;color:#5a3c00}.review-badge[data-review=approved]{background:#e2efe3;color:#1f4d2b}.review-badge[data-review=hidden]{background:var(--notice);color:var(--ink)}.review-actions{border-top:1px solid var(--line);padding-top:18px}.review-content>.small{margin-bottom:0}.privacy-guide p{font-size:.9375rem}

/* Submitted-card navigation matches the review surface; ordering remains separate. */
.review-card-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:24px}.review-pagination{display:flex;align-items:center;gap:10px;margin-left:auto;white-space:nowrap;font-size:.875rem}.review-pagination button{padding:0;width:44px;height:44px;border-color:var(--line)}.review-card-toolbar .review-drawer-trigger{font-size:.8125rem;padding:10px 14px}@media(max-width:360px){.review-card-toolbar{flex-wrap:wrap}.review-pagination{margin-left:0}}

.review-content .review-gift{border:1px dashed var(--control-line,var(--muted));border-radius:20px;padding:18px;margin-top:24px}.review-gift summary{font-weight:700}.review-gift #gift-detail>p{font-size:.9375rem;line-height:1.55}

.invitation-copy-row{display:flex;gap:10px;align-items:center;margin-top:14px}.invitation-copy-row textarea{flex:1;min-width:0;margin:0;resize:none}.invitation-copy-row .actions{margin:0;flex:none}.invitation-copy-row button{font-size:.8125rem;padding:14px 16px}@media(max-width:480px){.invitation-copy-row{flex-direction:column;align-items:stretch}.invitation-copy-row .actions{align-self:flex-start}.invitation-copy-row textarea{flex:auto;width:100%}}

@media(max-width:759px){body:has(#app-navigation:not([hidden])) #status{bottom:calc(80px + env(safe-area-inset-bottom))}}

/* Review list and selected-card hierarchy from the approved responsive handoff. */
.review-layout>.review-list{border:0;padding:0;background:transparent}.review-layout>.review-list>summary{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.review-list button{border-color:transparent;background:transparent;border-radius:18px;padding:16px}.review-list button[aria-current=true]{border-color:var(--control-border);background:var(--surface)}.review-list button .avatar{background:#f6d0bf}.review-list button:hover{background:var(--hover)}.review-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.review-dialog-heading h2{font:600 1rem/1.5 Figtree,system-ui;margin:0}.review-dialog-heading button{padding:0;min-width:44px;height:44px;font-size:1.5rem;border-color:var(--line)}#review-dialog .review-list{border:0;background:transparent;padding:0}#review-dialog .review-list button{margin:0}#review-dialog .small{margin:22px 0 0}
@media(min-width:1001px){.review-card-toolbar{display:none}.review-content>.review-badge{float:right;margin-top:-48px}.review-content .letter{font-size:1.75rem;line-height:1.5}.review-actions button:nth-last-child(2){margin-left:auto}}
@media(max-width:599px){#review-dialog{inset:132px 0 64px;margin:0;width:100%;max-width:none;height:calc(100dvh - 196px);max-height:none;border:0;border-radius:0;background:var(--bg);padding:28px 38px}#review-dialog::backdrop{background:rgba(255,248,239,.9)}#review-dialog .review-list{gap:10px}}

.composer-help{color:var(--muted);font-size:.9375rem;margin-top:-12px;margin-bottom:28px}.composer-layout textarea#text{font-size:1.5rem;line-height:1.5}@media(min-width:1100px){.composer-layout textarea#text{font-size:1.75rem}}

.review-list button .avatar{display:grid;place-items:center}.review-dialog-page-heading{display:none}#review-dialog .review-list button[aria-current=true]{background:var(--surface);border-color:var(--control-border)}@media(max-width:599px){#review-dialog::backdrop{background:transparent}.review-dialog-page-heading{display:block;margin-bottom:56px}.review-dialog-page-heading h2{font:400 2rem/1.15 Newsreader,Georgia,serif;margin-bottom:20px}.review-dialog-page-heading p{color:var(--muted)}#review-dialog{padding:28px 20px}#review-dialog .review-dialog-heading,#review-dialog .review-list,#review-dialog>.small{margin-left:18px;margin-right:18px}}

@media(min-width:600px) and (max-width:1000px){#review-dialog{inset:var(--review-top,166px) auto 0 0;margin:0;width:380px;max-width:70vw;height:calc(100dvh - var(--review-top,166px));max-height:none;border:0;border-radius:0 24px 24px 0;background:var(--bg);padding:18px}#review-dialog::backdrop{clip-path:inset(var(--review-top,166px) 0 0 0)}}@media(max-width:599px){#review-dialog{top:var(--review-top,132px);height:calc(100dvh - var(--review-top,132px) - 64px)}}

.composer-conflict{background:#fbe1e3;color:var(--error);padding:20px;border-radius:18px;margin-bottom:28px}.composer-conflict p{margin:10px 0;font-weight:400}.composer-conflict .actions{margin-bottom:0}.composer-conflict #conflict-copy-status:empty{display:none}.private-gift[open]>p.small:first-of-type{background:var(--selected);padding:16px;border-radius:12px}.composer-layout .private-gift .two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.composer-conflict .actions{gap:8px}.composer-conflict .actions button{font-size:.8125rem;padding:10px 12px;flex:1 1 auto}.composer-layout .private-gift .two{align-items:end}.composer-layout .private-gift textarea{min-height:96px}body:has(.composer-actions) #status{bottom:110px}@media(max-width:759px){body:has(.composer-actions) #status{bottom:calc(150px + env(safe-area-inset-bottom))}}

@media(min-width:600px){.composer-conflict .actions button{flex:0 1 auto}}

/* Composer actions follow the full card form,as in the approved handoff. */
.composer-actions{position:static}

.composer-layout .media-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.composer-layout .private-gift>summary{display:flex;gap:14px;align-items:center}.composer-layout .private-gift>summary::before{content:"✦";display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:10px;background:var(--primary);color:#fb9b83}.composer-layout .private-gift>summary::after{content:"▾";margin-left:auto}.composer-layout .private-gift[open]>summary::after{content:"▴"}.composer-layout .private-gift>summary::-webkit-details-marker{display:none}

.attachment-row{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:12px;margin:12px 0}.attachment-row .attachment-preview{flex:1;min-width:0;border:0;padding:0;margin:0}.attachment-row>button{font-size:.8125rem;padding:10px 14px;align-self:flex-start;margin-top:10px}@media(max-width:400px){.attachment-row{flex-wrap:wrap}.attachment-row>.attachment-preview{flex-basis:100%}.attachment-row>button{margin-top:0}}

/* Composer saved state is based on current fields,never a fabricated timestamp. */
.composer-save-feedback{font-size:.9rem;font-weight:600;color:#245b34;margin:24px 0 12px}.composer-save-feedback[data-dirty="true"]{color:var(--muted)}.composer-more{margin:24px 0}.composer-more summary{font-size:.85rem;color:var(--muted)}.composer-layout .media-choices button{display:block;width:max-content;max-width:100%}.composer-actions{gap:12px}.composer-actions>button{flex:1}.composer-more button{margin-top:12px}

.voice-player{display:flex;align-items:center;gap:14px;background:#f4ebe6;border-radius:20px;padding:16px;margin:20px 0;flex-wrap:wrap}.voice-player .voice-toggle{width:48px;height:48px;min-height:48px;flex:none;border:0;border-radius:50%;padding:0;background:var(--primary);color:white;font-size:20px}.voice-seek{flex:1;min-width:40px;width:auto;accent-color:var(--primary);padding:0;height:24px;border:0;box-shadow:none}.voice-time{font-size:.875rem;color:var(--muted);font-variant-numeric:tabular-nums}.voice-error:empty{display:none}.voice-error{flex-basis:100%;font-size:.875rem}.attachment-preview .voice-player{margin-bottom:0}.voice-player audio[hidden]{display:none}

@media(min-width:1280px){.app-header,#app-navigation{max-width:1280px;padding-left:32px;padding-right:32px}}
.voice-seek{-webkit-appearance:none;appearance:none;background:transparent}.voice-seek::-webkit-slider-runnable-track{height:6px;background:#e9d8d1;border-radius:99px}.voice-seek::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--primary);margin-top:-4px}.voice-seek::-moz-range-track{height:6px;background:#e9d8d1;border-radius:99px}.voice-seek::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:var(--primary)}

@media(min-width:760px){.composer-layout .media-choices button{display:inline-block;margin-right:6px}.composer-layout .private-gift .two{grid-template-columns:minmax(0,1fr)120px}.composer-actions{justify-content:flex-end}.composer-actions>button{flex:none}}
.review-gift-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.review-gift-heading h3{font-size:1rem;margin:0}.review-gift-heading h3:before{content:"✦ ";}.review-gift-heading button{font-size:.8125rem;min-height:44px;padding:8px 16px}.review-gift #gift-detail>p{margin:0}.review-gift .gift-readonly-note{padding:12px;background:#f0e3ed;border-radius:10px;color:var(--primary);margin-top:16px!important}

.review-gift-fields{display:grid;grid-template-columns:76px minmax(0,1fr);gap:10px;margin:16px 0}.review-gift-fields dt{color:var(--muted)}.review-gift-fields dd{margin:0;overflow-wrap:anywhere}.voice-seek{margin:0;min-height:0}.review-content .voice-player{padding:14px 16px}
.composer-layout .private-gift[open]{border-color:var(--primary)}.composer-layout .private-gift>p.small{background:#f0e3ed}.composer-layout textarea[name=delivery_details]{min-height:54px;height:54px}.composer-layout textarea#text{min-height:250px}
@media(min-width:760px){.composer-layout textarea#text{font-size:1.75rem;min-height:300px}}
@media(max-width:1099px){.composer-layout .attachment-row{flex-wrap:wrap}.composer-layout .attachment-row>.attachment-preview{flex-basis:100%}.composer-layout .attachment-row>button{margin-top:0}.composer-layout .media-choices button{display:block;width:max-content;max-width:100%}}
.composer-layout .private-gift[open]>p.small:first-of-type{background:#f0e3ed}
@media(max-width:359px){.wordmark .brand-name{display:none}.composer-layout .media-choices{grid-template-columns:1fr}.composer-layout .media-choices button{display:inline-block;margin-right:6px}.composer-layout .private-gift .two{grid-template-columns:1fr}.composer-actions{flex-direction:column;align-items:stretch}.composer-actions>button{width:100%}}
@media(min-width:760px){.review-content>.review-badge{float:right;margin-top:-48px}.review-content .review-author{padding-right:140px}.review-content .letter{font-size:1.75rem;line-height:1.5}.review-actions button:nth-last-child(2){margin-left:auto}}.reveal-tabs{margin-bottom:24px;gap:8px}.reveal-tabs button{font-size:.875rem;border-radius:99px;min-height:44px}

/* Reveal tiles retain the approved readable hierarchy on narrow screens. */
@media(max-width:759px){.reveal-counts strong{font-size:3rem}.reveal-counts span{font-size:1rem}.reveal-counts small{font-size:.875rem}.reveal-counts>div{min-height:170px}.reveal-layout .actions{margin-bottom:0}}

.collection-media-tags{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}.collection-media-tags:empty{display:none}.keepsake-layout aside ul{padding-left:20px}.keepsake-layout aside li{margin-bottom:10px}.keepsake-layout aside h3{font:600 .875rem Figtree,system-ui;color:var(--muted)}.keepsake-page>.eyebrow{text-transform:none;letter-spacing:0}.keepsake-layout #keepsake-intro{font-size:1.25rem;line-height:1.5}.keepsake-layout aside{font-size:1rem}

.collection-removal-notice{border:1px solid var(--line);border-radius:18px;background:var(--surface);padding:20px;margin:0 0 24px}

.recipient-grid>section.panel{grid-column:1/-1}

.keepsake-phase{display:inline-flex;margin:4px 0 18px;font-weight:600}.keepsake-phase[hidden]{display:none}.keepsake-phase:before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:8px}.keepsake-phase.phase-ready{color:#194d2e;background:#e0f0e5}.keepsake-phase.phase-failed{color:#a81b36;background:#fce1e6}#export-job>p:first-child{font-size:1.125rem;line-height:1.5}#export-job>.notice{font-size:1rem;padding:16px;border-radius:16px}@media(max-width:759px){.keepsake-page h1{font-size:2rem}}

.keepsake-page{max-width:1056px}.keepsake-layout{grid-template-columns:minmax(0,1fr)380px;gap:40px}@media(min-width:760px) and (max-width:1099px){.keepsake-layout{grid-template-columns:minmax(0,1fr)300px;gap:40px}}@media(max-width:759px){.keepsake-layout{grid-template-columns:minmax(0,1fr)}}

.recipient-waiting{max-width:560px;margin:40px auto;text-align:center}.recipient-waiting h1{font-size:2.5rem;line-height:1.1}.waiting-art{width:280px;height:310px;max-width:100%;margin:0 auto 24px;background:#f5d0be;border-radius:50% 50% 4px 4px;position:relative}.waiting-art:after{content:'';position:absolute;width:44%;aspect-ratio:1;border-radius:50%;background:var(--surface);top:32%;left:28%}.recipient-reading .recipient-author h1{font:500 1.5rem Newsreader,Georgia,serif}.recipient-reading .recipient-author .avatar{width:52px;height:52px;background:#f5d0be}.recipient-reading .private-gift.recipient-gift{border:1px dashed var(--primary);padding:24px;border-radius:24px}.recipient-gift summary{display:flex;align-items:center;gap:16px}.recipient-gift summary small{display:block;font-weight:400;color:var(--muted);margin-top:4px}.gift-star{display:grid;place-items:center;width:40px;height:40px;min-width:40px;background:var(--primary);color:var(--primary-ink);border-radius:12px}.recipient-gift>p:first-of-type{font:1.5rem/1.4 Newsreader,Georgia,serif}.recipient-reading .voice-player{border:1px solid var(--line);background:var(--surface);border-radius:20px;padding:18px}@media(max-width:759px){.recipient-waiting h1{font-size:2rem}.recipient-waiting{margin:48px auto}.recipient-reading .letter{font-size:1.5rem;line-height:1.4}}

/* Recipient attachment cards: real authorized media,no invented file metadata. */
.recipient-files h2{font:600 1rem Figtree,system-ui;margin:24px 0 12px}.recipient-attachment{display:flex;align-items:flex-start;gap:16px;padding:20px 16px;border:1px solid var(--line);border-radius:20px;background:var(--surface);margin:8px 0}.recipient-attachment>div{min-width:0}.recipient-attachment strong{overflow-wrap:anywhere}.recipient-attachment p{font-size:.875rem;color:var(--muted);margin:4px 0 12px}.recipient-attachment .attachment-symbol{flex-shrink:0;background:#f5d0be;border-radius:12px;display:grid;place-items:center;width:44px;height:44px;font-size:.8rem}.recipient-reading .attachment-list{display:flex;gap:12px;flex-wrap:wrap}

.recipient-page.recipient-reading{max-width:720px}.recipient-reading .media-panel>img{width:100%;height:auto;object-fit:contain}.recipient-reading .voice-player:before{content:"Voice message";grid-column:2;grid-row:1;font-weight:600}.recipient-reading .voice-toggle{grid-row:1 / 3}.recipient-reading .voice-seek{grid-column:2;grid-row:2}.recipient-reading .voice-time{grid-column:3;grid-row:1 / 3}.recipient-reading .external-attachment{border-style:dashed;background:transparent}.recipient-links strong{overflow-wrap:anywhere}

.recipient-reading .voice-player{display:grid;grid-template-columns:48px minmax(0,1fr) auto;column-gap:14px;row-gap:4px}.recipient-reading .voice-error{grid-column:1 / -1}

.recipient-gift-link{border:1px dashed var(--line);border-radius:16px;padding:16px;margin:16px 0}.recipient-gift-link strong{overflow-wrap:anywhere}.recipient-gift-link p{font-size:.875rem;color:var(--muted)}

.recipient-gone{max-width:736px;margin:48px auto}.recipient-gone .composer-back{margin-bottom:36px}.recipient-gone>.panel{border-radius:28px;padding:32px}.recipient-gone h1{font-size:3rem;line-height:1.1;margin:0 0 20px}.recipient-gone p{line-height:1.65;color:var(--muted)}.recipient-gift-link a{display:inline-block;margin-top:8px}.recipient-attachment.external-attachment a{display:inline-block;margin-top:8px}@media(max-width:759px){.recipient-gone{margin:48px auto}.recipient-gone>.panel{padding:20px;border-radius:24px}.recipient-gone h1{font-size:2rem}.recipient-gone .composer-back{margin-bottom:32px}}

/* Main already supplies the reference top gutter. */
.recipient-gone{margin-top:-16px}.recipient-gone .composer-back{margin-bottom:20px}@media(max-width:759px){.recipient-gone{margin-top:-16px}.recipient-gone .composer-back{margin-bottom:32px}}

.presentation-page{max-width:1056px}.presentation-page .presentation-layout{grid-template-columns:minmax(0,1fr) 360px;gap:40px}.presentation-page .reveal-tabs{margin-bottom:24px}.presentation-layout h1{font-size:3rem;line-height:1.1;margin:0 0 28px}.presentation-layout>aside{background:#f4ebe6;border-radius:24px}.presentation-choices label:has(input:checked){border-color:var(--primary)}#tv-selection-count{font-weight:600;margin:24px 0 10px}.presentation-choices label{margin-bottom:8px}.presentation-choices span{min-width:0}.presentation-layout .notice{border:0;background:#fcf0cd;color:#60420c;padding:18px;border-radius:18px}@media(min-width:760px) and (max-width:1000px){.presentation-page .presentation-layout{grid-template-columns:minmax(0,1fr) 250px;gap:24px}}@media(max-width:759px){.presentation-page .presentation-layout{grid-template-columns:minmax(0,1fr)}.presentation-layout h1{font-size:2rem}.presentation-page .reveal-tabs{display:flex;gap:8px}}

.presentation-page .reveal-tabs{display:flex;gap:8px}.presentation-page .reveal-tabs .quiet{border:1px solid var(--control-border);border-radius:999px;text-decoration:none;padding:10px 18px}.presentation-page .presentation-layout>aside{font-size:1rem}.presentation-choices strong{font-weight:600}

.tv.showing-card{background:#1d111b;color:#fff7ed;min-height:100vh}.tv.showing-card main{max-width:1164px;padding:24px 32px}.show-heading{display:flex;justify-content:space-between;gap:24px;border:0;padding:0;color:#e5c5d4;background:transparent}.show-heading span:first-child{font:600 1.125rem Newsreader,Georgia,serif}.tv.showing-card .letter{margin:96px auto 32px;font-size:clamp(2rem,4.5vw,4.5rem);line-height:1.25;text-wrap:balance;letter-spacing:-.015em;max-width:none}.tv.showing-card .show-author{font-weight:600;font-size:1.25rem;color:#ffac89;margin:24px 0}.tv.showing-card .actions{margin-top:80px}.tv.showing-card button{background:transparent;color:#fff7ed;border-color:#967488}.tv.showing-card [data-action=next]{background:#ffac89;color:#351428;border-color:#ffac89}.tv.showing-card video,.tv.showing-card img{display:block;margin:24px auto;border-radius:20px}.tv.showing-card button:focus-visible{outline-color:#ffac89}@media(max-width:759px){.tv.showing-card main{padding:20px}.tv.showing-card .letter{margin-top:104px}.tv.showing-card .actions{gap:10px;display:flex;flex-wrap:wrap}.tv.showing-card button{width:auto}.tv.showing-card .actions [data-action=end]{flex-basis:120px}}

.tv .theme-caption:empty{display:none}.tv.showing-card .show-heading{flex-direction:row;align-items:center;position:static}.tv.showing-card .show-author{text-align:left}.tv.showing-card main{min-height:100vh}

.tv.showing-card video{width:100%;aspect-ratio:16/9;object-fit:contain;background:#352433}.tv.showing-card .actions{padding-bottom:20px}

.lifecycle-page .lifecycle-panel>.tag,.lifecycle-page .lifecycle-panel>p.muted{display:none}.lifecycle-page .lifecycle-explanation{background:#f4ebe6}.lifecycle-zone{color:var(--muted);margin-bottom:28px}.lifecycle-page .overview-timeline{margin-top:28px}

.tv.showing-card video{max-height:38vh!important}.lifecycle-page .phase-grace .lifecycle-explanation{background:#fcf0cd;color:#60420c}.lifecycle-page .timeline-note,.lifecycle-page .overview-timeline+p.small{display:none}.lifecycle-page .overview-timeline li.skipped h3{text-decoration:line-through;color:var(--muted)}.lifecycle-page .overview-timeline li.skipped:before{background:var(--surface);border-color:var(--line)}.lifecycle-page .lifecycle-panel>[data-action=keepsake]{margin-top:24px}@media(max-width:759px){.lifecycle-page .lifecycle-panel>[data-action=keepsake]{width:100%}}

.lifecycle-page h1{max-width:none}

#confirm-action{width:min(580px,calc(100% - 40px));border:0;background:var(--bg)}#confirm-title{font-size:1.75rem;line-height:1.2}#confirm-message ul{padding-left:20px;margin:20px 0 24px}#confirm-message li{margin:8px 0}#confirm-action .primary.danger{background:#971b35;border-color:#971b35;color:#fff}#confirm-action .actions{gap:10px}@media(max-width:600px){#confirm-action{width:100%;padding:24px 20px}#confirm-title{font-size:1.5rem}}

/* Approved switcher: compact desktop popover and mobile bottom sheet. */
#workspace-dialog{width:420px;padding:8px;position:fixed;margin:0;top:144px;left:var(--switcher-left,20px);max-height:calc(100dvh - 164px);border-radius:20px;box-shadow:0 24px 60px #35142826}.sheet-heading{padding:8px 10px}.sheet-heading h2{font:600 .8125rem Figtree,system-ui;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.sheet-heading button{border-radius:50%;min-width:44px}.sheet-collections{gap:2px;margin:0 0 8px}.sheet-collections button{border:0;background:transparent;border-radius:14px;padding:12px 16px 12px 46px;position:relative;gap:6px 10px;line-height:1.4}.sheet-collections button[aria-current=page]{background:#f8efeb}.sheet-collections button[aria-current=page]:before{content:'✓';position:absolute;left:14px;top:13px;color:var(--coral,#df5147);font-weight:700}.sheet-collections .tag{font-size:.75rem;padding:2px 10px}.sheet-collections button>span:last-child{font-size:.875rem;color:var(--muted)}.sheet-footer{padding:12px;gap:2px}.sheet-footer button{border:0;background:transparent;text-align:left;padding:8px 0}.sheet-footer p{margin:12px 0 0;font-size:.8125rem}@media(max-width:600px){#workspace-dialog{width:100%;left:0;top:auto;bottom:0;margin:0;max-height:85dvh;padding:8px;border-radius:24px 24px 0 0}.sheet-heading{padding:8px 12px}.sheet-footer{padding:12px}.sheet-collections strong{overflow-wrap:anywhere}}

.sheet-collections button{font-weight:400}.sheet-collections strong{font-weight:600}.sheet-collections [data-sheet-role=organizer] .tag{background:#f6d0c1}.sheet-collections [data-sheet-role=contributor] .tag{background:#f0e3ed}.sheet-collections [data-sheet-role=recipient] .tag{background:#e4edf6}

.sheet-skeleton{display:grid;gap:8px;margin:16px 2px}.sheet-skeleton i{height:64px;border-radius:14px;background:#f4ebe6}.sheet-skeleton i:nth-child(2){opacity:.7}.sheet-skeleton i:nth-child(3){opacity:.45}#workspace-content>p{padding:0 10px;font-size:.875rem;color:var(--muted)}

@media(min-width:601px){#workspace-dialog::backdrop{background:transparent}.sheet-heading{padding:0 10px;min-height:44px}.sheet-heading button{min-height:44px;padding:0;width:44px}}

.media-detail h1{font-size:1.75rem;line-height:1.2;overflow-wrap:anywhere;margin:8px 0 20px}.media-detail .media-view video{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;background:#160e15;border-radius:20px}.media-detail .media-view .media-panel{padding:0;border:0}.media-detail .composer-back button{padding:0;border:0;background:transparent;text-decoration:underline}.media-detail #media-view-status{font-size:.875rem;color:var(--muted)}@media(max-width:600px){.media-detail h1{font-size:1.5rem}}

.media-details{margin-top:24px;padding:22px;border-radius:22px}.media-details dl{margin:0 0 16px}.media-details dl>div{display:flex;gap:16px;margin:8px 0}.media-details dt{color:var(--muted);min-width:34px}.media-details dd{margin:0}.media-details>button{width:100%}.media-playback-error{background:#160e15;color:#fff7ed;padding:32px 24px;border-radius:20px;text-align:center}.media-playback-error h2{font:700 1.25rem Figtree,system-ui}.media-playback-error p{color:#e5c5d4}.media-detail [hidden]{display:none!important}

.media-playback-error .primary{background:#ffac89;border-color:#ffac89;color:#351428}

.media-detail .media-view{position:relative;margin:0}.media-detail .media-view[aria-busy=true]{border:0;padding:0;background:#160e15;border-radius:20px;aspect-ratio:16/9}.media-detail .media-view[aria-busy=true]>.media-panel{display:none}.media-detail .media-view[aria-busy=true]>#media-view-status{position:absolute;inset:0;display:grid;place-content:center;text-align:center;margin:0;padding:24px;color:#fff7ed}.media-detail[data-media-kind=pdf] .media-view{border:1px solid var(--line);border-radius:20px;min-height:300px;display:grid;place-content:center;padding:32px;text-align:center}.media-detail[data-media-kind=pdf] #media-view-status{font-size:1rem}.media-detail .media-playback-error{min-height:220px;display:grid;align-content:center;justify-items:center}
@media(min-width:760px){.recipient-page.media-detail{max-width:1056px;display:grid;grid-template-columns:minmax(0,1fr) 300px;column-gap:40px;align-items:start}.media-detail>.composer-back{grid-column:1/-1;margin-bottom:32px}.media-detail>p.muted{grid-column:1;grid-row:2;margin:0 0 8px}.media-detail>h1{grid-column:1;grid-row:3}.media-detail>.media-view{grid-column:1;grid-row:4}.media-detail>.media-details{grid-column:2;grid-row:2/5;margin:0}.media-detail>#error{grid-column:1/-1}.media-detail[data-media-kind=pdf] .media-view{min-height:500px}}

@media(min-width:1000px){.recipient-page.media-detail{grid-template-columns:minmax(0,656px) minmax(280px,360px)}}

.media-playback-error{aspect-ratio:16/9}.media-detail-unavailable{max-width:720px}.media-detail-unavailable h1{font-size:1.75rem}.media-detail-unavailable .panel{padding:28px;border-radius:22px}.media-detail-unavailable .panel h2{font-size:1.5rem}

.media-playback-error{width:100%;min-width:0;aspect-ratio:auto}@media(min-width:760px){.media-playback-error{aspect-ratio:16/9}}

.preview-page.reading{max-width:756px}.preview-page .composer-back{margin-bottom:32px}.preview-page .composer-back button{padding:0;border:0;background:transparent;text-decoration:underline}.preview-notice{background:#f1e4ec;border-radius:16px;padding:14px 18px;margin:0 0 22px}.preview-page>.panel{padding:32px;border-radius:28px}.preview-author{font-size:.875rem;font-weight:600;color:var(--muted);margin:0 0 16px}.preview-page .letter{font-size:30px;line-height:1.45;text-wrap:pretty;margin:0 0 20px}.preview-page img[data-private-media]{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;border-radius:16px;max-height:none!important;background:#f8eee8}.preview-page .media-panel{padding:0;border:0;margin:0 0 20px}.preview-page .private-gift{margin:20px 0 0;padding:20px;background:transparent;border:1px dashed var(--primary);border-radius:20px}.preview-page .private-gift summary{font-size:.875rem}.preview-actions{margin-top:24px}.preview-actions [data-action=savepreview]{background:transparent;border:0;text-decoration:underline}#confirm-action[data-variant=submit]{width:min(520px,calc(100% - 40px))}#confirm-action[data-variant=submit] .actions{display:grid;grid-template-columns:1.2fr 1fr}
@media(max-width:600px){.preview-page>.panel{padding:20px}.preview-page .letter{font-size:23px}.preview-actions{display:grid;grid-template-columns:1fr}.preview-actions button{width:100%}#confirm-action[data-variant=submit]{width:100%}#confirm-action[data-variant=submit] .actions{grid-template-columns:1fr}}

@media(max-width:600px){#confirm-action[data-variant=submit]{position:fixed;top:50%;bottom:auto;left:16px;right:16px;transform:translateY(-50%);margin:0;width:auto;max-height:calc(100dvh - 32px);overflow:auto;border-radius:28px}#confirm-action[data-variant=submit] .actions{grid-template-columns:1.1fr 1fr}#confirm-action[data-variant=submit] .actions button{min-width:0;padding:14px 10px}}

@media(max-width:359px){.preview-page .letter{font-size:21px}}

#attachment-download-status[data-state=failed]{background:#fbe1e3;color:#8f1d33;border-radius:18px;padding:18px;margin-top:16px;font-weight:500}#attachment-download-status[data-state=failed]:focus{outline:3px solid var(--focus);outline-offset:3px}

.media-detail-unavailable.reading{max-width:1056px}.media-detail-unavailable>.panel{max-width:656px;padding:32px;border-radius:24px}.media-detail-unavailable .panel h2{font-size:28px}@media(max-width:759px){.media-detail-unavailable>.panel{padding:20px}.media-detail-unavailable .panel h2{font-size:22px}}

.sheet-selection-error{margin:0 12px 16px;padding:12px 16px;border-radius:14px;background:#fbe1e3;color:#8f1d33}.sheet-selection-error:focus{outline:3px solid var(--focus);outline-offset:2px}.sheet-collections button.sheet-unavailable{opacity:1;background:var(--notice);color:var(--muted);cursor:default}

#managed-auth.auth-card.session-ended{margin:24px 0 0;padding:0;border:0;background:transparent;max-width:none}#managed-auth.auth-card.session-ended>.auth-intro{display:none}#managed-auth.session-ended .auth-controls{align-items:stretch}
/* On an invitation the panel above already explains sign-in; show just the button. */
.join-panel #managed-auth.auth-card{display:block;margin:24px 0 0;padding:0;border:0;background:transparent;max-width:none}.join-panel #managed-auth.auth-card>.auth-intro{display:none}.join-panel #managed-auth .auth-controls{align-items:flex-start}.join-panel #managed-auth #auth-start{min-width:240px}

/* S23 loading geometry from the approved responsive handoff. */
main:has(>.loading-page){max-width:1360px;padding:32px 72px 90px}
.loading-page{max-width:none}
.skeleton-title{width:60%;height:72px;margin:0 0 20px;border-radius:14px;background:#f4ebe6}
.skeleton-panels{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:20px}
.skeleton-panels>div{height:280px;border-radius:28px;background:#efe3dd}
.skeleton-panels>div+div{border-radius:22px;background:#f4ebe6}
.loading-page>p{margin-top:20px;font-size:15px;color:var(--muted)}
@media(min-width:760px) and (max-width:1099px){main:has(>.loading-page){padding:32px 44px 90px}.skeleton-title{height:56px}}
@media(max-width:759px){main:has(>.loading-page){padding:20px 20px 90px}.skeleton-title{height:40px}.skeleton-panels{grid-template-columns:1fr}.skeleton-panels>div{height:280px}}
@media(max-width:359px){.skeleton-title{height:34px}}

/* S28 after-access reading frame: retain truthful lifecycle disclosures. */
.contributor-after-access{max-width:616px;margin:28px auto}
.contributor-after-access h1{font-size:48px}
.contributor-after-access>.eyebrow{text-transform:none;letter-spacing:0;font-size:14px}
.contributor-after-access>p:not(.eyebrow):not(.small){font-size:18px;line-height:1.55}
@media(min-width:760px) and (max-width:1099px){.contributor-after-access{max-width:none;margin:20px 4px}.contributor-after-access h1{font-size:40px}}
@media(max-width:759px){.contributor-after-access{margin:20px auto}.contributor-after-access h1{font-size:32px}}
@media(max-width:359px){.contributor-after-access h1{font-size:28px}}

/* S12 persistent recording type and responsive camera frame. */
#recorder-dialog .recorder-heading{order:-4;display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--muted);font-size:14px;font-weight:600}
#recorder-dialog .recorder-heading .recorder-close{order:0;flex:0 0 44px}
#recorder-dialog .recording-preview video:not([hidden]){width:100%;height:auto;aspect-ratio:16/9;min-height:0;object-fit:contain}
@media(max-width:600px){#recorder-dialog{padding:20px}}

/* Public entry stays visible until the existing sign-in anchor is opened. */
#managed-auth.entry-collapsed:not(:target){display:none}
body:has(#managed-auth.entry-collapsed:target) #main{display:none}
#entry-signin[hidden]{display:none}
#entry-signin{font-size:14px;border-radius:999px;padding:8px 18px;min-height:40px}

/* Shared display sizes explicitly supplied by the responsive handoff. */
.entry-page .hero h1,.overview-heading h1,.collection-cover h1,.contributor-heading h1,.scoped-author-page h1{font-size:72px;font-weight:400;line-height:1.02;letter-spacing:-.025em}
.entry-page .hero h1{text-wrap:balance}
@media(min-width:760px) and (max-width:1099px){.entry-page .hero h1,.overview-heading h1,.collection-cover h1,.contributor-heading h1,.scoped-author-page h1{font-size:56px}}
@media(max-width:759px){.entry-page .hero h1,.overview-heading h1,.collection-cover h1,.contributor-heading h1,.scoped-author-page h1{font-size:40px}}
@media(max-width:359px){.entry-page .hero h1,.overview-heading h1,.collection-cover h1,.contributor-heading h1,.scoped-author-page h1{font-size:34px}}

/* Handoff narrow layout begins below 760px,including the 720px reflow case. */
@media(min-width:601px) and (max-width:759px){main,.app-header{padding-left:20px;padding-right:20px}}

/* S01 public entry: shared handoff proportions,section rhythm and type. */
main:has(>.entry-page){max-width:none;padding:0}
.entry-page{max-width:none;--entry-gutter:72px;--entry-section:72px;--entry-heading:48px}
.entry-page .hero{max-width:1360px;margin:0 auto;padding:var(--entry-section) var(--entry-gutter);grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:40px}
.entry-page .hero>div:first-child{display:flex;flex-direction:column;gap:24px;min-width:0}
.entry-page .hero>div:first-child>*{margin:0}
.entry-page .hero>.entry-art{aspect-ratio:1/1.02;min-height:0;max-height:560px;max-width:none;width:100%;border-radius:999px 999px 28px 28px}
.entry-page .hero .eyebrow{display:none}
.entry-page .hero .lede{max-width:44ch;font-size:19px;line-height:1.55;text-wrap:pretty}
.entry-page .hero>div:first-child>p:last-child{font-size:15px;color:var(--muted)}
.entry-page .hero a.button{min-height:52px;padding:14px 24px;line-height:24px}
.entry-page .sample-note{left:12%;top:22%;width:72%;padding:22px 24px;border-radius:16px;transform:rotate(-3deg);font-size:20px;line-height:1.35}
.entry-page .sample-note.voice-note{left:24%;top:50%;width:68%;transform:rotate(2.5deg);background:var(--bg)}
.entry-page .entry-how{background:var(--surface);border-block:1px solid var(--line);padding:var(--entry-section) max(var(--entry-gutter),calc((100% - 1216px)/2))}
.entry-page .entry-how h2,.entry-page #entry-plans>h2{font-size:var(--entry-heading);font-weight:500;line-height:1.1;letter-spacing:-.015em;margin:0 0 32px}
.entry-page .entry-steps{grid-template-columns:repeat(3,minmax(0,1fr))}
.entry-page .entry-occasions{max-width:1360px;margin:auto;padding:var(--entry-section) var(--entry-gutter) 0}.entry-page .entry-occasions h2{font-size:var(--entry-heading);font-weight:500;line-height:1.1;letter-spacing:-.015em;margin:0 0 32px}.entry-page .entry-occasions .entry-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
.entry-page .entry-steps article{display:flex;flex-direction:column;gap:8px;padding-top:18px}
.entry-page .entry-steps article>*{margin:0}
.entry-page .entry-steps .eyebrow{font-size:14px;line-height:1;color:#d95148}
.entry-page .entry-steps h3{font:500 24px/1.2 Newsreader,Georgia,serif}
.entry-page .entry-steps article>p:last-child{color:var(--muted)}
.entry-page #entry-plans{max-width:1360px;margin:auto;padding:var(--entry-section) var(--entry-gutter);border:0}
.entry-page .entry-plans{gap:20px}.entry-page .entry-plans article{padding:32px;border-radius:24px}
.entry-page .entry-plans h3{font:500 30px/1.1 Newsreader,Georgia,serif}.entry-page .plan-price{font-size:22px;font-weight:500}
.entry-page #entry-plans details{max-width:760px}
.entry-page footer{padding:28px var(--entry-gutter);font-size:14px;color:var(--muted)}
@media(min-width:760px) and (max-width:1099px){.entry-page{--entry-gutter:44px;--entry-heading:40px}.entry-page .entry-how{padding-inline:44px}.entry-page .entry-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:759px){.entry-page{--entry-gutter:20px;--entry-section:40px;--entry-heading:32px}.entry-page .hero{grid-template-columns:1fr;gap:24px}.entry-page .entry-steps,.entry-page .entry-occasions .entry-steps,.entry-page .entry-plans{grid-template-columns:1fr}.entry-page .entry-plans article{padding:20px}.entry-page .entry-how{padding-inline:20px}}
@media(max-width:359px){.entry-page{--entry-heading:28px}}

@media(max-width:759px){.scoped-author-page>[data-action="new-member-card"]{width:100%}}

/* Landing illustration (replaces the arch artwork). */
.entry-illustration{display:block;width:100%;max-width:560px;height:auto;justify-self:center;align-self:center}
.member-rows .member-name{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.member-rows .member-name small{color:var(--muted)}
.member-rows li>button{flex-shrink:0}
.media-item{margin:0 0 16px}.media-item figcaption{font-size:.875rem;color:var(--muted);margin-top:6px}
/* Neutral first paint while the saved sign-in is checked,so signed-in people never see the signed-out page flash. */
#boot-loading{display:none}.auth-pending #boot-loading{display:flex;align-items:center;gap:12px;max-width:1200px;margin:auto;padding:44px var(--ff-gutter,40px);color:var(--muted);opacity:0;animation:boot-loading-in .2s ease-out .4s forwards}.spinner{display:inline-block;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-3px;flex:0 0 auto}@keyframes spin{to{transform:rotate(360deg)}}button.is-busy,.button.is-busy{position:relative;color:transparent!important;pointer-events:none}button.is-busy::after,.button.is-busy::after{content:'';position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid var(--ink);border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}button.primary.is-busy::after{border-color:var(--primary-ink);border-right-color:transparent}#net-bar{position:fixed;top:0;left:0;height:3px;width:0;background:var(--primary);z-index:20;opacity:0;transition:opacity .2s}.net-busy #net-bar{opacity:1;animation:net-bar 1.6s ease-out infinite}@keyframes net-bar{0%{width:0}60%{width:70%}100%{width:95%}}@media(prefers-reduced-motion:reduce){.spinner,button.is-busy::after,.button.is-busy::after{animation-duration:2s}.net-busy #net-bar{animation:none;width:95%}}@keyframes boot-loading-in{to{opacity:1}}.auth-pending .demo,.auth-pending #app-navigation,.auth-pending #managed-auth,.auth-pending #entry-signin,.auth-pending #recovery-panel,.auth-pending main,.auth-pending .test-harness,.auth-pending #offline-notice{display:none!important}@media(prefers-reduced-motion:reduce){.auth-pending #boot-loading{animation-duration:0s}}

/* Header menus (2026-11-04): the celebration switcher opens directly under its button,and the account menu reads as a menu. */
.workspace-trigger{display:inline-flex;align-items:center;gap:8px}#workspace-anchor .workspace-trigger{max-width:min(440px,100%)}.workspace-trigger-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-trigger .tag{flex:0 0 auto}.workspace-chevron{flex:0 0 auto;margin-left:auto;color:var(--muted);transition:transform .15s}.workspace-trigger[aria-expanded=true] .workspace-chevron{transform:rotate(180deg)}
#workspace-dialog{position:fixed;margin:0;top:var(--switcher-top,72px);left:var(--switcher-left,16px);width:var(--switcher-width,400px);max-width:calc(100vw - 32px);max-height:calc(100dvh - var(--switcher-top,72px) - 16px);padding:6px;border-radius:16px;box-sizing:border-box;overflow:auto;box-shadow:0 18px 48px #3514282e,0 2px 6px #3514281a}
#workspace-dialog .sheet-heading{display:flex;align-items:center;justify-content:space-between;min-height:40px;padding:4px 6px 4px 12px}
#workspace-dialog .sheet-heading h2{font:600 .75rem Figtree,system-ui;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0}
#workspace-dialog [data-sheet-close]{display:grid;place-items:center;width:36px;height:36px;min-width:0;min-height:0;padding:0;border:0;border-radius:10px;background:transparent;color:var(--muted)}#workspace-dialog [data-sheet-close]:hover{background:var(--hover);color:var(--ink)}
#workspace-dialog .sheet-collections{display:block;margin:0}
.sheet-group+.sheet-group{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.sheet-group h3{font:600 .8125rem Figtree,system-ui;color:var(--muted);margin:0;padding:8px 12px 4px}
#workspace-dialog .sheet-collections button{display:grid;grid-template-columns:minmax(0,1fr) 20px;grid-template-rows:auto auto;align-items:center;gap:0 12px;width:100%;min-height:52px;padding:8px 12px;border:0;border-radius:10px;background:transparent;text-align:left;line-height:1.35}
#workspace-dialog .sheet-collections button:before{content:none}#workspace-dialog .sheet-collections button:hover{background:var(--hover)}
#workspace-dialog .sheet-collections button[aria-current=page]{background:#f8efeb}
#workspace-dialog .sheet-collections strong{width:auto;grid-column:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#workspace-dialog .sheet-phase{grid-column:1;font-size:.8125rem;color:var(--muted)}
#workspace-dialog .sheet-current{grid-column:2;grid-row:1 / 3;color:var(--coral,#df5147);display:grid;place-items:center}
#workspace-dialog .sheet-hint{margin:6px 12px 2px;font-size:.8125rem;color:var(--muted)}
.sheet-empty{padding:12px 12px 16px}.sheet-empty p{margin:0;font-size:.875rem;color:var(--muted)}.sheet-empty .sheet-empty-title{font:500 1.25rem/1.3 Newsreader,Georgia,serif;color:var(--ink);margin-bottom:6px}.sheet-empty button{margin-top:12px}
#workspace-dialog .sheet-footer{display:block;border-top:1px solid var(--line);margin-top:6px;padding:6px 0 0}
#workspace-dialog .sheet-create{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:8px 12px;border:0;border-radius:10px;background:transparent;font-weight:600;text-align:left}#workspace-dialog .sheet-create:hover{background:var(--hover)}
.sheet-create-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--primary);color:var(--primary-ink);font-size:1.1rem;line-height:1}
#workspace-content>p{padding:0 12px}#workspace-dialog .sheet-skeleton{margin:6px}#workspace-dialog .sheet-skeleton i{height:52px;border-radius:10px}
@media(min-width:601px){#workspace-dialog::backdrop{background:transparent}}
@media(max-width:600px){#workspace-dialog{top:auto;bottom:0;left:0;width:100%;max-width:100%;max-height:85dvh;padding:8px 8px calc(12px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;border-bottom:0}#workspace-dialog:before{content:'';display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:4px auto 6px}#workspace-dialog::backdrop{background:rgba(45,15,34,.4)}#workspace-dialog .sheet-collections button{min-height:56px}}

/* Account menu */
.app-header .account-menu>summary{position:relative;font:600 1.05rem Figtree,system-ui}.account-menu.has-initial>summary svg{display:none}.account-menu:not(.has-initial) .account-initial{display:none}
.app-header #managed-auth.signed-in .account-menu .auth-controls{display:flex;flex-direction:column;align-items:stretch;gap:0;right:0;top:calc(100% + 8px);width:280px;max-width:calc(100vw - 32px);padding:6px;border-radius:16px;box-shadow:0 18px 48px #3514282e,0 2px 6px #3514281a}
.app-header #managed-auth.signed-in .account-identity{padding:10px 12px 12px;border-bottom:1px solid var(--line);margin-bottom:6px;min-width:0}
.account-identity p{margin:0}.account-identity .account-label{font-size:.75rem;color:var(--muted)}.account-identity .account-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-identity .account-email{font-size:.8125rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-identity .account-email:empty{display:none}
.app-header #managed-auth.signed-in #auth-logout{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px 12px;border:0;border-radius:10px;background:transparent;text-align:left;font-weight:500}.app-header #managed-auth.signed-in #auth-logout:hover{background:var(--hover)}.app-header #managed-auth.signed-in #auth-logout svg{color:var(--muted)}
.app-header #managed-auth.signed-in #auth-status{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#auth-logout svg{display:none}.app-header #managed-auth.signed-in #auth-logout svg{display:block}

/* DS1 recipient reveal: opening moment,photo collage (replaces the arch slab),photo tiles,inline players. */
.reveal-opening{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:56px;align-items:center;padding:24px 0 40px}
.reveal-opening:not(:has(.reveal-collage)){grid-template-columns:1fr}
.reveal-text>.eyebrow{font:italic 1.35rem Newsreader,Georgia,serif;letter-spacing:0;text-transform:none;margin-bottom:8px}
.reveal-opening h1{margin:0;font-size:clamp(2.125rem,1.2rem + 4vw,4.5rem);font-weight:400;line-height:1.02;letter-spacing:-.025em}
.reveal-opening .reveal-from{font-weight:600;color:var(--muted);margin:16px 0 8px}
.reveal-collage{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:10px;align-self:center;aspect-ratio:3/2;width:100%}
.reveal-collage[data-count="1"]{grid-template-columns:1fr}
.reveal-collage[data-count="2"]{grid-template-columns:1fr 1fr}
.reveal-collage[data-count="4"]{grid-template-columns:1fr 1fr;aspect-ratio:1}
.reveal-collage[data-count="5"] .collage-tile:first-child{grid-row:span 2}
.collage-tile{display:block;overflow:hidden;border-radius:16px;background:var(--art);min-height:0}
.collage-tile:nth-child(3n+1){transform:rotate(-1.5deg)}.collage-tile:nth-child(3n+2){transform:rotate(1deg)}
.collage-tile img{width:100%;height:100%;object-fit:cover;display:block}
.collage-name{display:grid;place-content:center;text-align:center;color:var(--art-ink);padding:8px}
.collage-name b{font:400 clamp(2rem,5vw,3.5rem)/1 Newsreader,Georgia,serif}
.collage-name small{font-size:.85rem;overflow-wrap:anywhere}
.reveal-opening.is-opening .reveal-text>*{animation:reveal-rise .7s cubic-bezier(.2,.7,.2,1) both}
.reveal-opening.is-opening .reveal-text>h1{animation-delay:.12s}.reveal-opening.is-opening .reveal-text>.lede{animation-delay:.22s}.reveal-opening.is-opening .reveal-text>.reveal-from{animation-delay:.32s}.reveal-opening.is-opening .reveal-text>.actions{animation-delay:.42s}
.reveal-opening.is-opening .collage-tile{animation:reveal-tile .8s cubic-bezier(.2,.7,.2,1) both}
.reveal-opening.is-opening .collage-tile:nth-child(2){animation-delay:.1s}.reveal-opening.is-opening .collage-tile:nth-child(3){animation-delay:.2s}.reveal-opening.is-opening .collage-tile:nth-child(4){animation-delay:.3s}.reveal-opening.is-opening .collage-tile:nth-child(5){animation-delay:.4s}.reveal-opening.is-opening .collage-tile:nth-child(6){animation-delay:.5s}
@keyframes reveal-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes reveal-tile{from{opacity:0;scale:.9}to{opacity:1;scale:1}}
.recipient-tile{display:flex;flex-direction:column;gap:12px}
.recipient-tile .letter{margin:0}
.tile-thumb{position:relative;display:block;width:100%;padding:0;border:0;border-radius:14px;overflow:hidden;aspect-ratio:4/3;background:var(--art);min-height:0}
.tile-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tile-more{position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.62);color:#fff;border-radius:999px;padding:4px 10px;font-size:.85rem;font-weight:600}
.inline-player{display:flex;align-items:center;gap:12px;width:100%;justify-content:flex-start;text-align:left}
.inline-icon{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--primary);color:var(--primary-ink);flex:none;font-size:.9rem}
.recipient-tile video{width:100%;max-height:26rem;border-radius:14px;background:#000}
.recipient-tile .actions,.recipient-tile>button:last-child{margin-top:auto}
@media(max-width:759px){.reveal-opening{grid-template-columns:1fr;padding-top:0}.reveal-collage{margin:20px 0 8px}}

/* Recipient Play all player. */
.recipient-player{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--tv-bg);color:var(--tv-ink);overscroll-behavior:contain}
.recipient-player[open]{display:flex;flex-direction:column}
.recipient-player::backdrop{background:var(--tv-bg)}
.recipient-player .player-head{max-width:none;width:auto;margin:0;border:0;background:transparent;position:static;display:flex;flex-direction:column;gap:10px;padding:12px 16px 0;color:var(--tv-muted)}
.player-steps{display:flex;gap:4px}.player-steps i{flex:1;height:3px;border-radius:2px;background:rgba(255,255,255,.22);transition:background .3s}.player-steps i.done,.player-steps i.now{background:var(--tv-control)}.player-steps i.now{opacity:.75}
.player-bar{display:flex;align-items:center;gap:12px;min-height:40px}
.player-title{font:600 .95rem Figtree,system-ui,sans-serif;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tv-muted)}
.player-count{font-size:.85rem;white-space:nowrap}
.player-close{width:40px;height:40px;min-width:0;min-height:0;padding:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:var(--tv-ink);border:1px solid rgba(255,255,255,.25)}
.player-stage{flex:1;min-height:0;overflow:auto;padding:16px;display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:16px;text-align:center;-webkit-overflow-scrolling:touch}
.player-media{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:1100px;width:100%}
.player-media img,.player-media video{max-height:min(58vh,640px);width:auto;max-width:100%;object-fit:contain;border-radius:16px;background:#000}
.player-media[data-many] img,.player-media[data-many] video{max-height:min(34vh,360px)}
.player-media audio{width:min(480px,100%)}
.player-letter{font:400 clamp(1.2rem,.9rem + 1.5vw,2.3rem)/1.45 Newsreader,Georgia,serif;max-width:880px;white-space:pre-wrap;margin:0;overflow-wrap:anywhere}
.player-author{color:var(--tv-control);font-weight:600;font-size:1rem;margin:0}
.player-controls{display:flex;gap:18px;justify-content:center;align-items:center;padding:10px 16px calc(14px + env(safe-area-inset-bottom))}
.player-controls button{width:48px;height:48px;min-width:0;min-height:0;padding:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:var(--tv-ink);border:1px solid rgba(255,255,255,.3)}
.player-controls .primary{width:60px;height:60px;background:var(--tv-control);color:var(--tv-control-ink);border-color:var(--tv-control)}
.player-controls .primary.is-text{width:auto;border-radius:999px;padding:0 24px;font-weight:600}.player-controls .primary.is-text .player-icon{display:none}
.player-controls .player-icon{display:grid;place-items:center;line-height:0}.player-controls .player-icon svg{display:block}.player-controls .player-label:empty{display:none}
.player-controls button:focus-visible,.player-close:focus-visible{outline:3px solid var(--tv-focus);outline-offset:3px}
@media(min-width:900px){.recipient-player .player-head{padding:16px 28px 0}.player-stage{padding:24px 28px}.player-controls{padding-bottom:24px}}
body.player-open{overflow:hidden;position:fixed;width:100%}

/* DS2 shared screen: cover collage,play status,end card. */
.tv-collage{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:760px;margin:28px auto;aspect-ratio:3/2}
.tv-collage[data-count="1"]{grid-template-columns:1fr}.tv-collage[data-count="2"]{grid-template-columns:1fr 1fr}.tv-collage[data-count="4"]{grid-template-columns:1fr 1fr}
.tv-collage img{width:100%;height:100%;object-fit:cover;border-radius:16px;display:block;min-height:0}
.tv .cover-from{font-weight:600}
.tv .play-status{color:var(--tv-muted);font-size:.9rem;margin:12px 0 0;min-height:1.2em}
.tv.showing-card .play-status{color:#e5c5d4}
.tv.showing-card [data-action=toggle]{background:#ffac89;color:#351428;border-color:#ffac89}
.tv.showing-card [data-action=next]{background:transparent;color:#fff7ed;border-color:#967488}
.end-card{padding:6vh 0 3vh}
.end-card .made-with{margin-top:40px;font:italic 1.2rem Newsreader,Georgia,serif;color:var(--tv-muted)}

/* EN12 in-app browser sign-in. */
.inapp-note{background:var(--notice);border-radius:12px;padding:10px 14px;font-size:.95rem}
.inapp-signin{max-width:min(480px,calc(100vw - 32px));border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);padding:24px}
.inapp-signin::backdrop{background:rgba(30,15,25,.5)}
.inapp-signin .actions{flex-direction:column;align-items:stretch}
.inapp-signin .actions>*{width:100%;text-align:center}
/* Upload progress (page card and recorder). */
.upload-progress{margin:0 0 18px;padding:16px 18px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.upload-progress[hidden]{display:none!important}
.upload-progress-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.upload-progress-row span{font-variant-numeric:tabular-nums;font-weight:600}
.upload-progress progress{display:block;width:100%;height:8px;margin:10px 0 6px;border:0;border-radius:4px;overflow:hidden;background:#efe3dc;accent-color:var(--primary);-webkit-appearance:none;appearance:none}
.upload-progress progress::-webkit-progress-bar{background:#efe3dc;border-radius:4px}.upload-progress progress::-webkit-progress-value{background:var(--primary);border-radius:4px;transition:width .2s}.upload-progress progress::-moz-progress-bar{background:var(--primary);border-radius:4px}
.upload-progress progress:indeterminate{background:linear-gradient(90deg,#efe3dc 0 30%,var(--primary) 30% 60%,#efe3dc 60%) 0 0/300% 100%;animation:upload-pulse 1.4s linear infinite}.upload-progress progress:indeterminate::-webkit-progress-bar{background:transparent}
@keyframes upload-pulse{to{background-position:-150% 0}}@media(prefers-reduced-motion:reduce){.upload-progress progress:indeterminate{animation:none}}
.upload-progress p{margin:0 0 10px;color:var(--muted)}.upload-progress button{min-height:44px}
#recorder-dialog .upload-progress{order:2;margin:0}
/* Video recording: fullscreen camera on phones,roomier dialog elsewhere. */
#recorder-dialog[data-kind=video]{max-width:720px;width:min(720px,calc(100% - 40px))}
#recorder-dialog[data-kind=video][data-phase=recording] #record-preview{transform:scaleX(-1)}
@media(max-width:600px){
 html:has(#recorder-dialog[data-kind=video][open]){overflow:hidden}
 #recorder-dialog[data-kind=video]{position:fixed;inset:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;overflow:hidden;padding:calc(12px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));background:#160e14;color:#fff8ef}
 #recorder-dialog[data-kind=video]::backdrop{background:#160e14}
 #recorder-dialog[data-kind=video] .recorder-heading,#recorder-dialog[data-kind=video] #recorder-help{color:#e9d9d3}
 #recorder-dialog[data-kind=video] #recorder-title{font-size:1.5rem}
 #recorder-dialog[data-kind=video] #recorder-limit{background:#2b1d26;color:#f1e3dd}
 #recorder-dialog[data-kind=video] .recording-preview{order:1;flex:1 1 auto;min-height:0;display:flex;background:#251720;border-radius:16px;overflow:hidden}
 #recorder-dialog[data-kind=video] .recording-preview video:not([hidden]){flex:1;width:100%;height:100%;min-height:0;aspect-ratio:auto;border-radius:0;object-fit:contain;background:#000}
 #recorder-dialog[data-kind=video][data-phase=recording] .recording-preview video{object-fit:cover}
 #recorder-dialog[data-kind=video] .recording-preview #recorder-clock{top:12px;bottom:auto;left:50%;transform:translateX(-50%);background:#c8312bcc}
 #recorder-dialog[data-kind=video] .recording-preview #recorder-clock:before{content:'';display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:#fff;vertical-align:1px}
 #recorder-dialog[data-kind=video]>button{order:2;flex:0 0 auto;width:100%;min-height:52px;background:transparent;color:#fff8ef;border-color:#fff8ef66}
 #recorder-dialog[data-kind=video] #recorder-start,#recorder-dialog[data-kind=video] [data-media-action=stop],#recorder-dialog[data-kind=video] [data-media-action=upload-recording]{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}
 #recorder-dialog[data-kind=video] [data-media-action=stop]{background:#c8312b;border-color:#c8312b;color:#fff}
 #recorder-dialog[data-kind=video] .recorder-close{background:transparent;color:#fff8ef;border-color:#fff8ef66}
 #recorder-dialog[data-kind=video][data-phase=recording] #recorder-title,#recorder-dialog[data-kind=video][data-phase=recording] #recorder-phase,#recorder-dialog[data-kind=video][data-phase=recording] #recorder-status,#recorder-dialog[data-kind=video][data-phase=ready] #recorder-help{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 #recorder-dialog[data-kind=video] .upload-progress{background:#2b1d26;border-color:#3d2a35;color:#fff8ef}#recorder-dialog[data-kind=video] .upload-progress p{color:#e9d9d3}
 #recorder-dialog[data-kind=video] .upload-progress button{background:transparent;color:#fff8ef;border-color:#fff8ef66}
}
@media(max-width:600px){#recorder-dialog[data-kind=video]:is([data-phase=idle],[data-phase=pending]) .recording-preview:before{content:'Your camera appears here after you tap Start recording';margin:auto;padding:16px;color:#b8a3ab;font-size:.9rem;text-align:center}}
@media(max-width:600px){#recorder-dialog[data-kind=video] #recorder-start,#recorder-dialog[data-kind=video] [data-media-action=upload-recording]{background:#ffac89;border-color:#ffac89;color:#351428}#recorder-dialog[data-kind=video] #recorder-status{background:transparent;border:0;padding:0;color:#fff8ef}#recorder-dialog[data-kind=video] #recorder-status:focus-visible{outline:2px solid #ffac89;outline-offset:4px}}
/* CU1 busy buttons */
button[aria-busy=true]{cursor:progress;opacity:.8}
button[aria-busy=true]:before{content:'';display:inline-block;width:.85em;height:.85em;margin-right:.5em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-.1em;animation:busy-spin .8s linear infinite}
@keyframes busy-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){button[aria-busy=true]:before{animation:none;border-right-color:currentColor;opacity:.5}}
/* CU2 media loading note */
.media-load-note{margin:.25rem 0 0;color:var(--muted,#6b5a62)}
/* CU4 level meter,CU5 camera switch */
#recorder-dialog .recorder-level{order:0}
#recorder-dialog .level-track{height:8px;border-radius:8px;background:#e9dde1;overflow:hidden}
#recorder-dialog .level-track span{display:block;height:100%;width:0;background:#2f8a5b;border-radius:8px;transition:width 80ms linear}
#recorder-dialog .recorder-level[data-level=high] .level-track span{background:#d08a1b}
#recorder-dialog .recorder-quiet{order:0;margin:0}
#recorder-dialog[data-facing=environment][data-phase=recording] #record-preview{transform:none}
/* B1-B3 plans,currency switch,upgrade */
.currency-switch{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.currency-switch button{min-height:36px;padding:4px 12px;font-size:.9rem}
.currency-switch button[aria-pressed=true]{background:var(--ink,#3b1d2e);color:var(--paper,#fff8ef);border-color:transparent}
.upgrade-panel{margin:16px 0}
.upgrade-panel form{display:grid;gap:12px}
.entry-page .entry-plans{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
/* DS5: compact attachment choices on phones */
@media(max-width:600px){.media-choices{grid-template-columns:1fr!important;gap:8px}.media-choices article{display:grid;grid-template-columns:1fr auto auto;align-items:center;column-gap:8px;padding:10px 14px;min-height:0}.media-choices article h4{margin:0;grid-column:1}.media-choices article p{grid-column:1;grid-row:2;margin:0;font-size:13px}.media-choices article button{grid-row:1/3;margin:0}}
/* Media placeholders: a soft shimmer until the first frame or picture arrives,with a thin bar when the size is known. No running percentages. */
.media-frame{position:relative;border-radius:14px;overflow:hidden;width:fit-content;max-width:100%}
.media-frame[data-kind=video]{width:100%;background:#111}
.media-frame video{display:block;width:100%;max-height:28rem;background:#111}
.media-frame.media-loading{min-height:12rem;min-width:min(100%,16rem);background:linear-gradient(100deg,var(--badge) 20%,var(--surface) 40%,var(--badge) 60%) 0 0/200% 100%;animation:media-shimmer 1.4s linear infinite}
.media-frame.media-loading[data-kind=video]{aspect-ratio:16/9;min-height:0}
.media-frame.media-loading>img,.media-frame.media-loading>video{opacity:0}
.media-frame.media-loading::after{content:'';position:absolute;left:0;bottom:0;height:3px;width:calc(var(--loaded,0)*100%);background:var(--primary);transition:width .3s}
.media-frame.media-loading[data-kind=video]::before{content:'▶';position:absolute;inset:0;margin:auto;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.45);color:#fff;font-size:1.2rem;z-index:1}
.tile-video{margin:0}
.inline-player.is-loading{position:relative;overflow:hidden}
.inline-player.is-loading .inline-icon{font-size:0}
.inline-player.is-loading .inline-icon::before{content:'';width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:media-spin .8s linear infinite}
.inline-player.is-loading::after{content:'';position:absolute;left:0;bottom:0;height:3px;width:calc(var(--loaded,0)*100%);background:var(--primary);transition:width .3s}
.media-unavailable{color:var(--muted)}
@keyframes media-shimmer{to{background-position:-200% 0}}
@keyframes media-spin{to{transform:rotate(1turn)}}
@media(prefers-reduced-motion:reduce){.media-frame.media-loading,.inline-player.is-loading .inline-icon::before{animation:none}}
/* Card order: numbered badges on the cards,and a list for changing the order. */
.sectionhead-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.section-note{margin:6px 0 0;color:var(--muted)}
.card{position:relative}.order-badge{position:absolute;top:16px;right:16px;min-width:30px;height:30px;padding:0 8px;border-radius:15px;display:grid;place-items:center;background:var(--selected);border:1px solid var(--line);font-weight:650;font-size:.85rem}
.order-list{list-style:none;margin:0;padding:0;display:grid;gap:10px;max-width:760px}
.order-row{display:flex;align-items:center;gap:14px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;cursor:grab}
.order-row.is-dragging{opacity:.45}.order-row.drop-before{box-shadow:0 -3px 0 var(--primary)}.order-row.drop-after{box-shadow:0 3px 0 var(--primary)}
.order-handle{color:var(--muted);font-size:1.2rem;line-height:1}
.order-number{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--badge);font-weight:650}
.order-who{flex:1;min-width:0;display:flex;flex-direction:column}.order-who small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.order-moves{display:flex;gap:6px;flex:none}.order-moves button{min-width:46px;padding:8px 0;font-size:1.1rem}
@media(pointer:coarse){.order-row{cursor:default}.order-handle{display:none}}
@media(max-width:520px){.order-row{gap:10px;padding:10px}.order-number{width:28px;height:28px}}
.media-detail:not([data-media-kind=pdf]) .media-view[aria-busy=false]>#media-view-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#recorder-dialog[data-paused=true] .recording-preview #recorder-clock{background:#3d3540e6}#recorder-dialog[data-paused=true] .recording-preview #recorder-clock:before{border-radius:1px;width:3px;box-shadow:5px 0 0 #fff;margin-right:13px}
/* Report a problem (B5a) */
.report-line{margin:40px 0 0;text-align:center}.report-link{background:none;border:0;padding:8px;color:var(--muted);text-decoration:underline;font-size:.9rem;min-height:auto}
.report-dialog{max-width:min(30rem,calc(100vw - 32px));border:0;border-radius:16px;padding:24px}.report-dialog::backdrop{background:#160e1499}
.report-dialog form{display:flex;flex-direction:column;gap:12px}.report-dialog h2,.report-dialog p{margin:0}.report-dialog fieldset{border:0;padding:0;margin:0;display:grid;gap:8px}.report-dialog legend{font-weight:600;margin-bottom:6px}
.report-dialog fieldset label{display:flex;gap:10px;align-items:center;justify-content:flex-start;text-align:left}.report-dialog fieldset input[type=radio]{width:20px;height:20px;min-height:0;flex:0 0 auto;margin:0;padding:0;accent-color:var(--brand,#54203d)}.report-dialog textarea{width:100%;box-sizing:border-box}.report-actions{display:flex;gap:10px;flex-wrap:wrap}
.revealed-edit-note{padding:12px 16px;background:var(--badge);border-radius:12px;margin:0 0 12px}
/* CU7: real thumbnails in the composer; the symbol shows if a thumbnail cannot load. */
.attachment-symbol{position:relative;overflow:hidden}.attachment-symbol .attachment-thumb{position:absolute;inset:0;top:0;left:0;margin:0!important;max-width:none!important;max-height:none!important;width:100%;height:100%;object-fit:cover;pointer-events:none;background:var(--art,#f5d0be)}
/* DS9: gentle looks for get-well and sympathy celebrations (set per celebration,see activeTone in app.js). */
:root[data-tone=sympathy]{color-scheme:light;--wordmark:#54203d;--bg:#f4f2ef;--ink:#2f3440;--muted:#575d6b;--surface:#fbfaf8;--control:#fbfaf8;--control-border:#8a8f9c;--line:#dcd9d3;--hover:#ebe8e3;--primary:#4a5a78;--primary-ink:#ffffff;--selected:#e4e3ea;--badge:#e4e3ea;--notice:#ecebf0;--error:#9b2c3a;--focus:#4a5a78;--art:#dcdde6;--art-ink:#2f3440;--decoration-one:#9aa3bd;--decoration-two:#efeef4;--tv-bg:#1f2330;--tv-ink:#f3f2ef;--tv-muted:#c9ccd6;--tv-surface:#2d3343;--tv-control:#c9d2ea;--tv-control-ink:#1f2330;--tv-control-border:#c9d2ea;--tv-control-hover:#e0e6f5;--tv-focus:#e0e6f5}
:root[data-tone=get_well]{color-scheme:light;--wordmark:#54203d;--bg:#f2f6f0;--ink:#24372e;--muted:#4c5e54;--surface:#fbfdf9;--control:#fbfdf9;--control-border:#7d9286;--line:#d3e0d5;--hover:#e2ede3;--primary:#2f6150;--primary-ink:#ffffff;--selected:#dcebe0;--badge:#f2ead0;--notice:#e8f1e6;--error:#9b2c3a;--focus:#2f6150;--art:#c9e2d3;--art-ink:#24372e;--decoration-one:#7fb59a;--decoration-two:#fbf3d6;--tv-bg:#1c2b25;--tv-ink:#f1f6ef;--tv-muted:#c4d6cb;--tv-surface:#2a3d35;--tv-control:#cfe6b8;--tv-control-ink:#1c2b25;--tv-control-border:#cfe6b8;--tv-control-hover:#e2f0d4;--tv-focus:#e2f0d4}
:root[data-tone=sympathy] .presentation-layout>aside,:root[data-tone=get_well] .presentation-layout>aside{background:var(--selected)}
:root[data-tone=sympathy] .reveal-opening.is-opening .collage-tile{animation-duration:1.2s}
.tone-setting{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:500;font-size:.9rem;color:var(--muted);margin:8px 0 0}.tone-setting select{width:auto;min-height:40px;padding:6px 10px}
.tone-choices{margin-bottom:22px}
/* UX9: say why a button is turned off{font-size:.875rem;color:var(--muted);margin:8px 0 0}
/* DS7: reveal clip slot and four-step how-it-works on the landing page. */
.entry-page .entry-steps{grid-template-columns:repeat(4,minmax(0,1fr))}
.entry-reveal{max-width:1360px;margin:0 auto;padding:var(--entry-section) var(--entry-gutter);display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:48px;align-items:center;border-top:1px solid var(--line)}
.entry-reveal h2{font-size:var(--entry-heading);font-weight:500;line-height:1.1;letter-spacing:-.015em;margin:0 0 16px}.entry-reveal-text p:last-child{color:var(--muted);font-size:1.05rem;max-width:46ch}
.entry-reveal-media{margin:0}.entry-reveal-media video,.entry-reveal-art{display:block;width:100%;height:auto;aspect-ratio:16/9;border-radius:24px;background:var(--art)}
@media(min-width:760px) and (max-width:1099px){.entry-page .entry-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.entry-reveal{gap:32px}}
@media(max-width:759px){.entry-page .entry-steps{grid-template-columns:1fr}.entry-reveal{grid-template-columns:1fr;gap:20px}}
/* DS6: first-run guide,getting-started checklist and the example celebration. */
.first-run{max-width:960px}.first-run-steps{list-style:none;padding:0;margin:8px 0 32px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.first-run-steps li{display:flex;gap:16px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:22px}.first-run-steps h2{font:500 1.35rem/1.2 Newsreader,Georgia,serif;margin:0 0 6px}.first-run-steps p{margin:0;color:var(--muted)}.first-run-num{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:var(--primary-ink);font-weight:700}
.getting-started{margin-top:24px}.getting-started-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.getting-started-head h2{margin:0;font-size:1.5rem}.getting-started ol{list-style:none;padding:0;margin:16px 0}.getting-started li{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--line)}.getting-started li>span:nth-child(2){flex:1;min-width:160px}.getting-started li.is-done>span:nth-child(2){color:var(--muted);text-decoration:line-through}.getting-started li button{font-size:.85rem;padding:6px 14px;min-height:40px}.getting-started-mark{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--control-border);display:grid;place-items:center;font-size:.85rem;font-weight:700}.getting-started li.is-done .getting-started-mark{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
.entry-example{background:transparent}
.example-page{max-width:1100px;margin:auto}.example-banner{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:var(--notice);border-radius:18px;padding:16px 20px;margin-bottom:32px}.example-banner p{margin:0;max-width:60ch}.example-grid{margin:24px 0 40px}.example-photo svg{display:block;width:100%;height:auto;border-radius:12px}.example-media{display:flex;align-items:center;gap:12px;background:var(--selected);border-radius:12px;padding:12px 14px;font-size:.9rem}.example-play{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:var(--primary-ink);font-size:.8rem;flex:none}.example-wave{display:flex;align-items:center;gap:3px;flex:1;height:28px}.example-wave i{display:block;width:4px;border-radius:2px;background:var(--decoration-one);height:40%}.example-wave i:nth-child(3n){height:90%}.example-wave i:nth-child(3n+1){height:60%}.example-video{aspect-ratio:16/9;justify-content:center;flex-direction:column;background:var(--art);color:var(--art-ink)}.example-how ol{padding-left:20px}.example-how li{margin-bottom:8px}
@media(max-width:759px){.first-run-steps{grid-template-columns:1fr}}
:root[data-tone=sympathy] .next-step button.primary{background:#dfe4f1;color:#1f2330;border-color:#dfe4f1}:root[data-tone=get_well] .next-step button.primary{background:#e3f0c9;color:#1c2b25;border-color:#e3f0c9}
/* Pricing cards: one start button per plan,lined up at the bottom (2026-11-07). */
.entry-page .entry-plans article{display:flex;flex-direction:column}
.entry-page .entry-plans .plan-cta{margin-top:auto;align-self:stretch;text-align:center}
.entry-page .entry-plans p:last-of-type{margin-bottom:24px}
.entry-page .entry-plans a.button.plan-cta:not(.primary){background:transparent;color:var(--ink);border:1px solid var(--ink)}
/* PR7 occasion picker */
.occasion-choices{margin-bottom:22px}
.occasion-grid{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.occasion-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--control-border);border-radius:999px;background:var(--surface);font-weight:500;cursor:pointer;min-height:44px;margin:0}
.occasion-chip input{width:16px;height:16px;margin:0;accent-color:var(--primary);flex:none}
.occasion-chip:has(input:checked){border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}
.occasion-chip:has(input:focus-visible){outline:3px solid var(--primary);outline-offset:2px}
/* PR8 writing ideas beside the message box */
.writing-ideas{margin:0 0 28px;padding:14px 18px;border:1px dashed var(--control-border);border-radius:16px;background:var(--surface)}
.writing-ideas summary{cursor:pointer;font-weight:600}
.writing-ideas ul{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}
.writing-ideas .idea{text-align:left;text-decoration:none;font:italic 1.05rem Newsreader,Georgia,serif;padding:8px 10px;border-radius:10px;min-height:40px;width:100%}
.writing-ideas .idea:hover,.writing-ideas .idea:focus-visible{background:var(--bg)}
/* PR6 waiting on */
/* restored inside Who's in (UX17): a status per person, then the nudge */
.name-list-name{flex:1;min-width:0;overflow-wrap:anywhere}
.name-list .tag{flex:none}
.tag-draft,.tag-waiting{background:transparent;border:1px solid var(--line);color:var(--ink)}
.tag-waiting{color:var(--muted)}
.waiting-on{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.waiting-on-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.waiting-on .actions{margin-bottom:4px}
.waiting-on .nudge-details{border-top:0;padding:4px 0}
.waiting-on textarea{min-height:120px;margin-top:8px}
.waiting-on p{margin-bottom:6px}
/* PR9 recipient preview */
.recipient-preview .preview-notice{position:sticky;top:8px;z-index:3}
.recipient-preview>.actions{margin-top:24px}
.recipient-preview>p.small{margin-top:20px}
/* Your data dialog (account-data.js) */
#account-data{background:var(--bg);color:var(--ink);border:0;border-radius:24px;padding:32px;width:min(560px,calc(100% - 40px));max-height:85dvh;overflow:auto}#account-data::backdrop{background:rgba(45,15,34,.48)}#account-data h2{font-size:1.75rem}#account-data h3{margin-bottom:6px}#account-data .divider{margin:24px 0}#account-data .actions{margin-top:16px;gap:10px}#account-data .primary.danger{background:#971b35;border-color:#971b35;color:#fff}#account-data .account-data-status:empty{display:none}#account-data .account-data-status{margin:16px 0 0}@media(max-width:600px){#account-data{width:100%;max-width:100%;margin:auto 0 0;border-radius:24px 24px 0 0;padding:24px 20px}#account-data .actions{display:grid;grid-template-columns:1fr}}
/* Paid plans before payments are approved (live site,2026-11-07) */
.plan-cta.plan-soon{display:inline-flex;justify-content:center;border:1px dashed var(--muted);color:var(--muted);background:transparent;cursor:default}
.choice-card.plan-soon{opacity:.6;cursor:default}
.waitlist-box{margin:0 0 24px}.waitlist-box p{margin:0 0 10px}.waitlist-box [data-waitlist-status]:empty{display:none}
/* Account avatar: centre the initial in the circle (the global summary padding-top and 1.6 line-height pushed it low). */
.app-header .account-menu>summary{padding:0;min-height:0;line-height:1}.app-header .account-menu>summary .account-initial{display:block;line-height:1}
.share-apps{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.share-apps .button,.share-apps button{font-size:.8125rem;padding:10px 14px;min-height:44px}.share-message{border-top:0;padding:6px 0 0;font-size:.875rem}.share-message summary{min-height:36px;padding-top:4px}.share-message p{margin:6px 0 0;color:var(--muted)}
@media(max-width:520px){.share-apps .button,.share-apps button{flex:1 1 40%;text-align:center}}
/* B9 thank-you from the recipient,B7 start-your-own prompt */
.thanks-quote{margin:16px 0;padding:14px 18px;border-left:4px solid var(--primary,#54203d);background:var(--surface,#fffdf8);border-radius:0 14px 14px 0}
.thanks-quote blockquote{margin:0;font-family:Newsreader,Georgia,serif;font-size:20px;line-height:1.4;white-space:pre-line}
.thanks-quote figcaption{margin-top:6px;font-size:14px;opacity:.8}
.thanks-panel{margin-top:28px}.thanks-panel textarea{width:100%}
.start-own{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin:24px 0;padding:14px 18px;border:1px dashed currentColor;border-radius:16px}
.start-own p{margin:0;flex:1 1 260px}.share-links-inline form{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}.share-links-inline [role=status]:empty{display:none}.share-links-inline [role=status]{color:#1f4d2b}@media(max-width:800px){.invitation-panels{grid-template-columns:1fr!important}}

/* RT6: invitation and reveal emails sent from the organizer's name */
.email-invite textarea{width:100%;box-sizing:border-box}
.email-log{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}
.email-log li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--line,#ead8d3);border-radius:12px;font-size:.95rem;overflow-wrap:anywhere}
.tag.tag-warn{background:#f8e3e0;color:#8a2f28}
.reveal-email{margin-top:20px;padding-top:16px;border-top:1px solid var(--line,#ead8d3)}
.reveal-email h3{margin:0 0 4px}
.review-setting{justify-content:flex-start}.review-setting input[type=checkbox]{width:auto;flex:0 0 auto;margin:0;accent-color:var(--decoration-one,#54203d)}

/* RT8: card colours,stickers,theme picker */
/* QA8 (2026-11-08): coloured cards are always light, so everything inside them uses the light Classic
   colours, whatever the celebration theme (Velvet is dark). Keeps tags, buttons and links readable. */
.card[data-color],.panel[data-color],article[data-color]{color:#3b1d2e;color-scheme:light;--ink:#3b1d2e;--muted:#6b4a5c;--surface:#fffdf8;--control:#fffdf8;--control-border:#927284;--line:#e6d3d8;--hover:#f8e2db;--primary:#54203d;--primary-ink:#fff8ef;--selected:#f5ddd7;--badge:#f5ddd7;--notice:#f9e8dc;--error:#a0223a;--focus:#8b304d}
[data-color=cream]{background:#fff6d9!important;border-color:#f0dfa6!important}
[data-color=rose]{background:#ffe3ea!important;border-color:#f3b8c7!important}
[data-color=sky]{background:#e2f0ff!important;border-color:#b5d2f2!important}
[data-color=mint]{background:#e0f6ea!important;border-color:#b2e1c6!important}
[data-color=sun]{background:#fff0c2!important;border-color:#f2d77d!important}
[data-color=lilac]{background:#efe6ff!important;border-color:#d2c0f5!important}
[data-color=peach]{background:#ffe8d8!important;border-color:#f5c7a8!important}
.stickers{display:flex;flex-wrap:wrap;gap:6px;margin:0;font-size:1.5rem;line-height:1}.stickers-big{font-size:2.2rem;margin-bottom:12px}
.look-picker{border:0;padding:0;margin:18px 0}.look-picker legend{font-weight:600;margin-bottom:8px}.look-picker legend small{font-weight:400;color:var(--muted)}
.swatches{display:flex;flex-wrap:wrap;gap:8px}.swatch{position:relative;width:34px;height:34px;border-radius:50%;border:2px solid var(--line);background:var(--surface);cursor:pointer}.swatch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}.swatch:has(input:checked){outline:3px solid var(--primary);outline-offset:2px}.swatch:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.sticker-picker{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:0 14px;margin-bottom:28px}.sticker-picker summary{display:flex;align-items:center;gap:8px;min-height:46px;cursor:pointer;font-weight:600;list-style:none}.sticker-picker summary::-webkit-details-marker{display:none}.sticker-picker summary small{font-weight:400;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sticker-picker summary::after{content:"";margin-left:auto;flex:none;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s}.sticker-picker[open] summary::after{transform:rotate(-135deg)}.sticker-picker .sticker-grid{padding:4px 0 14px}.sticker-grid{display:flex;flex-wrap:wrap;gap:6px}.sticker-choice{position:relative;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:1.35rem;cursor:pointer}.sticker-choice input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}.sticker-choice:has(input:checked){background:var(--selected);border-color:var(--primary)}.sticker-choice:has(input:focus-visible){outline:3px solid var(--focus)}.sticker-choice:has(input:disabled){opacity:.4}
.theme-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.theme-choice{position:relative;display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);cursor:pointer}.theme-choice input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}.theme-choice:has(input:checked){border-color:var(--primary);box-shadow:0 0 0 2px var(--primary) inset}.theme-choice:has(input:focus-visible){outline:3px solid var(--focus)}.theme-choice small{display:block;color:var(--muted);font-size:.8rem}.theme-choice span:last-child{line-height:1.25}
.theme-dot{width:30px;height:30px;border-radius:50%;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
[data-theme-swatch=classic] .theme-dot{background:linear-gradient(135deg,#fff8ef calc(50% - .5px),#54203d calc(50% + .5px))}[data-theme-swatch=confetti] .theme-dot{background:linear-gradient(135deg,#fff0e3 calc(50% - .5px),#ea5d56 calc(50% + .5px))}[data-theme-swatch=lagoon] .theme-dot{background:linear-gradient(135deg,#eaf8fa calc(50% - .5px),#165b74 calc(50% + .5px))}[data-theme-swatch=orchard] .theme-dot{background:linear-gradient(135deg,#f2f5df calc(50% - .5px),#633365 calc(50% + .5px))}[data-theme-swatch=sienna] .theme-dot{background:linear-gradient(135deg,#f2e8dc calc(50% - .5px),#754836 calc(50% + .5px))}[data-theme-swatch=velvet] .theme-dot{background:linear-gradient(135deg,#251720 calc(50% - .5px),#ffac8c calc(50% + .5px))}

/* RT7: one-page organizer workspace + settings sheet */
.workspace-one{display:grid;gap:36px}.ws-head{display:grid;gap:8px}.ws-head h1{margin:0}.ws-head .lede{margin:0;color:var(--muted)}.ws-head .lede strong{color:var(--ink)}.ws-intro{margin:0;max-width:720px}.ws-head .actions{margin-top:8px}
.ws-section{display:grid;gap:16px}.ws-section>.sectionhead{margin:0}.section-note{margin:4px 0 0}
.next-step.compact{padding:24px 28px}.next-step.compact h2{font-size:1.5rem;margin:6px 0 14px}
.invite-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:20px;align-items:start}.who-is-in h3{margin-top:0}.name-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.name-list li{display:flex;align-items:center;gap:10px}.name-list .avatar{width:32px;height:32px;font-size:.9rem}
.email-invite-details{margin-top:18px;border-top:1px solid var(--line);padding-top:12px}.email-invite-details summary{cursor:pointer;font-weight:600}.email-invite-details .email-invite{border:0;padding:12px 0 0;background:transparent}

.empty-messages{text-align:center;color:var(--muted)}
.settings-sheet{border:0;border-radius:var(--ff-radius);padding:0;width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 48px);background:var(--surface);color:var(--ink);box-shadow:0 24px 60px rgba(0,0,0,.25)}.settings-sheet::backdrop{background:rgba(40,20,30,.45)}
.settings-sheet .sheet-head{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:18px 24px;background:var(--surface);border-bottom:1px solid var(--line);z-index:1}.settings-sheet .sheet-head h2{margin:0;font-size:1.4rem}
.sheet-block{padding:20px 24px;border-bottom:1px solid var(--line)}.sheet-block h3{margin:0 0 12px;font-size:1.05rem}.sheet-block .field{margin-bottom:12px}.sheet-block .overview-timeline{margin:0}.sheet-block .overview-timeline h2{display:none}.settings-sheet>p{padding:16px 24px;margin:0}
.member-rows.compact{list-style:none;margin:0;padding:0;display:grid;gap:6px}.member-rows.compact li{display:flex;justify-content:space-between;align-items:center;gap:12px}
.theme-fieldset{border:0;padding:0;margin:14px 0 0}.theme-fieldset legend{font-weight:600;margin-bottom:8px}
@media(max-width:759px){.invite-layout{grid-template-columns:1fr}.settings-sheet{width:100vw;max-width:100vw;max-height:100vh;border-radius:0;margin:0}.workspace-one{gap:28px}}
/* UX16: getting back to a message from another device */
.join-again{margin-top:22px;border-top:1px solid var(--line,#e6d8d2);padding-top:16px}.join-again summary{cursor:pointer;color:var(--muted)}.join-again .join-form{margin-top:12px}.join-again-alone h2{font-size:1.35rem;margin:0}
/* Headings and sections that take focus only so screen readers announce the new page: no keyboard ring. */
[tabindex="-1"]:focus{outline:none}

/* SU5: help in the account menu and on error screens. */
#account-help{display:none}
.app-header #managed-auth.signed-in #account-help{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px 12px;border-radius:10px;color:inherit;text-decoration:none;font-weight:500;box-sizing:border-box}
.app-header #managed-auth.signed-in #account-help:hover{background:var(--hover)}.app-header #managed-auth.signed-in #account-help svg{color:var(--muted);flex:none}
.help-line{margin:24px 0 0;color:var(--muted);font-size:.9375rem}.help-line a{color:inherit}
.recovery-panel .help-line{margin-top:8px}
#account-data-open svg{display:none}
.app-header #managed-auth.signed-in #account-data-open{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px 12px;border:0;border-radius:10px;background:transparent;text-align:left;font-weight:500;justify-content:flex-start}
.app-header #managed-auth.signed-in #account-data-open:hover{background:var(--hover)}.app-header #managed-auth.signed-in #account-data-open svg{display:block;color:var(--muted);flex:none}
.app-header #managed-auth.signed-in #account-data-open[hidden]{display:none}

.sheet-delete{border-top:1px solid var(--line);padding-top:20px}.sheet-delete .danger{background:transparent;border:1px solid #971b35;color:#971b35}.sheet-delete .danger:hover{background:#971b35;color:#fff}#confirm-message .confirm-typed{display:block;font-weight:600;margin:4px 0 8px;white-space:normal}#confirm-message #confirm-typed{width:100%;max-width:280px;font:inherit;letter-spacing:.08em;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);margin-bottom:20px}#confirm-action .primary.danger:disabled{opacity:.45;cursor:not-allowed}

/* The organizer's own message on their celebration page */
.own-message .own-card{max-width:620px;display:grid;gap:10px}.own-message .own-card p{margin:0;white-space:pre-line;font-family:var(--font-display,Newsreader,serif);font-size:1.15rem;line-height:1.45}.own-message .own-card .actions{margin:6px 0 0}.own-message .own-card .tag{justify-self:start}
.own-empty{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.own-empty p{margin:0;color:var(--muted);flex:1 1 260px}.own-empty .actions{margin:0}
@media(max-width:600px){.own-empty{flex-direction:column;align-items:stretch}.own-empty p{flex:none}.own-empty .actions button{width:100%}.own-message .own-card .actions button{width:100%}}
