/* APPFan 作者站样式
 *
 * 来源：作者专题站方案静态原型（portal 仓库 appfan/static/author-feature/作者专题站方案）
 *   · 上半部分为原型 index.html 内联基础样式（六主题变量 + 骨架）
 *   · 下半部分为 assets/layout-themes.css（三套整体版式 + 上游复用片段）
 * 只做一件事：把原型样式原样搬到前台，避免"设计稿和实现是两套东西"。
 * 主题通过 <html data-theme="paper|coral|ink"> + data-layout="classic|profile|editorial|reading" 生效。
 */

:root{--bg:#f8f6f0;--surface:#fffdf8;--ink:#282b29;--muted:#686d65;--line:#d9d9ce;--accent:#52644a;--soft:#edf0e6;--radius:4px;--heading:Georgia,'Songti SC','STSong',serif;--space:3.5rem;--card:transparent}
html[data-theme=coral]{--bg:#fffaf8;--surface:#fff;--ink:#342b2a;--muted:#786a67;--line:#eaded9;--accent:#c74335;--soft:#fbe9e3;--radius:16px;--heading:'PingFang SC','Microsoft YaHei',sans-serif;--space:3rem;--card:#fff}
html[data-theme=ink]{--bg:#1b2024;--surface:#242b2f;--ink:#edf1eb;--muted:#b1bbb6;--line:#414b4c;--accent:#c1d8ac;--soft:#303c34;--radius:8px;--heading:'PingFang SC','Microsoft YaHei',sans-serif;--space:3.8rem;--card:#242b2f}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:1rem/1.7 -apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a,input,textarea{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--accent)}button{cursor:pointer}button,a{transition:color .18s,background .18s,border-color .18s}button{background:var(--surface);color:var(--ink);border:1px solid var(--line);padding:.6rem 1rem;border-radius:var(--radius)}button:hover{border-color:var(--accent);color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}.quiet{border:0;background:transparent;padding:.4rem 0;color:var(--muted)}.demo{background:#eee9df;color:#605c52;font-size:.75rem;text-align:center;padding:.35rem 1rem}.siteheader{max-width:1256px;margin:auto;padding:1.35rem 2rem;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:flex;align-items:center;gap:.7rem}.brand img{width:31px;height:35px;object-fit:contain}.brand b{font-size:1.45rem;letter-spacing:-.055em}.brand span{font-size:.85rem;border-left:1px solid var(--line);padding-left:.85rem;white-space:nowrap}.white-logo{display:none}html[data-theme=ink] .red-logo{display:none}html[data-theme=ink] .white-logo{display:block}.headerlinks{display:flex;gap:1.5rem;font-size:.85rem}.headerlinks a{color:var(--muted)}.headerlinks a:hover{color:var(--accent)}.tools{max-width:1192px;margin:1rem auto 0;padding:0 2rem;display:flex;gap:.7rem;align-items:center;flex-wrap:wrap;font-size:.75rem;color:var(--muted)}.swatches{display:flex;gap:.45rem}.swatches button{padding:.35rem .7rem;font-size:.75rem}.swatches button.active{border-color:var(--accent);background:var(--soft);color:var(--accent)}.review-status{margin-left:auto}.layout{max-width:1192px;margin:auto;padding:3rem 2rem 0;display:grid;grid-template-columns:250px minmax(0,1fr);gap:5rem}.profile{align-self:start;position:sticky;top:2rem}.avatar{width:110px;height:110px;display:block;margin-bottom:1.5rem;border-radius:50%;background:var(--soft);border:6px solid var(--surface)}.overline{color:var(--accent);font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;font-weight:600}.profile h1{font:2.4rem/1.2 var(--heading);letter-spacing:-.045em;margin:.6rem 0}.handle{color:var(--muted);font-size:.8rem}.bio{font-size:.95rem;margin:1.4rem 0;color:var(--muted);line-height:1.9}.profile .location{font-size:.75rem;color:var(--muted);margin:1rem 0}.profile .author-site{display:inline-block;margin-top:.7rem;font-size:.8rem;color:var(--accent)}.profile small{display:block;color:var(--muted);font-size:.7rem;margin-top:2rem}.nav{display:flex;gap:1.8rem;border-bottom:1px solid var(--line);margin-bottom:2.3rem;overflow:auto;white-space:nowrap}.nav button{border:0;background:transparent;border-radius:0;padding:0 0 .9rem;font-size:.9rem;color:var(--muted)}.nav button.active{border-bottom:2px solid var(--accent);color:var(--ink)}.intro{padding:0 0 2.7rem}.intro h2{font:2.25rem/1.4 var(--heading);letter-spacing:-.045em;max-width:580px;margin:0 0 1rem}.intro p{max-width:520px;margin:0;color:var(--muted);font-size:.9rem}.intro .littleline{width:40px;height:3px;background:var(--accent);margin:1.5rem 0 0}.section{margin-bottom:var(--space)}.section-head{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;margin-bottom:1.2rem}.section-head h2{font:1.45rem/1.4 var(--heading);margin:0;letter-spacing:-.025em}.section-head small{font:.75rem/1.6 -apple-system,BlinkMacSystemFont,sans-serif;margin-left:.55rem;color:var(--muted)}.section-head button{font-size:.75rem}.apps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.app{display:flex;gap:1rem;padding:1.3rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);align-items:center}.app:hover{border-color:var(--accent)}.app-icon{width:48px;height:48px;flex-shrink:0;display:grid;place-items:center;border-radius:12px;font-size:1.45rem;font-weight:600;color:#f9faf8;background:#597a84;box-shadow:inset 0 0 0 1px #ffffff25}.app:nth-child(2) .app-icon{background:#e18155}.app:nth-child(3) .app-icon{background:#8474a1}.app:nth-child(4) .app-icon{background:#538b77}.app-copy{flex:1;min-width:0}.app-copy h3{margin:0;font-size:.95rem;font-weight:600}.app-copy p{margin:.2rem 0 .5rem;font-size:.75rem;color:var(--muted);line-height:1.6}.like{font-size:.72rem;line-height:1.3;padding:0;background:transparent;border:0;color:var(--muted)}.like[aria-pressed=true]{color:var(--accent)}.collections{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.collection{border:1px solid var(--line);border-radius:var(--radius);padding:1.3rem;background:var(--surface);text-align:left;display:block;position:relative}.collection .type{font-size:.65rem;letter-spacing:.12em;color:var(--accent)}.collection h3{font:1.25rem/1.5 var(--heading);margin:.7rem 0 .5rem}.collection p{color:var(--muted);font-size:.75rem;margin:0}.collection .arrow{position:absolute;right:1rem;top:1rem;color:var(--muted)}.posts{border-top:1px solid var(--line)}.post{display:flex;justify-content:space-between;gap:1.5rem;padding:1.3rem 0;border-bottom:1px solid var(--line);cursor:pointer}.post:hover h3{color:var(--accent)}.post h3{font-size:.95rem;line-height:1.6;margin:0 0 .4rem;font-weight:500}.post p{font-size:.75rem;color:var(--muted);margin:0;max-width:470px}.post time{white-space:nowrap;color:var(--muted);font-size:.7rem;padding-top:.3rem}.board{padding:1.5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.board>p{margin:0 0 1rem;color:var(--muted);font-size:.8rem}.message{padding:1rem 0;border-top:1px solid var(--line);font-size:.82rem}.message strong{font-weight:600}.message .date{font-size:.65rem;color:var(--muted);margin-left:.7rem}.message p{margin:.45rem 0}.reply{margin-left:1rem;padding-left:1rem;border-left:2px solid var(--line);color:var(--muted);font-size:.77rem}.board textarea{display:block;width:100%;margin:1rem 0 .7rem;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem;resize:vertical;min-height:96px}.board .messagebar{display:flex;justify-content:space-between;gap:1rem;align-items:center;font-size:.7rem;color:var(--muted)}footer{max-width:1192px;margin:3rem auto 0;padding:1.5rem 2rem 2.5rem;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem;color:var(--muted);font-size:.7rem}.hidden{display:none!important}.view-title{font:2rem/1.4 var(--heading);margin:0 0 .8rem}.lead{color:var(--muted);font-size:.9rem;margin:0 0 2rem}.article{max-width:640px}.article h2{font:2rem/1.4 var(--heading);margin-top:1rem}.article p{font-size:1rem;line-height:2}.article .meta{font-size:.75rem;color:var(--muted)}.back{margin-bottom:1rem}.callout{border-left:3px solid var(--accent);padding:1rem 1.4rem;background:var(--soft);margin:2rem 0;font-size:.9rem}.workspace{padding:1.5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.workspace h3{margin:0 0 .6rem;font:1.3rem/1.5 var(--heading)}.workspace p{font-size:.85rem;color:var(--muted)}.theme-options{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin:1.5rem 0}.theme-option{padding:1rem;text-align:left;min-height:150px}.theme-option b{display:block;margin:.7rem 0 .2rem;font-size:.9rem}.theme-option span{display:block;font-size:.7rem;line-height:1.6}.mini{height:38px;border:1px solid #c8c9c0;position:relative;overflow:hidden}.mini:after{content:'';position:absolute;left:10px;top:10px;right:10px;height:4px;background:currentColor;box-shadow:0 9px currentColor;opacity:.5}.theme-option[data-pick=paper]{background:#f8f6f0;color:#52644a}.theme-option[data-pick=coral]{background:#fff4ef;color:#bd493b}.theme-option[data-pick=ink]{background:#252d30;color:#c1d8ac}.theme-option.active{outline:2px solid var(--accent);outline-offset:2px}.actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.5rem}.statusline{color:var(--accent)!important}.application label{display:block;font-size:.85rem;margin:1rem 0}.application input,.application textarea{display:block;width:100%;border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:.75rem;border-radius:var(--radius);margin-top:.4rem}.application small{color:var(--muted);font-size:.7rem}.application textarea{min-height:95px}.step{display:flex;gap:.8rem;align-items:center;font-size:.75rem;margin:1.5rem 0;flex-wrap:wrap}.step span{padding:.3rem .6rem;background:var(--soft);border-radius:var(--radius)}.modal{max-width:440px;width:calc(100% - 2rem);background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);padding:1.7rem}.modal::backdrop{background:#10171977}.modal h3{font:1.35rem/1.4 var(--heading);margin:0 0 .8rem}.modal p{font-size:.85rem;color:var(--muted)}.toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%);max-width:calc(100% - 2rem);background:var(--ink);color:var(--bg);padding:.8rem 1.3rem;border-radius:var(--radius);font-size:.8rem;z-index:100;box-shadow:0 4px 20px #0002}.detail-app .app-icon{width:70px;height:70px;font-size:2rem;margin:1.5rem 0}.detail-app h2{margin-bottom:.5rem}.detail-app .primary{display:inline-block}.detail-app .board{margin-top:3rem}html[data-theme=coral] .intro h2{font-weight:650}html[data-theme=ink] .intro h2{font-weight:500;letter-spacing:-.035em}html[data-theme=paper] .app{border-width:0 0 1px;border-radius:0;padding-left:0;padding-right:0}html[data-theme=paper] .collection{background:transparent}html[data-theme=ink] .overline{letter-spacing:.2em}html[data-theme=coral] .avatar{box-shadow:0 0 0 1px var(--line)}
@media(min-width:1450px){.layout{gap:6rem}}@media(max-width:900px){.layout{grid-template-columns:205px minmax(0,1fr);gap:2.5rem}.apps{grid-template-columns:1fr}.siteheader{padding-left:1.5rem;padding-right:1.5rem}.theme-options{grid-template-columns:1fr}.theme-option{min-height:auto}.mini{height:24px}.intro h2{font-size:1.9rem}}@media(max-width:640px){.siteheader{padding:1rem 1.1rem;align-items:flex-start;flex-wrap:wrap}.headerlinks{gap:1rem;font-size:.75rem;width:100%;justify-content:flex-end}.brand b{font-size:1.25rem}.brand img{width:27px;height:30px}.brand span{font-size:.75rem}.tools{padding:0 1.1rem}.review-status{width:100%;margin-left:0}.layout{display:block;padding:2rem 1.1rem 0}.profile{position:static;margin-bottom:2rem;padding-bottom:1.7rem;border-bottom:1px solid var(--line)}.avatar{width:80px;height:80px;float:left;margin:0 1.1rem .6rem 0;border-width:4px}.profile h1{font-size:1.8rem;margin:.3rem 0}.profile .overline{font-size:.6rem}.bio{clear:both;padding-top:.6rem;margin:.5rem 0;font-size:.87rem}.profile .location{display:inline-block;margin:0 .8rem 0 0}.profile small{margin-top:.8rem}.nav{gap:1.55rem;margin-bottom:1.8rem}.nav button{font-size:.85rem}.intro h2{font-size:1.8rem}.intro{padding-bottom:2rem}.section{margin-bottom:2.8rem}.collections{grid-template-columns:1fr}.post time{font-size:.65rem}.post{gap:.7rem}.post p{font-size:.73rem}.board{padding:1rem}.board .messagebar{align-items:flex-start}.section-head h2{font-size:1.3rem}.section-head small{font-size:.7rem}.theme-options{grid-template-columns:1fr}.theme-option{display:grid;grid-template-columns:70px 1fr;gap:0 .8rem;align-items:center}.theme-option .mini{grid-row:1/3;height:43px}.theme-option b{margin:0}.theme-option span{font-size:.7rem}footer{padding:1.2rem 1.1rem;display:block}footer span{display:block;margin:.4rem 0}.article h2{font-size:1.65rem}}
.board .messagebar button{white-space:nowrap;flex-shrink:0}.article p{font-weight:400;font-synthesis:none}.article h2{font-weight:500}@media(max-width:420px){.board .messagebar{flex-direction:column;gap:.7rem}.board .messagebar button{align-self:flex-end}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}


/* APPFan author-site proposal: whole-page layout presets.
 * Revision 1.0 / 2026-11-03. This file adapts the same content model and DOM.
 * Upstream reusable rules are identified below after the locked source import.
 * Brand lockup, content order and role visibility remain outside theme control.
 */

/* 1. Profile / centred portfolio. */
html[data-layout="profile"]{--heading:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;--radius:14px;--space:3.8rem;--card:var(--surface)}
html[data-layout="profile"] .layout{display:block;max-width:1080px;padding-top:2.8rem}
html[data-layout="profile"] .profile{position:static;max-width:620px;margin:0 auto 2.4rem;text-align:center;padding-bottom:2rem}
html[data-layout="profile"] .avatar{float:none;margin:0 auto 1.1rem;width:112px;height:112px;border-width:5px}
html[data-layout="profile"] .profile h1{font:600 2.75rem/1.25 var(--heading);margin:.6rem 0 .4rem;letter-spacing:-.045em}
html[data-layout="profile"] .profile .bio{max-width:490px;margin:1.1rem auto .7rem;font-size:.95rem;line-height:1.9}
html[data-layout="profile"] .profile .location{display:inline-block;margin:.2rem 1rem .2rem 0}
html[data-layout="profile"] .profile .author-site{display:inline-block;margin:0}
html[data-layout="profile"] .profile small{margin-top:.85rem;font-size:.68rem}
html[data-layout="profile"] main{width:100%;max-width:920px;margin:auto}
html[data-layout="profile"] .nav{justify-content:center;gap:2.4rem;margin-bottom:2rem}
html[data-layout="profile"] .intro{text-align:center;max-width:720px;margin:auto;padding:0 0 3rem}
html[data-layout="profile"] .intro h2{font:500 1.65rem/1.65 var(--heading);max-width:none;margin:0 auto .7rem;letter-spacing:-.025em}
html[data-layout="profile"] .intro p{max-width:none;font-size:.85rem}
html[data-layout="profile"] .littleline{margin:1.2rem auto 0;width:28px;height:2px}
html[data-layout="profile"] .apps{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
html[data-layout="profile"] .app{display:block;text-align:center;padding:1.8rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
html[data-layout="profile"] .app-icon{margin:0 auto 1rem;width:58px;height:58px;border-radius:15px}
html[data-layout="profile"] .app-copy h3{font-size:1.12rem}
html[data-layout="profile"] .app-copy p{font-size:.85rem;margin:.45rem 0 .7rem}
html[data-layout="profile"] .like{font-size:.75rem}
html[data-layout="profile"] .section-head h2{font-family:var(--heading);font-size:1.3rem;font-weight:600}
html[data-layout="profile"] .collection{background:var(--surface);border-radius:var(--radius);padding:1.6rem}
html[data-layout="profile"] .collection h3{font:500 1.2rem/1.6 var(--heading)}
html[data-layout="profile"] .article{max-width:680px;margin:auto}
html[data-layout="profile"] .detail-app>.app-icon{margin-left:0}

/* 2. Editorial / broad author masthead, three-column work shelf. */
html[data-layout="editorial"]{--heading:Georgia,'Songti SC','STSong',serif;--radius:0px;--space:4rem;--line:#d4ccc4;--bg:#fcfaf6;--surface:#fffefb;--accent:#b54132;--soft:#f4e9df;--card:transparent}
html[data-layout="editorial"] .siteheader{max-width:1320px}
html[data-layout="editorial"] .layout{display:block;max-width:1264px;padding-top:2.4rem}
html[data-layout="editorial"] .profile{position:static;display:grid;grid-template-columns:100px minmax(200px,1fr) minmax(250px,1fr);column-gap:1.8rem;align-items:start;border-bottom:0;margin-bottom:2.2rem;padding-bottom:0;text-align:left}
html[data-layout="editorial"] .avatar{grid-column:1;grid-row:1/6;float:none;width:100px;height:100px;margin:0;border-width:4px}
html[data-layout="editorial"] .profile .overline{grid-column:2;grid-row:1;font-size:.65rem;letter-spacing:.12em}
html[data-layout="editorial"] .profile h1{grid-column:2;grid-row:2;font:500 2.35rem/1.2 var(--heading);margin:.35rem 0 .4rem}
html[data-layout="editorial"] .profile .handle{grid-column:2;grid-row:3;font-size:.75rem}
html[data-layout="editorial"] .profile .bio{grid-column:3;grid-row:1/5;margin:0;font-size:.88rem;line-height:1.9;max-width:400px;clear:none;padding-top:0}
html[data-layout="editorial"] .profile .location{grid-column:2;grid-row:4;margin:.5rem 0 0;font-size:.7rem}
html[data-layout="editorial"] .profile .author-site{grid-column:2;grid-row:5;font-size:.75rem;margin-top:.4rem}
html[data-layout="editorial"] .profile small{grid-column:3;grid-row:5;margin:.5rem 0 0;font-size:.65rem}
html[data-layout="editorial"] main{width:100%;margin:auto}
html[data-layout="editorial"] .nav{border-top:2px solid var(--ink);padding-top:.9rem;gap:2.4rem;margin-bottom:2.5rem}
html[data-layout="editorial"] .intro{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(250px,1fr);gap:1.2rem 3rem;align-items:end;margin-bottom:3rem;padding-bottom:2.2rem;border-bottom:1px solid var(--line)}
html[data-layout="editorial"] .intro h2{font:500 clamp(2rem,3.8vw,3.4rem)/1.3 var(--heading);letter-spacing:-.05em;max-width:none;margin:0}
html[data-layout="editorial"] .intro p{font-size:.9rem;line-height:1.9;max-width:340px;padding-bottom:.3rem}
html[data-layout="editorial"] .littleline{display:none}
html[data-layout="editorial"] .section-head{border-bottom:1px solid var(--line);padding-bottom:.85rem;margin-bottom:1.5rem}
html[data-layout="editorial"] .section-head h2{font:500 1.55rem/1.3 var(--heading)}
html[data-layout="editorial"] .apps{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem}
html[data-layout="editorial"] .app{display:block;padding:1.5rem 1.4rem;border:1px solid var(--line);background:var(--surface);border-radius:0;min-height:195px}
html[data-layout="editorial"] .app-icon{width:50px;height:50px;margin:0 0 1rem;border-radius:10px}
html[data-layout="editorial"] .app-copy h3{font-size:1.05rem;line-height:1.4}
html[data-layout="editorial"] .app-copy p{font-size:.8rem;min-height:2.6em;margin:.5rem 0 .75rem}
html[data-layout="editorial"] .collections{gap:1.5rem}
html[data-layout="editorial"] .collection{padding:1.5rem 0;border:0;border-top:2px solid var(--accent);background:transparent;border-radius:0}
html[data-layout="editorial"] .collection h3{font-size:1.5rem;margin:.8rem 0 .6rem}
html[data-layout="editorial"] .collection p{font-size:.8rem}
html[data-layout="editorial"] .posts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;border-top:0}
html[data-layout="editorial"] .post{display:flex;flex-direction:column;gap:1rem;justify-content:space-between;padding:0 1.5rem 1.3rem 0;border-bottom:0;border-right:1px solid var(--line);min-height:170px}
html[data-layout="editorial"] .post:last-child{border-right:0;padding-right:0}
html[data-layout="editorial"] .post h3{font:500 1.3rem/1.55 var(--heading);margin:0 0 .7rem}
html[data-layout="editorial"] .post p{font-size:.8rem;line-height:1.8}
html[data-layout="editorial"] .post time{font-size:.7rem;letter-spacing:.08em;padding-top:0}
html[data-layout="editorial"] .article{max-width:720px;margin:0 auto}
html[data-layout="editorial"] .article h2{font:500 clamp(1.85rem,3vw,2.6rem)/1.5 var(--heading)}
html[data-layout="editorial"] .article p{font-size:1.05rem;line-height:2}
html[data-layout="editorial"] .board{padding:1.7rem;border-radius:0}

/* 3. Reading / narrow, linear writing desk. */
html[data-layout="reading"]{--heading:Georgia,'Songti SC','STSong',serif;--radius:0px;--space:3.4rem;--bg:#fafaf8;--surface:#fafaf8;--ink:#292e30;--muted:#686f70;--line:#d8dcdb;--accent:#356c70;--soft:#eef3f2;--card:transparent}
html[data-layout="reading"] .layout{display:block;max-width:820px;padding-top:2.3rem}
html[data-layout="reading"] .profile{position:static;display:grid;grid-template-columns:65px minmax(0,1fr);column-gap:1.2rem;padding-bottom:1.8rem;margin-bottom:1.7rem;border-bottom:1px solid var(--line);text-align:left}
html[data-layout="reading"] .avatar{grid-column:1;grid-row:1/4;float:none;width:65px;height:65px;margin:.2rem 0 0;border-width:3px}
html[data-layout="reading"] .profile .overline{grid-column:2;grid-row:1;font-size:.6rem;letter-spacing:.12em}
html[data-layout="reading"] .profile h1{grid-column:2;grid-row:2;font:500 1.75rem/1.3 var(--heading);margin:.3rem 0 .2rem}
html[data-layout="reading"] .profile .handle{grid-column:2;grid-row:3;font-size:.73rem}
html[data-layout="reading"] .profile .bio{grid-column:1/-1;grid-row:4;max-width:620px;padding:0;margin:1rem 0 .7rem;font-size:.85rem;line-height:1.85}
html[data-layout="reading"] .profile .location{grid-column:1/-1;grid-row:5;font-size:.7rem;margin:0}
html[data-layout="reading"] .profile .author-site{grid-column:1/-1;grid-row:6;margin-top:.5rem;font-size:.75rem}
html[data-layout="reading"] .profile small{grid-column:1/-1;grid-row:7;margin-top:.6rem;font-size:.65rem}
html[data-layout="reading"] main{width:100%;max-width:720px;margin:auto}
html[data-layout="reading"] .nav{gap:2rem;margin-bottom:2.2rem}
html[data-layout="reading"] .nav button{font-size:.82rem;padding-bottom:.8rem}
html[data-layout="reading"] .intro{padding-bottom:2.3rem}
html[data-layout="reading"] .intro h2{font:500 1.8rem/1.55 var(--heading);letter-spacing:-.035em;margin-bottom:.9rem}
html[data-layout="reading"] .intro p{font-size:.85rem;line-height:1.9}
html[data-layout="reading"] .littleline{display:none}
html[data-layout="reading"] .section-head h2{font:500 1.3rem/1.4 var(--heading)}
html[data-layout="reading"] .apps{display:block;border-top:1px solid var(--line)}
html[data-layout="reading"] .app{display:flex;align-items:center;gap:1rem;padding:1.15rem 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}
html[data-layout="reading"] .app-icon{width:42px;height:42px;margin:0;border-radius:10px;font-size:1.2rem}
html[data-layout="reading"] .app-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.2rem .8rem;align-items:start}
html[data-layout="reading"] .app-copy h3{grid-column:1;grid-row:1;font-size:.98rem}
html[data-layout="reading"] .app-copy p{grid-column:1;grid-row:2;margin:0;font-size:.8rem;line-height:1.7}
html[data-layout="reading"] .app-copy .like{grid-column:2;grid-row:1/3;align-self:center;font-size:.72rem;white-space:nowrap}
html[data-layout="reading"] .app-copy>.handle{grid-column:1;grid-row:3;font-size:.7rem}
html[data-layout="reading"] .app-copy>br{display:none}
html[data-layout="reading"] .collections{display:block;border-top:1px solid var(--line)}
html[data-layout="reading"] .collection{width:100%;padding:1.2rem 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}
html[data-layout="reading"] .collection h3{font:500 1.2rem/1.6 var(--heading);margin:.4rem 0 .3rem}
html[data-layout="reading"] .collection .type{font-size:.62rem;letter-spacing:.1em}
html[data-layout="reading"] .collection .arrow{top:1.2rem;right:.25rem}
html[data-layout="reading"] .posts{border-top:1px solid var(--line)}
html[data-layout="reading"] .post{gap:1rem;padding:1.3rem 0}
html[data-layout="reading"] .post h3{font:500 1.1rem/1.6 var(--heading);margin:0 0 .45rem}
html[data-layout="reading"] .post p{font-size:.8rem;line-height:1.9}
html[data-layout="reading"] .article{max-width:680px;margin:auto}
html[data-layout="reading"] .article h2{font:500 2rem/1.55 var(--heading)}
html[data-layout="reading"] .article p{font-size:1rem;line-height:2.05}
html[data-layout="reading"] .board{padding:1.3rem;background:transparent;border-radius:0}

/* Author settings stay usable in all presets; layout choice is not an editor. */
html[data-layout] body[data-view="workspace"] .layout,
html[data-layout] body[data-view="apply"] .layout{max-width:1140px;display:block}
html[data-layout] body[data-view="workspace"] .profile,
html[data-layout] body[data-view="apply"] .profile{display:none}
html[data-layout] body[data-view="workspace"] main,
html[data-layout] body[data-view="apply"] main{width:100%;max-width:1040px;margin:0 auto}
html[data-layout] body[data-view="workspace"] .nav,
html[data-layout] body[data-view="apply"] .nav{justify-content:flex-start}
html[data-layout] body[data-view="workspace"] .theme-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
html[data-layout] body[data-view="workspace"] .theme-option{min-width:0;min-height:165px;display:block;border-radius:10px}
html[data-layout] body[data-view="workspace"] .theme-option .mini{height:58px;background:var(--surface);border-radius:3px;position:relative}
html[data-layout] body[data-view="workspace"] .theme-option b{display:block;margin:.8rem 0 .25rem;font-size:.95rem}
html[data-layout] body[data-view="workspace"] .theme-option span{display:block;font-size:.75rem;line-height:1.6}
.theme-option[data-pick="profile"]{background:#f4f6f1;color:#425445}
.theme-option[data-pick="editorial"]{background:#fbf1e9;color:#a54031}
.theme-option[data-pick="reading"]{background:#f4f8f7;color:#356c70}
.theme-option[data-pick="profile"] .mini:before{content:'';position:absolute;width:14px;height:14px;background:currentColor;opacity:.5;left:calc(50% - 7px);top:6px;border-radius:50%}
.theme-option[data-pick="profile"] .mini:after{left:22%;right:22%;top:29px;height:4px;box-shadow:-15px 12px currentColor,15px 12px currentColor}
.theme-option[data-pick="editorial"] .mini:before{content:'';position:absolute;left:7px;right:7px;top:7px;height:10px;background:currentColor;opacity:.4}
.theme-option[data-pick="editorial"] .mini:after{left:7px;right:65%;top:25px;height:22px;box-shadow:30px 0 currentColor,60px 0 currentColor}
.theme-option[data-pick="reading"] .mini:after{left:25%;right:25%;top:9px;height:3px;box-shadow:0 10px currentColor,0 20px currentColor,0 30px currentColor}

@media(max-width:900px){
 html[data-layout="editorial"] .profile{grid-template-columns:85px minmax(0,1fr);gap:0 1.3rem}
 html[data-layout="editorial"] .avatar{width:85px;height:85px}
 html[data-layout="editorial"] .profile .bio{grid-column:1/-1;grid-row:6;max-width:none;margin:1.2rem 0 .5rem}
 html[data-layout="editorial"] .profile small{grid-column:1/-1;grid-row:7;margin:0}
 html[data-layout="editorial"] .intro{grid-template-columns:minmax(0,1fr);gap:1rem}
 html[data-layout="editorial"] .intro p{max-width:none}
 html[data-layout="editorial"] .apps{grid-template-columns:repeat(2,minmax(0,1fr))}
 html[data-layout="editorial"] .posts{grid-template-columns:1fr;gap:0;border-top:1px solid var(--line)}
 html[data-layout="editorial"] .post{display:flex;flex-direction:row;min-height:0;border-right:0;border-bottom:1px solid var(--line);padding:1.3rem 0}
 html[data-layout="editorial"] .post h3{font-size:1.2rem}
 html[data-layout="editorial"] .post time{white-space:nowrap;padding-top:.3rem}
}
@media(max-width:640px){
 html[data-layout="profile"] .layout,html[data-layout="editorial"] .layout,html[data-layout="reading"] .layout{padding:1.8rem 1.1rem 0}
 html[data-layout="profile"] .profile{margin-bottom:1.5rem;padding-bottom:1.5rem}
 html[data-layout="profile"] .avatar{width:90px;height:90px;margin-bottom:1rem}
 html[data-layout="profile"] .profile h1{font-size:2rem}
 html[data-layout="profile"] .profile .bio{font-size:.85rem}
 html[data-layout="profile"] .nav{justify-content:flex-start;gap:1.7rem}
 html[data-layout="profile"] .intro h2{font-size:1.4rem}
 html[data-layout="profile"] .apps{grid-template-columns:1fr}
 html[data-layout="profile"] .app{padding:1.6rem 1rem}
 html[data-layout="profile"] .collections{grid-template-columns:1fr}
 html[data-layout="editorial"] .profile{grid-template-columns:72px minmax(0,1fr);gap:0 1rem;margin-bottom:1.5rem}
 html[data-layout="editorial"] .avatar{width:72px;height:72px}
 html[data-layout="editorial"] .profile h1{font-size:1.9rem}
 html[data-layout="editorial"] .profile .overline{font-size:.56rem;letter-spacing:.08em}
 html[data-layout="editorial"] .profile .bio{font-size:.84rem;margin:1rem 0 .6rem}
 html[data-layout="editorial"] .nav{gap:1.6rem;margin-bottom:1.9rem}
 html[data-layout="editorial"] .intro{margin-bottom:2.3rem;padding-bottom:1.6rem;gap:.8rem}
 html[data-layout="editorial"] .intro h2{font-size:1.95rem;line-height:1.45}
 html[data-layout="editorial"] .intro p{font-size:.83rem}
 html[data-layout="editorial"] .apps{grid-template-columns:1fr;gap:.8rem}
 html[data-layout="editorial"] .app{display:flex;gap:1rem;min-height:0;padding:1.2rem}
 html[data-layout="editorial"] .app-icon{flex-shrink:0;margin:0}
 html[data-layout="editorial"] .app-copy p{min-height:0;margin:.25rem 0 .5rem}
 html[data-layout="editorial"] .collections{grid-template-columns:1fr}
 html[data-layout="editorial"] .post h3{font-size:1.1rem}
 html[data-layout="editorial"] .article h2{font-size:1.8rem}
 html[data-layout="editorial"] .article p{font-size:1rem}
 html[data-layout="editorial"] .board{padding:1.1rem}
 html[data-layout="reading"] .profile{grid-template-columns:55px minmax(0,1fr);gap:0 1rem;padding-bottom:1.4rem}
 html[data-layout="reading"] .avatar{width:55px;height:55px}
 html[data-layout="reading"] .profile h1{font-size:1.6rem}
 html[data-layout="reading"] .profile .overline{font-size:.56rem}
 html[data-layout="reading"] .intro h2{font-size:1.55rem}
 html[data-layout="reading"] .nav{gap:1.6rem}
 html[data-layout="reading"] .app-copy{grid-template-columns:minmax(0,1fr)}
 html[data-layout="reading"] .app-copy .like{grid-column:1;grid-row:4;justify-self:start;margin-top:.25rem}
 html[data-layout="reading"] .post{display:block}
 html[data-layout="reading"] .post time{display:block;margin-top:.7rem}
 html[data-layout="reading"] .article h2{font-size:1.65rem}
 html[data-layout] body[data-view="workspace"] .theme-options{grid-template-columns:1fr}
 html[data-layout] body[data-view="workspace"] .theme-option{min-height:145px}
 html[data-layout] body[data-view="workspace"] .layout,html[data-layout] body[data-view="apply"] .layout{padding-top:1.5rem}
}

/* Actual scoped upstream reuse, with APPFan-specific size/content adaptations.
 * MIT copyright and permission notices are retained in assets/upstream/<project>/LICENSE.
 * PaperMod 118119693d8b5ac211b939775678310973bcb232:
 * assets/css/common/profile-mode.css lines 1-4,13-35.
 * profile_inner is mapped to the existing .profile; the full-viewport hero from
 * lines 6-11 is intentionally omitted so every work is reachable without a long hero.
 */
html[data-layout="profile"] .profile{
 display:flex;
 flex-direction:column;
 align-items:center;
 justify-content:center;
 gap:1rem;
}
html[data-layout="profile"] .profile .avatar{border-radius:50%;margin-bottom:0}
html[data-layout="profile"] .profile h1{margin:0}
html[data-layout="profile"] .profile .bio{margin:0;max-width:490px}
html[data-layout="profile"] .profile .location{margin:0}
html[data-layout="profile"] .profile .author-site{margin:0}
html[data-layout="profile"] .profile small{margin:0}
html[data-layout="profile"] .profile .author-site{
 background:var(--soft);
 border-radius:var(--radius);
 padding:.4rem .8rem;
}
html[data-layout="profile"] .profile .author-site:hover{background:var(--line)}

/* Ghost Source c319894de858c8ce553e6c4eff6795b73f15dad9:
 * assets/css/screen.css lines 945-950, 1004-1033.
 * .gh-card-link/title/excerpt/meta map to .post/h3/p/time.
 * Source's root is 10px, APPFan root is 16px: rem sizes are converted by .625.
 * Image wrappers, stretched hit area and clamps are not needed for this image-free
 * author article list. Text remains complete, title/date/summary are preserved.
 */
html[data-layout="editorial"] .post{
 display:flex;
 flex-direction:column;
 gap:20px;
 color:var(--ink);
}
html[data-layout="editorial"] .post h3{
 font-size:calc(1.1875rem * var(--factor,1));
 font-weight:725;
 letter-spacing:-.014em;
 line-height:1.3;
}
html[data-layout="editorial"] .post:hover h3{opacity:.8}
html[data-layout="editorial"] .post p{
 margin-top:8px;
 font-size:.90625rem;
 line-height:1.4;
}
html[data-layout="editorial"] .post time{
 align-items:center;
 padding-bottom:1px;
 font-size:.78125rem;
 font-weight:500;
 line-height:1.4;
 letter-spacing:-.004em;
 color:var(--muted);
}

/* AstroPaper befb05d9d5f359497a1cb4146f5c37fab22f7678:
 * src/components/Card.astro lines 15-34; src/styles/theme.css lines 14-24.
 * Utility classes my-6, text-lg, font-medium, decoration-dashed,
 * underline-offset-4 and hover:underline are translated to equivalent scoped CSS.
 * The original Card title -> Datetime -> description sequence is retained visually;
 * only existing demo DOM is used, with no Astro/Tailwind runtime dependency.
 */
html[data-layout="reading"]{
 --bg:#fdfdfd;
 --surface:#fdfdfd;
 --ink:#282728;
 --accent:#006cac;
 --soft:#e6e6e6;
 --muted:#6b7280;
 --line:#ece9e9;
}
html[data-layout="reading"] .post{
 display:grid;
 grid-template-columns:minmax(0,1fr);
 row-gap:.4rem;
 margin:1.5rem 0;
 padding:0 0 1.5rem;
 text-decoration:none;
}
html[data-layout="reading"] .post>div{display:contents}
html[data-layout="reading"] .post h3{
 grid-column:1;
 grid-row:1;
 display:inline-block;
 font-size:1.125rem;
 font-weight:500;
 line-height:1.6;
 color:var(--accent);
 margin:0;
 text-decoration-style:dashed;
 text-underline-offset:4px;
}
html[data-layout="reading"] .post:hover h3{text-decoration:underline dashed;text-underline-offset:4px}
html[data-layout="reading"] .post:focus-visible h3{text-decoration:none;text-underline-offset:0}
html[data-layout="reading"] .post time{grid-column:1;grid-row:2;margin:0;padding:0;font-size:.75rem}
html[data-layout="reading"] .post p{grid-column:1;grid-row:3;margin:0;font-size:.875rem;line-height:1.8}
html[data-layout="reading"] .article h2{color:var(--accent)}

@media(max-width:900px){
 html[data-layout="editorial"] .post{flex-direction:row;gap:1.25rem}
 html[data-layout="editorial"] .post h3{font-size:1.125rem}
}
@media(max-width:640px){
 html[data-layout="profile"] .profile{gap:.75rem}
 html[data-layout="editorial"] .post{flex-direction:column;gap:.7rem}
 html[data-layout="editorial"] .post p{font-size:.85rem;line-height:1.7}
 html[data-layout="reading"] .post p{font-size:.85rem}
}

/* Revision 1.1 / 2026-11-03: persistent site directory for the three layout presets.
 * Local APPFan addition; no changes to upstream source snapshots or licenses.
 * Reading content stays single-column, navigation occupies its own quiet rail.
 */
@media(min-width:1000px){
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .layout{
  display:grid;grid-template-columns:148px minmax(0,1fr);column-gap:3rem;row-gap:0;align-items:start;
 }
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .profile{grid-column:2;grid-row:1}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) main{display:contents}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) #content{grid-column:2;grid-row:2;min-width:0}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .nav{
  grid-column:1;grid-row:1/3;position:sticky;top:2rem;align-self:start;display:flex;flex-direction:column;gap:.3rem;overflow:visible;white-space:normal;margin:0;padding:1.1rem .9rem 1.1rem 0;border:0;border-right:1px solid var(--line);justify-content:flex-start;
 }
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .nav::before{
  content:"站内目录";font:500 .7rem/1.6 -apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;letter-spacing:.12em;color:var(--muted);padding:0 .8rem .8rem;
 }
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .nav button{
  display:block;width:100%;text-align:left;padding:.7rem .8rem;border:0;border-left:2px solid transparent;border-radius:0;font-size:.85rem;line-height:1.6;background:transparent;color:var(--muted);
 }
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .nav button:hover{color:var(--ink);background:var(--soft)}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .nav button.active{color:var(--accent);background:var(--soft);border-left-color:var(--accent)}
 html[data-layout="profile"] .nav button{border-radius:0 8px 8px 0!important}
 html[data-layout="editorial"] .nav::before{font-family:var(--heading)!important;letter-spacing:.08em!important}
 html[data-layout="reading"] body:not([data-view="workspace"]):not([data-view="apply"]) .layout{max-width:1080px;grid-template-columns:140px minmax(0,1fr);column-gap:2.5rem}
 html[data-layout="reading"] #content{max-width:720px}
 html[data-layout="reading"] .profile{width:100%;max-width:900px;margin-left:0;margin-right:0}
 html[data-layout="editorial"] body:not([data-view="workspace"]):not([data-view="apply"]) .intro{display:block}
 html[data-layout="editorial"] .intro p{max-width:650px;margin-top:1rem}
}
@media(max-width:999px){
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .nav{
  position:sticky;top:0;z-index:10;background:var(--bg);padding-top:.9rem;overflow-x:auto;flex-wrap:nowrap;justify-content:flex-start;box-shadow:0 3px 0 var(--bg);
 }
}

/* Revision 1.2 / 2026-11-03: Owner-directed compact profile above directory. */
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile{
 display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;position:static;width:auto;max-width:none;margin:0;padding:0 0 1.3rem;text-align:left;min-height:0;
}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .avatar{width:76px;height:76px;margin:0 0 .6rem;border-width:4px;float:none}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .overline{font-size:.6rem;letter-spacing:.08em}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile h1{font-size:1.8rem;line-height:1.3;margin:0;text-align:left}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .handle{font-size:.72rem}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .bio{font-size:.82rem;line-height:1.85;margin:.4rem 0;max-width:none;text-align:left}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .location{font-size:.72rem;margin:0}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .author-site,
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile small{display:none}
@media(min-width:1000px){
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .layout{max-width:1192px;grid-template-columns:220px minmax(0,1fr);column-gap:3.5rem;align-items:start}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .profile-sidebar{grid-column:1;grid-row:1/3;position:sticky;top:1.5rem;align-self:start;padding-right:1.4rem;border-right:1px solid var(--line)}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .profile-sidebar .profile{display:flex;grid-column:auto;grid-row:auto}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .profile-sidebar .nav{position:static;border-right:0;border-top:1px solid var(--line);padding:1rem 0 0;gap:.15rem;margin:0}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .profile-sidebar .nav::before{padding:0 .6rem .5rem;font-size:.65rem}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) .profile-sidebar .nav button{padding:.55rem .65rem}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:not([data-view="workspace"]):not([data-view="apply"]) #content{grid-column:2;grid-row:1}
 html[data-layout="profile"] .intro{text-align:left;margin:0;padding:0 0 2.4rem;max-width:none}
 html[data-layout="profile"] .intro h2{font-size:2.05rem;line-height:1.5;margin:0 0 1rem}
 html[data-layout="profile"] .intro p{text-align:left}
 html[data-layout="profile"] .littleline{margin:1.2rem 0 0}
}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:is([data-view="workspace"],[data-view="apply"]) .profile-sidebar{display:contents}
html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) body:is([data-view="workspace"],[data-view="apply"]) .profile-sidebar .profile{display:none}
@media(max-width:999px){
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar{display:contents}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile{padding-bottom:1.25rem;margin-bottom:1rem;border-bottom:1px solid var(--line)}
 html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .nav{width:100%;margin-bottom:1.75rem}
}

html:is([data-layout="profile"],[data-layout="editorial"],[data-layout="reading"]) .profile-sidebar .profile .bio br{display:none}

/* Revision 1.3: extend approved compact sidebar to editorial and reading. */
@media(min-width:1000px){
 html[data-layout="reading"] body:not([data-view="workspace"]):not([data-view="apply"]) .layout{max-width:1080px;column-gap:2.5rem}
 html[data-layout="editorial"] .intro{padding-top:0}
}
