/* 念念 · 全站视觉层。只作用于正式手机版，维持演示页原有布局。 */
body.mobile {
  --nn-paper: #fffdf8;
  --nn-cream: #fff8ef;
  --nn-ink: #49392e;
  --nn-muted: #856c59;
  --nn-rule: #eadccc;
  --nn-orange: #df7944;
  --nn-orange-dark: #a9542d;
  --nn-shadow: 0 2px 3px rgba(108, 69, 38, .025), 0 12px 30px rgba(108, 69, 38, .065);
  color: var(--nn-ink);
}
body.mobile .phone, body.mobile .screen {
  background-color: #fff9f1;
  background-image:
    radial-gradient(ellipse 78% 35% at 101% -6%, rgba(255, 196, 137, .22), transparent 75%),
    radial-gradient(ellipse 90% 45% at -25% 95%, rgba(239, 190, 141, .12), transparent 78%);
}
body.mobile .scroll { overscroll-behavior-y: contain; scroll-padding-bottom: 90px; }
body.mobile .screen.show { animation: nn-enter .28s cubic-bezier(.2,.8,.25,1) both; }
body.mobile .screen.show .scroll > * { animation: none; }
@keyframes nn-enter { from { opacity: .68; transform: translateY(7px); } to { opacity: 1; transform: none; } }

