:root{--bg:#EAF0FA;--ink:#1E2547;--mute:#5B6489;--line:#1E254740;--dot:#1E254726;--pk:#FF8FB1;--edge:#1E2547}
:root[data-theme=dark]{--bg:#12152A;--ink:#EEF1FF;--mute:#9AA1C7;--line:#EEF1FF40;--dot:#EEF1FF1c;--pk:#FF6B9D;--edge:#0B0D1E}
*{box-sizing:border-box;margin:0}
body{background-color:var(--bg);background-image:radial-gradient(var(--dot) 1.2px,transparent 1.5px);background-size:22px 22px;color:var(--ink);font:17px/1.7 "PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Noto Sans CJK SC",system-ui,sans-serif;-webkit-text-size-adjust:100%}
a{color:inherit}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:8px}
.wrap{max-width:760px;margin:0 auto;padding:max(22px,env(safe-area-inset-top)) clamp(20px,5vw,40px) max(48px,env(safe-area-inset-bottom))}
nav{display:flex;justify-content:space-between;align-items:center;font-weight:700}
nav a{text-decoration:none}
.navr{display:flex;align-items:center;gap:18px}
#th{font:inherit;font-size:20px;width:44px;height:44px;border-radius:50%;border:2px solid var(--line);background:none;color:inherit;cursor:pointer}
h1{margin-top:clamp(32px,8vw,64px);font-size:calc(clamp(44px,10vw,84px)*var(--ts,1));font-weight:900;letter-spacing:-.04em;line-height:.95;text-shadow:.045em .045em 0 var(--pk)}
h1.ph{margin-top:10px;font-size:calc(clamp(30px,6vw,48px)*var(--ts,1));line-height:1.15;letter-spacing:-.03em}
.sub{margin:16px 0 28px;color:var(--mute);font-size:19px}
.meta{margin-top:clamp(28px,6vw,48px);display:flex;flex-wrap:wrap;align-items:center;gap:10px;color:var(--mute);font-size:15px}
.tag{padding:1px 10px;border:2px solid var(--line);border-radius:99px;font-size:13px}
.row{display:flex;align-items:center;gap:16px;padding:18px 14px;margin:0 -14px;border-radius:20px;text-decoration:none;transition:background .2s}
a.row:hover{background:color-mix(in srgb,var(--c) 18%,transparent)}
.ico{flex:none;width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:26px;background:var(--c);border:2.5px solid var(--edge);box-shadow:3px 3px 0 var(--edge);transition:transform .2s,box-shadow .2s}
a.row:hover .ico{transform:translate(-1px,-1px) rotate(-6deg);box-shadow:5px 5px 0 var(--edge)}
.txt{display:flex;flex-direction:column;min-width:0}
.txt b{font-size:21px;line-height:1.3}
.txt small{font-size:15px;color:var(--mute)}
.lead{flex:1;min-width:12px;border-bottom:3px dotted var(--line);transform:translateY(2px)}
.st{flex:none;font-size:15px;color:var(--mute)}
.empty{padding:24px 0;color:var(--mute)}
.prose{margin-top:28px;font-size:18px}
.prose>*+*{margin-top:1em}
.prose h2,.prose h3,.prose h4{margin-top:1.6em;font-weight:900;letter-spacing:-.02em;line-height:1.3}
.prose h2{font-size:28px}.prose h3{font-size:23px}.prose h4{font-size:19px}
.prose a{text-decoration:underline;text-decoration-color:var(--pk);text-decoration-thickness:3px;text-underline-offset:3px}
.prose img{max-width:100%;height:auto;border-radius:14px;border:2px solid var(--line)}
.prose pre{overflow-x:auto;padding:14px 16px;border-radius:14px;background:var(--ink);color:var(--bg);font:14px/1.6 ui-monospace,Menlo,Consolas,monospace}
.prose code{padding:1px 6px;border-radius:6px;background:var(--line);font:.9em ui-monospace,Menlo,Consolas,monospace}
.prose pre code{padding:0;background:none}
.prose blockquote{padding-left:16px;border-left:5px solid var(--pk);color:var(--mute)}
.prose ul,.prose ol{padding-left:1.5em}
.prose hr{border:0;border-top:3px dotted var(--line)}
.works{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}
.work{display:flex;flex-direction:column;gap:6px;padding:10px 10px 16px;border:2.5px solid var(--edge);border-radius:22px;background:var(--c);color:#1E2547;text-decoration:none;box-shadow:4px 4px 0 var(--edge);transition:transform .2s,box-shadow .2s}
.work:hover{transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--edge)}
.wc{display:grid;place-items:center;height:130px;overflow:hidden;border-radius:14px;background:#1E2547;font-size:48px}
.wc img{width:100%;height:100%;object-fit:cover}
.work b{padding:0 6px;font-size:19px;line-height:1.3}
.work small{padding:0 6px;font-size:14px;opacity:.8}
.chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 6px}
.chips i{padding:1px 8px;border-radius:99px;background:#ffffff99;font-size:12px;font-style:normal;font-weight:800}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:24px 0}
.facts div{padding:12px 16px;border:2px solid var(--line);border-radius:14px}
.facts dt{font-size:13px;color:var(--mute)}
.facts dd{margin:0;font-weight:800;word-break:break-all}
.gh{margin-top:36px;font-size:24px;font-weight:900}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:12px}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border:2px solid var(--line);border-radius:12px}
.btn{display:inline-block;padding:10px 24px;border:2.5px solid var(--edge);border-radius:99px;background:var(--pk);color:#1E2547;font:inherit;font-weight:800;text-decoration:none;cursor:pointer;box-shadow:3px 3px 0 var(--edge)}
.cform{display:grid;gap:12px;margin-bottom:28px}
.cform label{display:grid;gap:4px;color:var(--mute);font-size:14px}
.cform input,.cform textarea{padding:10px 14px;border:2px solid var(--line);border-radius:14px;background:transparent;color:var(--ink);font:inherit}
.cform .btn{justify-self:start}
.hp{position:absolute;left:-9999px}
.cm{padding:14px 0;border-bottom:3px dotted var(--line)}
.ch{display:flex;justify-content:space-between;color:var(--mute);font-size:14px}
.ch b{color:var(--ink)}
.cm p{margin-top:4px;white-space:pre-wrap;word-break:break-word}
.rp{margin-top:8px;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--pk) 18%,transparent);font-size:15px}
.rp b{display:block;font-size:13px}
.pn{display:flex;justify-content:space-between;gap:12px;margin-top:40px;padding-top:16px;border-top:3px dotted var(--line);font-size:15px}
.back2{margin-top:32px}
footer{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:56px;color:var(--mute);font-size:14px}
@media(max-width:480px){.row{gap:12px}.ico{width:46px;height:46px;font-size:23px}.txt b{font-size:19px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
