:root{--paper:#f8f9f5;--ink:#253e36;--muted:#7a877d;--green:#386b56;--light:#eaf0e7;--line:#e7eae2;--orange:#b47a4d;--system-font:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:#e7ece5;color:var(--ink);font:15px/1.6 var(--system-font)}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0;background:none}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #8eae77;outline-offset:4px}button:active{transform:translateY(1px)}.phone{width:440px;min-height:100dvh;margin:32px auto;background:var(--paper);position:relative;border-radius:32px;overflow:clip;box-shadow:0 18px 90px #3c574115;padding-bottom:94px}.app-header{display:flex;align-items:center;justify-content:space-between;padding:26px 26px 18px}.brand{display:flex;align-items:center;font-size:24px;font-family:var(--system-font);font-weight:bold;gap:9px}.brand small{font:13px var(--system-font);color:var(--muted);letter-spacing:1px;padding:4px 0 0 2px}.brand-seal{font-size:21px;width:32px;height:34px;border:1px solid #8da38d;border-radius:9px 4px 9px 4px;display:grid;place-items:center;color:var(--green)}.avatar{width:36px;height:36px;border-radius:50%;background:#e5ecdb;color:#58704c;border:3px solid #fff;font-family:var(--system-font)}main{padding:0 24px}.eyebrow{font-size:13px;letter-spacing:1.5px;color:var(--muted)}h1,h2,h3,p{margin:0}h1{font-size:27px;letter-spacing:-.7px;line-height:1.5}h2{font-size:19px;letter-spacing:.2px}h3{font-size:18px}.greeting{display:flex;justify-content:space-between;align-items:center;margin:12px 0 22px}.greeting p{color:var(--muted);font-size:13px;margin-top:5px}.day-mark{width:42px;border-left:1px solid #d6ded1;text-align:right;font-family:var(--system-font);color:#8b9a7d;flex-shrink:0}.day-mark b{display:block;font-size:23px;font-weight:normal;line-height:1.1}.day-mark small{font-size:13px}.balance-card{background:#365f4e;color:#fff;border-radius:22px;padding:24px;position:relative;overflow:hidden}.balance-card .eyebrow{color:#c2d2c0;letter-spacing:1px}.balance-value{font-size:58px;font-weight:500;letter-spacing:-2px;line-height:1.3;margin:9px 0 3px;font-variant-numeric:tabular-nums}.balance-value small{font-size:13px;letter-spacing:0;color:#d5dfcf;margin-left:9px}.balance-copy{font-size:13px;color:#c3d2bf}.balance-footer{position:relative;z-index:1;border-top:1px solid #ffffff26;margin-top:20px;padding-top:15px;display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#d7e3d0}.balance-footer button{background:#eff3dc;color:#365f4e;border-radius:9px;padding:8px 14px;font-size:13px}.hill{position:absolute;border-radius:50% 50% 0 0;transform:rotate(-25deg);background:#83a07a22;width:270px;height:160px;right:-120px;top:47px;pointer-events:none}.hill.second{right:-100px;top:75px;background:#a5b18b25;transform:rotate(-55deg)}.sprig{position:absolute;right:28px;top:26px;font-family:var(--system-font);font-size:31px;color:#c4d4b755;writing-mode:vertical-rl;letter-spacing:4px}.stats{display:grid;grid-template-columns:repeat(3,1fr);margin:22px 0 26px;text-align:center}.stats>div+div{border-left:1px solid var(--line)}.stats strong{font-size:24px;font-weight:500;font-variant-numeric:tabular-nums}.stats strong small{font-size:13px;margin-left:3px;font-weight:normal}.stats p{font-size:13px;color:var(--muted);margin-top:3px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:25px 0 14px}.text-button{color:var(--muted);font-size:13px;padding:5px 0 5px 8px}.poem-feature{background:#eef1e7;border-radius:18px;padding:21px;position:relative;overflow:hidden}.feature-top{display:flex;justify-content:space-between;align-items:center}.tag{font-size:13px;color:var(--green);background:#e1e9d9;border-radius:5px;padding:3px 7px}.reward{font-size:13px;color:var(--green)}.poem-feature h3{font-family:var(--system-font);font-size:28px;letter-spacing:3px;margin-top:17px}.author{font-size:13px;color:var(--muted);margin-top:3px}.excerpt{font-family:var(--system-font);font-size:17px;color:#66715c;letter-spacing:1px;margin:18px 0}.feature-bottom{display:flex;justify-content:space-between;align-items:center}.feature-bottom small{font-size:13px;color:var(--muted)}.round-next{width:38px;height:38px;border-radius:50%;background:#fff;color:var(--green);font-size:21px}.verse-watermark{position:absolute;right:25px;top:65px;font-size:96px;font-family:var(--system-font);color:#75896012;pointer-events:none;line-height:1.15}.add-dashed{width:100%;border:1px dashed #c8d3c0;border-radius:12px;color:#64805b;padding:14px;margin-top:13px;font-size:14px}.add-dashed span{font-size:19px;margin-right:7px}.activity-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.activity-icon{width:37px;height:40px;background:var(--light);border-radius:11px;display:grid;place-items:center;color:var(--green);font-family:var(--system-font);font-size:18px;flex-shrink:0}.activity-icon.spend{background:#f4eee4;color:var(--orange)}.activity-main{flex:1;min-width:0}.activity-main strong{display:block;font-size:14px;font-weight:500;overflow-wrap:anywhere}.activity-main p{font-size:13px;color:var(--muted);margin-top:4px}.amount{text-align:right;color:var(--green);font-size:18px;flex-shrink:0}.amount.negative{color:var(--orange)}.amount small{display:block;font-size:13px;color:var(--muted);margin-top:3px}.page-note{text-align:center;font-family:var(--system-font);font-size:13px;letter-spacing:2px;color:#8c9a82;margin:30px 0 8px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:440px;display:grid;grid-template-columns:repeat(3,1fr);background:#fdfefbf5;border-top:1px solid var(--line);padding:10px 15px max(12px,env(safe-area-inset-bottom));z-index:5;backdrop-filter:blur(16px)}.bottom-nav button{display:grid;justify-items:center;gap:2px;font-size:13px;color:#929b91;padding:0 12px}.bottom-nav button>span{font-size:26px;line-height:30px;font-weight:normal}.bottom-nav button.active{color:var(--green)}.bottom-nav button.active>span{background:#e8eee1;border-radius:12px;width:54px}.page-title-row{display:flex;justify-content:space-between;align-items:center;margin:14px 0 20px}.page-title-row p{font-size:13px;color:var(--muted);margin-top:5px}.primary{background:var(--green);color:white;border-radius:12px;padding:13px 20px;font-size:15px}.primary.small{padding:9px 13px;font-size:13px;border-radius:9px}.full{width:100%}.search-input{border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 15px;display:block;width:100%;color:var(--ink);outline-color:#95ad87}.tabs{display:flex;gap:21px;margin:20px 0 8px;border-bottom:1px solid var(--line)}.tabs button{padding:0 0 12px;font-size:14px;color:var(--muted);position:relative}.tabs button.active{color:var(--green);font-weight:600}.tabs button.active:after{content:"";position:absolute;bottom:-1px;height:3px;background:var(--green);border-radius:2px;left:0;right:0}.poem-row{display:flex;width:100%;align-items:center;gap:14px;text-align:left;padding:20px 0;border-bottom:1px solid var(--line)}.poem-character{width:49px;height:60px;display:grid;place-items:center;flex-shrink:0;border-radius:6px 12px 12px 6px;background:#e9edde;font-family:var(--system-font);font-size:27px;color:#738465;border-left:3px solid #cbd6bd}.poem-row:nth-child(3n) .poem-character{background:#edeae0;border-color:#d8d0bb;color:#99896e}.poem-row h3{font-family:var(--system-font);font-size:22px;letter-spacing:1px}.poem-info{flex:1;min-width:0}.poem-row p{font-size:13px;color:var(--muted);margin-top:5px}.poem-row .reward{font-size:14px;flex-shrink:0}.poem-row .reward small{display:block;font-size:13px;color:var(--muted);margin-top:5px}.back{margin:10px 0 18px;padding:3px 0;color:var(--muted);font-size:14px}.detail-hero{text-align:center;padding:15px 0 26px}.detail-hero h1{font-family:var(--system-font);font-size:36px;letter-spacing:5px;margin:14px 0 7px}.detail-hero .author{font-size:13px}.poem-controls{display:flex;justify-content:space-between;font-size:13px;align-items:center;border-bottom:1px solid var(--line);padding:13px 0;color:var(--muted)}.toggle{font-size:13px;color:var(--green);padding:4px 0}.poem-body{text-align:center;padding:24px 0 28px;overflow-x:auto}.verse-line{display:flex;justify-content:center;gap:8px;margin:19px 0}.verse-line ruby{font-family:var(--system-font);font-size:28px;min-width:30px}.verse-line rt{font:13px/1.9 var(--system-font);color:#87927b}.no-pinyin rt{visibility:hidden}.translation{padding:21px;background:white;border:1px solid var(--line);border-radius:16px}.translation h3{font-size:15px;margin-bottom:12px}.translation p{font-size:14px;line-height:2;color:#758172}.detail-score{display:flex;justify-content:space-between;align-items:center;margin:21px 0;font-size:13px;color:var(--muted)}.detail-score strong{font-size:19px;color:var(--green)}.detail-footnote{text-align:center;color:var(--muted);font-size:13px;margin:10px 0}.ledger-overview{border-radius:18px;background:#edf1e7;padding:22px;text-align:center}.ledger-overview .balance-value{font-size:50px;color:var(--green);margin:7px 0 16px}.ledger-overview .balance-value small{color:var(--muted)}.ledger-totals{display:flex;justify-content:center;gap:45px;font-size:13px;color:var(--muted)}.ledger-totals b{color:var(--ink);font-weight:500;margin-left:5px}.ledger-overview button{margin-top:20px;width:100%}.date-label{font-size:13px;color:var(--muted);margin:23px 0 0}.empty{text-align:center;padding:45px 16px;color:var(--muted);line-height:2}.empty strong{color:var(--ink);display:block;margin-bottom:5px}.modal-layer{position:fixed;inset:0;background:#18342a66;z-index:20;display:flex;align-items:flex-end;justify-content:center;padding:18px}.modal-layer[hidden]{display:none}.sheet{width:440px;max-height:90dvh;overflow:auto;background:var(--paper);border-radius:26px;padding:14px 26px 28px;position:relative;box-shadow:0 15px 80px #17372b22;animation:rise .2s ease-out}.sheet-handle{height:4px;width:34px;background:#d9dfd3;border-radius:4px;margin:0 auto 22px}.close{position:absolute;right:17px;top:17px;font-size:27px;color:var(--muted);width:36px;height:36px}.sheet h2{font-size:23px}.sheet .subtitle{font-size:13px;color:var(--muted);margin:6px 0 22px}.field{display:block;font-size:13px;font-weight:500;margin:17px 0 8px}.field-input{background:#fff;border:1px solid #dde3d7;border-radius:11px;padding:13px;width:100%;outline-color:#86a078;color:var(--ink)}textarea.field-input{min-height:110px;resize:vertical}.suggestions{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.suggestions button{background:#eaf0e3;padding:6px 10px;border-radius:7px;font-size:13px}.match-preview{padding:16px;background:#edf1e6;border-radius:12px;margin:16px 0}.match-preview h3{font-family:var(--system-font);font-size:24px}.match-preview p{color:#7b8871;font-size:13px;line-height:1.9;margin-top:5px}.hint{font-size:13px;color:var(--muted);line-height:1.9;margin:13px 0}.error{font-size:13px;color:#a4543c;margin:12px 0}.confirm-box{background:#edf1e6;padding:19px;border-radius:12px;margin:20px 0;font-size:14px;line-height:2}.confirm-box strong{font-size:23px;color:var(--green)}.success-mark{margin:5px auto 19px;background:#e4edda;width:65px;height:65px;border-radius:50%;display:grid;place-items:center;color:var(--green);font-size:31px}.success{text-align:center}.success .points{font-size:48px;color:var(--green);margin:18px 0}.success .points small{font-size:14px}.success p{color:var(--muted);font-size:13px;margin:10px 0 24px}.toast{position:fixed;left:50%;bottom:100px;transform:translate(-50%,15px);background:#294939;color:white;padding:11px 21px;border-radius:12px;font-size:13px;z-index:50;opacity:0;pointer-events:none;transition:.2s;width:max-content;max-width:85vw}.toast.show{opacity:1;transform:translate(-50%,0)}
/* 顶部一次性提醒（重复录入等必须被看见的提示） */
.top-notice{position:fixed;left:50%;top:14px;top:max(14px,env(safe-area-inset-top));width:calc(100% - 32px);max-width:408px;display:flex;align-items:center;gap:10px;background:#fdf6ef;border:1px solid #eedbca;border-radius:14px;padding:12px 14px;box-shadow:0 12px 34px #4b322016;z-index:60;opacity:0;pointer-events:none;transform:translate(-50%,-18px);transition:opacity .22s ease,transform .22s ease}
.top-notice.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.top-notice-icon{flex-shrink:0;width:19px;height:19px;border-radius:50%;background:#c9805a;color:#fff;font:600 13px/19px var(--system-font);text-align:center;letter-spacing:0}
.top-notice-text{flex:1;min-width:0;font-size:var(--font-caption);line-height:1.6;color:#95513a}
.top-notice-action{flex-shrink:0;font-size:var(--font-caption);color:#8a5a3c;padding:4px 2px 4px 6px;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
@media(prefers-reduced-motion:reduce){.top-notice{transition:none}}.desktop-note{position:fixed;left:calc(50% - 475px);top:90px}.wordmark{font-size:36px;font-family:var(--system-font);letter-spacing:7px}.wordmark span{display:block;font:13px/2.5 var(--system-font);letter-spacing:5px;color:#8a9b85}.desktop-note p{font-family:var(--system-font);font-size:23px;line-height:1.9;letter-spacing:3px;color:#73836e;margin:38px 0}.desktop-caption{font-size:13px;color:#8f9c88;letter-spacing:2px}@keyframes rise{from{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}@media(min-width:700px){.bottom-nav{bottom:0;border-radius:18px 18px 0 0}.modal-layer{align-items:center}.phone{min-height:calc(100dvh - 64px)}}@media(max-width:1000px){.desktop-note{display:none}}@media(max-width:520px){body{background:var(--paper)}.phone{width:100%;margin:0;border-radius:0;box-shadow:none}.bottom-nav{width:100%}.modal-layer{padding:0}.sheet{width:100%;border-radius:26px 26px 0 0;padding-bottom:max(28px,env(safe-area-inset-bottom))}.app-header{padding-top:22px}}@media(max-width:370px){main{padding:0 18px}.greeting h1{font-size:23px}.brand small{font-size:13px}.verse-line{gap:3px}.verse-line ruby{min-width:28px;font-size:24px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Global reading size scales text while retaining the mobile viewport width. */
:root{font-size:var(--font-base)}body{font-size:16px}.brand{flex-wrap:wrap;gap:6px}.brand small{letter-spacing:0}.greeting{gap:10px}.greeting>div:first-child{min-width:0}.greeting h1{overflow-wrap:anywhere}.balance-card .eyebrow{padding-right:40px;overflow-wrap:anywhere}.bottom-nav button>span{line-height:1.3}.phone{padding-bottom:calc(94px + 2rem)}.section-heading{gap:8px}.section-heading h2{flex:1}.text-button{flex-shrink:0}.feature-bottom{gap:8px}.round-next{flex-shrink:0}.settings-section{background:white;border:1px solid var(--line);border-radius:16px;padding:20px;margin-bottom:18px}.settings-section h2{font-size:17px}.input-caption{font-size:13px;color:var(--muted);line-height:1.8;margin-top:7px}.optional{font-weight:normal;color:var(--muted);font-size:13px;margin-left:5px}.font-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;border:0;padding:0;margin:14px 0}.font-option{position:relative;cursor:pointer}.font-option input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.font-option span{display:block;text-align:center;border:1px solid var(--line);border-radius:10px;padding:12px 3px;color:var(--muted);font-size:14px}.font-option small{display:block;font-size:13px;margin-top:4px}.font-option input:checked+span{background:var(--light);color:var(--green);border-color:var(--green)}.font-option input:focus-visible+span{outline:3px solid #8eae77;outline-offset:3px}.font-preview{background:var(--paper);border-radius:12px;padding:18px 12px}.font-preview>span{color:var(--muted);font-size:14px}.preview-verse{font-family:var(--system-font);font-size:calc(22px * var(--preview-scale,1));line-height:1.9;margin:12px 0;overflow-wrap:anywhere}.preview-copy{font-size:calc(16px * var(--preview-scale,1));color:var(--muted);line-height:1.9}.settings-rules{border-top:1px solid var(--line);padding:18px 0;margin-top:20px}.settings-rules summary{cursor:pointer;color:var(--muted);font-size:13px}.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}.page-title-row{gap:10px}.activity-row{gap:10px}.poem-row{gap:10px}.poem-row h3{overflow-wrap:anywhere}.sheet h2{padding-right:14px}

/* Keep larger default text readable without squeezing mobile actions. */
.feature-top{gap:8px;flex-wrap:wrap}.balance-footer{gap:10px}.section-heading{align-items:flex-start}.page-title-row .primary{flex-shrink:0}.verse-line rt{line-height:2}.activity-main p{line-height:1.8}.brand small{font-size:13px}.greeting h1{font-size:26px}.day-mark{width:45px}.font-options{gap:6px}.settings-section{padding:18px}.poem-feature .excerpt{line-height:1.9}.bottom-nav{padding-top:12px}

/* Compact home and long-form reading revision. */
.app-header{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:1px solid var(--line);padding:18px 24px;box-shadow:0 3px 12px #253e3605}
.next-poem{display:flex;align-items:baseline;gap:16px;width:100%;text-align:left;padding:16px 2px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.next-poem strong{font-size:18px;font-family:var(--system-font);font-weight:600;overflow-wrap:anywhere}.next-poem span{font-size:14px;color:var(--muted);flex-shrink:0}
.back{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;margin:16px 0 12px;background:var(--light);color:var(--green);border:1px solid #c5d2bd;border-radius:10px;font-weight:600;font-size:15px}
.detail-hero{padding:8px 0 16px}.detail-hero h1{font-size:26px;letter-spacing:2px;margin:10px 0 4px}.poem-controls{padding:10px 0}.poem-body{padding:12px 0 18px;overflow:visible}.verse-line{display:block;margin:8px 0;line-height:2.4;overflow-wrap:anywhere}.verse-line ruby{font-size:18px;min-width:0;margin:0 .15em;white-space:nowrap}.verse-line rt{font-size:10px;line-height:1.6}.no-pinyin rt{display:none}.poem-body.prose{text-align:left}.prose .verse-line{margin:10px 0;line-height:2.5}.prose .verse-line ruby{margin:0 .08em}.translation{padding:16px}.translation p{font-size:14px;line-height:1.9}
@media(max-width:520px){.app-header{padding-top:max(18px,env(safe-area-inset-top))}}@media(max-width:370px){.app-header{padding-left:18px;padding-right:18px}.verse-line ruby{font-size:18px;min-width:0}}

/* Book-like reading sheet: aligned syllables, restrained size, compact rhythm. */
.detail-hero{padding:5px 0 19px}.detail-hero h1{font-size:26px;letter-spacing:3px;margin:10px 0 5px}.detail-hero .author{font-size:13px}
.reading-sheet{border:1px solid #e0e6da;border-radius:17px;background:#fffefb;overflow:hidden;margin-bottom:16px}
.reading-toolbar{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;border-bottom:1px solid #edf0e7;color:#8b9685;font-size:12px;letter-spacing:1px}
.reading-toggle{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--green);padding:4px 0;min-height:28px}
.switch-track{display:block;width:30px;height:18px;background:#d9dfd3;border-radius:12px;padding:3px;transition:background .15s}.switch-track i{display:block;width:12px;height:12px;border-radius:50%;background:white;transition:transform .15s}.reading-toggle[aria-pressed="true"] .switch-track{background:#65816a}.reading-toggle[aria-pressed="true"] .switch-track i{transform:translateX(12px)}
.reading-body{padding:22px 18px 24px;display:grid;gap:19px}.reading-line{display:grid;grid-template-columns:repeat(var(--characters),minmax(0,1fr)) .8em;align-items:end;width:100%;max-width:290px;margin:0 auto;text-align:center}
.reading-character{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}.reading-pinyin{font: 11px/1.2 var(--system-font);color:#8e9987;letter-spacing:0;white-space:nowrap}.reading-hanzi{font-family:var(--system-font);font-size:21px;line-height:1.35;font-weight:400}.reading-punctuation{font-family:var(--system-font);font-size:19px;line-height:1.5;color:#6f7e68}
.hide-reading-pinyin .reading-pinyin{display:none}.hide-reading-pinyin{gap:14px}.reading-prose{display:block;text-align:justify;padding:18px 20px}.reading-prose p{font-family:var(--system-font);font-size:17px;line-height:1.95;text-indent:2em;overflow-wrap:anywhere}.reading-prose p+p{margin-top:10px}
.translation{border:0;border-left:2px solid #c7d4bd;background:#edf1e733;border-radius:0;padding:3px 0 3px 15px;margin:20px 0}.translation h3{font-size:14px;letter-spacing:1px;margin-bottom:7px;color:#52714f}.translation p{font-size:14px;line-height:1.85;color:#76816f}.detail-score{margin:19px 0 15px}.detail-score strong{font-size:17px}.detail-footnote{font-size:12px}.preview-verse{font-size:var(--preview-poem-size,20px)}.preview-copy{font-size:var(--preview-copy-size,16px)}
@media(max-width:370px){.reading-body{padding-left:12px;padding-right:12px}.reading-line{max-width:260px}.reading-pinyin{font-size:10px}.reading-hanzi{font-size:20px}}

/* 字号设置：修改下列变量即可统一调整；rem 相对全局基准。 */
:root{
  --font-base:17px; /* 全局基准 */
  --font-body:16px; /* 普通正文、表单输入 */
  --font-brand:24px; /* 顶部“诗芽”名称 */
  --font-page-title:26px; /* 诗词、账本、设置页标题 */
  --font-greeting:26px; /* 首页问候标题 */
  --font-section-title:19px; /* 首页分区标题 */
  --font-home-balance:58px; /* 首页可用积分数字 */
  --font-stat-number:24px; /* 首页三个统计数字 */
  --font-ledger-number:47px; /* 账本当前可用积分数字 */
  --font-feature-title:28px; /* 首页待背卡片诗题 */
  --font-feature-verse:17px; /* 首页卡片诗句 */
  --font-list-title:22px; /* 诗词列表诗题 */
  --font-detail-title:26px; /* 诗词详情页题目 */
  --font-poem-text:18px; /* 诗词原文字号 */
  --font-pinyin:11px; /* 逐字拼音 */
  --font-poem-punctuation:18px; /* 诗句标点 */
  --font-prose:17px; /* 文言文、长段落正文 */
  --font-translation:14px; /* 全文译文内容 */
  --font-translation-title:14px; /* “全文译文”小标题 */
  --font-button:16px; /* 主要按钮与返回按钮 */
  --font-small-button:14px; /* 添加按钮、搜索筛选、辅助按钮 */
  --font-ledger-label:14px; /* 账本可用积分标题、累计获得与兑换 */
  --font-ledger-filter:16px; /* 账本明细筛选标签 */
  --font-tab:14px; /* 列表与账本筛选标签 */
  --font-record-title:14px; /* 账本流水事项 */
  --font-record-number:18px; /* 流水积分变化数字 */
  --font-caption:12px; /* 说明、作者、时间、标签、导航文字 */
  --font-reading-label:12px; /* 原文工具栏及拼音开关 */
  --font-detail-note:12px; /* 背诵按钮下的说明 */
  --font-sheet-title:24px; /* 弹窗标题 */
  --font-settings-title:17px; /* 个人资料、系统字号标题 */
  --font-small-poem-text:18px; /* 窄屏诗词原文（屏宽≤370px） */
  --font-small-pinyin:11px; /* 窄屏拼音（屏宽≤370px） */
}

:root{font-size:var(--font-base)}
body{font-size:var(--font-body)}.brand{font-size:var(--font-brand)}h1{font-size:var(--font-page-title)}.greeting h1{font-size:var(--font-greeting)}h2{font-size:var(--font-section-title)}
.balance-value{font-size:var(--font-home-balance)}.stats strong{font-size:var(--font-stat-number)}.poem-feature h3{font-size:var(--font-feature-title)}.excerpt{font-size:var(--font-feature-verse)}.poem-row h3{font-size:var(--font-list-title)}.detail-hero h1{font-size:var(--font-detail-title)}
.reading-hanzi{font-size:var(--font-poem-text)}.reading-pinyin{font-size:var(--font-pinyin)}.reading-punctuation{font-size:var(--font-poem-punctuation)}.reading-prose p{font-size:var(--font-prose)}.translation p{font-size:var(--font-translation)}.translation h3{font-size:var(--font-translation-title)}
.primary,.back{font-size:var(--font-button)}.primary.small,.text-button{font-size:var(--font-small-button)}.tabs button{font-size:var(--font-tab)}.activity-main strong{font-size:var(--font-record-title)}.amount{font-size:var(--font-record-number)}
.hint,.author,.tag,.reward,.bottom-nav button,.eyebrow,.field,.input-caption,.optional,.date-label,.activity-main p,.amount small,.page-title-row p,.greeting p,.balance-copy,.balance-footer,.balance-footer button,.balance-value small,.stats strong small,.stats p,.feature-bottom small,.poem-row p,.poem-row .reward small,.sheet .subtitle,.suggestions button,.match-preview p,.error,.settings-rules summary,.page-note,.toast,.font-option small{font-size:var(--font-caption)}
.reading-toolbar,.reading-toggle{font-size:var(--font-reading-label)}.detail-footnote{font-size:var(--font-detail-note)}.sheet h2{font-size:var(--font-sheet-title)}.settings-section h2{font-size:var(--font-settings-title)}
.ledger-overview{padding:16px 18px;border-radius:16px;text-align:left}.ledger-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.ledger-summary>div{min-width:0}.ledger-summary>div+div{border-left:1px solid #dce4d6;padding-left:14px}.ledger-summary span{display:block;font-size:var(--font-caption);color:var(--muted);margin-bottom:5px}.ledger-summary strong{display:block;font-size:var(--font-ledger-number);font-weight:500;line-height:1.2;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;letter-spacing:-.5px}.ledger-summary>div:first-child strong{color:var(--green)}.ledger-overview .primary{margin-top:14px;padding:10px 12px;min-height:44px}
@media(max-width:370px){.reading-hanzi{font-size:var(--font-small-poem-text)}.reading-pinyin{font-size:var(--font-small-pinyin)}.ledger-overview{padding:14px}.ledger-summary{gap:8px}.ledger-summary>div+div{padding-left:10px}}

/* Focus available points; earned and redeemed remain secondary. */
.ledger-overview{padding:14px;background:#fffefb;border:1px solid #dfe6d8;border-radius:18px}
.ledger-summary{grid-template-columns:1.3fr 1fr 1fr;gap:10px;align-items:center}
.ledger-summary>div+div{border:0;padding:0 0 0 5px}
.ledger-summary .ledger-available{background:var(--green);padding:13px 14px;border-radius:12px}
.ledger-summary .ledger-available span{color:#dce6d5;letter-spacing:.4px}
.ledger-summary .ledger-available strong{color:#fff;font-weight:600}
.ledger-summary span{font-size:var(--font-caption);margin-bottom:7px;letter-spacing:0}
.ledger-summary .ledger-secondary strong{color:#6a7b64;font-weight:400}
.ledger-summary strong{font-size:var(--font-ledger-number);line-height:1.1;letter-spacing:-.5px}
.ledger-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);margin-top:12px;padding-top:12px}
.ledger-actions p{color:var(--muted);font-size:var(--font-caption);line-height:1.6}
.ledger-overview .ledger-actions .primary{margin:0;width:auto;min-height:40px;padding:8px 13px;white-space:nowrap;font-size:var(--font-button);border-radius:10px}
.brand small,.font-preview>span,.font-option small,.balance-value small,.stats strong small{font-size:var(--font-caption)}
.add-dashed,.suggestions button,.toggle{font-size:var(--font-small-button)}.font-option span{font-size:var(--font-tab)}.poem-row .reward{font-size:var(--font-record-title)}.detail-score{font-size:var(--font-caption)}.detail-score strong{font-size:var(--font-record-number)}
@media(max-width:370px){.ledger-overview{padding:12px}.ledger-summary{gap:7px}.ledger-summary>div+div{padding-left:3px}.ledger-summary .ledger-available{padding:12px 10px}.ledger-actions{gap:7px}}

/* Photo intake and editable recognition review. */
.photo-entry{border:1px solid #d8e2cf;background:#edf2e7;border-radius:16px;padding:18px;margin:18px 0 22px}
.photo-heading{display:flex;align-items:center;gap:12px}.photo-heading strong{font-size:var(--font-button);font-weight:600}.photo-heading p{font-size:var(--font-caption);color:var(--muted);margin-top:3px}
.camera-symbol{display:block;position:relative;width:36px;height:27px;border:2px solid #6c8a63;border-radius:7px;flex-shrink:0}.camera-symbol:before{content:'';position:absolute;width:10px;height:10px;border:2px solid #6c8a63;border-radius:50%;left:10px;top:6px}.camera-symbol:after{content:'';position:absolute;width:14px;height:5px;background:#6c8a63;border-radius:3px 3px 0 0;top:-6px;left:9px}
.photo-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}.photo-pick{position:relative;display:grid;place-items:center;text-align:center;min-height:42px;padding:9px 8px;border-radius:10px;background:var(--green);color:white;font-size:var(--font-button);cursor:pointer;overflow:hidden}.photo-pick.secondary{background:#fff;color:var(--green);border:1px solid #ccd9c2}.photo-pick input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}.photo-pick:focus-within{outline:3px solid #9bb48c;outline-offset:2px}.photo-pick:has(input:disabled){opacity:.5;cursor:wait}
.photo-tip,.photo-network{font-size:var(--font-caption);line-height:1.7;color:#7d8c72;margin-top:10px}.photo-network{border-top:1px solid #dce5d4;padding-top:10px}
#photo-review{margin-top:14px}#photo-review[hidden]{display:none}#photo-preview{display:block;max-width:100%;width:100%;height:160px;object-fit:contain;background:#e0e7da;border-radius:10px}.ocr-status{font-size:var(--font-caption);color:var(--green);line-height:1.7;margin:11px 0;overflow-wrap:anywhere}#ocr-progress{display:block;width:100%;height:6px;accent-color:var(--green);margin:9px 0}#ocr-progress[hidden]{display:none}.ocr-actions{display:flex;gap:8px;flex-wrap:wrap}.ocr-actions button{font-size:var(--font-small-button);padding:7px 9px;background:#fff;border:1px solid #d5dfcd;border-radius:7px}.ocr-actions #recognize-button{background:var(--green);color:white;border-color:var(--green)}.ocr-actions button[hidden]{display:none}
.form-divider{display:flex;align-items:center;gap:12px;font-size:var(--font-caption);color:var(--muted)}.form-divider:before,.form-divider:after{content:'';height:1px;background:var(--line);flex:1}.poem-metadata{display:grid;grid-template-columns:1.3fr 1fr;gap:12px}.poem-metadata>div{min-width:0}.field small{font-size:var(--font-caption);font-weight:400;color:var(--muted);margin-left:4px}.poem-body-input{min-height:155px;line-height:1.9}

.photo-thumbnail{height:160px;overflow:hidden;background:#e0e7da;border-radius:10px}.photo-thumbnail #photo-preview{border-radius:0}

/* Restore the home balance emphasis; ledger totals stay on a clean surface. */
.ledger-summary .ledger-available{background:none;padding:6px 8px 6px 0;border-radius:0}
.ledger-summary .ledger-available span{color:var(--muted)}
.ledger-summary>div.ledger-available:first-child strong{color:var(--green);font-size:var(--font-ledger-number);font-weight:600}
.ledger-summary .ledger-secondary{padding-top:6px;padding-bottom:6px}
.add-step{font-size:var(--font-caption);color:var(--green);letter-spacing:1px;margin:0 0 7px}
.review-back{min-height:44px;margin-top:9px;padding:10px;color:var(--green);font-size:var(--font-button);border:1px solid #d5dfcd;border-radius:10px;background:#edf2e7}

/* Subpages use their own back action; intake methods are mutually exclusive. */
.bottom-nav[hidden]{display:none!important}.phone.subpage{padding-bottom:max(28px,env(safe-area-inset-bottom))}
.entry-mode{display:grid;grid-template-columns:1fr 1fr;background:#e9ede3;border-radius:12px;padding:4px;gap:4px;margin:16px 0 20px}.entry-mode button{font-size:var(--font-button);padding:10px 8px;border-radius:9px;color:var(--muted)}.entry-mode button[aria-pressed="true"]{background:#fff;color:var(--green);font-weight:600;box-shadow:0 2px 6px #35523d0a}.manual-entry .field{margin-top:0}
.photo-entry.photo-flow{margin-top:0;padding:14px;background:#f0f3eb;border-radius:14px}.photo-empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:28px 8px 15px;gap:13px}.photo-empty strong{font-size:var(--font-button);font-weight:500}.photo-empty p{font-size:var(--font-caption);color:var(--muted);line-height:1.8}.photo-empty .camera-symbol{margin-bottom:5px}
.photo-preview-header{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:12px}.photo-preview-header strong{font-size:var(--font-record-title);font-weight:500}.photo-preview-header span{font-size:var(--font-caption);color:var(--muted)}
.photo-flow .photo-thumbnail{height:clamp(200px,34dvh,320px);background:#e4e9de;border-radius:10px;display:grid;place-items:center}.photo-flow .photo-thumbnail #photo-preview{height:100%;max-height:100%;width:100%;object-fit:contain;transform:none}
.photo-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:10px}.photo-tool,.photo-tools button{position:relative;overflow:hidden;background:white;border:1px solid #d9e1d0;border-radius:8px;color:var(--green);font-size:var(--font-small-button);min-height:40px;padding:8px 3px;display:grid;place-items:center;cursor:pointer}.photo-tool input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}.photo-tool:focus-within{outline:3px solid #9bb48c;outline-offset:2px}.photo-tool:has(input:disabled){opacity:.45}.cancel-recognition{padding:7px 12px;color:var(--green);background:white;border:1px solid #cfdac4;border-radius:8px;font-size:var(--font-small-button)}.cancel-recognition[hidden]{display:none}
#custom-body.poem-body-input{min-height:320px;height:clamp(320px,45dvh,480px);resize:vertical;line-height:2;padding:15px}

/* Keep review actions outside the scrolling form. */
.sheet.review-sheet{display:flex;flex-direction:column;height:min(90dvh,850px);max-height:90dvh;overflow:hidden;padding:14px 0 0}
.review-sheet .sheet-handle{flex-shrink:0;margin-bottom:20px}
.review-sheet .close{z-index:2}
.review-sheet #modal-content{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.review-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 26px 14px;scroll-padding-bottom:16px}
.review-scroll h2{padding-right:22px}
.review-footer{flex-shrink:0;background:var(--paper);border-top:1px solid var(--line);padding:14px 26px max(18px,env(safe-area-inset-bottom));box-shadow:0 -5px 16px #253e3605}
.review-footer .review-back{margin-top:8px}
.ledger-summary>.ledger-available+.ledger-secondary{border-left:1px solid #d9e1d0;padding-left:16px}
@media(max-width:370px){.review-scroll{padding-left:20px;padding-right:20px}.review-footer{padding-left:20px;padding-right:20px}.ledger-summary>.ledger-available+.ledger-secondary{padding-left:10px}}

/* Restore the original centered ledger summary layout. */
.ledger-overview.ledger-classic{background:#edf1e7;border:0;border-radius:18px;padding:22px;text-align:center}
.ledger-classic-balance{font-size:var(--font-ledger-number);font-weight:500;line-height:1.3;color:var(--green);margin:8px 0 16px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ledger-classic-balance small{font-size:var(--font-caption);font-weight:400;color:var(--muted);margin-left:8px}
.ledger-classic .ledger-totals{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 32px;font-size:var(--font-caption);color:var(--muted)}
.ledger-classic .ledger-totals b{margin-left:7px;color:var(--ink);font-weight:500}
.ledger-classic .primary{width:100%;margin-top:20px;min-height:44px;padding:12px 16px;font-size:var(--font-button);border-radius:12px}

/* Use each device's default UI font for all app text and controls. */
html,body,button,input,textarea,select{font-family:var(--system-font)}

/* Slightly enlarge only the ledger labels shown in the reference. */
.ledger-classic>.eyebrow,.ledger-classic .ledger-totals{font-size:var(--font-ledger-label)}
.tabs button[data-ledger-filter]{font-size:var(--font-ledger-filter)}

/* Subpage headers are hidden; pending tasks reveal a delete action on left swipe. */
.app-header[hidden]{display:none!important}
.swipe-item{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.swipe-item .poem-row{border-bottom:0;margin:0}
.swipe-content{position:relative;z-index:1;background:var(--paper);transition:transform .2s ease;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none}
.swipe-dragging .swipe-content{transition:none}
.swipe-delete{position:absolute;right:0;top:0;bottom:0;width:88px;background:#b05b4c;color:white;font-size:var(--font-button);font-weight:500;display:grid;place-items:center}
.swipe-delete:focus-visible{outline-offset:-4px;outline-color:white}
.swipe-item:nth-child(3n) .poem-character{background:#edeae0;border-color:#d8d0bb;color:#99896e}
.danger-button{background:#b05b4c}

/* Home statistics are direct links to their matching filtered details. */
.stats>button{display:block;width:100%;min-width:0;padding:0 4px;text-align:center;border-radius:0}
.stats>button+button{border-left:1px solid var(--line)}
.stats>button:hover{color:var(--green)}
.stats>button:focus-visible{outline:2px solid #8eae77;outline-offset:5px;border-radius:6px}

/* Give pages without the brand header a deliberate top inset. */
.app-header[hidden]+main{padding-top:calc(28px + env(safe-area-inset-top,0px))}
.app-header[hidden]+main>.page-title-row:first-child{margin-top:0;margin-bottom:26px}
.app-header[hidden]+main>.back:first-child{margin-top:0;margin-bottom:24px}
.app-header[hidden]+main .page-title-row .eyebrow{margin-bottom:6px}
.app-header[hidden]+main .page-title-row p{margin-top:8px}

/* Long passages support per-character annotation without consuming punctuation. */
.reading-prose ruby{ruby-align:center;margin:0 .12em;font-family:var(--system-font)}
.reading-prose rt{font-family:var(--system-font);font-size:var(--font-pinyin);font-weight:400;color:#829078;line-height:1.3;letter-spacing:0}
.reading-prose:not(.hide-prose-pinyin) p{line-height:2.8;text-indent:0}
.reading-prose.hide-prose-pinyin rt{display:none}
@media(max-width:370px){.reading-prose rt{font-size:var(--font-small-pinyin)}}

/* Live corpus search, provenance and optional model service. */
.poem-search-result{display:flex;width:100%;text-align:left;align-items:center;gap:10px;justify-content:space-between;padding:13px 12px;background:#fff;border:1px solid var(--line);border-radius:10px;margin:8px 0}.poem-search-result>span:first-child{min-width:0}.poem-search-result strong{display:block;font-size:var(--font-button);overflow-wrap:anywhere}.poem-search-result small{display:block;font-size:var(--font-caption);color:var(--muted);margin-top:4px}.poem-search-result em{font-style:normal;font-size:var(--font-record-title);color:#69785e;display:block;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:290px}.poem-search-result.selected{border-color:var(--green);background:#edf2e7}.manual-fallback{font-size:var(--font-small-button);color:var(--green);padding:8px 0;margin-bottom:12px}
.review-origin{font-size:var(--font-caption);color:var(--muted);line-height:1.8;margin:0 0 14px;overflow-wrap:anywhere}.review-origin a{color:var(--green);text-decoration:underline}.review-warning{background:#f6efdf;border-left:2px solid #c5a16c;padding:8px 10px;font-size:var(--font-caption);line-height:1.8;color:#816535;margin:9px 0}
.crop-controls{padding:12px 0;border-top:1px solid #d8e0d0;margin-top:12px}.crop-controls summary{font-size:var(--font-small-button);color:var(--green);cursor:pointer}.crop-controls label{display:block;font-size:var(--font-caption);color:var(--muted);margin:10px 0}.crop-controls output{float:right}.crop-controls input{display:block;width:100%;accent-color:var(--green);margin-top:5px;min-height:28px}.crop-controls button{font-size:var(--font-small-button);color:var(--green);background:white;padding:7px 10px;border-radius:7px}
/* Translation stays readable for long prose and editable without a model. */
.translation p { white-space: pre-wrap; }
.translation-editor { margin: 24px 0 16px; }
.translation-input { min-height: 200px; line-height: 1.8; font-size: var(--font-translation,14px); resize: vertical; }
.translation-editor small { font-weight: normal; }

/* Reading comparison: original first, optional translation directly underneath. */
.comparison-toolbar { flex-wrap: wrap; gap: 12px; padding: 16px 18px; letter-spacing: 0; }
.reading-controls { display: flex; gap: 18px; }
.reading-controls .reading-toggle { min-height: 32px; gap: 8px; }
.comparison-body { padding: 4px 22px; }
.comparison-unit { padding: 10px 0; }
.comparison-unit + .comparison-unit { border-top: 1px solid #edf0e7; }
.comparison-original { margin: 0; font-size: var(--font-poem-text); line-height: 2.8; overflow-wrap: anywhere; color: #203e3b; }
.comparison-original ruby { ruby-align: center; margin-right: .12em; }
.comparison-original rt { font-size: var(--font-pinyin); color: #859180; font-weight: 400; }
.comparison-no-pinyin rt { display: none; }
.comparison-no-pinyin .comparison-original { line-height: 1.9; }
.comparison-translation { margin: 10px 0 0; font-size: var(--font-translation); line-height: 1.9; color: #68796d; display: flex; gap: 10px; align-items: baseline; }
.translation-mark { font-size: var(--font-caption); color: #7d8f76; flex: 0 0 auto; }
.translation-unmatched { padding: 14px 22px; background: #f3f6ef; color: #68796d; font-size: var(--font-translation); line-height: 1.9; }
.legacy-translation { white-space: pre-wrap; }
.reading-edit { padding: 12px 22px; border-top: 1px solid #edf0e7; text-align: right; }
.translation-pair-field { margin: 18px 0; }
.translation-pair-field label { display: block; line-height: 1.8; font-size: var(--font-body); margin-bottom: 8px; }
.translation-pair-field textarea { min-height: 82px; font-size: var(--font-translation); line-height: 1.8; resize: vertical; }
.translation-editor details { margin-top: 20px; color: #68796d; }
.translation-editor summary { font-size: var(--font-caption); cursor: pointer; padding: 12px 0; }
@media(max-width:370px) { .comparison-body { padding-inline: 16px; } .reading-controls { gap: 12px; } }

/* Equal character columns keep long/short pinyin syllables from shifting the text. */
.comparison-unit { padding: 10px 0; }
.comparison-original { display: flex; flex-wrap: wrap; align-items: end; row-gap: 12px; line-height: 1.4; overflow-wrap: normal; }
.aligned-character { display: inline-flex; flex-direction: column; align-items: center; justify-content: end; flex: 0 0 1.8em; min-width: 0; }
.aligned-pinyin { display: block; font-size: var(--font-pinyin); line-height: 1.3; min-height: 1.3em; white-space: nowrap; color: #859180; font-weight: 400; }
.aligned-hanzi { display: block; font-size: inherit; line-height: 1.4; }
.aligned-punctuation { flex-basis: .75em; }
.comparison-no-pinyin .aligned-pinyin { display: none; }
.comparison-no-pinyin .comparison-original { line-height: 1.4; }
.comparison-translation { margin-top: 4px; line-height: 1.8; }
@media(max-width:370px) { .aligned-pinyin { font-size: var(--font-small-pinyin); } }

/* Plain reading uses natural text spacing and original paragraphs. */
.comparison-no-pinyin .comparison-original { display: block; line-height: 1.8; }
.comparison-no-pinyin .aligned-character, .comparison-no-pinyin .aligned-hanzi { display: inline; }
.compact-text { padding-top: 16px; padding-bottom: 16px; }
.compact-text .comparison-original { display: block; line-height: 1.9; letter-spacing: .04em; }
.compact-text .comparison-original + .comparison-original { margin-top: 6px; }

/* 待背诵队列：长按拖动调整顺序 */
.queue-hint { font-size: var(--font-caption); color: var(--muted); margin: 14px 0 0; letter-spacing: .2px; }
.reorder-tip { position: fixed; left: 50%; top: 14px; transform: translateX(-50%); z-index: 60; max-width: 88vw; box-shadow: 0 8px 24px #253e3626; font-size: var(--font-caption); color: var(--green); background: #e8eee1; border-radius: 10px; padding: 9px 12px; margin: 8px 0 4px; text-align: center; }
body.reorder-active { touch-action: none; user-select: none; -webkit-user-select: none; }
body.reorder-active .swipe-content { touch-action: none; cursor: grabbing; }
.swipe-item.reorder-shifting { transition: transform .16s ease; will-change: transform; }
.swipe-item.reordering { position: relative; z-index: 8; border-radius: 14px; background: var(--paper); box-shadow: 0 14px 34px #253e3626; transition: none; }

/* 多页拍照：缩略图导航 */
.photo-tools { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.page-strip { display: flex; gap: 8px; margin: 10px 0 0; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
.page-chip { position: relative; flex: 0 0 auto; width: 60px; height: 60px; border-radius: 9px; overflow: hidden; border: 2px solid transparent; background: #ecefe5; padding: 0; }
.page-chip img { width: 100%; height: 100%; object-fit: cover; display: block; }
.page-chip span { position: absolute; right: 3px; bottom: 3px; background: #00000073; color: #fff; font-size: 11px; border-radius: 4px; padding: 0 4px; line-height: 1.6; }
.page-chip.active { border-color: var(--green); }
.page-strip-hint { font-size: var(--font-caption); color: var(--muted); line-height: 1.8; margin: 8px 0 0; }

/* 拍照面板紧凑化：工具收成一行，裁剪旋转折叠进「调整」 */
.photo-bar { display: flex; gap: 8px; margin-top: 10px; }
.photo-bar .photo-tool { flex: 1; display: grid; place-items: center; min-height: 38px; padding: 0 8px; background: #fff; border: 1px solid #d8e0d0; border-radius: 10px; color: var(--green); font-size: var(--font-caption); }
.photo-bar .photo-tool input { display: none; }
.photo-cap { margin: 10px 0 0; font-size: var(--font-caption); color: var(--muted); line-height: 1.7; }
.page-strip { align-items: flex-start; padding-top: 8px; }
.page-chip-wrap { position: relative; flex: 0 0 auto; }
.page-chip { width: 54px; height: 54px; }
.page-chip-x { position: absolute; top: -7px; right: -7px; width: 21px; height: 21px; padding: 0; border: none; border-radius: 50%; background: #3d4b43; color: #fff; font-size: 13px; line-height: 21px; text-align: center; box-shadow: 0 2px 6px #0000002e; }
.photo-adjust { margin-top: 10px; }
.photo-adjust > summary { display: flex; align-items: center; justify-content: space-between; padding: 7px 2px; font-size: var(--font-caption); color: var(--muted); cursor: pointer; list-style: none; }
.photo-adjust > summary::-webkit-details-marker { display: none; }
.photo-adjust > summary::after { content: '展开'; color: var(--green); }
.photo-adjust[open] > summary::after { content: '收起'; }
.photo-adjust-body { margin-top: 4px; padding: 10px 12px; background: #fff; border: 1px solid #d8e0d0; border-radius: 10px; }
.photo-adjust-row { display: flex; gap: 8px; margin-bottom: 4px; }
.photo-adjust-row button { flex: 1; min-height: 34px; background: #f4f7ef; border: 1px solid #d8e0d0; border-radius: 8px; color: var(--green); font-size: var(--font-caption); }
.photo-adjust-body label { display: flex; align-items: center; gap: 8px; margin: 7px 0; font-size: var(--font-caption); color: var(--muted); }
.photo-adjust-body label input[type=range] { order: 1; flex: 1; min-width: 0; }
.photo-adjust-body label output { order: 2; min-width: 36px; text-align: right; font-variant-numeric: tabular-nums; }
.photo-adjust-body .hint { margin: 6px 0 0; }

/* 调整照片：从灰色小字改成看得见的按钮条 */
.photo-adjust { margin: 12px 0 0; }
.photo-adjust > summary {
  display: flex; align-items: center; justify-content: space-between;
  min-height: 44px; margin: 0; padding: 0 13px;
  background: #eef3e7; border: 1px solid #c3d3b4; border-radius: 10px;
  color: var(--green); font-size: var(--font-body); font-weight: 600;
  cursor: pointer; list-style: none;
}
.photo-adjust > summary::-webkit-details-marker { display: none; }
.photo-adjust > summary::before { content: '⛭'; margin-right: 7px; font-size: 15px; font-weight: 400; color: #6b7f5f; }
.photo-adjust > summary .photo-adjust-title { flex: 1; }
.photo-adjust > summary::after { content: '展开 ›'; font-size: var(--font-caption); font-weight: 400; color: var(--green); }
.photo-adjust[open] > summary::after { content: '收起 ⌃'; }
.photo-adjust[open] > summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.photo-adjust[open] .photo-adjust-body { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; }

/* 备案号（工信部要求：首页底部展示并链接至 beian.miit.gov.cn） */
.icp-footer { text-align: center; padding: 16px 24px 4px; font-family: var(--system-font); }
.icp-footer a { font-size: 12px; color: #9aa79a; letter-spacing: .3px; text-decoration: none; }
.icp-footer a:hover, .icp-footer a:focus-visible { color: var(--green); text-decoration: underline; }
.phone.subpage .icp-footer { padding-bottom: max(10px, env(safe-area-inset-bottom)); }