/* 字体、边界和触控使用同一套节奏。 */
body.mobile .greet .hi, body.mobile .sec-title, body.mobile .paper-title,
body.mobile .profile-card .mn, body.mobile .settings-hero-title,
body.mobile .subpage-intro h2 { font-family: "Songti SC", "STSong", "SimSun", serif; }
body.mobile .kb-note, body.mobile .me-s, body.mobile .setting-copy small,
body.mobile .sr-s, body.mobile .b2, body.mobile .tl2-sub { line-height: 1.55; }
body.mobile .btn, body.mobile .chip, body.mobile .seg-item, body.mobile .tab,
body.mobile .me-row, body.mobile .me-card, body.mobile .hdr-ico,
body.mobile .tl-nav, body.mobile .tl-date, body.mobile .tpl,
body.mobile .topbar-back, body.mobile .profile-link, body.mobile .auth-method {
  touch-action: manipulation;
  transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
body.mobile .btn:active, body.mobile .chip:active, body.mobile .hdr-ico:active,
body.mobile .tpl:active, body.mobile .auth-method:active { transform: scale(.975); }
body.mobile :is(button, input, textarea, select, [role="button"], [tabindex]):focus-visible {
  outline: 2px solid var(--nn-orange);
  outline-offset: 2px;
}
body.mobile input, body.mobile textarea, body.mobile select { font-size: max(16px, 1em); }
body.mobile :is(.card,.me-card-group,.settings-card,.search-bar,.ov-card,.profile-card,.journal.paper) {
  box-shadow: var(--nn-shadow);
}
body.mobile .topbar { background: linear-gradient(to bottom,rgba(255,249,241,.98) 72%,rgba(255,249,241,.72)); backdrop-filter: blur(10px); }
body.mobile .screen:has(.topbar) .topbar-back { width: 42px; height: 42px; min-width: 42px; min-height: 42px; flex-basis: 42px; border-radius: 14px; }
body.mobile .screen:has(.topbar) .topbar-back svg { width: 19px; height: 19px; }
body.mobile .screen:has(.topbar) .topbar-title { font-size: 14px; }
body.mobile .screen:has(.topbar) .scroll { padding-top: 82px; }

/* 首页：取消套框与胶囊堆叠，让录入和今日记录形成一页。 */
body.mobile #s-home .scroll { padding-top: 20px; }
body.mobile #s-home .brand-row { padding: 3px 1px 18px; }
body.mobile #s-home .home-capture {
  overflow: hidden; border: 1px solid #ead5c0; border-radius: 17px;
  background: #fffdf8; box-shadow: 0 8px 22px rgba(130,83,49,.055);
}
body.mobile #s-home .home-capture::before { display: none; }
body.mobile #s-home .voice-hero {
  min-height: 91px; height: auto; padding: 18px 18px 17px; margin: 0;
  align-items: center; gap: 10px; border: 0; border-radius: 0;
  background: linear-gradient(112deg,#fffdf8 0%,#fff6e9 100%); box-shadow: none;
}
body.mobile #s-home .voice-hero .v-title {
  max-width: none; margin: 0; color: #49372c; font: 700 clamp(18px,5.1vw,20px)/1.35 "Songti SC",serif;
  white-space: normal;
}
body.mobile #s-home .voice-hero .v-actions {
  min-height: 44px; margin: 0; padding: 0; gap: 7px; border: 0; border-radius: 0;
  background: transparent; box-shadow: none; flex-direction: row;
}
body.mobile #s-home .voice-hero .v-mic {
  width: 39px; height: 39px; border-radius: 50%; background: linear-gradient(140deg,#ef9b60,#de7942);
  box-shadow: 0 4px 9px rgba(193,96,49,.18);
}
body.mobile #s-home .voice-hero .v-main { color: #a35832; font-size: 12px; font-weight: 700; }
body.mobile #s-home .quick-input {
  height: 48px; min-height: 48px; margin: 0; padding: 0 17px;
  border: 0; border-top: 1px solid #f0e4d7; border-radius: 0; background: #fffdf8;
  box-shadow: none;
}
body.mobile #s-home .quick-input .q-icon { font-size: 17px; }
body.mobile #s-home .quick-input .q-placeholder { color: #735b48; font-size: 12.5px; }
body.mobile #s-home .home-journal {
  width: 100%; margin: 26px 0 0; padding: 0 0 8px; border: 0; border-radius: 0;
  background: transparent; box-shadow: none;
}
body.mobile #s-home .section-head { margin: 0 1px 14px; }
body.mobile #s-home .sec-title { color: #49372c; font-size: 18px; }
body.mobile #s-home .sec-count { color: #967a64; font-size: 11px; }
body.mobile #s-home .seg-row { margin: 0 0 10px; border-bottom: 1px solid #e9dacb; align-items: stretch; }
body.mobile #s-home .seg-row .seg {
  flex: 1; display: flex; gap: 24px; min-height: 43px; padding: 0; border: 0;
  border-radius: 0; background: transparent; box-shadow: none; backdrop-filter: none;
}
body.mobile #s-home .seg-item {
  flex: none; min-height: 43px; padding: 10px 2px 9px; border-radius: 0; border-bottom: 2px solid transparent;
  background: transparent; color: #795f4c; font-size: 13px; font-weight: 650; box-shadow: none;
  transition: color .16s ease;
}
body.mobile #s-home .seg-item.active {
  border-bottom-color: #db7a46; border-radius: 0; background: transparent; color: #a54f28; box-shadow: none;
}
body.mobile #s-home .seg-row .hdr-ico {
  width: 42px; height: 42px; border: 0; border-radius: 11px; background: transparent; color: #9d7459;
}
body.mobile #home-tl-date { margin: 4px 0 9px; padding: 0 0 7px; border: 0; }
body.mobile #home-tl-date .tl-nav { width: 32px; height: 32px; }
body.mobile #home-tl-date .tl-date { font-size: 12px; }
body.mobile #home-tl-date .tl-date-hint { display: none; }
body.mobile #home-tl, body.mobile #home-cl {
  box-sizing: border-box; width: 100%; padding: 4px 15px 3px;
  border: 1px solid #e9dacc; border-radius: 16px; background: #fffdf8;
  box-shadow: 0 7px 20px rgba(110,74,46,.045);
}
body.mobile #tl2, body.mobile #todo-paper {
  box-sizing: border-box; width: 100%; min-height: 85px; padding: 0;
  border: 0; border-radius: 0; background: transparent; box-shadow: none;
}
body.mobile #tl2 .tl2-main { background: #fffdf8; }
body.mobile #tl2 .tl2-dot { border-color: #fffdf8; }
body.mobile #tl2 .tl2-card { border-bottom-color: #f0e6dd; }
body.mobile #tl2 .tl2-txt, body.mobile #todo-paper .todo-txt { color: #503f34; font-size: 13.5px; line-height: 1.6; }
body.mobile #todo-paper .todo-box { width: 19px; height: 19px; border-width: 1.5px; }
body.mobile #todo-paper .entry-mark { display: none; }
body.mobile #tl2-add, body.mobile #cl-add {
  min-height: 41px; margin-top: 0 !important; padding: 7px; border: 0; border-top: 1px solid #f0e5da;
  border-radius: 0; background: transparent; color: #a85e37;
}
body.mobile #s-home #tl2 .empty-illu { padding: 23px 6px 25px; }
body.mobile #s-home #tl2:has(.empty-illu)::before { display: none; }
body.mobile #s-home #tl2 .empty-illu::before { content: '✦'; display: block; color: #df9b68; font-size: 23px; line-height: 1; }
body.mobile #s-home #tl2 .empty-illu img { display: none; }
body.mobile #s-home #tl2 .empty-illu div { margin-top: 9px; color: #856c59; font-size: 12.5px; }
body.mobile #s-diary #j-seg .seg-item { font-size: 13px; font-weight: 650; }
body.mobile #s-diary #j-seg .seg-item:not(.active) { color: #755b49; }

