:root{--bg:#faf8f4;--paper:#fffefa;--ink:#403e36;--muted:#878477;--line:#e9e5dc;--sage:#6f8067;--accent:#dca489}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.75}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.6;cursor:wait}a:hover{color:var(--sage)}button:focus-visible,a:focus-visible{outline:3px solid #a4b897;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1{font-size:32px;line-height:1.4;letter-spacing:1px;font-weight:600;margin-bottom:10px}h2{font-size:21px;font-weight:600}h3{font-size:18px;line-height:1.7}p{margin-bottom:14px}.muted,.helper{color:var(--muted)}.helper{font-size:12px}.eyebrow{font-size:11px;letter-spacing:2px;color:#9a8c78;margin-bottom:12px}.app-shell{display:flex;min-height:100vh}.sidebar{width:230px;position:fixed;inset:0 auto 0 0;background:#f1eee6;padding:34px 22px;display:flex;flex-direction:column;border-right:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;font-size:21px;letter-spacing:2px;font-weight:600}.brand small{display:block;font-size:9px;letter-spacing:2px;font-weight:400;color:#8f8879}.brand-logo{display:block;width:186px;max-width:100%;height:auto;object-fit:contain;border-radius:8px}.nav-caption{font-size:11px;color:#9a9286;margin:27px 4px 22px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{padding:11px 14px;border-radius:8px;display:flex;align-items:center;gap:12px;color:#777568}.sidebar nav a span{font-size:21px;width:22px;text-align:center}.sidebar nav a.active{background:#e2e7d9;color:#526445;font-weight:600}.sidebar-note{margin-top:auto;padding:40px 14px 15px;color:#96927f;font-size:12px}.sidebar-note>span{font-size:30px;color:#baa780}.sidebar-note p{line-height:2.2}.sidebar-bottom{border-top:1px solid #e0dccf;padding-top:20px;display:flex;gap:14px;font-size:12px;color:#8a8478}.main-shell{margin-left:230px;width:calc(100% - 230px)}.topbar{height:83px;padding:0 48px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;color:#928e83;font-size:12px}.topbar>div{display:flex;align-items:center;gap:18px}.user-name{color:#667359}.button{display:inline-flex;justify-content:center;align-items:center;gap:8px;padding:11px 22px;background:var(--sage);border:1px solid var(--sage);border-radius:7px;color:white;font-size:13px;cursor:pointer}.button:hover{color:white;background:#5d7056}.button.small{padding:8px 15px;font-size:12px}.button.secondary{background:transparent;color:var(--sage)}.button.full{width:100%}.text-button{border:0;background:transparent;color:var(--sage);padding:5px}.main-shell main{padding:40px 48px;max-width:1420px;margin:auto;min-height:75vh}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:20px}.page-heading p{margin-bottom:0}.page-heading .eyebrow{margin-bottom:10px}.welcome-panel{border-radius:12px;background:#eceee4;min-height:245px;padding:31px 40px;display:flex;justify-content:space-between;align-items:center;margin-bottom:38px;overflow:hidden}.welcome-panel h2{font-size:25px;line-height:1.6;font-family:Georgia,"Microsoft YaHei",serif;font-weight:500}.welcome-panel p{font-size:13px;color:#8a8c7c}.welcome-panel a{font-size:13px;color:#65785a}.welcome-panel a span{margin-left:18px}.letter-art{position:relative;width:230px;height:180px;margin-right:35px}.paper{position:absolute;left:35px;top:0;width:150px;height:175px;background:#fffdf4;transform:rotate(-9deg);padding:20px;box-shadow:1px 4px 18px #91896720;border:1px solid #dedacb}.paper span{font-family:serif;font-size:12px;color:#aaa28e}.paper i{display:block;height:1px;background:#e4dfd0;margin:15px 0}.paper b{font-weight:400;color:#cf9a80;font-size:26px;float:right}.envelope{position:absolute;left:17px;top:100px;width:190px;height:110px;background:#d9c4a3;clip-path:polygon(0 0,50% 42%,100% 0,100% 100%,0 100%);transform:rotate(-9deg);opacity:.85}.art-flower{position:absolute;right:-25px;top:100px;font-size:85px;color:#bac4a6;transform:rotate(12deg)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.section-heading h2{margin:0;font-size:19px}.section-heading>.muted{font-size:12px}.category-list{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:35px}.chip{border:1px solid var(--line);padding:7px 15px;border-radius:25px;color:#817b6e;background:#fffdf8;font-size:12px}.chip.selected{background:#75846c;color:#fff;border-color:#75846c}.chip:hover{border-color:#88987a}.count{font-size:12px;color:#9d9a8f;font-weight:400;margin-left:7px}.search{display:flex;max-width:260px;background:#fffefa;border:1px solid var(--line);border-radius:7px}.search input{border:0;background:transparent;margin:0;padding:7px 12px;font-size:12px}.search button{border:0;background:transparent;padding:0 12px;font-size:23px;color:#99937f}.article-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.article-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;transition:transform .15s,border-color .15s}.article-card:hover{transform:translateY(-3px);border-color:#b8c0a9;color:var(--ink)}.article-visual{height:145px;display:flex;align-items:center;justify-content:center;position:relative;background:#eee9de}.article-visual>span{font-family:Georgia,serif;font-size:74px;font-weight:400;color:#a6af95}.article-visual small{position:absolute;bottom:12px;left:17px;font-size:10px;letter-spacing:1px;color:#918b79}.tone-0{background:#eee6df}.tone-0>span{color:#c4ab97}.tone-1{background:#e9eee3}.tone-2{background:#f0e9d9}.tone-2>span{color:#c3b58a}.tone-3{background:#e6e9e8}.tone-3>span{color:#a2b2ac}.card-copy{padding:20px 20px 14px;display:flex;flex-direction:column;flex:1}.source{font-size:10px;letter-spacing:.5px;color:#9b9487}.card-copy h3{font-size:17px;margin:10px 0;line-height:1.7}.card-copy p{font-size:12px;color:#969183;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-bottom{margin-top:auto;display:flex;justify-content:space-between;border-top:1px solid #efebe3;padding-top:11px;font-size:10px;color:#969782}.card-bottom span:last-child{font-size:17px}.privacy-strip{margin-top:32px;padding:16px;background:#f0f0e9;border-radius:7px;display:flex;gap:12px;align-items:center;font-size:11px;color:#8b8d7e}.privacy-strip a{white-space:nowrap;margin-left:auto;text-decoration:underline}footer{padding:20px 48px 30px;color:#aaa395;font-size:10px;display:flex;gap:10px;align-items:center}footer a{margin-left:auto}.empty{border:1px dashed #dcded0;background:#f8f8f1;border-radius:10px;padding:55px 25px;text-align:center;margin:20px 0;color:#858775}.empty h2{font-size:21px;color:#676e5f}.empty-symbol{font-size:48px;color:#b3baa4;display:block;margin-bottom:10px}.notice{background:#f1f2e9;border:1px solid #e1e5d6;border-radius:7px;padding:15px 18px;color:#6f795f;font-size:13px;margin:18px 0}.notice.error{color:#9a5848;border-color:#efd5cc;background:#fff1ec}.auth-card{max-width:460px;margin:28px auto;padding:36px;background:var(--paper);border:1px solid var(--line);border-radius:12px}.auth-card>p{margin-bottom:26px}label{display:block;font-size:13px;color:#767363;margin-bottom:18px}input,textarea,select{display:block;width:100%;border:1px solid #deddd2;border-radius:6px;background:#fffefa;padding:10px 12px;margin-top:7px;color:var(--ink);min-width:0}textarea{resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid #b9c4aa;outline-offset:1px}label.check{display:flex;gap:8px;align-items:flex-start;font-size:11px}label.check input{width:auto;margin:5px 0}.check a{text-decoration:underline}.switch{display:block;margin:20px auto 10px}.auth-card>a{font-size:12px;display:block;text-align:center}.editor-panel,.reading-paper{border:1px solid var(--line);background:var(--paper);border-radius:11px;padding:32px;margin-bottom:26px}.editor-panel{max-width:900px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.form-actions{display:flex;justify-content:space-between;align-items:center}.vault-list{display:grid;gap:20px}.vault-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:26px}.vault-card h2{font-size:21px}.vault-card .eyebrow{letter-spacing:.8px;margin:0}.badge{font-size:10px;color:#839075;background:#edf1e5;border-radius:15px;padding:3px 10px}.preserve{white-space:pre-wrap;overflow-wrap:anywhere;line-height:2;max-height:650px;overflow:auto}.item-actions,.reading-actions{display:flex;gap:16px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:16px;margin-top:24px}.item-actions button,.reading-actions button{border:0;background:transparent;color:var(--sage);padding:2px;font-size:12px}.item-actions .button{background:var(--sage);padding:10px 16px;color:white}.danger-text{color:#b77564!important}.reading-paper{max-width:800px;margin:24px auto;padding:42px}.reading-paper h1{font-size:29px;margin-bottom:25px}.reading-paper h2{margin-top:30px}.reading-paper h3{margin-top:25px}.lede{font-size:17px;color:#8a8578;line-height:2}hr{border:0;border-top:1px solid var(--line);margin:30px 0}.back{color:var(--muted);font-size:12px}.reading-actions{font-size:12px;align-items:center}.reading-actions a{margin-left:auto}.reading-paper .helper{margin-top:25px}.notice input{font-size:11px}summary{cursor:pointer;color:var(--sage);padding:12px 0}#blazor-error-ui{display:none;background:#fff0e9;position:fixed;bottom:0;left:0;width:100%;padding:15px;z-index:1000}.loading-screen{padding:100px;text-align:center;color:#829274}.loading-progress{display:none}.invalid{border-color:#bb7664}.validation-message{color:#aa6756}
@media(min-width:1500px){.main-shell main{padding-top:45px}.article-visual{height:175px}}
@media(max-width:1150px){.sidebar{width:195px;padding:28px 16px}.main-shell{margin-left:195px;width:calc(100% - 195px)}.main-shell main{padding:30px}.topbar{padding:0 30px}.article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.letter-art{margin-right:0}.welcome-panel{padding:28px}}
@media(max-width:760px){.app-shell{display:block}.sidebar{position:relative;width:100%;padding:16px;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:18px}.brand-logo{width:140px}.nav-caption,.sidebar-note,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow-x:auto;gap:6px;margin-top:15px}.sidebar nav a{white-space:nowrap;padding:7px 10px;font-size:12px}.sidebar nav a span{font-size:15px;width:auto}.main-shell{margin:0;width:100%}.topbar{height:58px;padding:0 20px}.topbar>span{font-size:10px}.main-shell main{padding:25px 20px}.page-heading{align-items:flex-start}.page-heading h1{font-size:26px}.page-heading>.button{font-size:11px;padding:8px 10px;white-space:nowrap}.welcome-panel{min-height:205px;padding:23px}.welcome-panel h2{font-size:21px}.letter-art{transform:scale(.65);width:130px;margin-right:-10px;transform-origin:right center}.section-heading>.muted{display:none}.chip{padding:6px 11px}.article-grid{gap:14px}.card-copy{padding:15px}.card-copy h3{font-size:15px}.article-visual{height:115px}.article-visual>span{font-size:54px}.privacy-strip a{display:none}footer{padding:15px 20px;font-size:9px}.reading-paper{padding:25px}.editor-panel{padding:22px}.form-grid{grid-template-columns:1fr;gap:0}.search{max-width:175px}.auth-card{padding:26px;margin:5px auto}.reading-actions a{margin-left:0}}
@media(max-width:400px){.article-grid{grid-template-columns:1fr}.letter-art{display:none}.topbar>span{display:none}.section-heading{flex-wrap:wrap}}

.timeline-filter{max-width:400px}.timeline{max-width:900px}.timeline>h2{font-size:17px;margin:32px 0 18px;color:#869076}.timeline-entry{display:flex;gap:24px;position:relative;margin-bottom:20px}.timeline-date{min-width:65px;text-align:center;display:flex;flex-direction:column;color:#969e89}.timeline-date strong{font-size:28px;font-weight:400}.timeline-date span{font-size:10px}.timeline-entry .vault-card{flex:1;min-width:0}.timeline-entry .vault-card h3{margin-top:12px}.timeline-entry .vault-card .preserve{max-height:350px}
.photo-section{margin:1rem 0}.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.photo-grid figure{margin:0}.photo-grid img{display:block;width:100%;height:auto;max-height:420px;object-fit:contain;border-radius:12px;background:#f5f2ec}.photo-grid figcaption{margin-top:.4rem}.photo-section input[type=file]{max-width:100%;font-size:.85rem}
