/* Pine Letters: shared visual system for the existing Firefly Notes app. */
:root {
  --paper: #f8f5ed;
  --white: #fffdf8;
  --ink: #213e34;
  --navy: #183f35;
  --muted: #626b60;
  --line: #ddd8c9;
  --sage: #65775e;
  --gold: #b3532e;
  --orange: #bc4e25;
  --orange-hover: #a83e1d;
  --pine-cream: #f4e4bf;
  --display: var(--serif);
}
html { scroll-padding-top: 24px; }
body { font-size: 16px; line-height: 1.8; background: var(--paper); }
h1, h2, h3 { font-family: var(--serif); }
h1, h2 { font-weight: 600; letter-spacing: -.035em; }
input, textarea, select, button { font-family: var(--sans); }
img { max-width: 100%; }
main:focus { outline: none; }
button:disabled { cursor: not-allowed; }
.button { min-height: 52px; padding: 13px 25px; font-size: 15px; font-weight: 600; box-shadow: none; }
.button.accent { background: var(--orange); border-color: var(--orange); box-shadow: none; }
.button.accent:hover { background: var(--orange-hover); border-color: var(--orange-hover); transform: none; }
.button.primary, .header-cta.register-cta { background: var(--navy); color: var(--white); border-color: var(--navy); }
.button.primary:hover, .header-cta.register-cta:hover { background: #285344; color: white; }
.button.subtle { background: var(--white); border-color: #c6c9bb; }
.button.subtle:hover { background: #eeeee2; }
.button:active { transform: translateY(1px); }
.underlined-link { font-size: 15px; min-height: 44px; text-decoration-thickness: 1px; }
.text-link { min-height: 44px; font-size: 14px; }
:is(a, button, input, textarea, select, summary, [tabindex]):focus-visible { outline: 3px solid #b35a32; outline-offset: 4px; }
.skip { position: fixed; top: 14px; left: 16px; z-index: 1000; transform: translateY(-160%); padding: 12px 20px; border-radius: 6px; background: var(--navy); color: white; }
.skip:focus { top: 14px; transform: none; }
.header { height: 88px; background: var(--white); border-bottom: 1px solid #eee9dd; }
.header-inner { max-width: 1600px; padding: 0 64px; gap: 48px; }
.brand { gap: 11px; flex-shrink: 0; }
.brand > span { font-family: var(--serif); font-size: 25px; font-weight: 700; letter-spacing: .06em; line-height: 1.2; }
.brand small { font-family: var(--sans); font-size: 8px; letter-spacing: .38em; line-height: 1.4; margin-top: 8px; }
.brand img { width: 40px; height: 40px; }
.top-nav { gap: 38px; }
.top-nav a { font-size: 16px; color: var(--ink); padding-block: 26px; }
.top-nav a.active:after { height: 2px; width: 22px; left: calc(50% - 11px); bottom: 16px; background: var(--orange); }
.header-account { gap: 26px; }
.account-link { font-size: 15px; min-height: 44px; display: inline-flex; align-items: center; }
.header-cta { min-height: 50px; padding: 11px 25px; font-size: 15px; gap: 16px; }
.local-notice { min-height: 34px; font-size: 12px; color: #4b5e4c; background: #eaede2; }
body[data-page="home"] .local-notice { display: none; }
.page-width { max-width: 1312px; width: calc(100% - 128px); }
.kicker { font-size: 13px; color: var(--muted); font-weight: 500; letter-spacing: .1em; }
.tiny-line { width: 32px; margin-right: 16px; }

/* The selected split hero; copy remains selectable, imagery remains a real asset. */
.pine-hero { display: grid; grid-template-columns: 44.5% minmax(0, 1fr); max-width: 1920px; margin-inline: auto; min-height: 612px; }
.pine-hero-copy { background: var(--navy); color: var(--white); padding: 65px 34px 48px max(40px, calc((100vw - 1312px) / 2)); position: relative; isolation: isolate; min-width: 0; }
.pine-hero-copy .kicker { color: #eee8d7; font-size: 15px; line-height: 1.8; }
.pine-hero-copy .tiny-line { background: #e07832; }
.pine-hero h1 { margin: 20px 0 25px; font-size: clamp(50px, 5.6vw, 84px); line-height: 1.25; font-weight: 700; letter-spacing: -.045em; text-wrap: initial; }
.pine-hero h1 span, .pine-hero h1 em { display: block; white-space: nowrap; }
.pine-hero h1 em { font-style: normal; color: var(--pine-cream); }
.pine-hero .hero-lead { font-family: var(--serif); color: #eeeede; font-size: clamp(16px, 1.45vw, 21px); line-height: 1.85; max-width: 550px; }
.pine-hero .memory-hero-actions { margin-top: 30px; gap: 22px 30px; position: relative; z-index: 1; }
.pine-hero .memory-hero-actions .button { min-height: 66px; padding: 14px 48px; font-family: var(--serif); font-size: 22px; gap: 22px; }
.pine-hero .underlined-link { font-family: var(--serif); font-size: 18px; color: var(--white); text-decoration-color: #c8cfbd; gap: 14px; }
.pine-hero .underlined-link .icon { width: 25px; height: 25px; }
.pine-hero .underlined-link:hover { color: var(--pine-cream); }
.pine-hero .hero-footnote { font-family: var(--serif); font-size: 16px; color: #e6e9db; margin-top: 29px; gap: 12px; }
.pine-hero .hero-footnote .icon { width: 18px; height: 18px; }
.pine-botanical { position: absolute; left: 0; bottom: 0; width: 100px; height: 255px; object-fit: contain; object-position: left bottom; opacity: .45; z-index: -1; pointer-events: none; }
.pine-hero-visual { margin: 0; position: relative; min-width: 0; min-height: 612px; }
.pine-hero-visual > img { display: block; width: 100%; height: 100%; position: absolute; inset: 0; object-fit: cover; object-position: center; }
.pine-hero-visual figcaption { position: absolute; inset: 0; pointer-events: none; color: white; font-size: 11px; line-height: 1.6; }
.pine-hero-visual figcaption span { position: absolute; right: 25px; background: #18352bba; padding: 4px 9px; border-radius: 3px; }
.pine-hero-visual figcaption span:first-child { top: 17px; }
.pine-hero-visual figcaption span:last-child { bottom: 20px; }
.pine-process { padding-block: 40px 44px; }
.pine-section-heading { display: flex; align-items: center; gap: 28px; margin-bottom: 26px; }
.pine-section-heading h2 { font-size: clamp(28px, 2.75vw, 40px); line-height: 1.5; }
.pine-section-heading > span { height: 1px; background: #c1b7a3; flex: 1; }
.pine-process-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; list-style: none; margin: 0; padding: 0; }
.pine-process-list li { display: flex; align-items: flex-start; gap: 18px; min-width: 0; }
.pine-step-number { font-family: Georgia, serif; font-size: 34px; line-height: 1.25; color: #ac926f; }
.pine-process-list li > .icon { flex-shrink: 0; width: 35px; height: 40px; color: #6d5138; padding-left: 14px; box-sizing: content-box; border-left: 1px solid var(--line); }
.pine-process-list h3 { font-size: 21px; line-height: 1.5; margin: 0 0 5px; font-weight: 600; }
.pine-process-list p { font-family: var(--serif); font-size: 15px; color: #62675d; line-height: 1.8; }
.pine-process-list :is(a, button) { display: inline-flex; align-items: center; min-height: 36px; gap: 8px; border: 0; padding: 4px 0; background: none; color: var(--navy); font-size: 13px; margin-top: 6px; text-decoration: underline; text-underline-offset: 5px; }
.pine-process-list :is(a, button):hover { color: var(--orange); }
.pine-process-list :is(a, button) .icon { width: 16px; height: 16px; }

/* Public reading surfaces share the same print-inspired rhythm. */
.memory-section { padding-block: 76px; }
.editorial-heading { gap: 32px; margin-bottom: 32px; }
:is(.editorial-heading, .keepsake-copy, .together-section, .home-faq, .closing-invitation) h2 { font-family: var(--serif); font-weight: 600; font-size: clamp(30px, 3vw, 42px); line-height: 1.5; letter-spacing: -.035em; }
.editorial-heading > p, .section-lead { font-size: 16px; color: var(--muted); }
.keepsake-section { background: #eeeee2; }
.keepsake-inner { gap: 64px; padding-block: 64px; }
.keepsake-photo img { border-radius: 6px; }
.keepsake-photo figcaption { font-size: 12px; color: #5e6658; }
.keepsake-list strong { font-size: 17px; }
.keepsake-list p { font-size: 14px; color: var(--muted); }
.memory-story-card { border-radius: 6px; box-shadow: none; }
.memory-story-card > div { padding: 30px; }
.memory-story-card h3 { font-size: 28px; }
.memory-story-card p, .prompt-tile p { font-size: 15px; color: var(--muted); }
.story-label, .prompt-tile > span, .card-link { font-size: 13px; }
.prompt-tile { border-radius: 6px; padding: 28px 34px; }
.prompt-tile h3 { font-family: var(--serif); font-size: 29px; }
.together-section { background: var(--navy); }
.together-inner > div > p:not(.kicker) { font-size: 16px; }
.together-section .kicker, .device-pair p { color: #e2e8d9; }
.device-pair article { border-radius: 4px; background: #23493b; border-color: #647761; }
.device-pair article span, .device-pair article p { font-size: 14px; }
.device-pair .sync-note { font-size: 13px; }
.home-faq-list summary { font-size: 18px; padding-block: 23px; min-height: 64px; }
.home-faq-list details p { font-size: 15px; color: var(--muted); line-height: 1.9; }
.closing-invitation { padding-block: 60px 74px; }
.closing-invitation > p:not(.kicker) { font-size: 16px; color: var(--muted); }
.footer { background: #eeeee2; padding: 46px 64px 32px; flex-wrap: wrap; gap: 32px; }
.footer nav { font-size: 14px; flex-wrap: wrap; gap: 26px; }
.footer-brand p, .footer-caption, .footer-legal { color: #58644f; font-size: 13px; }
.footer-brand p { margin-top: 15px; }
.sample-header { max-width: 1312px; margin-inline: auto; padding: 30px 64px; gap: 24px; }
.sample-tag { font-size: 13px; color: #5f6858; }
.sample-story { max-width: 800px; padding: 32px 40px 80px; margin-inline: auto; }
.sample-story h1 { font-size: 44px; line-height: 1.5; }
.sample-byline { color: var(--muted); font-size: 14px; }
.sample-story > p { font-family: var(--serif); font-size: 19px; line-height: 2.15; color: #3b493d; }
.sample-photo img { border-radius: 4px; height: 390px; object-fit: cover; }
.sample-photo figcaption, .sample-story p.sample-disclaimer { font-size: 13px; line-height: 1.85; color: var(--muted); }
.sample-story blockquote { margin-inline: 0; padding: 25px 28px; border-left: 3px solid #b5a27a; background: #eeede0; font-size: 24px; }
.about-intro { padding: 66px 48px; background: var(--navy); color: var(--white); border-radius: 4px; }
.about-intro h1 { font-size: 44px; line-height: 1.5; color: var(--white); }
.about-intro :is(.eyebrow, p) { color: #e3e7d7; font-size: 16px; }
.about-intro .button.primary { background: var(--pine-cream); color: var(--navy); border-color: var(--pine-cream); }
.about-intro .button.primary:hover { background: #fff5db; color: var(--navy); }
.faq-section summary { font-size: 18px; min-height: 44px; color: var(--ink); }
.faq-section details p { font-size: 16px; line-height: 1.95; color: var(--muted); }
.help-grid h2 { font-size: 23px; }
.help-grid p, .help-grid li { font-size: 16px; color: var(--muted); }

/* The workspace: simple navigation, generous text, explicit states. */
.workspace { max-width: 1680px; }
.sidebar { width: 224px; padding: 38px 20px; background: #f0f0e5; border-color: var(--line); }
.sidebar-title { font-size: 12px; color: #5b6854; letter-spacing: .08em; margin-left: 15px; }
.sidebar .nav-item { font-size: 15px; min-height: 50px; border-radius: 5px; color: #56644e; }
.sidebar .nav-item.active { background: var(--navy); color: var(--white); }
.sidebar .nav-item:not(.active):hover { background: #e3e7d8; }
.sidebar-bottom { color: #626c58; margin: 72px 15px 0; }
.sidebar-bottom span { font-size: 12px; }
.sidebar-bottom p { font-size: 17px; }
.workspace-main { max-width: 1400px; padding: 44px 48px 70px; }
.page-heading { margin-bottom: 30px; align-items: flex-end; }
.page-heading h1 { font-size: 36px; line-height: 1.5; margin: 7px 0; }
.page-heading p { font-size: 15px; color: var(--muted); }
.eyebrow { font-size: 12px; letter-spacing: .1em; color: #64715a; }
.heading-actions { flex-wrap: wrap; justify-content: flex-end; }
.heading-actions .button { font-size: 14px; min-height: 48px; }
.library-welcome { border-radius: 5px; background: #eeeee2; }
.library-welcome > div { padding: 46px; }
.library-welcome h2 { font-family: var(--serif); font-size: 37px; line-height: 1.55; font-weight: 600; }
.library-welcome p { font-size: 16px; }
.library-welcome figcaption { font-size: 12px; color: var(--muted); }
.gentle-note { font-size: 14px; line-height: 1.8; color: var(--muted); }
.project-switch { font-size: 14px; }
.project-switch select { min-height: 44px; font-size: 15px; border-radius: 5px; }
.library-overview { border-radius: 6px; background: #eeeee2; border: 1px solid var(--line); padding: 28px 36px; }
.progress-numbers strong { font-size: 42px; color: var(--navy); }
.progress-numbers span, .progress-area > p, .progress-area .text-link { font-size: 14px; color: #5c6654; }
.library-toolbar { margin-top: 28px; gap: 24px; flex-wrap: wrap; }
.tabs { gap: 22px; }
.tabs button { min-height: 48px; font-size: 15px; }
.tabs button.active { color: var(--navy); border-bottom-color: var(--orange); }
.search-box { border: 1px solid #c7cebb; border-radius: 6px; min-height: 48px; background: var(--white); padding: 4px 15px; }
.search-box input { font-size: 15px; min-width: 0; color: var(--ink); }
.story-list { background: var(--white); padding: 0 24px; border: 1px solid var(--line); border-radius: 6px; }
.story-row { min-height: 125px; gap: 19px; padding-block: 22px; }
.story-row:hover { background: #f6f6eb; }
.story-index { color: #7a806a; font-size: 20px; }
.story-summary h3 { font-family: var(--serif); font-size: 21px; line-height: 1.6; font-weight: 600; }
.story-summary > p { font-size: 14px; color: var(--muted); }
.story-meta { font-size: 12px; color: #65705c; flex-wrap: wrap; }
.status-tag { font-size: 12px; color: #765d3b; background: #f2e9d9; padding: 4px 9px; white-space: nowrap; }
.status-tag.confirmed { color: #28533b; background: #e3ecdc; }
.list-empty { padding: 40px 20px; font-size: 16px; color: var(--muted); }
.list-empty a { display: block; margin-top: 18px; text-decoration: underline; }
.empty-state { padding: 65px 25px; border: 1px solid var(--line); border-radius: 6px; background: #f4f2e9; }
.empty-state h2 { font-size: 29px; margin-block: 20px 12px; }
.empty-state p { font-size: 16px; max-width: 500px; margin: 0 auto 24px; color: var(--muted); }
.empty-icon { background: #e4e8d7; color: var(--navy); }
.question-heading { background: var(--navy); color: var(--white); padding: 32px 36px; border-radius: 6px; }
.question-heading .eyebrow, .question-heading p { color: #e2e7d7; }
.question-heading h1 { font-family: var(--serif); font-size: 38px; font-weight: 600; }
.small-seal { border-radius: 0; border: 0; border-left: 1px solid #83917a; color: #e0e5d1; font-size: 13px; padding: 12px 0 12px 28px; width: auto; height: auto; transform: none; }
.theme-tabs { flex-wrap: wrap; margin-block: 24px; gap: 9px; }
.theme-tabs button { min-height: 46px; padding: 9px 16px; font-size: 14px; color: #52614b; border-color: #c6ccb9; }
.theme-tabs button.active { background: var(--navy); color: var(--white); border-color: var(--navy); }
.question-grid { gap: 22px; }
.question-card { background: var(--white); border: 1px solid var(--line); border-radius: 6px; padding: 30px; min-height: 270px; display: flex; flex-direction: column; }
.question-card:nth-child(n) { background: var(--white); }
.question-category { font-size: 12px; color: #667159; }
.question-num { color: #8c9679; font-size: 24px; }
.question-card h2 { font-size: 24px; line-height: 1.7; margin-block: 22px 12px; }
.question-card p { font-size: 15px; color: var(--muted); margin-bottom: 18px; line-height: 1.85; }
.question-card .text-link { margin-top: auto; align-self: flex-start; font-size: 15px; }
.photo-item { background: var(--white); border-radius: 5px; border: 1px solid var(--line); }
.photo-item h3 { font-size: 20px; }
.photo-item > span { font-size: 14px; }

/* Writing and manuscript tools retain the app's data and confirmation rules. */
.editor-breadcrumb { font-size: 14px; color: var(--muted); }
.editor-top { margin: 22px 0; padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.editor-top .button { font-size: 14px; min-height: 48px; }
#save-status { font-size: 13px; color: #5e6954; }
.editor-layout { grid-template-columns: minmax(0, 1fr) 310px; gap: 24px; }
.writing-surface { padding: 38px 32px 20px; border-radius: 5px; }
.story-title-input { display: block; font-size: 30px; line-height: 1.6; font-weight: 600; resize: vertical; field-sizing: content; min-height: 1.8em; height: auto; overflow-wrap: anywhere; }
.writing-byline { font-size: 13px; color: var(--muted); }
.writing-prompt { font-size: 15px; color: #4f6247; background: #eef0e4; border-left-color: #879b72; border-radius: 0 4px 4px 0; }
.story-textarea { font-size: 19px; line-height: 2.1; color: #354339; min-height: 460px; }
.story-textarea::placeholder { color: #6e7567; opacity: 1; }
.story-title-input:focus-visible, .story-textarea:focus-visible { outline-offset: 7px; }
.writing-footer { font-size: 12px; color: #5f6b55; flex-wrap: wrap; }
.transcript-details { font-size: 15px; color: #56664c; }
.transcript-details summary { min-height: 44px; padding-top: 7px; }
.transcript-details p { font-size: 14px; }
.transcript-details textarea { font-size: 16px; line-height: 1.9; border-radius: 5px; }
.editor-tools { background: #efefe3; border-radius: 5px; }
.tool-section { padding: 24px; }
.tool-heading h2 { font-size: 21px; font-weight: 600; }
.tool-section > p { font-size: 14px; color: var(--muted); }
.capability-note, .tool-section > small { font-size: 13px; line-height: 1.85; color: #5f6b54; }
.consent-check { font-size: 14px; color: #5b6651; line-height: 1.8; }
.consent-check input { width: 20px; height: 20px; margin-top: 4px; flex-shrink: 0; }
.upload-link, .photo-upload { min-height: 48px; font-size: 15px; }
#record-status { font-size: 14px; color: #59694f; }
.record-button { width: 64px; height: 64px; background: var(--navy); }
.record-secondary { min-width: 44px; min-height: 44px; }
.audio-item strong { font-size: 14px; }
.photo-upload { border-color: #a4b194; }
.field, .field-label { font-size: 14px; color: #526048; }
.field input, .field textarea { font-size: 16px; border-radius: 6px; padding: 12px 14px; min-height: 50px; border-color: #bdc7af; }
.book-workspace { gap: 28px; }
.book-settings { border-radius: 5px; background: var(--white); }
.book-settings h2 { font-size: 25px; }
.cover-option { width: 44px; height: 44px; border-width: 5px; }
.book-export > p, .book-export .text-link { font-size: 14px; color: var(--muted); }
.book-export .button { font-size: 14px; }
.book-stage { background: #e8ebdd; border-radius: 5px; min-width: 0; }
.book-stage-top, .book-stage-caption { font-size: 13px; color: #5c6b50; }
.contents-section .section-heading > span { font-size: 14px; color: var(--muted); }
.contents-row > span:not(:first-child) { font-size: 13px; color: #5c6853; }
.privacy-row h2 { font-size: 24px; }
.privacy-row p, .privacy-card p, .privacy-card li { font-size: 16px; color: var(--muted); }
.privacy-row > span { color: #8a9676; }
.backup-card { background: #eeeee2; border-color: var(--line); border-radius: 5px; }
.backup-card h2 { font-size: 24px; }
.backup-card > p { font-size: 14px; color: #5e6b52; }
.backup-card .button, .backup-card .text-link { font-size: 14px; }
.text-link.danger { color: #9b3c2d; }

/* Account, access and third-party states use the same vocabulary. */
.auth-layout { gap: 7%; padding-block: 48px 70px; }
.auth-story { border-radius: 5px; min-height: 0; background: var(--navy); display: flex; flex-direction: column; }
.auth-story > img { position: static; width: 100%; height: 330px; object-fit: cover; }
.auth-story:after { display: none; }
.auth-story-copy { position: static; padding: 30px 38px 40px; }
.auth-story-copy h2 { font-size: 34px; margin-block: 14px; line-height: 1.5; }
.auth-story-copy p { font-size: 16px; color: #e4e8d8; }
.auth-story-copy > span { font-size: 11px; }
.auth-image-label { border-radius: 3px; font-size: 12px; background: #183f35c9; }
.auth-panel { padding-top: 12px; max-width: 480px; }
.auth-panel h1 { font-size: 36px; line-height: 1.5; }
.auth-intro { font-size: 16px; }
.auth-tabs { margin-block: 26px; }
.auth-tabs a { font-size: 16px; min-height: 46px; }
.auth-panel .field { font-size: 14px; color: #526048; }
.auth-panel input:not([type="checkbox"]) { min-height: 52px; border-radius: 6px; border-color: #bdc7af; font-size: 16px; }
.field-hint { font-size: 13px; color: #5f6b54; }
.password-field button { min-height: 44px; font-size: 14px; }
.auth-consent { font-size: 14px; }
.auth-error { font-size: 14px; color: #9b3726; }
.auth-storage-note p, .auth-help, .auth-browse { font-size: 13px; }
.account-page { max-width: 880px; margin: 10px auto 60px; }
.account-page > h1 { font-size: 36px; }
.account-card { border-radius: 5px; padding: 28px; }
.account-card p { font-size: 14px; }
.account-details h2 { font-size: 26px; }
.account-details p { font-size: 16px; }
.integration-panel { max-width: none; border-radius: 5px; background: var(--white); padding: 28px; }
.integration-panel h2 { font-family: var(--serif); font-size: 25px; font-weight: 600; }
.integration-panel h3 { font-size: 20px; }
.integration-panel p { color: #59654f; font-size: 15px; }
.integration-actions { gap: 10px; }
.integration-actions .button { font-size: 14px; }
.integration-note { font-size: 14px; line-height: 1.9; color: #5f6b54; }
.integration-methods h2 { font-size: 20px; }
.login-alternatives summary { cursor: pointer; min-height: 44px; padding-block: 7px; font-size: 15px; color: #58674d; }
.integration-methods .button:disabled { opacity: 1; color: #6b7167; background: #efefe7; border-color: #d8dcce; }
.integration-form :is(input, select) { min-height: 52px; font-size: 16px; border-radius: 6px; }
.integration-error { color: #9b3726; }
dialog { width: min(560px, calc(100% - 40px)); max-width: none; max-height: calc(100dvh - 40px); overflow-y: auto; border-radius: 8px; background: var(--white); padding: 42px 36px 34px; }
dialog::backdrop { background: #142b22a6; }
dialog h2 { font-size: 29px; line-height: 1.5; padding-right: 22px; }
dialog > p, .form-note, .modal-secondary { font-size: 14px; line-height: 1.9; color: #5b6852; }
.modal-close { width: 44px; height: 44px; top: 10px; right: 10px; }
.modal-secondary { display: block; min-height: 44px; padding-top: 10px; }
#toast { font-size: 15px; line-height: 1.7; background: var(--navy); color: var(--white); border-radius: 6px; max-width: min(560px, calc(100vw - 32px)); }

@media (min-width: 1600px) {
  .pine-hero-copy { padding-left: max(72px, calc((100vw - 1440px) / 2)); }
}
@media (max-width: 1180px) {
  .header-inner { padding-inline: 36px; gap: 30px; }
  .top-nav { gap: 25px; }
  .page-width { width: calc(100% - 80px); }
  .pine-hero-copy { padding: 54px 28px 44px 40px; }
  .pine-hero h1 { font-size: clamp(42px, 5vw, 62px); }
  .pine-hero .hero-lead { font-size: 17px; }
  .pine-hero .memory-hero-actions { gap: 15px; }
  .pine-hero .memory-hero-actions .button { font-size: 18px; padding-inline: 25px; min-height: 58px; }
  .pine-hero .underlined-link { font-size: 16px; }
  .pine-hero, .pine-hero-visual { min-height: 575px; }
  .pine-process-list { gap: 22px; }
  .pine-process-list li { gap: 12px; }
  .pine-process-list li > .icon { width: 29px; padding-left: 10px; }
  .pine-step-number { font-size: 28px; }
  .pine-process-list p { font-size: 14px; }
  .sidebar { width: 196px; padding-inline: 14px; }
  .workspace-main { padding: 32px 30px 60px; }
  .editor-layout { grid-template-columns: 1fr; }
  .editor-tools { display: grid; grid-template-columns: 1fr 1fr; }
  .editor-tools .tool-section { border-right: 1px solid var(--line); }
  .heading-actions { max-width: 320px; }
  .keepsake-inner { gap: 38px; }
  .auth-story-copy { padding: 28px; }
}
@media (max-width: 900px) {
  .header-inner { gap: 20px; padding-inline: 28px; }
  .brand > span { font-size: 22px; }
  .top-nav { gap: 17px; }
  .top-nav a { font-size: 14px; }
  .header-account { gap: 14px; }
  .header-cta { padding-inline: 18px; }
  .pine-hero { grid-template-columns: 1fr 1fr; }
  .pine-hero h1 { font-size: 43px; }
  .pine-hero-copy { padding: 43px 24px 35px 30px; }
  .pine-hero .hero-lead { font-size: 16px; }
  .pine-hero .hero-footnote { font-size: 14px; }
  .pine-hero .memory-hero-actions { flex-direction: column; align-items: flex-start; gap: 12px; margin-top: 23px; }
  .pine-hero, .pine-hero-visual { min-height: 570px; }
  .pine-process-list li { display: grid; grid-template-columns: auto 1fr; }
  .pine-process-list li > .icon { display: none; }
  .pine-process-list h3 { font-size: 20px; }
  .pine-process-list p br { display: none; }
  .sidebar { display: none; }
  .workspace-main { width: 100%; }
  .page-heading { flex-wrap: wrap; gap: 18px; }
  .heading-actions { max-width: none; }
  .privacy-layout { grid-template-columns: 1fr; }
  .book-workspace { grid-template-columns: 260px minmax(0, 1fr); }
  .book-stage { padding-inline: 20px; }
  .keepsake-inner { grid-template-columns: 1fr 1fr; gap: 30px; }
  .keepsake-photo img { height: 420px; }
  .keepsake-copy h2 { font-size: 29px; }
  .together-inner { gap: 32px; }
  .footer { padding-inline: 36px; }
}
@media (max-width: 700px) {
  body { font-size: 16px; }
  .header { height: 76px; }
  .header-inner { width: 100%; padding-inline: 20px; gap: 12px; }
  .header .brand { gap: 9px; min-width: 0; }
  .header .brand img { width: 32px; height: 32px; }
  .header .brand > span { font-size: 20px; letter-spacing: .05em; }
  .header .brand small { font-size: 7px; letter-spacing: .23em; margin-top: 6px; }
  .top-nav { display: none; }
  .header-account { gap: 14px; }
  .header-account .account-link { font-size: 14px; min-height: 44px; }
  .header-account .header-cta { min-height: 44px; padding: 9px 16px; font-size: 14px; }
  .header-account .header-cta .icon { display: none; }
  .local-notice { font-size: 12px; min-height: 34px; gap: 8px; flex-wrap: wrap; padding: 5px 16px; }
  .notice-detail { display: none; }
  .page-width { width: calc(100% - 40px); }
  .pine-hero { display: flex; flex-direction: column; min-height: 0; }
  .pine-hero-copy { padding: 40px 24px 36px; }
  .pine-hero-copy .kicker { font-size: 13px; }
  .pine-hero h1 { font-size: clamp(36px, 10.1vw, 56px); margin: 22px 0 21px; line-height: 1.36; letter-spacing: -.04em; }
  .pine-hero .hero-lead { font-size: 16px; line-height: 1.95; }
  .pine-hero .memory-hero-actions { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 12px 22px; margin-top: 25px; }
  .pine-hero .memory-hero-actions .button { min-height: 55px; font-size: 19px; padding: 12px 26px; gap: 16px; }
  .pine-hero .underlined-link { font-size: 16px; gap: 9px; }
  .pine-hero .underlined-link .icon { width: 20px; height: 20px; }
  .pine-hero .hero-footnote { font-size: 14px; margin-top: 19px; }
  .pine-botanical { width: 70px; height: 200px; opacity: .25; }
  .pine-hero-visual { height: auto; min-height: 0; aspect-ratio: 1.307; }
  .pine-hero-visual figcaption { font-size: 10px; }
  .pine-hero-visual figcaption span { right: 13px; }
  .pine-hero-visual figcaption span:first-child { top: 12px; }
  .pine-hero-visual figcaption span:last-child { bottom: 12px; }
  .pine-process { padding-block: 32px; }
  .pine-section-heading { margin-bottom: 22px; }
  .pine-section-heading h2 { font-size: 27px; line-height: 1.6; max-width: 14em; }
  .pine-section-heading > span { display: none; }
  .pine-process-list { display: flex; flex-direction: column; gap: 0; }
  .pine-process-list li { display: grid; grid-template-columns: 42px 1fr; gap: 18px; padding-block: 20px; border-top: 1px solid var(--line); }
  .pine-step-number { font-size: 30px; }
  .pine-process-list h3 { font-size: 22px; }
  .pine-process-list p { font-size: 16px; }
  .pine-process-list :is(a, button) { font-size: 14px; min-height: 44px; }
  .memory-section { padding-block: 44px; }
  .editorial-heading { display: block; margin-bottom: 24px; }
  .kicker { font-size: 12px; }
  :is(.editorial-heading, .keepsake-copy, .together-section, .home-faq, .closing-invitation) h2 { font-size: 29px; line-height: 1.6; }
  .editorial-heading > p, .section-lead { font-size: 16px; }
  .keepsake-inner { display: flex; flex-direction: column; gap: 28px; padding-block: 36px; }
  .keepsake-photo { width: 100%; }
  .keepsake-photo img { width: 100%; height: auto; aspect-ratio: 1.2; }
  .keepsake-photo figcaption { font-size: 11px; }
  .keepsake-copy { width: 100%; }
  .keepsake-copy .section-lead { font-size: 16px; }
  .keepsake-list strong { font-size: 17px; }
  .keepsake-list p { font-size: 14px; }
  .keepsake-copy .button { font-size: 15px; }
  .prompt-grid { grid-template-columns: 1fr; }
  .memory-story-card > div, .prompt-tile { padding: 26px; }
  .memory-story-card h3 { font-size: 25px; }
  .memory-story-card p, .prompt-tile p { font-size: 15px; }
  .prompt-tile h3 { font-size: 27px; }
  .together-inner { padding-block: 38px; grid-template-columns: 1fr; }
  .together-inner > div > p:not(.kicker) { font-size: 16px; }
  .together-section .kicker { font-size: 12px; }
  .device-pair { gap: 12px; }
  .device-pair article { padding: 24px 18px; }
  .device-pair h3 { font-size: 20px; }
  .device-pair article p { font-size: 14px; }
  .device-pair .sync-note { font-size: 13px; }
  .home-faq { grid-template-columns: 1fr; gap: 24px; }
  .home-faq-list summary { font-size: 17px; padding-block: 22px; }
  .home-faq-list details p { font-size: 15px; }
  .closing-invitation { padding-block: 44px 50px; }
  .closing-invitation > p:not(.kicker) { font-size: 15px; }
  .closing-invitation .button { font-size: 15px; }
  .footer { flex-direction: column; align-items: flex-start; padding: 34px 24px 116px; gap: 26px; }
  .footer nav { gap: 12px 24px; font-size: 14px; }
  .footer nav a { min-height: 44px; display: inline-flex; align-items: center; }
  .footer-brand p { font-size: 14px; }
  .footer-caption { display: none; }
  .footer-legal { font-size: 12px; }
  .mobile-nav { height: calc(70px + env(safe-area-inset-bottom)); padding-bottom: max(6px, env(safe-area-inset-bottom)); background: #fffdf8fa; border-top: 1px solid #cccdbd; }
  .mobile-nav .nav-item { gap: 3px; min-height: 56px; padding-top: 9px; color: #626f56; }
  .mobile-nav .nav-item span { font-size: 12px; }
  .mobile-nav .nav-item .icon { width: 22px; height: 22px; }
  .mobile-nav .nav-item.active { color: var(--orange-hover); background: transparent; }
  .workspace-main, .workspace-main.wide { padding: 30px 20px 44px; }
  .page-heading { align-items: flex-start; gap: 18px; }
  .page-heading h1 { font-size: 30px; }
  .page-heading p { font-size: 14px; }
  .heading-actions { width: 100%; justify-content: flex-start; gap: 10px; }
  .heading-actions .button { font-size: 14px; padding: 11px 17px; }
  .library-welcome { grid-template-columns: 1fr; }
  .library-welcome > div { padding: 28px 24px; }
  .library-welcome h2 { font-size: 30px; }
  .library-welcome p { font-size: 16px; }
  .library-welcome figure img { width: 100%; height: 260px; object-fit: cover; }
  .library-welcome figcaption { font-size: 11px; }
  .gentle-note { font-size: 13px; }
  .library-overview { padding: 26px 24px; }
  .progress-area .eyebrow { font-size: 11px; }
  .progress-numbers { gap: 7px; flex-wrap: wrap; }
  .progress-numbers i { margin-inline: 6px; }
  .progress-numbers strong { font-size: 34px; }
  .progress-numbers span { font-size: 13px; }
  .progress-area > p { font-size: 14px; }
  .overview-book { display: none; }
  .library-toolbar { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .tabs { gap: 24px; }
  .tabs button { font-size: 15px; }
  .search-box { width: 100%; max-width: none; min-width: 0; }
  .search-box input { width: 100%; }
  .story-list { padding-inline: 15px; }
  .story-row { flex-wrap: wrap; gap: 10px; position: relative; padding: 22px 0; }
  .story-index, .story-thumb { display: none; }
  .story-summary { flex: 1 1 calc(100% - 70px); min-width: 0; }
  .story-summary h3 { font-size: 20px; }
  .story-summary > p { font-size: 14px; }
  .story-meta { font-size: 12px; }
  .story-row > .icon { display: none; }
  .story-row .status-tag { font-size: 11px; padding: 4px 8px; }
  .question-heading { padding: 27px 24px; }
  .question-heading h1 { font-size: 30px; }
  .question-heading p { font-size: 15px; }
  .small-seal { display: none; }
  .theme-tabs { gap: 8px; margin-block: 20px; }
  .theme-tabs button { font-size: 14px; padding-inline: 14px; min-height: 46px; }
  .question-grid { grid-template-columns: 1fr; gap: 17px; }
  .question-card { padding: 25px; min-height: 280px; }
  .question-card h2 { font-size: 24px; margin-top: 20px; }
  .question-card p { font-size: 16px; }
  .question-card .text-link { font-size: 15px; }
  .empty-state { padding: 42px 22px; }
  .empty-state h2 { font-size: 27px; }
  .empty-state p { font-size: 16px; }
  .editor-top { flex-wrap: wrap; gap: 15px; padding-bottom: 15px; }
  .editor-top > div:last-child { width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .editor-top .button { font-size: 14px; padding-inline: 13px; min-height: 49px; }
  .editor-layout { grid-template-columns: 1fr; }
  .writing-surface { padding: 27px 22px 18px; }
  .story-title-input { font-size: 26px; }
  .writing-byline { flex-wrap: wrap; font-size: 12px; padding-bottom: 18px; }
  .writing-prompt { font-size: 15px; padding: 12px; }
  .story-textarea { font-size: 18px; min-height: 360px; }
  .writing-footer { font-size: 12px; }
  .editor-tools { display: block; }
  .editor-tools .tool-section { border-right: 0; padding: 25px; }
  .tool-heading h2 { font-size: 22px; }
  .tool-section > p { font-size: 15px; }
  .consent-check { font-size: 14px; }
  .book-workspace { grid-template-columns: 1fr; }
  .book-settings { padding: 25px; }
  .book-stage { min-height: 580px; padding: 65px 25px 35px; }
  .book-stage-top { font-size: 12px; }
  .book-stage-caption { font-size: 14px; }
  .contents-section .section-heading { align-items: flex-start; gap: 12px; flex-wrap: wrap; }
  .contents-row { gap: 13px; flex-wrap: wrap; }
  .contents-row h3 { font-size: 18px; min-width: 130px; }
  .contents-row > span:not(:first-child) { font-size: 12px; }
  .auth-layout { width: calc(100% - 40px); padding-block: 30px 42px; max-width: 520px; display: block; }
  .auth-story { display: none; }
  .auth-panel { padding: 0; max-width: none; }
  .auth-panel h1 { font-size: 30px; }
  .auth-intro { font-size: 16px; }
  .auth-tabs { margin-block: 24px; }
  .auth-panel .field { font-size: 14px; }
  .field-hint { font-size: 13px; }
  .auth-help, .auth-storage-note p, .auth-browse { font-size: 13px; }
  .auth-consent { font-size: 14px; }
  .account-page { margin-top: 0; }
  .account-page > h1 { font-size: 31px; }
  .account-card { padding: 22px; }
  .account-details p { font-size: 16px; }
  .integration-panel { margin: 22px 0; padding: 24px; border-radius: 5px; }
  main > .integration-panel:not(.workspace-main > *) { margin-inline: 20px; }
  .workspace-main > .integration-panel { margin-inline: 0; }
  .integration-panel h2 { font-size: 24px; }
  .integration-actions { flex-direction: column; }
  .integration-actions .button { width: 100%; font-size: 15px; }
  .integration-note { font-size: 14px; }
  .sample-header { padding: 25px 20px; gap: 15px; flex-wrap: wrap; }
  .sample-tag { font-size: 12px; }
  .sample-story { padding: 12px 24px 48px; }
  .sample-story h1 { font-size: 31px; }
  .sample-story > p { font-size: 18px; line-height: 2.1; }
  .sample-story blockquote { font-size: 22px; padding: 22px; }
  .sample-photo img { height: auto; aspect-ratio: 1.2; }
  .sample-photo figcaption { font-size: 12px; }
  .about-intro { padding: 36px 25px; }
  .about-intro h1 { font-size: 31px; }
  .about-intro :is(.eyebrow, p) { font-size: 16px; }
  .privacy-row { gap: 15px; }
  .privacy-row h2 { font-size: 23px; }
  .privacy-row p { font-size: 16px; }
  dialog { width: calc(100% - 28px); padding: 42px 24px 26px; max-height: calc(100dvh - 28px); }
  dialog h2 { font-size: 26px; }
  dialog > p, .form-note { font-size: 14px; }
  #toast { bottom: calc(86px + env(safe-area-inset-bottom)); width: max-content; font-size: 14px; padding: 13px 19px; }
}
@media (max-width: 360px) {
  .header-inner { padding-inline: 14px; }
  .header .brand > span { font-size: 18px; }
  .header .brand img { width: 29px; height: 29px; }
  .header-account { gap: 10px; }
  .header-account .header-cta { padding-inline: 13px; }
  .header-account .account-link { font-size: 13px; }
  .pine-hero-copy { padding-inline: 20px; }
  .pine-hero h1 { font-size: 35px; }
  .pine-hero .memory-hero-actions { gap: 12px; }
  .pine-hero .memory-hero-actions .button { padding-inline: 22px; font-size: 18px; }
  .pine-hero .underlined-link { font-size: 14px; }
  .pine-hero .underlined-link .icon { display: none; }
  .page-width { width: calc(100% - 32px); }
  .workspace-main, .workspace-main.wide { padding-inline: 16px; }
  .book-stage .book-cover { transform: scale(.85); margin: -25px -20px; }
  .device-pair { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
@media print {
  .pine-hero, .pine-process, .header, .mobile-nav, .sidebar, .local-notice, .footer { display: none !important; }
}