/* 账本：金额、预算与分类是一张轻纸页，明细像账页排列。 */
body.mobile #s-ledger .ledger-sum {
  min-height: 152px; margin-bottom: 0; padding: 17px 18px 13px; border: 1px solid #ead7c4; border-bottom: 0;
  border-radius: 20px 20px 0 0; background: linear-gradient(125deg,#fffdf8,#fff5e7);
  box-shadow: none;
}
body.mobile #s-ledger .ledger-sum::before {
  inset: 0 0 auto; height: 3px; border-radius: 20px 20px 0 0;
  background: linear-gradient(90deg,#e58b51,#f2b982 50%,transparent);
}
body.mobile #s-ledger .ledger-sum::after { display: none; }
body.mobile #s-ledger .ledger-sum.ledger-empty { border-bottom: 1px solid #ead7c4; border-radius: 20px; box-shadow: 0 9px 22px rgba(110,74,46,.055); }
body.mobile #s-ledger .ledger-sum-head { align-items: center; flex-wrap: nowrap; }
body.mobile #s-ledger .ledger-sum-head .lab { color: #745743; font-size: 12px; }
body.mobile #s-ledger #lg-prev, body.mobile #s-ledger #lg-next { color: #a87551; }
body.mobile #s-ledger .range-tabs {
  margin-left: auto; padding: 2px; border: 1px solid #eadccd; border-radius: 10px; background: #f8ede0;
}
body.mobile #s-ledger .range-tabs .rt { min-height: 29px; padding: 6px 7px; color: #806653; font-size: 10.5px; }
body.mobile #s-ledger .range-tabs .rt.on { background: #fffdf9; color: #a7522e; box-shadow: 0 1px 5px rgba(107,70,41,.08); }
body.mobile #s-ledger .ledger-sum .amt {
  margin-top: 18px; color: #49372c; font: 650 clamp(28px,7.5vw,32px)/1.16 "PingFang SC","Microsoft YaHei",sans-serif;
  letter-spacing: -.8px;
}
body.mobile #s-ledger .ledger-sum .sub { margin-top: 5px; color: #92745f; font-size: 11px; }
body.mobile #s-ledger #ledger-tools {
  min-height: 31px; margin-top: 0; border: 1px solid #ead9c9 !important;
  background: #fffaf4; color: #976341 !important; opacity: 1 !important;
}
body.mobile #s-ledger .ov-card {
  margin: 0; padding: 14px 18px 18px; border: 1px solid #ead7c4; border-top: 1px solid #f0e3d5;
  border-radius: 0 0 20px 20px; background: #fffdf8; box-shadow: 0 11px 25px rgba(110,74,46,.065);
}
body.mobile #s-ledger .ovb-bar { height: 5px; margin-top: 10px; }
body.mobile #s-ledger .ov-cats { margin-top: 13px; padding-top: 12px; }
body.mobile #s-ledger .stack-bar { height: 8px; }
body.mobile #s-ledger .stack-bar > * { opacity: .77; }
body.mobile #s-ledger .ledger-list-heading { margin: 26px 2px 9px; }
body.mobile #s-ledger .ledger-list-heading strong { color: #49372c; font-size: 16px; }
body.mobile #bill-list:has(.bill-item) {
  padding: 4px 14px; border: 1px solid #e9dacb; border-radius: 17px; background: #fffdf8;
  box-shadow: 0 7px 20px rgba(110,74,46,.045);
}
body.mobile #bill-list .lg-group { margin: 10px 2px 2px; font-size: 10.5px; }
body.mobile #bill-list .bill-item {
  min-height: 64px; margin: 0; padding: 11px 2px; border: 0; border-bottom: 1px solid #f0e6db;
  border-radius: 0; background: transparent; box-shadow: none;
}
body.mobile #bill-list .bill-item:last-child { border-bottom: 0; }
body.mobile #bill-list .bill-item .b1 { color: #4f3d31; font-size: 13px; line-height: 1.45; }
body.mobile #bill-list .bill-item .b2 { color: #927b68; }
body.mobile #bill-list .bill-item .bamt { color: #5b4333; font-size: 14px; }
body.mobile #bill-list .bill-edit-cue { color: #aa7552; }
body.mobile #bill-list .empty-illu { padding: 27px 12px 14px; }
body.mobile #bill-list .empty-illu::before { content: '¥'; display: grid; place-items: center; width: 42px; height: 42px; margin: 0 auto; border: 1px solid #efd6be; border-radius: 50%; background: #fff5e9; color: #b16b41; font: 600 20px/1 Georgia,serif; }
body.mobile #bill-list .empty-illu img { display: none; }
body.mobile #bill-list .empty-illu div { margin-top: 13px; color: #856c59; font-size: 12.5px; }
body.mobile #bill-list .empty-cta { width: min(100%,230px); margin: 8px auto 0; }
body.mobile[data-cur="s-ledger"] .float-star { right: 12px; bottom: 87px; width: 42px; height: 42px; animation: none; box-shadow: 0 5px 14px rgba(146,81,42,.16); }

