/* whiledo - live profile widgets (Material 3 Expressive) */
.markup .pl{position:relative;margin:0 0 20px;color:var(--md-on-surface);font-family:var(--font-plain);line-height:1.5}
.markup .pl *{box-sizing:border-box}
.markup .pl a{text-decoration:none}
.markup .pl h1,.markup .pl h2,.markup .pl p,.markup .pl ol{margin:0;padding:0;border:0}
.markup .pl button{font-family:inherit;cursor:pointer}
.pl .pl-i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.pl-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.markup .pl .pl-kicker{color:var(--md-tertiary);font:600 12px/1 var(--font-plain);letter-spacing:.14em;text-transform:uppercase;margin-bottom:6px}
.markup .pl .pl-title{font:700 clamp(26px,4vw,36px)/1.1 var(--font-brand);font-stretch:112%;letter-spacing:-.02em;color:var(--md-on-surface)}
.pl-live{display:inline-flex;align-items:center;gap:8px;height:28px;padding:0 12px;border-radius:var(--shape-full);background:var(--md-surface-high);color:var(--md-on-surface-variant);font:500 12px/1 var(--font-plain);white-space:nowrap}
.pl-live>i{width:8px;height:8px;border-radius:50%;background:#7fd8a0;box-shadow:0 0 0 0 #7fd8a099;animation:pl-ping 2s infinite}
.pl-live.off>i{background:var(--md-tertiary);animation:none}
@keyframes pl-ping{70%{box-shadow:0 0 0 8px #7fd8a000}100%{box-shadow:0 0 0 0 #7fd8a000}}
@keyframes pl-flash{0%{filter:brightness(1.9) saturate(1.3)}100%{filter:none}}
.pl-flash{animation:pl-flash 900ms var(--ease-effects)}
.pl-chips{display:flex;flex-wrap:wrap;gap:8px}
.pl-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 14px;border:0;border-radius:var(--shape-sm);background:transparent;box-shadow:inset 0 0 0 1px var(--md-outline-variant);color:var(--md-on-surface-variant);font:500 13px/1 var(--font-plain);transition:border-radius var(--dur) var(--spring-spatial-fast),background-color var(--dur-fast) linear,color var(--dur-fast) linear,scale var(--dur) var(--spring-spatial-fast)}
.pl-chip.fill{background:var(--md-secondary-container);box-shadow:none;color:var(--md-on-secondary-container)}
.pl-chip.big{min-height:40px;padding:0 18px;font-size:14px;border-radius:20px}
button.pl-chip:hover{background:color-mix(in srgb,var(--md-on-surface) 8%,transparent)}
button.pl-chip:active{scale:.95;border-radius:var(--shape-md)}
.pl-chip.on{background:var(--md-secondary-container);box-shadow:none;color:var(--md-on-secondary-container);border-radius:16px}
.pl-chip.static{cursor:default}
.pl-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--md-primary)}
.pl-btn{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 24px;border:0;border-radius:24px;background:var(--md-primary);color:var(--md-on-primary)!important;font:600 15px/1 var(--font-plain);transition:border-radius var(--dur) var(--spring-spatial-bouncy),scale var(--dur) var(--spring-spatial-fast)}
.pl-btn.tonal{background:var(--md-secondary-container);color:var(--md-on-secondary-container)!important}
.pl-btn.outlined{background:transparent;color:var(--md-primary)!important;box-shadow:inset 0 0 0 1px var(--md-outline)}
.pl-btn:active{border-radius:var(--shape-md);scale:.97}
.pl-btn:hover{filter:brightness(1.08)}

