@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap');

:root{--wine:#401521;--wine2:#5b2132;--wine3:#783b4d;--gold:#d8b77c;--gold2:#ead8b7;--ivory:#f7f0e7;--paper:#fffdf9;--rose:#e8d2d2;--ink:#382b2b;--muted:#887a77;--line:#eadfd4;--shadow:0 12px 35px rgba(64,21,33,.07)}

*{box-sizing:border-box}body{font-family:'DM Sans',sans-serif;color:var(--ink);background:#fbf8f3;font-size:14px}h1,h2,h3,h4,.brand strong{font-family:'Playfair Display',serif;font-weight:500}a{text-decoration:none;color:inherit}.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#a1847d;margin:0 0 10px}.gold-text{color:var(--gold2)}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--wine);color:#fff5eb;padding:28px 18px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 34px}.brand-icon{height:43px;width:43px;border:1px solid #bd9c6d;border-radius:50%;display:grid;place-items:center;color:var(--gold);font-size:28px;font-family:serif}.brand strong{font-size:17px;display:block;white-space:nowrap}.brand strong i,.app-footer i{color:var(--gold);font-style:normal}.brand small{display:block;font-size:8px;letter-spacing:2px;color:#c9aeb0;margin-top:4px}.sidebar-label{font-size:9px;letter-spacing:2px;color:#bda0a2;padding:0 12px 10px}.side-nav{display:grid;gap:6px}.nav-link{display:flex;align-items:center;gap:12px;color:#d8c5c5;padding:12px 13px;border-radius:10px;font-size:13px;transition:.2s}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.1);color:#fff8ef}.nav-link.active{box-shadow:inset 3px 0 var(--gold)}.nav-icon{font-size:20px;width:23px;text-align:center;color:var(--gold)}.sidebar-bottom{margin-top:auto;padding:18px 8px 0;border-top:1px solid #714653;display:flex;align-items:center;gap:10px}.avatar{height:37px;width:37px;border-radius:50%;background:#ead8b7;color:var(--wine);display:grid;place-items:center;font-family:serif;font-size:18px}.user-info{display:grid;gap:3px;min-width:0;flex:1}.user-info strong{font-size:12px}.user-info small{font-size:9px;color:#c9aeb0}.logout-btn{border:0;background:transparent;color:#e4cda5;font-size:20px}.main-content{margin-left:248px;padding:30px 42px 20px;max-width:1700px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:16px}.topbar h2{font-size:28px;margin:0;color:var(--wine)}.topbar-date{font-size:11px;color:var(--muted);white-space:nowrap}.top-heart{font-size:22px;color:#b98b7b;margin-left:12px;vertical-align:middle}.hero-card{position:relative;overflow:hidden;min-height:300px;border-radius:17px;background:linear-gradient(115deg,#401521 0%,#562035 62%,#71394b 100%);color:#fff8ef;padding:36px 38px;display:flex;align-items:center;box-shadow:0 18px 38px #40152118}.hero-copy{max-width:460px;position:relative;z-index:2}.hero-copy h1{font-size:48px;line-height:1.08;margin:8px 0 16px;letter-spacing:-1px}.hero-copy h1 span{color:var(--gold);font-size:38px}.hero-copy>p:not(.eyebrow){max-width:390px;line-height:1.8;color:#eadadd;font-size:13px}.btn{border-radius:8px;font-size:12px;padding:11px 16px;font-weight:600}.btn-gold{background:var(--gold);border:1px solid var(--gold);color:#35131e}.btn-gold:hover{background:#e6c991;border-color:#e6c991;color:#35131e}.btn-burgundy{background:var(--wine);color:#fff6ec;border:1px solid var(--wine)}.btn-burgundy:hover{background:var(--wine2);color:#fff}.btn-outline-burgundy{border:1px solid #b38b8e;color:var(--wine)}.btn-outline-burgundy:hover{background:var(--wine);color:#fff}.hero-art{position:absolute;right:4%;top:0;height:100%;width:42%;display:grid;place-items:center;opacity:.9}.orbit{position:absolute;border:1px solid #d8b77c45;border-radius:50%;transform:rotate(-25deg)}.orbit-one{height:245px;width:245px}.orbit-two{height:195px;width:300px}.hero-heart{font-size:120px;line-height:1;color:var(--gold);font-family:serif;text-shadow:0 0 50px #d8b77c55;animation:heartbeat 3s ease-in-out infinite}.spark{position:absolute;color:var(--gold);font-size:24px}.spark-one{top:22%;right:25%}.spark-two{bottom:24%;left:18%;font-size:31px}.spark-three{top:28%;left:22%;font-size:14px}.hero-art-caption{position:absolute;bottom:22px;font-size:8px;letter-spacing:2px;color:#d7bda8}.counter-panel{margin-top:20px;background:#fffdf9;border:1px solid var(--line);border-radius:14px;padding:23px 26px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.counter-panel h3{font-size:27px;color:var(--wine);margin:0 0 7px}.counter-heart{font-size:42px;color:#caa76f;padding:0 10px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:30px 0 14px}.section-heading h3{font-size:23px;color:var(--wine);margin:0}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.stat-card{background:#fffdf9;border:1px solid var(--line);border-radius:13px;padding:20px;display:grid;box-shadow:0 5px 18px #40152105;transition:.2s}.stat-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.stat-icon{height:35px;width:35px;display:grid;place-items:center;background:#f2e5dc;color:var(--wine);border-radius:10px;font-size:20px}.stat-number{font-family:'Playfair Display',serif;font-size:31px;color:var(--wine);margin-top:13px}.stat-label{font-size:12px;font-weight:700}.stat-foot{font-size:10px;color:#a1847d;margin-top:13px}.quote-card{position:relative;background:#f0e2d8;border:1px solid #e6d4c7;border-radius:13px;padding:22px 27px 20px 62px}.quote-mark{position:absolute;left:23px;top:7px;font:54px Georgia;color:#bd9b78}.quote-card p{font:italic 17px/1.7 'Playfair Display',serif;color:#64434a;max-width:850px}.quote-card small{letter-spacing:1.8px;font-size:8px;color:#9b7774}.app-footer{display:flex;justify-content:space-between;gap:15px;margin-top:38px;padding:20px 0 10px;border-top:1px solid var(--line);font-size:10px;color:#a18f89}.content-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.content-toolbar p{margin:0}.editor-card{background:#fffdf9;border:1px solid var(--line);border-radius:14px;padding:24px;margin:0 0 22px;box-shadow:var(--shadow)}.editor-title{display:flex;align-items:center;gap:12px;margin-bottom:20px}.editor-title h3{font-size:22px;color:var(--wine);margin:0}.form-label{font-size:12px;font-weight:700;color:#60454a}.form-control,.form-select{border-color:#e7d9d1;border-radius:8px;padding:11px 12px;font-size:13px;background-color:#fffdfa}.form-control:focus,.form-select:focus{border-color:#b78b88;box-shadow:0 0 0 .2rem #b78b8822}.letter-body{font-family:'Playfair Display',serif;line-height:1.8}.letter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.letter-card{background:#fffdf9;border:1px solid var(--line);border-radius:13px;padding:22px;min-width:0}.draft-card{background:#fbf4ec}.letter-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.letter-stamp{display:grid;place-items:center;width:37px;height:37px;border-radius:50%;border:1px solid #d8b77c;color:#a57b48;font-size:20px}.status-pill{font-size:8px;letter-spacing:1px;padding:6px 8px;border-radius:30px}.status-draft{background:#f0e3d4;color:#7a5946}.status-sent{background:#e8eee4;color:#526c4c}.letter-card h3{font-size:22px;color:var(--wine)}.letter-preview{color:#786967;line-height:1.8;min-height:70px;white-space:pre-line}.letter-meta{font-size:10px;color:#a18f89;border-top:1px solid var(--line);padding-top:13px;margin-top:15px}.memory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.memory-card{background:#fffdf9;border:1px solid var(--line);border-radius:13px;overflow:hidden;min-width:0}.memory-image{display:block;width:100%;height:210px;object-fit:cover;background:#f0e2d8}.memory-placeholder{height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#f2e2d8,#ead8b7);color:#a97978;font-size:50px}.memory-placeholder small{font:8px 'DM Sans',sans-serif;letter-spacing:2px;color:#876c65}.memory-card-body{padding:17px}.memory-date{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#a1847d;margin-bottom:8px}.memory-card h3{font-size:21px;color:var(--wine)}.memory-card p{font-size:12px;line-height:1.8;color:#786967;white-space:pre-line}.memory-footer{border-top:1px solid var(--line);padding-top:12px;display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:9px;color:#a18f89}.text-button{border:0;background:none;color:#8c555b;font-size:10px}.goal-list{display:grid;gap:12px}.goal-card{display:flex;align-items:flex-start;gap:16px;background:#fffdf9;border:1px solid var(--line);border-radius:13px;padding:20px}.goal-symbol{flex:0 0 42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#f2e5dc;color:#9b754b;font-size:22px}.goal-main{flex:1;min-width:0}.goal-kicker{font-size:9px;letter-spacing:1.3px;color:#a1847d;margin:2px 0 8px}.goal-main h3{font-size:22px;color:var(--wine);margin:0 0 7px}.goal-main p{font-size:12px;line-height:1.7;color:#786967;white-space:pre-line}.goal-main small{font-size:10px;color:#a18f89}.goal-actions{display:flex;gap:7px;flex-wrap:wrap}.settings-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.settings-layout .editor-card{margin:0}.settings-layout h4{color:var(--wine)}.empty-state{grid-column:1/-1;background:#fffdf9;border:1px dashed #d8c5b7;border-radius:13px;padding:45px 20px;text-align:center}.empty-state>span{font-size:36px;color:#bd9b78}.empty-state h3{color:var(--wine);font-size:24px;margin:12px 0 7px}.empty-state p{color:var(--muted);font-size:12px;margin:0}.mobile-nav{display:none}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at top,#f0e1d4,#fbf8f3 60%)}.auth-card{width:min(100%,440px);background:#fffdf9;border:1px solid var(--line);border-radius:20px;padding:38px;box-shadow:0 25px 70px #40152115}.brand-mark{width:54px;height:54px;display:grid;place-items:center;margin:0 auto 18px;border:1px solid var(--gold);border-radius:50%;font:34px Georgia;color:#a57b48}.auth-card .eyebrow,.auth-card h1,.auth-card>p{text-align:center}.auth-card h1{font-size:34px;color:var(--wine);margin-bottom:8px}.auth-card .form-label{margin-bottom:7px}.auth-card a{color:var(--wine);text-decoration:underline}.auth-card .btn{padding:13px}.alert{font-size:12px}

@keyframes heartbeat{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}

@media(max-width:1200px){.main-content{padding:27px 28px}.hero-art{right:0;width:38%}.hero-copy h1{font-size:42px}.memory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

@media(max-width:900px){.sidebar{width:210px}.main-content{margin-left:210px;padding:24px 20px}.hero-art{opacity:.5;right:-7%}.hero-copy{max-width:420px}.settings-layout{grid-template-columns:1fr}}

@media(max-width:680px){body{font-size:13px}.sidebar{display:none}.main-content{margin:0;padding:21px 15px 90px}.topbar{align-items:flex-start;margin-bottom:20px}.topbar h2{font-size:24px}.topbar-date{font-size:9px;padding-top:5px}.top-heart{display:none}.hero-card{min-height:310px;padding:27px 23px;align-items:flex-start}.hero-copy{max-width:100%}.hero-copy h1{font-size:42px}.hero-copy>p:not(.eyebrow){max-width:330px}.hero-art{width:45%;right:-13%;top:80px;opacity:.25}.hero-heart{font-size:90px}.orbit-one{height:170px;width:170px}.orbit-two{height:140px;width:220px}.hero-art-caption{display:none}.counter-panel{padding:19px;gap:8px}.counter-panel h3{font-size:22px}.counter-heart{font-size:31px;padding:0}.stats-grid{grid-template-columns:1fr;gap:10px}.stat-card{grid-template-columns:40px 1fr;column-gap:12px;padding:15px}.stat-card .stat-icon{grid-row:span 2}.stat-number{font-size:24px;margin:0}.stat-label{align-self:start}.stat-foot{grid-column:2;margin-top:6px}.section-heading{margin-top:25px}.section-heading h3{font-size:21px}.quote-card{padding:20px 18px 18px 49px}.quote-mark{left:15px}.quote-card p{font-size:15px}.content-toolbar{align-items:flex-start}.content-toolbar .btn{white-space:nowrap;padding:10px}.letter-grid,.memory-grid{grid-template-columns:1fr}.memory-image{height:230px}.editor-card{padding:19px}.letter-card{padding:19px}.goal-card{gap:11px;padding:15px;flex-wrap:wrap}.goal-main h3{font-size:20px}.goal-actions{padding-left:53px}.settings-layout{grid-template-columns:1fr}.app-footer{font-size:9px}.mobile-nav{position:fixed;z-index:20;bottom:0;left:0;right:0;background:#fffdf9;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:8px 4px calc(8px + env(safe-area-inset-bottom));box-shadow:0 -8px 25px #4015210a}.mobile-nav .nav-link{display:flex;flex-direction:column;gap:3px;padding:4px 0;border-radius:7px;font-size:9px;color:#907c78}.mobile-nav .nav-link.active{color:var(--wine);background:#f7eee7;box-shadow:none}.mobile-nav .nav-icon{font-size:19px;line-height:1}.auth-card{padding:28px 23px}.auth-card h1{font-size:30px}}



.memory-media-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;background:#f0e2d8}

.memory-media-grid.single-media{grid-template-columns:1fr}

.memory-media-item{display:block;position:relative;min-width:0;padding:0;border:0;background:#ead8d0;overflow:hidden;cursor:zoom-in;aspect-ratio:1/1}

.memory-media-grid.single-media .memory-media-item{aspect-ratio:4/3}

.memory-media-item .memory-image{height:100%;width:100%;object-fit:cover;transition:transform .25s}

.memory-media-item:hover .memory-image{transform:scale(1.04)}

.video-thumb{height:100%;min-height:120px;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:linear-gradient(145deg,#401521,#875063);color:#f9ead6}

.play-icon{height:43px;width:43px;display:grid;place-items:center;border:1px solid #d8b77c;border-radius:50%;padding-left:3px;font-size:17px}

.video-thumb small{font-size:9px;letter-spacing:2px}

.media-preview{display:flex;flex-wrap:wrap;gap:10px}

.preview-item{width:100px;min-width:0}

.preview-item img,.preview-item video{width:100px;height:85px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#eee}

.preview-item span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:var(--muted);margin-top:5px}

.media-modal-content{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fffdf9}

.media-modal-content .modal-header{border-bottom:1px solid var(--line);color:var(--wine)}

.media-modal-content .modal-title{font-family:'Playfair Display',serif}

.media-modal-content .modal-body{background:#24151a;display:grid;place-items:center;padding:12px;min-height:180px}

.modal-media{display:block;max-width:100%;max-height:78vh;object-fit:contain}

@media(max-width:680px){.memory-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-media-grid.single-media{grid-template-columns:1fr}.memory-media-item{aspect-ratio:1/1}.memory-media-grid.single-media .memory-media-item{aspect-ratio:4/3}.media-modal-content .modal-body{padding:6px}.modal-media{max-height:72vh}}



.letter-full-body{font:16px/1.95 'Playfair Display',serif;white-space:normal;color:#513a3b;background:#fbf4ec;border:1px solid var(--line);border-radius:12px;padding:24px;overflow-wrap:anywhere}.letter-reading h3{color:var(--wine);font-size:27px}.letter-reply{margin-top:18px;padding:18px 20px;background:#f8f0e9;border-left:3px solid var(--gold);border-radius:8px;overflow-wrap:anywhere}.letter-reply h4{font-size:17px;color:var(--wine);margin:8px 0}.letter-reply>div:last-child{line-height:1.8;white-space:normal}.reply-form{border-top:1px solid var(--line);padding-top:20px}



/* Love Letters inbox tabs */

.letter-tabs{display:flex;gap:8px;align-items:center;padding:6px;background:#f0e5dc;border:1px solid var(--line);border-radius:12px;margin:0 0 20px;width:fit-content;max-width:100%}

.letter-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;color:#806b68;font-size:12px;font-weight:700;transition:background .2s,color .2s;white-space:nowrap}

.letter-tab:hover{color:var(--wine);background:#fffaf4}

.letter-tab.active{background:var(--wine);color:#fff8ef;box-shadow:0 3px 10px #40152118}

.letter-tab-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:20px;background:#ffffff2b;font-size:10px}

.letter-tab:not(.active) .letter-tab-count{background:#e4d2c7;color:#69464c}

@media(max-width:680px){.letter-tabs{width:100%}.letter-tab{flex:1;justify-content:center;padding:10px 8px}}





/* Subtle emphasis for received letters that have not been opened yet. */

.unread-letter-card { border-color: rgba(128, 31, 61, .42); box-shadow: 0 8px 28px rgba(83, 20, 43, .08); }

.unread-letter-card .letter-card-top::after { content: 'NEW'; margin-left: auto; color: #7b203e; background: #f7e7eb; border-radius: 999px; padding: .2rem .55rem; font-size: .65rem; font-weight: 800; letter-spacing: .08em; }


/* =====================================================================
   Responsive layout — phones, tablets, laptops and large monitors
   ≤680px  phone: bottom nav, single column
   681–1024px tablet / small laptop: compact icon rail instead of full sidebar
   ≥1025px desktop: full sidebar; content capped at 1440px on big screens
   ===================================================================== */
*, *::before, *::after { box-sizing:border-box; }
html { width:100%; max-width:100%; -webkit-text-size-adjust:100%; overflow-x:hidden; overflow-x:clip; }
body, .app-shell { width:100%; max-width:100%; min-width:0; margin:0; overflow-x:hidden; overflow-x:clip; }
img, video, iframe, table { max-width:100%; }
h1, h2, h3, h4, p { overflow-wrap:break-word; }
.letter-card h3, .memory-card h3, .goal-main h3, .letter-reading h3, .empty-state h3 { overflow-wrap:anywhere; }

.sidebar { overflow-y:auto; }
.main-content { width:calc(100% - 248px); max-width:none; min-width:0; margin-left:248px; }
/* Keep content a comfortable width on wide monitors (centred, max ~1440px) */
@media (min-width:1025px) {
  .main-content { padding-left:max(42px, calc((100% - 248px - 1440px) / 2)); padding-right:max(42px, calc((100% - 248px - 1440px) / 2)); }
}
@media (min-width:1025px) and (max-width:1200px) { .main-content { padding-left:28px; padding-right:28px; } }

/* Future / dream cards: grid so the buttons never squeeze the text */
.goal-card { display:grid; grid-template-columns:42px minmax(0,1fr) auto; grid-template-areas:"symbol main actions"; column-gap:16px; row-gap:12px; align-items:start; }
.goal-symbol { grid-area:symbol; }
.goal-main { grid-area:main; min-width:0; }
.goal-main p { max-width:75ch; overflow-wrap:break-word; }
.goal-actions { grid-area:actions; flex-wrap:nowrap; padding-left:0; }

/* Letter reading header */
.letter-reading-head { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-start; gap:12px; }
.letter-reading-head > div:first-child { flex:1 1 280px; min-width:0; }

.content-toolbar > :first-child { min-width:0; flex:1 1 auto; }

@media (min-width:1500px) {
  .letter-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

/* ---------- Tablet & small laptop: compact icon rail ---------- */
@media (min-width:681px) and (max-width:1024px) {
  .sidebar { width:88px; padding:20px 10px; align-items:stretch; }
  .brand { justify-content:center; padding:0 0 22px; }
  .brand > span:last-child, .sidebar-label { display:none; }
  .nav-link { flex-direction:column; justify-content:center; gap:4px; padding:10px 4px; font-size:10px; line-height:1.2; text-align:center; }
  .nav-link.active { box-shadow:inset 3px 0 var(--gold); }
  .sidebar-bottom { flex-direction:column; padding:14px 0 0; gap:8px; }
  .user-info { display:none; }
  .main-content { width:calc(100% - 88px); margin-left:88px; padding:24px 26px 24px; }
  .hero-art { opacity:.45; right:-4%; width:40%; }
  .hero-copy h1 { font-size:40px; }
  .memory-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .settings-layout { grid-template-columns:1fr; }
}
/* Short landscape screens (phones turned sideways) */
@media (min-width:681px) and (max-width:1024px) and (max-height:540px) {
  .sidebar { padding:12px 8px; }
  .brand { display:none; }
  .side-nav { gap:2px; }
  .nav-link { padding:7px 4px; }
  .nav-link span:last-child { display:none; }
  .sidebar-bottom { padding-top:8px; }
  .avatar { display:none; }
}
/* Mid-width: move Edit/Delete under the text so it keeps its width */
@media (min-width:681px) and (max-width:860px) {
  .goal-card { grid-template-columns:42px minmax(0,1fr); grid-template-areas:"symbol main" ". actions"; }
}

/* ---------- Phones ---------- */
@media (max-width:680px) {
  .sidebar { display:none !important; }
  .main-content { display:block; width:100% !important; max-width:100% !important; min-width:0 !important; margin:0 !important; padding:18px 14px calc(92px + env(safe-area-inset-bottom)) !important; }
  .topbar, .content-toolbar, .section-heading { width:100%; min-width:0; gap:10px; flex-wrap:wrap; }
  .topbar > div:first-child { min-width:0; flex:1 1 100%; }
  .topbar h2 { font-size:clamp(21px,6vw,26px); }
  .topbar-date { white-space:normal; padding-top:0; }
  .hero-card { width:100%; min-width:0; min-height:0; padding:25px 20px; }
  .hero-copy { width:100%; max-width:100%; min-width:0; }
  .hero-copy h1 { font-size:clamp(32px,10vw,42px); }
  .hero-copy > p:not(.eyebrow) { max-width:100%; }
  .hero-art { right:-18%; width:48%; max-width:48%; }
  .counter-panel { width:100%; min-width:0; align-items:flex-start; padding:17px 15px; }
  .counter-panel > div:first-child { min-width:0; flex:1; }
  .counter-panel h3 { font-size:clamp(19px,5.5vw,23px); }
  .stats-grid, .letter-grid, .memory-grid, .settings-layout, .goal-list { width:100%; min-width:0; grid-template-columns:minmax(0,1fr) !important; }
  .stat-card, .letter-card, .memory-card, .goal-card, .editor-card, .quote-card, .empty-state { width:100%; max-width:100%; min-width:0; }
  .editor-card, .letter-card { padding:16px; }
  .letter-full-body { padding:16px; font-size:15px; }
  .memory-media-grid { width:100%; min-width:0; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .form-control, .form-select, textarea, input, select { min-width:0; max-width:100%; font-size:16px; }
  .mobile-nav { left:0; right:0; width:100%; max-width:100%; padding-bottom:calc(8px + env(safe-area-inset-bottom)); }
  .app-footer { width:100%; flex-wrap:wrap; }

  /* Dream card: icon + buttons on top, text full width underneath */
  .goal-card { grid-template-columns:38px minmax(0,1fr); grid-template-areas:"symbol actions" "main main"; column-gap:10px; row-gap:12px; padding:15px; }
  .goal-symbol { width:38px; height:38px; flex-basis:38px; font-size:19px; }
  .goal-actions { justify-self:end; align-self:center; padding-left:0; gap:6px; }
  .goal-actions .btn { padding:6px 12px; }
  .goal-main h3 { font-size:21px; line-height:1.25; }
  .goal-main p { font-size:13px; max-width:none; }

  .letter-reading-head > .btn { order:-1; }
  .letter-reading h3 { font-size:23px; }
}
/* Very small phones (iPhone SE / mini, small Androids) */
@media (max-width:380px) {
  .main-content { padding-left:11px !important; padding-right:11px !important; }
  .mobile-nav .nav-link { font-size:8.5px; }
  .content-toolbar .btn { padding:9px 10px; font-size:11.5px; }
  .letter-tab { font-size:11px; padding:9px 6px; gap:5px; }
  .hero-card { padding:22px 16px; }
  .stat-card { padding:13px; }
}

/* ===== Private requests tab ===== */
.nav-icon { position:relative; }
.nav-badge { position:absolute; top:-6px; right:-9px; min-width:17px; height:17px; padding:0 4px; border-radius:20px; background:#c0394f; color:#fff; font:700 10px/17px 'DM Sans',sans-serif; text-align:center; box-shadow:0 0 0 2px var(--wine); }
.mobile-nav .nav-badge { box-shadow:0 0 0 2px #fffdf9; top:-5px; right:-11px; }
.request-list { display:grid; gap:14px; }
.request-card { background:#fffdf9; border:1px solid var(--line); border-radius:14px; padding:20px; min-width:0; box-shadow:0 5px 18px #40152105; }
.request-incoming { border-color:#d9b3b9; box-shadow:0 10px 30px #40152112; }
.request-outgoing { background:#fbf4ec; }
.request-head { display:flex; align-items:center; gap:12px; }
.request-head-text { flex:1; min-width:0; display:grid; gap:2px; }
.request-head-text strong { font-family:'Playfair Display',serif; font-weight:500; font-size:19px; color:var(--wine); overflow-wrap:anywhere; }
.request-time { font-size:11px; color:#a18f89; }
.request-symbol { flex:0 0 42px; height:42px; border-radius:50%; display:grid; place-items:center; background:#f3e1e3; color:#8c3a4c; font-size:21px; }
.request-symbol.small { flex-basis:36px; height:36px; font-size:17px; }
.request-when { display:inline-flex; align-items:center; gap:8px; margin:16px 0 4px; padding:8px 12px; border-radius:30px; background:#f2e5dc; color:var(--wine); font-weight:600; font-size:13px; }
.request-when span { font-size:9px; letter-spacing:1.5px; text-transform:uppercase; color:#a1847d; font-weight:700; }
.request-note { margin:12px 0 0; font:italic 15px/1.7 'Playfair Display',serif; color:#64434a; overflow-wrap:anywhere; }
.request-reply { margin-top:12px; padding:12px 14px; background:#f8f0e9; border-left:3px solid var(--gold); border-radius:8px; font-size:13px; line-height:1.7; color:#5f4b4b; overflow-wrap:anywhere; }
.request-reply span { display:block; font-size:9px; letter-spacing:1.5px; text-transform:uppercase; color:#a1847d; font-weight:700; margin-bottom:3px; }
.request-respond { margin-top:18px; padding-top:16px; border-top:1px solid var(--line); }
.request-buttons { display:flex; gap:8px; flex-wrap:wrap; }
.request-buttons .btn { min-width:120px; }
.request-outgoing form { margin-top:16px; }
.request-time-options { display:flex; flex-wrap:wrap; gap:8px; }
.time-chip { position:relative; cursor:pointer; margin:0; }
.time-chip input { position:absolute; opacity:0; pointer-events:none; }
.time-chip span { display:inline-block; padding:9px 15px; border:1px solid #e0cfc6; border-radius:30px; background:#fffdfa; color:#6e5755; font-size:12.5px; font-weight:600; transition:.15s; }
.time-chip input:checked + span { background:var(--wine); border-color:var(--wine); color:#fff8ef; }
.time-chip input:focus-visible + span { outline:2px solid var(--gold); outline-offset:2px; }
.status-pending { background:#f7e3e6; color:#8c3a4c; }
.status-approved { background:#e8eee4; color:#47663f; }
.status-declined { background:#f1e4dc; color:#7a5946; }
.status-cancelled { background:#ecebea; color:#77706e; }
.request-head .status-pill { flex:0 0 auto; }

@media (max-width:680px) {
  .mobile-nav { grid-template-columns:repeat(6,1fr) !important; }
  .mobile-nav .nav-link { font-size:8.5px; }
  .request-card { padding:16px; }
  .request-head { flex-wrap:wrap; }
  .request-head-text strong { font-size:17px; }
  .request-buttons .btn { flex:1 1 0; min-width:0; }
}
@media (max-width:380px) {
  .mobile-nav .nav-link { font-size:7.5px; }
  .mobile-nav .nav-icon { font-size:17px; }
  .time-chip span { padding:8px 12px; font-size:12px; }
}