/* 手账：装订和照片有质感，正文仍是阅读中心。 */
body.mobile #s-diary .tpl-row { gap: 9px; }
body.mobile #s-diary .tpl { min-height: 42px; }
body.mobile #s-diary .journal.paper {
  border-color: #e7d4b8;
  background-color: #fffdf6;
  background-image: radial-gradient(circle at 94% 9%,rgba(244,206,154,.17),transparent 31%),
    repeating-linear-gradient(0deg,transparent 0,transparent 31px,rgba(163,122,78,.048) 32px,transparent 33px);
  box-shadow: 1px 2px 0 #eadcc9,3px 5px 0 #f5e9d8,0 15px 28px rgba(101,68,42,.09);
}
body.mobile #s-diary .paper-title { font-size: clamp(21px,6vw,24px); }
body.mobile #s-diary .paper-body { color: #59483b; font-size: 14px; line-height: 1.9; }
body.mobile #s-diary .j-photo { box-shadow: 0 5px 11px rgba(98,69,44,.17); }
body.mobile #s-diary .pj-card { min-height: 70px; }

/* 我的、设置与信息库：资料在前，列表分组清楚。 */
body.mobile #s-me .profile-card { border-color: #ebcfb5; background: radial-gradient(circle at 91% -12%,rgba(255,255,255,.82),transparent 43%),linear-gradient(130deg,#fff3e6,#ffe9d5); }
body.mobile #s-me .profile-card::after { width: 119px; height: 119px; right: -30px; top: 32px; }
body.mobile #s-me .me-sec-t { margin-top: 23px; font-size: 13px; }
body.mobile #s-me .me-card { min-height: 65px; }
body.mobile #s-settings .settings-hero { min-height: 126px; background: radial-gradient(circle at 91% -14%,rgba(255,255,255,.8),transparent 43%),linear-gradient(125deg,#fff3e7,#ffe4ce); }
body.mobile #s-settings .settings-hero::after { content: '✦'; right: 23px; top: 9px; font-size: 83px; color: rgba(219,124,64,.12); transform: rotate(8deg); }
body.mobile #s-settings .settings-hero-title { font-size: clamp(21px,6.3vw,26px); }
body.mobile #s-settings .settings-section-title { margin-top: 22px; }
body.mobile #s-settings .setting-row { min-height: 68px; }
body.mobile #s-base .record-overview { border-radius: 18px; }
body.mobile #s-base .record-overview-grid > div { border: 1px solid #f2e7dc; }