#readme_profile.markup:has(.pl),.markup:has(> .pl){background:none!important;padding:0!important;border:0!important;box-shadow:none!important}
.pl-home{max-width:1240px;margin:0 auto;width:calc(100% - 48px);padding:8px 0 32px}.pl-home>p,.pl-home>.pl{margin-bottom:12px}.pl-home .pl-avatar img{object-fit:contain;transform:scale(.55);filter:brightness(0) saturate(100%) invert(10%) sepia(50%) saturate(800%) hue-rotate(170deg)}.pl-home .pl-hero{min-height:380px}
.pl-hero{--px:0;--py:0;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(180px,.8fr);gap:20px;align-items:center;padding:clamp(24px,4vw,48px);background:var(--md-surface-container);border-radius:var(--shape-xxl) var(--shape-xxl) var(--shape-xxl) 120px;overflow:hidden;min-height:340px;isolation:isolate}
.pl-hero-text{min-width:0;container-type:inline-size}
.markup .pl .pl-display{margin:14px 0 6px;font:800 clamp(48px,22cqw,144px)/.9 var(--font-brand);font-stretch:125%;letter-spacing:-.04em;color:var(--md-primary)}
.markup .pl .pl-typed{min-height:2.8em;max-width:30ch;font:500 clamp(18px,2.2vw,24px)/1.35 var(--font-brand);font-stretch:105%;color:var(--md-on-surface)}
.pl-caret{display:inline-block;width:3px;height:1.05em;margin-left:3px;vertical-align:-.15em;border-radius:2px;background:var(--md-tertiary);animation:pl-blink 1s steps(1) infinite}
@keyframes pl-blink{50%{opacity:0}}
.markup .pl .pl-clock{margin:6px 0 18px;color:var(--md-on-surface-variant);font:500 13px/1 var(--font-mono);font-variant-numeric:tabular-nums}
.pl-actions{display:flex;flex-wrap:wrap;gap:8px}
.pl-art{position:relative;aspect-ratio:1;width:100%;max-width:300px;justify-self:center}
.pl-art>*{position:absolute;transition:translate 350ms var(--ease-effects)}
.pl-s1{inset:4%;background:var(--md-primary-container);-webkit-mask:var(--shape-cookie) center/100% 100% no-repeat;mask:var(--shape-cookie) center/100% 100% no-repeat;animation:pl-spin 60s linear infinite;translate:calc(var(--px)*10px) calc(var(--py)*10px)}
.pl-s2{width:34%;aspect-ratio:1;top:-3%;right:-3%;background:var(--md-tertiary-container);-webkit-mask:var(--shape-sunny) center/100% 100% no-repeat;mask:var(--shape-sunny) center/100% 100% no-repeat;animation:pl-spin 30s linear infinite reverse;translate:calc(var(--px)*-22px) calc(var(--py)*-18px)}
.pl-s3{width:28%;aspect-ratio:1;left:-3%;bottom:4%;background:var(--md-secondary-container);-webkit-mask:var(--shape-clover) center/100% 100% no-repeat;mask:var(--shape-clover) center/100% 100% no-repeat;animation:pl-spin 40s linear infinite;translate:calc(var(--px)*18px) calc(var(--py)*22px)}
.pl-s4{width:15%;aspect-ratio:1;right:8%;bottom:-3%;background:var(--md-primary);-webkit-mask:var(--shape-flower) center/100% 100% no-repeat;mask:var(--shape-flower) center/100% 100% no-repeat;animation:pl-spin 22s linear infinite reverse;translate:calc(var(--px)*-30px) calc(var(--py)*-14px)}
@keyframes pl-spin{to{rotate:360deg}}
.pl-avatar{--shape:var(--shape-cookie);inset:20%;padding:0;border:0;background:var(--md-primary);-webkit-mask:var(--shape) center/100% 100% no-repeat;mask:var(--shape) center/100% 100% no-repeat;translate:calc(var(--px)*-6px) calc(var(--py)*-6px)}
.pl-avatar img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(.94)}
@media(max-width:700px){.pl-hero{grid-template-columns:1fr;border-radius:var(--shape-xl) var(--shape-xl) var(--shape-xl) 64px}.pl-art{max-width:180px;order:-1;justify-self:start}}

