:root{--bg: #0f172a;--card: #111827;--card-light: #1f2937;--text: #e5e7eb;--muted: #9ca3af;--accent: #38bdf8;--border: #334155}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:radial-gradient(circle at top left,rgba(56,189,248,.18),transparent 30%),radial-gradient(circle at top right,rgba(59,130,246,.12),transparent 30%),var(--bg);color:var(--text);line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1100px;margin:0 auto;padding:48px 24px}.hero{padding:72px 0}.hero-small{padding:25px 0}.badge{display:inline-block;padding:6px 12px;border:1px solid var(--border);border-radius:999px;color:var(--accent);background:#0f172ab3;font-size:.9rem}h1{font-size:clamp(2.4rem,6vw,4.5rem);line-height:1.05;margin:20px 0}h2{font-size:2rem;margin-top:56px}h3{margin-top:0}.lead{font-size:1.2rem;color:var(--muted);max-width:760px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:20px}.card{background:linear-gradient(180deg,#1f2937e6,#111827e6);border:1px solid var(--border);border-radius:22px;padding:24px;box-shadow:0 20px 50px #00000040}.project-card{grid-column:span 12}.skill-card{grid-column:span 4}.tech-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.tech-box{max-width:760px;margin-top:22px;border:1px solid var(--border);border-radius:16px;background:#0f172a8c}.tech-box summary{cursor:pointer;padding:12px 16px;color:var(--accent);font-weight:700}.tech-box summary:hover{color:#bae6fd}.tech-box .tech-list{padding:0 16px 16px;margin-top:0}.tech{padding:7px 11px;border-radius:999px;background:#38bdf81f;color:#bae6fd;border:1px solid rgba(56,189,248,.25);font-size:.9rem}.button{display:inline-block;margin-top:20px;padding:12px 18px;border-radius:12px;background:var(--accent);color:#082f49;font-weight:700}.button:hover{text-decoration:none;filter:brightness(1.1)}.section-muted{color:var(--muted)}.image-placeholder{border:1px dashed var(--border);border-radius:20px;padding:48px 24px;text-align:center;color:var(--muted);background:#0f172a8c}@media(max-width:800px){.skill-card{grid-column:span 12}.hero{padding:48px 0}}.project-image{width:100%;max-width:900px;display:block;margin:24px auto;border-radius:18px;border:1px solid var(--border);box-shadow:0 20px 50px #00000040}.caption{text-align:center;color:var(--muted);font-size:.9rem}.lang-switch{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.lang-link{padding:8px 12px;border:1px solid var(--border);border-radius:999px;color:var(--muted)}.lang-link.active{color:var(--accent);border-color:var(--accent)}.site-header{position:sticky;top:0;z-index:100;backdrop-filter:blur(18px);background:#0f172ac7;border-bottom:1px solid var(--border)}.navbar{max-width:1100px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-weight:800;color:var(--text);letter-spacing:-.03em}.brand:hover{text-decoration:none;color:var(--accent)}.nav-links{display:flex;gap:18px;align-items:center}.nav-links a{color:var(--muted);font-size:.95rem}.nav-links a:hover{color:var(--text);text-decoration:none}.language-switcher{display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:#111827bf;font-size:.9rem}.language-switcher a{color:var(--muted);font-weight:700}.language-switcher a:hover{color:var(--text);text-decoration:none}.language-switcher a.active{color:var(--accent)}.language-switcher span{color:var(--border)}@media(max-width:720px){.navbar{flex-wrap:wrap}.nav-links{order:3;width:100%;justify-content:center}.brand{font-size:1rem}}.social-button{display:inline-flex;align-items:center;gap:10px;margin-top:20px;padding:12px 18px;border-radius:12px;background:var(--accent);color:#082f49;background-color:#fff;font-weight:700}.social-button:hover{text-decoration:none;filter:brightness(1.1)}.social-icon{width:20px;height:20px;display:block}.cert-card{border:1px solid var(--border);border-radius:18px;padding:28px;background:#0f172a73;display:flex;flex-direction:column;align-items:center;text-align:center}.cert-card h3{margin:0 0 8px}.cert-issuer{margin:0;color:var(--text);font-weight:600}.cert-badge{width:112px;height:112px;object-fit:contain;display:block;margin-bottom:18px}.cert-card .button{margin-top:20px;align-self:center}.cert-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin-top:20px}@media(max-width:720px){.cert-grid{grid-template-columns:1fr}}.project-list-card{display:grid;grid-template-columns:320px 1fr;gap:24px;align-items:stretch;border:1px solid var(--border);border-radius:24px;background:linear-gradient(180deg,#1f2937e6,#111827e6);box-shadow:0 20px 50px #00000040;overflow:hidden;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.project-list-card:hover{transform:translateY(-4px);border-color:#38bdf8a6;box-shadow:0 24px 70px #38bdf81f}.project-image-link{display:block;height:100%;overflow:hidden}.project-card-image{width:100%;height:100%;min-height:260px;object-fit:cover;border-right:1px solid var(--border);transition:transform .2s ease,filter .2s ease}.project-image-link:hover .project-card-image{transform:scale(1.03);filter:brightness(1.08)}.project-title-link{color:var(--text)}.project-title-link:hover{color:var(--accent);text-decoration:none}.project-card-content{padding:26px}.project-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.project-card-header h2{margin:0}@media(max-width:850px){.project-list-card{grid-template-columns:1fr}.project-card-image{height:220px;border-right:0;border-bottom:1px solid var(--border)}.project-card-header{flex-direction:column}}.project-status{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);font-size:.85rem;font-weight:700;color:var(--muted);background:#0f172a8c;white-space:nowrap}.project-status-dot{width:9px;height:9px;border-radius:999px;background:var(--muted)}.project-status-active .project-status-dot{background:#22c55e}.project-status-planned .project-status-dot{background:#f59e0b}.project-status-archived .project-status-dot{background:#94a3b8}.project-list-card-no-image{grid-template-columns:1fr}.project-list-card-no-image .project-card-content{padding:30px}.site-footer{margin-top:72px;border-top:1px solid var(--border);background:#0f172aa6}.footer-inner{max-width:1100px;margin:0 auto;padding:28px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--muted);font-size:.9rem}.footer-inner p{margin:0}.footer-links{display:flex;flex-wrap:wrap;gap:14px}.footer-links a{color:var(--muted)}.footer-links a:hover{color:var(--text);text-decoration:none}@media(max-width:720px){.footer-inner{flex-direction:column;align-items:flex-start}}.legal-content h2{margin-top:32px}.legal-content h2:first-child{margin-top:0}.legal-content p{color:var(--muted)}html{scroll-behavior:smooth}.project-toc{margin:0 0 48px;padding:24px;border:1px solid var(--border);border-radius:22px;background:#0f172a8c}.project-toc h2{margin-top:0;margin-bottom:18px;font-size:1.25rem}.project-toc-list{display:flex;flex-wrap:wrap;gap:12px}.project-toc-list a{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:#111827a6;font-size:.92rem}.project-toc-list a:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.project-section{scroll-margin-top:96px}.project-toc-inline{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:-24px 0 48px;color:var(--muted);font-size:.95rem}.project-toc-inline a{color:var(--muted);font-weight:600}.project-toc-inline a:hover{color:var(--accent);text-decoration:none}.project-toc-inline span{color:var(--border)}.project-toc-collapsible{margin:-16px 0 48px;padding:18px 20px;border-left:3px solid var(--accent);background:#0f172a59;border-radius:0 18px 18px 0}.project-toc-collapsible summary{cursor:pointer;font-weight:800;color:var(--text);list-style:none}.project-toc-collapsible summary::-webkit-details-marker{display:none}.project-toc-collapsible summary:after{content:"−";float:right;color:var(--accent);font-size:1.2rem}.project-toc-collapsible:not([open]) summary:after{content:"+"}.project-toc-collapsible ol{margin:16px 0 0;padding-left:20px}.project-toc-collapsible li{margin:8px 0;color:var(--muted)}.project-toc-collapsible a{color:var(--muted);font-weight:600}.project-toc-collapsible a:hover{color:var(--accent);text-decoration:none}.project-hero-image{width:100%;max-width:980px;display:block;margin:36px 0 0;border-radius:24px;border:1px solid var(--border);box-shadow:0 24px 70px #00000040;object-fit:cover}.construction-banner{display:none;background:linear-gradient(90deg,#f59e0b2e,#38bdf81f);border-bottom:1px solid var(--border)}.construction-banner-inner{max-width:1100px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px}.construction-banner p{margin:0;color:var(--muted);font-size:.92rem}.construction-banner strong{color:var(--text);margin-right:8px}.construction-banner-close{width:30px;height:30px;border:1px solid var(--border);border-radius:999px;background:#0f172abf;color:var(--text);cursor:pointer;font-size:1.2rem;line-height:1}.construction-banner-close:hover{border-color:var(--accent);color:var(--accent)}@media(max-width:720px){.construction-banner-inner{align-items:flex-start}.construction-banner p span{display:block;margin-top:4px}}.education-list{display:flex;flex-direction:column;gap:0}.education-item{display:grid;grid-template-columns:56px 1fr;gap:18px;padding:22px 0;border-bottom:1px solid var(--border)}.education-item:last-child{border-bottom:0;padding-bottom:0}.education-logo{width:56px;height:56px;object-fit:contain;border-radius:10px;background:#ffffff0a}.education-content h3{margin:0 0 4px;font-size:1.15rem}.education-content p{margin:0}.education-period{margin-top:6px!important;color:var(--muted)}@media(max-width:600px){.education-item{grid-template-columns:1fr}.education-logo{width:64px;height:64px}}.education-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:4px}.education-header h3{margin:0}.education-status{display:inline-flex;align-items:center;gap:8px;padding:5px 9px;border-radius:999px;border:1px solid var(--border);background:#0f172a8c;color:var(--muted);font-size:.8rem;font-weight:700;white-space:nowrap}.education-status-dot{width:9px;height:9px;border-radius:999px;background:var(--muted)}.education-status-inProgress .education-status-dot{background:#f59e0b}.education-status-completed .education-status-dot{background:#22c55e}.education-status-interrupted .education-status-dot{background:#ef4444}@media(max-width:720px){.education-header{flex-direction:column;align-items:flex-start}}.cookie-banner{position:fixed;left:24px;right:24px;bottom:24px;z-index:200}.cookie-banner-inner{max-width:1100px;margin:0 auto;padding:18px 20px;border:1px solid var(--border);border-radius:20px;background:#0f172af5;box-shadow:0 24px 70px #00000073;backdrop-filter:blur(18px);display:flex;align-items:center;justify-content:space-between;gap:18px}.cookie-banner strong{color:var(--text)}.cookie-banner p{margin:6px 0 0;color:var(--muted);font-size:.92rem}.cookie-banner-actions{display:flex;gap:10px;flex-shrink:0}.cookie-button{border:0;border-radius:12px;padding:10px 14px;background:var(--accent);color:#082f49;font-weight:800;cursor:pointer}.cookie-button.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.cookie-button:hover{filter:brightness(1.08)}@media(max-width:720px){.cookie-banner{left:12px;right:12px;bottom:12px}.cookie-banner-inner{flex-direction:column;align-items:flex-start}.cookie-banner-actions{width:100%}.cookie-button{flex:1}}.cookie-policy-link{display:inline-block;margin-left:6px;color:var(--accent);font-weight:700}.cookie-policy-link:hover{text-decoration:underline}details.card summary{cursor:pointer;font-weight:700;color:var(--accent);list-style:none}details.card summary::-webkit-details-marker{display:none}details.card summary:before{content:"▸";margin-right:8px;color:var(--accent)}details.card[open] summary:before{content:"▾"}