/* 搜索、二三级页、表单和空状态。 */
body.mobile .subpage-intro { margin-bottom: 18px; }
body.mobile .subpage-intro h2 { font-size: clamp(21px,6vw,24px); }
body.mobile .subpage-intro p { font-size: 12px; line-height: 1.6; }
body.mobile #s-search .search-bar { border-color: #e7d4c1; }
body.mobile #s-search .sr-item { min-height: 64px; }
body.mobile #s-search .search-intro { min-height: 125px; }
body.mobile #s-talk .talk-welcome { margin-top: min(10vh,72px); }
body.mobile #s-auth .scroll { padding-bottom: max(28px,env(safe-area-inset-bottom)); }
body.mobile #s-auth .card { border: 1px solid #ead8c5; background: #fffdf9; box-shadow: 0 17px 40px rgba(119,73,42,.09); }
body.mobile #s-auth .auth-field input { border: 1px solid #ead8c6; background: #fffefa; }
body.mobile #s-auth .auth-field input:focus { border-color: #de9666; box-shadow: 0 0 0 3px rgba(223,121,68,.12); }
body.mobile .timeline-edit-form :is(input,textarea), body.mobile .profile-edit-form input,
body.mobile .ledger-edit-form select { background: #fffdf9; }

/* 弹层保持同一张纸和清楚的关闭动作。 */
body.mobile .nn-sheet-mask { background: rgba(57,38,25,.38); backdrop-filter: blur(5px); }
body.mobile .nn-sheet-panel { position: relative; width: min(100%,520px); max-height: min(84dvh,760px); padding: 25px 20px calc(26px + env(safe-area-inset-bottom)); border-color: #e9d5c1; border-radius: 24px 24px 0 0; background: #fffaf3; box-shadow: 0 -14px 44px rgba(63,39,24,.18); }
body.mobile .nn-sheet-panel::before { content: ''; display: block; width: 34px; height: 4px; margin: -12px auto 16px; border-radius: 4px; background: #dfc9b6; }
body.mobile .nn-sheet-head { margin-bottom: 17px; }
body.mobile .nn-sheet-head b { font: 700 18px/1.3 "Songti SC",serif; }
body.mobile .nn-sheet-close { min-height: 40px; padding: 8px 15px; background: #fff0e3; }
body.mobile .sheet-mask { background: rgba(57,38,25,.38); backdrop-filter: blur(5px); }
body.mobile .sheet { max-height: 82dvh; overflow-y: auto; border: 1px solid #e9d5c1; background: #fffaf3; }
body.mobile .toast { border: 1px solid rgba(255,255,255,.16); background: rgba(65,49,39,.94); box-shadow: 0 8px 24px rgba(51,36,26,.18); }
body.mobile .ob-card { border: 1px solid #e9d4bc; border-radius: 18px; background: #fffdf7; box-shadow: 0 14px 35px rgba(68,44,27,.17); }

/* 录入、确认、分享和想念的声音使用一致的内页卡片。 */
body.mobile #s-voice-id .vid-note { margin: 2px 0 16px; padding: 15px 17px; border: 1px solid #ebdccb; border-radius: 16px; background: #fffdf8; color: #765b48; font-size: 12.5px; line-height: 1.75; }
body.mobile #s-voice-id .vid-cta { margin: 0; padding: 23px 19px 20px; border: 1px solid #efd8bd; border-radius: 19px; background: radial-gradient(circle at 95% -9%,rgba(255,255,255,.9),transparent 43%),linear-gradient(145deg,#fff4e7,#fcead4); box-shadow: var(--nn-shadow); }
body.mobile #s-voice-id .vid-cta .vc-big { color: #594133; font: 700 19px/1.4 "Songti SC",serif; }
body.mobile #s-voice-id .vid-cta .vc-sub { margin: 8px 0 12px; color: #856b57; font-size: 12px; line-height: 1.5; }
body.mobile #s-voice-id .vid-cta .vc-plus { border-color: #e8cdb3; background: #fffaf3; color: #a9613c; }
body.mobile #s-voice-custom .step-block, body.mobile #s-confirm .ai-card,
body.mobile #s-cake .ai-card, body.mobile #s-cake .ask-card,
body.mobile #s-delegate .share-card, body.mobile #s-person .card,
body.mobile #s-newperson .card { border: 1px solid #eadbc9; border-radius: 18px; background: #fffdf8; box-shadow: var(--nn-shadow); }
body.mobile #s-voice-custom .step-block { padding: 20px 18px; }
body.mobile #s-voice-custom .sb-q { color: #544032; font: 700 17px/1.45 "Songti SC",serif; }
body.mobile #s-voice-custom .sb-hint { color: var(--nn-muted); line-height: 1.6; }
body.mobile #s-voice-custom .obj-card { border-color: #eadbc9; background: #fffdfa; }
body.mobile #s-voice-custom .upload-card { border-color: #e7c7a9; border-radius: 15px; background: #fff7ee; }
body.mobile #s-delegate .share-head { background: linear-gradient(120deg,#ec945f,#d97645); }
body.mobile #s-delegate .share-body { padding: 17px 18px; }
body.mobile #s-delegate .share-actions .btn { min-height: 46px; }
body.mobile #s-confirm .ai-head, body.mobile #s-cake .ai-head { margin: 0 2px 13px; }
body.mobile #s-confirm .ai-card, body.mobile #s-cake .ai-card { padding: 19px 18px; }
body.mobile #s-confirm .ask-card, body.mobile #s-cake .ask-card { border: 1px solid #eadbc9; border-radius: 18px; background: #fffdf8; }
body.mobile #s-onboard .card { border: 1px solid #eadbc9; background: #fffdf8; }

/* 导航常驻、内容可滚动、动画尊重系统设置。 */
body.mobile .tabbar { background: rgba(255,252,247,.97); backdrop-filter: blur(16px); border-top: 1px solid #eedfce; }
body.mobile .tab { border-radius: 15px; }
body.mobile .tab.active { background: #fff0e3; }
body.mobile .tab svg { width: 21px; height: 21px; }
@media (max-width: 370px) {
  body.mobile .scroll { padding-left: 16px; padding-right: 16px; }
  body.mobile #s-home .voice-hero { gap: 7px; padding-left: 16px; padding-right: 16px; }
  body.mobile #s-home .voice-hero .v-title { font-size: 18px; }
  body.mobile #s-home .voice-hero .v-actions { padding-right: 9px; }
  body.mobile #s-ledger .ledger-sum { padding-left: 16px; padding-right: 16px; }
  body.mobile #s-diary .journal.paper { padding-left: 19px; padding-right: 19px; }
}
@media (prefers-reduced-motion: reduce) {
  body.mobile .screen.show { animation: none; }
  body.mobile :is(.btn,.chip,.tab,.seg-item,.me-row,.me-card,.hdr-ico,.tpl,.topbar-back) { transition: none; }
}
