/* Home page. Tokens, .win, .dock, .btn, .t, .chip come from projects/style.css */
html{scroll-padding-top:16px}
.dock{margin-bottom:16px}
.dock nav{position:relative}
.dock nav a{position:relative;z-index:1}
.ind{position:absolute;top:0;left:0;height:100%;width:0;background:var(--line);border-radius:18px;transition:left .25s cubic-bezier(.3,1.4,.5,1),width .25s;pointer-events:none}
.tools{display:flex;gap:8px;align-items:center}
.seg{display:flex;gap:2px;background:#161b24;border-radius:16px;padding:2px}
.seg button{border:0;background:none;color:var(--mute);font:inherit;font-size:12px;padding:5px 12px;border-radius:14px;cursor:pointer;transition:all .2s}
.seg button.on{background:var(--purple);color:#fff}
.kbtn{font-family:var(--mono);font-size:11px;background:#161b24;border:.5px solid var(--line);color:var(--soft);border-radius:14px;padding:6px 11px;cursor:pointer}
.kbtn:hover{border-color:var(--blue)}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}
.g{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.g>.t{transition:opacity .25s,border-color .2s,transform .25s}
.g>.t.dim{opacity:.3}
.g>.t.ping{animation:pg .9s}
@keyframes pg{30%{border-color:var(--blue);transform:scale(1.02)}}
.s2{grid-column:span 2}.s3{grid-column:span 3}.s4{grid-column:span 4}.s6{grid-column:span 6}
.lab{font-family:var(--mono);font-size:11px;color:#f1f4f8;display:flex;align-items:center;gap:6px;margin-bottom:10px}
.dot{width:7px;height:7px;border-radius:50%;background:var(--blue);animation:pl 1.4s ease-in-out infinite}
@keyframes pl{50%{opacity:.3}}
.hero{padding:26px 24px}
.hero h1{font-size:clamp(36px,7vw,64px);margin:0 0 12px;line-height:1.05}
.hero h1 .clip{display:inline-block;overflow:hidden;vertical-align:bottom;padding:0 .04em .14em;margin-bottom:-.14em}
.hero h1 .end{color:var(--purple-l)}
.word{display:inline-block;color:var(--blue);transition:transform .22s,opacity .22s}
.intro{font-size:clamp(15px,2vw,18px);color:#e4e9f1;max-width:34em;margin:0 0 18px}
.dot.purple{background:var(--purple-l)}
.ttl{margin:0 0 6px;font-size:20px;font-weight:600}
.picon{float:right;width:64px;height:64px;border-radius:16px;margin:-4px 0 8px 12px}
.sum{margin:0 0 12px;font-size:14px;color:#e4e9f1}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.links{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:12px;font-size:13px}
.tl{color:#fff;font-weight:600;text-decoration:none;border-bottom:2px solid var(--blue)}
.tl:hover{background:var(--blue);color:#0f1620}
.nolink{color:#f1f4f8;font-family:var(--mono);font-size:11px}
.ticker{font-family:var(--mono);font-size:11px;color:#f1f4f8;margin:6px 0}
.feed{height:78px;overflow:hidden}
.feed div{padding:2px 0;animation:fi .4s}
@keyframes fi{from{opacity:0;transform:translateY(-6px)}}
.feedfoot{margin-top:4px;color:#f1f4f8}
.feedfoot b{font-size:18px;font-weight:500;color:#fff;margin-right:8px}
.demo{font-size:10px;border:1px solid #f1f4f8;border-radius:8px;padding:0 6px;color:#e4e9f1}
.wv{display:flex;align-items:center;justify-content:center;gap:3px;height:74px;margin:6px 0}
.wv .b{width:5px;border-radius:3px;background:#dde4ee;transition:background .35s,transform .45s cubic-bezier(.3,1.4,.5,1)}
.wv.sep .b0{background:var(--blue);transform:translateY(-14px)}
.wv.sep .b1{background:#c4b0fb;transform:translateY(14px)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip.skill{cursor:pointer;background:#1b212c;font-family:var(--mono);transition:all .2s}
.chip.skill:hover,.chip.skill:focus-visible{background:var(--blue);border-color:var(--blue);color:#0f1620;transform:translateY(-2px)}
.hint{margin:12px 0 0;font-size:12px;color:#f1f4f8}
.sec{font-size:clamp(22px,3.4vw,30px);margin:0 0 14px;font-weight:600}
.entry{border-top:.5px solid #7189b0}
.eh{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;background:none;border:0;color:var(--text);font:inherit;text-align:left;padding:14px 4px;cursor:pointer}
.ehead{display:flex;flex-direction:column;gap:2px}
.et{font-size:17px;font-weight:600}
.es{font-size:13px;color:#e4e9f1}
.plus{font-family:var(--mono);font-size:20px;color:var(--blue-t);transition:transform .25s}
.entry.open .plus{transform:rotate(45deg)}
.eh:hover .et{color:var(--blue-t)}
.ep{padding:0 4px 16px}
.ep ul{margin:0 0 10px;padding-left:18px;font-size:14px;color:#eef2f8}
.ep li{margin-bottom:4px}
ul.plain{list-style:none;margin:0 0 14px;padding:0;font-size:14px}
ul.plain li{padding:6px 0;border-bottom:.5px solid #7189b0}
.edu{display:flex;flex-direction:column;margin-top:10px;font-size:14px}
.edu span{color:#e4e9f1;font-size:13px}
.mail{display:inline-block;font-family:var(--mono);font-size:16px;color:#fff;text-decoration:none;border-bottom:2px solid var(--blue);margin:4px 0 12px}
.mail:hover{background:var(--blue);color:#0f1620}
.ov{position:fixed;inset:0;background:rgba(11,15,22,.78);display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 0;z-index:50}
.ov[hidden]{display:none}
.pal{width:min(420px,100%);background:var(--win);border:1.5px solid var(--blue);border-radius:14px;overflow:hidden}
.pal input{width:100%;background:#161b24;border:0;border-bottom:.5px solid var(--line);color:var(--text);padding:14px 16px;font-family:var(--mono);font-size:13px;outline:none}
.pit{padding:10px 16px;font-size:13px;color:var(--soft);cursor:pointer;display:flex;justify-content:space-between}
.pit.on{background:var(--purple);color:#fff}
.pit.none{cursor:default;color:var(--mute)}
.pk{font-family:var(--mono);font-size:10px;opacity:.7}
.ping{animation:pg .9s}
.bggrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.bgt{margin:0 0 4px;font-size:15px;font-weight:600}
.bg .tags{margin:6px 0 0}
.still *{animation:none!important;transition:none!important}
@media (max-width:640px){.g{grid-template-columns:1fr}.g>.t{grid-column:auto!important}.dock nav{flex-wrap:wrap}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