/* stats */
.pl-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.pl-tile{position:relative;display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:18px 20px;border:0;border-radius:var(--shape-xl);text-align:left;color:var(--ink);background:var(--tone);transition:border-radius var(--dur) var(--spring-spatial-bouncy),scale var(--dur) var(--spring-spatial-fast)}
.pl-tile.t0{--tone:var(--md-primary-container);--ink:var(--md-on-primary-container)}.pl-tile.t1{--tone:var(--md-tertiary-container);--ink:var(--md-on-tertiary-container)}.pl-tile.t2{--tone:var(--md-secondary-container);--ink:var(--md-on-secondary-container)}.pl-tile.t3{--tone:var(--md-surface-high);--ink:var(--md-on-surface)}.pl-last{--tone:var(--md-surface-container);--ink:var(--md-on-surface)}
button.pl-tile{cursor:pointer}button.pl-tile:hover{scale:1.02}button.pl-tile:active{scale:.97;border-radius:var(--shape-lg)}
.pl-tile-ic{display:grid;place-items:center;width:36px;height:36px;margin-bottom:8px;border-radius:50%;background:color-mix(in srgb,var(--ink) 16%,transparent)}
.pl-num{display:block;font:800 clamp(34px,5vw,48px)/1 var(--font-brand);font-stretch:120%;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.pl-num.sm{font-size:clamp(22px,3vw,28px);padding:8px 0 5px}
.pl-label{font:500 13px/1.2 var(--font-plain);opacity:.85}

/* heatmap */
.pl-heatmap{padding:clamp(18px,3vw,28px);background:var(--md-surface-container);border-radius:var(--shape-xl) var(--shape-xxl) var(--shape-xl) var(--shape-xl)}
.pl-heat-scroll{overflow-x:auto;margin:16px 0 8px;padding-bottom:6px;scrollbar-width:thin}
.pl-months,.pl-heat{display:grid;grid-template-columns:repeat(var(--cols,53),minmax(12px,1fr));gap:3px;min-width:700px}
.pl-months{margin-bottom:6px;color:var(--md-on-surface-variant);font:500 11px/1 var(--font-plain)}
.pl-months span{white-space:nowrap}
.pl-heat{grid-template-rows:repeat(7,1fr);grid-auto-flow:column}
.pl-cell{aspect-ratio:1;min-width:0;padding:0;border:0;border-radius:4px;background:var(--md-surface-highest);animation:pl-pop 420ms var(--spring-spatial) both;animation-delay:var(--d,0ms);transition:border-radius var(--dur-fast) var(--ease-effects),scale var(--dur-fast) var(--ease-effects)}
.pl-cell.l1{background:color-mix(in srgb,var(--md-primary) 28%,var(--md-surface-highest))}.pl-cell.l2{background:color-mix(in srgb,var(--md-primary) 52%,var(--md-surface-highest))}.pl-cell.l3{background:color-mix(in srgb,var(--md-primary) 76%,var(--md-surface-highest))}.pl-cell.l4{background:var(--md-primary)}
.pl-cell:hover,.pl-cell:focus-visible{filter:brightness(1.35);outline:0}

@keyframes pl-pop{from{scale:0;opacity:0}to{scale:1;opacity:1}}
.pl-legend{display:flex;align-items:center;gap:4px;justify-content:flex-end;color:var(--md-on-surface-variant);font:500 11px var(--font-plain)}.pl-legend .pl-cell{width:12px;height:12px;aspect-ratio:auto;animation:none}.pl-legend span{margin:0 4px}
.pl-tip{position:absolute;z-index:5;translate:-50% -100%;padding:6px 10px;border-radius:var(--shape-sm);background:var(--md-inverse-surface);color:var(--md-inverse-on-surface);font:500 12px/1.3 var(--font-plain);white-space:nowrap;pointer-events:none;opacity:0;scale:.9;transition:opacity 120ms linear,scale var(--dur-fast) var(--spring-spatial-fast)}.pl-tip.on{opacity:1;scale:1}

/* projects */
.pl-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:14px}
.pl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:10px}
.pl-card{--tone:var(--md-surface-container);--ink:var(--md-on-surface);position:relative;display:flex;flex-direction:column;gap:8px;min-height:190px;padding:20px;border-radius:var(--shape-xl);background:var(--tone);color:var(--ink)!important;overflow:hidden;isolation:isolate;transition:border-radius var(--dur) var(--spring-spatial-bouncy),scale var(--dur) var(--spring-spatial-fast)}
.pl-card[hidden]{display:none}
.pl-card::after{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--dur-fast) linear;z-index:-1}
.pl-card:hover::after{opacity:.07}.pl-card:active{scale:.98;border-radius:var(--shape-lg)}
.pl-card.t0{--tone:var(--md-primary-container);--ink:var(--md-on-primary-container)}.pl-card.t1{--tone:var(--md-secondary-container);--ink:var(--md-on-secondary-container)}.pl-card.t2{--tone:var(--md-tertiary-container);--ink:var(--md-on-tertiary-container)}.pl-card.t3{--tone:var(--md-surface-high);--ink:var(--md-on-surface)}
.pl-card-top{display:flex;align-items:center;justify-content:space-between}
.pl-card-ic{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:color-mix(in srgb,var(--ink) 16%,transparent);-webkit-mask:var(--shape-cookie) center/100% 100% no-repeat;mask:var(--shape-cookie) center/100% 100% no-repeat;transition:rotate var(--dur) var(--spring-spatial)}
.pl-card:hover .pl-card-ic{rotate:45deg}.pl-card:hover .pl-card-ic .pl-i{rotate:-45deg}.pl-card-ic .pl-i{transition:rotate var(--dur) var(--spring-spatial)}
.pl-badge{padding:4px 10px;border-radius:var(--shape-full);background:var(--ink);color:var(--tone);font:700 11px/1 var(--font-plain);letter-spacing:.04em;text-transform:uppercase}
.pl-card-name{display:block;font:700 22px/1.15 var(--font-brand);font-stretch:110%;letter-spacing:-.02em;overflow-wrap:anywhere}
.pl-card-desc{font-size:14px;line-height:1.45;opacity:.85;flex:1}
.pl-mini{display:flex;gap:2px;height:6px;border-radius:var(--shape-full);overflow:hidden;background:color-mix(in srgb,var(--ink) 12%,transparent)}.pl-mini i{display:block;min-width:4px}
.pl-meta{display:flex;flex-wrap:wrap;gap:6px 14px;font:500 12px/1.2 var(--font-plain);opacity:.9}
.pl-lang,.pl-stat{display:inline-flex;align-items:center;gap:5px}.pl-lang i{width:9px;height:9px;border-radius:50%}.pl-stat .pl-i{width:14px;height:14px}
.pl-empty{padding:20px;color:var(--md-on-surface-variant)}

