*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0a0a;--bg2: #111111;--surf: #1a1a1a;--border: #242424;--red: #c9303a;--red2: #e63946;--gray: #555;--gray2: #888;--white: #ececec;--mono: "JetBrains Mono", monospace;--sans: "Inter", sans-serif;--header-bg: rgba(10,10,10,.96);--footer-bg: #111111;--mobile-menu-bg: rgba(10,10,10,.98)}[data-theme=dark-yellow]{--bg: #181818;--bg2: #202020;--surf: #282828;--border: #383838;--red: #f5c518;--red2: #ffd740;--gray: #606060;--gray2: #909090;--white: #f0e8c0;--header-bg: rgba(24,24,24,.96);--footer-bg: #181818;--mobile-menu-bg: rgba(24,24,24,.98)}[data-theme=light-blue]{--bg: #f4f6fb;--bg2: #eaecf4;--surf: #ffffff;--border: #d0d7e3;--red: #2563eb;--red2: #3b82f6;--gray: #94a3b8;--gray2: #64748b;--white: #1e293b;--header-bg: rgba(244,246,251,.95);--footer-bg: #dde3ef;--mobile-menu-bg: rgba(244,246,251,.98)}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--white);font-family:var(--sans);overflow-x:hidden;line-height:1.6}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--red);border-radius:2px}::selection{background:var(--red);color:#fff}.hidden{display:none!important}.red{color:var(--red)}#boot{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .65s ease,transform .65s ease}#boot.out{opacity:0;transform:scale(1.04);pointer-events:none}#bootCanvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;pointer-events:none}.boot-center{position:relative;z-index:1;width:100%;max-width:740px;padding:1.5rem 2rem;display:flex;flex-direction:column;align-items:center;gap:.9rem}.boot-brand{font-family:var(--sans);font-weight:900;font-size:3.2rem;letter-spacing:4px;animation:fadeUp .6s .1s both}.boot-sub{font-family:var(--mono);font-size:.7rem;letter-spacing:4px;color:var(--gray);text-transform:uppercase;animation:fadeUp .6s .25s both}.ide{width:100%;border:1px solid #222;border-radius:10px;overflow:hidden;background:#111;box-shadow:0 30px 80px #000000bf,0 0 0 1px #c9303a12;animation:fadeUp .6s .4s both}.ide-bar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;background:#1c1c1c;padding:.6rem 1rem;border-bottom:1px solid #1e1e1e}.ide-file{font-family:var(--mono);font-size:.72rem;color:#666}.ide-lang-badge{font-family:var(--mono);font-size:.62rem;color:#4ec9b0;padding:.15rem .5rem;border:1px solid #2a4a44;background:#4ec9b012;letter-spacing:1px}.lang-switcher{display:flex;align-items:center;gap:.4rem;margin-left:auto;flex-wrap:wrap}.lang-label{font-family:var(--mono);font-size:.62rem;color:#444;letter-spacing:1px}.lang-btn{font-family:var(--mono);font-size:.68rem;padding:.22rem .7rem;background:transparent;border:1px solid #2a2a2a;color:#555;cursor:pointer;transition:all .2s;letter-spacing:.5px}.lang-btn:hover{border-color:#444;color:#aaa}.lang-active{border-color:#4ec9b0!important;color:#4ec9b0!important;background:#4ec9b012!important}.ide-code{background:#111;padding:1rem 0;overflow-x:auto;overflow-y:auto;max-height:300px;font-family:var(--mono);font-size:.79rem;line-height:1.75;color:#bbb}.hl-line{display:block;padding-right:1.5rem}.hl-line:hover{background:#ffffff05}.hl-ln{display:inline-block;width:3rem;padding-right:1.4rem;color:#333;-webkit-user-select:none;user-select:none;text-align:right}.hl-kw{color:#c084fc}.hl-str{color:#86efac}.hl-cmt{color:#3a3a3a;font-style:italic}.hl-num{color:#fb923c}.ide-terminal{border-top:1px solid #1a1a1a}.term-head{display:flex;align-items:center;gap:.55rem;background:#161616;padding:.5rem 1rem;font-family:var(--mono);font-size:.65rem;letter-spacing:2px;color:#444;text-transform:uppercase}.term-dot{width:7px;height:7px;border-radius:50%;background:var(--red);flex-shrink:0}.term-body{background:#0b0b0b;padding:.85rem 1.2rem 1rem;font-family:var(--mono);font-size:.76rem;line-height:1.85;max-height:240px;overflow-y:auto;color:#777}.term-body::-webkit-scrollbar{width:3px}.term-body::-webkit-scrollbar-thumb{background:#222}.t-line{white-space:pre;display:block}.t-green{color:#4ade80}.t-yellow{color:#facc15}.t-dim{color:#333}.t-caret{color:var(--red);animation:blink .75s step-end infinite}@keyframes blink{50%{opacity:0}}.ide-action{display:flex;align-items:center;gap:.75rem;background:#161616;border-top:1px solid #1e1e1e;padding:.7rem 1rem}.status-dot{width:7px;height:7px;border-radius:50%;background:#2a2a2a;flex-shrink:0;transition:background .3s,box-shadow .3s}.status-dot.active{background:var(--red);box-shadow:0 0 8px #c9303a99}.status-dot.ok{background:#4ade80;box-shadow:0 0 8px #4ade8080}.status-txt{font-family:var(--mono);font-size:.67rem;color:#444;flex:1}.btn-run{margin-left:auto;display:inline-flex;align-items:center;gap:.45rem;padding:.42rem 1.1rem;background:#388a34;color:#fff;border:none;font-family:var(--mono);font-size:.76rem;font-weight:600;letter-spacing:.5px;cursor:pointer;transition:background .2s,box-shadow .2s;border-radius:3px}.btn-run:hover{background:#43a83e;box-shadow:0 4px 16px #388a3480}.btn-run:disabled{background:#1e2e1e;color:#3a5a3a;cursor:not-allowed;box-shadow:none}.badge-ok{font-family:var(--mono);font-size:.72rem;color:#4ade80;padding:.4rem .9rem;border:1px solid #1a3a1a;background:#0a1a0a;margin-left:auto}.spinner{display:inline-block;width:10px;height:10px;border:2px solid #555;border-top-color:#aaa;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:4px}@keyframes spin{to{transform:rotate(360deg)}}#header{position:fixed;top:0;left:0;right:0;z-index:100;width:100%;max-width:100vw;background:var(--header-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:background .3s,border-color .3s}#header.scrolled{box-shadow:0 4px 20px #00000059}.nav-inner{width:100%;max-width:1200px;margin:0 auto;padding:0 2rem;height:72px;display:flex;align-items:center;justify-content:space-between;gap:1rem;box-sizing:border-box}.nav-logo{font-weight:900;font-size:1.4rem;letter-spacing:3px;color:var(--white);text-decoration:none;-webkit-user-select:none;user-select:none;white-space:nowrap;flex-shrink:0}.nav-links-desktop{display:flex;gap:2.2rem;list-style:none}.nav-links-desktop a{color:var(--gray2);text-decoration:none;font-size:.78rem;font-weight:600;letter-spacing:2px;text-transform:uppercase;transition:color .2s;position:relative}.nav-links-desktop a:after{content:"";position:absolute;bottom:-3px;left:0;width:0;height:1px;background:var(--red);transition:width .25s}.nav-links-desktop a:hover{color:var(--white)}.nav-links-desktop a:hover:after{width:100%}.burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:4px;flex-shrink:0}.burger span{display:block;width:22px;height:2px;background:var(--white);transition:all .3s}.burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.burger.open span:nth-child(2){opacity:0}.burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-mobile-backdrop,.nav-mobile-menu{display:none}@media (max-width:768px){.nav-inner{padding:0 1rem;gap:.5rem;justify-content:flex-start}.nav-logo{margin-right:auto}.burger{display:flex}.nav-links-desktop{display:none}.nav-mobile-backdrop{display:block;position:fixed;top:72px;right:0;bottom:0;left:0;background:#00000080;z-index:90;animation:fadeIn .2s ease}.nav-mobile-menu{display:flex;flex-direction:column;align-items:stretch;list-style:none;position:fixed;top:72px;left:0;right:0;z-index:95;background:var(--mobile-menu-bg);border-bottom:1px solid var(--border);padding:1rem 0;margin:0;animation:slideDown .25s cubic-bezier(.4,0,.2,1)}.nav-mobile-menu li{width:100%}.nav-mobile-menu a{display:block;padding:1rem 1.5rem;color:var(--white);text-decoration:none;font-size:.9rem;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;border-bottom:1px solid var(--border);transition:background .2s,color .2s}.nav-mobile-menu li:last-child a{border-bottom:none}.nav-mobile-menu a:hover,.nav-mobile-menu a:focus{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red)}}@keyframes slideDown{0%{transform:translateY(-12px);opacity:0}to{transform:none;opacity:1}}@media (max-width:380px){.nav-inner{padding:0 .6rem;gap:.35rem}.nav-logo{font-size:1.1rem;letter-spacing:1px}.ts-btn{width:28px!important;height:28px!important}.burger span{width:20px}}#hero{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:72px 2rem 0}#heroCanvas{position:absolute;top:0;left:0;width:100%;height:100%;display:block;pointer-events:none}.hero-content{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.1rem}.hero-eyebrow{font-size:.72rem;letter-spacing:5px;text-transform:uppercase;color:var(--red);font-weight:600;animation:fadeUp .7s .2s both}.hero-title{font-weight:900;font-size:clamp(3.8rem,12vw,10rem);line-height:.95;letter-spacing:-3px;display:flex;flex-direction:column;animation:fadeUp .7s .4s both}.hero-sub{font-size:.78rem;letter-spacing:5px;text-transform:uppercase;color:var(--gray2);animation:fadeUp .7s .6s both}.hero-cta{margin-top:.75rem;animation:fadeUp .7s .8s both}.section{padding:8rem 0}.bg2{background:var(--bg2)}.s-inner{max-width:1100px;margin:0 auto;padding:0 2rem}.eyebrow{font-family:var(--mono);font-size:.75rem;color:var(--red);letter-spacing:2px;margin-bottom:.5rem}.s-title{font-size:clamp(1.6rem,3.5vw,2.8rem);font-weight:900;letter-spacing:-1px;margin-bottom:3rem;font-family:var(--mono)}.tt-tag{color:var(--red);font-weight:400;font-size:.72em;vertical-align:middle;opacity:.85}.tt-cursor{display:inline-block;width:3px;height:.85em;background:var(--red);vertical-align:middle;animation:tt-blink .65s step-end infinite;margin-left:3px}@keyframes tt-blink{50%{opacity:0}}.exp-section{position:relative;background:var(--bg2)}.exp-sticky{position:sticky;top:0;height:100vh;width:100%;overflow:hidden;display:flex;flex-direction:column}.exp-header{max-width:1100px;margin:0 auto;width:100%;padding:6rem 2rem 2rem;flex-shrink:0}.exp-track{display:flex;flex:1;align-items:center;will-change:transform;transition:transform .08s linear}.exp-slide{flex:0 0 100vw;height:100%;display:flex;align-items:center;justify-content:center;padding:0 2rem 2rem}.exp-slide .exp-card{max-width:820px;width:100%}.exp-progress{display:flex;justify-content:center;gap:.6rem;padding:1.25rem 0 1.75rem;flex-shrink:0}.exp-dot{width:24px;height:3px;background:var(--border);border-radius:2px;transition:background .25s,width .25s}.exp-dot.active{background:var(--red);width:36px}@media (max-width:768px){.exp-header{padding:5rem 1rem 1.25rem}.exp-slide{padding:0 1rem 1rem}}.exp-card{position:relative;display:flex;align-items:flex-start;gap:1.75rem;padding:2rem 2rem 1.75rem;background:var(--surf);border:1px solid var(--border);transition:border-color .25s,transform .25s,box-shadow .25s;clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px))}.exp-card:hover{border-color:color-mix(in srgb,var(--red) 40%,transparent);transform:translateY(-3px);box-shadow:0 20px 50px #00000080}.exp-logo{flex-shrink:0;width:72px;height:72px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;padding:7px;border:1px solid #2a2a2a;overflow:hidden;position:relative}.exp-logo img{width:100%;height:100%;object-fit:contain}.exp-initials{width:100%;height:100%;align-items:center;justify-content:center;font-family:var(--sans);font-weight:900;font-size:1.1rem;color:#fff;border-radius:6px;letter-spacing:1px}.exp-body{flex:1;min-width:0}.exp-meta{display:flex;align-items:center;gap:.8rem;margin-bottom:.45rem;flex-wrap:wrap}.exp-date{font-family:var(--mono);font-size:.68rem;color:var(--red);letter-spacing:1.5px;text-transform:uppercase}.exp-domain{font-family:var(--mono);font-size:.62rem;color:#444;letter-spacing:1px;text-transform:uppercase;padding:.2rem .55rem;border:1px solid #2a2a2a}.exp-job{font-size:1.1rem;font-weight:700;margin-bottom:.2rem}.exp-company{font-size:.8rem;color:#666;font-weight:600;letter-spacing:.5px;margin-bottom:.75rem}.exp-desc{font-size:.84rem;color:#777;line-height:1.75}.exp-tags{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:1rem}.exp-tags span{font-family:var(--mono);font-size:.62rem;padding:.22rem .6rem;border:1px solid color-mix(in srgb,var(--red) 25%,transparent);color:var(--red);background:color-mix(in srgb,var(--red) 5%,transparent);letter-spacing:1px}.exp-num{position:absolute;top:1.2rem;right:1.5rem;font-family:var(--mono);font-size:2.2rem;font-weight:900;color:color-mix(in srgb,var(--red) 6%,transparent);pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1}@media (max-width:600px){.exp-card{flex-direction:column;gap:1rem}.exp-num{display:none}}.skills-grid{margin-top:2.5rem;border:1px solid #242424;border-radius:10px;overflow:hidden;background:#0d0d0d;animation:slideIn .5s cubic-bezier(.4,0,.2,1) both}@keyframes slideIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.grid-head{display:flex;align-items:center;gap:.55rem;padding:.65rem 1.1rem;background:#161616;border-bottom:1px solid #1e1e1e;font-family:var(--mono);font-size:.68rem;color:#4ade80;letter-spacing:1px}.grid-head-dot{width:7px;height:7px;border-radius:50%;background:#4ade80;box-shadow:0 0 6px #4ade8066}.grid-cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:1px;background:#1a1a1a}.skill-card{background:#0d0d0d;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.6rem .75rem 1.2rem;gap:.55rem;min-height:115px;cursor:default;transition:background .2s;perspective:600px;opacity:0;transform:scale(.8) translateY(12px);animation:popIn .4s cubic-bezier(.4,0,.2,1) both}.skill-card:hover{background:color-mix(in srgb,var(--red) 9%,transparent)}.skill-card:hover .skill-icon{transform:scale(1.15);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--red) 65%,transparent))}@keyframes popIn{to{opacity:1;transform:none}}.skill-icon{width:42px;height:42px;object-fit:contain;transition:transform .2s,filter .2s}.skill-logo-wrap{width:48px;height:48px;background:#fff;border-radius:6px;display:flex;align-items:center;justify-content:center;padding:5px;transition:transform .2s,box-shadow .2s}.skill-logo-wrap .skill-icon{width:38px;height:38px}.skill-card:hover .skill-logo-wrap{transform:scale(1.1);box-shadow:0 0 14px color-mix(in srgb,var(--red) 50%,transparent)}.skill-name{font-size:.66rem;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#ccc;text-align:center}.profils-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem}.profil-card{display:flex;align-items:center;gap:1.2rem;padding:1.75rem;text-decoration:none;color:var(--white);background:var(--surf);border:1px solid var(--border);transition:all .3s;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%)}.profil-card:hover{border-color:color-mix(in srgb,var(--red) 40%,transparent);transform:translateY(-4px);box-shadow:0 20px 50px #00000080}.profil-card:hover .arr{color:var(--red);transform:translate(4px)}.profil-card img,.profil-card svg{width:40px;height:40px;object-fit:contain;flex-shrink:0}.profil-logo{display:block}.profil-logo--invert{filter:brightness(0) invert(1)}.profil-logo--linkedin{filter:invert(27%) sepia(96%) saturate(600%) hue-rotate(182deg) brightness(95%)}.profil-card h3{font-size:.95rem;font-weight:700;margin-bottom:.15rem}.profil-card p{font-size:.76rem;color:var(--gray2)}.arr{margin-left:auto;color:var(--gray);transition:all .3s;font-size:1.1rem}.contact-form{display:flex;flex-direction:column;gap:1.1rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}@media (max-width:540px){.form-row{grid-template-columns:1fr}}.field{display:flex;flex-direction:column;gap:.4rem}.field label{font-family:var(--mono);font-size:.68rem;letter-spacing:2px;text-transform:uppercase;color:var(--red)}.field input,.field textarea{background:var(--surf);border:1px solid var(--border);color:var(--white);padding:.8rem 1rem;font-family:var(--sans);font-size:.88rem;outline:none;resize:vertical;transition:border-color .2s}.field input:focus,.field textarea:focus{border-color:var(--red)}.field input::placeholder,.field textarea::placeholder{color:var(--gray)}.field-err{font-family:var(--mono);font-size:.72rem;color:var(--red2);padding:.5rem .75rem;border:1px solid color-mix(in srgb,var(--red) 25%,transparent);background:color-mix(in srgb,var(--red) 5%,transparent)}.btn-red{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:var(--red);color:#fff;border:none;text-decoration:none;font-family:var(--sans);font-size:.8rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:background .2s,transform .2s,box-shadow .2s;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px))}.btn-red:hover{background:var(--red2);transform:translateY(-2px);box-shadow:0 10px 30px color-mix(in srgb,var(--red) 35%,transparent)}#footer{background:var(--footer-bg);position:relative;padding-top:4rem}.footer-wave{position:absolute;top:-68px;left:0;right:0;width:100%;height:70px;display:block}.footer-inner{max-width:1100px;margin:0 auto;padding:1rem 2rem 2.5rem;display:flex;flex-direction:column;align-items:center;gap:1.25rem}.footer-links{display:flex;gap:1.75rem;flex-wrap:wrap;justify-content:center}.footer-links a{color:var(--gray);text-decoration:none;font-size:.7rem;letter-spacing:2px;text-transform:uppercase;transition:color .2s}.footer-links a:hover{color:var(--white)}.footer-copy{font-size:.63rem;color:var(--gray);text-align:center;margin-top:.75rem;padding-top:1.2rem;border-top:1px solid var(--border);width:100%}#chatbot{position:fixed;bottom:1.75rem;right:1.75rem;z-index:9999;display:flex;flex-direction:column;align-items:flex-end;gap:.75rem}#chatToggle{width:52px;height:52px;border-radius:50%;background:var(--red);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px color-mix(in srgb,var(--red) 45%,transparent);transition:transform .2s,background .2s}#chatToggle:hover{transform:scale(1.1);background:var(--red2)}#chatWindow{width:320px;background:var(--bg2);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 8px 40px #0009;display:flex;flex-direction:column;animation:fadeUp .25s ease}#chatHeader{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--surf);border-bottom:1px solid var(--border);font-family:var(--mono);font-size:.8rem;font-weight:600}#chatClose{background:none;border:none;color:var(--gray);cursor:pointer;font-size:1rem;line-height:1;transition:color .2s}#chatClose:hover{color:var(--white)}#chatMessages{padding:1rem;display:flex;flex-direction:column;gap:.65rem;max-height:260px;overflow-y:auto}.chat-msg{padding:.55rem .8rem;border-radius:8px;font-size:.82rem;line-height:1.5;max-width:90%;word-break:break-word}.chat-msg.bot{background:var(--surf);border:1px solid var(--border);align-self:flex-start}.chat-msg.user{background:var(--red);color:#fff;align-self:flex-end}.chat-msg a{color:var(--red2);text-decoration:underline}.chat-msg.bot a{color:#e87a82}#chatSuggestions{display:flex;flex-direction:column;gap:.4rem;padding:.75rem 1rem 1rem;border-top:1px solid var(--border)}.chat-q{background:transparent;border:1px solid var(--border);color:var(--white);border-radius:6px;padding:.45rem .75rem;font-size:.75rem;font-family:var(--mono);cursor:pointer;text-align:left;transition:border-color .2s,background .2s}.chat-q:hover{border-color:var(--red);background:color-mix(in srgb,var(--red) 8%,transparent)}.proj-category{margin-bottom:4rem}.proj-cat-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.proj-cat-line{flex:1;height:1px;background:var(--border)}.proj-cat-label{font-family:var(--mono);font-size:.7rem;letter-spacing:3px;text-transform:uppercase;color:var(--red);white-space:nowrap}.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}.proj-card{display:flex;flex-direction:column;gap:.85rem;padding:1.75rem;background:var(--surf);border:1px solid var(--border);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));transition:border-color .25s,transform .25s,box-shadow .25s;opacity:0;animation:popIn .4s cubic-bezier(.4,0,.2,1) forwards}.proj-card:hover{border-color:color-mix(in srgb,var(--red) 40%,transparent);transform:translateY(-3px);box-shadow:0 20px 50px #00000080}.proj-card-top{display:flex;align-items:center;justify-content:space-between}.proj-num{font-family:var(--mono);font-size:1.8rem;font-weight:900;color:#c9303a1a;line-height:1}.proj-status{font-family:var(--mono);font-size:.6rem;letter-spacing:1.5px;text-transform:uppercase;padding:.22rem .6rem;border:1px solid}.status-done{color:#4ade80;border-color:#4ade804d;background:#4ade800d}.status-wip{color:#facc15;border-color:#facc154d;background:#facc150d}.status-dev{color:var(--gray2);border-color:var(--border);background:transparent}.proj-title{font-size:1.05rem;font-weight:700;color:var(--white)}.proj-desc{font-size:.83rem;color:#777;line-height:1.75;flex:1}.proj-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-top:auto}.proj-tags{display:flex;gap:.35rem;flex-wrap:wrap}.proj-tags span{font-family:var(--mono);font-size:.6rem;padding:.2rem .55rem;border:1px solid color-mix(in srgb,var(--red) 25%,transparent);color:var(--red);background:color-mix(in srgb,var(--red) 5%,transparent);letter-spacing:1px}.proj-link{font-family:var(--mono);font-size:.7rem;color:var(--red);text-decoration:none;white-space:nowrap;transition:color .2s}.proj-link:hover{color:var(--red2)}.about-content{display:flex;flex-direction:column;gap:1.35rem}.about-text{font-size:.91rem;color:#999;line-height:1.85;border-left:2px solid var(--border);padding-left:1.2rem;transition:border-color .3s}.about-text:hover{border-color:color-mix(in srgb,var(--red) 50%,transparent)}.about-text strong{color:var(--white);font-weight:700}.about-chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.chip{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.5px;padding:.35rem .8rem;border:1px solid color-mix(in srgb,var(--red) 25%,transparent);color:var(--red);background:color-mix(in srgb,var(--red) 5%,transparent)}.chip-dot{width:5px;height:5px;border-radius:50%;background:var(--red);flex-shrink:0}.ts-wrap{position:relative;display:flex;align-items:center}.ts-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1px solid transparent;color:var(--gray2);cursor:pointer;transition:all .2s;border-radius:4px}.ts-btn:hover{border-color:var(--border);color:var(--white)}.ts-btn[aria-expanded=true]{border-color:var(--red);color:var(--red)}.ts-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90}.ts-panel{position:absolute;top:calc(100% + 10px);right:0;width:272px;max-width:calc(100vw - 2rem);background:#1e1e1e;border:1px solid #333;box-shadow:0 8px 32px #000000b3;z-index:200;overflow:hidden;animation:fadeUp .15s ease}@media (max-width:480px){.ts-panel{position:fixed;top:72px;right:1rem;left:1rem;width:auto;max-width:none}}.ts-head{display:flex;align-items:center;gap:.55rem;background:#252526;padding:.55rem 1rem;border-bottom:1px solid #333}.ts-head-dot{width:6px;height:6px;border-radius:50%;background:var(--red);flex-shrink:0}.ts-head-title{font-family:var(--sans);font-size:.65rem;font-weight:600;color:#777;letter-spacing:2px;flex:1}.ts-close{background:none;border:none;color:#555;cursor:pointer;font-size:1.1rem;line-height:1;padding:0 .2rem;transition:color .2s}.ts-close:hover{color:#ccc}.ts-list{display:flex;flex-direction:column}.ts-item{display:flex;align-items:center;gap:.85rem;padding:.85rem 1rem;background:transparent;border:none;border-bottom:1px solid #2a2a2a;text-align:left;cursor:pointer;transition:background .15s;width:100%}.ts-item:last-child{border-bottom:none}.ts-item:hover{background:#ffffff0d}.ts-item-active{background:#ffffff08}.ts-preview{flex-shrink:0;display:flex;flex-direction:column;width:36px;height:40px;overflow:hidden;border:1px solid #3a3a3a;border-radius:3px}.ts-swatch{flex:1;display:block}.ts-info{flex:1;display:flex;flex-direction:column;gap:.15rem;overflow:hidden}.ts-name{font-family:var(--sans);font-size:.8rem;color:#d4d4d4;font-weight:600}.ts-desc{font-family:var(--sans);font-size:.68rem;color:#888;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts-check{font-family:var(--sans);font-size:.85rem;color:#4ade80;flex-shrink:0}.ts-activate{font-family:var(--sans);font-size:.62rem;font-weight:600;color:#4e9de8;padding:.2rem .5rem;border:1px solid #2563eb3a;background:#2563eb12;white-space:nowrap;flex-shrink:0;opacity:0;transition:opacity .15s}.ts-item:hover .ts-activate{opacity:1}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
