:root{color-scheme:light;--bg:#fcfbfc;--ink:#272629;--muted:#969399;--faint:#b5b1b8;--surface:#f2f1f3;--border:#e5e3e7;--active:#fcfbfc;--blue:#5279f7;--purple:#a66cd5;--shadow:0 16px 48px #25203216}
:root[data-theme=dark]{color-scheme:dark;--bg:#191819;--ink:#e3e0e5;--muted:#8f8a94;--faint:#67636c;--surface:#232225;--border:#333036;--active:#333035;--blue:#8aa4ff;--purple:#c795f1;--shadow:0 16px 48px #0005}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.8 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}button{border:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:5px}a:hover{color:var(--blue)}::selection{background:#b0bcfa50}.page{max-width:480px;margin:80px auto 0;padding-bottom:28px}.masthead{display:flex;align-items:flex-start;justify-content:space-between;height:90px}.avatar{width:60px;height:60px;border-radius:13px;position:relative;background:var(--surface);transition:transform .3s,background .3s}.avatar{overflow:hidden;background:#f8f8f8}.avatar img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.4);transition:transform .35s}.avatar:hover img{transform:scale(1.45) rotate(-3deg)}.avatar:active{transform:scale(.9)}.header-right{display:flex;align-items:flex-end;flex-direction:column;gap:13px}.theme-toggle{display:flex;padding:3px;background:var(--surface);border-radius:20px;gap:1px}.theme-toggle button{display:grid;place-items:center;padding:4px;width:23px;height:23px;border-radius:50%;color:var(--muted);background:transparent;transition:.25s}.theme-toggle button[aria-pressed=true]{color:var(--ink);background:var(--bg);box-shadow:0 1px 4px #00000009}.theme-toggle svg{width:15px;height:15px}.updated{font-size:11px;line-height:16px;color:var(--muted);margin:0;letter-spacing:.1px}.intro h1,.intro p{font-size:14px;line-height:1.85;font-weight:400;margin:0 0 25px}.intro h1{margin-bottom:25px}.secondary-name{color:var(--muted)}.inline-label{margin:0 2px}.momo{color:var(--blue)}.ali{color:#ed8d47}.emphasis{color:var(--ink)}.bio-link{color:var(--purple);white-space:nowrap}.intro .social-line{color:var(--muted);margin-top:29px;margin-bottom:27px;font-size:13px}.social-line a{color:var(--ink);transition:color .2s}.social-line a:hover{color:var(--blue)}.tabs{position:relative;display:flex;width:300px;background:var(--surface);padding:3px;border-radius:10px;height:33px;margin:0 0 27px;scroll-margin-top:24px}.tabs button{width:98px;z-index:1;background:transparent;color:var(--muted);font-size:12px;line-height:27px;padding:0;transition:color .2s}.tabs button[aria-selected=true]{color:var(--ink)}.tab-indicator{position:absolute;left:3px;top:3px;width:98px;height:27px;border-radius:7px;background:var(--active);box-shadow:0 1px 3px #0000000c,0 0 0 1px #00000003;transition:transform .28s cubic-bezier(.22,1,.36,1)}.panel{animation:enter .3s ease-out;min-height:250px}.panel[hidden]{display:none}.section-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);padding:0 0 20px;margin-bottom:19px}.section-heading h2{font-size:13px;font-weight:400;margin:0}.section-heading>span{font-size:11px;color:var(--muted);letter-spacing:.15px}.project-year{display:flex;align-items:center;justify-content:space-between;margin:0 0 9px}.project-year h3{font-size:12px;font-weight:500;margin:0;color:var(--muted)}.project-year>span{font-size:10px;color:var(--muted)}.status-dot{display:inline-block;width:5px;height:5px;background:#87a780;border-radius:50%;vertical-align:middle;margin-left:5px}.project{position:relative;display:flex;align-items:flex-start;justify-content:space-between;text-decoration:none;margin:0 -12px;padding:12px;border-radius:7px;transition:background .2s,color .2s;gap:15px}.project:hover,.project:focus-visible{background:var(--surface);color:var(--ink)}.date{font-size:12px;color:var(--muted);line-height:24px}.date.continuation{opacity:0}.project-info{text-align:right;display:flex;flex-direction:column;gap:1px}.project-name{font-size:13px;line-height:23px}.project-description{font-size:11px;color:var(--muted);line-height:18px;letter-spacing:.1px}.arrow{display:inline-block;font-size:12px;color:var(--muted);margin-left:3px;transition:transform .2s,color .2s}.project:hover .arrow{color:var(--blue);transform:translate(2px,-2px)}.quarter{margin-top:9px}.year-second{margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}footer{display:flex;justify-content:space-between;align-items:center;margin-top:54px;padding-top:19px;border-top:1px solid var(--border);font-size:10px;color:var(--muted);letter-spacing:.1px}.footer-star{display:inline-block;font-size:13px;margin-left:4px;color:var(--faint)}.preview{width:310px;position:fixed;top:0;left:0;pointer-events:none;background:var(--bg);border:1px solid var(--border);box-shadow:var(--shadow);padding:7px;border-radius:12px;opacity:0;transform:translateY(8px) rotate(2deg) scale(.98);transition:opacity .18s,transform .25s;z-index:5}.preview.visible{opacity:1;transform:translateY(0) rotate(2deg) scale(1)}.preview-image{width:100%;height:157px;overflow:hidden;border-radius:6px;background:var(--surface)}.preview-image img{width:100%;height:100%;object-fit:cover;object-position:top}.preview-caption{display:flex;justify-content:space-between;padding:9px 6px 0;font-size:12px}.preview p{font-size:10px;color:var(--muted);padding:0 6px;margin:3px 0 6px}.journey-list{padding:3px 0 0;list-style:none;margin:0}.journey-list li{display:flex;gap:27px;position:relative;padding-bottom:27px}.journey-number{font-size:11px;color:var(--muted);padding-top:2px}.journey-list h3{font-size:13px;font-weight:400;margin:0 0 5px}.journey-list p,.journey-note{font-size:12px;color:var(--muted);margin:0}.journey-note{padding-top:14px;border-top:1px solid var(--border);margin-bottom:13px}.text-link{font-size:12px;color:var(--purple)}#reset-terminal{background:transparent;color:var(--muted);font-size:12px;padding:0}kbd{font:10px/1.2 monospace;border:1px solid var(--border);padding:2px 4px;border-radius:4px;margin-left:4px}.terminal-body{font:11px/1.9 ui-monospace,SFMono-Regular,Consolas,monospace}.terminal-body p{margin:0 0 9px}.terminal-welcome{color:var(--ink)}.terminal-muted{color:var(--muted)}.commands{display:flex;flex-wrap:wrap;gap:7px 13px;margin-bottom:23px}.commands button{font:inherit;background:transparent;color:var(--purple);padding:0}.commands button:hover{text-decoration:underline}#terminal-form{display:flex;gap:10px;align-items:center;margin-top:14px}#terminal-form label{white-space:nowrap;color:var(--muted)}#terminal-input{background:transparent;border:0;color:var(--ink);width:100%;min-width:0;padding:5px 0;font:inherit;outline:0}#terminal-input::placeholder{color:var(--faint)}#terminal-input:focus-visible{outline:none;box-shadow:0 1px 0 var(--blue)}#terminal-output{max-height:310px;overflow:auto;overflow-wrap:anywhere}#terminal-output .command-line{color:var(--muted);margin:15px 0 4px}#terminal-output p{white-space:pre-wrap}#terminal-output a{color:var(--blue)}#toast{position:fixed;left:50%;bottom:35px;transform:translate(-50%,12px);background:var(--ink);color:var(--bg);font-size:12px;padding:9px 18px;border-radius:30px;opacity:0;pointer-events:none;transition:.25s;z-index:15;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%,0)}.confetti{position:fixed;pointer-events:none;z-index:20;font-size:16px;animation:float-out 1.1s ease-out forwards}.skip{position:fixed;left:20px;top:-60px;padding:8px 15px;background:var(--ink);color:var(--bg);z-index:30}.skip:focus{top:15px}dialog{width:min(600px,calc(100% - 32px));border:1px solid var(--border);background:var(--bg);color:var(--ink);border-radius:14px;padding:20px;box-shadow:var(--shadow)}dialog::backdrop{background:#1115;backdrop-filter:blur(5px)}.drawing-header{display:flex;justify-content:space-between;gap:15px;font-size:12px}.drawing-header button{font-size:11px;background:var(--surface);padding:4px 10px;border-radius:5px;margin-left:5px}#drawing{width:100%;height:300px;display:block;margin-top:20px;background:var(--surface);border-radius:8px;touch-action:none;cursor:crosshair}dialog p{font-size:11px;color:var(--muted);margin:10px 0 0}@keyframes enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes float-out{from{opacity:1;transform:translate(0,0) rotate(0)}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rotation))}}
@media(min-width:1600px){.page{max-width:480px}}@media(max-width:800px){.preview{display:none}}@media(max-width:560px){.page{max-width:480px;margin:40px auto 0;padding:0 25px 24px}.masthead{height:91px}.intro h1,.intro p{font-size:13px;line-height:1.95;margin-bottom:24px}.desktop-break{display:none}.intro .social-line{font-size:12px;line-height:2.1;margin-bottom:26px}.tabs{width:288px;max-width:100%}.tabs button{width:33.333%}.tab-indicator{width:calc((100% - 6px)/3)}.section-heading>span{font-size:10px}.project{margin:0 -8px;padding:12px 8px}.project-description{font-size:10px}footer{font-size:9px;margin-top:40px}.updated{font-size:10px}.terminal-body{font-size:10px}.drawing-header{font-size:11px;align-items:center}.drawing-header button{padding:4px 7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}
/* Compact project and article lists */
.project-info{margin-left:0;text-align:left}.project{min-height:49px;align-items:center}.project-name{line-height:24px}.article-empty{color:var(--muted);font-size:12px;margin:28px 0}.preview-image{height:168px}.preview-caption{padding-bottom:6px}

.article-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 -12px;padding:13px 12px;text-decoration:none;border-radius:7px;font-size:13px;line-height:1.7}.article-row:hover,.article-row:focus-visible{background:var(--surface);color:var(--ink)}.article-row .arrow{flex:none}.article-row:hover .arrow{color:var(--blue);transform:translate(2px,-2px)}@media(max-width:560px){.article-row{margin:0 -8px;padding:13px 8px;font-size:12px}}