/* languages */
.pl-languages{padding:clamp(18px,3vw,28px);background:var(--md-surface-container);border-radius:var(--shape-xl)}
.pl-langbar{display:flex;gap:4px;height:44px;margin:4px 0 14px}
.pl-seg{min-width:10px;padding:0;border:0;border-radius:8px;transition:flex var(--dur-slow) var(--spring-spatial),opacity var(--dur-fast) linear,border-radius var(--dur) var(--spring-spatial-fast),scale var(--dur) var(--spring-spatial-fast);animation:pl-grow 500ms var(--spring-spatial) both;animation-delay:calc(var(--i,0)*60ms)}
.pl-seg:first-child{border-radius:22px 8px 8px 22px}.pl-seg:last-child{border-radius:8px 22px 22px 8px}.pl-seg:only-child{border-radius:22px}
.pl-seg:hover{scale:1 1.12;border-radius:14px}.pl-seg.dim{opacity:.3}.pl-seg.on{box-shadow:0 0 0 3px var(--md-surface-container),0 0 0 5px var(--md-on-surface)}
@keyframes pl-grow{from{scale:0 1;opacity:0}to{scale:1 1;opacity:1}}
.markup .pl .pl-langinfo{margin-top:12px;color:var(--md-on-surface-variant);font:500 13px var(--font-plain);min-height:1.4em}

/* toolbox */
.pl-toolbox{padding:clamp(18px,3vw,28px);background:var(--md-surface-low);border-radius:var(--shape-xl) var(--shape-xl) var(--shape-xxl) var(--shape-xl)}
.pl-tools .pl-chip{animation:pl-pop 420ms var(--spring-spatial) both;animation-delay:calc(var(--i,0)*40ms)}

/* activity */
.pl-activity{padding:clamp(18px,3vw,28px);background:var(--md-surface-container);border-radius:var(--shape-xxl) var(--shape-xl) var(--shape-xl) var(--shape-xl)}
.pl-feed{list-style:none;display:grid;gap:4px;margin:0 0 12px!important}
.pl-feed-item{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 12px;border-radius:var(--shape-lg-inc);transition:background-color var(--dur-fast) linear}
.pl-feed-item:hover{background:var(--md-surface-high)}
.pl-feed-ic{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--md-secondary-container);color:var(--md-on-secondary-container)}
.pl-feed-body a{font-weight:700;color:var(--md-primary)}.pl-verb{color:var(--md-on-surface-variant)}
.markup .pl .pl-msg{margin-top:2px;color:var(--md-on-surface-variant);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-feed-item time{color:var(--md-on-surface-variant);font:500 12px var(--font-plain);white-space:nowrap}
.pl-new{animation:pl-slide 600ms var(--spring-spatial) both,pl-flash 1.4s var(--ease-effects)}
@keyframes pl-slide{from{opacity:0;translate:0 -16px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.pl *,.pl-live>i,.pl-caret{animation:none!important}.pl-art>*{transition:none!important}}

/* cleanup pass: no parallax jitter, no stray flower */
.pl-art>*{translate:none!important;transition:none!important}
.pl-s4{display:none}

/* github-style profile overview */
.markup .pl-projects{margin-bottom:24px}
