.skills-page{padding:6rem 3rem 8rem;position:relative;overflow:hidden}.skills-bg{font-family:var(--serif);color:var(--border);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:18vw;font-weight:900;line-height:.8;transition:transform .15s ease-out;position:absolute;top:2rem;right:-3%}.skills-header{z-index:2;margin-bottom:3rem;position:relative}.skills-header h2{font-family:var(--serif);letter-spacing:-.02em;margin:0;font-size:3rem;font-weight:900;line-height:1}.skills-header h2 em{color:var(--gold);font-style:italic}.skills-subtitle{color:var(--text-muted);margin-top:.5rem;font-size:.82rem}.skills-accordion{z-index:2;position:relative}.skills-row{border-top:1px solid var(--border);transition:border-color .3s,background .3s}.skills-row:last-child{border-bottom:1px solid var(--border)}.skills-row:hover{background:#c49b3f05}.skills-row.open{border-color:var(--accent,var(--gold));background:#c49b3f08}.skills-row-header{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.75rem;width:100%;padding:1rem .5rem;font-family:inherit;transition:padding-left .3s;display:flex}.skills-row-header:hover{padding-left:.8rem}.skills-row-dot{background:var(--accent,var(--gold));border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:transform .3s}.skills-row.open .skills-row-dot{transform:scale(1.5)}.skills-row-title{font-family:var(--serif);color:var(--text);white-space:nowrap;font-size:1.35rem;font-style:italic;font-weight:700;transition:color .3s}.skills-row:hover .skills-row-title,.skills-row.open .skills-row-title{color:var(--accent,var(--gold))}.skills-row-tags{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.82rem;transition:color .3s;overflow:hidden}.skills-row:hover .skills-row-tags{color:var(--text-soft)}.skills-tag{color:var(--text-soft);transition:color .3s;display:inline}.skills-tag:hover{color:var(--accent,var(--gold))}.skills-tag.hl{color:var(--text);font-weight:600}.skills-tag-sep{color:var(--border);margin:0 .4rem;transition:color .3s}.skills-row-chevron{color:var(--text-muted);flex-shrink:0;font-size:.65rem;transition:transform .3s,color .3s}.skills-row:hover .skills-row-chevron,.skills-row.open .skills-row-chevron{color:var(--accent,var(--gold))}.skills-row-body{transition:max-height .4s cubic-bezier(.22,.61,.36,1),opacity .3s;overflow:hidden}.skills-row-inner{padding:0 .5rem 1.25rem 1.8rem}.skills-row-desc{color:var(--text-soft);max-width:600px;margin-bottom:.5rem;font-size:.9rem;line-height:1.7}.skills-row-hints{margin-top:.5rem}.skills-hint{color:var(--text-muted);margin-bottom:.3rem;font-size:.78rem;font-style:italic}.skills-related{margin-top:2px}.skills-related-divider{border-top:1px solid var(--border);margin-bottom:14px}.skills-related-strip{gap:20px;display:flex}.skills-related-col{flex:1;min-width:0}.skills-related-col-divider{background:var(--border);flex-shrink:0;width:1px}.skills-related-col-header{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:6px;margin-bottom:10px;font-size:10px;font-weight:600;display:flex}.skills-related-col-dot{border-radius:50%;width:6px;height:6px}.skills-related-item{margin-bottom:10px}.skills-related-item:last-child{margin-bottom:0}.skills-related-item-title{color:var(--text);align-items:baseline;gap:8px;font-size:13px;font-weight:600;line-height:1.4;display:flex}.skills-related-item-time{color:var(--text-muted);letter-spacing:.04em;white-space:nowrap;font-size:10px;font-weight:400}.skills-related-item-desc{color:var(--text-muted);margin-top:1px;font-size:11px;line-height:1.5}.skills-related-empty{color:var(--text-muted);font-size:11px;font-style:italic}.skill-tag-inline{cursor:default;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:.3rem;font-weight:500;transition:transform .2s,box-shadow .2s;display:inline-flex}.skill-tag-inline:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000000f}.skill-tag-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.skill-tag-popup{background:var(--bg);border:1px solid var(--border);opacity:0;pointer-events:none;border-radius:10px;max-width:240px;padding:8px 14px;transition:opacity .2s,transform .2s;transform:translateY(4px);box-shadow:0 8px 30px #00000014}.skill-tag-popup--visible{opacity:1;transform:translateY(0)}.skill-tag-popup-name{font-size:13px;font-weight:600;line-height:1.3}.skill-tag-popup-cat{color:var(--text-muted);margin-top:2px;font-size:11px}.proj-meta{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.3rem;display:flex}.proj-meta .hint{color:var(--text-muted);margin-left:.25rem;font-size:.76rem;font-style:italic}.proj-meta .hint-link{color:var(--text-muted);text-decoration:none;transition:color .25s}.proj-meta .hint-link:hover{color:var(--gold);text-decoration:underline}.skills-lang{z-index:2;border-top:2px solid var(--border);align-items:baseline;gap:1rem;margin-top:2.5rem;padding:1rem .5rem;display:flex;position:relative}.skills-lang-label{font-family:var(--serif);color:var(--text-muted);font-size:1.1rem;font-weight:700}.skills-lang-list{color:var(--text-soft);font-size:.88rem}.skills-terminal-toggle{border:1px solid var(--border);cursor:pointer;font-family:var(--mono);color:var(--text-soft);background:0 0;padding:.4rem .9rem;font-size:.82rem;transition:color .3s,border-color .3s}.skills-terminal-toggle:hover{color:var(--gold);border-color:var(--gold)}.skills-terminal{border:1px solid var(--border);font-family:var(--mono);color:var(--text);z-index:2;min-height:170px;margin-top:2rem;padding:1rem;font-size:.84rem;position:relative}.skills-terminal form{gap:.45rem;margin-top:.5rem;display:flex}.skills-terminal input{color:var(--text);font-family:var(--mono);background:0 0;border:0;outline:none;flex:1}.projects-page{background:var(--bg-warm);padding:6rem 3rem 8rem;position:relative}.proj-header{align-items:baseline;gap:2rem;margin-bottom:4rem;display:flex}.proj-header .num-lg{font-family:var(--serif);color:var(--terracotta-light);font-size:8rem;font-weight:900;line-height:.7;transition:color .6s}.proj-header h2{font-family:var(--serif);letter-spacing:-.02em;margin:0;font-size:2.5rem;font-weight:700}.proj-row{border-top:1px solid var(--border);cursor:default;grid-template-columns:120px 1fr auto;align-items:start;gap:2rem;padding:2.5rem 0;transition:padding-left .4s;display:grid;position:relative}.proj-row:before{content:"";background:0 0;width:3px;transition:background .4s;position:absolute;top:0;bottom:0;left:-1rem}.proj-row:hover{padding-left:1rem}.proj-row:hover:before{background:var(--gold)}.proj-row:last-child{border-bottom:1px solid var(--border)}.proj-row .pr-num{font-family:var(--serif);opacity:.3;font-size:4rem;font-weight:900;line-height:.8;transition:opacity .4s,transform .4s}.proj-row:hover .pr-num{opacity:.6;transform:scale(1.1)}.proj-row:first-child .pr-num{color:var(--gold)}.proj-row:nth-child(2) .pr-num{color:var(--terracotta)}.proj-row:nth-child(3) .pr-num{color:var(--sage)}.proj-row:nth-child(4) .pr-num{color:var(--gold)}.proj-row:nth-child(5) .pr-num{color:var(--terracotta)}.proj-row .pr-info h3{font-family:var(--serif);margin-bottom:.5rem;font-size:1.6rem;font-weight:700;transition:color .3s}.proj-row:hover .pr-info h3{color:var(--gold)}.proj-row .pr-info p{color:var(--text-soft);max-width:520px;margin-bottom:.8rem;font-size:.92rem;line-height:1.7}.proj-row .pr-tags{flex-wrap:wrap;gap:.8rem;display:flex}.proj-row .pr-tags span{color:var(--text-muted);font-size:.78rem;font-family:var(--mono);transition:color .3s}.proj-row:hover .pr-tags span{color:var(--text-soft)}.proj-row .pr-link{font-family:var(--mono);color:var(--gold);white-space:nowrap;border-bottom:1px solid #0000;padding-top:.3rem;font-size:.82rem;transition:border-color .3s,transform .3s;display:inline-block}.proj-row:hover .pr-link{border-color:var(--gold);transform:translate(4px)}.proj-toprow{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.proj-toprow h3{font-family:var(--serif);margin:0;font-size:1.6rem;font-weight:700;transition:color .3s}.proj-clap-area{flex-shrink:0;align-items:center;gap:.5rem;display:flex;position:relative}.clap-btn{color:#a07c308c;cursor:pointer;background:0 0;border:1.5px solid #a07c3059;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:border-color .3s,color .3s,background .3s,transform .2s,box-shadow .3s;display:flex;position:relative}.clap-btn:hover{border-color:var(--gold);color:var(--gold);box-shadow:0 0 0 4px #a07c3014}.clap-btn:active{transform:scale(.92)}.clap-btn.clapped{background:var(--gold);border-color:var(--gold);color:#fff;box-shadow:0 0 0 4px #a07c301f}.clap-icon{justify-content:center;align-items:center;transition:transform .3s cubic-bezier(.34,1.56,.64,1);display:flex}.clap-icon.clapped{color:#fff}.clap-count{font-family:var(--serif);color:var(--text-muted);text-align:center;min-width:1.8rem;font-size:.95rem;font-weight:700;transition:color .3s}.clap-btn.clapped+.clap-count{color:var(--gold)}.clap-count.bump{animation:.25s cubic-bezier(.34,1.56,.64,1) count-bump}@keyframes count-bump{0%{transform:scale(1)}50%{color:var(--gold);transform:scale(1.35)}to{transform:scale(1)}}.clap-particle{font-family:var(--serif);color:var(--gold);pointer-events:none;z-index:5;font-size:.75rem;font-weight:700;animation:.65s ease-out forwards clap-float;position:absolute;top:-4px;left:50%;transform:translate(-50%)}@keyframes clap-float{0%{opacity:1;transform:translate(-50%)translateY(0)scale(1)}50%{opacity:.8}to{opacity:0;transform:translate(-50%)translateY(-22px)scale(.6)}}@media (max-width:768px){.projects-page{padding:4rem 1.5rem}.proj-header{flex-direction:column;gap:.5rem;margin-bottom:2.5rem}.proj-header h2{font-size:2rem}.proj-row{grid-template-columns:auto 1fr;align-items:start;gap:1rem;padding:1.5rem 0}.proj-row .num{font-family:var(--serif);opacity:.35;padding-top:.15rem;font-size:1.6rem;font-weight:900;line-height:1}.proj-toprow{flex-direction:column;align-items:flex-start;gap:.5rem}.proj-toprow h3{font-size:1.15rem}.proj-clap-area{align-self:flex-start}.summary{font-size:.84rem}.proj-meta{gap:.35rem}.proj-meta .skill-tag-inline{padding:.1rem .45rem;font-size:.7rem}.proj-meta .hint{font-size:.72rem}.proj-row:hover{padding-left:0}.proj-row:hover:before{background:0 0}.proj-row:active{background:#a07c3008}.clap-btn{width:36px;height:36px}.clap-count{font-size:.85rem}}
