:root{color:#171a18;font-synthesis:none;text-rendering:optimizelegibility;--ink:#171a18;--muted:#68706c;--paper:#f3f4ef;--line:#cdd3cd;--soft-line:#dce0da;--coral:#e65d47;--teal:#297978;--yellow:#efc75e;--white:#fbfcf8;background:#e8ebe7;font-family:Inter,Noto Sans SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#e8ebe7;min-width:320px;margin:0}button,input,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button,a{color:inherit}button{cursor:pointer}a{text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}.site-shell{overflow:hidden}.topbar{background:var(--paper);border-bottom:1px solid var(--line);z-index:5;justify-content:space-between;align-items:center;height:76px;padding:0 5.5vw;display:flex;position:relative}.brand{letter-spacing:0;align-items:center;gap:11px;font-size:12px;font-weight:800;display:inline-flex}.brand-mark{background:var(--coral);color:var(--white);justify-content:center;align-items:center;width:30px;height:30px;font-size:11px;display:inline-flex}.topnav{align-items:center;gap:28px;font-size:12px;font-weight:700;display:flex}.topnav a{color:#59615d;align-items:center;gap:5px;transition:color .16s;display:inline-flex}.topnav a:hover,.topnav a:focus-visible{color:var(--coral)}.topnav .github-link{color:var(--ink)}.menu-button{border:1px solid var(--line);color:var(--ink);background:0 0;justify-content:center;align-items:center;width:38px;height:38px;display:none}.section-pad{padding-left:9vw;padding-right:9vw}.hero{background:var(--paper);min-height:655px;padding-top:120px;padding-bottom:43px;position:relative}.hero:after{background:var(--coral);content:"";width:23%;height:9px;position:absolute;top:0;left:0}.hero-copy{z-index:1;max-width:870px;position:relative}.kicker{color:var(--teal);text-transform:uppercase;align-items:center;gap:11px;margin:0 0 27px;font-size:11px;font-weight:800;display:flex}.kicker-line{background:var(--teal);width:34px;height:2px;display:inline-block}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:0}h1{margin-bottom:30px;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:76px;font-weight:700;line-height:1.08}h1 em,h2 em{color:var(--coral);font-style:normal}.hero-intro{color:#606a64;max-width:540px;margin-bottom:35px;font-size:16px;line-height:1.85}.hero-actions{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.button{border:1px solid #0000;justify-content:center;align-items:center;gap:12px;min-height:47px;padding:0 18px;font-size:12px;font-weight:800;transition:background .16s,color .16s,transform .16s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button-dark{background:var(--ink);color:var(--white)}.button-dark:hover{background:var(--coral)}.button-light{background:var(--white);color:var(--ink)}.button-light:hover{background:var(--yellow)}.text-link{border-bottom:1px solid var(--ink);align-items:center;gap:6px;padding-bottom:5px;font-size:12px;display:inline-flex}.text-link:hover{border-color:var(--coral);color:var(--coral)}.hero-stamp{flex-direction:column;align-items:center;gap:15px;display:flex;position:absolute;top:178px;right:12vw;transform:rotate(8deg)}.stamp-ring{border:1px solid var(--coral);color:var(--coral);border-radius:50%;justify-content:center;align-items:center;width:143px;height:143px;display:flex;position:relative}.stamp-ring:before,.stamp-ring:after{border:1px solid var(--coral);content:"";border-radius:50%;position:absolute;inset:8px}.stamp-ring:after{inset:17px}.stamp-ring span{font-family:Georgia,serif;font-size:37px;font-weight:700}.stamp-note{color:var(--coral);text-align:center;font-size:10px;font-weight:800;line-height:1.7}.hero-bottomline{border-top:1px solid var(--line);color:#77807a;justify-content:space-between;align-items:center;padding-top:14px;font-size:11px;display:flex;position:absolute;bottom:43px;left:9vw;right:9vw}.scroll-cue{align-items:center;gap:8px;display:inline-flex}.scroll-dot{background:var(--coral);border-radius:50%;width:7px;height:7px;display:inline-block}.signal-band{background:var(--teal);color:var(--white);grid-template-columns:minmax(220px,.8fr) minmax(280px,1.2fr);align-items:center;gap:10vw;min-height:310px;padding-top:59px;padding-bottom:59px;display:grid}.section-index{color:inherit;opacity:.72;margin-bottom:21px;font-size:10px;font-weight:800;line-height:1.4;display:block}.signal-lead h2,.section-heading h2,.closing-copy h2{margin-bottom:0;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:43px;font-weight:700;line-height:1.15}.signal-copy{max-width:590px}.signal-copy>p{margin-bottom:28px;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:22px;line-height:1.65}.signal-points{border-top:1px solid #fbfcf859;flex-wrap:wrap;gap:24px;padding-top:17px;display:flex}.signal-points span{align-items:center;gap:8px;font-size:11px;font-weight:800;display:inline-flex}.projects-section{background:#e8ebe7;padding-top:107px;padding-bottom:114px}.section-heading{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:flex-end;margin-bottom:27px;padding-bottom:22px;display:flex}.section-heading .section-index{color:var(--coral);margin-bottom:13px}.project-count{color:var(--muted);padding-bottom:4px;font-size:11px;font-weight:800}.toolbar{justify-content:space-between;align-items:flex-start;gap:25px;margin-bottom:34px;display:flex}.filter-row{flex-wrap:wrap;gap:8px;max-width:730px;display:flex}.filter-chip{border:1px solid var(--line);color:#66706a;background:0 0;min-height:32px;padding:0 12px;font-size:11px;font-weight:800;transition:background .15s,border-color .15s,color .15s}.filter-chip:hover,.filter-chip.active{background:var(--ink);border-color:var(--ink);color:var(--white)}.toolbar-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.search-box,.toolbar-right select{background:var(--white);border:1px solid var(--line);color:var(--ink);align-items:center;height:36px;display:flex}.search-box{gap:8px;width:194px;padding:0 10px}.search-box svg{color:var(--muted);flex-shrink:0}.search-box input{color:var(--ink);background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:11px}.search-box input::placeholder{color:#949b95}.toolbar-right select{border-radius:0;padding:0 8px;font-size:11px}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.project-card{background:var(--paper);border:1px solid var(--soft-line);flex-direction:column;min-width:0;transition:border-color .18s,box-shadow .18s,transform .18s;display:flex}.project-card:hover{border-color:var(--ink);transform:translateY(-4px);box-shadow:5px 5px #171a181f}.project-cover{aspect-ratio:16/8.9;border-bottom:1px solid var(--soft-line);background:#d7dbd5;position:relative;overflow:hidden}.project-cover img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .3s;display:block}.project-card:hover .project-cover img{transform:scale(1.025)}.cover-label{background:var(--coral);color:var(--white);padding:5px 7px;font-size:9px;font-weight:800;position:absolute;bottom:9px;left:9px}.project-cover-empty{background:var(--ink);color:var(--yellow);justify-content:space-between;align-items:center;padding:20px;display:flex}.project-cover-empty span{opacity:.92;font-family:Georgia,serif;font-size:62px;line-height:1}.project-cover-empty svg{opacity:.8}.card-content{flex-direction:column;flex:1;padding:21px 20px 17px;display:flex}.card-topline{justify-content:space-between;align-items:flex-start;gap:10px;min-height:25px;display:flex}.card-topline>span:first-child{color:var(--teal);max-width:64%;font-size:9px;font-weight:800;line-height:1.35}.status{color:#707a74;white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;font-size:9px;font-weight:800;line-height:1.3;display:inline-flex}.status-dot{background:#98a29a;border-radius:50%;width:6px;height:6px}.status-live,.status-released{color:var(--teal)}.status-live .status-dot{background:#2f9a78}.status-released .status-dot{background:var(--coral)}.status-shipped .status-dot{background:var(--yellow)}.card-content h3{margin:12px 0 11px;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:24px;line-height:1.25}.card-content>p{color:#67716b;margin-bottom:20px;font-size:12px;line-height:1.75}.card-footer{border-top:1px solid var(--soft-line);justify-content:space-between;align-items:flex-end;gap:12px;margin-top:auto;padding-top:13px;display:flex}.stack-preview{flex-wrap:wrap;gap:5px;min-width:0;display:flex}.stack-preview span,.drawer-stack span,.metric-list span{color:#5d6761;background:#e4e9e3;padding:6px 7px;font-size:9px;font-weight:800;line-height:1;display:inline-block}.open-detail{color:var(--coral);flex-shrink:0;align-items:center;gap:3px;font-size:10px;font-weight:800;display:inline-flex}.empty-state{background:var(--paper);border:1px dashed var(--line);color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:230px;display:flex}.empty-state p{margin:0;font-size:13px}.empty-state button{color:var(--coral);background:0 0;border:0;padding:3px;font-size:11px;font-weight:800}.closing-section{background:var(--coral);color:var(--white);min-height:490px;padding-top:67px;padding-bottom:55px;position:relative}.closing-index{justify-content:space-between;align-items:center;gap:14px;display:flex;position:absolute;top:67px;left:9vw;right:9vw}.closing-index .section-index{margin-bottom:0}.closing-copy{margin-top:100px}.closing-copy .kicker{color:var(--white);margin-bottom:25px}.closing-copy .kicker-line{background:var(--white)}.closing-copy h2{margin-bottom:31px;font-size:62px}.closing-copy h2 em{color:var(--ink)}.closing-meta{opacity:.82;justify-content:space-between;align-items:flex-end;font-size:10px;font-weight:800;display:flex;position:absolute;bottom:55px;left:9vw;right:9vw}.drawer-backdrop{z-index:20;background:#0f131175;justify-content:flex-end;align-items:stretch;display:flex;position:fixed;inset:0}.project-drawer{background:var(--paper);width:min(660px,100vw);max-width:660px;position:relative;box-shadow:-9px 0 30px #0f13112e}.drawer-close{background:var(--ink);color:var(--white);z-index:1;border:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex;position:absolute;top:20px;right:20px}.drawer-close:hover{background:var(--coral)}.drawer-scroll{height:100%;padding:67px 52px 50px;overflow-y:auto}.drawer-header .section-index{color:var(--coral);margin-bottom:19px}.drawer-header>.status{margin-bottom:12px}.drawer-header h2{margin-bottom:15px;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:37px;line-height:1.2}.drawer-header p{color:#66716a;max-width:500px;margin-bottom:28px;font-size:14px;line-height:1.8}.drawer-cover{aspect-ratio:16/8.9;border:1px solid var(--soft-line);background:#d7dbd5;margin-bottom:31px;overflow:hidden}.drawer-cover img{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.drawer-block{border-top:1px solid var(--line);padding:21px 0 23px}.drawer-block h4{color:var(--teal);text-transform:uppercase;margin:0 0 15px;font-size:10px;font-weight:800}.drawer-stack,.metric-list{flex-wrap:wrap;gap:6px;display:flex}.drawer-stack span{background:var(--ink);color:var(--white)}.design-list{gap:17px;display:grid}.design-item{grid-template-columns:25px 1fr;gap:16px;display:grid}.design-item>span{color:var(--coral);font-family:Georgia,serif;font-size:15px;font-weight:700}.design-item p{color:#56625b;margin:0;font-size:13px;line-height:1.8}.attribution{border-left:3px solid var(--yellow);color:#626c65;background:#e5e9e4;margin:0 0 24px;padding:10px 12px;font-size:11px;line-height:1.7}.drawer-actions{flex-wrap:wrap;align-items:flex-start;gap:10px 14px;display:flex}.drawer-actions .button{min-height:43px}.repo-link{border-bottom:1px solid var(--ink);align-items:center;gap:6px;min-height:35px;font-size:11px;font-weight:800;display:inline-flex}.repo-link:hover{border-color:var(--coral);color:var(--coral)}.private-note{color:var(--muted);width:100%;padding-top:9px;font-size:10px;line-height:1.5}@media (width<=1120px){.section-pad{padding-left:6vw;padding-right:6vw}.hero-bottomline,.closing-index,.closing-meta{left:6vw;right:6vw}.hero-stamp{right:8vw}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=820px){.topbar{height:68px;padding:0 6vw}.menu-button{display:inline-flex}.topnav{background:var(--paper);border:1px solid var(--line);flex-direction:column;gap:0;width:190px;display:none;position:absolute;top:58px;right:6vw}.topnav.is-open{display:flex}.topnav a{border-bottom:1px solid var(--soft-line);width:100%;padding:14px 15px}.topnav a:last-child{border-bottom:0}.hero{min-height:680px;padding-top:83px}.hero-stamp{opacity:.72;transform-origin:100% 0;top:170px;right:7vw;transform:rotate(8deg)scale(.75)}.hero-copy{max-width:590px}h1{max-width:600px;font-size:58px}.hero-intro{max-width:440px}.signal-band{grid-template-columns:1fr;gap:35px}.toolbar{flex-direction:column}.toolbar-right{width:100%}.search-box{flex:1}}@media (width<=560px){.section-pad{padding-left:6vw;padding-right:6vw}.brand{font-size:10px}.hero{min-height:710px;padding-top:73px;padding-bottom:34px}.hero:after{width:42%}.hero-stamp{opacity:.56;top:165px;right:0;transform:rotate(8deg)scale(.62)}h1{margin-bottom:23px;font-size:44px;line-height:1.16}.hero-intro{max-width:100%;font-size:14px;line-height:1.75}.hero-actions{flex-direction:column;align-items:flex-start;gap:19px}.hero-bottomline{bottom:34px;left:6vw;right:6vw}.signal-band{min-height:390px;padding-top:48px;padding-bottom:48px}.signal-lead h2,.section-heading h2{font-size:35px}.signal-copy>p{font-size:19px}.projects-section{padding-top:75px;padding-bottom:76px}.section-heading{flex-direction:column;align-items:flex-start;gap:13px}.section-heading h2{margin-bottom:0}.project-grid{grid-template-columns:1fr}.project-cover{aspect-ratio:16/8.7}.card-content h3{font-size:22px}.closing-section{min-height:500px;padding-top:58px}.closing-index{top:58px;left:6vw;right:6vw}.closing-copy{margin-top:93px}.closing-copy h2{font-size:46px}.closing-meta{flex-direction:column;align-items:flex-start;gap:8px;bottom:38px;left:6vw;right:6vw}.drawer-scroll{padding:61px 25px 35px}.drawer-close{top:15px;right:15px}.drawer-header h2{padding-right:40px;font-size:31px}.drawer-header p{font-size:13px}.design-item{grid-template-columns:22px 1fr;gap:10px}}
