/* 云归家 · a small home for the days we share. */
.room-app .main { padding-bottom: 34px; }
.room-app .sidebar { align-self: stretch; }
.room-app .nav-heading { margin-top: 26px; margin-bottom: 12px; }
.room-app .sidebar-bottom { padding-top: 42px; }
.space-nav { display: flex; flex-direction: column; gap: 5px; }
.space-nav-button { display: flex; align-items: center; gap: 13px; width: 100%; min-height: 63px; padding: 11px 13px; border: 1px solid transparent; border-radius: 12px; background: transparent; color: #687760; text-align: left; transition: background .18s, border-color .18s, color .18s; }
.space-nav-button > span:last-child { min-width: 0; font-size: 14px; line-height: 1.55; }
.space-nav-button small { display: block; margin-top: 2px; color: #65725c; font-size: 9px; letter-spacing: .11em; }
.space-nav-icon { display: grid; place-items: center; flex: none; width: 23px; height: 25px; }
.space-nav-button.active { border-color: #d5dfcc; background: #e1e9d8; color: #405e3e; }
.space-nav-button.active > span:last-child { font-weight: 600; }
.space-nav-button.active small { color: #637b55; font-weight: 400; }
.wish-categories { margin: -7px 0 24px; }
.wish-categories .category-area { display: flex; align-items: flex-start; gap: 12px; }
.wish-categories .category-nav { flex: 1; min-width: 0; flex-direction: row; gap: 6px; overflow-x: auto; padding: 3px 1px 10px; scrollbar-width: thin; scrollbar-color: #c7d1bb transparent; }
.wish-categories .category-btn { flex: none; width: auto; min-height: 44px; gap: 7px; padding: 8px 11px; white-space: nowrap; }
.wish-categories .manage-categories-button { flex: none; width: auto; margin-top: 3px; padding: 8px 11px; }
.wish-categories .nav-count { min-width: 21px; height: 22px; }

/* The first page is an open letter, with room for real memories. */
#lifeRoot { min-width: 0; }
.life-page { padding-top: 36px; min-width: 0; animation: life-arrive .24s ease-out both; }
.life-eyebrow { display: block; margin: 0 0 13px; color: #65725c; font-size: 10px; font-weight: 500; line-height: 1.6; letter-spacing: .19em; }
.life-page-header { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 30px; }
.life-page-header > div { min-width: 0; }
.life-page-header :is(h1, h2) { margin: 0; font: 500 37px/1.4 var(--serif); letter-spacing: .05em; }
.life-page-header p { margin: 13px 0 0; color: #6b7b61; font-size: 14px; line-height: 1.9; }
.life-page-header > .primary-button { flex: none; margin-bottom: 3px; }
.life-home-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 224px; align-items: center; gap: 34px; min-height: 285px; margin-bottom: 28px; padding: 21px 0 36px; border-bottom: 1px solid var(--line); }
.life-home-copy { min-width: 0; }
.life-home-copy :is(h1, h2) { margin: 0; font: 500 42px/1.48 var(--serif); letter-spacing: .055em; }
.life-home-copy > p { margin: 17px 0 22px; color: #6b7a60; font-size: 14px; line-height: 1.95; }
.life-home-copy :is(.primary-button, .secondary-button) { min-height: 44px; padding: 9px 15px; }
.life-hero-heart { display: inline-block; color: #b17e5e; font: 400 .7em/1 var(--sans); margin-left: .22em; vertical-align: .08em; }
.life-day-card { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; align-self: center; min-height: 236px; padding: 26px 18px 18px; border: 1px solid #d9dfcc; border-radius: 112px 112px 10px 10px; background: #ecf0e3; text-align: center; }
.life-day-card::before { content: ""; position: absolute; inset: 10px; border: 1px solid #dce3ce; border-radius: 104px 104px 5px 5px; pointer-events: none; }
.life-day-card > span { position: relative; font-size: 12px; letter-spacing: .08em; color: #65725c; }
.life-day-card > strong { position: relative; margin: 10px 0 4px; font: 400 61px/1.14 Georgia, var(--serif); color: #526d46; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.life-day-card > small { position: relative; font-size: 12px; color: #65725c; }
.life-day-card > .text-button { position: relative; margin-top: 11px; font-size: 12px; }
.life-day-card > .life-day-icon { margin-bottom: 10px; color: #aa896c; }
.life-day-card > .life-day-unset { margin-top: 5px; color: #9b8363; }
.life-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 29px; border: 1px solid #dfe4d5; border-radius: 14px; overflow: hidden; background: #fffdf7; }
.life-stat { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 18px 23px 17px; border: 0; background: transparent; text-align: left; }
.life-stat + .life-stat { border-left: 1px solid #e5e8dd; }
.life-stat strong { flex: none; font: 400 31px/1.35 Georgia, var(--serif); color: #56714b; font-variant-numeric: tabular-nums; }
.life-stat > span { display: flex; align-items: center; gap: 8px; color: #65725c; font-size: 12px; line-height: 1.7; }
.life-stat > span svg { width: 17px; height: 17px; color: #859b70; }
.life-stat strong > small { font: 400 12px/1.5 var(--sans); color: #65725c; }
.life-home-grid { display: grid; grid-template-columns: 1.12fr 1fr; gap: 21px; align-items: start; }
.life-home-memory { margin: 27px 0 24px; padding: 24px; border: 1px solid #dce3d1; border-radius: 16px; background: #fffdf7; }
.life-home-memory .life-section-heading { align-items: center; margin-bottom: 20px; }
.life-home-memory .life-section-heading h3 { font-size: 24px; }
.life-home-memory .life-section-heading .text-button { display: flex; align-items: center; gap: 9px; min-height: 42px; flex: none; }
.life-home-memory .life-section-heading .text-button:disabled { opacity: .45; cursor: default; }
.life-home-memory-card { display: grid; grid-template-columns: minmax(150px, .75fr) minmax(0, 1.25fr); gap: 26px; align-items: center; }
.life-home-memory-image { display: block; width: 100%; max-height: 240px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 10px; }
.life-home-memory-art { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 19px; min-height: 200px; border-radius: 10px; color: #95a781; background: radial-gradient(ellipse at 22% 20%, #f4e9d7, #e8eddd); }
.life-home-memory-art > span { color: #899b75; font: 400 14px/1.8 var(--serif); letter-spacing: .1em; }
.life-home-memory-copy { min-width: 0; }
.life-home-memory-meta { color: #849476; font-size: 11px; line-height: 1.8; }
.life-home-memory-copy h4 { margin: 11px 0; color: #4c6541; font: 500 25px/1.65 var(--serif); overflow-wrap: anywhere; }
.life-home-memory-copy > p { margin: 0 0 10px; color: #76866a; font-size: 13px; line-height: 1.9; white-space: pre-wrap; overflow-wrap: anywhere; }
.life-home-memory-copy .text-button { min-height: 42px; padding-left: 0; font-size: 12px; }
.life-home-memory-note { margin: 16px 0 0; color: #8a967e; font-size: 11px; line-height: 1.8; }
.life-home-memory-empty { display: flex; align-items: center; gap: 20px; padding: 21px 16px; background: #f3f5eb; border-radius: 10px; }
.life-home-memory-empty > svg { flex: none; color: #95a781; }
.life-home-memory-empty h4 { margin: 0 0 8px; color: #607653; font: 500 19px/1.7 var(--serif); }
.life-home-memory-empty p { margin: 0; color: #829174; font-size: 12px; line-height: 1.9; }
@media (max-width: 560px) {
  .life-home-memory { padding: 20px 18px; }
  .life-home-memory .life-section-heading h3 { font-size: 22px; }
  .life-home-memory-card { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .life-home-memory-image { max-height: 260px; object-fit: contain; background: #ecefe2; }
  .life-home-memory-art { min-height: 145px; }
  .life-home-memory-copy h4 { margin-top: 8px; font-size: 23px; }
  .life-home-memory-empty { align-items: flex-start; padding: 20px 13px; gap: 13px; }
  .life-home-memory-empty h4 { font-size: 17px; }
}
.life-panel { min-width: 0; padding: 23px; border: 1px solid #dfe4d5; border-radius: 15px; background: #fffdf7; }
.life-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 19px; }
.life-section-heading h3 { margin: 0; font: 500 23px/1.45 var(--serif); letter-spacing: .025em; }
.life-section-heading .text-button { padding: 4px 0 4px 8px; font-size: 12px; }
.life-recent-list { display: flex; flex-direction: column; gap: 0; }
.life-recent-item { display: flex; align-items: flex-start; gap: 13px; width: 100%; padding: 14px 0; border: 0; border-radius: 0; background: transparent; text-align: left; }
.life-recent-item + .life-recent-item { border-top: 1px solid #e9ebdf; }
.life-recent-item:first-child { padding-top: 2px; }
.life-recent-item:last-child { padding-bottom: 2px; }
.life-item-icon { display: grid; place-items: center; flex: none; width: 35px; height: 35px; margin-top: 1px; border: 1px solid #e0e7d4; border-radius: 11px; background: #f0f4e9; color: #789364; font-size: 19px; }
.life-item-icon svg { width: 18px; height: 18px; }
.life-recent-item > :is(div, span):not(.life-item-icon) { flex: 1; min-width: 0; }
.life-recent-item h4, .life-recent-item > span > strong { display: block; margin: 0; font-size: 14px; line-height: 1.75; font-weight: 500; overflow-wrap: anywhere; }
.life-recent-item p, .life-recent-item > span > span { display: block; margin: 4px 0 0; color: #65725c; font-size: 12px; line-height: 1.8; overflow-wrap: anywhere; }
.life-recent-item > small { flex: none; margin-top: 3px; color: #65725c; font-size: 11px; }
.life-quick-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; margin-top: 23px; }
.life-quick-card { position: relative; display: flex; align-items: flex-start; gap: 11px; min-width: 0; min-height: 115px; padding: 20px 17px; border: 1px solid #dfe5d5; border-radius: 11px; background: #f3f6ed; text-align: left; }
.life-quick-card:nth-child(2) { background: #f7efe4; border-color: #e9dfcf; }
.life-quick-card:nth-child(3) { background: #f0f1eb; border-color: #e0e3d8; }
.life-quick-card:nth-child(4) { background: #f6f0e9; border-color: #e8e0d6; }
.life-quick-icon { display: grid; place-items: center; flex: none; width: 25px; margin-top: 3px; color: #7b9166; }
.life-quick-card > span:not(.life-quick-icon) { min-width: 0; padding-right: 4px; }
.life-quick-card strong { display: block; margin-bottom: 7px; font: 500 18px/1.6 var(--serif); }
.life-quick-card small { display: block; font-size: 11px; line-height: 1.9; color: #65725c; }
.life-quick-card > svg { display: none; }
.life-moments-panel { margin-top: 23px; }
.life-moment-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.life-moment-card { display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; min-width: 0; padding: 0; overflow: hidden; border: 1px solid #e0e5d7; border-radius: 10px; background: #fffef8; text-align: left; }
.life-moment-card > img, .life-moment-card > .life-moment-art { flex: none; width: 100%; height: auto; min-height: 0; aspect-ratio: 4/3; object-fit: cover; }
.life-moment-card > img { display: block; }
.life-moment-art { display: grid; place-items: center; width: 100%; min-height: 135px; color: #83996f; background: radial-gradient(ellipse at 72% 30%, #f3e8d5 0%, #eef1e1 65%); }
.life-moment-card > span:not(.life-moment-art) { display: block; min-width: 0; padding: 15px; }
.life-moment-card small { display: block; color: #65725c; font-size: 10px; line-height: 1.8; }
.life-moment-card strong { display: block; margin: 7px 0; font: 500 20px/1.6 var(--serif); overflow-wrap: anywhere; }
.life-moment-card > span > span { display: block; color: #65725c; font-size: 12px; line-height: 1.9; overflow-wrap: anywhere; }
.life-quiet-note { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 165px; padding: 25px 20px; border: 1px dashed #d5deca; border-radius: 10px; background: #f5f7ef; text-align: center; }
.life-quiet-note > svg { color: #83976f; margin-bottom: 13px; }
.life-quiet-note p { margin: 0 0 6px; font: 500 19px/1.8 var(--serif); }
.life-quiet-note > span { font-size: 12px; color: #65725c; line-height: 1.8; }

/* Little collections: dates, photographs, places, and words. */
.life-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 18px; }
.life-card { min-width: 0; overflow: hidden; padding: 21px 23px; border: 1px solid #dfe4d5; border-radius: 14px; background: #fffdf7; box-shadow: 0 3px 7px #52614304; }
.life-card h3 { margin: 9px 0 10px; font: 500 24px/1.55 var(--serif); letter-spacing: .02em; overflow-wrap: anywhere; }
.life-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 35px; }
.life-card-top .edit-button { margin: -6px -10px -6px 0; }
.life-meta { margin: 0; color: #65725c; font-size: 12px; line-height: 1.85; overflow-wrap: anywhere; }
.life-card-top .life-meta { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.life-body { margin: 10px 0 15px; color: #697b5d; font-size: 14px; line-height: 1.95; white-space: pre-wrap; overflow-wrap: anywhere; }
.life-card > .text-button, .life-card-content > .text-button { margin-left: -9px; font-size: 12px; }
.life-countdown-card { position: relative; background: linear-gradient(145deg, #fffdf7 56%, #f0f3e7); }
.life-countdown-number { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 8px 0 16px; }
.life-countdown-number > span { color: #65725c; font-size: 12px; }
.life-countdown-number strong { color: #647d53; font: 400 58px/1.2 Georgia, var(--serif); font-variant-numeric: tabular-nums; }
.life-countdown-number small { color: #65725c; font-size: 12px; }
.life-countdown-card.is-today { background: linear-gradient(145deg, #fffdf7 30%, #f5e5d5); border-color: #e5d3bd; }
.life-countdown-card.is-today .life-countdown-number strong { color: #a47451; }
.life-countdown-card.is-past .life-countdown-number strong { color: #7f886e; }
.life-photo-card { padding: 9px 9px 17px; background: #fffdf7; }
.life-photo-open { position: relative; display: block; width: 100%; min-height: 160px; padding: 0; overflow: hidden; border: 0; border-radius: 8px; background: #e8eddf; }
.life-photo-open img { display: block; width: 100%; height: auto; aspect-ratio: 4/3; object-fit: cover; }
.life-card-content { min-width: 0; padding: 15px 12px 0; }
.life-card-content h3 { margin-top: 6px; font-size: 23px; }
.life-card-content .life-body { margin-bottom: 5px; }
.life-travel-card { border-top: 3px solid #a8b995; padding-top: 18px; }
.life-travel-card .life-card-top > .life-meta { padding: 3px 8px; border-radius: 5px; background: #edf2e4; color: #6a8057; }
.life-travel-summary { display: flex; align-items: center; gap: 11px; margin: -3px 0 23px; padding: 15px 20px; border: 1px solid #dde5d2; border-radius: 12px; background: #eef3e6; color: #657b53; font-size: 13px; }
.life-travel-summary strong { font: 400 27px/1.3 Georgia, var(--serif); }
.life-travel-line { display: flex; align-items: center; gap: 10px; margin: 20px 0 17px; color: #9aae87; }
.life-travel-line > span { font-size: 25px; line-height: 1; }
.life-travel-line > i { flex: 1; height: 0; border-top: 1px dashed #c7d3b9; }
.life-note-card { position: relative; border-color: #e3dfcf; background: #fffdf5; }
.life-note-card::before { content: ""; display: block; width: 28px; height: 3px; margin: 2px 0 8px; border-radius: 3px; background: #cdb498; }
.life-note-card .life-body { color: #757b65; }
.life-empty { position: relative; display: flex; grid-column: 1/-1; flex-direction: column; justify-content: center; align-items: center; min-height: 335px; padding: 47px 27px 43px; overflow: hidden; border: 1px dashed #cbd6bd; border-radius: 17px; background: radial-gradient(ellipse at 50% 0%, #edf2e5 0%, #f7f8ef 61%); text-align: center; }
.life-empty-icon { position: relative; display: grid; place-items: center; width: 69px; height: 69px; margin-bottom: 20px; border: 1px solid #d5e0c8; border-radius: 24px 24px 24px 7px; background: #e8efdd; color: #7b9369; font-size: 31px; transform: rotate(-5deg); }
.life-empty-icon svg { width: 31px; height: 31px; transform: rotate(5deg); }
.life-empty h3 { margin: 0 0 9px; font: 500 27px/1.6 var(--serif); letter-spacing: .025em; }
.life-empty p { max-width: 410px; margin: 0 0 22px; color: #65725c; font-size: 14px; line-height: 1.95; }
.life-empty .primary-button { min-height: 44px; font-size: 13px; }
.life-panel .life-empty { min-height: 220px; padding: 26px 19px; border-color: #e0e6d5; border-style: solid; border-radius: 10px; background: #f5f7ef; }
.life-panel .life-empty-icon { width: 44px; height: 44px; margin-bottom: 12px; border-radius: 15px 15px 15px 5px; font-size: 23px; }
.life-panel .life-empty-icon svg { width: 24px; height: 24px; }
.life-panel .life-empty h3 { font-size: 20px; }
.life-panel .life-empty p { margin-bottom: 14px; font-size: 12px; }
.life-error { margin: 0 0 22px; padding: 14px 16px; border: 1px solid #e8c7af; border-radius: 10px; background: #fcf0e6; color: #9f5e3d; font-size: 14px; line-height: 1.85; overflow-wrap: anywhere; }
.life-sync-line { display: flex; align-items: center; gap: 7px; margin: 20px 0 0; color: #65725c; font-size: 12px; line-height: 1.8; }
.life-sync-line::before { content: ""; flex: none; width: 5px; height: 5px; border-radius: 50%; background: #a3b68d; }
.life-sync-line:empty { display: none; }
.life-loading { display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 360px; padding: 45px 25px; text-align: center; }
.life-loading h2 { margin: 0 0 12px; font: 500 27px/1.5 var(--serif); }
.life-loading p { margin: 0; color: #65725c; font-size: 14px; line-height: 1.9; }

/* Editing feels like adding another page to a notebook. */
.life-dialog, .life-view-dialog { width: min(600px, calc(100vw - 32px)); }
.life-dialog-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; padding: 26px 28px 20px; border-bottom: 1px solid #e2e7d8; }
.life-dialog-header h2 { margin: 0; font: 500 27px/1.5 var(--serif); letter-spacing: .02em; }
.life-dialog-header p { margin: 7px 0 0; color: #65725c; font-size: 13px; line-height: 1.8; }
.life-dialog-header > .close-button { flex: none; }
.life-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; padding: 24px 28px 0; }
.life-field { min-width: 0; }
.life-field-wide { grid-column: 1/-1; }
.life-field input[type="date"] { appearance: none; -webkit-appearance: none; min-height: 49px; text-align: left; }
.life-field select { text-overflow: ellipsis; }
.life-field input[type="checkbox"] { flex: none; width: 18px; min-height: 18px; height: 18px; accent-color: #6e8858; }
.life-field:has(input[type="checkbox"]) { display: flex; align-items: center; gap: 10px; min-height: 44px; }
.life-field:has(input[type="checkbox"]) > span { margin: 0; }
.life-image-picker { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 23px 17px 17px; border: 1px dashed #bfceb0; border-radius: 11px; background: #f4f7ec; text-align: center; cursor: pointer; }
.life-image-picker > span { color: #809769; }
.life-image-picker > strong { font-weight: 500; font-size: 14px; }
.life-image-picker > small { color: #65725c; font-size: 12px; line-height: 1.8; }
.life-image-picker input[type="file"] { min-height: 44px; height: auto; padding: 7px; border: 0; background: transparent; font-size: 13px; }
.life-image-picker input::file-selector-button { min-height: 37px; margin-right: 10px; padding: 7px 12px; border: 1px solid #d1ddc4; border-radius: 7px; color: #587449; background: #fffef7; font: inherit; }
.life-image-preview { display: block; max-width: 100%; max-height: 240px; margin: 12px auto 0; border-radius: 8px; object-fit: contain; }
.life-dialog-actions { gap: 10px; padding: 12px 28px 25px; }
.life-dialog-actions .delete-button { margin-right: auto; }
.life-dialog-actions .danger-button { min-height: 44px; padding: 8px 0; border: 0; border-radius: 7px; background: transparent; color: #9f6546; font-size: 14px; }
.life-action-spacer { flex: 1; }
.life-form-hint { margin: 5px 0 19px; color: #65725c; font-size: 12px; line-height: 1.8; }
.life-field > span > small { display: inline; margin-left: 4px; font-size: 12px; }
.life-recurring-field { display: flex; align-items: center; gap: 9px; min-height: 44px; margin: -3px 0 17px; color: #627755; font-size: 13px; }
.life-recurring-field input { width: 18px; height: 18px; margin: 0; accent-color: #6e8858; }
#lifeFormError { margin: 0 0 16px; padding: 13px 15px; border: 1px solid #e8c7af; border-radius: 9px; color: #9f5e3d; background: #fcf0e6; font-size: 13px; line-height: 1.85; }
.life-form > .life-error, .life-form > .error-banner { margin: 16px 28px 0; }
.life-view-content { padding: 23px 28px 28px; }
.life-view-image { display: block; width: auto; max-width: 100%; max-height: min(65svh, 620px); margin: 0 auto 20px; object-fit: contain; border-radius: 7px; }
.life-view-content .life-body { margin-top: 14px; line-height: 2.05; }
.life-view-content .secondary-button { margin-top: 9px; }

@media (hover: hover) {
  .space-nav-button:hover { background: #e7ecdf; color: #49653f; }
  .space-nav-button.active:hover { background: #dce6d1; }
  .life-stat:hover { background: #f2f5e9; }
  .life-quick-card:hover { border-color: #bfcdb1; background: #eaf0df; }
  .life-card:hover { border-color: #c8d3bc; }
  .life-photo-open:hover img { filter: brightness(1.035); }
  .life-recent-item:hover strong { color: #6b854e; }
  .life-moment-card:hover { border-color: #bdcfae; }
}
@keyframes life-arrive { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (min-width: 1450px) {
  .life-home-hero { grid-template-columns: minmax(0, 1fr) 248px; gap: 48px; }
  .life-home-copy :is(h1, h2) { font-size: 48px; }
  .life-day-card { min-height: 254px; border-radius: 124px 124px 10px 10px; }
  .life-home-grid { gap: 25px; }
  .life-panel { padding: 27px; }
}
@media (min-width: 851px) and (max-width: 1100px) {
  .life-home-hero { grid-template-columns: minmax(0, 1fr) 180px; gap: 22px; }
  .life-home-copy :is(h1, h2) { font-size: 35px; }
  .life-day-card { min-height: 215px; }
  .life-day-card > strong { font-size: 51px; }
  .life-home-grid { grid-template-columns: minmax(0, 1fr); }
  .life-quick-card { gap: 8px; padding: 18px 12px; }
  .life-quick-icon { width: 20px; }
  .life-quick-icon svg { width: 20px; height: 20px; }
  .life-quick-card strong { font-size: 16px; }
  .life-moment-grid { gap: 10px; }
  .life-moment-card > span:not(.life-moment-art) { padding: 12px; }
  .life-stat { padding: 16px; gap: 9px; }
  .life-page-header :is(h1, h2) { font-size: 33px; }
  .life-card { padding-left: 18px; padding-right: 18px; }
  .life-photo-card { padding: 8px 8px 17px; }
}
@media (max-width: 850px) {
  .room-app .sidebar { padding: 23px 25px 0; }
  .room-app .brand { padding-bottom: 21px; }
  .room-app .main { padding-bottom: calc(var(--mobile-nav-height, calc(84px + env(safe-area-inset-bottom))) + 28px); }
  .space-nav { position: fixed; z-index: 15; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 3px; padding: 8px max(12px, env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom)); border-top: 1px solid #d9e1ce; background: #f8faf1f5; box-shadow: 0 -5px 24px #435a2e09; backdrop-filter: blur(14px); }
  .space-nav-button { flex-direction: column; justify-content: center; gap: 5px; min-height: 55px; padding: 6px 2px; border-radius: 10px; text-align: center; }
  .space-nav-button > span:last-child { font-size: 11px; line-height: 1.4; white-space: normal; overflow-wrap: anywhere; }
  .space-nav-icon { width: 23px; height: 23px; }
  .space-nav-icon svg { width: 21px; height: 21px; }
  .space-nav-button small { display: none; }
  .space-nav-button.active { border-color: transparent; background: #e7eedc; }
  .room-app .toast { bottom: calc(var(--mobile-nav-height, calc(75px + env(safe-area-inset-bottom))) + 14px); }
  .life-page { padding-top: 30px; }
  .life-home-hero { padding-top: 16px; }
  .life-home-grid { gap: 18px; }
  .life-panel { padding: 20px; }
  .wish-categories .category-nav { padding-bottom: 8px; }
}
@media (max-width: 600px) {
  .room-app .sidebar { padding: 19px 18px 0; }
  .room-app .brand { padding-bottom: 18px; }
  .room-app .brand-caption { font-size: 10px; letter-spacing: .01em; }
  .room-app .main { padding-top: 14px; }
  .space-nav { gap: 1px; padding-left: 6px; padding-right: 6px; }
  .space-nav-button { gap: 5px; min-height: 56px; padding: 6px 1px; }
  .space-nav-button > span:last-child { font-size: 10px; letter-spacing: -.035em; }
  .life-page { padding-top: 27px; }
  .life-page-header { flex-wrap: wrap; align-items: flex-start; gap: 17px; margin-bottom: 24px; }
  .life-page-header :is(h1, h2) { font-size: 31px; line-height: 1.45; }
  .life-page-header p { margin-top: 10px; font-size: 13px; line-height: 1.9; }
  .life-page-header > .primary-button { min-height: 44px; padding: 8px 13px; font-size: 13px; margin: 0; }
  .life-eyebrow { margin-bottom: 10px; font-size: 9px; letter-spacing: .15em; }
  .life-home-hero { grid-template-columns: minmax(0, 1fr) 121px; gap: 14px; min-height: 232px; padding: 7px 0 26px; margin-bottom: 23px; }
  .life-home-copy :is(h1, h2) { font-size: 29px; line-height: 1.55; letter-spacing: .025em; }
  .life-home-copy > p { margin: 12px 0 16px; font-size: 13px; line-height: 1.9; }
  .life-home-copy :is(.primary-button, .secondary-button) { min-height: 42px; padding: 8px 12px; font-size: 12px; }
  .life-day-card { min-height: 183px; padding: 28px 8px 16px; border-radius: 62px 62px 8px 8px; }
  .life-day-card::before { inset: 6px; border-radius: 56px 56px 4px 4px; }
  .life-day-card > span { font-size: 10px; letter-spacing: .02em; }
  .life-day-card > strong { font-size: 40px; margin-top: 10px; }
  .life-day-card > small { max-width: 100px; font-size: 10px; line-height: 1.8; }
  .life-day-card > .text-button { min-height: 37px; margin-top: 5px; padding: 7px 2px; font-size: 10px; }
  .life-day-card > .life-day-icon { margin-bottom: 5px; }
  .life-day-card > .life-day-icon svg { width: 20px; height: 20px; }
  .life-stats { margin-bottom: 22px; border-radius: 12px; }
  .life-stat { gap: 6px; padding: 15px 14px 13px; }
  .life-stat strong { font-size: 28px; }
  .life-stat span { font-size: 11px; }
  .life-stat > span { gap: 5px; }
  .life-stat > span svg { width: 13px; height: 13px; }
  .life-home-grid { grid-template-columns: minmax(0, 1fr); gap: 19px; }
  .life-panel { padding: 20px; border-radius: 13px; }
  .life-section-heading { margin-bottom: 16px; }
  .life-section-heading h3 { font-size: 23px; }
  .life-section-heading .text-button { font-size: 12px; }
  .life-quick-grid { grid-template-columns: minmax(0, 1fr); gap: 11px; margin-top: 20px; }
  .life-quick-card { align-items: center; gap: 15px; min-height: 90px; padding: 18px 20px; }
  .life-quick-icon { width: 27px; margin-top: 0; }
  .life-quick-card strong { margin-bottom: 4px; font-size: 19px; }
  .life-quick-card small { font-size: 11px; }
  .life-quick-card > svg { display: block; width: 18px; height: 18px; margin-left: auto; color: #8f9f7e; }
  .life-moments-panel { margin-top: 19px; }
  .life-moment-grid { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .life-moment-card { flex-direction: row; align-items: flex-start; }
  .life-moment-card > img, .life-moment-card > .life-moment-art { flex: none; width: 92px; min-height: 125px; height: 125px; aspect-ratio: auto; object-fit: cover; }
  .life-moment-card > span:not(.life-moment-art) { min-width: 0; padding: 12px; }
  .life-moment-card strong { margin: 4px 0; font-size: 18px; line-height: 1.5; }
  .life-moment-card > span > span { font-size: 11px; line-height: 1.7; }
  .life-quiet-note { min-height: 175px; padding: 25px 17px; }
  .life-quiet-note p { font-size: 18px; }
  .life-quiet-note > span { font-size: 11px; }
  .life-recent-item { gap: 11px; }
  .life-recent-item > small { font-size: 10px; }
  .life-card-grid { grid-template-columns: minmax(0, 1fr); gap: 15px; }
  .life-card { padding: 20px 21px; }
  .life-card h3 { font-size: 24px; }
  .life-photo-card { padding: 8px 8px 16px; }
  .life-photo-open img { aspect-ratio: 5/4; }
  .life-card-content { padding: 14px 12px 0; }
  .life-countdown-number strong { font-size: 54px; }
  .life-empty { min-height: 320px; padding: 39px 23px; border-radius: 14px; }
  .life-empty h3 { font-size: 24px; }
  .life-empty p { font-size: 13px; }
  .life-panel .life-empty { min-height: 215px; }
  .life-sync-line { margin-top: 17px; font-size: 11px; }
  .wish-categories { margin: -6px 0 22px; }
  .wish-categories .category-area { gap: 8px; }
  .wish-categories .category-btn { padding: 8px 10px; font-size: 13px; }
  .wish-categories .manage-categories-button { min-height: 44px; padding: 8px; font-size: 12px; }
  .wish-categories .manage-categories-button > svg { display: none; }
  .room-app #addButton { display: inline-flex; min-height: 44px; padding: 9px 11px; font-size: 12px; }
  .room-app #addButton > svg { width: 13px; height: 13px; }
  .room-app #wishPage .section-head { align-items: flex-start; gap: 10px; }
  .room-app #wishPage .section-heading { font-size: 22px; }
  .room-app #wishPage .section-subtitle { max-width: 200px; font-size: 12px; }
  .room-app .mobile-add-button { display: none; }
  .life-dialog-header { padding: 22px 21px 18px; }
  .life-dialog-header h2 { font-size: 25px; }
  .life-dialog-header p { font-size: 12px; }
  .life-form-grid { grid-template-columns: minmax(0, 1fr); padding: 21px 21px 0; }
  .life-dialog-actions { flex-wrap: wrap; padding: 9px 21px 23px; }
  .life-dialog-actions .delete-button { flex: 1; text-align: left; }
  .life-form > .life-error, .life-form > .error-banner { margin-left: 21px; margin-right: 21px; }
  .life-view-content { padding: 21px; }
  .life-image-picker { padding: 20px 12px 12px; }
  .life-dialog-header h2 { overflow-wrap: anywhere; }
}
@media (max-width: 370px) {
  .room-app .sidebar { padding-left: 14px; padding-right: 14px; }
  .life-home-hero { grid-template-columns: minmax(0, 1fr) 106px; gap: 10px; }
  .life-home-copy :is(h1, h2) { font-size: 27px; }
  .life-day-card { min-height: 178px; }
  .life-day-card > strong { font-size: 35px; }
  .life-stat { padding-left: 12px; padding-right: 12px; }
  .life-stat > span svg { display: none; }
  .life-panel { padding: 17px; }
  .space-nav-button > span:last-child { font-size: 9px; }
  .room-app #wishPage .section-heading { font-size: 20px; }
  .room-app #addButton { padding-left: 9px; padding-right: 9px; }
}
@media (prefers-reduced-motion: reduce) {
  .life-page { animation: none; }
}

/* Anniversary lists and a horizontal timeline color each occurrence by its date. */
.anniversary-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: min(100%, 450px); gap: 5px; margin: -4px 0 27px; padding: 5px; border: 1px solid #dfe5d7; border-radius: 12px; background: #eef1e7; }
.anniversary-tab { display: inline-flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 7px; min-width: 0; min-height: 44px; padding: 9px 12px; border: 1px solid transparent; border-radius: 8px; color: #65745d; background: transparent; font: inherit; font-size: 13px; line-height: 1.7; cursor: pointer; }
.anniversary-tab[aria-selected="true"] { border-color: #d6decb; color: #53644b; background: #fffdf7; box-shadow: 0 2px 5px #52614308; }
.anniversary-tab[data-anniversary-view="past"][aria-selected="true"] { border-color: #cedec4; color: #4f6d48; background: #e3ecd9; }
.anniversary-tab[data-anniversary-view="future"][aria-selected="true"] { border-color: #cfdee7; color: #416f91; background: #e7f0f6; }
.anniversary-tab-count { display: inline-flex; justify-content: center; align-items: center; min-width: 20px; padding: 0 5px; border-radius: 5px; background: #ffffff9c; font-size: 11px; font-variant-numeric: tabular-nums; }
.anniversary-panel { min-width: 0; }
.anniversary-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 9px 20px; color: #62725b; font-size: 12px; line-height: 1.8; }
.anniversary-legend > span { display: inline-flex; align-items: center; gap: 8px; }
.anniversary-legend > small { color: #74816b; font-size: 12px; }
.anniversary-dot { display: inline-block; flex: none; width: 12px; height: 12px; border-radius: 50%; background: #66845f; }
.anniversary-dot.is-past { background: #66845f; }
.anniversary-dot.is-future { background: #5283a7; }
.anniversary-timeline-tools { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px 18px; margin-bottom: 24px; }
.anniversary-timeline-tools > :first-child { min-width: 0; }
.anniversary-timeline-tools p { margin: 0 0 9px; color: #6d7a64; font-size: 12px; line-height: 1.85; }
.anniversary-timeline-controls { display: flex; flex: none; flex-wrap: wrap; gap: 8px; }
.anniversary-scroll-button { display: inline-flex; align-items: center; justify-content: center; flex: none; min-width: 44px; min-height: 44px; padding: 9px; border: 1px solid #d7dfce; border-radius: 50%; background: #fffdf7; color: #617a53; cursor: pointer; }
.anniversary-scroll-button svg { width: 18px; height: 18px; }
.anniversary-scroll-button:disabled { opacity: .4; cursor: default; }
.anniversary-horizontal { min-width: 0; max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scroll-padding-inline: 4px; padding: 4px 4px 21px; border-radius: 5px; scrollbar-width: thin; scrollbar-color: #b3c1a8 #e8eddf; }
.anniversary-horizontal:focus-visible { outline: 3px solid #a87345; outline-offset: 4px; }
.anniversary-horizontal::-webkit-scrollbar { height: 7px; }
.anniversary-horizontal::-webkit-scrollbar-track { background: #e8eddf; border-radius: 6px; }
.anniversary-horizontal::-webkit-scrollbar-thumb { background: #b3c1a8; border-radius: 6px; }
.anniversary-track { display: flex; align-items: flex-start; gap: 20px; width: max-content; min-width: 100%; margin: 0; padding: 0; list-style: none; }
.anniversary-event { position: relative; display: grid; grid-template-rows: 56px 14px auto; row-gap: 16px; flex: 0 0 300px; width: 300px; min-width: 0; align-items: start; scroll-snap-align: start; }
.anniversary-event::before { content: ""; position: absolute; top: 78px; left: -10px; right: -10px; height: 2px; background: #d7e1d3; }
.anniversary-event:first-child::before { left: 50%; }
.anniversary-event:last-child::before { right: 50%; }
.anniversary-date { display: flex; flex-direction: column; align-items: center; gap: 3px; color: #64775b; font-variant-numeric: tabular-nums; }
.anniversary-date > strong { font: 400 26px/1.3 Georgia, var(--serif); letter-spacing: .015em; }
.anniversary-date > span { color: #74816b; font-size: 11px; line-height: 1.8; }
.anniversary-event > .anniversary-dot { position: relative; z-index: 1; width: 14px; height: 14px; margin: 0 auto; box-shadow: 0 0 0 6px var(--paper, #f8f6ef); }
.anniversary-event.is-future > .anniversary-dot { background: #5283a7; }
.anniversary-card { background: linear-gradient(125deg, #fffdf7 55%, #f4f6ed); }
.anniversary-card.is-future, .anniversary-event.is-future .anniversary-card { border-color: #dce5e8; background: linear-gradient(125deg, #fffdf7 55%, #f0f5f7); }
.anniversary-status { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 5px; background: #edf2e6; color: #526f4b; font-size: 11px; line-height: 1.8; }
.anniversary-card.is-future .anniversary-status, .anniversary-event.is-future .anniversary-status { background: #eaf1f6; color: #416f91; }
.anniversary-card h3 { margin-top: 9px; overflow-wrap: anywhere; }
.anniversary-card-date { display: block; margin: 0 0 12px; color: #718168; font-size: 12px; line-height: 1.8; }
.anniversary-distance { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px; margin: 10px 0 13px; color: #62725b; font-size: 13px; line-height: 1.8; }
.anniversary-distance > strong { margin: 0 3px; color: #66845f; font: 400 34px/1.3 Georgia, var(--serif); font-variant-numeric: tabular-nums; }
.anniversary-card.is-future .anniversary-distance > strong, .anniversary-event.is-future .anniversary-distance > strong { color: #5283a7; }
.anniversary-repeat { margin: 0 0 14px; color: #6d7a64; font-size: 12px; line-height: 1.9; overflow-wrap: anywhere; }
.anniversary-more { display: flex; flex-direction: column; align-items: center; gap: 10px; margin: 24px 0 4px; text-align: center; }
.anniversary-more > .secondary-button { min-height: 44px; padding: 9px 20px; }
.anniversary-more > small { color: #728167; font-size: 12px; line-height: 1.8; }
@media (hover: hover) {
  .anniversary-tab:not([aria-selected="true"]):hover { background: #f8faf2; }
  .anniversary-scroll-button:not(:disabled):hover { border-color: #b7c8aa; background: #edf3e5; }
}
@media (max-width: 600px) {
  .anniversary-tabs { gap: 3px; margin-bottom: 23px; padding: 4px; }
  .anniversary-tab { gap: 5px; padding: 8px 6px; font-size: 12px; }
  .anniversary-tab-count { min-width: 17px; padding: 0 4px; font-size: 10px; }
  .anniversary-timeline-tools { gap: 12px; margin-bottom: 20px; }
  .anniversary-legend { gap: 7px 15px; font-size: 11px; }
  .anniversary-legend > small { flex-basis: 100%; font-size: 11px; }
  .anniversary-track { gap: 16px; }
  .anniversary-event { flex-basis: 260px; width: 260px; }
  .anniversary-event::before { left: -8px; right: -8px; }
  .anniversary-event:first-child::before { left: 50%; }
  .anniversary-event:last-child::before { right: 50%; }
  .anniversary-date > strong { font-size: 24px; }
  .anniversary-event > .anniversary-card { padding: 16px 17px; border-radius: 12px; }
  .anniversary-card h3 { font-size: 23px; }
  .anniversary-distance > strong { font-size: 31px; }
  .anniversary-repeat { font-size: 11px; }
}

/* Photographs can be browsed as an album or along the days they belong to. */
.photo-view-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: min(100%, 300px); gap: 5px; margin: -4px 0 27px; padding: 5px; border: 1px solid #dfe5d7; border-radius: 12px; background: #eef1e7; }
.photo-view-tab { display: inline-flex; justify-content: center; align-items: center; gap: 8px; min-width: 0; min-height: 44px; padding: 9px 14px; border: 1px solid transparent; border-radius: 8px; color: #65745d; background: transparent; font: inherit; font-size: 13px; line-height: 1.7; cursor: pointer; }
.photo-view-tab[aria-selected="true"] { border-color: #cedec4; color: #4f6d48; background: #fffdf7; box-shadow: 0 2px 5px #52614308; }
.photo-panel { min-width: 0; }
.life-photo-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 18px; }
.photo-timeline-tools { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px 18px; margin-bottom: 24px; }
.photo-timeline-tools > p { flex: 1; min-width: min(220px, 100%); margin: 0; color: #6d7a64; font-size: 12px; line-height: 1.85; }
.photo-timeline-controls { display: flex; flex: none; gap: 8px; }
.photo-scroll-button { display: inline-flex; align-items: center; justify-content: center; flex: none; min-width: 44px; min-height: 44px; padding: 9px; border: 1px solid #d7dfce; border-radius: 50%; background: #fffdf7; color: #617a53; cursor: pointer; }
.photo-scroll-button svg { width: 18px; height: 18px; }
.photo-scroll-button:disabled { opacity: .4; cursor: default; }
.photo-view-tab:focus-visible, .photo-scroll-button:focus-visible { outline: 3px solid #a87345; outline-offset: 3px; }
.photo-horizontal { min-width: 0; max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scroll-padding-inline: 4px; padding: 4px 4px 21px; border-radius: 5px; scrollbar-width: thin; scrollbar-color: #b3c1a8 #e8eddf; }
.photo-horizontal:focus-visible { outline: 3px solid #a87345; outline-offset: 4px; }
.photo-horizontal::-webkit-scrollbar { height: 7px; }
.photo-horizontal::-webkit-scrollbar-track { background: #e8eddf; border-radius: 6px; }
.photo-horizontal::-webkit-scrollbar-thumb { background: #b3c1a8; border-radius: 6px; }
.photo-track { display: flex; align-items: flex-start; gap: 20px; width: max-content; min-width: 100%; margin: 0; padding: 0; list-style: none; }
.photo-event { position: relative; display: grid; grid-template-rows: 56px 14px auto; row-gap: 16px; flex: 0 0 300px; width: 300px; min-width: 0; align-items: start; scroll-snap-align: start; }
.photo-event::before { content: ""; position: absolute; top: 78px; left: -10px; right: -10px; height: 2px; background: #d7e1d3; }
.photo-event:first-child::before { left: 50%; }
.photo-event:last-child::before { right: 50%; }
.photo-date { display: flex; flex-direction: column; align-items: center; gap: 3px; color: #64775b; font-variant-numeric: tabular-nums; }
.photo-date > strong { font: 400 26px/1.3 Georgia, var(--serif); letter-spacing: .015em; }
.photo-date > span { color: #74816b; font-size: 11px; line-height: 1.8; }
.photo-dot { position: relative; z-index: 1; display: block; width: 14px; height: 14px; margin: 0 auto; border-radius: 50%; background: #66845f; box-shadow: 0 0 0 6px var(--paper, #f8f6ef); }
.photo-event > .life-photo-card { width: 100%; min-width: 0; }
.photo-event .life-photo-open { min-height: 0; }
.photo-event .life-photo-open img { height: auto; aspect-ratio: 4/3; }
.photo-event .life-card-content { padding-top: 12px; }
.photo-event .life-card-content h3 { font-size: 23px; }
.photo-undated { margin-top: 31px; padding-top: 25px; border-top: 1px solid #e0e5d7; }
.photo-undated > h2 { margin: 0; color: #526648; font: 500 25px/1.55 var(--serif); letter-spacing: .025em; }
.photo-undated > p { margin: 8px 0 20px; color: #6d7a64; font-size: 12px; line-height: 1.9; }
.photo-more { display: flex; flex-direction: column; align-items: center; gap: 10px; margin: 24px 0 4px; text-align: center; }
.photo-more > .secondary-button { min-height: 44px; padding: 9px 20px; }
.photo-more > small { color: #728167; font-size: 12px; line-height: 1.8; }
@media (hover: hover) {
  .photo-view-tab:not([aria-selected="true"]):hover { background: #f8faf2; }
  .photo-scroll-button:not(:disabled):hover { border-color: #b7c8aa; background: #edf3e5; }
}
@media (max-width: 600px) {
  .photo-view-tabs { gap: 3px; margin-bottom: 23px; padding: 4px; }
  .photo-view-tab { padding: 8px 12px; font-size: 12px; }
  .life-photo-grid { grid-template-columns: minmax(0, 1fr); gap: 15px; }
  .photo-timeline-tools { gap: 12px; margin-bottom: 20px; }
  .photo-track { gap: 16px; }
  .photo-event { flex-basis: 260px; width: 260px; }
  .photo-event::before { left: -8px; right: -8px; }
  .photo-event:first-child::before { left: 50%; }
  .photo-event:last-child::before { right: 50%; }
  .photo-date > strong { font-size: 24px; }
  .photo-event > .life-photo-card { padding: 8px 8px 16px; border-radius: 12px; }
  .photo-event .life-card-content { padding: 12px 10px 0; }
  .photo-event .life-card-content h3 { font-size: 22px; }
  .photo-undated { margin-top: 26px; padding-top: 22px; }
  .photo-undated > h2 { font-size: 23px; }
}

/* Small everyday entries, with space for a reply from the other person. */
.life-page-notes .life-page-header { margin-bottom: 25px; }
.fragment-composer { margin-bottom: 24px; padding: 23px; border: 1px solid #d6e0cd; border-radius: 15px; background: #fffdf7; box-shadow: 0 3px 7px #52614304; }
.fragment-self { display: flex; align-items: center; gap: 11px; margin-bottom: 18px; }
.fragment-avatar { display: inline-flex; justify-content: center; align-items: center; flex: none; width: 40px; height: 40px; border: 1px solid #d1dfc4; border-radius: 14px; color: #56734a; background: #e8efdd; font: 500 19px/1 Georgia, var(--serif); }
.fragment-avatar.is-second { border-color: #e6d6c5; color: #96704e; background: #f5eadb; }
.fragment-self > div { min-width: 0; }
.fragment-self strong, .fragment-author > strong { display: block; color: #4d6343; font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }
.fragment-self small { display: block; margin-top: 2px; color: #7a876f; font-size: 11px; line-height: 1.7; }
.life-page-notes .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
#fragmentForm { min-width: 0; }
#fragmentTitle { display: block; width: 100%; min-width: 0; min-height: 49px; margin-bottom: 10px; padding: 11px 15px; border: 1px solid #e2e7d9; border-radius: 10px; color: #405a37; background: #fafbf5; font: 500 19px/1.5 var(--sans); }
#fragmentTitle::placeholder { color: #7d8974; font-size: 15px; font-weight: 400; }
#fragmentBody { display: block; width: 100%; min-width: 0; min-height: 126px; padding: 14px 16px; resize: vertical; border: 1px solid #e2e7d9; border-radius: 10px; color: #405a37; background: #f7f8f0; font: 400 16px/1.95 var(--sans); overflow-wrap: anywhere; }
#fragmentBody::placeholder { color: #7d8974; font-size: 14px; }
.fragment-composer-footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px; margin-top: 16px; }
.fragment-options { display: flex; flex-wrap: wrap; flex: 1; align-items: center; gap: 8px 14px; min-width: 0; }
.fragment-options > label { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; min-width: 0; color: #74816a; font-size: 12px; line-height: 1.7; }
.fragment-options select, .fragment-options input { max-width: 100%; min-width: 0; min-height: 44px; padding: 8px 10px; border: 1px solid #dfe5d6; border-radius: 7px; color: #5d7450; background: #fffef8; font: 400 16px/1.5 var(--sans); }
.fragment-options select { cursor: pointer; }
.fragment-options input[type="date"] { appearance: none; -webkit-appearance: none; width: 160px; text-align: left; }
.fragment-composer-footer > .primary-button { flex: none; min-height: 44px; padding: 9px 19px; }
.fragment-error { margin: 14px 0 0; padding: 11px 13px; border: 1px solid #e8c7af; border-radius: 8px; color: #9f5e3d; background: #fcf0e6; font-size: 13px; line-height: 1.85; overflow-wrap: anywhere; }
.fragment-status { margin: 12px 0; color: #74816a; font-size: 12px; line-height: 1.85; overflow-wrap: anywhere; }
.fragment-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin: 0 0 20px; }
.fragment-filters > button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 8px 16px; border: 1px solid transparent; border-radius: 9px; color: #6b7b60; background: transparent; font: inherit; font-size: 13px; line-height: 1.7; cursor: pointer; }
.fragment-filters > button[aria-pressed="true"] { border-color: #d6e1c9; color: #516f45; background: #e9efdf; }
.fragment-feed { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.fragment-attachments { margin-top: 14px; }
.fragment-image-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.fragment-image-picker { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 8px 13px; overflow: hidden; border: 1px dashed #b6c8a8; border-radius: 8px; color: #58734b; background: #f1f5e9; font-size: 13px; cursor: pointer; }
.fragment-image-picker > input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.fragment-image-picker:focus-within { outline: 2px solid #6c8b59; outline-offset: 3px; }
.fragment-image-picker.is-disabled { opacity: .5; cursor: default; }
.fragment-image-hint, .fragment-image-status { color: #74816a; font-size: 11px; line-height: 1.8; }
.fragment-image-status { margin: 9px 0 0; }
.fragment-image-drafts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-width: 420px; margin-bottom: 13px; }
.fragment-image-draft { position: relative; min-width: 0; aspect-ratio: 1; overflow: hidden; border: 1px solid #dce4d2; border-radius: 9px; background: #edf1e6; }
.fragment-image-draft > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.fragment-image-draft > button { position: absolute; top: 3px; right: 3px; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid #ffffff80; border-radius: 50%; color: white; background: #34402bd9; font: 24px/1 var(--sans); cursor: pointer; }
.fragment-image-draft > button:disabled { opacity: .45; cursor: default; }
.fragment-images { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-width: 640px; margin: 19px 0 22px; }
.fragment-images[data-count="1"] { grid-template-columns: minmax(0, 1fr); max-width: 420px; }
.fragment-images[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fragment-image { display: block; min-width: 0; aspect-ratio: 1; overflow: hidden; padding: 0; border: 1px solid #dce4d2; border-radius: 10px; background: #edf1e6; cursor: zoom-in; }
.fragment-image > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.fragment-images[data-count="1"] .fragment-image { aspect-ratio: auto; max-height: 440px; }
.fragment-images[data-count="1"] img { width: 100%; height: auto; max-height: 440px; object-fit: contain; }
.fragment-image-view { width: min(900px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px); padding: 16px; border: 1px solid #d4dfc8; border-radius: 15px; color: #5b7050; background: #fffdf6; box-shadow: 0 20px 80px #18250f40; }
.fragment-image-view::backdrop { background: #17240fc9; }
.fragment-image-view > header, .fragment-image-view > footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 12px; }
.fragment-image-view > header { margin-bottom: 10px; }
.fragment-image-view > header > button { flex: none; font-size: 26px; }
.fragment-image-view > img { display: block; width: 100%; height: auto; max-height: calc(100dvh - 200px); object-fit: contain; border-radius: 8px; background: #eff1e8; }
.fragment-image-view > footer { margin-top: 13px; }
.fragment-image-view > footer > button { min-width: 80px; min-height: 44px; }
.fragment-image-view > footer > button:disabled { opacity: .4; cursor: default; }
@media (max-width: 600px) {
  .fragment-image-drafts, .fragment-images { gap: 7px; }
  .fragment-image-hint { font-size: 10px; }
  .fragment-image-draft > button { top: 1px; right: 1px; }
  .fragment-image-view { width: calc(100% - 20px); max-height: calc(100dvh - 20px); padding: 12px; border-radius: 12px; }
}
.fragment-card { min-width: 0; padding: 23px; border: 1px solid #e0e4d6; border-radius: 14px; background: #fffdf7; box-shadow: 0 3px 7px #52614304; }
.fragment-card-header { display: flex; align-items: center; gap: 11px; min-width: 0; }
.fragment-author { flex: 1; min-width: 0; }
.fragment-author > time { display: block; margin-top: 3px; color: #7a876f; font-size: 11px; line-height: 1.7; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.fragment-author > time > small { font-size: inherit; }
.fragment-tag { flex: none; max-width: 33%; padding: 4px 9px; border: 1px solid #e2e7d5; border-radius: 5px; color: #73825e; background: #f1f4e8; font-size: 11px; line-height: 1.6; overflow-wrap: anywhere; }
.fragment-tag[data-tag="food"] { border-color: #ebddc8; color: #967d55; background: #f8f0e3; }
.fragment-tag[data-tag="fun"] { border-color: #d6e4e4; color: #5f8584; background: #edf5f3; }
.fragment-tag[data-tag="study"] { border-color: #dce2eb; color: #687d99; background: #f0f3f8; }
.fragment-tag[data-tag="sport"] { border-color: #d4e4d5; color: #53795d; background: #edf5ed; }
.fragment-tag[data-tag="mood"] { border-color: #e9dce1; color: #957380; background: #f8eff2; }
.fragment-card-header > .edit-button { flex: none; margin-right: -8px; }
.fragment-title { margin: 21px 0 19px; font: 500 24px/1.6 var(--serif); color: #53664b; overflow-wrap: anywhere; }
.fragment-title + .fragment-body { margin-top: 10px; }
.fragment-body { margin: 21px 0 20px; color: #536449; font-size: 15px; line-height: 2.05; white-space: pre-wrap; overflow-wrap: anywhere; }
.fragment-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 10px; margin: 0 -8px -7px; padding-top: 11px; border-top: 1px solid #edf0e4; }
.fragment-actions > button { display: inline-flex; justify-content: center; align-items: center; gap: 6px; min-height: 44px; min-width: 44px; padding: 8px 10px; border: 1px solid transparent; border-radius: 8px; color: #7a876c; background: transparent; font: inherit; font-size: 12px; line-height: 1.7; cursor: pointer; }
.fragment-actions > button svg { flex: none; width: 17px; height: 17px; }
.fragment-actions > .fragment-like[aria-pressed="true"] { color: #a16b72; background: #f9eff0; }
.fragment-like[aria-pressed="true"] svg { fill: #eed5d9; }
.fragment-actions > .fragment-comment-toggle[aria-expanded="true"] { color: #58714b; background: #eff4e7; }
.fragment-actions > .fragment-delete { margin-left: auto; color: #9c7f6b; }
.fragment-actions > button:disabled { opacity: .5; cursor: default; }
.fragment-comments { margin-top: 20px; padding: 17px 17px 1px; border: 1px solid #e2e8d9; border-radius: 10px; background: #f5f7ef; }
.fragment-comment { padding: 10px 0 12px; }
.fragment-comment + .fragment-comment { border-top: 1px solid #e2e7d8; }
.fragment-comment:first-child { padding-top: 0; }
.fragment-comment-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 9px; min-width: 0; }
.fragment-comment-meta > strong { color: #627654; font-size: 12px; line-height: 1.7; overflow-wrap: anywhere; }
.fragment-comment-meta > time { color: #819074; font-size: 10px; line-height: 1.7; font-variant-numeric: tabular-nums; }
.fragment-comment-meta > button { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; margin: -10px -8px -10px auto; padding: 8px; border: 0; border-radius: 7px; color: #9b836e; background: transparent; font: inherit; font-size: 11px; cursor: pointer; }
.fragment-comment > p { margin: 7px 0 0; color: #65755a; font-size: 14px; line-height: 1.95; white-space: pre-wrap; overflow-wrap: anywhere; }
.fragment-comment-form { display: flex; align-items: flex-end; gap: 10px; margin: 4px 0 16px; }
.fragment-comment-form > textarea { display: block; flex: 1; width: 100%; min-width: 0; min-height: 80px; padding: 9px 11px; resize: vertical; border: 1px solid #d8e2ce; border-radius: 8px; color: #4d6443; background: #fffef8; font: 400 16px/1.8 var(--sans); overflow-wrap: anywhere; }
.fragment-comment-form > textarea::placeholder { color: #829076; font-size: 12px; }
.fragment-comment-form > button { display: inline-flex; align-items: center; justify-content: center; flex: none; min-height: 44px; padding: 9px 13px; border: 1px solid #ccdabc; border-radius: 8px; color: #57734a; background: #e8f0dd; font: inherit; font-size: 13px; cursor: pointer; }
.fragment-comment-form > button:disabled { opacity: .5; cursor: default; }
.fragment-comments > .fragment-error { margin-bottom: 16px; }
@media (hover: hover) {
  .fragment-filters > button:not([aria-pressed="true"]):hover { color: #526e46; background: #f0f4e7; }
  .fragment-actions > button:not(:disabled):hover { border-color: #dfe6d5; background: #f3f6ed; }
  .fragment-actions > .fragment-like[aria-pressed="true"]:hover { border-color: #e9d9dc; background: #f7e8eb; }
  .fragment-comment-meta > button:hover { color: #8b644b; background: #edeedf; }
  .fragment-comment-form > button:not(:disabled):hover { border-color: #bdcea9; background: #dfebd1; }
}
@media (max-width: 600px) {
  .life-page-notes .life-page-header { margin-bottom: 22px; }
  .fragment-composer { margin-bottom: 21px; padding: 19px 17px; border-radius: 13px; }
  .fragment-self { gap: 10px; margin-bottom: 15px; }
  #fragmentBody { min-height: 136px; padding: 12px 13px; }
  #fragmentTitle { padding: 11px 13px; font-size: 18px; }
  .fragment-composer-footer { gap: 13px; margin-top: 13px; }
  .fragment-options { flex-basis: 100%; gap: 8px 11px; }
  .fragment-options > label { font-size: 11px; }
  .fragment-options select, .fragment-options input { padding-left: 8px; padding-right: 8px; }
  .fragment-options input[type="date"] { width: 151px; }
  .fragment-composer-footer > .primary-button { margin-left: auto; padding-left: 22px; padding-right: 22px; }
  .fragment-filters { gap: 4px; margin-bottom: 17px; }
  .fragment-filters > button { padding: 8px 14px; font-size: 12px; }
  .fragment-feed { gap: 15px; }
  .fragment-card { padding: 19px 17px; border-radius: 12px; }
  .fragment-card-header { gap: 9px; }
  .fragment-card-header > .fragment-avatar { width: 35px; height: 35px; border-radius: 12px; font-size: 17px; }
  .fragment-author > strong { font-size: 13px; }
  .fragment-author > time { font-size: 10px; }
  .fragment-tag { max-width: 27%; padding: 3px 7px; font-size: 10px; }
  .fragment-card-header > .edit-button { margin-right: -7px; }
  .fragment-title { margin-top: 18px; font-size: 22px; }
  .fragment-body { margin: 19px 0 17px; font-size: 14px; line-height: 2; }
  .fragment-actions { gap: 4px; padding-top: 9px; }
  .fragment-actions > button { padding-left: 8px; padding-right: 8px; font-size: 11px; }
  .fragment-comments { margin-top: 18px; padding: 14px 12px 1px; }
  .fragment-comment-form { flex-wrap: wrap; gap: 8px; }
  .fragment-comment-form > textarea { flex-basis: 100%; min-height: 77px; }
  .fragment-comment-form > button { margin-left: auto; min-width: 61px; }
}
/* A quiet return-home note, shared across all five pages. */
.activity-toggle { position: relative; }
.activity-badge { display: inline-grid; place-items: center; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 12px; background: #687f57; color: #fffef9; font: 500 10px/1 var(--sans); }
.activity-panel { margin: 22px 0 6px; padding: 20px 23px; border: 1px solid #d6dfcc; border-radius: 14px; background: linear-gradient(120deg, #eef2e6, #faf9f1); }
.activity-panel[hidden], .activity-badge[hidden], .activity-toggle[hidden] { display: none; }
.activity-heading { display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.activity-kicker { margin: 0 0 5px; color: #667a58; font-size: 10px; letter-spacing: .12em; }
.activity-heading h2 { margin: 0; color: #42553b; font: 500 21px/1.55 var(--serif); }
.activity-actions { display: flex; align-items: center; flex-wrap: wrap; max-width: 100%; gap: 6px; flex: none; }
.activity-actions .activity-read-all { border: 1px solid #cedac1; background: #f9fbf4; color: #4e6944; }
.activity-list { display: grid; gap: 8px; margin: 15px 0 0; padding: 0; list-style: none; max-height: min(54vh, 440px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.activity-list > li { min-width: 0; }
.activity-item { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; min-height: 66px; padding: 12px 14px; border: 1px solid #d9e1d0; border-radius: 10px; background: #fffdf7; color: #4e6343; text-align: left; font: 400 13px/1.6 var(--sans); cursor: pointer; }
.activity-item:hover { border-color: #b4c5a5; background: #fffefa; }
.activity-item:focus-visible { outline: 2px solid #718961; outline-offset: -3px; }
.activity-item:disabled { opacity: .65; cursor: wait; }
.activity-item-copy { display: grid; gap: 3px; min-width: 0; flex: 1; }
.activity-item-meta { display: flex; flex-wrap: wrap; gap: 5px 10px; align-items: baseline; color: #718166; font-size: 11px; }
.activity-item-title { display: block; color: #43563b; font-size: 13px; font-weight: 500; overflow-wrap: anywhere; }
.activity-item-time { color: #819077; font-size: 10px; white-space: nowrap; }
.activity-item > [aria-hidden] { flex: none; color: #76896a; }
.activity-target { outline: 2px solid #8da87b; outline-offset: 5px; scroll-margin-top: 24px; }
.activity-footnote { margin: 11px 0 0; color: #718166; font-size: 11px; line-height: 1.8; }
.activity-error { margin: 12px 0 0; color: #945d3d; font-size: 12px; line-height: 1.8; }
.activity-empty { margin: 7px 0 0; color: #6b7c61; font-size: 12px; line-height: 1.8; }
@media (max-width: 600px) {
  .activity-panel { margin-top: 16px; padding: 16px; border-radius: 12px; }
  .activity-heading { flex-wrap: wrap; gap: 10px; }
  .activity-heading h2 { font-size: 19px; }
  .activity-actions { margin-left: auto; }
  .activity-list { gap: 7px; margin-top: 12px; max-height: none; overflow: visible; }
  .activity-item { min-height: 66px; padding: 11px 12px; gap: 10px; }
}
.photo-month-group { margin: 24px 0 32px; }
.photo-month-group > header { display: flex; align-items: center; gap: 12px; margin-bottom: 15px; }
.photo-month-group > header h2 { margin: 0; font-size: 19px; font-weight: 600; }
.photo-month-group > header small { color: var(--muted, #798574); }
.photo-album-toolbar { display: grid; gap: 14px; margin: 20px 0; }
.photo-experience-tabs, .photo-batch-actions { display: flex; gap: 9px; align-items: center; flex-wrap: wrap; }
.photo-experience-tabs { max-height: 155px; overflow: auto; padding: 2px; }
.photo-experience-chip { border: 1px solid #dde2d5; border-radius: 999px; background: #fffef9; color: #64765a; padding: 8px 13px; font: inherit; font-size: 13px; cursor: pointer; overflow-wrap: anywhere; }
.photo-experience-chip[aria-pressed="true"] { background: #e5ecdf; border-color: #acb99f; color: #44583a; }
.photo-batch-actions { font-size: 13px; color: #6d7b63; }
.photo-batch-actions .secondary-button { padding: 10px 13px; }
.life-photo-card { position: relative; }
.photo-select-button { position: absolute; z-index: 1; top: 10px; left: 10px; width: 36px; height: 36px; border: 1px solid #e3e5db; border-radius: 50%; background: #fffef9e8; color: #627456; font-size: 22px; cursor: pointer; }
.photo-select-button.is-selected { background: #657e54; color: white; border-color: #657e54; }
.photo-experience-label { display: inline-block; font-size: 12px; color: #718366; margin: 0 0 8px; }
.life-photo-open .life-moment-art { min-height: 180px; display: flex; flex-direction: column; gap: 10px; align-items: center; justify-content: center; }
.life-photo-open .life-moment-art small { font-size: 12px; }
.photo-upload-dialog, .photo-group-dialog { max-width: 660px; }
.photo-upload-dialog[open] { display: flex; max-height: calc(100dvh - 36px); overflow: hidden; }
.photo-upload-form { display: flex; flex-direction: column; width: 100%; min-height: 0; }
.photo-upload-form .dialog-header, .photo-upload-form .form-actions { flex-shrink: 0; }
.photo-upload-form .form-body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.photo-upload-form .form-actions { padding-top: 15px; padding-bottom: 18px; border-top: 1px solid #e2e7d8; background: #fffef9; }
.photo-upload-form .form-body { display: grid; gap: 16px; }
.photo-upload-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.photo-upload-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.photo-upload-list li { display: flex; align-items: center; gap: 12px; border-bottom: 1px solid #eeeade; padding: 8px 0; }
.photo-upload-list img, .photo-upload-placeholder { width: 52px; height: 52px; object-fit: cover; border-radius: 10px; flex: 0 0 52px; }
.photo-upload-placeholder { background: #eaf0e3; display: grid; place-items: center; font-size: 24px; color: #92a383; }
.photo-upload-list li > div { flex: 1; min-width: 0; }
.photo-upload-list strong, .photo-upload-list small { display: block; overflow-wrap: anywhere; }
.photo-upload-list strong { font-weight: 500; font-size: 13px; }
.photo-upload-list small { margin-top: 4px; font-size: 12px; color: #76836a; }
.photo-viewer-stage { touch-action: pan-y pinch-zoom; min-height: 180px; background: #f0eee7; border-radius: 14px; display: grid; place-items: center; overflow: hidden; }
.photo-viewer-stage .life-view-image { width: 100%; max-height: 65vh; object-fit: contain; margin: 0; }
.photo-viewer-controls { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 14px 0; }
.photo-viewer-controls small { color: #7b8570; font-size: 12px; }
.photo-viewer-loading { display: grid; justify-items: center; gap: 16px; padding: 44px 22px; color: #718365; text-align: center; }
@media (max-width: 620px) {
  .photo-upload-fields { grid-template-columns: 1fr; }
  .photo-viewer-controls .secondary-button { font-size: 12px; padding: 10px; white-space: nowrap; }
  .photo-viewer-controls small { font-size: 10px; }
  .photo-batch-actions { gap: 8px; }
  .photo-batch-actions .secondary-button { font-size: 12px; }
  .photo-experience-tabs { flex-wrap: nowrap; overflow-x: auto; max-height: none; padding-bottom: 5px; }
  .photo-experience-chip { flex: 0 0 auto; }
}

#memoriesRoot[hidden], [data-memory-browsing][hidden], [data-memory-keepsakes][hidden], [data-memory-capsules][hidden], [data-memory-photos][hidden] { display: none !important; }
#memoriesRoot { padding-top: 20px; min-width: 0; }
.memory-hub-heading h1 { margin: 10px 0 8px; color: var(--ink, #43513e); font: 500 clamp(28px,4vw,38px)/1.5 var(--serif); }
.memory-hub-heading p { color: #87907e; font-size: 13px; line-height: 1.8; }
.memory-hub-tabs { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; margin: 27px 0 18px; }
.memory-hub-tabs button { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; min-height: 76px; padding: 13px 12px; border: 1px solid #e4e5d8; border-radius: 12px; background: #fffcf5; color: #75816a; font: 500 13px/1.6 var(--sans); cursor: pointer; }
.memory-hub-tabs button > span { font: 400 10px/1 var(--sans); letter-spacing: .15em; opacity: .7; }
.memory-hub-tabs button[aria-pressed=true] { background: #e5ecdb; border-color: #c9d6b9; color: #405638; }
.memory-hub-tabs button:focus-visible { outline: 2px solid #849b70; outline-offset: 3px; }
.memory-hub-intro { margin: 0 0 22px; color: #7c8871; font-size: 12px; line-height: 1.8; }
.memory-hub-status { padding: 12px; color: #8d5d3d; background: #f8eee2; border-radius: 10px; font-size: 13px; }
[data-memory-photos] { min-width: 0; }
[data-memory-photos] .life-page { padding-top: 0; }
[data-memory-photos] .life-page-header { margin: 0 0 20px; align-items: center; }
[data-memory-photos] .life-page-header h2 { font-size: clamp(22px,3vw,30px); }
.memory-home-invitation { display: flex; gap: 20px; align-items: center; justify-content: space-between; padding: 23px 26px; margin: 23px 0; background: linear-gradient(115deg,#ebefdf,#faf6eb); border: 1px solid #dce1ce; border-radius: 16px; }
.memory-home-invitation h3 { margin: 8px 0; font: 500 24px/1.5 var(--serif); color: #4f6345; }
.memory-home-invitation p { margin: 0; font-size: 12px; color: #7d8872; line-height: 1.8; }
.memory-home-invitation > button { flex-shrink: 0; }
.wish-keepsake-button { display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;margin:15px 0 0;padding:11px 0 0;border:0;border-top:1px solid #e6e9dc;background:transparent;color:#687c56;font:400 12px/1.6 var(--sans);cursor:pointer; }
@media(max-width:760px){.memory-hub-tabs {grid-template-columns:repeat(2,minmax(0,1fr));}.memory-hub-tabs button{min-height:64px;gap:6px;}.memory-home-invitation{align-items:flex-start;flex-direction:column;padding:21px;}}
@media print{.memory-hub-heading,.memory-hub-tabs,.memory-hub-intro,.memory-hub-status{display:none!important;}}

.memory-browsing { min-width: 0; color: #41583e; }
.memory-month-records > summary { display:flex; align-items:center; gap:12px; min-height:44px; padding:8px 0; cursor:pointer; list-style:none; color:#637956; }
.memory-month-records > summary::-webkit-details-marker { display:none; }
.memory-month-records > summary > span { flex:1; font-size:16px; line-height:1.6; }
.memory-month-records > summary > small { font-size:12px; font-weight:400; color:#8b977e; }
.memory-month-records > summary > i { font:normal 20px/1 sans-serif; transition:transform .15s; }
.memory-month-records[open] > summary > i { transform:rotate(180deg); }
.memory-month-records[open] > summary { margin-bottom:15px; }
.memory-month-records > summary:focus-visible { outline:2px solid #738e65; outline-offset:3px; border-radius:5px; }
.memory-browsing button { cursor: pointer; }
.memory-browsing button:disabled { cursor: default; opacity: .45; }
.memory-browsing button:focus-visible, .memory-browsing input:focus-visible, .memory-browsing select:focus-visible { outline: 2px solid #738e65; outline-offset: 3px; }
.memory-browse-heading { display: flex; justify-content: space-between; gap: 20px; align-items: end; margin-bottom: 25px; }
.memory-browse-heading h2 { margin: 0; font: 500 29px/1.5 var(--serif); letter-spacing: .04em; }
.memory-browse-heading p { margin: 10px 0 0; font-size: 13px; line-height: 1.9; color: #718068; }
.memory-browse-eyebrow { display: block; margin: 0 0 10px; color: #788b6b; font-size: 10px; letter-spacing: .13em; line-height: 1.7; }
.memory-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.memory-month-picker { display: flex; align-items: center; justify-content: center; flex: none; gap: 4px; padding: 5px; border: 1px solid #dfe5d6; border-radius: 12px; background: #fffdf7; }
.memory-month-picker button { min-width: 35px; min-height: 36px; padding: 4px 9px; border: 0; border-radius: 7px; color: #617854; background: transparent; font-size: 24px; line-height: 1; }
.memory-month-picker button:hover { background: #ecf1e5; }
.memory-month-picker input { display: block; width: 142px; min-height: 36px; padding: 4px; border: 0; background: transparent; color: #4e6544; font: inherit; font-size: 13px; }
.memory-calendar-layout { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: 25px; align-items: start; }
.memory-calendar { padding: 22px 18px 12px; border: 1px solid #dfe5d6; border-radius: 16px; background: #fffdf7; }
.memory-calendar-week, .memory-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.memory-calendar-week { margin-bottom: 13px; text-align: center; font-size: 11px; color: #8b9683; }
.memory-calendar-grid button { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 6px; min-width: 0; min-height: 61px; padding: 10px 2px 5px; border: 1px solid transparent; border-radius: 11px; background: transparent; color: #64725c; font-size: 13px; font-variant-numeric: tabular-nums; }
.memory-calendar-grid button.has-memory { background: #f0f4e9; }
.memory-calendar-grid button.is-today { border-color: #bdcdb0; }
.memory-calendar-grid button.is-selected { background: #dfe9d4; border-color: #9cb28a; color: #3f6238; font-weight: 600; }
.memory-calendar-grid button small { display: flex; align-items: center; gap: 4px; color: #8a9d78; font-size: 9px; font-weight: 400; }
.memory-calendar-grid button i { width: 4px; height: 4px; border-radius: 50%; background: #8aa274; }
.memory-link-button { min-height: 40px; padding: 8px 4px; border: 0; background: transparent; color: #5e7950; font-size: 12px; }
.memory-link-button span { margin-left: 8px; }
.memory-calendar-today { display: block; margin: 10px auto 0; }
.memory-day-records { min-width: 0; padding-top: 8px; }
.memory-day-records h3 { margin: 0 0 20px; font: 500 24px/1.5 var(--serif); }
.memory-day-card { display: flex; align-items: center; gap: 12px; width: 100%; padding: 14px 0; border: 0; border-top: 1px solid #e3e8da; background: transparent; text-align: left; color: inherit; }
.memory-day-card > img, .memory-day-art { flex: none; width: 62px; height: 67px; object-fit: cover; border-radius: 8px; }
.memory-day-art { display: grid; place-items: center; background: #eeeede; color: #94a17e; font-size: 26px; }
.memory-day-card > span:not(.memory-day-art):not(.memory-day-arrow) { min-width: 0; flex: 1; }
.memory-day-card small, .memory-day-card strong, .memory-day-card > span > span { display: block; overflow-wrap: anywhere; }
.memory-day-card small { margin-bottom: 5px; font-size: 10px; line-height: 1.7; color: #80916e; }
.memory-day-card strong { font-size: 13px; line-height: 1.7; font-weight: 500; }
.memory-day-card > span > span { margin-top: 5px; font-size: 11px; line-height: 1.7; color: #84907a; white-space: pre-wrap; }
.memory-day-arrow { flex: none; color: #8c9e7d; }
.memory-day-empty { padding: 15px 0; color: #86917e; font-size: 13px; line-height: 2; }
.memory-browse-empty { padding: 60px 25px; border: 1px dashed #d5decb; border-radius: 14px; text-align: center; background: #fbfbf2; }
.memory-browse-empty > span { color: #9caa8d; font-size: 37px; }
.memory-browse-empty h3 { font: 500 23px/1.6 var(--serif); }
.memory-browse-empty p { margin: 0; color: #809072; font-size: 13px; line-height: 1.9; }
.memory-shuffle-card { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1fr); min-height: 365px; overflow: hidden; border: 1px solid #dee4d3; border-radius: 17px; background: #fffdf7; }
.memory-shuffle-photo { min-height: 320px; background: #eeeede; }
.memory-shuffle-photo img { display: block; width: 100%; height: 100%; max-height: 580px; object-fit: cover; }
.memory-shuffle-art { display: flex; flex-direction: column; gap: 24px; align-items: center; justify-content: center; min-height: 320px; background: radial-gradient(ellipse at 22% 20%, #f6ead8, #e8eddd); color: #a0ad88; }
.memory-shuffle-art > span { font-size: 76px; font-weight: 300; }
.memory-shuffle-art > i { font: 400 15px/2 var(--serif); letter-spacing: .15em; }
.memory-shuffle-copy { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; min-width: 0; padding: 35px; }
.memory-shuffle-copy h3 { margin: 8px 0 16px; font: 500 28px/1.6 var(--serif); overflow-wrap: anywhere; }
.memory-shuffle-copy > p { margin: 0 0 22px; font-size: 13px; line-height: 2.1; color: #758469; white-space: pre-wrap; overflow-wrap: anywhere; }
.memory-shuffle-actions { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.memory-shuffle-actions .primary-button { min-height: 43px; font-size: 12px; }
.memory-shuffle-actions .primary-button span { margin-left: 10px; }
.memory-soft-note { display: block; margin: 13px 0 0; color: #85917c; font-size: 11px; line-height: 1.9; }
.memory-book-layout { display: grid; grid-template-columns: minmax(250px, .8fr) minmax(0, 1.2fr); gap: 24px; align-items: start; }
.memory-book-editor { min-width: 0; padding: 20px; border: 1px solid #dfe5d6; border-radius: 14px; background: #fffdf7; }
.memory-book-label { display: flex; flex-direction: column; gap: 9px; margin-bottom: 18px; color: #657c56; font-size: 12px; }
.memory-book-label input, .memory-book-label select { width: 100%; min-width: 0; min-height: 42px; padding: 9px 11px; border: 1px solid #dce3d2; border-radius: 8px; background: #fbfcf7; color: #4f6545; font: inherit; font-size: 13px; }
.memory-book-list-heading { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 24px; }
.memory-book-list-heading h3 { margin: 0; font: 500 18px/1.6 var(--serif); }
.memory-book-list-heading > span { color: #849477; font-size: 11px; }
.memory-book-editor-list { max-height: 410px; overflow-y: auto; padding: 0; margin: 12px 0 20px; list-style: none; scrollbar-width: thin; }
.memory-book-editor-list li { display: flex; align-items: center; gap: 7px; padding: 11px 0; border-top: 1px solid #e8ebdf; }
.memory-book-editor-list li.is-hidden label { opacity: .55; }
.memory-book-editor-list label { display: flex; align-items: center; gap: 9px; flex: 1; min-width: 0; cursor: pointer; }
.memory-book-editor-list input { flex: none; width: 16px; height: 16px; accent-color: #718d5f; }
.memory-book-editor-list label > span { min-width: 0; }
.memory-book-editor-list strong { display: block; font-size: 12px; line-height: 1.7; font-weight: 400; overflow-wrap: anywhere; }
.memory-book-editor-list small { display: block; margin-top: 4px; font-size: 10px; line-height: 1.7; color: #89967e; }
.memory-book-editor-list li > div { display: flex; gap: 1px; flex: none; }
.memory-book-editor-list button { min-width: 28px; min-height: 37px; padding: 5px; border: 0; border-radius: 6px; background: transparent; color: #718864; font-size: 17px; }
.memory-book-editor-list button:hover { background: #eef3e7; }
.memory-book-buttons { display: flex; flex-wrap: wrap; gap: 10px; }
.memory-book-buttons button { flex: 1; min-height: 43px; padding: 9px 12px; font-size: 12px; white-space: nowrap; }
.memory-book-status { margin: 15px 0 0; padding: 10px; border-radius: 7px; background: #f1f4e9; color: #667b57; font-size: 12px; line-height: 1.8; overflow-wrap: anywhere; }
.memory-book-preview { min-width: 0; }
.memory-book-pages { min-width: 0; }
.memory-print-target { display: none; }
.memory-book-cover, .memory-book-page { margin: 0 0 20px; padding: 28px; overflow: hidden; border: 1px solid #e0e3d4; border-radius: 4px; background: #fffef9; box-shadow: 0 5px 15px #56623d07; }
.memory-book-cover { min-height: 470px; text-align: center; }
.memory-book-cover-image { display: block; width: 100%; max-height: 350px; aspect-ratio: 4 / 3; object-fit: cover; margin-top: 25px; border-radius: 100px 100px 4px 4px; }
.memory-book-cover-art { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 25px; min-height: 240px; margin-top: 25px; border: 1px solid #e1e7d6; border-radius: 110px 110px 4px 4px; background: #eff2e4; color: #a4b48e; font-size: 70px; }
.memory-book-cover-art span { font: 400 12px/1.9 var(--serif); letter-spacing: .1em; }
.memory-book-cover h3 { margin: 26px 0 10px; font: 500 30px/1.6 var(--serif); letter-spacing: .04em; overflow-wrap: anywhere; }
.memory-book-cover p { margin: 10px 0; font-size: 12px; color: #869577; letter-spacing: .08em; }
.memory-book-cover > small { color: #94a087; font-size: 10px; }
.memory-book-page header { display: flex; align-items: center; gap: 14px; border-bottom: 1px solid #e6e9dd; padding-bottom: 14px; color: #8b9a7c; }
.memory-book-page header > span { font: 400 26px/1.4 Georgia, serif; }
.memory-book-page header > small { font-size: 10px; line-height: 1.8; }
.memory-book-page h3 { margin: 21px 0 18px; font: 500 24px/1.7 var(--serif); overflow-wrap: anywhere; }
.memory-book-page > img { display: block; max-width: 100%; max-height: 520px; height: auto; margin: 16px auto; border-radius: 3px; object-fit: contain; }
.memory-book-page > p { margin: 20px 0; color: #6a7a5e; font-size: 13px; line-height: 2.1; white-space: pre-wrap; overflow-wrap: anywhere; }
.memory-book-page footer { margin-top: 35px; text-align: right; font-size: 9px; color: #9da88f; }
@media (max-width: 900px) {
  .memory-calendar-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .memory-calendar-grid button { min-height: 64px; }
  .memory-shuffle-copy { padding: 25px; }
  .memory-book-layout { grid-template-columns: minmax(0, 1fr); }
  .memory-book-editor-list { max-height: 290px; }
}
@media (max-width: 560px) {
  .memory-browse-heading { align-items: flex-start; flex-direction: column; gap: 18px; }
  .memory-browse-heading h2 { font-size: 27px; }
  .memory-month-picker { align-self: flex-start; }
  .memory-calendar { padding: 18px 11px 8px; }
  .memory-calendar-grid { gap: 3px; }
  .memory-calendar-grid button { min-height: 56px; padding-top: 8px; }
  .memory-calendar-layout { gap:18px; }
  .memory-day-records h3 { margin-bottom:12px; font-size:22px; }
  .memory-month-records > summary > span { font-size:14px; }
  .memory-month-records .memory-month-list { grid-template-columns:minmax(0,1fr); }
  .memory-shuffle-card { grid-template-columns: minmax(0, 1fr); }
  .memory-shuffle-photo, .memory-shuffle-art { min-height: 220px; max-height: 340px; }
  .memory-shuffle-photo img { max-height: 340px; object-fit: contain; }
  .memory-shuffle-copy { padding: 25px 22px; }
  .memory-shuffle-copy h3 { font-size: 25px; }
  .memory-book-editor { padding: 18px; }
  .memory-book-cover, .memory-book-page { padding: 22px; }
  .memory-book-cover { min-height: 420px; }
  .memory-book-cover h3 { font-size: 27px; }
}
@media print {
  @page { size: A4; margin: 15mm; }
  body.memory-printing { background: white !important; }
  body.memory-printing > :not(.memory-print-target) { display: none !important; }
  body.memory-printing .memory-print-target { display: block !important; position: static !important; width: 100% !important; margin: 0 !important; padding: 0 !important; color: #41583e; }
  body.memory-printing .memory-book-cover, body.memory-printing .memory-book-page { box-shadow: none !important; border: 0 !important; border-radius: 0 !important; margin: 0 !important; padding: 0 !important; break-after: page; page-break-after: always; }
  body.memory-printing .memory-book-page:last-child { break-after: auto; page-break-after: auto; }
  body.memory-printing .memory-book-cover { min-height: 240mm; padding: 18mm 10mm !important; }
  body.memory-printing .memory-book-cover-image { max-height: 130mm; object-fit: contain; }
  body.memory-printing .memory-book-page > img { max-height: 115mm; break-inside: avoid; }
  body.memory-printing .memory-book-page > p { orphans: 3; widows: 3; }
  body.memory-printing .memory-book-cover, body.memory-printing .memory-book-page { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}
.memory-calendar-summary{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin:-4px 0 22px;padding:14px 17px;background:#f1f4e9;border-radius:12px;font-size:13px;color:#7a876b}.memory-calendar-summary strong{color:#5d7150;font-weight:500}.memory-calendar-summary label{display:flex;align-items:center;gap:10px;font-size:12px}.memory-calendar-summary select{background:#fffef8;border:1px solid #dce3cf;border-radius:7px;padding:7px;color:#6e7f5f;font:inherit}.memory-month-records{margin-top:28px;padding-top:22px;border-top:1px solid #e0e6d5}.memory-month-records>header{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:17px}.memory-month-records h3{font-size:19px;font-weight:500;color:#526947;margin:0}.memory-month-records>header>span{font-size:12px;color:#8b977e}.memory-month-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.memory-month-card{display:grid;grid-template-columns:52px minmax(0,1fr) 18px;align-items:center;gap:12px;padding:13px;background:#fbfcf5;border:1px solid #e6eadd;border-radius:12px;text-align:left;cursor:pointer;color:#5d704f;width:100%;font:inherit}.memory-month-card>img,.memory-month-card>.memory-day-art{width:52px;height:52px;object-fit:cover;border-radius:8px}.memory-month-card>span:nth-child(2){display:flex;flex-direction:column;gap:5px;min-width:0}.memory-month-card small{font-size:10px;color:#8b997b}.memory-month-card strong{font-size:14px;font-weight:500;overflow-wrap:anywhere}.memory-month-card>span:nth-child(2)>span{font-size:12px;color:#8a967d;line-height:1.6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.memory-month-records>button{margin-top:17px}.memory-undated-records{margin-top:25px;border-top:1px dashed #dce3d1;padding-top:18px;color:#889779}.memory-undated-records>summary{font-size:13px;cursor:pointer}.memory-undated-records>p{font-size:12px;line-height:1.8}.memory-undated-records>div{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.memory-undated-wish{display:flex;flex-direction:column;gap:7px;padding:13px;border:1px solid #e4e9d9;border-radius:10px;background:#fafbf4;color:#6e805e;font:inherit;text-align:left;cursor:pointer}.memory-undated-wish small{font-size:11px;color:#97a18b}

.keepsake-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:10px 0 26px}.keepsake-heading h2{font-family:var(--font-serif,serif);font-size:29px;font-weight:500;margin:7px 0 9px;color:#35493a}.keepsake-heading p{margin:0;color:#7b8377;font-size:14px;line-height:1.7}.keepsake-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:22px}.keepsake-card{background:#fffef8;border:1px solid #e4e7dc;border-radius:18px;overflow:hidden;box-shadow:0 4px 16px #42583c05}.keepsake-card-main{width:100%;padding:0;background:transparent;border:0;text-align:left;color:inherit;cursor:pointer}.keepsake-card-main>img{width:100%;height:205px;object-fit:cover;display:block}.keepsake-card-main>div{padding:22px 24px}.keepsake-card-mark{display:block;padding:22px 24px 0;color:#b1bca2;font-family:Georgia,serif;font-size:48px;height:59px;line-height:1}.keepsake-card time,.keepsake-detail>time{font-size:11px;letter-spacing:1.5px;color:#939a8d}.keepsake-card h3{margin:10px 0;font-size:19px;font-weight:500;color:#3f5141;overflow-wrap:anywhere}.keepsake-card p{font-size:14px;line-height:1.8;color:#788072;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:50px;overflow-wrap:anywhere}.keepsake-open-hint{font-size:12px;color:#829072;display:block;margin-top:20px}.keepsake-card-main:hover{background:#f6f8ef}.keepsake-card-main:focus-visible{outline:2px solid #7e9275;outline-offset:-4px;border-radius:18px}.keepsake-empty{grid-column:1/-1;text-align:center;border:1px dashed #d9dfcf;border-radius:20px;padding:54px 24px;color:#86907c}.keepsake-empty>span{font-size:36px;color:#a4b199}.keepsake-empty h3{font-weight:400;font-size:20px;color:#66735f}.keepsake-empty p{font-size:14px;line-height:1.8}.keepsake-dialog{border:1px solid #e5e7dd;border-radius:22px;padding:0;width:min(590px,calc(100vw - 30px));max-height:calc(100dvh - 40px);background:#fffef9;color:#42503f;box-shadow:0 24px 90px #24302130}.keepsake-dialog::backdrop{background:#26312760;backdrop-filter:blur(3px)}.keepsake-detail,.keepsake-form{padding:28px}.keepsake-detail>header,.keepsake-form>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:18px}.keepsake-detail>header>span{font-size:12px;letter-spacing:2px;color:#829078}.keepsake-detail h2,.keepsake-form h2{font-size:24px;font-weight:500;color:#3f523e;line-height:1.5;overflow-wrap:anywhere}.keepsake-form h2{margin:5px 0 0}.keepsake-hero{display:block;width:100%;max-height:380px;object-fit:contain;background:#f2f4ea;border-radius:12px;margin-bottom:24px}.keepsake-body{white-space:pre-wrap;line-height:1.95;overflow-wrap:anywhere;color:#6d7667;font-size:15px}.keepsake-refs{display:flex;flex-direction:column;align-items:flex-start;gap:9px;margin:25px 0}.keepsake-ref{font:inherit;font-size:13px;border:1px solid #dfe5d5;background:#f5f7ed;color:#69795e;border-radius:9px;padding:9px 12px;text-align:left;cursor:pointer;overflow-wrap:anywhere;max-width:100%}.keepsake-missing{font-size:12px;color:#9c9c8f}.keepsake-detail footer,.keepsake-form footer{display:flex;justify-content:flex-end;gap:15px;align-items:center;margin-top:25px}.keepsake-delete{color:#a78271!important}.keepsake-form>label{display:flex;flex-direction:column;gap:9px;font-size:13px;color:#718166;margin:18px 0}.keepsake-form input:not([type=file]):not([type=checkbox]),.keepsake-form textarea,.keepsake-form select{box-sizing:border-box;width:100%;border:1px solid #dde2d2;border-radius:10px;padding:11px 13px;font:inherit;font-size:14px;background:#fffefb;color:#45523e}.keepsake-form textarea{resize:vertical;line-height:1.8}.keepsake-photo-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:21px 0}.keepsake-photo-tools small{font-size:11px;color:#929b86}.keepsake-upload{position:relative;display:inline-block;border:1px dashed #bdc9ac;border-radius:10px;padding:10px 13px;color:#7a8a69;font-size:13px;cursor:pointer;overflow:hidden}.keepsake-upload input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.keepsake-image-draft{position:relative;flex-basis:100%}.keepsake-image-draft img{max-width:100%;height:145px;border-radius:10px;object-fit:contain}.keepsake-image-draft button{position:absolute;left:8px;top:8px;border:0;border-radius:50%;width:27px;height:27px;background:#fffef9e8;color:#67745a;font-size:19px;cursor:pointer}.keepsake-related{border-top:1px solid #e8eadf;padding-top:17px;margin-top:20px}.keepsake-related summary{font-size:13px;color:#718265;cursor:pointer}.keepsake-related p{font-size:12px;color:#929a89;line-height:1.7}.keepsake-related>div{max-height:210px;overflow:auto}.keepsake-related label{display:flex;align-items:center;gap:10px;font-size:13px;padding:9px 0;line-height:1.6;color:#6d7964}.keepsake-related input{accent-color:#849872;flex-shrink:0}.keepsake-error{font-size:13px;line-height:1.7;color:#a56b50;white-space:pre-wrap}.keepsake-dialog button:disabled{opacity:.5;cursor:wait}@media(max-width:600px){.keepsake-heading{align-items:flex-start;flex-direction:column;gap:16px}.keepsake-heading h2{font-size:25px}.keepsake-grid{grid-template-columns:1fr}.keepsake-detail,.keepsake-form{padding:22px 19px}.keepsake-dialog{max-height:calc(100dvh - 24px)}.keepsake-detail h2,.keepsake-form h2{font-size:21px}}
.keepsake-extras{border-top:1px solid #e8eadf;padding-top:16px;margin-top:20px}.keepsake-extras>summary{font-size:13px;color:#718265;cursor:pointer;line-height:1.8}.keepsake-extras[open]>summary{margin-bottom:15px}
.keepsake-contributors{display:flex;flex-wrap:wrap;gap:7px}.keepsake-contributors span{padding:4px 8px;border-radius:12px;background:#f1f4e8;font-size:12px}.keepsake-card-main>.keepsake-photo-preview{display:block;height:205px;background:#f2f4ea}.keepsake-photo-preview img{width:100%;height:100%;object-fit:cover;display:block}.keepsake-photo-placeholder{display:grid;place-items:center;min-height:90px;height:100%;font-size:12px;color:#8d9980;background:#f1f4e9}.keepsake-linked-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}.keepsake-linked-photo{padding:0;border:0;border-radius:10px;overflow:hidden;aspect-ratio:1;background:#f1f4e9;cursor:pointer}.keepsake-linked-photo img{height:100%;width:100%;object-fit:cover}.keepsake-review{padding:20px 0;border-top:1px solid #e4e8d8}.keepsake-review>header{display:flex;justify-content:space-between;align-items:center;gap:12px}.keepsake-review h3{font-size:16px;margin:0;color:#607253}.keepsake-review h4{font-size:17px;font-weight:500;margin:15px 0}.keepsake-review>time{font-size:12px;color:#919b83}.keepsake-review.is-focused{border-top-color:#9aac84}.keepsake-review .keepsake-body{margin:14px 0}.keepsake-wish-context,.keepsake-draft-status{font-size:12px;color:#839174;line-height:1.75}.keepsake-album-picker{padding:15px 0;border-top:1px solid #e4e8d8}.keepsake-album-picker>summary{font-size:14px;color:#6c805b;cursor:pointer}.keepsake-album-picker>p{font-size:12px;line-height:1.7;color:#929c85}.keepsake-album-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.keepsake-album-option{position:relative;overflow:hidden;border:2px solid transparent;border-radius:10px;background:#f6f7ee;cursor:pointer}.keepsake-album-option.is-selected{border-color:#8eaa72}.keepsake-album-option>input{position:absolute;z-index:1;top:7px;right:7px;accent-color:#7d985f}.keepsake-album-option .keepsake-photo-preview{display:block;height:100px}.keepsake-album-option>span:last-child{display:block;padding:7px;font-size:11px;color:#6f7b60;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.keepsake-album-option .keepsake-photo-placeholder{padding:0!important}.keepsake-chooser{padding:28px}.keepsake-chooser>header{display:flex;justify-content:space-between;align-items:center;gap:12px}.keepsake-chooser h2{font-size:22px;font-weight:500}.keepsake-chooser p{color:#88967a;font-size:13px;line-height:1.8}.keepsake-choice{display:flex;flex-direction:column;gap:7px;text-align:left;padding:15px;border:1px solid #e1e6d5;border-radius:12px;background:#fbfcf5;color:#5b704c;width:100%;margin:10px 0;font:inherit;cursor:pointer}.keepsake-choice small{font-size:12px;color:#929e83}.keepsake-event-empty{line-height:1.8;color:#8b977e;font-size:14px}@media(max-width:450px){.keepsake-album-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.keepsake-linked-photos{grid-template-columns:repeat(2,minmax(0,1fr))}}
.keepsake-categories{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}.keepsake-categories button{display:flex;align-items:center;gap:9px;border:1px solid #dfe6d3;background:#f9fbf3;border-radius:12px;padding:10px 13px;color:#7b8c6b;cursor:pointer;font:inherit;font-size:13px}.keepsake-categories button[aria-pressed=true]{background:#dfe8d5;color:#4f6842;border-color:#cedbbc}.keepsake-categories small{padding:1px 5px;border-radius:5px;background:#ffffff80;font-size:11px}.keepsake-search{display:flex;flex-direction:column;gap:7px;margin:0 0 22px;font-size:12px;color:#869778;max-width:430px}.keepsake-search input{width:100%;box-sizing:border-box;background:#fffef9;border:1px solid #dde5d1;border-radius:10px;padding:11px 14px;font:inherit;font-size:14px;color:#5c724f}

.capsule-section { margin: 0 auto; max-width: 1060px; }
.capsule-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 10px 0 24px; }
.capsule-heading h2 { font-size: clamp(25px, 3vw, 34px); font-weight: 550; margin: 6px 0 10px; color: #3d4f40; }
.capsule-heading p:not(.capsule-kicker) { color: #7b8277; margin: 0; line-height: 1.8; }
.capsule-kicker { font-size: 10px; letter-spacing: .2em; color: #919781; margin: 0 0 8px; }
.capsule-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.capsule-boxes { display: flex; gap: 24px; border-bottom: 1px solid #e2e7d7; margin: 0 0 20px; }
.capsule-boxes button { display: inline-flex; align-items: center; gap: 9px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: #929987; padding: 13px 2px; font: inherit; font-size: 15px; cursor: pointer; }
.capsule-boxes button[aria-pressed="true"] { color: #4e6845; border-bottom-color: #829b71; }
.capsule-boxes span { font-size: 10px; border-radius: 20px; background: #eef1e7; padding: 3px 7px; color: #829175; }
.capsule-envelope-actions { display: inline-flex; gap: 3px; }
.capsule-filters button { border: 1px solid #e4e7da; padding: 9px 13px; border-radius: 999px; color: #717b69; background: #fffef9; cursor: pointer; }
.capsule-filters button[aria-pressed="true"] { background: #e6ecdd; border-color: #cfd9c2; color: #435a44; }
.capsule-filters [data-capsule-refresh] { margin-left: auto; background: transparent; }
.capsule-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 18px; }
.capsule-envelope { position: relative; overflow: hidden; padding: 23px; background: #fffdf5; border: 1px solid #e9e4d5; border-radius: 6px 6px 18px 18px; box-shadow: 0 7px 22px #64724a07; }
.capsule-envelope::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px; background: repeating-linear-gradient(110deg, #cbd6bd 0 16px, #fffdf5 16px 32px, #d5c5ab 32px 48px, #fffdf5 48px 64px); opacity: .65; }
.capsule-envelope.is-ready { background: #f8fbf2; border-color: #dbe5cf; }
.capsule-envelope-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.capsule-stamp { width: 40px; height: 46px; display: grid; place-items: center; color: #8b9b7a; border: 1px dashed #c5ceb8; font-size: 24px; border-radius: 3px; }
.capsule-state { font-size: 11px; letter-spacing: .1em; color: #8a8f7f; }
.is-ready .capsule-state { color: #5b7b57; }
.capsule-envelope h3 { font-size: 20px; font-weight: 550; color: #4c5846; margin: 0 0 10px; overflow-wrap: anywhere; line-height: 1.5; }
.capsule-recipient { font-size: 12px; color: #8a8e80; line-height: 1.7; }
.capsule-unlock { color: #747c69; font-size: 13px; margin: 25px 0 22px; }
.capsule-envelope footer,.capsule-dialog footer { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.capsule-envelope footer .text-button { border: 0; background: transparent; color: #96998d; font-size: 12px; cursor: pointer; padding: 9px; }
.capsule-footnote { color: #8a9083; font-size: 12px; line-height: 1.8; margin-top: 22px; }
.capsule-empty { grid-column: 1 / -1; padding: 46px 20px; text-align: center; border: 1px dashed #dbdfce; border-radius: 18px; color: #8a907e; }
.capsule-empty > span { font-size: 38px; color: #a7b598; }
.capsule-empty h3 { font-weight: 500; color: #647258; }.capsule-empty p { font-size: 13px; line-height: 1.8; }
.capsule-dialog { box-sizing: border-box; width: min(600px, calc(100vw - 30px)); max-height: min(90dvh, 950px); overflow-y: auto; padding: 27px; border: 1px solid #e2e6d8; border-radius: 22px; background: #fffdf6; color: #4f5d48; box-shadow: 0 24px 90px #22322130; }
.capsule-dialog::backdrop { background: #35432e66; backdrop-filter: blur(4px); }
.capsule-dialog header { display: flex; justify-content: space-between; gap: 20px; align-items: flex-start; margin-bottom: 20px; }
.capsule-dialog h2 { font-weight: 550; font-size: 23px; margin: 6px 0; overflow-wrap: anywhere; }
.capsule-dialog label { display: grid; gap: 8px; margin-top: 18px; font-size: 13px; color: #627156; }
.capsule-dialog small { color: #949a8a; font-weight: 400; }
.capsule-dialog input:not([type="file"]),.capsule-dialog textarea { box-sizing: border-box; width: 100%; border: 1px solid #e0e4d5; border-radius: 12px; padding: 12px 14px; background: #ffffffa8; color: #46533f; font: inherit; font-size: 14px; line-height: 1.7; }
.capsule-dialog textarea { resize: vertical; min-height: 140px; }
.capsule-dialog footer { justify-content: flex-end; margin-top: 24px; }
.capsule-dialog .close-button { flex: 0 0 auto; }
.capsule-error { color: #a6684a; border-radius: 10px; background: #fbefe4; font-size: 13px; line-height: 1.8; padding: 12px 15px; }
.capsule-error:empty { display: none; }
.capsule-photo { margin-top: 12px; }.capsule-photo img { display: block; max-height: 170px; max-width: 100%; border-radius: 12px; }
.capsule-photo .capsule-photo-picker { display: inline-flex; cursor: pointer; border: 1px dashed #cbd4bc; border-radius: 10px; padding: 12px 16px; margin-top: 6px; }
.capsule-photo-picker input { width: 1px; height: 1px; position: absolute; opacity: 0; }
.capsule-photo-picker:focus-within { outline: 2px solid #899e74; outline-offset: 3px; }
.capsule-letter { padding-top: 16px; border-top: 1px dashed #d8dfca; margin-top: 20px; font-size: 15px; line-height: 2.1; min-height: 100px; }
.capsule-letter-body { white-space: pre-wrap; overflow-wrap: anywhere; }.capsule-letter img { display: block; width: 100%; border-radius: 12px; margin: 18px 0; }
@media (max-width: 560px) { .capsule-heading { align-items: flex-start; }.capsule-heading .primary-button { padding: 10px 13px; font-size: 12px; white-space: nowrap; }.capsule-dialog { padding: 22px 18px; }.capsule-filters { gap: 6px; }.capsule-filters button { font-size: 12px; padding: 8px 10px; }.capsule-envelope { padding: 22px; }.capsule-grid { gap: 13px; } }

.personal-space { color: #4f6048; max-width: 960px; margin: 0 auto; }
.personal-heading { display:flex; gap:20px; align-items:flex-start; justify-content:space-between; margin-bottom:22px; }
.personal-heading h2 { font-size:26px; font-weight:550; margin:5px 0 10px; }.personal-heading p:not(.personal-eyebrow) { font-size:13px; line-height:1.8; color:#8b9480; margin:0; }
.personal-eyebrow { font-size:10px; letter-spacing:.2em; color:#9aa58e; margin:0; }
.personal-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.personal-actions button { white-space:nowrap; }
.personal-breadcrumbs { display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:13px; line-height:1.8; color:#8b987e; overflow-wrap:anywhere; }
.personal-breadcrumbs button { border:0; background:transparent; color:#647d52; cursor:pointer; font:inherit; padding:5px 0; text-align:left; overflow-wrap:anywhere; }.personal-breadcrumbs [aria-current] { color:#4f6048; }
.personal-search { display:flex; align-items:flex-end; gap:10px; margin-top:20px; padding:15px; border:1px solid #e1e6d8; border-radius:15px; background:#f5f7ee; }
.personal-search label { display:grid; flex:1; gap:8px; min-width:0; font-size:12px; color:#7c8970; }
.personal-search input { box-sizing:border-box; width:100%; min-width:0; border:1px solid #dbe3ce; border-radius:10px; padding:11px 13px; background:#fffdf8; color:#4f6048; font:inherit; font-size:14px; line-height:1.5; }
.personal-search input::placeholder { color:#9ba48f; }.personal-search input:focus-visible,.personal-search button:focus-visible,.personal-result-path:focus-visible { outline:2px solid #849e71; outline-offset:3px; }
.personal-space .personal-search [data-personal-search-clear] { flex-shrink:0; min-height:44px; color:#657c54; }.personal-search [hidden],.personal-search-status[hidden] { display:none; }
.personal-search-status { margin:12px 1px 0; color:#7d8e6f; font-size:12px; line-height:1.8; }
.personal-result-path { display:block; box-sizing:border-box; width:calc(100% - 40px); margin:3px 20px 8px; padding:10px 0; border:0; border-top:1px solid #e9eddf; background:transparent; color:#71865e; text-align:left; font:inherit; font-size:11px; line-height:1.8; overflow-wrap:anywhere; cursor:pointer; }
.personal-folder-card { background:#f3f6ec; }.personal-folder-icon { display:inline-block; margin-right:8px; color:#849b70; font-size:24px; line-height:1; }
.personal-tools { display:flex; align-items:center; justify-content:space-between; gap:14px; font-size:12px; color:#919986; margin:20px 0; }
.personal-space .text-button,.personal-dialog .text-button { background:transparent; border:0; padding:8px; color:#839075; cursor:pointer; font:inherit; font-size:12px; }
.personal-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr)); gap:14px; }
.personal-card { border:1px solid #e1e6d8; background:#fffdf6; border-radius:16px; overflow:hidden; }
.personal-card-main { display:block; width:100%; text-align:left; padding:20px 20px 12px; border:0; background:transparent; color:inherit; cursor:pointer; }
.personal-kind { font-size:10px; letter-spacing:.15em; color:#a2ad94; }.personal-card h3 { font-size:18px; font-weight:550; overflow-wrap:anywhere; margin:12px 0; line-height:1.5; }
.personal-card p { font-size:13px; line-height:1.9; color:#8b9481; white-space:pre-wrap; overflow-wrap:anywhere; margin:0; }.personal-host { display:block; margin-top:12px; color:#8a997a; font-size:11px; overflow-wrap:anywhere; }
.personal-card footer { display:flex; justify-content:flex-end; gap:4px; padding:4px 12px 12px; }.personal-empty { grid-column:1/-1; border:1px dashed #dce2d1; border-radius:16px; text-align:center; padding:40px 16px; color:#97a089; }.personal-empty>span { font-size:40px; }.personal-empty h3 { font-size:18px; font-weight:500; color:#75866a; }.personal-empty p { font-size:13px; }
.personal-dialog { box-sizing:border-box; border:1px solid #e0e7d6; border-radius:20px; background:#fffdf6; color:#56654d; width:min(590px,calc(100vw - 28px)); max-height:90dvh; overflow-y:auto; padding:25px; box-shadow:0 25px 90px #24372330; }
.personal-dialog::backdrop { background:#30462e60; backdrop-filter:blur(4px); }.personal-dialog header { display:flex; justify-content:space-between; gap:18px; align-items:flex-start; }.personal-dialog h2 { font-size:23px; font-weight:550; margin:5px 0 20px; overflow-wrap:anywhere; }.personal-dialog label { display:grid; gap:8px; color:#7c8970; font-size:13px; margin:15px 0; }
.personal-dialog input:not([type=file]),.personal-dialog textarea,.personal-dialog select { box-sizing:border-box; width:100%; min-width:0; border:1px solid #dee5d3; border-radius:12px; background:#ffffffb0; color:#4f6045; padding:12px; font:inherit; font-size:14px; line-height:1.8; }.personal-dialog textarea { resize:vertical; min-height:130px; }
.personal-photo img { max-width:100%; max-height:200px; border-radius:12px; display:block; }.personal-dialog .personal-image-picker { display:inline-flex; padding:10px 14px; border:1px dashed #cbd6bd; border-radius:10px; cursor:pointer; }.personal-image-picker input { width:1px;height:1px;opacity:0;position:absolute; }.personal-image-picker:focus-within { outline:2px solid #849e71;outline-offset:3px; }
.personal-hint { font-size:11px;line-height:1.9;color:#9aa28e; }.personal-error { padding:12px 15px;background:#fbefe5;color:#a47550;border-radius:10px;font-size:13px;line-height:1.8; }.personal-error:empty { display:none; }
.personal-dialog footer { display:flex;gap:12px;justify-content:flex-end;margin-top:23px; }.personal-body { white-space:pre-wrap;overflow-wrap:anywhere;line-height:2;font-size:15px; }.personal-full-image { display:block;max-width:100%;border-radius:12px;margin:20px auto; }.personal-original { display:block;padding:15px 18px;background:#eef3e7;border-radius:12px;text-decoration:none;color:#677f54; }.personal-original span { display:block;font-size:11px;margin-top:7px;overflow-wrap:anywhere; }
@media(max-width:560px) { .personal-dialog { padding:20px 17px; }.personal-heading { flex-wrap:wrap; gap:15px; }.personal-heading h2 { font-size:23px; }.personal-actions { width:100%; justify-content:flex-start; }.personal-heading .primary-button,.personal-heading .secondary-button { white-space:nowrap;padding:10px 13px;font-size:12px; }.personal-grid { gap:11px; }.personal-search { gap:8px; padding:12px; }.personal-search input { font-size:16px; padding:10px; }.personal-space .personal-search [data-personal-search-clear] { padding:8px 4px; } }

.quiet-tools{position:relative;margin-left:auto;color:var(--muted,#77836f)}
.top-actions{position:relative}
.quiet-tools>summary{list-style:none;min-width:38px;min-height:40px;display:grid;place-items:center;cursor:pointer;border-radius:8px;font-size:23px;letter-spacing:2px}
.quiet-tools>summary::-webkit-details-marker{display:none}
.quiet-tools-label{display:none}
.quiet-tools[open]>summary,.quiet-tools>summary:hover{background:#e9eddf}
.quiet-tools-menu{position:absolute;right:0;top:calc(100% + 5px);z-index:40;min-width:155px;padding:7px;border:1px solid #dce2d4;border-radius:12px;background:#fffef8;box-shadow:0 10px 30px #35452e16}
.quiet-tools-menu button{display:block;width:100%;border:0;border-radius:7px;background:transparent;padding:11px 12px;text-align:left;color:#53684b;font:inherit;font-size:13px}
.quiet-tools-menu button:hover{background:#f0f3e9}
.recent-dialog{width:min(540px,calc(100vw - 28px));max-height:82dvh;padding:24px;border:1px solid #e0e5d7;border-radius:20px;background:#fffef8;color:#46583f;overflow:auto}
.recent-header{display:flex;align-items:start;justify-content:space-between;gap:14px;margin-bottom:20px}
.recent-header h2{font-size:25px;margin:0 0 6px}.recent-header p{font-size:13px;color:#7b8873;margin:0}
.recent-list{display:grid;gap:7px}.recent-row{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;padding:14px;border:1px solid #e2e7db;border-radius:12px;background:#fcfcf6;text-align:left;color:inherit}
.recent-row small{display:block;color:#7c8b73;font-size:11px;margin-bottom:5px}.recent-row strong{font-size:14px;font-weight:500;overflow-wrap:anywhere}
.recent-empty{color:#7c8874;padding:20px 0}.recent-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:18px;color:#7b8873}.recent-footer small{font-size:11px}
.personal-shell{width:min(860px,calc(100vw - 28px));max-height:90dvh;padding:22px;border:1px solid #dce3d4;border-radius:20px;background:#faf9f2;color:#46583f;overflow:auto}
.personal-shell-close{display:flex;justify-content:flex-end;margin-bottom:6px}
@media(max-width:600px){.recent-dialog{padding:19px}.personal-shell{padding:15px}.quiet-tools{margin-left:auto}}
/* The menu is a sibling grid item; this works in older Android WebViews that
   wrap native details content in an anonymous layout box. */
@media(max-width:850px){
  .top-actions .quiet-tools{grid-column:4;min-width:0;width:100%;margin:0}
  .top-actions .quiet-tools>summary{min-width:0;min-height:56px;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:6px 2px;letter-spacing:0;line-height:1.4}
  .quiet-tools-icon{display:block;height:18px;font-size:22px;line-height:12px;letter-spacing:2px}
  .quiet-tools-label{display:block;font-size:13px}
  .top-actions .quiet-tools-menu{position:static;grid-column:1/-1;min-width:0;max-width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:7px;margin-top:2px;border-radius:9px;box-shadow:none}
  .top-actions .quiet-tools-menu button{min-width:0;min-height:44px;padding:10px 8px;white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.5}
}

.wish-keepsakes { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line, #e3e7dc); }
.wish-keepsakes h4 { margin: 0 0 .8rem; font-size: .95rem; color: #52614d; }
.wish-review { padding: .8rem; margin-bottom: .65rem; border-radius: 12px; background: #f4f5ee; }
.wish-review header { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.wish-review header strong { font-size: .84rem; }
.wish-review header button { font-size: .74rem; padding: .15rem; }
.wish-review p { margin: .5rem 0 0; white-space: pre-wrap; overflow-wrap: anywhere; font-size: .9rem; line-height: 1.7; }
.wish-review-form { display: grid; gap: .7rem; margin-top: .8rem; }
.wish-review-form > label { display: grid; gap: .4rem; color: #52614d; font-size: .82rem; }
.wish-review-form textarea, .wish-review-form input[type=date] { box-sizing: border-box; width: 100%; border: 1px solid #dbe2d2; border-radius: 10px; padding: .7rem; color: #414e3e; background: #fffef9; font: inherit; resize: vertical; }
.wish-review-form > button { justify-self: end; font-size: .8rem; }
.wish-review-feedback { min-height: 1em; color: #6d7768; font-size: .75rem; }
.wish-review-feedback p { margin: .2rem 0; color: #a05235; }
.wish-review-date small { color: #7b8174; }
.wish-review-photos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .4rem; margin-top: .65rem; }
.wish-review-photo { display: block; aspect-ratio: 1; min-width: 0; width: 100%; padding: 0; border: 0; border-radius: 9px; overflow: hidden; background: #e8ece1; color: #707c69; }
.wish-review-photo > span { height: 100%; display: grid; place-content: center; font-size: .75rem; }
.wish-review-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.wish-review-uploaded { width: 100%; max-height: 180px; margin-top: .65rem; border-radius: 9px; object-fit: cover; }
.wish-review-picker { border: 1px solid #e0e5d8; border-radius: 10px; padding: .65rem; font-size: .8rem; }
.wish-review-picker summary { cursor: pointer; color: #65765d; }
.wish-review-picker-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; margin-top: .65rem; }
.wish-review-picker-grid label { position: relative; display: grid; gap: .3rem; min-width: 0; cursor: pointer; }
.wish-review-picker-grid label > input { position: absolute; top: .3rem; left: .3rem; z-index: 1; accent-color: #6c8060; }
.wish-review-picker-grid label > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .7rem; }
.wish-review-picker-grid label:has(input:checked) .wish-review-photo { outline: 2px solid #6c8060; outline-offset: 1px; }
.wish-review-picker-grid > p { grid-column: 1 / -1; color: #78806f; }
.wish-review-editor > summary { padding: .4rem 0; color: #6a7a61; font-size: .8rem; cursor: pointer; }

.global-search-dialog { width:min(660px,calc(100vw - 28px)); max-height:calc(100dvh - 40px); padding:25px; border:1px solid #dce3d3; border-radius:18px; background:#fffdf7; color:#4f6646; box-shadow:0 24px 90px #384d3c22; }
.global-search-dialog::backdrop { background:#30433259; backdrop-filter:blur(3px); }
.global-search-dialog>header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:21px; }
.global-search-dialog h2 { margin:5px 0 0; font:500 25px/1.5 var(--serif); }
.global-search-field { display:flex; align-items:center; gap:10px; padding:0 13px; border:1px solid #cfdac3; border-radius:11px; background:#f7f9f0; }
.global-search-field>span { font-size:28px; color:#829775; }
.global-search-field input { min-width:0; width:100%; min-height:49px; border:0; outline:none; color:#4f6646; background:transparent; font:400 16px/1.6 var(--sans); }
.global-search-field:focus-within { outline:2px solid #8ba278; outline-offset:2px; }
.global-search-hint { display:none; margin:8px 0 0; color:#87967a; font-size:11px; line-height:1.7; }
.global-search-filters { display:flex; gap:7px; flex-wrap:wrap; margin-top:17px; }
.global-search-filters button { padding:7px 11px; min-height:36px; border:1px solid #e3e9d9; border-radius:18px; background:transparent; color:#7a896d; font:400 12px/1.4 var(--sans); cursor:pointer; }
.global-search-filters button[aria-pressed=true] { color:#526d43; background:#e9f0df; border-color:#ccdabd; }
.global-search-count { margin:18px 0 9px; color:#87967a; font-size:12px; line-height:1.7; }
.global-search-results ul { list-style:none; margin:0; padding:0; }
.global-search-result { display:grid; grid-template-columns:minmax(0,1fr) 18px; gap:5px 9px; width:100%; padding:15px 2px; border:0; border-bottom:1px solid #e6eadf; color:#4d6544; background:transparent; text-align:left; cursor:pointer; font:inherit; }
.global-search-result:hover { background:#f4f7ed; }
.global-search-section,.global-search-result strong,.global-search-excerpt { grid-column:1; overflow-wrap:anywhere; }
.global-search-section { color:#8a997a; font-size:11px; }
.global-search-result strong { font-size:14px; line-height:1.7; font-weight:500; }
.global-search-excerpt { color:#819174; font-size:12px; line-height:1.8; }
.global-search-arrow { grid-column:2; grid-row:1 / span 3; align-self:center; color:#91a181; }
.global-search-more { display:block; margin:20px auto 3px; }
.global-search-empty { padding:30px 8px; color:#8a967f; font-size:13px; line-height:1.9; text-align:center; }
.global-search-dialog button:focus-visible { outline:2px solid #8ba278; outline-offset:2px; }
.fragment-category-filters { display:flex; flex-wrap:wrap; gap:7px; margin:-5px 0 23px; }
.fragment-category-filters button { min-height:34px; padding:6px 11px; border:1px solid #e0e7d5; border-radius:17px; background:transparent; color:#859174; font:400 12px/1.5 var(--sans); cursor:pointer; }
.fragment-category-filters button[aria-pressed=true] { background:#edf2e5; color:#60764f; border-color:#cfddc0; }
.fragment-category-filters button:focus-visible { outline:2px solid #8ba278; outline-offset:2px; }
@media(min-width:768px) and (hover:hover) and (pointer:fine) { .global-search-hint { display:block; } }
@media(max-width:560px) { .global-search-dialog { padding:20px 17px; max-height:calc(100dvh - 24px); } .global-search-dialog h2 { font-size:23px; } .global-search-filters { gap:6px; } .global-search-filters button { min-height:38px; padding:7px 10px; } .fragment-category-filters { flex-wrap:nowrap; overflow-x:auto; padding-bottom:4px; scrollbar-width:thin; } .fragment-category-filters button { flex:none; } }

.wish-draw-dialog { width:min(490px,calc(100vw - 28px)); max-height:calc(100dvh - 30px); padding:25px; border:1px solid #dde3d3; border-radius:19px; background:#fffdf7; color:#53694a; box-shadow:0 24px 85px #36482f24; }
.wish-draw-dialog::backdrop { background:#30433259; backdrop-filter:blur(3px); }
.wish-draw-dialog>header { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.wish-draw-dialog h2 { margin:5px 0 0; font:500 25px/1.5 var(--serif); }
.wish-draw-filter { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:24px 0 19px; color:#87967a; font-size:12px; }
.wish-draw-filter select { max-width:72%; min-width:0; min-height:43px; padding:8px 11px; border:1px solid #dce4d1; border-radius:9px; background:#fafbf4; color:#617953; font:400 14px/1.5 var(--sans); }
.wish-draw-ticket { display:flex; flex-direction:column; align-items:center; padding:25px 23px 29px; border:1px solid #dfe6d3; border-radius:70px 70px 13px 13px; background:linear-gradient(140deg,#f1f5e8,#fbf7eb); text-align:center; min-width:0; }
.wish-draw-mark { color:#9eaf89; font-size:37px; line-height:1.5; margin-bottom:10px; }
.wish-draw-ticket small { color:#8a9a7b; font-size:11px; }
.wish-draw-ticket h3 { margin:13px 0 0; color:#536b47; font:500 23px/1.7 var(--serif); overflow-wrap:anywhere; }
.wish-draw-ticket p { max-height:170px; overflow:auto; margin:16px 0 0; color:#839174; font-size:13px; line-height:1.9; white-space:pre-wrap; overflow-wrap:anywhere; }
.wish-draw-footnote { margin-top:27px; color:#99a68a; font-size:11px; line-height:1.7; }
.wish-draw-notice { margin:15px 0 0; color:#8b987e; font-size:12px; line-height:1.8; }
.wish-draw-dialog>footer { display:flex; gap:12px; flex-wrap:wrap; margin-top:22px; }
.wish-draw-dialog>footer button { flex:1; min-height:45px; font-size:13px; white-space:nowrap; }
.wish-draw-dialog button:focus-visible,.wish-draw-dialog select:focus-visible { outline:2px solid #8ba278; outline-offset:3px; }
.wish-draw-trigger { flex:0 0 auto; white-space:nowrap; }
.wish-question-button { margin-top:12px; color:#87977b; font-size:12px; }
@media(max-width:560px) { .wish-draw-dialog { padding:21px 18px; } .wish-draw-dialog h2 { font-size:23px; } .wish-draw-filter select { font-size:16px; } .wish-draw-ticket { padding:22px 18px 24px; } .wish-draw-ticket h3 { font-size:22px; } }

.question-dialog{width:min(680px,calc(100vw - 24px));max-height:calc(100dvh - 36px);padding:0;border:1px solid #dce3d5;border-radius:24px;background:#fbfaf4;color:#354236;box-shadow:0 24px 80px #263a2930}.question-dialog::backdrop{background:#24372966;backdrop-filter:blur(4px)}.question-panel{padding:28px}.question-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.question-panel h2{margin:5px 0 14px}.question-context{margin:0 0 8px;color:#5c7057;overflow-wrap:anywhere}.question-intro,.question-status{color:#7b8474;font-size:14px;line-height:1.8}.question-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.question-tabs button{border:1px solid #dde4d6;background:transparent;color:#677860;border-radius:999px;padding:9px 13px;font:inherit;font-size:13px;cursor:pointer}.question-tabs button[aria-pressed=true]{background:#e3eadb;border-color:#b9c7ad;color:#405a39}.question-tabs span{font-size:11px}.question-panel h3{font-size:18px;line-height:1.6;margin:18px 0 10px}.question-panel form>label{display:grid;gap:9px;font-size:13px;color:#65735c}.question-panel textarea{box-sizing:border-box;width:100%;resize:vertical;min-height:115px;border:1px solid #d6dfce;border-radius:14px;background:#fffef9;color:#354236;padding:13px;font:inherit;font-size:15px;line-height:1.75}.question-panel textarea:focus{outline:2px solid #b2c4a5;outline-offset:2px}.question-panel form>small{display:block;min-height:20px;color:#89917f;font-size:12px;margin-top:8px}.question-panel footer{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px}.question-answers{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.question-answers article{min-width:0;padding:17px;border-radius:16px;background:#eef2e8}.question-answers article:nth-child(2){background:#f3efe3}.question-answers h4{font-size:12px;color:#7c856e;margin:0 0 8px}.question-answers p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;font-size:14px}.question-error{color:#a35d41;font-size:13px;line-height:1.7}.question-conflict{display:flex;gap:14px;flex-wrap:wrap}.question-refresh{font-size:12px!important;margin-top:16px;color:#7d8872!important}.question-panel button:disabled{opacity:.55;cursor:default}@media(max-width:520px){.question-panel{padding:21px 17px}.question-panel h3{font-size:17px}.question-answers{gap:8px}.question-answers article{padding:12px}.question-tabs{gap:6px}.question-tabs button{padding:8px 10px;font-size:12px}}

.experience-list>header,.experience-detail>header,.experience-form>header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.experience-list h2{margin:0 0 8px}.experience-list>header p{margin:0 0 22px;color:#7c8774;font-size:14px;line-height:1.8}.experience-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}.experience-card{border:1px solid #dce4d4;border-radius:20px;background:#fafbf5;overflow:hidden;padding:0;text-align:left;color:#46513e;cursor:pointer}.experience-card>.experience-photo-preview,.experience-cover-mark{height:150px;width:100%;display:grid;place-items:center;background:#eaf0e2;color:#a2b196;font-size:40px}.experience-card>span:last-child{display:grid;gap:7px;padding:16px}.experience-card strong{font-size:17px;overflow-wrap:anywhere}.experience-card small,.experience-card time{font-size:12px;color:#7f8a72;line-height:1.6}.experience-photo-preview{display:block;overflow:hidden;background:#edf1e7}.experience-photo-preview img{width:100%;height:100%;object-fit:cover;display:block}.experience-dialog{width:min(760px,calc(100vw - 24px));max-height:calc(100dvh - 36px);padding:0;border:1px solid #dbe3d3;border-radius:24px;background:#fbfaf4;color:#3b4935}.experience-dialog::backdrop{background:#263a2966;backdrop-filter:blur(4px)}.experience-detail,.experience-form{padding:28px}.experience-dialog h2{margin:5px 0 12px;overflow-wrap:anywhere}.experience-detail time,.experience-muted,.experience-empty{font-size:13px;line-height:1.8;color:#7e8973}.experience-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9}.experience-detail>section{margin-top:26px}.experience-detail h3{font-size:16px}.experience-detail h3 small{font-size:12px;font-weight:normal;color:#819073}.experience-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.experience-photos>button{padding:0;border:0;background:none;border-radius:13px;overflow:hidden;cursor:pointer}.experience-photos .experience-photo-preview{aspect-ratio:1;display:grid;place-items:center;font-size:12px;color:#839377}.experience-linked-list{display:grid;gap:10px}.experience-link{display:block;width:100%;text-align:left;border:1px solid #e1e6da;border-radius:13px;background:#f4f6ee;padding:13px;color:#56684b;font:inherit;cursor:pointer;overflow-wrap:anywhere}.experience-link strong{font-size:14px}.experience-link small{margin-left:12px;color:#88947b;font-size:12px}.experience-link p{margin:8px 0 0;white-space:pre-wrap;color:#7b856f;font-size:13px;line-height:1.8}.experience-review{margin:0 0 6px 14px;padding:13px 15px;border-left:2px solid #d2dfc5;background:#f5f4ea;border-radius:0 13px 13px 0}.experience-review header{display:flex;justify-content:space-between;gap:10px;align-items:center}.experience-review header>strong{font-size:12px;color:#7a886b}.experience-review .experience-link{width:auto;padding:0;border:0;background:none}.experience-review .experience-link strong{font-size:12px;font-weight:normal}.experience-review p{font-size:14px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.experience-review-upload{max-width:160px;max-height:160px;border-radius:12px}.experience-detail footer,.experience-form footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:24px}.experience-form>label,.experience-form details>label{display:grid;gap:8px;font-size:13px;color:#6e7c62;margin-top:18px}.experience-form input:not([type=checkbox]),.experience-form textarea,.experience-form select{box-sizing:border-box;width:100%;padding:11px 13px;border:1px solid #d9e1d0;border-radius:12px;background:#fffef9;color:#3c4a35;font:inherit;line-height:1.7}.experience-form textarea{resize:vertical}.experience-form details{margin-top:18px}.experience-form summary{font-size:13px;color:#77876a;cursor:pointer}.experience-form small{font-size:12px;line-height:1.8;color:#88927e}.experience-choices{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:300px;overflow:auto;margin:12px 0}.experience-choices label{display:flex;align-items:flex-start;gap:7px;border:1px solid #e0e6d8;border-radius:11px;padding:9px;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.experience-choices small{display:block;font-size:11px}.experience-error{font-size:13px;line-height:1.8;color:#a46547}.experience-form button:disabled{opacity:.55;cursor:default}@media(max-width:520px){.experience-list>header{display:block}.experience-list>header>.secondary-button{margin-bottom:16px}.experience-detail,.experience-form{padding:21px 17px}.experience-grid{grid-template-columns:1fr 1fr;gap:10px}.experience-card>.experience-photo-preview,.experience-cover-mark{height:105px}.experience-card>span:last-child{padding:12px}.experience-card strong{font-size:14px}.experience-card small{font-size:11px}.experience-photos{gap:6px}.experience-review{margin-left:6px}.experience-review header{align-items:flex-start}.experience-choices{grid-template-columns:1fr}.experience-dialog h2{font-size:22px}}

.life-home-memory .life-home-memory-modes{display:inline-flex;gap:3px;padding:3px;margin-top:10px;border:1px solid #dfe5d9;border-radius:999px;background:#f5f6ef}
.life-home-memory-modes button{border:0;border-radius:999px;background:transparent;color:#7b8575;font:inherit;font-size:12px;padding:6px 12px;cursor:pointer}
.life-home-memory-modes button[aria-pressed="true"]{background:#e1e8d8;color:#435940}
.life-home-memory-modes button:focus-visible,.photo-experience-recall:focus-visible{outline:2px solid #768b68;outline-offset:3px}
.photo-upload-list .photo-upload-date{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:7px 0 4px;font-size:11px;color:#78826e}
.photo-upload-date input{min-width:0;width:145px;max-width:100%;padding:5px 7px;border:1px solid #dce3d4;border-radius:7px;background:#fffef9;color:#485641;font:inherit}
.photo-upload-date input:disabled{opacity:.65}
.photo-album-toolbar .photo-experience-recall{align-self:flex-start;font-size:12px;margin-top:2px}
@media(max-width:600px){.life-home-memory .life-section-heading{align-items:flex-start}.life-home-memory .life-section-heading>[data-home-memory-next]{margin-top:3px;white-space:nowrap}.life-home-memory-modes button{padding:6px 10px}.photo-upload-list .photo-upload-date{display:grid;gap:4px}.photo-upload-date input{width:100%}}

.life-home-actions { display:flex; align-items:center; flex-wrap:wrap; gap:10px 13px; }
.daily-summary-trigger { min-height:44px; padding:9px 11px; color:#75866b; font-size:12px; line-height:1.6; }
.daily-summary-dialog { width:min(580px,calc(100vw - 28px)); max-height:calc(100dvh - 32px); padding:0; border:1px solid #dce4d1; border-radius:20px; color:#52684b; background:#fffdf7; box-shadow:0 25px 90px #33482a2b; }
.daily-summary-dialog::backdrop { background:#30433259; backdrop-filter:blur(3px); }
.daily-summary-panel { padding:27px; }
.daily-summary-panel>header { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:22px; }
.daily-summary-panel h2 { margin:0; font:500 26px/1.6 var(--serif); }
.daily-summary-body { margin:0; color:#53644a; font-size:15px; line-height:2.1; white-space:pre-wrap; overflow-wrap:anywhere; }
.daily-summary-status { margin:24px 0 33px; color:#859177; font-size:15px; line-height:1.9; }
.daily-summary-error { margin:20px 0; padding:13px 15px; border:1px solid #e8d5bd; border-radius:10px; background:#fbf3e8; color:#997554; font-size:13px; line-height:1.9; }
.daily-summary-panel>footer { margin-top:25px; padding-top:17px; border-top:1px solid #e9ecdf; }
.daily-summary-panel>footer small { display:block; color:#909a84; font-size:10px; line-height:1.9; }
.daily-summary-dialog button:focus-visible { outline:2px solid #89a278; outline-offset:3px; }
@media(max-width:560px) { .daily-summary-panel { padding:22px 19px; } .daily-summary-panel h2 { font-size:23px; } .daily-summary-body { font-size:14px; } .daily-summary-trigger { padding-left:2px; } }

.fragment-music-tools { margin:10px 0 15px; }
.fragment-music-add { display:inline-flex; align-items:center; gap:7px; min-height:42px; padding:6px 12px; border:1px dashed #d4ddc9; border-radius:10px; background:transparent; color:#75866b; font:inherit; font-size:12px; cursor:pointer; }
.fragment-music-fields { display:grid; gap:12px; margin:10px 0 15px; padding:16px; border:1px solid #dfe5d6; border-radius:12px; background:#f7f8f0; }
.fragment-music-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; color:#647a58; font-size:13px; }
.fragment-music-fields label { display:grid; gap:7px; color:#708165; font-size:12px; }
.fragment-music-fields :is(input,textarea) { box-sizing:border-box; width:100%; min-width:0; padding:10px 12px; border:1px solid #d9e1ce; border-radius:8px; background:#fffef9; color:#455a3e; font:inherit; font-size:13px; line-height:1.7; }
.fragment-music-fields textarea { resize:vertical; min-height:72px; }
.fragment-music-fields .fragment-music-hint { margin:0; }
.fragment-music-card { display:flex; align-items:center; gap:12px; width:100%; margin:18px 0; padding:14px; text-align:left; border:1px solid #dfe5d5; border-radius:12px; background:#f4f6ec; color:#58704c; font:inherit; cursor:pointer; }
.fragment-music-card:hover { background:#edf2e3; border-color:#c5d3b7; }
.fragment-music-icon { display:grid; place-items:center; flex:none; width:40px; height:40px; border-radius:50%; background:#e3ead8; font-size:22px; }
.fragment-music-info { flex:1; min-width:0; display:grid; gap:5px; }
.fragment-music-info strong { font-weight:500; font-size:14px; line-height:1.6; overflow-wrap:anywhere; }
.fragment-music-info small { color:#8a977f; font-size:11px; }
.fragment-music-play { flex:none; font-size:12px; color:#6b815e; }
.fragment-music-tools :is(button,input,textarea):focus-visible,.fragment-music-card:focus-visible { outline:2px solid #8da47a; outline-offset:3px; }
.fragment-music-player[hidden] { display:none; }
.fragment-music-player { position:fixed; z-index:90; right:24px; bottom:24px; width:min(380px,calc(100vw - 28px)); padding:17px; border:1px solid #cdd9c2; border-radius:18px; background:#fffdf7; color:#4b6146; box-shadow:0 12px 44px #38472c26; }
.fragment-music-player>header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:13px; }
.fragment-music-player>header>div { min-width:0; }
.fragment-music-player small { color:#7d8b72; font-size:11px; }
.fragment-music-player h2 { margin:4px 0 0; font-size:15px; font-weight:500; overflow-wrap:anywhere; }
.fragment-music-player iframe { display:block; width:100%; height:90px; border:0; border-radius:8px; background:#f3f4ec; }
.fragment-music-hint { margin:10px 0 5px; font-size:11px; line-height:1.7; color:#87917c; }
.fragment-music-player>footer { display:flex; flex-wrap:wrap; gap:0 16px; align-items:center; }
.fragment-music-player>footer a,.fragment-music-player>footer button { display:inline-flex; align-items:center; min-height:38px; padding:0; border:0; background:none; color:#607957; font:inherit; font-size:12px; text-decoration:none; cursor:pointer; }
.fragment-music-player :is(a,button):focus-visible { outline:2px solid #8da47a; outline-offset:3px; }
@media(max-width:600px) { .fragment-music-player { right:14px; bottom:calc(80px + env(safe-area-inset-bottom,0px)); padding:14px; } }
@media(max-width:850px) {
  .fragment-music-player { bottom:calc(var(--mobile-nav-height,84px) + 12px);max-height:calc(100vh - var(--mobile-nav-height,84px) - 36px);max-height:calc(100dvh - var(--mobile-nav-height,84px) - 36px);overflow:auto; }
  .fragment-music-player>header { position:sticky;top:0;z-index:1;background:#fffdf7; }
}

.fragment-share-card{margin:18px 0 8px;border:1px solid var(--line,#dce3d3);border-radius:13px;background:#f5f6ee;overflow:hidden}
.fragment-share-main{display:flex;align-items:center;gap:13px;width:100%;padding:16px;text-align:left;border:0;background:none;color:inherit;text-decoration:none;cursor:pointer}
.fragment-share-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:10px;background:#e5eddf;color:#637b54;font-size:21px}
.fragment-share-info{display:flex;flex:1;min-width:0;flex-direction:column;gap:5px}.fragment-share-info strong{font-size:15px;line-height:1.5;overflow-wrap:anywhere}.fragment-share-info small,.fragment-share-action{font-size:12px;color:#73836d}.fragment-share-action{flex:none}
.fragment-share-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 16px 12px;font-size:12px;color:#7d8975}.fragment-share-bottom p{margin:0;line-height:1.6}.fragment-share-bottom button{flex:none;font-size:12px}
.fragment-share-segments{display:grid;gap:4px;padding:0 14px 12px}.fragment-share-segments button{display:flex;gap:12px;text-align:left;border:0;border-radius:7px;padding:9px;background:#eaf0e3;color:#4c6645;font:inherit;font-size:13px}.fragment-share-segments time{flex:none;font-variant-numeric:tabular-nums}.fragment-share-segments span{overflow-wrap:anywhere;line-height:1.5}
.fragment-share-player[hidden]{display:none}.fragment-share-player{position:fixed;right:22px;bottom:22px;z-index:85;width:min(490px,calc(100vw - 32px));border:1px solid #d7dfce;border-radius:18px;background:#fffef8;box-shadow:0 16px 60px #35472c30;padding:16px;color:#40573c;max-height:calc(100dvh - 36px);overflow:auto}
.fragment-share-player header{display:flex;justify-content:space-between;gap:14px;align-items:start;margin-bottom:12px}.fragment-share-player header small{font-size:11px;letter-spacing:.08em;color:#819174}.fragment-share-player h2{font-size:17px;line-height:1.5;margin:4px 0 0;overflow-wrap:anywhere}.fragment-share-player iframe{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:10px;background:#1f271d}.fragment-share-player [data-share-caption]{font-size:13px;line-height:1.6;overflow-wrap:anywhere}.fragment-share-player [data-share-caption]:empty{display:none}.fragment-share-player footer{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:12px;font-size:12px;color:#7c8972}.fragment-share-player footer button{border:0;padding:0;background:none;color:#5d7752;font:inherit;cursor:pointer}.fragment-share-player footer a{color:#5d7752}
.fragment-share-wish{margin:0 0 8px;font-size:12px}.fragment-share-fields-hint{font-size:12px;line-height:1.7;color:#7d8975;margin:7px 0 0}.fragment-share-time-label{display:block;margin-top:12px}
.fragment-card-header .edit-button{white-space:nowrap;flex-shrink:0}
@media(max-width:540px){.fragment-share-player{right:12px;bottom:12px;width:calc(100vw - 24px);padding:13px}.fragment-share-main{padding:13px;gap:10px}.fragment-share-bottom{align-items:flex-start}.fragment-share-action{font-size:11px}.fragment-share-icon{flex-basis:30px;width:30px;height:30px}}
@media(max-width:850px){
  .fragment-share-player{bottom:calc(var(--mobile-nav-height,84px) + 12px);max-height:calc(100vh - var(--mobile-nav-height,84px) - 36px);max-height:calc(100dvh - var(--mobile-nav-height,84px) - 36px);overflow:auto}
  .fragment-share-player>header{position:sticky;top:0;z-index:1;background:#fffef8}
}

.memory-play-dialog{position:fixed;inset:5vh auto auto 50%;transform:translateX(-50%);z-index:80;width:min(680px,calc(100vw - 28px));max-height:88dvh;margin:0;padding:0;box-shadow:0 18px 80px #263a3030;background:#fffef8;border:1px solid #d9e0ce;border-radius:22px;color:#435b49;overflow:auto}
.memory-play-dialog .dialog-header{position:sticky;top:0;z-index:2;background:#fffef8;padding:22px 24px 16px;border-bottom:1px solid #e5e9db}.memory-play-dialog h2{font-size:25px;margin:4px 0 0}.memory-play-body{padding:20px 24px 24px}.memory-play-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.memory-play-tabs button,.memory-puzzle-options button{border-radius:999px;padding:8px 14px;font-size:13px;min-height:40px}.memory-play-tabs button[aria-pressed=true],.memory-puzzle-options button[aria-pressed=true]{background:#e8eddf;border-color:#abbc99;color:#35513a}.memory-play-empty{padding:24px 0;line-height:1.9;color:#7a8674}.memory-play-hint,.memory-play-instruction{font-size:13px;line-height:1.8;color:#7b8872}.memory-play-instruction{margin:0 0 14px}.memory-radio-card{display:grid;grid-template-columns:180px 1fr;gap:22px;align-items:start}.memory-radio-photo,.memory-radio-disc{width:180px;aspect-ratio:1;object-fit:cover;border-radius:18px}.memory-radio-disc{display:grid;place-items:center;background:linear-gradient(135deg,#f1eadb,#e7efdf)}.memory-radio-disc span{display:grid;place-items:center;width:110px;aspect-ratio:1;border-radius:50%;background:repeating-radial-gradient(circle,#536a53 0 2px,#637a60 3px 5px);color:#f5f5e8;font-size:36px;box-shadow:0 8px 20px #4a644b20}.memory-play-eyebrow{font-size:12px;line-height:1.8;color:#819077;margin:0 0 8px}.memory-radio-copy{min-width:0}.memory-radio-copy h3{font-size:22px;line-height:1.5;margin:0 0 15px;overflow-wrap:anywhere}.memory-radio-copy h4{font-size:15px;margin:0 0 8px;overflow-wrap:anywhere}.memory-radio-text{line-height:1.9;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 14px;max-height:200px;overflow:auto}.memory-play-actions{display:flex;gap:9px;flex-wrap:wrap}.memory-play-actions button,.memory-play-switch button,.memory-play-game-footer button{padding:9px 13px;font-size:13px;min-height:42px}.memory-play-switch{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:22px;border-top:1px solid #e8ecdf;padding-top:18px}.memory-play-switch span{font-size:12px;color:#819077}.memory-reveal-frame{background:#edf1e6;border-radius:16px;overflow:hidden;max-width:400px;margin:auto;aspect-ratio:1;display:grid;place-items:center}.memory-reveal-frame img{display:block;width:100%;height:100%;object-fit:contain;transition:clip-path .35s ease}.memory-game-answer{min-height:28px;line-height:1.8;margin:14px 0;color:#59714d;overflow-wrap:anywhere}.memory-game-answer small{display:block;color:#8a917e;font-size:12px}.memory-puzzle-options{display:flex;gap:8px;margin:0 0 12px}.memory-puzzle{display:grid;grid-template-columns:repeat(var(--memory-grid),1fr);gap:3px;aspect-ratio:1;width:min(100%,400px);margin:auto;background:#dce4d3;border:3px solid #dce4d3;border-radius:12px;overflow:hidden}.memory-puzzle-piece{position:relative;border:0;background:#e7eddf;min-width:0;min-height:0;padding:0;overflow:hidden;border-radius:0;cursor:pointer}.memory-puzzle-piece img{position:absolute;width:calc(var(--memory-grid)*100%);height:calc(var(--memory-grid)*100%);max-width:none;object-fit:cover;pointer-events:none}.memory-puzzle-piece.is-selected:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 4px #f6d58b;background:#f6d58b20;pointer-events:none}.memory-puzzle-piece:disabled{opacity:1;cursor:default}.memory-order-list{padding:0;margin:0;list-style:none;display:grid;gap:12px}.memory-order-list li{display:grid;grid-template-columns:84px 1fr auto;gap:13px;align-items:center;padding:10px;border:1px solid #e3e8d9;border-radius:14px}.memory-order-list img{width:84px;height:72px;border-radius:8px;object-fit:cover}.memory-order-list strong{font-size:14px;line-height:1.7;font-weight:500;overflow-wrap:anywhere}.memory-order-list small{display:block;font-size:12px;color:#859176;margin-top:4px}.memory-order-list li>span{display:flex;flex-direction:column;gap:3px}.memory-order-list button{padding:2px 10px;min-width:36px;min-height:34px}.memory-play-game-footer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-top:1px solid #e7ebdd;padding-top:18px;margin-top:20px}.memory-play-game-footer span{font-size:12px;color:#8b947e}.memory-play-dialog button:focus-visible{outline:3px solid #a8b897;outline-offset:3px}.memory-play-dialog button:disabled{cursor:default}
@media(max-width:600px){.memory-play-dialog{top:3dvh;max-height:91dvh;width:calc(100vw - 20px);border-radius:18px}.memory-play-dialog .dialog-header{padding:18px 18px 14px}.memory-play-body{padding:18px}.memory-radio-card{grid-template-columns:1fr;gap:17px}.memory-radio-photo,.memory-radio-disc{width:min(100%,240px);margin:auto}.memory-radio-copy h3{font-size:22px}.memory-radio-text{max-height:160px}.memory-order-list li{grid-template-columns:68px 1fr auto;gap:10px;padding:8px}.memory-order-list img{width:68px;height:66px}.memory-play-actions button{flex:1}.memory-play-switch{gap:6px}.memory-play-switch button{padding:8px 10px}}
@media(prefers-reduced-motion:reduce){.memory-reveal-frame img{transition:none}}

.memory-assistant-dialog { width:min(660px,calc(100vw - 28px)); max-height:calc(100dvh - 30px); padding:0; border:1px solid #d7dfcd; border-radius:22px; color:#4d6247; background:#fffdf7; box-shadow:0 20px 80px #354b3230; }
.memory-assistant-dialog::backdrop { background:#344b3555; backdrop-filter:blur(3px); }
.memory-assistant-panel { padding:26px; }
.memory-assistant-panel>header { display:flex; justify-content:space-between; align-items:center; gap:15px; }
.memory-assistant-panel h2 { margin:10px 0; font:500 26px/1.5 var(--serif); }
.memory-assistant-tabs,.memory-assistant-prompts { display:flex; flex-wrap:wrap; gap:8px; margin:18px 0; }
.memory-assistant-tabs button,.memory-assistant-prompts button { min-height:40px; padding:8px 12px; background:#f5f7ed; border:1px solid #dde5d2; border-radius:10px; color:#657b58; font:inherit; font-size:12px; cursor:pointer; }
.memory-assistant-tabs [aria-pressed=true] { background:#e6edda; color:#45613c; }
.memory-assistant-panel :is(input:not([type=checkbox]),textarea,select) { width:100%; min-width:0; box-sizing:border-box; padding:11px 12px; border:1px solid #d9e0ce; border-radius:10px; background:#fffef9; color:#4d6247; font:inherit; font-size:14px; line-height:1.8; }
.memory-assistant-panel textarea { resize:vertical; }
.memory-assistant-panel label { display:grid; gap:8px; margin-bottom:14px; font-size:13px; }
.memory-assistant-panel [data-assistant-ask] { display:flex; gap:8px; }
.memory-assistant-panel [data-assistant-ask] button { flex:none; }
.memory-assistant-muted,.memory-assistant-reply { font-size:13px; line-height:1.9; color:#819077; }
.memory-assistant-reply { color:#4d6645; margin:23px 0 16px; }
.memory-assistant-results { display:grid; gap:10px; }
.memory-assistant-results button { display:grid; gap:8px; padding:16px; border:1px solid #e0e5d5; border-radius:12px; background:#f9faf2; color:inherit; font:inherit; text-align:left; cursor:pointer; }
.memory-assistant-results strong { font-size:15px; font-weight:500; overflow-wrap:anywhere; }
.memory-assistant-results span { font-size:13px; line-height:1.8; white-space:pre-wrap; overflow-wrap:anywhere; }
.memory-assistant-results :is(small,em) { color:#89967d; font-size:11px; font-style:normal; }
.memory-assistant-wish { margin-top:20px; }
.memory-organizer-preview { border-top:1px solid #e0e6d6; padding-top:12px; }
.memory-organizer-preview h3 { font-size:17px; font-weight:500; }
.memory-organizer-preview small { font-size:11px; color:#88967b; line-height:1.7; }
.memory-organizer-preview .memory-organizer-check { display:flex; align-items:center; gap:9px; margin:19px 0; line-height:1.7; }
.memory-organizer-preview input[type=checkbox] { accent-color:#789268; flex:none; }
.memory-organizer-preview fieldset { border:0; margin:22px 0; padding:0; min-width:0; }
.memory-organizer-preview legend { font-size:13px; margin-bottom:12px; }
.memory-organizer-photos { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.memory-organizer-photos label { padding:7px; border:1px solid #e0e5d5; border-radius:10px; font-size:11px; overflow-wrap:anywhere; }
.memory-organizer-photos [data-organizer-photo] { display:grid; place-items:center; aspect-ratio:1; background:#edf1e3; border-radius:6px; overflow:hidden; }
.memory-organizer-photos img { width:100%; height:100%; object-fit:cover; }
.memory-organizer-preview footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.memory-assistant-error { padding:12px; border-radius:10px; background:#faefe4; color:#a16845; font-size:13px; line-height:1.8; }
.memory-assistant-dialog :is(button,input,textarea,select):focus-visible { outline:2px solid #8ca27a; outline-offset:3px; }
@media(max-width:560px) { .memory-assistant-panel { padding:20px 17px; } .memory-assistant-panel h2 { font-size:23px; } .memory-assistant-panel [data-assistant-ask] { flex-wrap:wrap; } .memory-organizer-photos { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.wish-extra-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 18px 16px}.wish-extra-actions .text-button{font-size:12px}.incoming-share-panel{margin:14px auto;padding:12px 18px;max-width:1120px;border:1px solid #dce4d0;border-radius:14px;background:#f2f5e9;display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:13px}.incoming-share-panel[hidden]{display:none}.incoming-share-panel span{flex:1;min-width:160px}.life-home-actions{flex-wrap:wrap}.life-home-actions [data-memory-radio],.life-home-actions [data-memory-games]{font-size:13px}.experience-list>header{flex-wrap:wrap}

.wish-interest-dialog{width:min(480px,calc(100vw - 28px));max-height:calc(100dvh - 32px);border:1px solid var(--line,#dce4d4);border-radius:22px;background:var(--paper,#fffdf7);color:var(--ink,#3c5147);padding:0;overflow:auto;box-shadow:0 18px 70px #263b2c26}
.wish-interest-dialog::backdrop{background:#263b2c55;backdrop-filter:blur(4px)}
.wish-interest-panel{padding:28px}.wish-interest-panel header{display:flex;gap:16px;align-items:start;justify-content:space-between}.wish-interest-panel h2{font-size:25px;margin:8px 0 20px}.wish-interest-panel h3{font-size:20px;line-height:1.6;overflow-wrap:anywhere;margin:0 0 12px}.wish-interest-intro{font-size:14px;line-height:1.9;color:var(--muted,#78846f)}
.wish-interest-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0 14px}.wish-interest-options button{border:1px solid var(--line,#dce4d4);background:transparent;color:inherit;min-height:46px;border-radius:13px;padding:10px 12px;font:inherit;cursor:pointer}.wish-interest-options button[aria-pressed=true]{background:#e8efdf;border-color:#8da17b}.wish-interest-options button:disabled{opacity:.6;cursor:wait}.wish-interest-panel small{display:block;color:var(--muted,#78846f);line-height:1.8;margin-bottom:15px}.wish-interest-match{padding:12px 14px;border-radius:12px;background:#edf2e7;font-size:14px}.wish-interest-error{color:#a5482d;font-size:14px;line-height:1.7}.wish-interest-trigger.is-matched{color:#526e40}
@media(max-width:480px){.wish-interest-panel{padding:22px}.wish-interest-options{gap:8px}}

.mobile-app-dialog {
  box-sizing: border-box;
  width: min(540px, calc(100% - 28px));
  max-width: calc(100% - 28px);
  max-height: calc(100vh - 36px);
  max-height: calc(100dvh - max(36px, env(safe-area-inset-top) + env(safe-area-inset-bottom)));
  padding: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  border: 1px solid #dce3d2;
  border-radius: 22px;
  background: #fffdf5;
  color: #415747;
  box-shadow: 0 24px 80px #25332730;
}
.auth-install-link { margin: 10px 0; text-align: center; font-size: 12px; }
.auth-install-link a,.mobile-install-guide { color:#6c7e67; text-underline-offset:4px; }
.mobile-install-guide { display:inline-block; padding:10px 0; font-size:14px; }
.mobile-app-dialog::backdrop { background: #25332755; }
.mobile-app-panel { padding: 0 24px 16px; overflow-wrap: anywhere; }
.mobile-app-panel .mobile-app-header {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin: 0 -24px;
  padding: 22px 24px 12px;
  background: #fffdf5;
  border-bottom: 1px solid #e5e9dc;
}
.mobile-app-header > div { min-width: 0; }
.mobile-app-header .close-button { flex: 0 0 auto; width: 44px; height: 44px; min-height: 44px; }
.mobile-app-panel h2 { margin: 6px 0 4px; font-size: 26px; line-height: 1.3; }
.mobile-app-panel h3 { font-size: 16px; margin: 0 0 10px; }
.mobile-app-panel p { line-height: 1.7; margin: 8px 0; }
.mobile-app-panel small { display: block; margin-top: 12px; color: #7d8775; line-height: 1.7; }
.mobile-app-section { padding: 18px 0; border-bottom: 1px solid #e5e9dc; }
.mobile-app-section:last-child { padding-bottom: 4px; border-bottom: 0; }
.mobile-app-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.mobile-app-actions button { padding: 10px 15px; min-height: 44px; max-width: 100%; white-space: normal; }
.mobile-app-status { padding: 12px 14px; border-radius: 12px; background: #edf2e5; font-size: 14px; overflow-wrap: anywhere; }
.mobile-app-status.is-error { background: #fbede3; color: #a34d31; }
.mobile-app-panel button:disabled { opacity: .55; cursor: wait; }
.mobile-app-help { font-size: 14px; color: #6c7e67; }
.mobile-app-panel ol { padding-left: 22px; line-height: 1.9; font-size: 14px; }
.mobile-app-verified { color: #52734d; }
.mobile-app-copy-label { display: block; margin-top: 12px; color: #6c7e67; font-size: 13px; }
.mobile-app-copy-url { display: block; box-sizing: border-box; width: 100%; min-width: 0; margin-top: 6px; padding: 10px; border: 1px solid #dce3d2; border-radius: 8px; background: #fffdf5; color: #415747; font-size: 16px; }
@media (max-width: 480px) {
  .mobile-app-dialog { width: calc(100% - 24px); max-width: calc(100% - 24px); border-radius: 18px; }
  .mobile-app-panel { padding: 0 18px 12px; }
  .mobile-app-panel .mobile-app-header { margin: 0 -18px; padding: 18px 18px 12px; }
  .mobile-app-panel h2 { font-size: 24px; }
  .mobile-app-actions button { flex: 1 1 auto; }
}

.little-world{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#b9d7d4;color:#294a43;overflow:hidden;font-family:inherit;overscroll-behavior:contain}
/* Short speech sits beside the characters; no message history is displayed. */
.world-speech,.world-peer-bubble{position:absolute;z-index:4;transform:translate(-50%,-100%);max-width:min(220px,65vw);padding:10px 14px;border:1px solid #fff9;border-radius:17px 17px 17px 5px;background:#fffaf1ef;color:#3e5948;box-shadow:0 5px 16px #274d3820;font:13px/1.6 system-ui,sans-serif;overflow-wrap:anywhere;white-space:pre-wrap;text-align:left}
.world-speech{pointer-events:none}.world-peer-bubble{min-width:44px;min-height:36px;border-radius:17px 17px 5px 17px;cursor:pointer;font-weight:500}.world-speech[hidden],.world-peer-bubble[hidden],.world-social-form[hidden]{display:none}
.world-social-form{position:absolute;z-index:5;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);box-sizing:border-box;width:min(380px,calc(100% - 32px));max-height:55dvh;overflow:auto;margin:0;padding:17px 18px 14px;border:1px solid #ffffffbf;border-radius:22px;background:#fffaf1f5;box-shadow:0 14px 44px #263b3733;color:#405d47;backdrop-filter:blur(12px)}
.world-social-form header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.world-social-form strong{font:500 16px/1.5 system-ui,sans-serif}.world-social-form [data-world-social-close]{width:32px;height:32px;border:0;border-radius:50%;background:#e9efdf;color:#577551;font:22px/1 system-ui,sans-serif}
.world-social-actions{display:flex;gap:8px;margin-bottom:13px}.world-social-actions button{flex:1;border:1px solid #d4dfc8;border-radius:13px;padding:10px 12px;background:#edf2e5;color:#4d6b50;font:13px/1.5 system-ui,sans-serif;min-height:40px}.world-social-compose{display:flex;gap:8px;align-items:center}.world-social-compose input{box-sizing:border-box;min-width:0;flex:1;width:100%;height:44px;margin:0;border:1px solid #cbd8c5;border-radius:12px;padding:9px 11px;background:#fffefa;color:#3e5948;font:16px/1.5 system-ui,sans-serif}.world-social-compose button{flex:none;min-height:44px;padding:9px 14px;border:0;border-radius:12px;background:#5f7e62;color:#fffdf3;font:13px/1.5 system-ui,sans-serif}.world-social-form p{font:12px/1.6 system-ui,sans-serif;margin:8px 0 0;color:#738267}.world-social-form p:empty{display:none}.world-social-form [data-world-social-error]{color:#9a6449}
@media(max-width:700px){.world-social-form{bottom:max(165px,calc(env(safe-area-inset-bottom) + 150px))}.world-speech,.world-peer-bubble{font-size:12px;max-width:min(180px,65vw)}}
@media(max-height:540px){.world-social-form{bottom:max(12px,env(safe-area-inset-bottom));max-height:calc(100dvh - 30px)}}
.little-world::backdrop{background:#294a43}.little-world[open]{display:block}.little-world canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;outline:none}
.little-world button{font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.little-world button:focus-visible{outline:3px solid #345d48;outline-offset:3px}.little-world button:disabled{cursor:default;opacity:.55}.little-world button:active{transform:translateY(1px)}
.world-header{position:absolute;z-index:2;top:max(24px,env(safe-area-inset-top));left:32px;right:32px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;pointer-events:none}.world-brand{filter:drop-shadow(0 2px 8px #fff9)}.world-eyebrow{font-size:10px;letter-spacing:2.6px;font-weight:700}.world-brand h2{margin:7px 0;font-size:32px;letter-spacing:3px;font-family:Georgia,'Songti SC',serif;font-weight:500}.world-brand h2 span{display:inline-block;font:11px/1.5 system-ui;letter-spacing:1px;background:#fff9;border:1px solid #fff8;border-radius:20px;padding:4px 10px;margin-left:12px;vertical-align:middle}.world-brand p{font-size:12px;margin:0;letter-spacing:1px}
.world-top-tools{display:flex;gap:8px;pointer-events:auto}.world-top-tools button{border:1px solid #ffffffa8;background:#fffdf0e3;color:#365349;border-radius:12px;padding:11px 15px;box-shadow:0 5px 20px #284e4220;backdrop-filter:blur(12px);font-size:12px}.world-top-tools [data-world-close]{font-size:25px;line-height:20px;min-width:44px}


.world-nearby{position:absolute;left:50%;transform:translateX(-50%);bottom:160px;width:min(440px,calc(100% - 380px));display:flex;align-items:center;gap:20px;padding:18px 22px;background:#fffdf1e8;border:1px solid #fff;border-radius:20px;box-shadow:0 12px 40px #33543b22;backdrop-filter:blur(14px)}.world-nearby h3{font-weight:500;font-size:18px;margin:6px 0}.world-nearby p{font-size:11px;line-height:1.6;margin:0;color:#71816c}.world-nearby button{flex-shrink:0;max-width:130px;border:0;background:#456a51;color:#fffdf2;padding:13px 16px;border-radius:12px;font-size:12px;line-height:1.5}.world-nearby .world-eyebrow{font-size:8px;color:#8a967a}
.world-controls{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:32px;right:32px;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none;gap:15px}.world-controls>*{pointer-events:auto}.world-dpad{display:grid;grid-template-columns:44px 44px 44px;grid-template-rows:44px 44px 44px;gap:4px;user-select:none}.world-dpad button{border:1px solid #fff9;background:#fffdf1cc;color:#36594a;border-radius:12px;font-size:22px;touch-action:none;box-shadow:0 4px 10px #264d3b12}.world-dpad button.is-held{background:#4f7558;color:white}.world-dpad [data-world-dir=up]{grid-area:1/2}.world-dpad [data-world-dir=left]{grid-area:2/1}.world-dpad [data-world-dir=right]{grid-area:2/3}.world-dpad [data-world-dir=down]{grid-area:3/2}.world-dpad>span{grid-area:2/2;align-self:center;text-align:center;color:#ffffffbb;font-size:24px;pointer-events:none}
.world-bottom-center{text-align:center}.world-build{display:flex;align-items:center;gap:6px;background:#fffdf1e8;border:1px solid white;padding:7px 9px;border-radius:15px;box-shadow:0 5px 20px #284e4220}.world-build button{padding:10px 12px;border:0;border-radius:9px;background:#e8eddd;color:#375643;font-size:12px;white-space:nowrap}.world-build small{font-size:10px;min-width:36px;color:#879478}.world-bottom-center>p{min-height:18px;font-size:11px;margin:10px 0 0;text-shadow:0 1px 10px #fffc;color:#2e5347}.world-jump{display:grid;place-items:center;gap:0;width:74px;height:74px;border:1px solid white;border-radius:50%;background:#f6efd9e8;color:#566644;box-shadow:0 5px 20px #284e4220;font-size:24px}.world-jump span{font-size:10px;margin-top:-15px}
.world-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#e7eddf;z-index:1;text-align:center;padding:35px}.world-loading[hidden]{display:none}.world-loading-cube{font-size:60px;color:#829e6e}.world-loading strong{font-size:20px;font-weight:500}.world-loading p{font-size:13px;line-height:1.8;max-width:300px;color:#748268}.world-loading button{border:0;border-radius:10px;padding:12px 20px;background:#46684d;color:white}
.little-world-trigger{display:inline-flex;align-items:center;gap:7px}.little-world-trigger::before{content:'◇';font-size:22px;color:#7e986c}
.little-world.is-night .world-brand{color:#f7f3e7;filter:drop-shadow(0 2px 6px #0b2035aa)}.little-world.is-night .world-brand h2 span{background:#253f51c9;border-color:#ffffff40}
.world-joystick{display:none;position:relative;flex-shrink:0;width:132px;height:132px;box-sizing:border-box;border:1px solid #fff9;border-radius:50%;background:radial-gradient(circle,#fffdf10d 0 37%,#fffdf134 38% 68%,#fffdf16e 69%);box-shadow:inset 0 0 24px #ffffff35,0 6px 24px #2349351a;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;isolation:isolate}.world-joystick.is-held{cursor:grabbing;background-color:#f4f9e917;border-color:#fff}.world-joystick-ring{position:absolute;inset:19%;border:1px dashed #fff8;border-radius:50%;pointer-events:none}.world-joystick-cross{position:absolute;inset:0;display:grid;place-items:center;font:200 52px/1 sans-serif;color:#ffffff2e;pointer-events:none}.world-joystick-thumb{position:absolute;left:28%;top:28%;width:44%;height:44%;display:grid;place-items:center;border:1px solid #fff8;box-sizing:border-box;border-radius:50%;color:#587852;background:linear-gradient(145deg,#fffdf0f0,#dce7cde8);box-shadow:0 4px 14px #254b3926,inset 0 1px 3px #fff;pointer-events:none;will-change:transform;transition:transform .12s ease-out}.world-joystick-thumb>span{font-size:21px;opacity:.8}.world-joystick.is-held .world-joystick-thumb{transition:none;background:linear-gradient(145deg,#fffef4,#d6e6c5);box-shadow:0 5px 18px #254b393b}.world-joystick-label{position:absolute;bottom:9px;left:0;right:0;text-align:center;font-size:9px;letter-spacing:1px;color:#385b49;pointer-events:none}.little-world.is-night .world-joystick-label{color:#f4f0db}
@media(max-width:700px),(any-pointer:coarse){.world-dpad{display:none}.world-joystick{display:block}}
@media(max-width:700px){.world-header{top:max(16px,env(safe-area-inset-top));left:16px;right:16px}.world-eyebrow{font-size:8px;letter-spacing:1.6px}.world-brand h2{font-size:25px;margin:5px 0}.world-brand h2 span{display:block;width:max-content;margin:7px 0;font-size:9px;padding:2px 7px}.world-brand p{display:none}.world-top-tools{gap:5px}.world-top-tools button{padding:8px 9px;font-size:10px;border-radius:10px}.world-top-tools [data-world-close]{min-width:36px;padding:8px}.world-nearby{bottom:215px;width:calc(100% - 32px);box-sizing:border-box;padding:13px 15px;gap:12px;border-radius:15px}.world-nearby h3{font-size:15px}.world-nearby p{font-size:10px}.world-nearby button{font-size:11px;max-width:110px;padding:10px 12px}.world-controls{bottom:max(18px,env(safe-area-inset-bottom));left:16px;right:16px;height:175px}.world-dpad{grid-template-columns:40px 40px 40px;grid-template-rows:40px 40px 40px;gap:3px}.world-dpad button{font-size:21px}.world-bottom-center{position:absolute;top:0;left:50%;transform:translateX(-50%);width:max-content}.world-build{padding:5px 7px;gap:5px}.world-build button{font-size:10px;padding:8px 10px}.world-build small{font-size:9px}.world-bottom-center>p{font-size:9px;margin-top:7px;max-width:260px}.world-jump{width:62px;height:62px}}
@media(max-height:540px) and (min-width:600px){.world-header{top:12px;left:18px;right:18px}.world-brand h2{font-size:24px}.world-brand p{display:none}.world-nearby{bottom:100px;max-width:360px;padding:12px 16px}.world-controls{bottom:12px;left:18px;right:18px}.world-dpad{grid-template-columns:32px 32px 32px;grid-template-rows:32px 32px 32px}.world-bottom-center>p{margin-top:5px}}

@media(max-width:700px){.world-joystick{width:120px;height:120px}.world-controls{height:185px}.world-nearby{bottom:225px}}
@media(max-height:540px) and (min-width:600px) and (any-pointer:coarse){.world-joystick{width:110px;height:110px}}

/* Compact walking mode: controls stay in the corners; an entry appears only nearby. */
.world-nearby{width:auto;max-width:calc(100% - 32px);padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none;bottom:155px}.world-nearby[hidden]{display:none}.world-nearby button{max-width:none;padding:11px 18px;background:#fff9e9;color:#293e31;border:1px solid #8b977f80;border-radius:24px;box-shadow:0 4px 18px #294c3a22;font-size:15px;font-weight:600}.world-controls{height:auto}.world-brand p{display:none}.world-connection{position:absolute;top:84px;right:32px;z-index:3;max-width:min(260px,calc(100% - 32px));pointer-events:none}[data-world-connection]{display:block;margin:8px 0;font-size:10px;color:#81643f;background:#fff9;border-radius:8px;padding:5px 8px}[data-world-connection][hidden]{display:none}[data-world-music]{min-width:36px}[data-world-music][aria-pressed=false]{opacity:.7}
@media(max-width:700px){.world-nearby{bottom:155px}.world-controls{height:auto}}
@media(max-height:540px) and (min-width:600px){.world-nearby{bottom:24px}}

@media(max-width:700px){.world-connection{top:105px;right:16px}}
@media(max-height:540px) and (min-width:600px){.world-connection{top:64px;right:18px}}

.little-world .world-peer-bubble:active{transform:translate(-50%,-100%)}

/* The island is the home; these are the little objects opened inside it. */
body.island-app {
  --paper: #f8f4e9;
  --card: #fffdf6;
  --ink: #344c3e;
  --muted: #71806b;
  --green: #63836a;
  --green-dark: #3e604b;
  --sage: #e9eedf;
  --line: #dedfcd;
  background: #c5d9d2;
  color: var(--ink);
}
body.island-app:not(.island-fallback) #appShell { visibility: hidden; }
body.island-app:not(.island-fallback) :is(#spaceNav, #mobileAddButton) { display: none !important; }
body.island-app .island-panel { visibility: visible; }

/* A few pocket-size controls, with no new navigation bar over the scenery. */
.little-world.is-primary { border-radius: 0; }
.little-world.is-primary .world-header { align-items: flex-start; }
.little-world.is-primary .world-brand { min-width: 0; }
.little-world.is-primary .world-eyebrow { display: block; white-space: nowrap; line-height: 1.6; }
.little-world.is-primary .world-brand h2 { white-space: nowrap; line-height: 1.25; }
.little-world.is-primary .world-top-tools { align-items: center; gap: 8px; flex: none; }
.little-world.is-primary .world-top-tools button {
  position: relative;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  min-width: 44px;
  padding: 0;
  border-radius: 15px;
  background: #fffdf0df;
  color: #425e4b;
  font: 400 21px/1 system-ui, sans-serif;
}
.little-world.is-primary [data-world-music] { font-size: 18px; }
.little-world.is-primary .world-shortcut > svg { display: block; width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.little-world.is-primary .world-phase { display: block; margin-top: 3px; color: #526e5a; text-shadow: 0 1px 9px #fff; font-size: 11px; line-height: 1.6; letter-spacing: .08em; white-space: nowrap; }
.little-world.is-primary.is-night .world-phase { color: #e4e9db; text-shadow: 0 1px 8px #173648; }
.world-mailbox-count { position: absolute; top: -4px; right: -4px; display: grid; place-items: center; min-width: 17px; height: 17px; box-sizing: border-box; padding: 0 4px; border: 1px solid #fff9; border-radius: 10px; background: #bb7967; color: #fffdf6; font: 600 10px/1 system-ui, sans-serif; font-variant-numeric: tabular-nums; box-shadow: 0 2px 5px #55332716; }
.world-mailbox-count[hidden] { display: none; }

/* A small paper task tag hangs with the title, leaving the island itself clear. */
.world-quest-board { position: relative; width: 194px; margin-top: 12px; pointer-events: auto; filter: none; }
.world-quest-open { position: relative; display: flex; align-items: center; gap: 9px; width: 100%; min-height: 65px; box-sizing: border-box; padding: 9px 25px 9px 11px; border: 1px solid #b7b992a8; border-bottom: 3px solid #b6a5849e; border-radius: 9px 16px 14px 9px; background: linear-gradient(115deg,#fffbeded,#edf1dce8); color: #435d46; box-shadow: 0 5px 12px #304b3215, inset 0 1px 0 #fff; text-align: left; }
.world-quest-open::before { content: ''; position: absolute; left: 11px; top: -5px; width: 5px; height: 11px; border-radius: 3px; background: #ac9875; box-shadow: 0 1px 1px #ffffff80 inset; transform: rotate(-12deg); }
.world-quest-seal { flex: none; display: grid; place-items: center; width: 31px; height: 36px; border-radius: 10px 10px 13px 13px; background: #dbe5c9ba; color: #6b8654; }
.world-quest-seal svg { width: 27px; height: 27px; }
.world-quest-copy { display: grid; min-width: 0; gap: 2px; }
.world-quest-copy small { color: #82906c; font: 500 9px/1.25 system-ui,sans-serif; letter-spacing: .08em; }
.world-quest-copy strong { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font: 500 12px/1.5 system-ui,sans-serif; }
.world-quest-copy > span { color: #7e876b; font: 400 9px/1.4 system-ui,sans-serif; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.world-quest-fold { position: absolute; right: 0; top: 0; bottom: 0; width: 24px; padding: 0; border: 0; border-radius: 0 14px 12px 0; background: transparent; color: #91a17f; display: grid; place-items: center; }
.world-quest-fold svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.world-quest-badge { position: absolute; right: 24px; top: -3px; width: 8px; height: 8px; border: 2px solid #fff9ed; background: #c87768; border-radius: 50%; box-shadow: 0 1px 4px #80513a24; }
.world-quest-badge[hidden] { display: none; }
.world-quest-board.is-ready .world-quest-copy > span { color: #9d773d; }
.world-quest-board.is-collapsed { width: 66px; }
.world-quest-board.is-collapsed .world-quest-open { min-height: 52px; padding: 7px 23px 7px 8px; }
.world-quest-board.is-collapsed .world-quest-copy { display: none; }
.world-quest-board.is-collapsed .world-quest-fold svg { transform: rotate(180deg); }
.world-quest-board.is-new-reward .world-quest-open { animation: world-quest-glimmer .8s ease-out 1; }
.little-world:is(.is-fishing,.is-layout) .world-quest-board { visibility: hidden; pointer-events: none; }
@keyframes world-quest-glimmer { 0%,100% { box-shadow: 0 5px 12px #304b3215, inset 0 1px 0 #fff; } 40% { box-shadow: 0 0 0 4px #f4dfaa64, 0 0 20px #ffe4a687, inset 0 0 16px #fff8cf; } }
@media (max-width:600px) { .little-world.is-primary .world-quest-board { grid-column: 1 / -1; grid-row: 4; width: 174px; margin-top: 9px; } .world-quest-open { min-height: 60px; padding: 7px 24px 7px 9px; gap: 7px; } .world-quest-copy strong { font-size: 11px; } .little-world.is-primary .world-quest-board.is-collapsed { width: 64px; } }
@media (max-height:550px) and (min-width:601px) { .world-quest-board { width: 177px; margin-top: 7px; } .world-quest-open { min-height: 55px; padding-top: 6px; padding-bottom: 6px; } .world-quest-copy small { display: none; } .world-quest-copy strong { font-size: 11px; } }
@media (prefers-reduced-motion:reduce) { .world-quest-board.is-new-reward .world-quest-open { animation: none; } }

/* A paper object floats over the same place where the player stopped. */
.island-panel {
  --island-accent: #6d8869;
  --island-soft: #ebefdf;
  position: fixed;
  inset: 0;
  width: min(1060px, calc(100vw - 72px));
  height: auto;
  max-width: none;
  max-height: min(920px, calc(100dvh - 64px));
  box-sizing: border-box;
  margin: auto;
  padding: 0;
  overflow: hidden;
  color: #344c3e;
  border: 1px solid #eee9d8;
  border-radius: 30px;
  background: #faf7ee;
  box-shadow: 0 28px 90px #182f2945, 0 3px 0 #9a97794a, inset 0 0 0 5px #fffdf6;
  font-family: var(--sans, system-ui, sans-serif);
  overscroll-behavior: contain;
}
.island-panel[open] { display: flex; flex-direction: column; }
.island-panel:not([open]) { display: none; }
.island-panel::backdrop { background: #243a3047; backdrop-filter: blur(5px); }
.island-panel[data-place="wishes"] { --island-accent: #738757; --island-soft: #e9efdc; }
.island-panel[data-place="anniversaries"] { --island-accent: #6b9398; --island-soft: #e6efed; }
.island-panel[data-place="photos"] { --island-accent: #aa8c72; --island-soft: #f0e7d8; }
.island-panel[data-place="notes"] { --island-accent: #aa8662; --island-soft: #f1e8d9; }
.island-panel[data-place="letters"] { --island-accent: #ae8a79; --island-soft: #f2e7dd; }
.island-panel-header {
  display: flex;
  flex: none;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 27px 34px 22px;
  border-bottom: 1px solid #dedecb8c;
  background: radial-gradient(ellipse at 6% 0, var(--island-soft), transparent 64%), #faf7ee;
}
.island-panel-header > div { min-width: 0; }
.island-panel-back { display: block; margin: 0 0 5px; padding: 3px 0; border: 0; background: transparent; color: #657b63; font: 500 12px/1.6 var(--sans, system-ui, sans-serif); cursor: pointer; }
.island-panel-back[hidden] { display: none; }
.island-panel-header:has(.island-panel-back:not([hidden])) .island-panel-kicker { display: none; }
.island-entry-tools { justify-content: center; }
.island-panel-kicker {
  display: block;
  margin: 0 0 5px;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.7;
  letter-spacing: .14em;
  color: #718269;
}
.island-panel-header h2 {
  margin: 0;
  font: 600 clamp(23px, 2.6vw, 30px)/1.45 var(--serif, serif);
  letter-spacing: .06em;
  color: #3d5744;
}
.island-panel-header p:not(.island-panel-kicker) { margin: 6px 0 0; color: #7a8370; font-size: 13px; line-height: 1.75; }
.island-panel-close {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid #cfd7bf;
  border-radius: 15px;
  background: #f2f4e8;
  color: #5c7156;
  font: 400 25px/1 system-ui, sans-serif;
  cursor: pointer;
  box-shadow: inset 0 1px 0 #fff;
}
.island-panel-close:hover { background: #e7eddc; }
.island-panel-tabs {
  display: flex;
  flex: none;
  gap: 7px;
  padding: 13px 34px;
  overflow-x: auto;
  scrollbar-width: thin;
  background: #f7f4e9;
  border-bottom: 1px solid #dedecb8c;
}
.island-panel-tabs:empty, .island-panel-tabs[hidden] { display: none; }
.island-panel-tabs button {
  flex: none;
  min-height: 40px;
  padding: 8px 17px;
  border: 1px solid transparent;
  border-radius: 13px;
  background: transparent;
  color: #71816b;
  font: 500 13px/1.6 var(--sans, sans-serif);
  white-space: nowrap;
  cursor: pointer;
}
.island-panel-tabs button:is([aria-selected="true"], [aria-pressed="true"], [aria-current="page"], .active, .is-active, .is-selected) {
  background: var(--island-soft);
  color: #405b45;
  border-color: #d5ddc8;
  box-shadow: inset 0 1px 0 #fff9;
}
.island-panel-body {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 26px 34px 32px;
  scrollbar-width: thin;
  scrollbar-color: #b8c6a7 #f6f3e8;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
}
.island-panel-body > :first-child { margin-top: 0; }
.island-panel-body > :last-child { margin-bottom: 0; }
.island-panel button { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.island-panel :is(button, a, input, textarea, select):focus-visible { outline: 2px solid #648360; outline-offset: 3px; }
.island-panel :is(button, a) { -webkit-user-drag: none; }
.island-panel button:disabled { opacity: .55; cursor: default; }
.island-panel-error { padding: 15px 17px; border: 1px solid #e2c6ac; border-radius: 16px; color: #8f6146; background: #fbefe3; font-size: 13px; line-height: 1.8; }
.island-panel-error:empty, .island-panel-error[hidden] { display: none; }

/* The cottage opens into a shelf of familiar objects, not another dashboard. */
.island-account-line { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 22px; color: #718167; font-size: 12px; line-height: 1.8; }
.island-account-line strong { color: #4d6749; font-weight: 600; }
.island-account-line:last-child { justify-content: center; margin: 18px 0 0; font-size: 10px; }
.island-account-line a { color: #839077; text-decoration: none; }
.island-account-line a:hover { color: #4d6749; text-decoration: underline; }
.island-room-hub, .island-map-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.island-object {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  min-width: 0;
  min-height: 183px;
  padding: 24px 21px 21px;
  overflow: hidden;
  border: 1px solid #dedfcd;
  border-radius: 23px;
  background: linear-gradient(135deg, #fffdf6, #f4f2e7);
  color: #405a45;
  text-align: left;
  font: inherit;
  cursor: pointer;
  box-shadow: inset 0 2px 0 #fff, 0 4px 0 #dadac647, 0 10px 22px #63735008;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.island-object::after { content: "↗"; position: absolute; top: 23px; right: 20px; color: #9aab8c; font: 400 17px/1 system-ui, sans-serif; }
.island-object-icon { display: grid; place-items: center; width: 64px; height: 60px; margin-bottom: 5px; border-radius: 22px 25px 20px 24px; background: #eaf0dd; color: #718b5e; }
.island-object-icon svg { display: block; width: 42px; height: 42px; overflow: visible; }
.island-object:nth-child(3n + 2) .island-object-icon { background: #f3e9d6; color: #a28763; }
.island-object:nth-child(3n) .island-object-icon { background: #e5eeeb; color: #76958b; }
.island-object-label { display: block; font: 600 18px/1.5 var(--serif, serif); letter-spacing: .035em; overflow-wrap: anywhere; }
.island-object-note { display: block; color: #7b8571; font-size: 12px; font-weight: 400; line-height: 1.8; overflow-wrap: anywhere; }
.island-object:hover { transform: translateY(-2px); border-color: #b9c9a7; box-shadow: inset 0 2px 0 #fff, 0 5px 0 #dadac647, 0 13px 26px #63735012; }
.island-object:active { transform: translateY(1px); }
.island-room-tools { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px 16px; padding: 21px 0 0; margin-top: 26px; border-top: 1px solid #dedfce; }
.island-room-tools button { min-height: 40px; padding: 7px 9px; border: 0; background: transparent; color: #71816b; font: 400 12px/1.6 var(--sans, sans-serif); cursor: pointer; }
.island-room-tools button:hover { color: #39563f; }

/* Reuse the original records and editors in the island's paper language. */
.island-panel :is(#lifeRoot, #memoriesRoot, #wishPage, #activityPanel) { visibility: visible; min-width: 0; }
.island-panel #wishPage > .hero,
.island-panel :is(.memory-hub-heading, .memory-hub-tabs, .memory-hub-intro) { display: none; }
.island-panel :is(#memoriesRoot, .life-page) { padding-top: 0; }
.island-panel .life-page { animation: none; }
.island-panel :is(.life-eyebrow, .capsule-kicker, .memory-browse-eyebrow, .activity-kicker) { font-size: 9px; color: #7c8c71; letter-spacing: .13em; }
.island-panel :is(.life-page-header, .keepsake-heading, .capsule-heading, .memory-browse-heading) { margin: 0 0 22px; gap: 18px; }
.island-panel :is(.life-page-header, .keepsake-heading, .capsule-heading, .memory-browse-heading) :is(h1, h2) { font: 600 25px/1.5 var(--serif, serif); letter-spacing: .03em; color: #405b43; }
.island-panel :is(.life-page-header, .keepsake-heading, .capsule-heading, .memory-browse-heading) p { color: #73816a; font-size: 13px; line-height: 1.8; }
.island-panel :is(.primary-button, .secondary-button) { min-height: 43px; border-radius: 13px; font-size: 13px; }
.island-panel .primary-button { background: #648466; border: 1px solid #59775b; box-shadow: inset 0 1px 0 #ffffff26, 0 3px 0 #48684c24; }
.island-panel .secondary-button { background: #f5f3e7; border-color: #cdd6be; color: #58704e; }
.island-panel :is(.text-button, .edit-button) { min-height: 38px; }
.island-panel :is(.wish-card, .life-card, .keepsake-card, .fragment-card, .personal-card, .memory-day-card) { border-color: #dedfcd; border-radius: 20px; background-color: #fffdf5; box-shadow: 0 3px 0 #d6d7c53d, 0 9px 21px #59674407; }
.island-panel :is(.wish-card, .fragment-card) { padding: 21px 22px; }
.island-panel .wish-card.done { background: #f0f4e7; border-color: #d2ddc3; }
.island-panel .wish-description-block { border-radius: 12px; }
.island-panel .wish-title { font-size: 19px; line-height: 1.6; }
.island-panel .category-tag { border-radius: 9px; }
.island-panel .wish-overview { margin: 0 0 24px; }
.island-panel .wish-stats { border-radius: 18px; background: #f0f2e6; }
.island-panel .stat-item dd strong { color: #617d51; }
.island-panel .progress-panel { background: #fbfaf0; border-radius: 18px; }
.island-panel .toolbar { flex-wrap: wrap; gap: 12px; }
.island-panel .toolbar .search-wrap { flex: 1 1 210px; min-width: 0; }
.island-panel .category-nav { margin-bottom: 0; }
.island-panel .category-btn { border-radius: 13px; }
.island-panel .section-head { margin-top: 22px; }
.island-panel .section-heading { font-size: 23px; }
.island-panel .life-photo-card { padding: 10px 10px 17px; border-radius: 17px; background: #fffdf7; }
.island-panel .life-photo-open { border-radius: 10px; }
.island-panel :is(.life-card-content h3, .keepsake-card h3, .fragment-title) { color: #425a43; font-size: 20px; line-height: 1.6; }
.island-panel .life-card-content { padding: 14px 9px 0; }
.island-panel .photo-month-group > header { border-bottom-color: #dbdfcc; }
.island-panel :is(.photo-view-tabs, .anniversary-view-tabs, .fragment-filter, .keepsake-categories) { gap: 7px; }
.island-panel .fragment-composer { border-radius: 20px; background: #f3f1e5; border-color: #d9ddc7; }
.island-panel .fragment-card-header { gap: 9px; }
.island-panel .fragment-tag { border-radius: 9px; }
.island-panel .fragment-body { color: #5f715a; }
.island-panel .fragment-comment { background: #f5f5ea; border-radius: 12px; }
.island-panel .fragment-actions { border-color: #e4e4d5; }
.island-panel .capsule-envelope { border-radius: 8px 8px 21px 21px; border-color: #e1d9c8; background: #fffaf0; box-shadow: 0 4px 0 #ded4bd39, 0 10px 24px #7e685509; }
.island-panel .capsule-envelope::before { height: 6px; opacity: .85; background: repeating-linear-gradient(120deg, #b2c5a2 0 15px, #fffaf0 15px 30px, #dcbdaa 30px 45px, #fffaf0 45px 60px); }
.island-panel .capsule-envelope.is-ready { background: #f7f9ef; border-color: #ceddbf; }
.island-panel .capsule-stamp { border-color: #b7c5a6; border-radius: 7px; background: #edf1e3; color: #79916b; }
.island-panel .capsule-boxes button { min-height: 44px; }
.island-panel .capsule-unlock { font-size: 13px; color: #6e7b61; }
.island-panel .memory-calendar { border-radius: 21px; border-color: #d7dec9; background: #fffdf5; box-shadow: 0 4px 0 #d3d8c33d; }
.island-panel .memory-calendar-grid button { border-radius: 12px; }
.island-panel .memory-calendar-grid button.is-selected { color: #33553c; background: #dde9ce; border-color: #a5ba91; }
.island-panel #activityPanel { margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
.island-panel .activity-heading { align-items: center; margin: 0 0 20px; }
.island-panel .activity-heading h2 { color: #425e47; font: 600 22px/1.5 var(--serif, serif); }
.island-panel .activity-list { gap: 10px; }
.island-panel .activity-item { padding: 18px 20px; border-radius: 17px; background: #fffdf5; border-color: #dedfce; box-shadow: 0 2px 0 #d7d7c238; }
.island-panel .activity-item-title { font-size: 15px; line-height: 1.75; color: #4b6349; }
.island-panel .activity-item-meta { color: #7c8972; font-size: 11px; }
.island-panel :is(.life-empty, .keepsake-empty, .capsule-empty, .memory-browse-empty, .activity-empty) { border-radius: 20px; border-color: #d3ddc3; color: #738168; background: linear-gradient(145deg, #f3f5e8, #fbf8ed); }
.island-panel :is(.life-empty, .keepsake-empty, .capsule-empty) { min-height: 200px; padding: 34px 24px; }
.island-panel .activity-empty { padding: 30px 22px; line-height: 1.9; }

/* Existing edit dialogs remain actual dialogs above the island sheet. */
body.island-app dialog:not(.little-world):not(.island-panel) { border-color: #dce0cb; border-radius: 24px; color: #425940; background-color: #fffaf0; box-shadow: 0 25px 90px #2435284d; }
body.island-app dialog:not(.little-world):not(.island-panel)::backdrop { background: #263b314f; backdrop-filter: blur(5px); }
body.island-app .dialog-header { background: #f0f3e5; border-bottom-color: #dce1cd; }
body.island-app .dialog-header h2 { color: #405c42; }
body.island-app dialog:not(.little-world) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), textarea, select) { border-color: #d5ddc8; border-radius: 12px; background-color: #fffdf7; color: #42583e; }
body.island-app dialog:not(.little-world) :is(input, textarea, select):focus { border-color: #88a175; }
body.island-app dialog:not(.little-world) .close-button { min-width: 40px; min-height: 40px; border-radius: 13px; background: #edf1e2; color: #607752; }

/* A quiet illustrated arrival, before the authenticated island is loaded. */
body:is(.island-entry, .island-app) .auth-gate { background: radial-gradient(ellipse at 21% 17%, #fbf5dfbd 0, transparent 47%), linear-gradient(155deg, #d6e7e0 0%, #e9ead8 55%, #f1e8d2 100%); }
body:is(.island-entry, .island-app) .auth-card { border: 1px solid #fff9; border-radius: 30px; background: #fffaf1e8; box-shadow: 0 24px 80px #4b665924, inset 0 0 0 5px #fffef680; }
body:is(.island-entry, .island-app) .auth-art { background: linear-gradient(155deg, #e6ebd8, #f3ead7); }
body:is(.island-entry, .island-app) .auth-mark { border-radius: 18px; color: #698762; background: #edf2e3; }
body:is(.island-entry, .island-app) .auth-content h1 { color: #405e46; }
body:is(.island-entry, .island-app) .login-submit { border-radius: 14px; background: #668768; box-shadow: inset 0 1px 0 #fff3, 0 4px 0 #4f715528; }

@media (max-width: 820px) {
  .island-panel { width: calc(100vw - 36px); max-height: calc(100dvh - 36px); border-radius: 25px; }
  .island-panel-header { padding: 23px 25px 19px; }
  .island-panel-tabs { padding: 11px 25px; }
  .island-panel-body { padding: 23px 25px 27px; }
  .island-room-hub, .island-map-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .island-panel .memory-calendar-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  /* Give the English line its own row; the buttons cannot squeeze it into
     wrapping, and the phase follows the title instead of a fixed top offset. */
  .little-world.is-primary .world-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; row-gap: 3px; }
  .little-world.is-primary .world-brand { display: contents; }
  .little-world.is-primary .world-eyebrow { grid-column: 1 / -1; grid-row: 1; margin-bottom: 7px; font-size: 8px; letter-spacing: 1.6px; }
  .little-world.is-primary .world-brand h2 { grid-column: 1; grid-row: 2; margin: 0; font-size: clamp(22px, 6.7vw, 26px); letter-spacing: 2px; }
  .little-world.is-primary .world-top-tools { grid-column: 2; grid-row: 2 / 4; align-self: start; gap: 5px; }
  .little-world.is-primary .world-top-tools button { width: 40px; height: 42px; min-width: 40px; border-radius: 14px; font-size: 20px; }
  .little-world.is-primary .world-phase { grid-column: 1; grid-row: 3; margin: 0; font-size: 10px; }
  .little-world.is-primary [data-world-music] { font-size: 17px; }
  .island-panel { inset: auto 0 0; width: 100%; max-height: calc(100dvh - max(16px, env(safe-area-inset-top))); margin: 0; border-width: 1px 0 0; border-radius: 25px 25px 0 0; }
  .island-panel-header { padding: 21px max(18px, env(safe-area-inset-right)) 16px max(18px, env(safe-area-inset-left)); gap: 13px; }
  .island-panel-header h2 { font-size: 24px; }
  .island-panel-header p:not(.island-panel-kicker) { font-size: 12px; margin-top: 4px; }
  .island-panel-kicker { font-size: 9px; }
  .island-panel-close { width: 44px; height: 44px; border-radius: 14px; }
  .island-panel-tabs { padding: 10px 18px; gap: 5px; }
  .island-panel-tabs button { min-height: 41px; padding: 8px 14px; font-size: 13px; }
  .island-panel-body { padding: 21px max(16px, env(safe-area-inset-right)) max(24px, calc(env(safe-area-inset-bottom) + 14px)) max(16px, env(safe-area-inset-left)); }
  .island-account-line { margin-bottom: 17px; }
  .island-room-hub, .island-map-grid { gap: 12px; }
  .island-object { min-height: 170px; padding: 18px 15px 16px; gap: 7px; border-radius: 19px; }
  .island-object::after { top: 19px; right: 14px; font-size: 15px; }
  .island-object-icon { width: 56px; height: 53px; border-radius: 19px; }
  .island-object-icon svg { width: 37px; height: 37px; }
  .island-object-label { font-size: 17px; }
  .island-object-note { font-size: 11px; line-height: 1.75; }
  .island-room-tools { margin-top: 21px; padding-top: 15px; gap: 5px 8px; }
  .island-room-tools button { min-height: 42px; padding-inline: 7px; }
  .island-panel :is(.life-page-header, .keepsake-heading, .capsule-heading, .memory-browse-heading) { flex-wrap: wrap; margin-bottom: 19px; gap: 13px; }
  .island-panel :is(.life-page-header, .keepsake-heading, .capsule-heading, .memory-browse-heading) :is(h1, h2) { font-size: 23px; }
  .island-panel :is(.life-page-header, .keepsake-heading, .capsule-heading, .memory-browse-heading) p { font-size: 12px; }
  .island-panel :is(.grid, .life-card-grid, .keepsake-grid) { grid-template-columns: minmax(0, 1fr); }
  .island-panel :is(.wish-card, .fragment-card) { padding: 18px 17px; border-radius: 17px; }
  .island-panel .life-photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .island-panel .life-photo-card { padding: 7px 7px 13px; }
  .island-panel .life-photo-open { min-height: 0; }
  .island-panel .life-photo-card .life-card-content { padding: 9px 4px 0; }
  .island-panel .life-photo-card .life-card-content h3 { font-size: 16px; }
  .island-panel .life-photo-card .life-body { font-size: 12px; }
  .island-panel .life-photo-card .life-card-top { flex-wrap: wrap; gap: 3px; }
  .island-panel .wish-overview { margin-bottom: 19px; }
  .island-panel .wish-categories { margin-bottom: 17px; }
  .island-panel .wish-categories .category-area { flex-wrap: wrap; gap: 4px; }
  .island-panel .wish-categories .category-nav { flex-basis: 100%; }
  .island-panel .toolbar .search-wrap { flex-basis: 100%; }
  .island-panel .section-head { flex-wrap: wrap; gap: 12px; }
  .island-panel .section-heading { font-size: 21px; }
  .island-panel .activity-heading { align-items: flex-start; gap: 10px; flex-wrap: wrap; }
  .island-panel .activity-heading h2 { font-size: 20px; }
  .island-panel .activity-item { padding: 16px; }
  .island-panel .activity-item-title { font-size: 14px; }
  .island-panel .capsule-envelope { padding: 21px; }
  .island-panel .capsule-boxes { gap: 22px; }
  .island-panel .memory-calendar { padding: 19px 11px 12px; border-radius: 17px; }
  .island-panel .memory-calendar-grid { gap: 3px; }
  .island-panel .memory-calendar-grid button { min-height: 53px; font-size: 13px; }
  .island-panel .fragment-author { min-width: 0; }
  body.island-app dialog:not(.little-world):not(.island-panel) { max-height: calc(100dvh - 24px); border-radius: 20px; }
  body.island-app dialog:not(.little-world) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), textarea, select) { font-size: 16px; }
  body:is(.island-entry, .island-app) .auth-card { border-radius: 24px; }
}
@media (max-height: 550px) and (min-width: 601px) {
  .island-panel { max-height: calc(100dvh - 18px); width: min(1060px, calc(100vw - 36px)); border-radius: 20px; }
  .island-panel-header { padding: 13px 23px; }
  .island-panel-header h2 { font-size: 23px; }
  .island-panel-tabs { padding: 7px 23px; }
  .island-panel-body { padding: 19px 23px; }
  .island-panel-header p:not(.island-panel-kicker) { display: none; }
  .island-panel .island-object { min-height: 155px; }
}
@media (prefers-reduced-motion: reduce) {
  .island-object { transition: none; }
  .island-object:hover, .island-object:active { transform: none; }
  .island-panel { scroll-behavior: auto; }
}

/* A small illustrated fishing nook. The collection is shared, never a leaderboard. */
.fishing-dialog { width: min(760px, calc(100vw - 36px)); max-width: none; padding: 0; max-height: calc(100dvh - 36px); overflow: hidden; color: #3d5b51; background: #fbf8ed; border: 1px solid #d4dfcb; border-radius: 26px; }
.fishing-dialog[open] { display: flex; flex-direction: column; }
.fishing-dialog::backdrop { background: #1f393854; backdrop-filter: blur(6px); }
.fishing-dialog .dialog-header { flex: none; padding: 23px 28px 19px; background: linear-gradient(120deg, #e9efe0, #f6f3e6); }
.fishing-dialog .dialog-header h2 { margin: 3px 0 0; color: #3e5b50; font-size: 26px; }
.fishing-dialog .life-eyebrow { color: #7e9783; font-size: 9px; letter-spacing: .18em; }
.fishing-tabs { display: flex; gap: 10px; flex: none; padding: 12px 28px; border-bottom: 1px solid #dce2d0; background: #f9f6eb; }
.fishing-tabs button { min-height: 42px; padding: 8px 15px; border: 1px solid transparent; border-radius: 13px; color: #789180; background: transparent; font: inherit; font-size: 13px; cursor: pointer; }
.fishing-tabs button[aria-pressed=true] { background: #e5ecdd; border-color: #d4dfc7; color: #45634f; }
.fishing-tabs button span { font-size: 11px; margin-left: 7px; }
.fishing-body { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 24px 28px 28px; }
.fishing-spot { position: relative; overflow: hidden; border-radius: 23px; background: linear-gradient(#ecf2df, #e7efdd); }
.fishing-shore-art { display: block; width: 100%; height: auto; }
.fishing-fish-art { display: block; width: 100%; height: auto; overflow: visible; }
.fishing-catch-art { width: min(260px, 75%); margin: 0 auto; padding: 8px 0; }
.fishing-spot.has-catch { background: radial-gradient(ellipse at center, #f7edcb, #e5ecdc); }
.fishing-result { text-align: center; margin: 21px auto 14px; max-width: 440px; }
.fishing-result-kicker { color: #8c9b7f; font-size: 10px; letter-spacing: .12em; line-height: 1.7; margin: 0 0 7px; }
.fishing-result h3, .fishing-detail h3 { margin: 0 0 8px; font: 500 27px/1.5 var(--serif, serif); color: #48624e; }
.fishing-result > p:last-child { color: #83917b; font-size: 13px; line-height: 1.8; margin: 0; }
.fishing-main-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; }
.fishing-button { min-height: 44px; padding: 11px 26px; border: 1px solid #708e75; border-radius: 15px; background: #789780; color: #fffdf1; font: inherit; font-size: 13px; cursor: pointer; box-shadow: inset 0 1px 0 #fff3, 0 3px 0 #536f5b18; }
.fishing-button:disabled { cursor: default; color: #607c66; background: #dbe6d5; border-color: #ccd9c5; }
.fishing-main-actions .fishing-button + .fishing-button { background: #f4f1e4; border-color: #d3dbc6; color: #6d8162; }
.fishing-footnote { text-align: center; font-size: 10px; color: #95a08b; line-height: 1.8; margin: 12px 0 0; }
.fishing-tides { margin-top: 25px; padding: 15px 17px; border: 1px solid #dce2d0; border-radius: 16px; background: #f3f4e8; }
.fishing-tides summary { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 12px; color: #698169; cursor: pointer; list-style: none; min-height: 24px; }
.fishing-tides summary::-webkit-details-marker { display: none; }
.fishing-tides summary > span { color: #97a78c; }
.fishing-tides[open] summary > span { transform: rotate(45deg); }
.fishing-tides p { font-size: 11px; color: #8b9681; line-height: 1.85; margin: 11px 0 0; }
.fishing-tides ul { padding: 0; margin: 12px 0 0; list-style: none; }
.fishing-tides li { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; color: #8e9b83; font-size: 12px; }
.fishing-tides li small { font-size: 10px; }
.fishing-tides li.is-active { color: #507b61; }
.fishing-tides li.is-active small { background: #dce9cf; padding: 0 6px; border-radius: 5px; }
.fishing-book-heading { display: flex; justify-content: space-between; gap: 12px; align-items: center; margin: 0 0 20px; }
.fishing-book-heading h3 { font: 500 22px/1.5 var(--serif, serif); margin: 0 0 4px; color: #48624e; }
.fishing-book-heading p { margin: 0; color: #8b9981; font-size: 12px; line-height: 1.7; }
.fishing-book-heading > strong { font: 500 29px/1.4 var(--serif, serif); color: #78906c; white-space: nowrap; }
.fishing-book-heading > strong span { font: 400 13px/1.5 system-ui, sans-serif; color: #98a58e; }
.fishing-book-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; }
.fishing-species { position: relative; min-width: 0; padding: 13px 11px 15px; border: 1px solid #dce2cf; border-radius: 19px; background: #f3f4e8; color: #839579; text-align: center; font: inherit; cursor: pointer; }
.fishing-species.is-unlocked { background: #fffcf2; border-color: #d8ddc8; box-shadow: 0 3px 0 #e1e3d366; color: #5f785f; }
.fishing-species .fishing-number { position: absolute; left: 12px; top: 10px; color: #a1ad95; font-size: 9px; letter-spacing: .12em; }
.fishing-species .fishing-time-mark { position: absolute; right: 11px; top: 8px; color: #9aac8e; font-size: 15px; }
.fishing-species .fishing-fish-art { margin: 0 auto 1px; }
.fishing-species > strong { display: block; font-size: 13px; font-weight: 500; line-height: 1.8; }
.fishing-species > small { display: block; margin-top: 3px; color: #9ba68e; font-size: 10px; line-height: 1.6; }
.fishing-detail { text-align: center; max-width: 470px; margin: auto; }
.fishing-back { display: block; padding: 8px 0; margin-bottom: 3px; min-height: 40px; border: 0; background: transparent; color: #7e9274; font: inherit; font-size: 12px; cursor: pointer; }
.fishing-detail-art { width: min(290px,90%); margin: auto; border-radius: 50%; background: radial-gradient(ellipse,#edf1df,transparent 66%); }
.fishing-detail > p:not(.fishing-result-kicker):not(.fishing-availability) { font-size: 13px; color: #84937a; line-height: 1.9; }
.fishing-detail dl { text-align: left; padding: 9px 20px; margin: 25px 0 15px; border: 1px solid #dce3d1; border-radius: 17px; background: #f3f5e8; }
.fishing-detail dl > div { padding: 12px 0; display: grid; grid-template-columns: 84px minmax(0,1fr); gap: 8px; }
.fishing-detail dt { font-size: 12px; color: #94a187; }
.fishing-detail dd { margin: 0; color: #6f8567; font-size: 12px; line-height: 1.7; }
.fishing-detail dd small { display: block; font-size: 10px; color: #98a78d; margin-top: 3px; }
.fishing-availability { color: #a5ac99; font-size: 11px; }
.fishing-availability.is-available { color: #7b9973; }
.fishing-error { font-size: 12px; padding: 12px 15px; color: #946d4e; background: #faeddd; border-radius: 12px; border: 1px solid #e8d5bb; line-height: 1.8; }
.fishing-dialog button:focus-visible, .fishing-dialog summary:focus-visible { outline: 2px solid #66896d; outline-offset: 3px; }
.is-casting .fishing-bobber { transform-origin: 377px 160px; animation: fishing-bob 1.5s ease-in-out infinite; }
.is-casting .fishing-rod { transform-origin: 90px 195px; animation: fishing-rod 2.5s ease-in-out infinite; }
.fishing-water-ring { display: none; }
@keyframes fishing-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(4px); } }
@keyframes fishing-rod { 0%,100% { transform: rotate(0); } 50% { transform: rotate(.7deg); } }
@media(max-width:600px) {
  .fishing-dialog { inset: auto 0 0; width: 100%; max-height: calc(100dvh - max(12px,env(safe-area-inset-top))); margin: 0; border-radius: 24px 24px 0 0; }
  .fishing-dialog .dialog-header { padding: 20px 20px 16px; }
  .fishing-tabs { padding: 10px 18px; gap: 6px; }
  .fishing-tabs button { padding: 8px 12px; font-size: 12px; }
  .fishing-body { padding: 19px max(16px,env(safe-area-inset-right)) max(24px,calc(env(safe-area-inset-bottom) + 12px)) max(16px,env(safe-area-inset-left)); }
  .fishing-spot { border-radius: 19px; }
  .fishing-result h3 { font-size: 25px; }
  .fishing-book-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px; }
  .fishing-species { padding: 11px 8px 14px; border-radius: 16px; }
  .fishing-detail dl { padding: 8px 14px; }
  .fishing-detail dl > div { grid-template-columns: 75px minmax(0,1fr); }
}
@media(max-height:500px) and (min-width:601px) {
  .fishing-dialog { max-height: calc(100dvh - 18px); }
  .fishing-dialog .dialog-header { padding: 12px 23px; }
  .fishing-tabs { padding-block: 6px; }
  .fishing-catch-art { width: 195px; }
  .fishing-shore-art { max-height: 180px; }
}
@media(prefers-reduced-motion:reduce) { .is-casting .fishing-bobber, .is-casting .fishing-rod { animation: none; } }
/* Fishing stays in the live world; only the illustrated collection is a dialog. */
.little-world.is-fishing .world-controls,
.little-world.is-fishing .world-nearby,
.little-world.is-fishing .world-peer-bubble,
.little-world.is-fishing .world-social-form { display: none !important; }
.fishing-hud { position: absolute; z-index: 8; bottom: max(24px,env(safe-area-inset-bottom)); right: max(24px,env(safe-area-inset-right)); width: min(330px,calc(100% - 32px)); box-sizing: border-box; padding: 16px 18px; border: 1px solid #ffffeead; border-radius: 23px; background: #fbf9edeb; color: #38584f; box-shadow: 0 8px 32px #203f3a1c; backdrop-filter: blur(12px); }
.fishing-hud-copy { display: flex; align-items: center; gap: 10px; min-width: 0; }
.fishing-hud-copy strong { font: 500 19px/1.5 var(--serif,serif); }
.fishing-hud-copy p { font-size: 12px; line-height: 1.6; margin: 3px 0 0; color: #6a8175; }
.fishing-hud-fish { width: 76px; padding: 0; flex: none; border: 0; background: transparent; cursor: pointer; }
.fishing-hud-actions { display: flex; gap: 7px; margin-top: 13px; }
.fishing-hud .fishing-button { min-width: 0; min-height: 42px; padding: 9px 14px; font-size: 12px; border-radius: 13px; }
.fishing-hud .fishing-button:first-child { flex: 1; }
.fishing-hud .fishing-button:not(:first-child) { color: #566f60; border-color: #dae1ce; background: #f4f3e8; box-shadow: none; }
.fishing-hud .fishing-error { margin: 8px 0 0; padding: 8px 10px; }
.fishing-hud[data-phase="bite"] { border-color: #c6e6cd; }
.fishing-hud[data-phase="bite"] .fishing-button:first-child { color: #fffdf1; background: #4f8264; }
.fishing-reel-window { display: block; height: 3px; border-radius: 3px; background: #7da388; margin-top: 10px; transform-origin: left; animation: fishing-reel-window var(--reel-remaining) linear forwards; }
@keyframes fishing-reel-window { from { transform: scaleX(1); } to { transform: scaleX(0); } }
.fishing-hud button:focus-visible { outline: 2px solid #4a7759; outline-offset: 3px; }
@media(max-width:600px) { .fishing-hud { right: max(16px,env(safe-area-inset-right)); bottom: max(16px,env(safe-area-inset-bottom)); padding: 13px 15px; } }
@media(max-height:500px) { .fishing-hud { padding: 11px 14px; right: max(16px,env(safe-area-inset-right)); bottom: max(12px,env(safe-area-inset-bottom)); width: 305px; } .fishing-hud-actions { margin-top: 9px; } }
/* Vegetable bait and a shared fish basket stay inside the existing shore dialog. */
.fishing-dialog-tools { display:flex; align-items:center; gap:14px; min-width:0; }
.fishing-coins { display:grid; gap:2px; text-align:right; color:#947747; font-variant-numeric:tabular-nums; }
.fishing-coins strong { font-size:17px; font-weight:600; overflow-wrap:anywhere; }
.fishing-coins small { font-size:10px; white-space:nowrap; }
.fishing-tabs { align-items:center; }
.fishing-tabs .fishing-refresh { margin-left:auto; font-size:21px; padding-inline:12px; }
.fishing-bait-pill { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:34px; margin-top:9px; padding:6px 10px; border:1px solid #d6dfcc; border-radius:10px; color:#627b65; background:#f3f5e9; font:inherit; font-size:11px; text-align:left; cursor:pointer; }
.fishing-bait-pill:disabled { opacity:.65; cursor:default; }
.fishing-bait-pill > span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fishing-notice { margin:0 0 18px; padding:12px 15px; background:#e9efdf; border:1px solid #d5e0c8; border-radius:13px; color:#587552; font-size:12px; line-height:1.8; }
.fishing-error .fishing-button { display:block; margin-top:10px; min-height:40px; padding:8px 14px; }
.fishing-basket-list { display:grid; gap:13px; }
.fishing-basket-row { display:flex; gap:16px; align-items:center; padding:15px; background:#fffdf4; border:1px solid #d9e1cc; border-radius:18px; }
.fishing-basket-art { flex:none; width:108px; }
.fishing-basket-copy { flex:1; min-width:0; }
.fishing-basket-copy h4,.fishing-bait-card h4 { margin:0; font:500 17px/1.6 var(--serif,serif); color:#4c6953; }
.fishing-basket-copy > p { margin:5px 0 10px; font-size:11px; line-height:1.7; color:#839279; }
.fishing-economy-actions { display:flex; flex-wrap:wrap; gap:8px; }
.fishing-economy-actions .fishing-button { flex:1 1 auto; padding:9px 12px; font-size:12px; min-width:0; min-height:42px; }
.fishing-economy-actions .fishing-button + .fishing-button { color:#648064; background:#f0f3e6; border-color:#cfdbc4; box-shadow:none; }
.fishing-economy-actions .fishing-button:disabled { color:#8b9a80; background:#e9edde; border-color:#dbe2cf; }
.fishing-empty { display:grid; justify-items:center; padding:36px 15px; border:1px dashed #d1ddc6; border-radius:19px; color:#829378; background:#f2f4e7; }
.fishing-empty > span { font-size:42px; line-height:1; color:#9eb4a6; }
.fishing-empty h3 { margin:12px 0 3px; font:500 20px/1.5 var(--serif,serif); }
.fishing-empty p { margin:0; font-size:12px; }
.fishing-bait-free { display:flex; width:100%; align-items:center; justify-content:space-between; gap:15px; padding:15px 17px; margin-bottom:16px; border:1px solid #d3deca; border-radius:16px; color:#73856d; background:#f4f5ea; font:inherit; text-align:left; cursor:pointer; }
.fishing-bait-free strong { display:block; font-weight:500; font-size:14px; }
.fishing-bait-free small { display:block; margin-top:3px; font-size:11px; line-height:1.7; }
.fishing-bait-free > span:last-child { flex:none; font-size:12px; }
.fishing-bait-free.is-selected { border-color:#9cb58e; background:#e9efdd; color:#567850; }
.fishing-bait-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
.fishing-bait-card { min-width:0; display:flex; flex-direction:column; border:1px solid #d9e1cc; border-radius:18px; padding:17px; background:#fffdf3; }
.fishing-bait-card.is-selected { border-color:#9ab68a; box-shadow:inset 0 0 0 1px #a6bb961c; }
.fishing-bait-card-head { display:flex; gap:12px; align-items:center; }
.fishing-bait-card-head small { font-size:11px; color:#8c987e; }
.fishing-bait-art { display:block; width:45px; height:42px; position:relative; flex:none; }
.fishing-bait-art i { position:absolute; width:23px; height:23px; border-radius:46% 54% 48% 52%; background:radial-gradient(circle at 30% 25%,#ffffff70,transparent 60%),var(--bait-color,#bc9b63); box-shadow:inset -3px -3px 3px #75613520,0 3px 0 #90876a13; }
.fishing-bait-art i:nth-child(1) { left:1px; top:16px; }
.fishing-bait-art i:nth-child(2) { left:22px; top:16px; }
.fishing-bait-art i:nth-child(3) { left:12px; top:0; }
.fishing-bait-card > p { color:#85937a; font-size:11px; line-height:1.85; margin:10px 0; }
.fishing-ingredients { list-style:none; margin:3px 0 14px; padding:0; border-radius:10px; background:#f1f4e7; }
.fishing-ingredients li { display:flex; justify-content:space-between; gap:10px; padding:8px 10px; font-size:11px; color:#67875f; }
.fishing-ingredients li + li { border-top:1px solid #dfe5d4; }
.fishing-ingredients li.is-short { color:#a08665; }
.fishing-ingredients small { font-size:10px; white-space:nowrap; }
.fishing-bait-targets { flex:1; margin-bottom:15px; }
.fishing-bait-targets > small { display:block; font-size:10px; color:#99a18b; margin-bottom:4px; }
.fishing-bait-targets button { width:100%; display:block; min-height:40px; text-align:left; padding:4px 0; color:#667f64; background:transparent; border:0; font:inherit; font-size:12px; cursor:pointer; }
.fishing-bait-targets span { display:block; margin-top:1px; color:#96a08b; font-size:10px; line-height:1.6; }
.fishing-bait-card .fishing-material-hint { margin:7px 0 0; font-size:10px; }
.fishing-bait-rule { padding:12px 15px; margin:18px 0 0; border:1px solid #e3ddc8; border-radius:12px; background:#f6f0df; color:#968568; font-size:11px; line-height:1.85; }
@media(max-width:600px) {
 .fishing-dialog-tools { gap:10px; }
 .fishing-coins strong { font-size:15px; }
 .fishing-coins small { font-size:9px; }
 .fishing-basket-row { gap:10px; padding:12px; align-items:flex-start; }
 .fishing-basket-art { width:72px; padding-top:2px; }
 .fishing-basket-copy h4 { font-size:16px; }
 .fishing-basket-copy > p { font-size:10px; }
 .fishing-basket-copy .fishing-button { padding-inline:9px; font-size:11px; }
 .fishing-bait-grid { grid-template-columns:minmax(0,1fr); gap:13px; }
 .fishing-bait-card { padding:16px; }
 .fishing-bait-targets button { display:flex; align-items:center; justify-content:space-between; gap:8px; }
 .fishing-bait-targets span { text-align:right; max-width:48%; }
 .fishing-tabs { padding-inline:16px; gap:4px; }
 .fishing-tabs button { min-height:40px; padding-inline:13px; }
}
@media(max-height:500px) and (min-width:601px) {
 .fishing-dialog .dialog-header { padding-block:10px; }
 .fishing-dialog .dialog-header h2 { font-size:23px; }
 .fishing-bait-pill { margin-top:5px; min-height:31px; }
 .fishing-coins strong { font-size:14px; }
}

/* Paper seed packets and a little kitchen, all inside the same shared island. */
.farm-dialog { --farm-ink:#3e5946; --farm-muted:#798771; --farm-line:#dce0ca; --farm-green:#6f895e; position:fixed; inset:0; width:min(1040px,calc(100vw - 56px)); max-width:none; height:min(820px,calc(100dvh - 48px)); max-height:calc(100dvh - 48px); box-sizing:border-box; margin:auto; padding:0; overflow:hidden; border:1px solid #e7e5cf; border-radius:28px; color:var(--farm-ink); background:#fcf9ef; box-shadow:0 24px 100px #253a354d,inset 0 0 0 4px #fffdf6; font-family:var(--sans,system-ui,sans-serif); overscroll-behavior:contain; }
.farm-dialog[open] { display:flex; flex-direction:column; }
.farm-dialog:not([open]) { display:none; }
.farm-dialog::backdrop { background:#1e3c3759; backdrop-filter:blur(5px); }
.farm-dialog *, .farm-dialog *::before, .farm-dialog *::after { box-sizing:border-box; }
.farm-dialog button { font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.farm-dialog button:disabled { cursor:default; }
.farm-dialog button:focus-visible, .farm-dialog summary:focus-visible { outline:2px solid #698354; outline-offset:3px; }
.farm-dialog svg { flex-shrink:0; }
.farm-header { display:flex; align-items:center; gap:22px; flex:none; padding:23px 30px 18px; border-bottom:1px solid #dfe4cf; background:linear-gradient(120deg,#eef2df,#faf7ea); }
.farm-header-title { flex:1; min-width:0; }
.farm-eyebrow { font-size:9px; font-weight:500; letter-spacing:.19em; color:#7d8e70; }
.farm-header h2 { margin:4px 0 0; font:500 28px/1.3 var(--serif,serif); color:#3d5946; }
.farm-wallet { flex:none; text-align:center; border:1px solid #dddcc0; padding:8px 15px 6px; border-radius:15px; background:#fffaf0bc; }
.farm-wallet > span { display:flex; justify-content:center; align-items:center; gap:6px; color:#8c713e; font-variant-numeric:tabular-nums; }
.farm-wallet svg { width:21px; height:21px; color:#b39553; }
.farm-wallet strong { font-size:19px; font-weight:600; line-height:1.25; }
.farm-wallet small { display:block; color:#9a9270; font-size:9px; margin-top:2px; }
.farm-close,.farm-overlay-close { flex:none; display:grid; place-items:center; width:40px; height:40px; padding:11px; border:0; border-radius:50%; color:#788967; background:#e8eddc; }
.farm-close svg,.farm-overlay-close svg { width:18px; height:18px; }
.farm-tabs { display:flex; flex:none; gap:7px; overflow-x:auto; padding:11px 30px; border-bottom:1px solid var(--farm-line); scrollbar-width:none; background:#f9f7ed; }
.farm-tabs::-webkit-scrollbar,.farm-filters::-webkit-scrollbar { display:none; }
.farm-tabs > button { position:relative; flex:1; min-width:74px; min-height:41px; border:1px solid transparent; border-radius:12px; padding:8px 14px; background:transparent; color:#809072; font-size:13px; white-space:nowrap; }
.farm-tabs > button[aria-pressed=true] { color:#4a694b; border-color:#d2ddc4; background:#e9efdd; box-shadow:inset 0 1px 0 #fff8; }
.farm-tabs i { display:inline-block; width:5px; height:5px; margin-left:5px; vertical-align:top; border-radius:50%; background:#c19b61; }
.farm-notice-area { flex:none; }
.farm-notice { margin:0; display:flex; gap:7px; align-items:center; padding:10px 30px; color:#628264; background:#edf3e3; border-bottom:1px solid #dfe8d1; font-size:12px; line-height:1.6; }
.farm-notice svg { width:16px; height:16px; }
.farm-error { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 30px; color:#926a47; background:#faeddb; font-size:12px; line-height:1.7; border-bottom:1px solid #e7d7bd; }
.farm-error button { flex:none; max-width:130px; min-height:36px; padding:6px 11px; border:1px solid #dcc8a9; border-radius:10px; background:#fff8ed; color:#816544; font-size:11px; }
.farm-error button:disabled { opacity:.55; }
.farm-body { min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:24px 30px 28px; scrollbar-color:#c9d3b9 transparent; scrollbar-width:thin; }
.farm-footer { flex:none; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:7px 25px 8px 30px; border-top:1px solid #e6e7d5; background:#f6f5e9; color:#9a9e86; font-size:10px; min-height:39px; }
.farm-footer > button { display:grid; place-items:center; width:30px; height:30px; border:0; border-radius:50%; background:transparent; color:#87987a; }
.farm-footer svg { width:15px; height:15px; }
.farm-footer > button:disabled { opacity:.4; }
.farm-section-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:22px; }
.farm-section-heading h3 { margin:0 0 5px; font:500 22px/1.5 var(--serif,serif); color:#536d4f; }
.farm-section-heading p { margin:0; font-size:12px; line-height:1.8; color:#8b987e; }
.farm-section-count { flex:none; font:500 29px/1 var(--serif,serif); color:#7b9164; white-space:nowrap; }
.farm-section-count small { font:400 11px/1.4 var(--sans,system-ui,sans-serif); color:#98a18a; }
.farm-subheading { margin-top:30px; margin-bottom:15px; }
.farm-subheading h3 { font-size:19px; }
.farm-button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:40px; padding:9px 15px; border:1px solid #6c845b; border-radius:12px; background:#7b9368; color:#fffdf1; box-shadow:inset 0 1px 0 #fff3,0 2px 0 #51663f17; font-size:12px; line-height:1.5; font-weight:500; }
.farm-button svg { width:16px; height:16px; }
.farm-button.is-secondary { background:#f7f7e9; border-color:#d7dec7; color:#718264; box-shadow:none; }
.farm-button:disabled { background:#e8ecdd; border-color:#d9dfcb; color:#88967a; box-shadow:none; }
.farm-button:not(:disabled):hover { filter:brightness(1.045); }
.farm-price { display:inline-flex; align-items:center; gap:4px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.farm-price svg { width:15px; height:15px; opacity:.8; }
.farm-text-button { padding:8px 0; min-height:36px; border:0; background:transparent; color:#74916b; font-size:12px; }
.farm-field-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.farm-plot { position:relative; min-width:0; padding:15px 15px 17px; border:1px solid #dddcc5; border-radius:19px; overflow:hidden; text-align:center; background:linear-gradient(#f5f4e5,#fffdf4 68%); box-shadow:0 4px 0 #e5e1c433; }
.farm-plot::before { content:""; position:absolute; width:100%; height:3px; top:0; left:0; background:linear-gradient(90deg,#c3b285,#e3d8b9,#c3b285); opacity:.45; }
.farm-plot.is-empty { background:linear-gradient(#f4f1e2,#faf8ed); border-style:dashed; border-color:#d9d8bf; box-shadow:none; }
.farm-plot.is-mature { background:linear-gradient(#f0f2d9,#fffdf1 70%); border-color:#c9d5af; }
.farm-plot-number { position:absolute; top:14px; left:14px; color:#b3ad8d; font-size:10px; letter-spacing:.12em; }
.farm-rarity { position:absolute; top:12px; right:12px; padding:3px 7px; border-radius:6px; background:#eee6ce; color:#9f8652; font-size:9px; }
.farm-plot-art { width:min(180px,100%); height:132px; margin:0 auto; display:flex; align-items:center; justify-content:center; }
.farm-crop-art { display:block; width:100%; height:auto; max-height:100%; }
.farm-crop-art.is-locked { filter:grayscale(1); }
.farm-plot-art::after { content:""; position:absolute; pointer-events:none; height:20px; width:125px; top:126px; border-radius:50%; background:#7963440b; }
.farm-plot h4 { margin:7px 0 5px; color:#566b46; font-size:15px; font-weight:500; }
.farm-plot p { margin:0; color:#91a080; font-size:11px; line-height:1.7; }
.farm-growth-track { width:86%; height:4px; margin:11px auto 7px; border-radius:3px; background:#e3e5d3; overflow:hidden; }
.farm-growth-track > span { display:block; height:100%; border-radius:inherit; background:#a0b680; transition:width .5s linear; }
.farm-plot.is-mature .farm-growth-track > span { background:#8fa85f; }
.farm-plot .farm-care-note { color:#a0a58a; font-size:10px; }
.farm-plot-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:6px; margin-top:13px; }
.farm-plot-actions .farm-button { flex:1 1 auto; min-width:65px; padding:8px 10px; font-size:11px; }
.farm-plot.is-empty > .farm-button { margin-top:20px; min-width:104px; }
.farm-soil-art { position:relative; height:132px; width:min(160px,100%); margin:0 auto; display:flex; align-items:center; justify-content:center; flex-direction:column; padding-top:20px; transform:perspective(180px) rotateX(17deg); }
.farm-soil-art > span { width:125px; height:18px; margin:3px; border-radius:12px; background:linear-gradient(#b39b73,#927c5b); box-shadow:inset 0 2px 1px #c4b08d,0 3px 0 #85714c28; }
.farm-soil-art > span:nth-child(2) { width:138px; }
.farm-soil-art > span:nth-child(3) { width:148px; }
.farm-soil-art > i { position:absolute; top:17px; left:calc(50% - 16px); width:32px; height:32px; color:#a5b08a; background:#f2f0e1d9; border-radius:50%; padding:6px; transform:rotateX(-17deg); }
.farm-soil-art svg { width:20px; height:20px; }
.farm-quiet-note { margin-top:22px; padding:12px 16px; border:1px solid #e1e5d2; border-radius:13px; color:#879675; background:#f3f5e8; }
.farm-quiet-note summary { cursor:pointer; font-size:11px; line-height:1.7; }
.farm-quiet-note p { margin:9px 0 0; font-size:11px; line-height:1.9; color:#8e9a7d; }
.farm-filters { display:flex; flex-wrap:wrap; gap:7px; margin:0 0 20px; }
.farm-filters button { min-height:35px; padding:7px 13px; border:1px solid #e1e4d0; border-radius:20px; background:#fffdf5; color:#8b987c; font-size:11px; white-space:nowrap; }
.farm-filters button[aria-pressed=true] { border-color:#adbf95; color:#668354; background:#edf2df; }
.farm-seed-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px 15px; }
.farm-seed-card { min-width:0; display:flex; flex-direction:column; align-items:stretch; text-align:center; }
.farm-seed-envelope { position:relative; padding:16px 8px 12px; border:1px solid #d8d6b8; border-radius:4px 4px 11px 11px; background:linear-gradient(115deg,#f3edcf,#fff9df 48%,#f0e9cd); box-shadow:0 4px 0 #dbd7ba22,inset 0 0 0 4px #fffbe42e; overflow:hidden; }
.farm-seed-envelope::before { content:""; position:absolute; top:0; left:0; right:0; height:7px; background:repeating-linear-gradient(90deg,#c5c7a0 0 6px,#e4e0c4 6px 10px); opacity:.65; border-bottom:1px solid #d7d2ae; }
.farm-seed-card.is-rare .farm-seed-envelope { background:linear-gradient(115deg,#ece6d9,#faf5e7 45%,#e7e4d6); border-color:#d5c8ac; }
.farm-seed-card.is-rare .farm-seed-envelope::before { background:repeating-linear-gradient(90deg,#b69e72 0 6px,#e8d5ae 6px 10px); }
.farm-seed-stamp { display:block; font-size:8px; letter-spacing:.16em; color:#a49c73; }
.farm-seed-envelope svg { width:100%; height:120px; margin-top:2px; }
.farm-seed-envelope h4 { margin:0 0 5px; color:#6d754e; font:500 18px/1.4 var(--serif,serif); }
.farm-seed-time { color:#9d9c74; font-size:9px; }
.farm-seed-card > p { margin:11px 0 8px; min-height:38px; color:#889278; font-size:11px; line-height:1.75; }
.farm-seed-facts { display:flex; flex-wrap:wrap; gap:2px 7px; justify-content:center; margin:auto 0 9px; font-size:9px; line-height:1.7; color:#a0a28a; }
.farm-seed-card > .farm-button { width:100%; }
.farm-storage-list { display:grid; gap:11px; }
.farm-storage-row { display:flex; gap:15px; align-items:center; min-width:0; padding:10px 17px 10px 8px; border:1px solid #e0e3cc; border-radius:16px; background:#fffdf4; }
.farm-storage-art { width:91px; height:77px; flex:none; }
.farm-storage-copy { flex:1; min-width:0; }
.farm-storage-copy h4 { margin:0 0 6px; font-size:14px; font-weight:500; }
.farm-storage-copy h4 > span { color:#9ba882; font-size:11px; margin-left:10px; }
.farm-storage-copy p { color:#99a087; font-size:11px; margin:0; }
.farm-storage-actions { display:flex; flex-wrap:wrap; gap:7px; justify-content:flex-end; }
.farm-storage-actions .farm-button { font-size:11px; }
.farm-seed-inventory { display:flex; flex-wrap:wrap; gap:9px; }
.farm-seed-inventory > span { display:flex; gap:13px; padding:9px 13px; border:1px solid #e1e4ce; border-radius:10px; background:#f5f5e8; color:#859374; font-size:12px; }
.farm-seed-inventory strong { color:#a1aa8b; font-size:11px; font-weight:500; }
.farm-empty-state { width:100%; text-align:center; padding:40px 15px; border-radius:19px; background:#f4f5e9; border:1px dashed #dce1c8; }
.farm-empty-state > svg { width:42px; height:42px; color:#a0b18b; margin:0 auto 11px; display:block; }
.farm-empty-state h4,.farm-empty-state h3 { margin:0 0 7px; font:500 19px/1.5 var(--serif,serif); color:#768d62; }
.farm-empty-state p { margin:0; color:#9ba88b; font-size:12px; line-height:1.8; }
.farm-empty-state .farm-text-button,.farm-empty-state .farm-button { margin-top:12px; }
.farm-collection-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:13px; }
.farm-specimen { position:relative; min-width:0; padding:14px 9px 15px; border:1px solid #dde1ce; border-radius:15px; color:#8b967d; background:#f1f3e7; text-align:center; }
.farm-specimen.is-unlocked { color:#617d50; background:#fffcf0; border-color:#d1dcbf; box-shadow:0 3px 0 #dce3cb30; }
.farm-specimen-number { position:absolute; top:11px; left:11px; color:#a8b098; font-size:9px; }
.farm-specimen svg { width:100%; height:116px; }
.farm-specimen > strong { display:block; font-size:12px; font-weight:500; }
.farm-specimen > small { display:block; margin-top:7px; color:#a5ad95; font-size:9px; }
.farm-tasks { display:grid; gap:12px; }
.farm-task { display:flex; align-items:center; gap:17px; padding:18px; border:1px solid #dee4cc; border-radius:17px; background:#fffdf4; }
.farm-task-mark { display:grid; place-items:center; flex:none; width:47px; height:47px; border-radius:15px; background:#eaf0dc; color:#8ca570; }
.farm-task-mark svg { width:24px; height:24px; }
.farm-task > div:nth-child(2) { flex:1; }
.farm-task h4 { margin:0 0 6px; font-size:14px; font-weight:500; }
.farm-task p { margin:0; font-size:11px; color:#98a287; line-height:1.7; }
.farm-task-reward { display:flex; align-items:center; gap:18px; flex:none; }
.farm-task-reward > .farm-price { color:#ab915a; font-size:13px; }
.farm-task-reward .farm-button { min-width:78px; }
.farm-task.is-claimed { background:#f3f5e9; opacity:.8; }
.farm-task.is-ready { border-color:#b4c59c; }
.farm-task-collected { font-size:12px; color:#7a8b6b; text-align:center; min-width:78px; }
.farm-task-group { margin:22px 0; }
.farm-task-group > h4 { margin:0 0 11px; color:#718363; font-size:13px; font-weight:500; }
.farm-claimed-tasks { margin:24px 0 12px; color:#7d8c6e; font-size:12px; }
.farm-claimed-tasks summary { cursor:pointer; padding:10px 0; }
.farm-claimed-tasks .farm-tasks { margin-top:8px; }
.farm-tasks-done { padding:18px 0; color:#708363; line-height:1.8; font-size:13px; }
.farm-build-summary { padding:19px 20px; border:1px solid #d5dfc1; border-radius:18px; background:linear-gradient(120deg,#edf2df,#fbf7ea); }
.farm-build-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.farm-build-heading h4 { margin:0; color:#536d4f; font-size:15px; font-weight:500; }
.farm-build-link { padding:7px 0 7px 10px; border:0; background:none; color:#6a8256; font-size:12px; cursor:pointer; white-space:nowrap; }
.farm-build-link:focus-visible { outline:2px solid #8ea776; outline-offset:3px; border-radius:5px; }
.farm-build-counts { display:flex; flex-wrap:wrap; gap:12px 22px; margin-top:10px; color:#829274; font-size:12px; }
.farm-build-counts strong { color:#5f7951; font-size:18px; font-weight:500; }
.farm-build-progress { height:5px; margin:13px 0; border-radius:10px; overflow:hidden; background:#dce5ce; }
.farm-build-progress i { display:block; height:100%; border-radius:inherit; background:#8eaa76; }
.farm-build-target,.farm-build-next { margin:7px 0 0; font-size:12px; line-height:1.8; color:#687e5c; overflow-wrap:anywhere; }
.farm-build-next { color:#849177; font-size:11px; }
@media(max-height:500px) and (min-width:600px) {
  .farm-dialog[data-farm-tab="tasks"] .farm-section-heading { margin-bottom:12px; }
  .farm-dialog[data-farm-tab="tasks"] .farm-section-heading h3 { font-size:18px; }
  .farm-build-summary { display:grid; grid-template-columns:1fr 1.2fr; gap:5px 24px; padding:13px 16px; }
  .farm-build-heading { grid-column:1; }
  .farm-build-counts { grid-column:1; margin-top:0; }
  .farm-build-progress { grid-column:1; margin:6px 0 0; }
  .farm-build-target { grid-column:2; grid-row:1; margin:0; align-self:center; }
  .farm-build-next { grid-column:2; grid-row:2 / span 2; margin:0; }
}
@media(max-width:420px) {
  .farm-build-summary { padding:15px 14px; }
  .farm-build-heading h4 { font-size:14px; }
  .farm-build-counts { gap:8px 14px; font-size:11px; }
  .farm-task-collected { min-width:67px; font-size:10px; }
  .farm-task > div:nth-child(2) { min-width:0; }
  .farm-task h4,.farm-task p { overflow-wrap:anywhere; }
}
.farm-footnote { text-align:center; margin:22px 0 0; color:#a0a78d; font-size:10px; line-height:1.8; }
.farm-restaurant-welcome { display:flex; align-items:center; gap:17px; padding:22px; margin-bottom:20px; border:1px solid #e2d8bd; border-radius:19px; background:radial-gradient(ellipse at 5% 50%,#f1e4c8,#f9f3e3 60%); }
.farm-restaurant-seal { flex:none; width:47px; height:65px; display:grid; place-items:center; writing-mode:vertical-rl; letter-spacing:.18em; border:1px solid #b78159; outline:2px solid #c7976f49; outline-offset:3px; border-radius:5px; color:#ad7851; font:500 21px/1.1 var(--serif,serif); background:#f8efd5; }
.farm-restaurant-welcome > div { flex:1; min-width:0; }
.farm-restaurant-welcome p { color:#ad9b76; letter-spacing:.1em; font-size:8px; line-height:1.7; margin:0 0 5px; }
.farm-restaurant-welcome h3 { margin:0 0 5px; color:#7e7653; font:500 23px/1.5 var(--serif,serif); }
.farm-restaurant-welcome > div > span { font-size:11px; line-height:1.8; color:#a39776; }
.farm-restaurant-welcome > strong { color:#9c956c; font:500 26px/1 var(--serif,serif); text-align:center; }
.farm-restaurant-welcome > strong > small { display:block; font:400 9px/1.6 var(--sans,system-ui,sans-serif); margin-top:5px; color:#b3a789; white-space:nowrap; }
.farm-cuisine-filters { gap:6px; }
.farm-cuisine-filters button { padding-inline:12px; }
.farm-menu { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }
.farm-dish-card { display:flex; flex-direction:column; min-width:0; padding:0 15px 15px; border:1px solid #e2dec6; border-radius:19px; background:#fffdf3; overflow:hidden; }
.farm-dish-picture { position:relative; margin:0 -15px 13px; padding:5px 12px 0; background:radial-gradient(ellipse at 50% 70%,#f4ecd7,#f8f5e9); }
.farm-dish-art { display:block; width:100%; height:150px; }
.farm-tasted { position:absolute; right:10px; top:10px; padding:4px 7px; border-radius:6px; background:#edf0df; color:#8ca276; font-size:9px; border:1px solid #dbe4ca; }
.farm-dish-cuisine { font-size:9px; color:#afa17d; letter-spacing:.12em; }
.farm-dish-copy h4 { font:500 19px/1.5 var(--serif,serif); margin:3px 0 6px; color:#6b7351; }
.farm-dish-copy p { font-size:12px; color:#7b866c; line-height:1.8; margin:0 0 13px; }
.farm-dish-card > .farm-button { margin-top:auto; width:100%; }
.farm-inset-overlay { position:absolute; z-index:4; inset:0; display:flex; justify-content:center; align-items:center; padding:24px; background:#3a473a52; backdrop-filter:blur(4px); overflow:auto; }
.farm-selection { position:relative; width:min(540px,100%); max-height:100%; overflow:auto; padding:29px; border:1px solid #e4e2cd; border-radius:24px; background:#fffdf2; box-shadow:0 10px 60px #253b333d; scrollbar-width:thin; overscroll-behavior:contain; }
.farm-overlay-close { position:absolute; right:15px; top:14px; width:34px; height:34px; padding:9px; }
.farm-selection h3 { margin:8px 0; font:500 24px/1.5 var(--serif,serif); color:#58724d; }
.farm-selection > p:not(.farm-eyebrow) { font-size:12px; color:#94a080; line-height:1.8; margin:0 0 18px; }
.farm-plant-choices { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-top:18px; }
.farm-plant-choices button { min-width:0; padding:9px 6px 14px; border:1px solid #dce4cb; border-radius:15px; background:#f6f8ea; color:#698558; }
.farm-plant-choices button:disabled { opacity:.5; }
.farm-plant-choices svg { width:100%; height:92px; }
.farm-plant-choices strong { display:block; font-size:12px; font-weight:500; }
.farm-plant-choices small { display:block; margin-top:6px; color:#a0ac8d; font-size:9px; }
.farm-specimen-detail,.farm-tasting-card { max-width:410px; text-align:center; }
.farm-specimen-detail > svg { width:220px; max-width:100%; margin:5px auto; }
.farm-specimen-detail .farm-eyebrow { margin:10px 0 0; }
.farm-specimen-detail dl { display:grid; gap:12px; padding:17px; margin:20px 0 0; border:1px solid #e0e6ce; border-radius:14px; background:#f5f7e9; }
.farm-specimen-detail dl > div { display:flex; justify-content:space-between; gap:10px; font-size:11px; line-height:1.7; }
.farm-specimen-detail dt { color:#a1ad8d; }
.farm-specimen-detail dd { margin:0; color:#748a60; }
.farm-tasting-card > .farm-dish-art { width:260px; max-width:100%; height:auto; margin:10px auto 0; }
.farm-tasting-stamp { display:flex; align-items:center; justify-content:center; gap:7px; color:#8fa37a; font-size:10px; line-height:1.7; padding:12px 0 20px; }
.farm-tasting-stamp svg { width:16px; height:16px; }
.farm-tasting-card > .farm-button { min-width:170px; }
@media(max-width:760px) {
  .farm-dialog { width:calc(100vw - 28px); height:min(840px,calc(100dvh - 28px)); max-height:calc(100dvh - 28px); border-radius:24px; }
  .farm-header { padding:19px 21px 16px; gap:15px; }
  .farm-tabs { padding:9px 18px; gap:4px; }
  .farm-tabs > button { min-width:64px; padding:8px 11px; }
  .farm-body { padding:21px; }
  .farm-field-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; }
  .farm-seed-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .farm-collection-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .farm-menu { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .farm-task { padding:15px; gap:13px; }
  .farm-task-reward { gap:10px; }
  .farm-footer { padding-left:21px; padding-right:16px; }
  .farm-notice,.farm-error { padding-inline:21px; }
}
@media(max-width:480px) {
  .farm-dialog { inset:auto 0 0; width:100%; height:calc(100dvh - max(10px,env(safe-area-inset-top))); max-height:calc(100dvh - max(10px,env(safe-area-inset-top))); margin:0; border-radius:23px 23px 0 0; border-bottom:0; }
  .farm-header { padding:17px max(16px,env(safe-area-inset-right)) 14px max(16px,env(safe-area-inset-left)); gap:12px; }
  .farm-header h2 { font-size:25px; }
  .farm-header .farm-eyebrow { font-size:8px; letter-spacing:.13em; }
  .farm-wallet { padding:7px 10px 6px; border-radius:12px; }
  .farm-wallet strong { font-size:16px; }
  .farm-wallet svg { width:18px; height:18px; }
  .farm-close { width:35px; height:35px; padding:9px; }
  .farm-tabs { padding:8px 12px; gap:3px; }
  .farm-tabs > button { min-width:55px; padding:7px 8px; min-height:39px; font-size:12px; border-radius:11px; }
  .farm-body { padding:20px max(15px,env(safe-area-inset-right)) 24px max(15px,env(safe-area-inset-left)); }
  .farm-notice,.farm-error { padding:9px 16px; font-size:11px; }
  .farm-error { align-items:flex-start; gap:9px; }
  .farm-error button { max-width:100px; font-size:10px; }
  .farm-section-heading { gap:11px; margin-bottom:17px; align-items:flex-start; }
  .farm-section-heading h3 { font-size:20px; margin-bottom:4px; }
  .farm-section-heading p { font-size:11px; }
  .farm-section-count { font-size:25px; margin-top:4px; }
  .farm-section-count small { font-size:10px; }
  .farm-field-grid { gap:12px 10px; }
  .farm-plot { padding:13px 9px 14px; border-radius:16px; }
  .farm-plot-art,.farm-soil-art { height:112px; }
  .farm-plot-art::after { top:110px; width:100px; }
  .farm-plot-number { top:11px; left:11px; font-size:9px; }
  .farm-rarity { right:9px; top:9px; font-size:8px; padding:2px 5px; }
  .farm-plot h4 { font-size:14px; }
  .farm-plot p { font-size:11px; color:#7e906d; }
  .farm-plot .farm-care-note { font-size:10px; color:#8b9779; }
  .farm-soil-art > span { max-width:86%; height:16px; }
  .farm-plot-actions { gap:5px; margin-top:10px; }
  .farm-plot-actions .farm-button { min-width:57px; min-height:36px; padding:7px; font-size:10px; gap:3px; }
  .farm-plot-actions svg { width:13px; height:13px; }
  .farm-plot.is-empty > .farm-button { min-height:38px; margin-top:18px; }
  .farm-plot.is-empty > p { min-height:34px; }
  .farm-seed-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 13px; }
  .farm-seed-envelope svg { height:114px; }
  .farm-seed-envelope h4 { font-size:17px; }
  .farm-seed-card > p { font-size:11px; min-height:38px; color:#7e8a6d; }
  .farm-seed-card > .farm-button { font-size:11px; padding:8px 10px; }
  .farm-filters { gap:6px; margin-bottom:17px; }
  .farm-filters button { min-height:35px; font-size:11px; padding:7px 12px; }
  .farm-collection-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
  .farm-specimen { padding:12px 5px; border-radius:13px; }
  .farm-specimen svg { height:85px; }
  .farm-specimen > strong { font-size:11px; }
  .farm-specimen > small { font-size:8px; }
  .farm-specimen-number { top:8px; left:8px; font-size:8px; }
  .farm-storage-row { padding:11px; gap:9px; flex-wrap:wrap; }
  .farm-storage-art { width:66px; height:58px; }
  .farm-storage-copy h4 { font-size:13px; }
  .farm-storage-actions { width:100%; gap:7px; padding-left:75px; justify-content:flex-start; }
  .farm-storage-actions .farm-button { min-height:37px; padding:8px 11px; font-size:10px; }
  .farm-task { gap:11px; padding:14px 12px; }
  .farm-task-mark { width:36px; height:39px; border-radius:12px; }
  .farm-task-mark svg { width:20px; height:20px; }
  .farm-task h4 { font-size:12px; margin-bottom:5px; }
  .farm-task p { font-size:10px; }
  .farm-task-reward { flex-direction:column; gap:5px; }
  .farm-task-reward .farm-price { font-size:11px; }
  .farm-task-reward .farm-button { min-width:67px; min-height:33px; font-size:10px; padding:6px 9px; }
  .farm-restaurant-welcome { gap:12px; padding:17px 13px; border-radius:16px; }
  .farm-restaurant-seal { width:35px; height:54px; font-size:17px; }
  .farm-restaurant-welcome p { font-size:6px; letter-spacing:.07em; }
  .farm-restaurant-welcome h3 { font-size:19px; }
  .farm-restaurant-welcome > div > span { font-size:10px; }
  .farm-restaurant-welcome > strong { font-size:21px; }
  .farm-restaurant-welcome > strong > small { font-size:8px; }
  .farm-cuisine-filters { gap:5px; }
  .farm-cuisine-filters button { padding-inline:10px; font-size:10px; min-height:32px; }
  .farm-menu { gap:14px 11px; }
  .farm-dish-card { padding:0 11px 12px; border-radius:16px; }
  .farm-dish-picture { margin:0 -11px 10px; padding-inline:5px; }
  .farm-dish-art { height:119px; }
  .farm-dish-copy h4 { font-size:17px; }
  .farm-dish-copy p { font-size:11px; line-height:1.75; }
  .farm-dish-cuisine { font-size:8px; }
  .farm-dish-card .farm-button { font-size:10px; padding:8px; }
  .farm-dish-card .farm-price svg { width:13px; height:13px; }
  .farm-inset-overlay { padding:14px; }
  .farm-selection { padding:24px 20px; border-radius:21px; }
  .farm-selection h3 { font-size:22px; }
  .farm-selection > p:not(.farm-eyebrow) { font-size:11px; }
  .farm-plant-choices { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .farm-footer { padding:6px max(12px,env(safe-area-inset-right)) max(7px,calc(env(safe-area-inset-bottom) + 5px)) max(16px,env(safe-area-inset-left)); }
}
@media(max-height:500px) and (min-width:481px) {
  .farm-dialog { width:calc(100vw - 24px); height:calc(100dvh - 20px); max-height:calc(100dvh - 20px); border-radius:21px; }
  .farm-header { padding:11px 22px 10px; gap:15px; }
  .farm-header h2 { font-size:22px; }
  .farm-header .farm-eyebrow { font-size:7px; }
  .farm-wallet { padding:4px 12px; }
  .farm-wallet strong { font-size:15px; }
  .farm-wallet small { font-size:8px; }
  .farm-close { width:32px; height:32px; padding:8px; }
  .farm-tabs { padding:5px 20px; }
  .farm-tabs > button { min-height:33px; padding:5px 12px; font-size:11px; }
  .farm-body { padding:18px 22px; }
  .farm-footer { padding-block:3px; min-height:31px; }
  .farm-field-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .farm-inset-overlay { padding:12px; }
  .farm-selection { padding:22px; }
  .farm-tasting-card > .farm-dish-art { width:180px; }
}
@media(prefers-reduced-motion:reduce) { .farm-growth-track > span { transition:none; } }

/* A living garden: a small weather journal and six patches of damp soil. */
.farm-weather-card { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px 25px; padding:18px 21px 13px; margin:0 0 25px; border:1px solid #d5dfcc; border-radius:21px; overflow:hidden; background:linear-gradient(112deg,#edf2e2,#f7f4e5 65%,#eee8cd); box-shadow:inset 0 1px 0 #fff9; }
.farm-weather-card[data-weather=rain],.farm-weather-card[data-weather=shower] { background:linear-gradient(112deg,#e7eeeb,#f0f3e8 65%,#e4ece7); border-color:#ccdbd6; }
.farm-weather-card[data-weather=mist] { background:linear-gradient(112deg,#edf0e7,#f7f6ec); }
.farm-weather-current { display:flex; gap:16px; align-items:center; min-width:0; }
.farm-weather-symbol { display:block; width:58px; height:58px; flex:none; }
.farm-weather-current > div { min-width:0; }
.farm-weather-caption { font-size:10px; color:#829278; letter-spacing:.08em; }
.farm-weather-current h3 { display:flex; align-items:baseline; gap:16px; margin:3px 0 2px; color:#526d53; font:500 21px/1.4 var(--serif,serif); }
.farm-weather-current h3 strong { font:500 32px/1.2 var(--serif,serif); letter-spacing:-.02em; }
.farm-weather-current h3 small { font:400 14px/1 var(--sans,system-ui); margin-left:2px; }
.farm-weather-current p { margin:0; font-size:11px; line-height:1.7; color:#7a8a71; }
.farm-weather-numbers { grid-column:1; display:flex; gap:18px; padding-left:74px; color:#8c987e; font-size:10px; }
.farm-weather-numbers b { font-weight:400; color:#6c8168; margin-left:4px; }
.farm-forecast { grid-column:2; grid-row:1 / 3; display:flex; align-items:center; justify-content:center; gap:21px; padding-left:25px; border-left:1px solid #d8dfca; }
.farm-forecast > div { min-width:42px; display:flex; flex-direction:column; align-items:center; gap:2px; }
.farm-forecast time { font-size:10px; color:#8d987e; font-variant-numeric:tabular-nums; }
.farm-forecast .farm-weather-symbol { width:31px; height:31px; }
.farm-forecast span { color:#7d8e73; font-size:10px; }
.farm-forecast strong { color:#5c795a; font-size:13px; font-weight:500; }
.farm-weather-footnote { grid-column:1 / -1; margin:4px 0 0; padding-top:9px; border-top:1px solid #dce2ce; color:#8c997e; font-size:10px; line-height:1.6; }
.farm-soil-reading { width:88%; margin:11px auto 8px; display:grid; grid-template-columns:1fr auto; align-items:center; gap:4px 8px; text-align:left; color:#768f83; font-size:10px; }
.farm-soil-reading > span { display:flex; align-items:center; gap:4px; }
.farm-soil-reading svg { width:13px; height:13px; }
.farm-soil-reading > strong { color:#698b80; font-size:10px; font-weight:500; font-variant-numeric:tabular-nums; }
.farm-soil-reading > div { grid-column:1 / -1; height:4px; border-radius:3px; background:#e3e8db; overflow:hidden; }
.farm-soil-reading i { display:block; height:100%; border-radius:inherit; background:#9bbeb3; transition:width .5s; }
.farm-soil-reading.is-dry,.farm-soil-reading.is-dry > strong { color:#a58e63; }
.farm-soil-reading.is-dry i { background:#c7ae79; }
.farm-plot.is-living-soil .farm-plot-art { position:relative; z-index:0; }
.farm-plot.is-living-soil .farm-plot-art::before { content:""; position:absolute; z-index:-1; width:83%; height:23px; bottom:9px; left:8.5%; border-radius:50%; background:radial-gradient(ellipse at 25% 25%,#c0a88099 0 2px,transparent 2.5px),radial-gradient(ellipse at 65% 65%,#85745388 0 2px,transparent 2.5px),#b4a07a; background-size:21px 15px,27px 19px,auto; box-shadow:inset 0 0 0 15px rgb(74 62 43 / calc(var(--soil-moisture,0) * .43)),0 4px 0 #8a755025; transition:box-shadow .8s; }
.farm-plot.is-living-soil .farm-plot-art::after { display:none; }
.farm-plot.is-living-soil .farm-plot-actions { gap:6px; }
.farm-plot.is-living-soil .farm-plot-actions .farm-button { min-height:38px; min-width:0; flex:1 1 44%; }
.farm-plot.is-living-soil .farm-plot-actions [data-harvest-ready] { flex-basis:100%; }
.farm-fertilizer-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; margin-top:23px; }
.farm-fertilizer-card { padding:18px 14px; border:1px solid #dbe2cb; border-radius:15px; background:#f5f6e9; text-align:center; min-width:0; }
.farm-fertilizer-card h4 { font-size:15px; font-weight:500; color:#71835b; margin:10px 0 7px; }
.farm-fertilizer-card p { color:#8a997b; font-size:11px; line-height:1.8; margin:0 0 16px; min-height:38px; }
.farm-fertilizer-card .farm-button { width:100%; font-size:11px; padding-inline:8px; }
.farm-fertilizer-bag { display:grid; place-items:center; width:55px; height:65px; margin:auto; border:1px solid #b9b899; border-radius:6px 6px 13px 13px; color:#7c9264; background:linear-gradient(120deg,#dcd8ba,#eee8c9 50%,#d9d6b5); transform:rotate(-5deg); box-shadow:inset 0 6px 0 #c9ccb0,inset 0 9px 0 #d6dbc1,3px 4px 0 #d7deba33; }
.farm-fertilizer-bag.is-growth { background:linear-gradient(120deg,#cbdcce,#e2e9d8 50%,#c4d6c2); border-color:#b7c9ae; color:#6d8a72; transform:rotate(5deg); }
.farm-fertilizer-bag svg { width:28px; height:28px; margin-top:9px; }
.farm-crop-climate { flex-basis:100%; color:#7f9677; }
.farm-action-particles { position:absolute; inset:0; pointer-events:none; overflow:hidden; border-radius:inherit; z-index:2; animation:farm-action-finish 1.5s linear both; }
.farm-action-particles > span { position:absolute; top:18px; left:calc(50% - 23px); width:46px; height:46px; display:grid; place-items:center; border:1px solid #b9cf9e; border-radius:50%; color:#749559; background:#f6fae5eb; animation:farm-action-tool 1.3s ease-out both; }
.farm-action-particles > span svg { width:24px; height:24px; }
.farm-action-particles > i { position:absolute; width:5px; height:7px; border-radius:50%; top:63px; left:calc(27% + var(--particle) * 7%); background:#b29a68; animation:farm-action-grain 1s calc(var(--particle) * .035s) ease-out both; }
[data-farm-effect=water] .farm-action-particles > i { height:12px; width:5px; border-radius:65% 65% 55% 55%; background:#98c6cb; box-shadow:0 0 4px #daeef0; }
[data-farm-effect=water] .farm-action-particles > span { color:#6e9da4; border-color:#b8d6d2; background:#eff9f2ed; }
[data-farm-effect=harvest] .farm-action-particles > i { background:#c6ae6b; width:6px; height:6px; animation-name:farm-action-harvest; }
[data-farm-effect=plant] .farm-plot-art { animation:farm-sprout 1s ease-out both; }
[data-farm-effect=tend] .farm-plot-art { animation:farm-soil-puff .8s ease-out both; }
@keyframes farm-action-finish { 0%,85%{opacity:1} 100%{opacity:0} }
@keyframes farm-action-tool { 0%{opacity:0;transform:translateY(-12px) rotate(-12deg) scale(.8)} 20%,65%{opacity:1;transform:translateY(0) rotate(0) scale(1)} 100%{opacity:0;transform:translateY(-9px)} }
@keyframes farm-action-grain { 0%{opacity:0;transform:translateY(0) scale(.6)} 20%{opacity:1} 85%{opacity:.8} 100%{opacity:0;transform:translateY(62px) scale(1)} }
@keyframes farm-action-harvest { 0%{opacity:0;transform:translateY(70px) scale(.4)} 30%{opacity:1} 100%{opacity:0;transform:translateY(-4px) scale(1.2)} }
@keyframes farm-sprout { 0%{transform:scale(.82) translateY(6px)} 65%{transform:scale(1.035)} 100%{transform:scale(1)} }
@keyframes farm-soil-puff { 0%,100%{transform:translateY(0)} 20%{transform:translateY(-3px) rotate(-1deg)} 50%{transform:translateY(1px) rotate(1deg)} }
@media(max-width:700px) {
  .farm-weather-card { gap:7px 16px; padding:15px 16px 12px; }
  .farm-weather-current { gap:9px; }
  .farm-weather-current > .farm-weather-symbol { width:46px; height:46px; }
  .farm-weather-current h3 { gap:12px; font-size:18px; }
  .farm-weather-current h3 strong { font-size:27px; }
  .farm-weather-current p { font-size:10px; }
  .farm-weather-numbers { padding-left:55px; gap:10px; font-size:9px; }
  .farm-forecast { gap:10px; padding-left:15px; }
  .farm-forecast > div { min-width:34px; }
}
@media(max-width:480px) {
  .farm-weather-card { grid-template-columns:minmax(0,1fr); padding:14px 14px 10px; gap:8px; margin-bottom:19px; border-radius:17px; }
  .farm-weather-current { gap:11px; }
  .farm-weather-current > .farm-weather-symbol { width:43px; height:43px; }
  .farm-weather-current h3 { font-size:17px; margin:2px 0; }
  .farm-weather-current h3 strong { font-size:25px; }
  .farm-weather-caption { font-size:9px; }
  .farm-weather-current p { line-height:1.6; }
  .farm-weather-numbers { padding-left:54px; font-size:9px; gap:13px; }
  .farm-forecast { grid-column:1; grid-row:auto; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-left:0; border-top:1px solid #d8dfca; padding:9px 0 0; margin-top:2px; gap:10px; }
  .farm-forecast > div { display:grid; grid-template-columns:24px 1fr; column-gap:5px; row-gap:1px; min-width:0; }
  .farm-forecast .farm-weather-symbol { grid-column:1; grid-row:2/4; width:26px; height:26px; }
  .farm-forecast time { grid-column:1/-1; text-align:center; font-size:9px; }
  .farm-forecast span { font-size:9px; }
  .farm-forecast strong { font-size:11px; }
  .farm-weather-footnote { font-size:9px; padding-top:7px; margin-top:0; }
  .farm-soil-reading { width:94%; margin-top:9px; font-size:9px; gap:4px; }
  .farm-soil-reading > strong { font-size:9px; }
  .farm-plot.is-living-soil .farm-plot-actions { gap:5px; margin-top:10px; }
  .farm-plot.is-living-soil .farm-plot-actions .farm-button { min-height:38px; padding:7px 5px; font-size:10px; gap:3px; }
  .farm-plot.is-living-soil .farm-plot-actions .farm-button svg { width:13px; height:13px; }
  .farm-plot .farm-care-note { font-size:9px; line-height:1.7; }
  .farm-fertilizer-choices { gap:10px; margin-top:20px; }
  .farm-fertilizer-card { padding:13px 9px; }
  .farm-fertilizer-card h4 { font-size:13px; }
  .farm-fertilizer-card p { font-size:10px; min-height:51px; margin-bottom:10px; }
  .farm-fertilizer-card .farm-button { font-size:10px; min-height:39px; gap:3px; }
  .farm-fertilizer-card .farm-price { gap:2px; }
}
@media(max-height:500px) and (min-width:481px) {
  .farm-weather-card { grid-template-columns:minmax(0,1fr) auto; padding:12px 16px 9px; margin-bottom:18px; }
  .farm-weather-current > .farm-weather-symbol { width:41px; height:41px; }
  .farm-weather-current h3 { font-size:18px; }
  .farm-weather-current h3 strong { font-size:25px; }
  .farm-weather-numbers { padding-left:50px; }
  .farm-forecast { grid-column:2; grid-row:1/3; }
  .farm-fertilizer-bag { height:47px; width:43px; }
  .farm-fertilizer-card { padding:13px; }
}
@media(prefers-reduced-motion:reduce) {
  .farm-action-particles { display:none; }
  .farm-action-particles,.farm-action-particles *,.farm-plot-art,.farm-soil-reading i { animation:none!important; transition:none!important; }
}

/* A small chapter book for shared, one-time island goals. */
.story-task-tabs{display:flex;gap:8px;margin:0 0 22px;padding:5px;background:#edf0e3;border-radius:16px;width:max-content;max-width:100%;box-sizing:border-box}
.story-task-tabs button{position:relative;border:0;background:transparent;color:#66785d;padding:10px 17px;border-radius:12px;font:inherit;font-size:13px;display:flex;align-items:center;gap:8px;min-height:42px}
.story-task-tabs button[aria-pressed=true]{background:#fffdf5;box-shadow:0 2px 8px #5a684719;color:#405e42}
.farm-task-dot,.farm-tabs button>.farm-task-dot{display:inline-block;width:7px;height:7px;min-width:7px;border-radius:50%;background:#c56d60;box-shadow:0 0 0 2px #fff8;vertical-align:middle}
.story-eyebrow{display:block;font-size:10px;color:#7b8c6d;letter-spacing:.08em;margin-bottom:6px}.story-heading{align-items:flex-start}.story-heading h3{margin-top:0}.story-heading p{max-width:440px}
.story-overall{height:5px;background:#e6eadc;border-radius:9px;overflow:hidden;margin-top:2px}.story-overall>i{display:block;height:100%;background:#8ba578;border-radius:inherit}.story-reward-note{color:#718266;font-size:11px;line-height:1.7;margin:10px 0 23px}
.story-chapters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;align-items:start}.story-chapter{min-width:0;border:1px solid #dbe0c9;border-radius:23px;background:#fffdf6;box-shadow:0 3px 0 #dce0cd55;overflow:hidden}
.story-chapter>header{position:relative;display:flex;align-items:center;gap:11px;padding:16px 18px;background:linear-gradient(125deg,#edf0e2,#f7f2e5);border-bottom:1px solid #e5e7d7}.story-chapter>header>.farm-task-dot{margin-left:auto}.story-chapter h4{font-size:17px;font-weight:500;color:#4c674b;margin:4px 0 0}.story-chapter-number{font-size:10px;color:#7b896f}.story-chapter-seal{flex:none;width:37px;height:37px;display:grid;place-items:center;background:#fffdf4b8;border:1px solid #cbd6bc;border-radius:14px;transform:rotate(-4deg);color:#799367}.story-chapter-seal svg{width:21px;height:21px}.story-current{position:relative;margin:14px;padding:17px;border:1px solid #e4e6d5;border-radius:17px;background:#fbfcf5;overflow:hidden;isolation:isolate}.story-current.is-ready{border-color:#c6d2af;background:#f2f6e8}.story-current-title{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.story-current h5{font-size:15px;line-height:1.5;color:#425e42;margin:0;font-weight:600}.story-current p{font-size:12px;color:#6a7a60;line-height:1.8;margin:9px 0}.story-ready-label{flex:none;white-space:nowrap;font-size:10px;color:#6a844d;padding:3px 7px;border-radius:8px;background:#e8efdc}.story-step-progress{display:flex;align-items:center;gap:11px;margin:11px 0}.story-step-progress>span{height:5px;flex:1;min-width:30px;border-radius:10px;background:#e0e6d5;overflow:hidden}.story-step-progress>span>i{display:block;height:100%;border-radius:inherit;background:#8ba674}.story-step-progress small{font-size:10px;color:#738368;white-space:nowrap}.story-current .story-hint{font-size:11px;line-height:1.8;color:#78846c;margin-top:11px}.story-current-actions{position:relative;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:16px}.story-current-actions>.farm-price{color:#ab894f}.story-current-actions .farm-button{font-size:12px;padding:9px 14px;min-height:39px}.story-current-actions .farm-task-collected{font-size:11px;color:#8f7b48}
.story-next{padding:0 19px 15px}.story-next>summary{font-size:11px;color:#7e8b71;cursor:pointer;padding:6px 0;min-height:25px;line-height:25px}.story-next-row{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-top:1px dashed #e1e3d1}.story-next-row strong{font-size:12px;font-weight:500;color:#617257}.story-next-row p{font-size:11px;line-height:1.7;color:#7e8873;margin:6px 0}.story-next-row small{font-size:10px;color:#8c967f}.story-next-row>.farm-price{flex:none;align-self:flex-start;font-size:11px;color:#a18b58}.story-next-row .farm-price svg{width:13px;height:13px}.story-chapter-done{display:flex;align-items:center;gap:8px;color:#7f936d;padding:14px 20px 18px;font-size:12px}.story-chapter-done svg{width:19px;height:19px}.story-completed{margin-top:22px;background:#f2f4ea;border:1px solid #e1e6d4;border-radius:16px;padding:12px 17px}.story-completed>summary{font-size:12px;line-height:26px;cursor:pointer;color:#708363}.story-completed-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid #e0e4d6;color:#7e8b71;font-size:11px}.story-completed-row>span{display:flex;gap:7px;align-items:center}.story-completed-row svg{flex:none;width:16px;height:16px}.story-completed-row small{flex:none;font-size:10px;white-space:nowrap}.story-completed+.farm-footnote{margin-bottom:24px}
.farm-task-reward{position:relative}.farm-task.is-rewarding,.story-current.is-rewarding{animation:task-reward-glow .56s ease-out both}.farm-reward-rise{position:absolute;top:-12px;right:3px;color:#b28a3f;font-size:17px;font-weight:600;pointer-events:none;animation:task-coin-rise .56s ease-out both;z-index:2}.is-newly-ready{animation:task-ready-glow .8s ease-out 1}.farm-task-reward>.farm-task-dot{position:absolute;right:0;top:0}
@keyframes task-reward-glow{0%{box-shadow:inset 0 0 0 1px #e1c97c;background:#fcf8e4}40%{box-shadow:inset 0 0 0 2px #d8bb65,0 0 15px #d7c47d55;background:#fff4cd}100%{box-shadow:inset 0 0 0 1px #e1c97c55;background:#f8f8eb}}
@keyframes task-coin-rise{0%{opacity:0;transform:translateY(12px) scale(.85)}25%{opacity:1;transform:translateY(0) scale(1)}75%{opacity:1}100%{opacity:0;transform:translateY(-22px) scale(.94)}}
@keyframes task-ready-glow{0%,100%{box-shadow:none}35%{box-shadow:0 0 0 3px #d4c58566,0 0 18px #d9c78644}}
@media(max-width:640px){.story-chapters{grid-template-columns:minmax(0,1fr);gap:15px}.story-task-tabs{width:100%;margin-bottom:20px}.story-task-tabs button{flex:1;justify-content:center;padding:10px 11px;font-size:12px}.story-heading{display:block}.story-heading>.farm-section-count{display:block;margin-top:12px;font-size:21px}.story-chapter>header{padding:14px 16px}.story-current{padding:15px}.story-current h5{font-size:14px}.story-current p{font-size:12px}.story-completed-row{align-items:flex-start}.story-completed-row>span{line-height:1.6}.story-completed-row small{padding-top:2px}}
@media(prefers-reduced-motion:reduce){.is-newly-ready,.farm-task.is-rewarding,.story-current.is-rewarding,.farm-reward-rise{animation:none!important}.farm-reward-rise{display:none}}

/* Parallel routes remain small, readable, and optional to track. */
.story-route-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 20px}.story-route-tabs button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 11px;border:1px solid #dce2ce;border-radius:18px;background:transparent;color:#657758;font:inherit;font-size:12px;cursor:pointer}.story-route-tabs button[aria-pressed=true]{background:#e8eedc;border-color:#a8b88f;color:#3e5d3a}.story-track{margin-left:auto;flex-shrink:0;border:0;background:transparent;color:#778767;padding:7px;font:inherit;font-size:11px;cursor:pointer}.story-track[aria-pressed=true]{color:#567546;background:#e6edd9;border-radius:12px}.story-chapter>header{flex-wrap:wrap}.story-chapter>header>div{min-width:0;flex:1}.farm-world-entry{display:flex;align-items:center;gap:8px;justify-content:center;width:100%;padding:14px;margin:0 0 20px;border:1px solid #d7dfc8;border-radius:18px;background:#edf1e3;color:#536e48;font:inherit;cursor:pointer}.farm-world-entry svg{width:22px;height:22px}.farm-world-entry span{margin-left:auto}.story-route-tabs button:focus-visible,.story-track:focus-visible,.farm-world-entry:focus-visible{outline:2px solid #758d5d;outline-offset:3px}

.farm-backpack{box-sizing:border-box;width:min(560px,calc(100vw - 28px));max-height:min(760px,calc(100dvh - 32px));padding:0;overflow:hidden;border:1px solid #d6d9c2;border-radius:24px;background:#faf8ed;color:#405b43;box-shadow:0 24px 80px #263d3540;font-family:inherit}
.farm-backpack::backdrop{background:#2d483d52;backdrop-filter:blur(4px)}
.farm-backpack:focus{outline:none}
.backpack-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:23px 24px 8px;background:#f1f2df}
.backpack-header span{font-size:9px;letter-spacing:.17em;color:#7b8e68}.backpack-header h2{font-size:26px;font-weight:500;line-height:1.3;margin:7px 0}.backpack-header button{width:38px;height:38px;border:0;border-radius:50%;background:#e7ecd7;color:#667c58;font-size:25px;cursor:pointer;flex:none}
.backpack-caption{margin:0;padding:0 24px 17px;background:#f1f2df;font-size:12px;color:#77866c}
.backpack-tabs{display:flex;gap:5px;padding:12px 16px;border-block:1px solid #e2e4d2;overflow:auto;scrollbar-width:none;flex:none}
.backpack-tabs button{flex:1;min-width:62px;border:0;border-radius:11px;padding:11px 6px;background:transparent;color:#738365;font:inherit;font-size:12px;white-space:nowrap;cursor:pointer}.backpack-tabs button[aria-pressed=true]{background:#e8edda;color:#456443;font-weight:600}
.backpack-body{overflow:auto;overscroll-behavior:contain;max-height:calc(min(760px,100dvh - 32px) - 215px);padding:18px 20px 22px;min-height:130px;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#c4cfb2 transparent}
.backpack-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.backpack-tools button{font:inherit;display:flex;flex-direction:column;align-items:center;min-width:0;gap:7px;padding:17px 9px 13px;border:1px solid #dce2cb;border-radius:16px;background:#fffdf5;color:#4e6949;cursor:pointer}.backpack-tools svg{height:34px;width:34px;color:#8a9c6b}.backpack-tools strong{font-weight:500;font-size:14px}.backpack-tools small{font-size:10px;line-height:1.6;color:#7f8e71}.backpack-tools button[aria-pressed=true],.backpack-items button[aria-pressed=true]{border-color:#8fa574;background:#eaf0de;box-shadow:0 0 0 1px #8fa57440 inset}
.backpack-body>button,.backpack-supply-actions button{font:inherit;font-size:12px;border:1px solid #b8c5a1;border-radius:11px;padding:11px 14px;background:#ecf0df;color:#526c48;cursor:pointer;max-width:100%}.backpack-body>button{margin-top:14px}.backpack-body button:disabled{opacity:.5;cursor:default}.backpack-tools button:focus-visible,.backpack-items button:focus-visible,.backpack-body>button:focus-visible,.backpack-header button:focus-visible,.backpack-tabs button:focus-visible{outline:2px solid #809461;outline-offset:3px}
.backpack-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.backpack-items>button,.backpack-items>article{min-width:0;border:1px solid #dce2cb;border-radius:14px;background:#fffdf5;padding:9px;display:flex;flex-direction:column;align-items:center;color:#4e6949;font:inherit;gap:5px}.backpack-items>button{cursor:pointer}.backpack-items svg{width:100%;height:72px;display:block}.backpack-items strong{font-size:12px;font-weight:500;overflow-wrap:anywhere}.backpack-items small{font-size:11px;color:#839374}
.backpack-fertilizers{display:grid;gap:12px}.backpack-fertilizers article{display:grid;grid-template-columns:40px 1fr;gap:12px;border:1px solid #dce2cb;border-radius:16px;padding:15px;background:#fffdf5;min-width:0}.backpack-fertilizers svg{height:38px;width:38px;color:#95a270}.backpack-fertilizers strong{font-weight:500}.backpack-fertilizers p{font-size:12px;line-height:1.6;margin:6px 0;color:#839374}.backpack-fertilizers small{font-size:12px}.backpack-supply-actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}.backpack-supply-actions button{flex:1;white-space:nowrap}
.backpack-footnote,.backpack-empty{font-size:12px;line-height:1.8;color:#869177;margin:17px 0 0}.backpack-empty{padding:20px 0;text-align:center}.backpack-error,.backpack-notice{font-size:12px;line-height:1.7;padding:11px 14px;border-radius:11px;margin:0 0 12px;overflow-wrap:anywhere}.backpack-error{background:#faeee3;color:#a36a43}.backpack-notice{background:#eaf0df;color:#688252}.farm-backpack footer{display:flex;justify-content:space-between;gap:12px;font-size:11px;padding:13px 22px;border-top:1px solid #e2e4d2;color:#879276;background:#f5f5e8}
.world-backpack-dock{position:absolute;z-index:8;right:max(17px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:flex-end;gap:9px;pointer-events:none;max-width:min(230px,calc(100% - 155px))}
.world-backpack-dock button{pointer-events:auto;border:1px solid #ffffffa6;box-shadow:0 4px 18px #314c3a19;color:#516d50;cursor:pointer;backdrop-filter:blur(7px);font:inherit}.world-backpack-open{display:flex;align-items:center;justify-content:center;gap:6px;width:56px;height:56px;border-radius:19px;background:#f4f4e4e8}.world-backpack-open svg{width:31px;height:31px}.world-backpack-open:focus-visible{outline:3px solid #9caf77;outline-offset:3px}.world-farm-held{font-size:11px;line-height:1.4;background:#f4f4e4e8;padding:5px 9px;border-radius:9px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#526c4b}.world-farm-feedback{display:flex;flex-direction:column;align-items:flex-end;gap:6px;background:#f8f7e9ed;padding:9px 11px;border:1px solid #dbe3ca;border-radius:12px;box-shadow:0 4px 18px #314c3a18;font-size:11px;line-height:1.6;color:#536e4d;max-width:100%;overflow-wrap:anywhere}.world-farm-feedback.is-error{color:#996844;background:#fbf1e4ed}.world-farm-feedback button{background:#f9f8ed;border-color:#c8d2b5;border-radius:7px;padding:5px 9px;font-size:11px}.world-farm-feedback[hidden],.world-farm-held[hidden],.world-backpack-dock[hidden],.world-farm-feedback button[hidden]{display:none!important}
.little-world.is-covered .world-backpack-dock,.little-world.is-fishing .world-backpack-dock,.little-world.is-layout .world-backpack-dock{display:none!important}
@media(max-width:370px){.backpack-header{padding:19px 17px 7px}.backpack-caption{padding-inline:17px}.backpack-body{padding:15px}.backpack-tools{gap:7px}.backpack-tools button{padding:13px 6px 10px}.backpack-tools small{font-size:9px}.backpack-items{gap:7px}.world-backpack-dock{max-width:155px;right:12px;bottom:20px}.world-backpack-open{width:49px;height:49px;border-radius:16px}}
@media(orientation:landscape) and (max-height:600px){.farm-backpack{max-height:calc(100dvh - 18px)}.backpack-header{padding:12px 20px 5px}.backpack-header h2{font-size:22px;margin:3px 0}.backpack-caption{padding-bottom:9px}.backpack-tabs{padding:6px 16px}.backpack-body{max-height:calc(100dvh - 188px)}.world-backpack-dock{bottom:14px;right:max(16px,env(safe-area-inset-right));max-width:220px}.world-backpack-open{width:48px;height:48px;border-radius:16px}.world-farm-feedback{padding:6px 10px}.world-farm-held{padding:4px 8px}}

/* Small places to cook, build and collect; shared progress stays in the island. */
.island-life { --life-paper:#fffdf5; --life-ink:#435f49; --life-muted:#73816c; color:var(--life-ink); }
.life-subnav { display:flex; flex-wrap:wrap; gap:7px; margin:0 0 22px; }
.life-subnav button { min-height:42px; padding:8px 16px; border:1px solid #d7dfca; border-radius:20px; color:#697f60; background:#f8f8ec; font-size:12px; }
.life-subnav button[aria-pressed=true] { color:#fffef5; background:#718b62; border-color:#718b62; }
.life-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:22px; }
.life-heading h3 { margin:0 0 5px; font:500 25px/1.4 var(--serif,serif); }
.life-heading p { margin:0; color:var(--life-muted); font-size:12px; line-height:1.8; }
.life-heading > span { flex:none; color:#83996b; font:500 27px/1 var(--serif,serif); }
.life-heading > span small { margin-left:3px; color:#84917b; font:400 11px var(--sans,system-ui); }
.life-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }
.life-card { min-width:0; padding:18px; border:1px solid #dce1ce; border-radius:19px; background:var(--life-paper); box-shadow:0 3px 0 #dce0ca25; }
.life-card h4 { margin:4px 0 7px; font:500 19px/1.45 var(--serif,serif); color:#48664d; overflow-wrap:anywhere; }
.life-card p { font-size:12px; line-height:1.8; color:#73816d; margin:6px 0 13px; }
.life-card .farm-button { min-height:42px; }
.life-card .farm-button:not(:last-child) { margin-right:5px; }
.life-art { width:100%; max-width:220px; height:137px; display:block; margin:0 auto 12px; }
.life-art .life-steam { animation:life-steam 3.5s ease-in-out infinite; transform-origin:center; }
.life-label { display:block; color:#8a9277; font-size:10px; letter-spacing:.09em; }
.life-recipe-card { display:flex; flex-direction:column; }
.life-recipe-card .life-art { background:radial-gradient(ellipse at center,#f4edce66,transparent 70%); }
.life-recipe-card > .farm-button { width:100%; margin-top:auto; }
.life-ingredients { display:flex; flex-wrap:wrap; gap:5px 7px; padding:0; margin:9px 0 15px; list-style:none; }
.life-ingredients li { padding:4px 7px; border-radius:7px; font-size:11px; line-height:1.6; color:#65795a; background:#edf2e3; }
.life-ingredients li.is-missing { color:#937957; background:#f4ecd9; }
.life-card label { display:flex; flex-direction:column; gap:6px; margin:0 0 14px; color:#687b60; font-size:11px; }
.life-card select { width:100%; max-width:100%; min-width:0; min-height:42px; border:1px solid #d8deca; border-radius:10px; padding:9px; background:#f7f7ed; color:#476448; font:inherit; }
.life-quiet { padding:12px 16px; margin:18px 0 0; border-radius:13px; background:#eff2e4; color:#74816b; font-size:11px; line-height:1.8; }
.life-empty { display:grid; justify-items:center; gap:5px; text-align:center; padding:27px 18px; border:1px dashed #d4ddc5; border-radius:18px; background:#f6f7eb; }
.life-empty h4 { margin:3px 0; font:500 20px var(--serif,serif); }
.life-empty p { max-width:30em; color:#78866e; font-size:12px; line-height:1.8; }
.life-stove { display:flex; align-items:center; gap:20px; padding:16px 22px; margin-bottom:23px; border:1px solid #d4dec6; border-radius:19px; background:linear-gradient(115deg,#eaf0de,#faf4e4); }
.life-stove > .life-art { width:130px; height:112px; flex:none; margin:0; }
.life-stove > div { min-width:0; flex:1; }
.life-stove h4 { margin:5px 0 7px; font:500 21px var(--serif,serif); color:#48694c; }
.life-stove p { margin:0 0 12px; color:#7a866d; font-size:12px; line-height:1.7; }
.life-progress { height:5px; overflow:hidden; border-radius:4px; background:#e0e6d3; }
.life-progress > i { display:block; height:100%; background:#99b17d; border-radius:inherit; transition:width .8s; }
.life-stove .life-progress { margin-bottom:12px; max-width:360px; }
.life-kitchen-shelf { display:flex; align-items:center; gap:12px; padding:12px 16px; margin:0 0 19px; border:1px solid #dedfca; border-radius:13px; background:#f8f5e7; }
.life-kitchen-shelf p { margin:0; flex:1; font-size:12px; color:#728269; }
.life-kitchen-shelf button { flex:none; }
.life-table-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:17px; }
.life-portion { display:flex; align-items:center; gap:15px; background:linear-gradient(135deg,#fffdf5,#f3f3e4); }
.life-portion > .life-art { width:115px; height:100px; margin:0; flex:none; }
.life-portion > div { min-width:0; }
.life-portion h4 { font-size:18px; }
.life-portion p { font-size:11px; }
.life-portion.is-reserved { border-color:#d8c9a9; background:linear-gradient(135deg,#fff9e9,#f7f3e5); }
.life-meal-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:19px; }
.life-meal-row { display:grid; grid-template-columns:72px minmax(0,1fr); align-items:center; gap:6px 12px; padding:13px; border:1px solid #dce2cc; border-radius:16px; background:#fffdf5; }
.life-meal-row > .life-art { width:72px; height:65px; margin:0; }
.life-meal-row h4 { margin:0 0 3px; font:500 17px var(--serif,serif); }
.life-meal-row small { color:#7c8970; font-size:11px; }
.life-meal-actions { grid-column:1/-1; display:flex; gap:7px; }
.life-meal-actions .farm-button { flex:1; min-height:42px; padding:8px 6px; font-size:11px; }
.life-board { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }
.life-order { position:relative; padding:24px 18px 18px; background:linear-gradient(#fffdf4,#f9f4e4); border-color:#dfd7ba; }
.life-order::before { content:""; position:absolute; top:9px; left:calc(50% - 3px); width:6px; height:6px; border-radius:50%; background:#b3a27e; box-shadow:0 1px 2px #7b6c3a44; }
.life-order .life-label { color:#8d866b; }
.life-order-options { display:flex; flex-direction:column; gap:8px; margin:15px 0 12px; }
.life-order-options button { display:flex; align-items:center; justify-content:space-between; gap:7px; width:100%; min-height:45px; text-align:left; padding:9px 11px; border:1px solid #d4dec4; border-radius:10px; color:#52704f; background:#edf2e3; font-size:12px; }
.life-order-options button:disabled { color:#8c9681; border-color:#e1e1cd; background:#f0efdf; }
.life-order-options small { font-size:10px; color:#7c8b6c; flex:none; }
.life-order-footer { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:12px; padding-top:10px; border-top:1px dashed #dedcc6; }
.life-order-footer span { font-size:11px; color:#9b824b; }
.life-order-footer button { min-height:38px; border:0; background:transparent; color:#8a9276; font-size:11px; }
.life-project-card { display:flex; flex-direction:column; }
.life-project-card .life-art { height:145px; }
.life-project-card.is-active { border-color:#aabd8e; background:#f6f9eb; }
.life-stage-dots { display:flex; gap:5px; margin:13px 0; }
.life-stage-dots i { flex:1; height:4px; border-radius:3px; background:#e1e7d4; }
.life-stage-dots i.is-complete { background:#94ae76; }
.life-project-next { padding:12px 0 3px; border-top:1px dashed #d9dfca; }
.life-project-next strong { font-size:12px; font-weight:500; color:#5f7b53; }
.life-project-card > .farm-button { margin-top:auto; width:100%; }
.life-project-card .life-complete { display:block; margin-top:auto; padding:10px 0; color:#718b58; font-size:12px; }
.life-display-preview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; min-height:135px; padding:17px; margin-bottom:20px; border:1px solid #b5d0c8; border-bottom:9px solid #a5aa86; border-radius:18px 18px 8px 8px; background:linear-gradient(#eef8ef,#d4e9df); box-shadow:inset 0 2px 8px #fff9; overflow:hidden; }
.life-display-preview > div { min-width:0; align-self:center; text-align:center; }
.life-display-preview svg { width:100%; max-height:90px; }
.life-display-preview span { display:block; color:#57766c; font-size:11px; }
.life-display-preview .life-display-empty { grid-column:1/-1; color:#7c978c; font-size:12px; line-height:1.8; }
.life-choice-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.life-choice { position:relative; min-width:0; padding:12px 8px; border:1px solid #dce2cd; border-radius:15px; background:#fffdf5; color:#597451; text-align:center; }
.life-choice[aria-pressed=true] { border-color:#8fad7a; background:#edf5e0; box-shadow:inset 0 0 0 1px #b9cca5; }
.life-choice[aria-pressed=true]::after { content:"✓"; position:absolute; right:8px; top:6px; font-size:13px; color:#7b9a63; }
.life-choice:disabled { opacity:.48; }
.life-choice svg { width:100%; height:85px; }
.life-choice strong { display:block; font-size:12px; font-weight:500; line-height:1.7; }
.life-choice small { color:#869177; font-size:10px; }
.life-display-subheading { margin:28px 0 14px; font:500 20px var(--serif,serif); color:#59724e; }
.life-pot-card .life-pot-art { width:100%; height:142px; position:relative; margin-bottom:12px; }
.life-pot-art > svg { position:absolute; inset:0; width:100%; height:125px; }
.life-pot-art::after { content:""; position:absolute; bottom:0; left:calc(50% - 30px); width:60px; height:36px; border-radius:4px 4px 16px 16px; background:linear-gradient(105deg,#bd9777,#d5b691 50%,#bc9875); border-top:6px solid #b18e6e; box-shadow:0 5px 0 #d9d3bc44; }
.life-pot-card.is-locked .life-pot-art { filter:grayscale(.65); opacity:.7; }
.life-pot-card .life-progress { margin:10px 0 8px; }
.life-pot-card .life-pity { color:#879575; font-size:11px; }
.life-coop-note { display:flex; align-items:center; gap:12px; margin-top:24px; padding:15px 18px; border-radius:15px; border:1px solid #ded8be; color:#81734e; background:#f5f0dd; font-size:12px; line-height:1.8; }
.life-coop-note > span { font-size:20px; color:#ac9258; }
.life-coop-note p { margin:0; }
.life-care-relay { display:block; margin:6px 0; color:#6c8b60; font-size:10px; line-height:1.6; }
.life-decor-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px 19px; margin-top:13px; }
.life-decor-list p { margin:0; font-size:11px; line-height:1.8; color:#829171; }
.life-decor-list strong { font-weight:500; color:#677f58; }
.life-order-options button > strong { flex:none; font-size:15px; font-weight:500; color:#8c784c; text-align:right; }
.life-order-options button small { display:block; margin-top:4px; font-size:10px; font-weight:400; }
.life-savings { margin:0 0 22px; padding:18px 20px; border:1px solid #d2dcc0; border-radius:18px; background:linear-gradient(115deg,#edf2df,#faf7e9); }
.life-savings-top,.life-savings-numbers { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.life-savings-top > div { min-width:0; }
.life-savings h4 { margin:4px 0 12px; color:#49644c; font:500 21px/1.4 var(--serif,serif); overflow-wrap:anywhere; }
.life-text-button { flex:none; min-height:42px; padding:8px 0; border:0; background:none; color:#78836b; font:400 11px var(--sans,system-ui); cursor:pointer; }
.life-text-button:disabled { opacity:.55; cursor:default; }
.life-savings-numbers { margin:3px 0 10px; color:#6b7b61; font-size:11px; flex-wrap:wrap; }
.life-savings-numbers strong { font-weight:500; font-size:17px; color:#597747; }
.life-savings .life-progress { height:7px; }
.life-savings-shortfall { margin:10px 0 0; color:#5c754f; font-size:12px; }
.life-savings-note { margin:7px 0 0; color:#829074; font-size:10px; line-height:1.8; }
.life-card .life-project-budget { margin:0 0 12px; color:#8a7850; font-size:12px; }
.life-project-budget small { display:block; margin-top:3px; color:#8a9277; font-size:10px; }
.life-project-actions,.life-shop-actions { display:flex; flex-direction:column; gap:7px; margin-top:auto; }
.life-project-actions .farm-button,.life-shop-actions .farm-button { margin:0!important; width:100%; }
.life-project-actions [data-life-action="life-goal"],.life-shop-actions [data-life-action="life-goal"] { color:#7b866b; background:transparent; border-color:transparent; font-size:11px; }
.life-shop-card { display:flex; flex-direction:column; }
.life-shop-card.is-owned { background:#f5f7ec; }
.life-shop-card > p { min-height:3.6em; }
.life-shop-price { display:flex; align-items:baseline; flex-wrap:wrap; gap:7px; margin:1px 0 15px; }
.life-shop-price strong { font:500 23px/1.3 var(--serif,serif); color:#927c4d; }
.life-shop-price span { color:#8a8c73; font-size:10px; }
.life-shop-card .life-shop-condition { min-height:0; margin:-5px 0 13px; color:#8c7b57; font-size:11px; }
.life-buy-review { padding:11px; border:1px solid #d8dfc5; border-radius:12px; background:#f2f4e6; }
.life-buy-review p { margin:0 0 9px; font-size:12px; color:#5e7254; }
.life-buy-review .life-text-button { display:block; width:100%; padding-bottom:0; }
.life-shop-card .life-complete { margin-top:auto; }
@keyframes life-steam { 0%,100%{opacity:.22;transform:translateY(3px)} 50%{opacity:.7;transform:translateY(-3px)} }
@media(max-width:760px) { .life-grid,.life-board { grid-template-columns:repeat(2,minmax(0,1fr)); } .life-choice-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } .life-portion { display:block; } .life-portion > .life-art { width:100%; margin-bottom:9px; } }
@media(max-width:480px) {
  .life-savings { padding:15px; }.life-savings h4 { font-size:20px; }.life-savings-top { align-items:flex-start; gap:8px; }.life-savings-top .life-text-button { padding-top:0; }.life-shop-card { display:grid; grid-template-columns:86px minmax(0,1fr); column-gap:15px; }.life-shop-card > .life-art { width:86px; height:115px; grid-column:1; grid-row:1/5; margin:auto; }.life-shop-card > :not(.life-art) { grid-column:2; }.life-shop-card > p { min-height:0; }.life-shop-card > .life-shop-actions,.life-shop-card > .life-complete { grid-column:1/-1; }.life-shop-card h4 { font-size:18px; }.life-shop-price { margin-bottom:12px; }.life-shop-price span { font-size:9px; }
  .life-subnav { gap:6px; margin-bottom:19px; }.life-subnav button { flex:1; padding:8px 9px; min-height:42px; font-size:12px; white-space:nowrap; }
  .life-heading { margin-bottom:17px; gap:10px; }.life-heading h3 { font-size:22px; }.life-heading p { font-size:12px; }
  .life-grid,.life-board { grid-template-columns:1fr; gap:13px; }.life-card { padding:18px; }.life-recipe-card { display:grid; grid-template-columns:91px minmax(0,1fr); column-gap:15px; }.life-recipe-card > .life-art { width:91px; height:102px; grid-column:1; grid-row:1/5; margin:auto; }.life-recipe-card > :not(.life-art) { grid-column:2; }.life-recipe-card h4 { font-size:18px; }.life-recipe-card .life-ingredients { margin:5px 0 12px; }.life-recipe-card > .farm-button,.life-recipe-card > label { grid-column:1/-1; }.life-recipe-card > p { margin:0 0 4px; font-size:11px; }
  .life-stove { padding:14px; gap:10px; align-items:flex-start; }.life-stove > .life-art { width:77px; height:90px; }.life-stove h4 { font-size:19px; }.life-stove p { font-size:11px; }.life-stove .farm-button { width:100%; min-height:42px; }
  .life-table-grid,.life-meal-list { grid-template-columns:1fr; gap:13px; }.life-portion { display:flex; }.life-portion > .life-art { width:87px; margin:0; }.life-meal-row { padding:13px 15px; }.life-meal-actions .farm-button { min-height:44px; font-size:12px; }
  .life-project-card .life-art { max-width:230px; }.life-choice-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }.life-choice svg { height:80px; }.life-display-preview { padding:10px; gap:4px; }.life-display-preview span { font-size:10px; }.life-display-preview svg { height:70px; }.life-kitchen-shelf { padding:11px; gap:7px; }.life-kitchen-shelf p { font-size:11px; }.life-kitchen-shelf .farm-button { padding:8px 10px; font-size:11px; }
}
@media(max-height:500px) and (min-width:481px) { .life-subnav { margin-bottom:15px; }.life-subnav button { min-height:38px; }.life-heading h3 { font-size:21px; }.life-grid,.life-board { grid-template-columns:repeat(3,minmax(0,1fr)); }.life-card { padding:14px; }.life-card .life-art { height:105px; }.life-choice-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media(prefers-reduced-motion:reduce) { .life-art .life-steam { animation:none; }.life-progress > i { transition:none; } }

/* Ingredient-led cooking: choices remain small enough for a phone. */
.life-mixing-bowl{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:20px;border:1px solid #d6ddc5;border-radius:18px;background:#f3f5e7}.life-mixing-bowl>div{flex:1;min-width:180px}.life-mixing-bowl h4{font-size:17px;line-height:1.6;margin:7px 0 0;overflow-wrap:anywhere}.life-ingredient-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.life-ingredient-card{display:grid;grid-template-columns:64px minmax(0,1fr);gap:9px;align-items:center;padding:12px;background:#fffdf5;border:1px solid #dde3d0;border-radius:14px}.life-ingredient-card>svg{width:64px;height:64px}.life-ingredient-card strong{font-size:14px;font-weight:500}.life-ingredient-card small{display:block;font-size:11px;margin-top:6px;color:#74836c}.life-ingredient-stepper{grid-column:1/-1;display:flex;justify-content:center;align-items:center;gap:15px}.life-ingredient-stepper .farm-button{min-width:42px;min-height:42px;padding:5px 9px;font-size:19px}.life-ingredient-stepper output{min-width:18px;text-align:center;font-size:16px}.life-experiment-fish{display:flex;align-items:end;flex-wrap:wrap;gap:12px;max-width:620px}.life-experiment-fish label{flex:1;min-width:190px;font-size:13px;display:grid;gap:7px}.life-experiment-fish select{width:100%;max-width:100%;min-height:44px;padding:9px;border:1px solid #cad5bc;border-radius:10px;color:#435f49;background:#fffdf5}.life-experiment-fish small{font-size:11px;color:#74836c}.life-recipe-book{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.life-recipe-book .life-card{min-width:0;padding:15px}.life-recipe-book .life-art{width:100%;height:125px}.life-recipe-book h4{font-size:17px;line-height:1.6}.life-undiscovered-recipe{text-align:center;background:#f4f5ec!important}.life-undiscovered-recipe h4{font-weight:400;color:#7f8e74}.life-undiscovered-recipe .life-art{opacity:.7}.life-known-ingredients{font-size:12px;color:#647d59;line-height:1.8;padding:10px 0;border-top:1px solid #e4e8d9}.life-discovered-recipe>small{font-size:11px;color:#7b8871}.life-mystery-art{max-width:220px}.life-order-options{max-height:340px;overflow-y:auto;overscroll-behavior:contain}
@media(max-width:700px){.life-ingredient-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.life-recipe-book{grid-template-columns:repeat(2,minmax(0,1fr))}.life-mixing-bowl{padding:15px}.life-mixing-bowl>div{flex-basis:100%}.life-heading{flex-wrap:wrap}.life-heading>span{font-size:23px}}
@media(max-width:360px){.life-ingredient-card{grid-template-columns:44px minmax(0,1fr);padding:9px;gap:5px}.life-ingredient-card>svg{width:44px;height:50px}.life-ingredient-card strong{font-size:12px}.life-ingredient-stepper{gap:9px}.life-recipe-book{gap:9px}.life-recipe-book .life-card{padding:10px}.life-recipe-book h4{font-size:15px}.life-recipe-book .life-art{height:95px}}

/* Readable recipes, with one local preparation step before anything is spent. */
.life-recipe-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(125px,.55fr);gap:12px;margin-bottom:15px}
.life-recipe-tools label{display:grid;gap:6px;min-width:0;color:#6b7e61;font-size:12px}
.life-recipe-tools input,.life-recipe-tools select{width:100%;min-width:0;min-height:44px;padding:10px 12px;border:1px solid #d1d9c3;border-radius:12px;background:#fffdf5;color:#435f49;font:inherit;box-sizing:border-box}
.life-recipe-tools input:focus,.life-recipe-tools select:focus{outline:2px solid #9cae88;outline-offset:2px}
.life-recipe-card>small{display:block;margin:0 0 12px;color:#7b8871;font-size:11px;line-height:1.6}
.life-recipe-ingredients{display:grid;gap:6px}
.life-recipe-ingredients li{overflow-wrap:anywhere}
.life-recipe-ingredients li>span{display:block;color:inherit;opacity:.85}
.life-prepared-name{display:block;margin-top:8px;font-size:16px;font-weight:500;color:#48664d}
.life-mixing-bowl .life-ingredients{margin-bottom:0}
@media(max-width:600px){.life-recipe-book{grid-template-columns:1fr;gap:12px}.life-recipe-book .life-card{display:grid;grid-template-columns:86px minmax(0,1fr);column-gap:14px;padding:15px}.life-recipe-book .life-art{grid-column:1;grid-row:1/5;width:86px;height:106px;align-self:start}.life-recipe-book .life-card>:not(.life-art){grid-column:2}.life-recipe-book .life-card>.farm-button{grid-column:1/-1}.life-recipe-book h4{font-size:18px}.life-recipe-book .life-card>p{font-size:11px;margin-top:0}.life-recipe-book .life-ingredients{margin:6px 0 10px}.life-recipe-tools{gap:8px}.life-recipe-tools input,.life-recipe-tools select{padding:9px}}

/* Specific catches make special meals; quiet labels keep the recipe shelf readable. */
.life-quality{display:inline-block;vertical-align:middle;margin:3px 0 3px 4px;padding:2px 7px;border-radius:20px;border:1px solid #d5ddc6;background:#edf0e4;color:#718463;font:500 10px/1.5 var(--sans,system-ui,sans-serif);white-space:nowrap;letter-spacing:.04em}
.life-quality.is-fine{color:#577d78;border-color:#c9ded4;background:#eaf2eb}.life-quality.is-rare{color:#917044;border-color:#dfd0ad;background:#f5eed9}.life-quality.is-treasure{color:#8a6976;border-color:#dcc6cb;background:#f4e8e9}
.life-grade-rare{border-color:#dcccaa}.life-grade-treasure{border-color:#d8bec5;background:linear-gradient(145deg,#fffdf4,#f8f0ed)}
.life-recipe-value{display:block;margin-top:4px;color:#90794f}.life-recipe-preview{margin-top:12px;padding-top:11px;border-top:1px solid #d9dfcb;line-height:1.8}.life-recipe-preview>span:first-child{display:block;font-size:11px;color:#718168}.life-recipe-preview>strong{font-size:16px;font-weight:500;color:#48664d}.life-recipe-preview>small{display:block;font-size:11px;color:#92794e}.life-fish-required{font-size:12px;color:#8c7758;margin-bottom:0}.life-fish-hint{margin:12px 0;padding:11px 14px;border-radius:12px;background:#f6f0df;color:#86734e;font-size:12px;line-height:1.8}.life-fish-hint .life-text-button{padding:4px 0;font-size:12px;color:#667d58}.life-stove .life-quality,.life-portion .life-quality,.life-meal-row .life-quality{margin-left:0}

.little-world.is-layout .world-controls,.little-world.is-layout .world-nearby,.little-world.is-layout .world-peer-bubble,.little-world.is-layout .world-speech,.little-world.is-layout .world-social-form,.little-world.is-layout .world-brand,.little-world.is-layout .world-connection{display:none!important}
.little-world.is-layout .world-top-tools>button:not([data-world-music]){display:none}
.little-world.is-layout .world-header{left:auto;right:max(16px,env(safe-area-inset-right));display:block;width:auto}
.little-world.is-layout .world-top-tools{display:flex;justify-content:flex-end}
.island-layout-hud{position:absolute;inset:0;z-index:8;pointer-events:none;color:#3f5c47;font:13px/1.6 system-ui,sans-serif}
.island-layout-hud *{box-sizing:border-box}.island-layout-hud button,.island-layout-hud select{font:inherit;touch-action:manipulation}.island-layout-hud button{min-height:42px;border:1px solid #cbd7bc;border-radius:12px;background:#f5f6e9;color:#466349;padding:8px 13px}.island-layout-hud button:disabled{opacity:.5;cursor:default}
.island-layout-heading{position:absolute;top:max(20px,env(safe-area-inset-top));left:max(24px,env(safe-area-inset-left));display:flex;align-items:center;gap:18px;max-width:calc(100% - 104px);pointer-events:none;text-shadow:0 1px 12px #fffef1}
.island-layout-heading h2{margin:1px 0;font:500 25px/1.4 Georgia,'Songti SC',serif;letter-spacing:2px}.island-layout-heading>div>span{font-size:10px;letter-spacing:1px}.island-layout-status{padding:4px 9px;border:1px solid #ffffff80;border-radius:20px;background:#fffcebaf;font-size:10px;white-space:nowrap}
.island-layout-panel{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(540px,calc(100% - 32px));max-height:47dvh;padding:17px 20px 15px;overflow:auto;overscroll-behavior:contain;border:1px solid #fffc;border-radius:22px;background:#fffdf1f0;box-shadow:0 8px 40px #264a3529;backdrop-filter:blur(15px);pointer-events:auto}
.island-layout-selectors{display:flex;gap:11px;align-items:flex-end}.island-layout-selectors label{display:block;min-width:0;flex:0 1 115px}.island-layout-selectors label>span{display:block;font-size:10px;color:#78876c;margin-bottom:4px}.island-layout-selectors .island-layout-item-selector{flex:1}.island-layout-selectors select{width:100%;height:44px;min-width:0;color:#466349;background:#f8f8ed;border:1px solid #cbd7bc;border-radius:11px;padding:8px;font-size:13px}
.island-layout-selection{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 12px;margin:13px 0 10px}.island-layout-selection strong{font-size:14px;font-weight:500;overflow-wrap:anywhere}.island-layout-selection>span{font-size:10px;color:#78866c}.island-layout-adjust{display:flex;align-items:center;justify-content:space-between;gap:8px}.island-layout-adjust>button{flex:1;white-space:nowrap;padding:8px}.island-layout-nudge{display:flex;gap:4px}.island-layout-nudge button{width:38px;min-height:42px;padding:8px 0}
.island-layout-hud .island-layout-text{border-color:transparent;background:transparent;color:#78876c;font-size:11px}.island-layout-hud [data-layout-action=reset-item]{display:block;margin:2px 0 0 auto;min-height:32px;padding:4px 0}.island-layout-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #dee4d0}.island-layout-actions>button:first-child{flex:1}.island-layout-hud button.is-primary{border-color:#6e8b5d;background:#779367;color:#fffef4}.island-layout-hint{margin:11px 0 1px;font-size:12px;color:#728166;line-height:1.8}.island-layout-notice:empty{display:none}.island-layout-notice{margin:0 0 10px;color:#58764e;font-size:12px;overflow-wrap:anywhere}.island-layout-error{margin:0 0 12px;border-radius:11px;padding:10px 12px;background:#f6e8d9;color:#8c623e;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.island-layout-confirm{margin-top:10px;padding:12px;background:#eeeede;border:1px solid #d9dcc5;border-radius:12px}.island-layout-confirm p{margin:0 0 9px;font-size:12px}.island-layout-confirm>div{display:flex;flex-wrap:wrap;gap:7px}
@media(max-width:480px){.island-layout-heading{top:max(14px,env(safe-area-inset-top));left:max(15px,env(safe-area-inset-left));gap:9px}.island-layout-heading h2{font-size:23px}.island-layout-heading>div>span{font-size:9px}.island-layout-panel{bottom:max(10px,env(safe-area-inset-bottom));width:calc(100% - 20px);padding:13px 13px 12px;max-height:48dvh;border-radius:18px}.island-layout-selectors{gap:8px}.island-layout-selectors label{flex-basis:91px}.island-layout-selectors select{font-size:12px;padding:7px}.island-layout-adjust{gap:4px}.island-layout-adjust>button{font-size:11px;padding:7px 5px}.island-layout-nudge{gap:3px}.island-layout-nudge button{width:31px;font-size:14px}.island-layout-actions{gap:6px;margin-top:8px;padding-top:10px}.island-layout-actions button{font-size:12px;padding:8px 10px}.island-layout-actions>.island-layout-text{font-size:10px;padding:7px 3px}}
@media(max-height:500px) and (min-width:600px){.island-layout-panel{left:auto;right:max(12px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom));transform:none;width:310px;max-height:calc(100dvh - 72px);padding:12px}.island-layout-heading{top:max(12px,env(safe-area-inset-top));left:18px}.island-layout-selectors label{flex-basis:88px}.island-layout-selectors select{font-size:12px}.island-layout-adjust{gap:4px}.island-layout-adjust>button{font-size:11px;padding:6px}.island-layout-nudge{gap:2px}.island-layout-nudge button{width:30px}.island-layout-selection{margin:9px 0 7px}.island-layout-actions{gap:5px;margin-top:8px;padding-top:9px}.island-layout-actions button{font-size:11px;padding:7px 9px}.island-layout-actions>.island-layout-text{font-size:10px;padding:7px 3px}}
@media(prefers-reduced-motion:reduce){.island-layout-hud *{scroll-behavior:auto}}
.island-layout-actions{position:sticky;bottom:0;background:#fffdf1;z-index:1}
.island-layout-hud.is-reset-review .island-layout-selectors,.island-layout-hud.is-reset-review .island-layout-selection,.island-layout-hud.is-reset-review .island-layout-adjust,.island-layout-hud.is-reset-review [data-layout-action=reset-item],.island-layout-hud.is-reset-review .island-layout-hint{display:none}
.island-layout-hud.is-reset-review .island-layout-confirm{margin-top:0}

.island-layout-secondary{display:flex;justify-content:space-between;gap:10px}.island-layout-hud .island-layout-secondary button{min-height:32px;padding:4px 0;margin:2px 0 0}.island-layout-hud.is-reset-review .island-layout-secondary{display:none}

/* A quiet shared bookshelf inside the island; content and uploads remain private. */
.knowledge-dialog,.knowledge-editor,.knowledge-viewer { --knowledge-ink:#405a48; --knowledge-muted:#788573; --knowledge-line:#e0e3d1; position:fixed; inset:0; box-sizing:border-box; padding:0; margin:auto; border:1px solid #e3e4d0; border-radius:27px; color:var(--knowledge-ink); background:#fcfaf2; box-shadow:0 24px 90px #233b344d; font-family:var(--sans,system-ui,sans-serif); }
.knowledge-dialog { width:min(1120px,calc(100vw - 48px)); height:min(840px,calc(100dvh - 44px)); max-width:none; max-height:calc(100dvh - 44px); overflow:hidden; }
.knowledge-dialog[open] { display:flex; flex-direction:column; }
.knowledge-dialog:focus,.knowledge-editor:focus,.knowledge-viewer:focus { outline:none; }
.knowledge-dialog:not([open]),.knowledge-editor:not([open]),.knowledge-viewer:not([open]) { display:none; }
.knowledge-dialog::backdrop,.knowledge-editor::backdrop,.knowledge-viewer::backdrop { background:#294b3e57; backdrop-filter:blur(5px); }
.knowledge-dialog *,.knowledge-editor *,.knowledge-viewer * { box-sizing:border-box; }
.knowledge-dialog button,.knowledge-editor button,.knowledge-viewer button { font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.knowledge-dialog button:disabled,.knowledge-editor button:disabled,.knowledge-viewer button:disabled { cursor:default; opacity:.55; }
.knowledge-dialog button:focus-visible,.knowledge-editor button:focus-visible,.knowledge-viewer button:focus-visible,.knowledge-dialog a:focus-visible,.knowledge-viewer a:focus-visible { outline:2px solid #78966c; outline-offset:3px; }
.knowledge-dialog input,.knowledge-editor input,.knowledge-editor select,.knowledge-editor textarea { font:inherit; }
.knowledge-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:25px 30px 22px; background:linear-gradient(110deg,#edf1e2,#faf6e9); border-bottom:1px solid var(--knowledge-line); }
.knowledge-eyebrow { font-size:9px; font-weight:600; letter-spacing:.18em; color:#7c8d70; }
.knowledge-header h2 { margin:4px 0 5px; font:500 29px/1.25 var(--serif,serif); color:#3d5b45; }
.knowledge-header p { margin:0; font-size:12px; color:#7c896f; }
.knowledge-close { display:grid; place-items:center; flex:none; width:41px; height:41px; border:0; border-radius:50%; padding:12px; color:#758969; background:#e5ecd9; }
.knowledge-close svg { width:17px; height:17px; }
.knowledge-layout { display:grid; grid-template-columns:184px minmax(0,1fr); flex:1; min-height:0; }
.knowledge-sidebar { display:flex; flex-direction:column; gap:20px; background:#f4f4e9; padding:27px 15px 18px; border-right:1px solid var(--knowledge-line); min-width:0; min-height:0; }
.knowledge-sidebar-heading { display:flex; align-items:center; justify-content:space-between; padding:0 8px; color:#7e8a72; font-size:11px; }
.knowledge-sidebar-heading button { display:grid; place-items:center; width:27px; height:27px; padding:6px; color:#75866a; border:1px solid #d9dfcb; border-radius:8px; background:#fcfcf4; }
.knowledge-sidebar-heading svg { width:14px; height:14px; }
.knowledge-categories { display:flex; flex-direction:column; gap:6px; overflow-y:auto; min-height:0; }
.knowledge-categories button { display:flex; align-items:center; gap:9px; width:100%; flex:none; padding:11px 9px; border:1px solid transparent; border-radius:11px; color:#7c8972; background:transparent; text-align:left; }
.knowledge-categories button[aria-current=page] { color:#486548; background:#e5ecd9; border-color:#d7dfc6; }
.knowledge-categories .knowledge-glyph { width:23px; height:23px; flex:none; }
.knowledge-categories span { flex:1; min-width:0; font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.knowledge-categories small { min-width:17px; font-size:10px; text-align:center; color:#8b967e; }
.knowledge-sidebar-foot { display:flex; flex-direction:column; gap:11px; margin-top:auto; padding:12px 6px 0; border-top:1px solid #e2e5d3; }
.knowledge-sidebar-foot > span { display:flex; gap:5px; align-items:center; color:#95a089; font-size:9px; }
.knowledge-sidebar-foot svg { width:12px; height:12px; }
.knowledge-sidebar-foot button { border:0; background:transparent; color:#839078; padding:6px 0; text-align:left; font-size:10px; }
.knowledge-sidebar-foot button.is-active { color:#486548; text-decoration:underline; text-underline-offset:4px; }
.knowledge-main { padding:26px 28px 30px; overflow-y:auto; overscroll-behavior:contain; min-width:0; min-height:0; scrollbar-width:thin; scrollbar-color:#c9d3ba transparent; }
.knowledge-toolbar { display:flex; gap:10px; align-items:center; }
.knowledge-search { display:flex; align-items:center; gap:9px; flex:1; min-width:0; padding:0 12px; border:1px solid #dde2cf; border-radius:11px; background:#fffef7; color:#86937b; }
.knowledge-search svg { width:18px; height:18px; flex:none; }
.knowledge-search input { width:100%; min-width:0; padding:12px 0; border:0; outline:0; background:transparent; font-size:12px; color:#496149; }
.knowledge-search input::placeholder { color:#a0a68e; }
.knowledge-search:focus-within { border-color:#9aaf83; box-shadow:0 0 0 2px #dce5cf80; }
.knowledge-button { display:inline-flex; justify-content:center; align-items:center; gap:7px; min-height:42px; padding:10px 15px; border:1px solid #7e956c; border-radius:11px; background:#7e966a; color:#fffdf2; text-decoration:none; font-size:12px; line-height:1.45; font-weight:500; white-space:nowrap; box-shadow:0 2px 0 #465c2d10; }
.knowledge-button.is-secondary { color:#6f855d; background:#f2f4e6; border-color:#d7dfc5; box-shadow:none; }
.knowledge-button svg { width:16px; height:16px; flex:none; }
.knowledge-filter-row { display:flex; align-items:center; gap:10px; margin:17px 0 21px; }
.knowledge-filters { display:flex; flex:1; min-width:0; gap:7px; flex-wrap:wrap; }
.knowledge-filters button { border:1px solid transparent; border-radius:20px; min-height:31px; padding:6px 11px; font-size:11px; background:transparent; color:#87947b; white-space:nowrap; }
.knowledge-filters button[aria-pressed=true] { background:#eff2e3; border-color:#d2ddc0; color:#5e7a4f; }
.knowledge-icon-button { display:grid; place-items:center; flex:none; width:32px; height:32px; padding:8px; border:0; background:transparent; color:#91a082; }
.knowledge-icon-button svg { width:16px; height:16px; }
.knowledge-section-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:18px 0; }
.knowledge-section-heading > div { display:flex; align-items:baseline; gap:13px; flex-wrap:wrap; }
.knowledge-section-heading h3 { margin:0; font:500 21px/1.4 var(--serif,serif); }
.knowledge-section-heading span { color:#96a087; font-size:10px; }
.knowledge-text-button { display:inline-flex; align-items:center; gap:5px; border:0; padding:7px 0; background:transparent; color:#82916f; font-size:11px; }
.knowledge-text-button svg { width:13px; height:13px; }
.knowledge-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; align-items:stretch; }
.knowledge-card { border:1px solid #e1e3d1; border-radius:16px; overflow:hidden; background:#fffdf6; display:flex; flex-direction:column; min-width:0; transition:border-color .15s; }
.knowledge-card:hover { border-color:#b6c6a2; }
.knowledge-card-open { display:flex; flex-direction:column; padding:0; border:0; text-align:left; color:inherit; background:transparent; flex:1; width:100%; min-width:0; }
.knowledge-cover { position:relative; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:5px; width:100%; height:106px; color:#91a47e; background:linear-gradient(135deg,#eef0df,#f3ecda); overflow:hidden; }
.knowledge-cover > .knowledge-glyph { width:52px; height:52px; }
.knowledge-cover > span { font-size:8px; letter-spacing:.08em; color:#9a9b7e; }
.kind-pdf .knowledge-cover { color:#bd8d78; background:linear-gradient(135deg,#f2e8dd,#f9f0e3); }
.kind-word .knowledge-cover { color:#7c9d99; background:linear-gradient(135deg,#e7eee6,#edf2eb); }
.kind-slides .knowledge-cover { color:#c09b68; background:linear-gradient(135deg,#f0e7d5,#f8f0db); }
.kind-image .knowledge-cover { color:#91a278; background:linear-gradient(135deg,#e5ebd8,#f2eedb); }
.kind-link .knowledge-cover { color:#8d9eaa; background:linear-gradient(135deg,#e4eceb,#eff2e9); }
.knowledge-card-copy { display:block; min-width:0; width:100%; padding:16px 16px 12px; }
.knowledge-card-kind { display:block; font-size:8px; color:#929c83; letter-spacing:.02em; line-height:1.6; }
.knowledge-card h4 { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; margin:7px 0; font:500 16px/1.5 var(--serif,serif); overflow-wrap:anywhere; color:#49624c; }
.knowledge-card-copy > p { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; margin:7px 0 12px; font-size:11px; line-height:1.75; color:#839076; overflow-wrap:anywhere; }
.knowledge-card-meta { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:5px; color:#9ca38c; font-size:9px; line-height:1.7; overflow-wrap:anywhere; }
.knowledge-card-meta > span { white-space:nowrap; }
.knowledge-card footer { display:flex; align-items:center; gap:10px; padding:8px 15px 10px; border-top:1px solid #eef0e4; }
.knowledge-card footer > span { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:8px; color:#abb09c; }
.knowledge-card footer > button { flex:none; padding:4px 0; border:0; background:transparent; color:#8e9b7f; font-size:10px; }
.knowledge-card.is-study { grid-column:1 / -1; border-color:#d8dfc2; background:#f8f8e9; }
.knowledge-card.is-study .knowledge-card-open { display:grid; grid-template-columns:180px minmax(0,1fr); align-items:stretch; }
.is-study .knowledge-cover { height:100%; min-height:184px; background:linear-gradient(140deg,#e7edcf,#e7e2c8); color:#728963; gap:12px; padding:18px 10px; }
.is-study .knowledge-cover > .knowledge-glyph { width:85px; height:85px; transform:rotate(-7deg); background:#faf6e4; padding:14px 10px; border-radius:5px 9px 9px 5px; border-left:6px solid #b4bf94; box-shadow:8px 9px 0 #8c9c7020; z-index:1; }
.is-study .knowledge-cover > span { font-size:9px; color:#82916d; z-index:1; }
.is-study .knowledge-cover i { position:absolute; height:90px; width:90px; border:1px solid #ffffff50; border-radius:50%; bottom:-25px; left:-23px; }
.is-study .knowledge-cover i:last-child { height:135px; width:135px; top:-50px; right:-30px; left:auto; }
.is-study .knowledge-card-copy { padding:23px 25px 19px; display:flex; flex-direction:column; }
.is-study h4 { font-size:22px; margin:7px 0 5px; }
.is-study .knowledge-card-copy > p { font-size:12px; -webkit-line-clamp:2; }
.knowledge-study-start { display:flex; align-items:center; gap:12px; margin-top:16px; color:#6e875b; font-size:12px; }
.knowledge-study-start svg { width:18px; height:18px; }
.knowledge-empty { grid-column:1/-1; display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:280px; padding:35px; text-align:center; color:#8d9b7d; }
.knowledge-empty > svg { width:65px; height:65px; color:#afbb98; }
.knowledge-empty h3 { font:500 22px var(--serif,serif); margin:18px 0 6px; }
.knowledge-empty p { font-size:12px; line-height:1.8; max-width:310px; margin:8px 0 20px; }
.knowledge-error,.knowledge-notice { padding:11px 14px; border:1px solid #e8d9bf; border-radius:10px; background:#fbf0dd; color:#9a704a; font-size:12px; line-height:1.75; overflow-wrap:anywhere; margin:9px 0; }
.knowledge-notice { display:flex; align-items:center; gap:6px; color:#6b825c; background:#edf3e2; border-color:#dbe4ca; }
.knowledge-notice svg { width:17px; height:17px; flex:none; }
.knowledge-editor { width:min(560px,calc(100vw - 32px)); max-width:none; max-height:calc(100dvh - 36px); overflow-y:auto; overscroll-behavior:contain; padding:27px; }
.knowledge-form header { display:flex; align-items:flex-start; justify-content:space-between; gap:15px; margin-bottom:24px; }
.knowledge-form h3 { margin:6px 0 0; font:500 26px/1.4 var(--serif,serif); color:#466149; }
.knowledge-form > label { display:flex; flex-direction:column; gap:8px; margin-bottom:18px; color:#6f8065; font-size:12px; }
.knowledge-form > label > span { color:#a0a58d; font-size:10px; }
.knowledge-form input:not([type=file]),.knowledge-form select,.knowledge-form textarea { width:100%; padding:11px 12px; min-height:44px; border:1px solid #d9dfcb; border-radius:10px; background:#fffdf5; color:#4c654d; outline:0; font-size:14px; line-height:1.6; }
.knowledge-form textarea { min-height:98px; resize:vertical; }
.knowledge-form input:focus,.knowledge-form select:focus,.knowledge-form textarea:focus { border-color:#9caf83; box-shadow:0 0 0 2px #d9e4cb70; }
.knowledge-form input::placeholder,.knowledge-form textarea::placeholder { color:#adb29e; }
.knowledge-form > label.knowledge-dropzone { position:relative; align-items:center; text-align:center; gap:7px; padding:25px 15px; border:1px dashed #b9c5a2; border-radius:16px; background:#f0f3e5; cursor:pointer; overflow:hidden; }
.knowledge-dropzone > svg { width:26px; height:26px; margin-bottom:6px; color:#8d9f76; }
.knowledge-dropzone strong { font-size:15px; font-weight:500; }
.knowledge-form .knowledge-dropzone > span { font-size:11px; color:#8b987b; }
.knowledge-dropzone small { font-size:10px; color:#a1a88e; }
.knowledge-dropzone input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.knowledge-upload-list { display:flex; flex-direction:column; gap:8px; margin:-5px 0 18px; }
.knowledge-upload-list > div { display:flex; gap:12px; align-items:center; justify-content:space-between; border-bottom:1px solid #e9ecdc; padding:8px 0; font-size:12px; }
.knowledge-upload-list span { min-width:0; overflow-wrap:anywhere; }
.knowledge-upload-list small { flex:none; color:#81956c; font-size:11px; }
.knowledge-upload-progress { font-size:11px; line-height:1.8; color:#899776; margin:10px 0; }
.knowledge-form footer { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-top:24px; }
.knowledge-form footer > div { display:flex; gap:9px; }
.knowledge-form footer .knowledge-text-button { font-size:10px; color:#a19275; }
.knowledge-viewer { width:min(1120px,calc(100vw - 40px)); height:min(880px,calc(100dvh - 36px)); max-width:none; max-height:calc(100dvh - 36px); overflow:hidden; }
.knowledge-viewer[open] { display:flex; flex-direction:column; }
.knowledge-viewer-header { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:18px 24px; border-bottom:1px solid #e1e5d0; background:#f0f3e5; }
.knowledge-viewer-header > div { min-width:0; }
.knowledge-viewer-header h3 { margin:4px 0 0; font:500 20px/1.4 var(--serif,serif); overflow-wrap:anywhere; }
.knowledge-viewer-header span { color:#8b9b7b; font-size:10px; }
.knowledge-preview-content { flex:1; min-height:0; overflow:auto; display:flex; flex-direction:column; }
.knowledge-preview-loading { display:grid; place-items:center; flex:1; color:#93a181; font-size:13px; }
.knowledge-preview-footer { display:flex; gap:15px; align-items:center; justify-content:space-between; padding:12px 24px; border-top:1px solid #e1e5d0; background:#f6f6eb; }
.knowledge-preview-footer > span { min-width:0; overflow-wrap:anywhere; font-size:10px; color:#98a185; }
.knowledge-preview-footer a { flex:none; }
.knowledge-image-preview { display:grid; place-items:center; flex:1; min-height:0; padding:20px; background:#eff0e5; }
.knowledge-image-preview img { display:block; max-width:100%; max-height:100%; object-fit:contain; border-radius:4px; }
.knowledge-text-preview { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; padding:25px; font:14px/1.9 ui-monospace,monospace; color:#526351; background:#fffdf7; }
.knowledge-pdf-preview { width:100%; flex:1; min-height:240px; border:0; background:#ebece4; }
.knowledge-preview-tip { flex:none; padding:8px 18px; margin:0; font-size:10px; color:#879378; text-align:center; background:#f8f7ed; }
.knowledge-file-view,.knowledge-link-view { display:flex; flex:1; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:12px; padding:30px; min-height:0; overflow-y:auto; }
.knowledge-file-view > svg,.knowledge-link-view > svg { width:88px; height:88px; color:#9eaf8d; }
.knowledge-file-view h4,.knowledge-link-view h4 { margin:5px 0; font:500 23px/1.5 var(--serif,serif); overflow-wrap:anywhere; }
.knowledge-file-view p,.knowledge-link-view p { max-width:430px; margin:0 0 12px; color:#819274; font-size:13px; line-height:1.8; overflow-wrap:anywhere; }
.knowledge-link-view > span { font-size:11px; color:#a1ab94; margin-bottom:8px; overflow-wrap:anywhere; }
@media(max-width:850px) {
  .knowledge-dialog { width:calc(100vw - 24px); height:calc(100dvh - 28px); max-height:calc(100dvh - 28px); }
  .knowledge-layout { grid-template-columns:150px minmax(0,1fr); }
  .knowledge-sidebar { padding:20px 10px 14px; }
  .knowledge-main { padding:20px; }
  .knowledge-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; }
  .knowledge-toolbar { flex-wrap:wrap; }
  .knowledge-search { flex:1 1 100%; }
  .knowledge-toolbar > button { flex:1; }
  .knowledge-card.is-study .knowledge-card-open { grid-template-columns:125px minmax(0,1fr); }
  .is-study .knowledge-card-copy { padding:18px; }
  .is-study h4 { font-size:19px; }
}
@media(max-width:560px) {
  .knowledge-dialog { width:100vw; height:100dvh; max-height:100dvh; border:0; border-radius:0; }
  .knowledge-header { padding:max(16px,env(safe-area-inset-top)) max(17px,env(safe-area-inset-right)) 15px max(17px,env(safe-area-inset-left)); gap:15px; }
  .knowledge-header h2 { font-size:27px; }
  .knowledge-header p { font-size:11px; }
  .knowledge-eyebrow { font-size:8px; letter-spacing:.15em; }
  .knowledge-close { width:38px; height:38px; padding:11px; }
  .knowledge-layout { display:flex; flex-direction:column; }
  .knowledge-sidebar { flex:none; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px; padding:10px 15px; border-right:0; border-bottom:1px solid var(--knowledge-line); }
  .knowledge-sidebar-heading { grid-column:2; grid-row:1; padding:0; }
  .knowledge-sidebar-heading > span { display:none; }
  .knowledge-sidebar-heading button { width:32px; height:32px; }
  .knowledge-categories { grid-column:1; grid-row:1; flex-direction:row; overflow-x:auto; scrollbar-width:none; align-items:center; gap:6px; }
  .knowledge-categories::-webkit-scrollbar { display:none; }
  .knowledge-categories button { width:auto; padding:7px 10px; border-radius:9px; min-height:34px; }
  .knowledge-categories .knowledge-glyph { width:17px; height:17px; }
  .knowledge-categories span { font-size:11px; white-space:nowrap; }
  .knowledge-categories small { font-size:9px; min-width:10px; }
  .knowledge-sidebar-foot { grid-column:1/-1; grid-row:2; flex-direction:row; align-items:center; justify-content:space-between; gap:9px; border-top:0; margin:0; padding:0 2px; }
  .knowledge-sidebar-foot > span { font-size:9px; }
  .knowledge-sidebar-foot button { font-size:10px; padding:1px 0; }
  .knowledge-main { flex:1; padding:17px max(15px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(15px,env(safe-area-inset-left)); }
  .knowledge-toolbar { gap:8px; }
  .knowledge-search input { padding:11px 0; font-size:12px; }
  .knowledge-button { min-height:40px; padding:9px 13px; font-size:12px; }
  .knowledge-filter-row { margin:13px 0 15px; gap:4px; }
  .knowledge-filters { gap:3px; }
  .knowledge-filters button { padding:6px 8px; font-size:10px; }
  .knowledge-icon-button { width:29px; height:29px; padding:7px; }
  .knowledge-section-heading { margin:14px 0; gap:9px; }
  .knowledge-section-heading h3 { font-size:20px; }
  .knowledge-section-heading > div { gap:9px; }
  .knowledge-section-heading span { font-size:10px; }
  .knowledge-text-button { font-size:10px; white-space:nowrap; }
  .knowledge-grid { gap:12px; }
  .knowledge-cover { height:92px; }
  .knowledge-cover > svg { width:44px; height:44px; }
  .knowledge-cover > span { font-size:7px; }
  .knowledge-card-copy { padding:13px 11px 10px; }
  .knowledge-card h4 { font-size:16px; line-height:1.55; }
  .knowledge-card-copy > p { font-size:11px; -webkit-line-clamp:3; }
  .knowledge-card-kind { font-size:8px; }
  .knowledge-card-meta { font-size:9px; }
  .knowledge-card footer { gap:10px; padding:7px 11px; }
  .knowledge-card footer > span { display:none; }
  .knowledge-card footer > button { min-height:28px; font-size:11px; }
  .knowledge-card footer > button:first-of-type { margin-left:auto; }
  .knowledge-card.is-study .knowledge-card-open { grid-template-columns:96px minmax(0,1fr); }
  .is-study .knowledge-cover { min-height:190px; padding:16px 7px; }
  .is-study .knowledge-cover > .knowledge-glyph { width:62px; height:75px; padding:12px 4px; border-left-width:4px; }
  .is-study .knowledge-cover > span { font-size:7px; letter-spacing:0; }
  .is-study .knowledge-card-copy { padding:16px 14px 13px; }
  .is-study h4 { font-size:19px; line-height:1.5; }
  .is-study .knowledge-card-copy > p { font-size:11px; margin-bottom:10px; -webkit-line-clamp:2; }
  .knowledge-study-start { margin-top:12px; font-size:11px; }
  .knowledge-study-start svg { width:16px; height:16px; }
  .knowledge-empty { padding:30px 20px; min-height:240px; }
  .knowledge-editor { width:calc(100vw - 20px); max-height:calc(100dvh - 24px); padding:23px 20px; border-radius:22px; }
  .knowledge-form h3 { font-size:23px; }
  .knowledge-form input:not([type=file]),.knowledge-form select,.knowledge-form textarea { font-size:16px; }
  .knowledge-form footer { flex-wrap:wrap; }
  .knowledge-form footer > div { margin-left:auto; }
  .knowledge-viewer { width:100vw; height:100dvh; max-height:100dvh; border:0; border-radius:0; }
  .knowledge-viewer-header { padding:13px 16px; gap:12px; }
  .knowledge-viewer-header h3 { font-size:18px; }
  .knowledge-preview-footer { padding:10px 15px max(10px,env(safe-area-inset-bottom)); gap:10px; }
  .knowledge-preview-footer > span { font-size:9px; }
  .knowledge-preview-footer .knowledge-button { font-size:11px; }
  .knowledge-image-preview { padding:12px; }
  .knowledge-text-preview { padding:18px; font-size:13px; }
  .knowledge-file-view,.knowledge-link-view { padding:25px; }
  .knowledge-file-view h4,.knowledge-link-view h4 { font-size:22px; }
}
@media(max-height:500px) and (min-width:561px) {
  .knowledge-dialog { width:calc(100vw - 20px); height:calc(100dvh - 16px); max-height:calc(100dvh - 16px); border-radius:19px; }
  .knowledge-header { padding:12px 22px; }
  .knowledge-header h2 { font-size:23px; }
  .knowledge-header p { display:none; }
  .knowledge-header .knowledge-eyebrow { font-size:7px; }
  .knowledge-sidebar { padding-top:13px; gap:10px; }
  .knowledge-main { padding:16px 20px; }
  .knowledge-editor { max-height:calc(100dvh - 16px); }
  .knowledge-viewer { height:calc(100dvh - 16px); max-height:calc(100dvh - 16px); }
  .knowledge-viewer-header { padding:10px 18px; }
}
@media(prefers-reduced-motion:reduce) { .knowledge-card { transition:none; } }

/* The PDF reader draws pages locally, including in the Android WebView. */
.knowledge-pdf-reader { box-sizing:border-box; width:min(1120px,calc(100vw - 40px)); height:calc(100dvh - 40px); max-width:none; max-height:none; padding:0; border:1px solid #c8d2be; border-radius:24px; background:#f8f8f0; color:#354b3d; box-shadow:0 24px 100px #20392752; font-family:inherit; overflow:hidden; }
.knowledge-pdf-reader[open] { display:flex; flex-direction:column; }
.knowledge-pdf-reader::backdrop { background:#20382bcc; backdrop-filter:blur(5px); }
.knowledge-pdf-header { flex:none; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:16px 23px; background:#fffef7; border-bottom:1px solid #dce1d4; }
.knowledge-pdf-header>div { min-width:0; }
.knowledge-pdf-header span { font-size:11px; color:#829174; }
.knowledge-pdf-header h3 { font-size:18px; line-height:1.5; margin:3px 0 0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.knowledge-pdf-header button { width:40px; height:40px; flex:none; display:grid; place-items:center; border:0; border-radius:50%; background:#edf0e3; color:#526b49; font-family:inherit; font-size:25px; line-height:1; cursor:pointer; }
.knowledge-pdf-reader button:focus-visible,.knowledge-pdf-reader input:focus-visible,.knowledge-pdf-reader select:focus-visible { outline:2px solid #8ca47c; outline-offset:2px; }
.knowledge-pdf-tools { flex:none; display:flex; align-items:center; justify-content:center; gap:14px; padding:10px 16px; border-bottom:1px solid #dce1d4; }
.knowledge-pdf-tools button { width:38px; height:38px; border:1px solid #d2dbc6; border-radius:11px; background:#fffef8; color:#4b6341; font-size:26px; line-height:1; cursor:pointer; }
.knowledge-pdf-tools button:disabled { opacity:.35; cursor:default; }
.knowledge-pdf-tools>label { display:flex; align-items:center; gap:8px; font-size:13px; }
.knowledge-pdf-tools input { width:48px; height:36px; box-sizing:border-box; padding:4px; border:1px solid #d0d9c3; border-radius:8px; background:#fffef9; color:#3d5237; font:inherit; text-align:center; }
.knowledge-pdf-tools select { height:36px; padding:0 10px; border:1px solid #d0d9c3; border-radius:8px; background:#fffef9; color:#3d5237; font:inherit; }
.knowledge-pdf-zoom { margin-left:auto; }
.knowledge-pdf-status { flex:none; margin:0; padding:10px 18px; text-align:center; font-size:13px; color:#7a886c; }
.knowledge-pdf-status.is-error { color:#a34e3d; background:#fff0e7; }
.knowledge-pdf-status[hidden] { display:none; }
.knowledge-pdf-stage { flex:1; min-width:0; min-height:0; overflow:auto; overscroll-behavior:contain; padding:12px; background:#e7ebdf; text-align:center; -webkit-overflow-scrolling:touch; }
.knowledge-pdf-canvas { display:block; margin:0 auto; flex:none; background:white; box-shadow:0 3px 14px #33492b1f; }
@media(max-width:600px) {
  .knowledge-pdf-reader { width:100vw; height:100dvh; margin:0; border:0; border-radius:0; }
  .knowledge-pdf-header { padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px; gap:10px; }
  .knowledge-pdf-header h3 { font-size:16px; }
  .knowledge-pdf-tools { gap:8px; padding:8px 12px; }
  .knowledge-pdf-tools input,.knowledge-pdf-tools select { font-size:16px; }
  .knowledge-pdf-zoom>span { display:none; }
  .knowledge-pdf-stage { padding-bottom:calc(12px + env(safe-area-inset-bottom,0px)); }
}

.study-reader{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#f7f7ef;color:#3f5948;overflow:hidden;box-sizing:border-box}
.study-reader[open]{display:flex;flex-direction:column}.study-reader:not([open]){display:none}.study-reader::backdrop{background:#254a4466}.study-reader *{box-sizing:border-box}
.study-reader-header{display:flex;align-items:center;gap:16px;padding:max(10px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) 10px max(18px,env(safe-area-inset-left));background:#f7f7ef;border-bottom:1px solid #dbe1d1;flex:none}
.study-reader-header strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.study-reader-header nav{display:flex;gap:6px}.study-reader-header button{min-height:38px;padding:7px 13px;border:1px solid #d6dfcb;border-radius:10px;background:#fffdf6;color:#4b6650;font:inherit;font-size:13px;white-space:nowrap;cursor:pointer}.study-reader-header [aria-pressed=true]{background:#e2ecd8}.study-reader-header button:focus-visible{outline:2px solid #5e8051;outline-offset:2px}
.study-reader-status{font-size:11px;color:#77856d;margin:0;padding:5px max(18px,env(safe-area-inset-right)) 5px max(18px,env(safe-area-inset-left));background:#eff3e8;flex:none}.study-reader-status:empty{display:none}.study-reader-body{flex:1;min-height:0;overflow:hidden;padding-bottom:env(safe-area-inset-bottom)}.study-reader-body iframe{width:100%;height:100%;display:block;border:0;background:#fffdf8}
@media(max-width:600px){.study-reader-header{flex-wrap:wrap;gap:7px;padding-inline:max(10px,env(safe-area-inset-left))}.study-reader-header strong{font-size:13px}.study-reader-header nav{width:100%;justify-content:center}.study-reader-header nav button{flex:1}.study-reader-status{padding-inline:12px;font-size:10px}}
@media(max-height:500px) and (min-width:601px){.study-reader-header{padding-block:5px}.study-reader-header button{min-height:32px;padding-block:4px}.study-reader-status{padding-block:2px}}
