:root{--ink:#242127;--muted:#6e6871;--pink:#de78a3;--pink-deep:#c84980;--line:#efd4e0;--soft:#fff4f8;--bg:#fffcfd}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 65% 0%,#fff0f6 0%,transparent 42%),var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}.container{width:min(1180px,calc(100% - 64px));margin-inline:auto}.site-header{border-bottom:1px solid #f3e2e8;background:#fff9fbd6}.header-inner{height:83px;display:flex;align-items:center;justify-content:space-between;gap:22px}.brand{font-size:23px;font-weight:750;letter-spacing:-1.3px}.brand-extension{font-weight:500}.sparkle{color:var(--pink);font-size:27px;margin-right:8px}.site-header nav{display:flex;align-items:center;gap:30px}.site-header nav a{font-size:14px;font-weight:600;color:#4c4850}.site-header nav a.active{color:var(--pink-deep)}.site-header nav a:hover{color:var(--pink-deep)}.github-link{padding-left:18px;border-left:1px solid var(--line)}.hero{display:grid;grid-template-columns:1fr 1fr;align-items:center;min-height:530px;gap:35px}.eyebrow,.article-eyebrow{font:600 12px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:3px;color:#8b5b70}.hero h1{font-weight:700;font-size:clamp(53px,6.3vw,89px);letter-spacing:-5px;line-height:1.04;margin:24px 0}.hero h1 em,.about-page h1 em{font-weight:400;color:var(--pink-deep);font-style:italic}.tiny-star{font-size:35px;vertical-align:top;color:var(--pink);letter-spacing:0;padding-left:7px}.hero p{font-size:18px;line-height:1.6;color:#57515a;max-width:480px}.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:33px}.btn{border-radius:999px;display:inline-flex;align-items:center;gap:21px;justify-content:center;padding:14px 25px;font-size:14px;font-weight:650;transition:transform .2s,box-shadow .2s}.btn:hover{transform:translateY(-2px)}.btn.primary{background:linear-gradient(140deg,#e98bab,#ca4d82);color:#fff;box-shadow:0 5px 17px #e37b9e37}.btn.secondary{border:1px solid #de88aa;color:#c34d7b;background:#fff9fb}.hero-visual{height:460px;position:relative;overflow:hidden;isolation:isolate}.graph-grid{position:absolute;inset:60px 5px;background-image:linear-gradient(#e9aec622 1px,transparent 1px),linear-gradient(90deg,#e9aec622 1px,transparent 1px);background-size:38px 38px;mask-image:radial-gradient(ellipse,#000 20%,transparent 75%)}.halo{position:absolute;inset:55px 50px;background:radial-gradient(ellipse,#ffd1e5 0%,#fff2f7 42%,transparent 72%);filter:blur(20px)}.shield{position:absolute;top:45px;right:30px;width:270px;height:325px;display:flex;align-items:center;justify-content:center;clip-path:polygon(50% 0%,90% 17%,88% 63%,50% 98%,12% 63%,10% 17%);background:linear-gradient(125deg,#fff,#f2b4d0 33%,#fbe4f0 58%,#dd83aa 86%,#fff);font-size:170px;color:#ffffffb0;text-shadow:1px 2px 11px #fff;box-shadow:inset 10px 10px 20px white;opacity:.8}.lock{position:absolute;top:175px;left:85px;width:210px;height:230px;filter:drop-shadow(0 19px 22px #b15e8261);transform:rotate(-8deg)}.lock-loop{height:125px;width:132px;border:27px solid transparent;border-radius:78px 78px 15px 15px;position:absolute;top:0;left:39px;background:linear-gradient(#fae7ed,#ac8b9b) padding-box,linear-gradient(100deg,#777,#fff,#a7a1a7,#fff,#555) border-box}.lock-face{position:absolute;top:90px;left:6px;width:198px;height:143px;background:linear-gradient(135deg,#fff8fc,#ffd4e8 37%,#e4a3c0 75%,#f8d1e6);border:5px solid #fff0f7;border-radius:28px;box-shadow:inset 2px 3px 16px white,inset -4px -6px 12px #d376a5}.keyhole{position:absolute;top:42px;left:84px;width:26px;height:26px;background:#95556e;border-radius:100%}.keyhole:after{content:"";position:absolute;left:8px;top:17px;width:10px;height:26px;background:#95556e;clip-path:polygon(36% 0,64% 0,100% 100%,0 100%)}.orbit{position:absolute;left:35px;top:185px;width:470px;height:126px;border:13px solid transparent;border-top-color:#c7bcc5;border-bottom-color:#99919a;border-radius:50%;transform:rotate(-26deg);box-shadow:inset 0 1px 2px #fff7ff;pointer-events:none;opacity:.78}.visual-label{position:absolute;right:14px;bottom:13px;color:#b27894;font:10px monospace;letter-spacing:2px}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.feature{position:relative;min-height:190px;border:1px solid var(--line);background:linear-gradient(140deg,#fff,#fff1f7);border-radius:24px;padding:26px 28px;transition:transform .2s,border-color .2s}.feature:hover{transform:translateY(-3px);border-color:#dc8fb0}.feature-icon{color:var(--pink-deep);font-size:29px;background:#fbe4ef;border-radius:12px;width:48px;height:48px;display:grid;place-items:center}.feature h2{font-size:22px;letter-spacing:-.8px;margin:13px 0 6px}.feature p{color:var(--muted);font-size:14px;line-height:1.55;margin:0;max-width:270px}.feature-arrow{position:absolute;right:25px;bottom:26px;color:var(--pink-deep);font-size:25px}.home-recent{padding:90px 0 110px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:15px;margin-bottom:26px}.section-heading h2{font-size:32px;letter-spacing:-1.5px;margin:8px 0 0}.section-heading a{color:var(--pink-deep);font-size:14px;font-weight:650}.pink-dot{color:var(--pink)}.archive{padding:73px 0 115px;min-height:70vh}.archive h1{font-size:clamp(42px,5vw,70px);letter-spacing:-4px;margin:22px 0 19px}.archive-intro{font-size:18px;line-height:1.6;color:var(--muted);max-width:770px;margin-bottom:65px}.filter-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.filter-group{display:flex;flex-wrap:wrap;gap:11px}.filter-btn{border:1px solid #ebcedb;background:#fff;border-radius:40px;padding:11px 19px;cursor:pointer;color:#785e6b}.filter-btn:hover,.filter-btn.selected{background:var(--pink);border-color:var(--pink);color:white}.filter-toolbar input{width:230px;max-width:100%;border:1px solid #ebcedb;border-radius:30px;padding:13px 17px;background:white;color:var(--ink);outline-color:var(--pink)}.archive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:23px}.post-card{border:1px solid #f0d1df;border-radius:23px;background:#fff;overflow:hidden;box-shadow:0 12px 29px #59414c0b;transition:transform .2s}.post-card:hover{transform:translateY(-4px)}.post-card[hidden]{display:none}.post-link{display:block;height:100%}.post-art{height:185px;background:linear-gradient(145deg,#fff4f8 5%,#f9cde1 80%);position:relative;display:grid;place-items:center}.art-mini{position:absolute;top:20px;left:22px;font:600 11px monospace;letter-spacing:1.5px;color:#925971}.art-mark{font-size:74px;font-weight:300;color:#c85e8d;text-shadow:2px 2px #fff}.post-body{padding:24px 26px 28px}.pill{background:#fdebf2;border-radius:20px;padding:7px 11px;color:#bb477a;font-size:11px;font-weight:650;display:inline-block}.post-body h3{font-size:22px;letter-spacing:-.8px;margin:18px 0 10px}.post-body p{color:#746b76;line-height:1.6;min-height:47px}.read-link{color:#c44f80;font-weight:700;font-size:14px}.empty-state{border:1px dashed #e9bbce;border-radius:25px;min-height:270px;background:linear-gradient(135deg,#fff8fb,#fff0f6);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:38px}.empty-symbol{font-size:40px;color:#d66c9b}.empty-state h2,.empty-state h3{font-size:25px;letter-spacing:-.7px;margin:10px 0}.empty-state p{max-width:510px;color:#786c74;line-height:1.7;margin:5px 0}.filter-empty{color:#9a5675}.about-page{padding:115px 0 170px;min-height:68vh;max-width:840px}.about-page h1{font-size:clamp(46px,6vw,75px);letter-spacing:-3px}.about-page p{font-size:19px;line-height:1.8;color:#5c565c}.about-page .btn{margin-top:25px}.article{max-width:900px;padding:70px 0 120px}.back-link{color:#b85280;font-size:14px}.article-eyebrow{margin-top:50px}.article h1{font-size:clamp(42px,5vw,72px);line-height:1.1;letter-spacing:-3px;margin:19px 0}.article-description{font-size:21px;color:#6a626b;line-height:1.55}.article-meta{display:flex;gap:22px;font-size:13px;color:#8d7885;border-bottom:1px solid #edd7e0;padding:22px 0}.article-body{font-size:17px;line-height:1.85;color:#3e3941;overflow-wrap:anywhere}.article-body h2{font-size:30px;margin-top:48px;letter-spacing:-1px}.article-body h3{font-size:22px;margin-top:32px}.article-body p,.article-body li{margin-bottom:14px}.article-body a{color:#b73d77;text-decoration:underline}.article-body img{max-width:100%;height:auto;border-radius:14px;border:1px solid #ecd7e1}.article-body pre{overflow-x:auto;padding:22px;border-radius:14px;background:#25222a;color:#f9dbea;font-size:14px;line-height:1.6}.article-body code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em}.article-body :not(pre)>code{background:#f8e8f0;padding:2px 5px;border-radius:5px}.article-body blockquote{border-left:3px solid var(--pink);margin-left:0;padding:8px 22px;color:#765b6b;background:#fff4f8}.article-body table{border-collapse:collapse;display:block;overflow:auto}.article-body th,.article-body td{border:1px solid #e9d6e0;padding:9px 14px}.article-bottom{border-top:1px solid var(--line);padding-top:30px;margin-top:65px;color:var(--pink-deep)}.site-footer{border-top:1px solid var(--line);background:#fff8fb;color:#857581;font-size:13px}.foot-inner{display:flex;justify-content:space-between;gap:20px;padding:28px 0}@media(max-width:850px){.hero{grid-template-columns:1fr;gap:0;padding-top:65px}.hero-visual{max-width:550px;width:100%;margin:auto}.archive-grid,.feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.header-inner{height:auto;min-height:75px;flex-wrap:wrap;padding-block:12px}.site-header nav{flex-wrap:wrap;gap:17px}.filter-toolbar{align-items:start;flex-direction:column}.filter-toolbar input{width:100%}}@media(max-width:580px){.container{width:min(100% - 34px,1180px)}.hero h1{letter-spacing:-2px}.hero-visual{height:350px;transform:scale(.8);transform-origin:top left;width:120%;margin-bottom:-60px}.archive-grid,.feature-grid{grid-template-columns:1fr}.archive h1{letter-spacing:-2px}.archive-intro{margin-bottom:35px}.foot-inner{flex-direction:column}.site-header nav{gap:12px}.site-header nav a{font-size:12px}.github-link{padding-left:0;border:none}.article{padding-top:50px}}


/* Portfolio homepage expansion */
.hero-note{display:block;margin-top:30px;color:#b17d93;font:11px ui-monospace,SFMono-Regular,monospace;letter-spacing:1.3px}
.highlights{padding-bottom:115px;margin-top:-30px}
.highlights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.highlights-grid a{border:1px solid #f0d3df;border-radius:24px;padding:30px;background:linear-gradient(140deg,#fff,#fff1f6);transition:transform .2s}
.highlights-grid a:hover{transform:translateY(-3px)}
.highlights-grid span{font:11px ui-monospace,SFMono-Regular,monospace;letter-spacing:1.7px;color:#bd7895}
.highlights-grid h3{font-size:26px;letter-spacing:-1px;margin:17px 0 8px}
.highlights-grid p{color:#716875;line-height:1.6;max-width:390px}
.highlights-grid b{display:block;margin-top:26px;color:#c34d7b;font-size:13px}
@media(max-width:850px){.highlights{margin-top:0}}
@media(max-width:580px){.highlights-grid{grid-template-columns:1fr}}


/* The uploaded glass-and-chrome shield replaces the earlier CSS drawing. */
.hero-visual{height:auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:visible;isolation:auto}
.hero-visual img{display:block;width:100%;max-width:580px;height:auto;object-fit:contain;filter:drop-shadow(0 24px 30px rgba(217,112,154,.12))}
@media(max-width:850px){.hero-visual{width:100%;min-height:0;max-width:580px;margin:0 auto 12px;transform:none}}
@media(max-width:580px){.hero-visual{width:100%;min-height:0;height:auto;max-width:100%;margin:8px auto 18px;transform:none}.hero-visual img{width:100%}}

.link-arrow {
  display: inline-block;
  position: relative;
  width: .6em;
  height: .6em;
  margin-inline-start: .12em;
  border-top: 1px solid;
  border-right: 1px solid;
  vertical-align: .17em;
}
.link-arrow::after {
  content: "";
  position: absolute;
  top: -.02em;
  right: -.01em;
  width: .79em;
  height: 1px;
  background: currentColor;
  transform: rotate(-45deg);
  transform-origin: right center;
}
