.home-portals { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; padding-block: 22px 30px; }
.portal-card { position: relative; display: grid; min-height: 132px; grid-template-columns: 62px minmax(0,1fr) 28px; gap: 16px; align-items: center; padding: 22px 24px; overflow: hidden; border: 1px solid rgba(124,97,77,.13); border-radius: 17px; color: #553b30; background: rgba(255,253,249,.92); box-shadow: 0 9px 22px rgba(99,70,50,.065); text-decoration: none; transition: transform .25s var(--ease-soft),box-shadow .25s ease; }
.portal-card:hover { transform: translateY(-4px); box-shadow: 0 15px 30px rgba(99,70,50,.11); }
.portal-card::after { position:absolute; right:-22px; bottom:-26px; width:100px; height:90px; border-radius:50%; background:var(--portal-glow); content:""; opacity:.45; }
.portal-projects { --portal-glow:#dce6ce; }.portal-recent { --portal-glow:#f1d9c4; }.portal-fragments { --portal-glow:#eadfc8; }
.portal-icon { display:grid; width:58px; height:58px; place-items:center; border-radius:50%; color:#71845f; background:#f2efe6; font-size:1.45rem; }
.portal-copy { display:flex; min-width:0; flex-direction:column; }.portal-copy small { color:#aa8e7e; font-size:.58rem; letter-spacing:.16em; }.portal-copy strong { margin-top:5px; color:#482d23; font-family:var(--font-display); font-size:1.3rem; }.portal-copy > span { margin-top:7px; overflow:hidden; color:#857166; font-size:.73rem; text-overflow:ellipsis; white-space:nowrap; }.portal-arrow { z-index:1; color:#a45f35; font-size:1.25rem; }
.inner-main { min-height:calc(100vh - 120px); padding-bottom:44px; }.page-intro { padding:54px 6px 30px; text-align:center; }.page-intro-kicker { color:#a6755d; font-family:"Segoe Print","KaiTi",cursive; font-size:.68rem; letter-spacing:.15em; }.page-intro h1 { display:flex; justify-content:center; align-items:center; gap:14px; margin:10px 0 12px; color:#472a20; font-family:var(--font-display); font-size:clamp(2.3rem,5vw,3.5rem); }.page-intro p { max-width:620px; margin:0 auto; color:#7d695e; font-size:.86rem; line-height:1.8; }.page-section { padding-bottom:35px; }.page-state { display:grid; min-height:130px; place-items:center; border:1px dashed rgba(124,97,77,.2); border-radius:17px; color:#8b776b; background:rgba(255,253,249,.64); }.page-state[hidden] { display:none; }
.project-page-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }.project-page-card { overflow:hidden; border:1px solid rgba(124,97,77,.13); border-radius:20px; background:#fffdfa; box-shadow:0 10px 28px rgba(99,70,50,.07); transition:transform .25s var(--ease-soft),box-shadow .25s ease; }.project-page-card:hover { transform:translateY(-4px); box-shadow:0 16px 35px rgba(99,70,50,.12); }.project-page-art { display:grid; height:210px; place-items:center; overflow:hidden; background:var(--project-soft); }.project-page-art img { width:100%; height:100%; object-fit:cover; }.project-page-copy { padding:22px 24px 25px; }.project-page-copy small { color:var(--project-accent); font-size:.67rem; }.project-page-copy h2 { margin:6px 0 8px; color:#4e3328; font-family:var(--font-display); font-size:1.42rem; }.project-page-copy > p { min-height:3em; margin:0; color:#7c685e; font-size:.78rem; line-height:1.65; }.project-tags { display:flex; gap:7px; margin-top:15px; }.project-tags span { padding:4px 10px; border-radius:999px; color:var(--project-accent); background:var(--project-soft); font-size:.64rem; }.project-page-link { display:inline-flex; margin-top:17px; color:var(--project-accent); font-size:.75rem; font-weight:700; text-decoration:none; }.project-gentle-note { margin-top:17px!important; min-height:0!important; color:var(--project-accent)!important; font-family:"Segoe Print","KaiTi",cursive; font-size:.68rem!important; }
.recent-page-card { min-height:180px; padding:28px 32px 25px; }.recent-page-card .status-icon img { width:28px; height:28px; object-fit:contain; }
.fragment-page-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }.fragment-page-card { min-height:210px; padding:26px 28px; border-radius:18px; }.fragment-page-card::before { width:46px; height:14px; right:38px; background:rgba(225,185,133,.46); transform:rotate(4deg); }.fragment-page-card.has-photo { display:grid; grid-template-columns:minmax(150px,36%) 1fr; grid-template-areas:"photo meta" "photo body"; column-gap:27px; align-content:center; padding:21px; }.fragment-photo { grid-area:photo; align-self:stretch; min-height:190px; margin:0; padding:7px 7px 22px; overflow:hidden; border:1px solid #eadfce; background:#fff; box-shadow:0 8px 16px rgba(81,58,43,.1); transform:rotate(-1.8deg); }.fragment-page-card:nth-child(3n+2) .fragment-photo { transform:rotate(1.8deg); }.fragment-photo img { display:block; width:100%; height:100%; min-height:160px; object-fit:cover; }.fragment-page-card .fragment-meta { grid-area:meta; align-self:end; }.fragment-body { grid-area:body; align-self:start; }.fragment-body h2 { margin:0 0 8px; color:#51372d; font-family:var(--font-display); font-size:1rem; }.fragment-page-card .fragment-content { font-size:.84rem; line-height:1.9; }.fragments-page .fragment-state { min-height:130px; }
.footer-links a { color:#9b8a80; text-decoration:none; }.footer-links a:hover { color:#95552f; }
@media(max-width:920px){.home-portals{grid-template-columns:1fr}.portal-card{min-height:110px}.project-page-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fragment-page-grid{grid-template-columns:1fr}.recent-page-card{min-height:0}}
@media(max-width:680px){.home-portals{padding-top:15px}.portal-card{grid-template-columns:50px minmax(0,1fr) 20px;padding:18px}.portal-icon{width:48px;height:48px}.page-intro{padding:35px 8px 23px}.page-intro h1{font-size:2.15rem}.project-page-grid{grid-template-columns:1fr}.project-page-art{height:190px}.fragment-page-card.has-photo{grid-template-columns:112px minmax(0,1fr);column-gap:16px;padding:17px}.fragment-photo{min-height:150px;padding:5px 5px 15px}.fragment-photo img{min-height:128px}.fragment-page-card{min-height:170px;padding:22px}.recent-page-card{padding:21px}.footer-links a:not(.admin-entry){display:none}}
@media(max-width:420px){.fragment-page-card.has-photo{display:block}.fragment-photo{height:210px;margin:0 0 20px;transform:none!important}.fragment-page-card .fragment-meta{margin-bottom:10px}}

/* 今日碎片配图是贴在卡片右侧的轻量 SVG 小插画。 */
.fragment-page-card.has-photo { display:block; padding:26px 150px 26px 28px; }
.fragment-page-grid > .fragment-page-card:last-child { grid-column:auto; }
.fragment-side-illustration { position:absolute; z-index:1; right:17px; bottom:12px; display:grid; width:118px; height:132px; place-items:end center; margin:0; pointer-events:none; }
.fragment-side-illustration img { display:block; width:100%; max-height:100%; object-fit:contain; filter:drop-shadow(0 6px 6px rgba(91,65,45,.06)); }
.fragment-page-card:nth-child(3n+2) .fragment-side-illustration { width:106px; transform:rotate(2deg); }
.fragment-page-card .fragment-meta,.fragment-page-card .fragment-body { position:relative; z-index:2; }
@media(max-width:680px){.fragment-page-card.has-photo{padding:20px 112px 20px 20px}.fragment-side-illustration{right:8px;width:96px;height:110px}}
@media(max-width:420px){.fragment-page-card.has-photo{padding-right:96px}.fragment-side-illustration{width:82px;height:96px}}

.recent-status-row { grid-template-columns:48px minmax(0,1fr) auto 20px 66px; }
.recent-row-image { grid-column:5; grid-row:1 / span 2; width:58px; height:58px; justify-self:end; object-fit:contain; opacity:.88; filter:drop-shadow(0 4px 5px rgba(91,65,45,.06)); }
@media(max-width:680px){.recent-status-row{grid-template-columns:42px minmax(0,1fr) 18px}.recent-row-image{grid-column:3;grid-row:1 / span 2;width:38px;height:38px;opacity:.75;transform:translateY(-24px)}}

.home-overview { padding-block: 12px 6px; }
.home-section-heading { margin-bottom: 13px; }
.project-feature-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }
.project-feature-card { position:relative; display:grid; min-width:0; grid-template-columns:100px minmax(0,1fr); gap:16px; align-items:center; min-height:135px; overflow:hidden; padding:16px 20px 16px 12px; border:1px solid rgba(124,97,77,.13); border-radius:16px; color:#553b30; background:var(--project-soft); box-shadow:0 8px 20px rgba(99,70,50,.06); text-decoration:none; transition:transform .24s var(--ease-soft),box-shadow .24s ease; }
.project-feature-card:hover { transform:translateY(-3px); box-shadow:0 13px 26px rgba(99,70,50,.11); }
.project-feature-art { display:grid; height:100px; place-items:center; overflow:hidden; }.project-feature-art img { width:125px; height:105px; object-fit:contain; filter:drop-shadow(0 6px 6px rgba(80,60,43,.08)); }
.project-feature-copy h3 { margin:0; color:#4d3025; font-family:var(--font-display); font-size:1.13rem; }.project-feature-copy p { display:-webkit-box; overflow:hidden; margin:6px 0 9px; color:#7a665c; font-size:.7rem; line-height:1.5; -webkit-box-orient:vertical; -webkit-line-clamp:2; }.project-feature-copy .project-tags { margin-top:0; }.project-feature-copy .project-tags span { padding:3px 8px; font-size:.58rem; }.project-feature-arrow { position:absolute; right:14px; bottom:12px; color:var(--project-accent); font-size:1.15rem; }
.home-recent-overview { padding-top:17px; }.home-recent-card { position:relative; display:grid; grid-template-columns:minmax(0,1fr) 170px; gap:19px; min-height:190px; padding:22px 24px; overflow:hidden; border:1px solid rgba(124,97,77,.13); border-radius:17px; background:rgba(255,253,249,.9); box-shadow:0 9px 22px rgba(99,70,50,.065); }.home-recent-list { display:grid; gap:0; }.home-recent-item { display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:13px; align-items:center; min-height:58px; padding:8px 0; border-bottom:1px solid rgba(124,97,77,.1); }.home-recent-item:last-child { border-bottom:0; }.home-recent-item .status-icon { width:44px; height:44px; }.home-recent-copy { min-width:0; }.home-recent-copy strong { display:block; overflow:hidden; color:#554036; font-family:var(--font-display); font-size:.84rem; text-overflow:ellipsis; white-space:nowrap; }.home-recent-copy p { overflow:hidden; margin:4px 0 0; color:#8b776b; font-size:.68rem; text-overflow:ellipsis; white-space:nowrap; }.home-recent-item time { color:#aa9487; font-size:.66rem; white-space:nowrap; }.home-recent-note { display:flex; flex-direction:column; align-items:center; justify-content:center; border-left:1px solid rgba(124,97,77,.1); color:rgba(122,81,62,.78); text-align:center; }.home-recent-note p { margin:5px 0 9px; font-family:"Segoe Print","KaiTi",cursive; font-size:.73rem; line-height:1.7; transform:rotate(-4deg); }.home-recent-note small { color:#b09586; font-family:"Segoe Print","KaiTi",cursive; font-size:.62rem; }.home-note-sprig { color:#80976d; font-size:2rem; transform:rotate(-25deg); }
.home-fragments-overview { padding-top:17px; padding-bottom:25px; }.home-fragment-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }.home-fragment-card { min-height:155px; padding:18px 20px; }.home-fragment-card.has-photo { padding-right:110px; }.home-fragment-card .fragment-content { font-size:.75rem; line-height:1.7; }.home-fragment-card .fragment-side-illustration { width:78px; height:94px; right:10px; bottom:8px; }
.fragment-card::before { left:var(--tape-left,50%); right:auto; width:var(--tape-width,46px); height:13px; background:var(--tape-color,rgba(230,193,144,.56)); transform:translateX(-50%) rotate(var(--tape-rotate,0deg)); }
.fragment-card.fragment-page-card::before { left:var(--tape-left,50%); right:auto; width:var(--tape-width,46px); height:13px; background:var(--tape-color,rgba(230,193,144,.56)); transform:translateX(-50%) rotate(var(--tape-rotate,0deg)); }
.fragment-card.tape-1 { --tape-left:22%; --tape-width:43px; --tape-rotate:-5deg; --tape-color:rgba(230,193,144,.53); }.fragment-card.tape-2 { --tape-left:44%; --tape-width:51px; --tape-rotate:2deg; --tape-color:rgba(219,146,106,.42); }.fragment-card.tape-3 { --tape-left:67%; --tape-width:47px; --tape-rotate:6deg; --tape-color:rgba(236,204,157,.56); }.fragment-card.tape-4 { --tape-left:31%; --tape-width:54px; --tape-rotate:-3deg; --tape-color:rgba(218,173,132,.42); }.fragment-card.tape-5 { --tape-left:79%; --tape-width:42px; --tape-rotate:4deg; --tape-color:rgba(230,193,144,.48); }.fragment-card.tape-6 { --tape-left:56%; --tape-width:49px; --tape-rotate:-6deg; --tape-color:rgba(219,146,106,.38); }
@media(max-width:920px){.project-feature-grid,.home-fragment-grid{grid-template-columns:1fr 1fr}.project-feature-card:last-child,.home-fragment-card:last-child{grid-column:auto}.home-recent-card{grid-template-columns:1fr 150px}}
@media(max-width:680px){.home-overview{padding-top:12px}.project-feature-grid,.home-fragment-grid{grid-template-columns:1fr}.project-feature-card{grid-template-columns:90px minmax(0,1fr);min-height:122px}.project-feature-art{height:90px}.home-recent-card{grid-template-columns:1fr;gap:10px;padding:18px 17px}.home-recent-note{min-height:88px;border-top:1px solid rgba(124,97,77,.1);border-left:0}.home-recent-item{grid-template-columns:42px minmax(0,1fr);}.home-recent-item time{grid-column:2;grid-row:2;margin-top:-8px}.home-recent-copy p{white-space:normal}.home-fragment-card{min-height:165px}}

.recent-intro { position:relative; overflow:hidden; }
.recent-intro-left,.recent-intro-right { position:absolute; color:rgba(151,112,91,.55); font-family:"Segoe Print","KaiTi",cursive; font-size:.66rem; line-height:1.6; text-align:left; }.recent-intro-left { left:7%; bottom:31px; transform:rotate(-7deg); }.recent-intro-right { right:7%; bottom:24px; text-align:right; transform:rotate(4deg); }
.recent-layout { display:grid; grid-template-columns:minmax(0,7fr) minmax(235px,3fr); gap:22px; align-items:start; }.recent-main-column .recent-page-card { min-height:0; padding:25px 28px; }.recent-main-column .recent-title { margin-bottom:15px; }.recent-main-column .recent-list { display:grid; grid-template-columns:1fr; gap:11px; }.recent-status-row { display:grid; grid-template-columns:48px minmax(0,1fr) auto 20px; gap:14px; align-items:center; min-height:76px; padding:13px 15px; border:1px solid rgba(124,97,77,.11); border-radius:14px; background:#fffdfa; box-shadow:0 6px 15px rgba(99,70,50,.05); }.recent-status-row .status-icon { width:48px; height:48px; }.recent-status-row .status-copy strong { font-size:.88rem; }.recent-status-row .status-copy span { white-space:normal; }.recent-status-row time { color:#a38c80; font-size:.68rem; white-space:nowrap; }.recent-row-arrow { color:#b3734b; font-size:1rem; }
.weekly-note-card { position:relative; min-height:330px; padding:24px 23px 22px; overflow:hidden; border:1px solid rgba(124,97,77,.12); border-radius:17px; background:#f8f0e3; box-shadow:0 9px 22px rgba(99,70,50,.07); transform:rotate(1.2deg); }.weekly-note-tape { position:absolute; top:-4px; left:50%; width:58px; height:16px; background:rgba(225,181,137,.48); transform:translateX(-50%) rotate(-4deg); }.weekly-note-card h2 { margin:0 0 13px; color:#55372a; font-family:var(--font-display); font-size:1.34rem; }.weekly-note-card img { display:block; width:100%; height:105px; margin:2px 0 15px; object-fit:contain; }.weekly-note-card [data-weekly-note] { margin:0; color:#765f53; font-family:var(--font-display); font-size:.76rem; line-height:1.85; white-space:pre-line; }.weekly-note-card time { display:block; margin-top:15px; color:#a48776; font-size:.66rem; }.weekly-note-leaf { position:absolute; right:18px; bottom:10px; color:#84986f; font-size:2rem; transform:rotate(-25deg); }
.recent-subsection { padding-top:28px; }.plans-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }.plan-card { display:grid; grid-template-columns:42px minmax(0,1fr); gap:12px; align-items:center; min-height:112px; padding:16px 17px; border:1px solid rgba(124,97,77,.11); border-radius:15px; background:rgba(255,253,249,.86); box-shadow:0 7px 17px rgba(99,70,50,.05); }.plan-card .status-icon { width:42px; height:42px; }.plan-copy h3 { margin:0; color:#54392e; font-family:var(--font-display); font-size:.88rem; }.plan-copy p { margin:5px 0 0; color:#877267; font-size:.68rem; line-height:1.55; }.plan-status { grid-column:2; justify-self:start; margin-top:-4px; padding:4px 9px; border-radius:999px; color:#70805f; background:#edf1e5; font-size:.6rem; }.recent-snippets-section { padding-bottom:27px; }.recent-snippets-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }.recent-snippet-card { margin:0; padding:11px 11px 14px; border:1px solid #eadfce; background:#fffdf8; box-shadow:0 7px 17px rgba(81,58,43,.08); transform:rotate(-1deg); }.recent-snippet-card:nth-child(2){transform:rotate(1.8deg)}.recent-snippet-card:nth-child(3){transform:rotate(-2.4deg)}.recent-snippet-card img { display:block; width:100%; height:125px; object-fit:contain; background:#f7f0e4; }.recent-snippet-card figcaption { display:grid; gap:4px; padding:10px 3px 0; }.recent-snippet-card strong { color:#594033; font-family:var(--font-display); font-size:.82rem; }.recent-snippet-card span { color:#947d70; font-size:.66rem; line-height:1.5; }
@media(max-width:920px){.recent-layout{grid-template-columns:1fr}.weekly-note-card{transform:none}.plans-grid,.recent-snippets-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recent-intro-left{left:3%}.recent-intro-right{right:3%}}
@media(max-width:680px){.recent-intro-left,.recent-intro-right{display:none}.recent-main-column .recent-page-card{padding:19px 16px}.recent-status-row{grid-template-columns:42px minmax(0,1fr) 18px;gap:10px;padding:11px 8px}.recent-status-row .status-icon{width:42px;height:42px}.recent-status-row time{grid-column:2;grid-row:2;margin-top:-5px}.recent-row-arrow{grid-column:3;grid-row:1 / span 2}.plans-grid,.recent-snippets-grid{grid-template-columns:1fr}.weekly-note-card{min-height:285px}.recent-snippet-card img{height:150px}}

/* 内容卡片保持便签尺度，并用轻微错位与浮动制造自然呼吸感。 */
.fragment-page-grid { grid-template-columns: repeat(auto-fit, minmax(320px, 400px)); justify-content: center; }
.fragment-page-card { transform: rotate(var(--card-tilt, 0deg)); animation: fragment-float var(--float-duration, 6s) ease-in-out infinite alternate; }
.fragment-page-card:hover { transform: rotate(0deg) translateY(-3px); box-shadow: 0 13px 28px rgba(99,70,50,.12); }
@keyframes fragment-float { from { translate: 0 0; } to { translate: 0 -2px; } }
@media (prefers-reduced-motion: reduce) { .fragment-page-card, .recent-snippet-card, .reveal { animation: none !important; transition: none !important; transform: none !important; } }
.recent-status-row { grid-template-columns:48px minmax(0,1fr) auto 20px 66px; }
.recent-row-image { grid-column:5; grid-row:1 / span 2; width:58px; height:58px; justify-self:end; object-fit:contain; opacity:.88; filter:drop-shadow(0 4px 5px rgba(91,65,45,.06)); }
@media(max-width:680px){.recent-status-row{grid-template-columns:42px minmax(0,1fr) 18px}.recent-row-image{grid-column:3;grid-row:1 / span 2;width:38px;height:38px;opacity:.75;transform:translateY(-24px)}}
