@import "https://fonts.googleapis.com/css2?family=Caveat:wght@500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap";
@import "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css";
*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}:root{--bg-page:#fff;--bg-soft:#f4faf7;--bg-hero:#e8f5ee;--ink:#0e1849;--ink-soft:#2a3268;--muted:#6b7290;--muted-2:#9499ac;--accent:#8b7bff;--accent-deep:#6b5ce7;--accent-soft:#c5bdff;--accent-bg:#f1efff;--orange:#f4a261;--green:#2d8b3f;--rule:#e5e7ee;--shadow-sm:0 4px 14px -6px #0e18491a;--shadow-md:0 12px 28px -10px #0e184929;--font:"Plus Jakarta Sans", system-ui, sans-serif;--script:"Caveat", cursive;--mono:"JetBrains Mono", monospace;--side:280px}body{background:var(--bg-page);color:var(--ink);font-family:var(--font);line-height:1.5;overflow-x:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}ul{list-style:none}.app{grid-template-columns:var(--side) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--bg-page);border-right:1px solid var(--rule);z-index:10;flex-direction:column;align-items:center;height:100vh;padding:36px 24px 28px;display:flex;position:sticky;top:0}.brand{text-align:center;margin-bottom:48px;position:relative}.avatar{border:2px solid var(--accent);background:var(--bg-page);border-radius:50%;place-items:center;width:110px;height:110px;margin:0 auto 18px;padding:4px;display:grid;overflow:hidden}.avatar svg{border-radius:50%;width:100%;height:100%;display:block}.brand-name{color:var(--ink);letter-spacing:-.01em;z-index:2;font-size:18px;font-weight:700;position:relative}.brand-role{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);z-index:2;margin-top:6px;font-size:10px;position:relative}.brand-script{font-family:var(--script);color:var(--rule);z-index:1;white-space:nowrap;pointer-events:none;font-size:30px;line-height:1;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.nav{flex-direction:column;gap:2px;width:100%;margin-bottom:auto;display:flex}.nav a{text-align:center;color:var(--muted);padding:11px 0;font-size:14.5px;font-weight:500;transition:color .25s;display:block;position:relative}.nav a:hover,.nav a.active{color:var(--accent);font-weight:600}.nav a.active:before{content:"";background:var(--accent);border-radius:2px;width:18px;height:2px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.socials{gap:12px;margin-bottom:24px;display:flex}.socials a{width:38px;height:38px;color:var(--ink);background:#eef0f7;border-radius:50%;place-items:center;font-size:14px;transition:all .25s;display:grid}.socials a:hover{background:var(--accent);color:#fff;transform:translateY(-2px)}.copyright{color:var(--muted);text-align:center;font-size:11.5px;line-height:1.5}main{padding:24px}.hero{background:var(--bg-hero);border-radius:20px;grid-template-columns:1.1fr 1fr;align-items:center;gap:48px;min-height:calc(100vh - 48px);padding:80px 64px;display:grid;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;background-image:radial-gradient(circle at 1px 1px,#0e18490a 1px,#0000 0);background-size:24px 24px;position:absolute;inset:0}.hero-text{z-index:2;position:relative}.hero h1{letter-spacing:-.025em;color:var(--ink);margin-bottom:28px;font-size:clamp(36px,4.5vw,60px);font-weight:800;line-height:1.08}.hero h1 .accent{color:var(--accent);position:relative}.hero h1 .accent:after{content:"";background:var(--accent-soft);z-index:-1;opacity:.5;border-radius:2px;height:8px;position:absolute;bottom:4px;left:0;right:0}.hero-sub{color:var(--muted);max-width:460px;margin-bottom:40px;font-size:17px;line-height:1.7}.hero-sub strong{color:var(--accent-deep);font-weight:600}.cta-row{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:56px;display:flex}.btn{border:1.5px solid #0000;border-radius:12px;align-items:center;gap:8px;padding:16px 30px;font-size:15px;font-weight:600;transition:all .25s;display:inline-flex}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover{background:var(--accent-deep);transform:translateY(-2px);box-shadow:0 12px 24px -8px #6b5ce780}.btn-ghost{color:var(--ink);border-color:var(--ink-soft);background:0 0}.btn-ghost:hover{background:var(--ink);color:#fff}.dot-deco{background:var(--accent);border:2px solid var(--bg-hero);width:16px;height:16px;box-shadow:0 0 0 1.5px var(--accent);border-radius:50%;margin-left:8px}.contact-info{border-left:3px solid var(--orange);flex-direction:column;gap:10px;padding-left:20px;display:flex}.contact-info p{color:var(--ink);font-size:15px;font-weight:500}.contact-info a:hover{color:var(--accent-deep)}.contact-info i{color:var(--accent-deep);margin-right:8px;font-size:13px}.hero-visual{z-index:2;place-items:center;height:100%;min-height:480px;display:grid;position:relative}.visual-wrap{aspect-ratio:1;width:100%;max-width:460px;position:relative}.shape{position:absolute;inset:0}.shape svg{width:100%;height:100%;display:block}.portrait{z-index:2;background:linear-gradient(#d9deea 0%,#b8c0d5 100%);border-radius:50%;place-items:end center;display:grid;position:absolute;inset:6%;overflow:hidden}.portrait svg{width:92%;height:92%;margin-top:8%;display:block}.deco{pointer-events:none;z-index:3;color:var(--ink);font-weight:400;position:absolute}.deco-1{font-size:28px;animation:3s ease-in-out infinite twinkle;top:6%;right:8%}.deco-2{font-size:22px;animation:3s ease-in-out .8s infinite twinkle;top:22%;right:-2%}.deco-3{font-size:30px;animation:3s ease-in-out 1.4s infinite twinkle;bottom:12%;right:-4%}.deco-4{font-size:18px;animation:3s ease-in-out 2s infinite twinkle;bottom:4%;left:6%}@keyframes twinkle{0%,to{opacity:.85;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.swoosh{z-index:3;width:70px;animation:4s ease-in-out infinite float;position:absolute;top:14%;right:4%}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.page-section{padding:96px 64px;position:relative}.page-section.alt{background:var(--bg-soft);border-radius:20px;margin-top:24px}.section-head{text-align:center;max-width:720px;margin:0 auto 64px}.section-eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--accent-deep);background:var(--accent-bg);border-radius:999px;align-items:center;gap:10px;margin-bottom:20px;padding:8px 16px;font-size:11px;display:inline-flex}.section-eyebrow .num{color:var(--accent);font-weight:600}.section-title{letter-spacing:-.025em;color:var(--ink);margin-bottom:16px;font-size:clamp(30px,3.6vw,44px);font-weight:800;line-height:1.15}.section-title .script{font-family:var(--script);color:var(--accent);font-style:italic;font-weight:600}.section-sub{color:var(--muted);font-size:17px;line-height:1.7}.about-grid{grid-template-columns:1.2fr 1fr;align-items:start;gap:64px;max-width:1100px;margin:0 auto;display:grid}.about-text p{color:var(--ink-soft);margin-bottom:18px;font-size:16.5px;line-height:1.75}.about-text p:last-of-type{margin-bottom:28px}.about-text strong{color:var(--accent-deep);font-weight:600}.quick-facts{border-top:1px solid var(--rule);grid-template-columns:repeat(2,1fr);gap:16px;padding-top:24px;display:grid}.fact .num{color:var(--ink);letter-spacing:-.02em;font-size:28px;font-weight:800}.fact .num span{color:var(--accent)}.fact .label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-top:4px;font-size:11px}.skills-card{border:1px solid var(--rule);box-shadow:var(--shadow-sm);background:#fff;border-radius:16px;padding:28px}.skills-card+.skills-card{margin-top:16px}.skills-card h4{color:var(--ink);align-items:center;gap:10px;margin-bottom:16px;font-size:15px;font-weight:700;display:flex}.skills-card h4 i{background:var(--accent-bg);width:32px;height:32px;color:var(--accent-deep);border-radius:8px;place-items:center;font-size:13px;display:grid}.skill-tags{flex-wrap:wrap;gap:6px;display:flex}.skill-tags li{font-family:var(--mono);color:var(--ink-soft);background:#f5f6fa;border-radius:6px;padding:6px 11px;font-size:12px;transition:all .2s}.skill-tags li:hover{background:var(--accent);color:#fff}.what-grid{grid-template-columns:repeat(3,1fr);gap:20px;max-width:1100px;margin-top:64px;margin-left:auto;margin-right:auto;display:grid}.what-card{border:1px solid var(--rule);background:#fff;border-radius:16px;padding:32px 28px;transition:all .3s}.what-card:hover{box-shadow:var(--shadow-md);border-color:var(--accent-soft);transform:translateY(-4px)}.what-icon{background:var(--accent-bg);width:52px;height:52px;color:var(--accent-deep);border-radius:14px;place-items:center;margin-bottom:20px;font-size:20px;display:grid}.what-card:nth-child(2) .what-icon{color:var(--orange);background:#fff1e5}.what-card:nth-child(3) .what-icon{color:var(--green);background:#e5f6e9}.what-card h4{color:var(--ink);margin-bottom:10px;font-size:18px;font-weight:700}.what-card p{color:var(--muted);font-size:14.5px;line-height:1.65}.timeline{max-width:820px;margin:0 auto;padding-left:36px;position:relative}.timeline:before{content:"";background:linear-gradient(180deg, var(--accent), var(--accent-soft) 80%, transparent);width:2px;position:absolute;top:8px;bottom:8px;left:11px}.tl-item{padding-bottom:36px;position:relative}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";background:var(--bg-page);border:3px solid var(--accent);width:14px;height:14px;box-shadow:0 0 0 4px var(--accent-bg);border-radius:50%;position:absolute;top:6px;left:-32px}.tl-card{border:1px solid var(--rule);background:#fff;border-radius:14px;padding:22px 26px;transition:all .25s}.tl-card:hover{border-color:var(--accent-soft);box-shadow:var(--shadow-sm);transform:translate(4px)}.tl-meta{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;display:flex}.tl-period{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--accent-deep);background:var(--accent-bg);border-radius:999px;padding:5px 10px;font-size:11px}.tl-type{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:10.5px}.tl-role{color:var(--ink);margin-bottom:4px;font-size:18px;font-weight:700}.tl-org{color:var(--muted);margin-bottom:12px;font-size:14px}.tl-org .dot{color:var(--accent);margin:0 6px}.tl-desc{color:var(--ink-soft);margin-bottom:12px;font-size:14.5px;line-height:1.65}.tl-stack{flex-wrap:wrap;gap:6px;display:flex}.tl-stack span{font-family:var(--mono);color:var(--muted);border:1px solid var(--rule);border-radius:5px;padding:3px 8px;font-size:11px}.areas-grid{grid-template-columns:repeat(3,1fr);gap:20px;max-width:1100px;margin:0 auto 64px;display:grid}.area-card{border:1px solid var(--rule);background:#fff;border-radius:14px;padding:24px;transition:all .25s}.area-card:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.area-card .icon{margin-bottom:14px;font-size:22px}.area-card h4{color:var(--ink);margin-bottom:8px;font-size:16px;font-weight:700}.area-card p{color:var(--muted);font-size:14px;line-height:1.6}.pubs-title{text-align:center;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin-bottom:32px;font-size:14px;font-weight:600;position:relative}.pubs-title:before,.pubs-title:after{content:"";background:var(--rule);width:60px;height:1px;position:absolute;top:50%}.pubs-title:before{right:calc(50% + 130px)}.pubs-title:after{left:calc(50% + 130px)}.pub-list{flex-direction:column;gap:18px;max-width:880px;margin:0 auto;display:flex}.pub{border:1px solid var(--rule);background:#fff;border-radius:14px;grid-template-columns:76px 1fr;gap:20px;padding:24px 28px;transition:all .25s;display:grid}.pub:hover{border-color:var(--accent-soft);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.pub-year{font-family:var(--mono);color:var(--accent-deep);background:var(--accent-bg);text-align:center;border-radius:6px;height:fit-content;padding:6px 10px;font-size:13px;font-weight:600}.pub-venue{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:6px;font-size:11px}.pub-venue .star{color:var(--orange);margin-right:4px}.pub-name{color:var(--ink);margin-bottom:8px;font-size:17px;font-weight:700;line-height:1.3}.pub-name a:hover{color:var(--accent-deep)}.pub-authors{color:var(--muted);margin-bottom:12px;font-size:13.5px;font-style:italic}.pub-authors .self{color:var(--ink);font-style:normal;font-weight:600}.pub-links{flex-wrap:wrap;gap:14px;display:flex}.pub-links a{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);border:1px solid var(--rule);border-radius:6px;padding:5px 10px;font-size:11px;transition:all .2s}.pub-links a:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}.pub-links a i{margin-right:4px}.projects-grid{grid-template-columns:repeat(2,1fr);gap:24px;max-width:1100px;margin:0 auto;display:grid}.project{border:1px solid var(--rule);background:#fff;border-radius:16px;flex-direction:column;transition:all .3s;display:flex;overflow:hidden}.project:hover{box-shadow:var(--shadow-md);border-color:var(--accent-soft);transform:translateY(-6px)}.project-image{background:linear-gradient(135deg, var(--accent-bg), var(--bg-hero));place-items:center;height:180px;display:grid;position:relative;overflow:hidden}.project:nth-child(2) .project-image{background:linear-gradient(135deg,#fff1e5,#fbebda)}.project:nth-child(3) .project-image{background:linear-gradient(135deg,#e5f6e9,#dcf1e2)}.project:nth-child(4) .project-image{background:linear-gradient(135deg,#ffe5ec,#f5dde2)}.project:nth-child(5) .project-image{background:linear-gradient(135deg,#e5eeff,#d9e4fa)}.project:nth-child(6) .project-image{background:linear-gradient(135deg,#fff7cc,#f5ebb3)}.project-icon{color:var(--ink);opacity:.65;font-size:56px}.project-image:after{content:"";background-image:radial-gradient(circle at 1px 1px,#0e18490d 1px,#0000 0);background-size:14px 14px;position:absolute;inset:0}.project-body{flex-direction:column;flex:1;padding:24px;display:flex}.project-tag{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--accent-deep);margin-bottom:8px;font-size:10.5px}.project h4{color:var(--ink);margin-bottom:10px;font-size:19px;font-weight:700}.project p{color:var(--muted);flex:1;margin-bottom:16px;font-size:14.5px;line-height:1.6}.project-stack{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.project-stack span{font-family:var(--mono);color:var(--muted);background:#f5f6fa;border-radius:5px;padding:3px 8px;font-size:11px}.project-links{border-top:1px dashed var(--rule);gap:12px;padding-top:14px;display:flex}.project-links a{color:var(--ink);align-items:center;gap:6px;font-size:13px;font-weight:600;transition:color .2s;display:inline-flex}.project-links a:hover{color:var(--accent-deep)}.blog-grid{grid-template-columns:repeat(3,1fr);gap:22px;max-width:1180px;margin:0 auto;display:grid}.post{border:1px solid var(--rule);cursor:pointer;background:#fff;border-radius:16px;transition:all .3s;overflow:hidden}.post:hover{box-shadow:var(--shadow-md);border-color:var(--accent-soft);transform:translateY(-4px)}.post-cover{background:linear-gradient(135deg, var(--accent-bg), var(--bg-hero));place-items:center;height:160px;display:grid;position:relative}.post:nth-child(2) .post-cover{background:linear-gradient(135deg,#fff1e5,#fbebda)}.post:nth-child(3) .post-cover{background:linear-gradient(135deg,#e5f6e9,#dcf1e2)}.post:nth-child(4) .post-cover{background:linear-gradient(135deg,#e5eeff,#d9e4fa)}.post:nth-child(5) .post-cover{background:linear-gradient(135deg,#ffe5ec,#f5dde2)}.post:nth-child(6) .post-cover{background:linear-gradient(135deg,#fff7cc,#f5ebb3)}.post-cover i{color:var(--ink);opacity:.6;font-size:40px}.post-body{padding:20px 22px 22px}.post-meta{align-items:center;gap:12px;margin-bottom:10px;display:flex}.post-cat{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--accent-deep);background:var(--accent-bg);border-radius:4px;padding:4px 8px;font-size:10px;font-weight:600}.post-date{font-family:var(--mono);color:var(--muted);font-size:11px}.post h4{color:var(--ink);margin-bottom:8px;font-size:17px;font-weight:700;line-height:1.3;transition:color .2s}.post:hover h4{color:var(--accent-deep)}.post p{color:var(--muted);margin-bottom:12px;font-size:13.5px;line-height:1.55}.post-read{color:var(--ink);align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:inline-flex}.post:hover .post-read{color:var(--accent-deep)}.post:hover .post-read i{transform:translate(3px)}.post-read i{transition:transform .2s}.contact-wrap{grid-template-columns:1fr 1.2fr;align-items:start;gap:56px;max-width:1080px;margin:0 auto;display:grid}.contact-cards{flex-direction:column;gap:14px;display:flex}.c-card{border:1px solid var(--rule);background:#fff;border-radius:14px;align-items:center;gap:16px;padding:20px 22px;transition:all .25s;display:flex}.c-card:hover{border-color:var(--accent-soft);box-shadow:var(--shadow-sm)}.c-icon{background:var(--accent-bg);width:44px;height:44px;color:var(--accent-deep);border-radius:12px;flex-shrink:0;place-items:center;font-size:16px;display:grid}.c-card:nth-child(2) .c-icon{color:var(--orange);background:#fff1e5}.c-card:nth-child(3) .c-icon{color:var(--green);background:#e5f6e9}.c-card .label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-size:10.5px}.c-card .value{color:var(--ink);margin-top:2px;font-size:14.5px;font-weight:600}.c-card .value a:hover{color:var(--accent-deep)}.availability{border:1px solid var(--rule);background:#fff;border-radius:14px;align-items:center;gap:12px;padding:18px 22px;display:flex}.av-dot{background:var(--green);border-radius:50%;width:10px;height:10px;animation:2.4s ease-in-out infinite pulse;box-shadow:0 0 0 4px #2d8b3f2e}@keyframes pulse{0%,to{box-shadow:0 0 0 4px #2d8b3f2e}50%{box-shadow:0 0 0 7px #2d8b3f1a}}.availability span{color:var(--ink);font-size:14px;font-weight:500}.contact-form{border:1px solid var(--rule);box-shadow:var(--shadow-sm);background:#fff;border-radius:20px;padding:36px}.form-row{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;display:grid}.field{margin-bottom:16px}.field label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-bottom:8px;font-size:10.5px;display:block}.field input,.field textarea,.field select{border:1.5px solid var(--rule);background:var(--bg-soft);width:100%;color:var(--ink);border-radius:10px;outline:none;padding:14px 16px;font-family:inherit;font-size:14.5px;transition:all .2s}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-bg);background:#fff}.field textarea{resize:vertical;min-height:130px;font-family:inherit}.form-submit{background:var(--ink);color:#fff;border-radius:12px;justify-content:center;align-items:center;gap:10px;width:100%;padding:16px;font-size:15px;font-weight:600;transition:all .25s;display:inline-flex}.form-submit:hover{background:var(--accent-deep);transform:translateY(-2px);box-shadow:0 12px 24px -8px #6b5ce766}.footer{background:var(--ink);color:#fff;border-radius:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:24px;padding:36px 64px;display:flex}.footer-brand{font-family:var(--script);color:#fff;font-size:28px}.footer-meta{color:var(--accent-soft);align-items:center;gap:16px;font-size:13px;display:flex}.footer-meta i{color:var(--orange)}.footer-socials{gap:12px;display:flex}.footer-socials a{color:#fff;background:#ffffff14;border-radius:50%;place-items:center;width:38px;height:38px;font-size:14px;transition:all .2s;display:grid}.footer-socials a:hover{background:var(--accent);transform:translateY(-2px)}.mobile-bar{z-index:50;background:var(--bg-page);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;padding:16px 20px;display:none;position:sticky;top:0}.mobile-brand{align-items:center;gap:10px;font-size:16px;font-weight:700;display:flex}.mobile-avatar{border:2px solid var(--accent);border-radius:50%;width:36px;height:36px;padding:2px;overflow:hidden}.mobile-avatar svg{border-radius:50%;width:100%;height:100%}.menu-btn{background:var(--ink);color:#fff;border-radius:10px;place-items:center;width:44px;height:44px;font-size:18px;display:grid}.drawer{background:var(--bg-page);z-index:100;flex-direction:column;align-items:center;padding:24px;transition:transform .35s cubic-bezier(.7,.05,.3,1);display:flex;position:fixed;inset:0;transform:translate(100%)}.drawer.open{transform:translate(0)}.drawer-close{background:var(--ink);color:#fff;border-radius:10px;align-self:flex-end;width:44px;height:44px;font-size:18px}.drawer .nav{margin-top:32px}.drawer .nav a{padding:14px 0;font-size:22px}@media (max-width:1100px){.hero{gap:32px;padding:56px 40px}.page-section{padding:80px 40px}.about-grid{grid-template-columns:1fr;gap:40px}.what-grid{grid-template-columns:1fr}.areas-grid,.blog-grid{grid-template-columns:repeat(2,1fr)}.contact-wrap{grid-template-columns:1fr;gap:32px}.footer{padding:28px 40px}}@media (max-width:880px){.app{grid-template-columns:1fr}.sidebar{display:none}.mobile-bar{display:flex}main{padding:16px}.hero{grid-template-columns:1fr;min-height:auto;padding:40px 28px}.hero-visual{order:-1;min-height:320px}.visual-wrap{max-width:320px}.hero h1{font-size:clamp(30px,7vw,42px)}.hero-sub{font-size:16px}.btn{padding:14px 24px;font-size:14px}.cta-row{margin-bottom:40px}.page-section{padding:64px 24px}.page-section.alt{border-radius:16px}.section-head{margin-bottom:40px}.section-title{font-size:28px}.quick-facts{grid-template-columns:1fr 1fr}.timeline{padding-left:28px}.areas-grid,.projects-grid,.blog-grid{grid-template-columns:1fr}.pubs-title:before,.pubs-title:after{display:none}.pub{grid-template-columns:1fr;gap:12px}.pub-year{width:fit-content}.form-row{grid-template-columns:1fr}.contact-form{padding:24px}.footer{text-align:center;flex-direction:column;padding:24px}}@media (max-width:480px){.hero{padding:32px 20px}.cta-row{gap:10px}.btn{flex:1;justify-content:center;min-width:140px}.dot-deco{display:none}}.reveal{opacity:0;transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transform:translateY(20px)}.reveal.in{opacity:1;transform:none}.reveal.d1{transition-delay:.1s}.reveal.d2{transition-delay:.2s}.reveal.d3{transition-delay:.3s}.reveal.d4{transition-delay:.4s}.chat-widget{z-index:1000;font-family:var(--font);position:fixed;bottom:24px;right:24px}.chat-toggle{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#fff;cursor:pointer;border-radius:50%;place-items:center;width:62px;height:62px;font-size:22px;transition:all .3s cubic-bezier(.2,.7,.2,1);display:grid;position:relative;box-shadow:0 12px 28px -8px #6b5ce78c}.chat-toggle:hover{transform:translateY(-3px)scale(1.05);box-shadow:0 18px 36px -10px #6b5ce7b3}.chat-toggle .icon-close,.chat-toggle.active .icon-open{display:none}.chat-toggle.active .icon-close{display:inline-block}.chat-toggle.active{background:var(--ink);transform:rotate(90deg)}.chat-badge{background:var(--orange);color:#fff;border:2px solid var(--bg-page);border-radius:50%;place-items:center;width:22px;height:22px;font-size:11px;font-weight:700;animation:2s ease-in-out infinite chatBounce;display:grid;position:absolute;top:-2px;right:-2px}.chat-toggle.active .chat-badge{display:none}@keyframes chatBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.chat-window{opacity:0;visibility:hidden;transform-origin:100% 100%;border:1px solid var(--rule);background:#fff;border-radius:20px;flex-direction:column;width:380px;height:560px;transition:all .3s cubic-bezier(.2,.7,.2,1);display:flex;position:absolute;bottom:78px;right:0;overflow:hidden;transform:translateY(20px)scale(.96);box-shadow:0 20px 50px -15px #0e18494d}.chat-window.open{opacity:1;visibility:visible;transform:none}.chat-header{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#fff;flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.chat-header-info{align-items:center;gap:12px;display:flex}.chat-avatar{background:#fff3;border:2px solid #ffffff59;border-radius:50%;place-items:center;width:40px;height:40px;display:grid;overflow:hidden}.chat-avatar img,.chat-avatar svg{object-fit:cover;width:100%;height:100%;display:block}.chat-title{font-size:15px;font-weight:700;line-height:1.2}.chat-status{opacity:.9;align-items:center;gap:6px;margin-top:3px;font-size:11px;display:flex}.chat-status .dot{background:#4ade80;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #4ade804d}.chat-close{color:#fff;cursor:pointer;background:#ffffff26;border-radius:50%;place-items:center;width:32px;height:32px;font-size:13px;transition:background .2s;display:grid}.chat-close:hover{background:#ffffff47}.chat-messages{background:var(--bg-soft);flex-direction:column;flex:1;gap:12px;padding:20px;display:flex;overflow-y:auto}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:0 0}.chat-messages::-webkit-scrollbar-thumb{background:var(--rule);border-radius:3px}.msg{word-wrap:break-word;max-width:84%;font-size:13.5px;line-height:1.55;animation:.3s ease-out msgIn}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.msg.bot{color:var(--ink);border:1px solid var(--rule);background:#fff;border-radius:14px 14px 14px 4px;align-self:flex-start;padding:12px 14px;box-shadow:0 2px 6px -3px #0e18490f}.msg.user{background:var(--ink);color:#fff;border-radius:14px 14px 4px;align-self:flex-end;padding:12px 14px}.msg strong{color:var(--accent-deep);font-weight:600}.msg.user strong{color:var(--accent-soft)}.msg a{color:var(--accent-deep);text-decoration:underline}.msg.user a{color:#fff}.msg ul{margin:6px 0;padding-left:18px;list-style:outside}.msg li{margin-bottom:4px}.typing-bubble{border:1px solid var(--rule);background:#fff;border-radius:14px 14px 14px 4px;align-self:flex-start;gap:4px;padding:14px;display:flex}.typing-bubble span{background:var(--muted);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite typing}.typing-bubble span:nth-child(2){animation-delay:.2s}.typing-bubble span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.chat-suggestions{border-top:1px solid var(--rule);background:#fff;flex-wrap:wrap;flex-shrink:0;gap:6px;padding:10px 14px 0;display:flex}.suggestion{background:var(--accent-bg);color:var(--accent-deep);cursor:pointer;border:none;border-radius:999px;padding:6px 11px;font-family:inherit;font-size:11.5px;font-weight:500;transition:all .2s}.suggestion:hover{background:var(--accent);color:#fff}.chat-input-row{background:#fff;flex-shrink:0;gap:8px;padding:12px 14px 14px;display:flex}.chat-input-row input{border:1.5px solid var(--rule);color:var(--ink);background:var(--bg-soft);border-radius:999px;outline:none;flex:1;padding:11px 16px;font-family:inherit;font-size:13.5px;transition:border .2s}.chat-input-row input:focus{border-color:var(--accent);background:#fff}.chat-send{background:var(--accent-deep);color:#fff;cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;width:40px;height:40px;font-size:13px;transition:all .2s;display:grid}.chat-send:hover{background:var(--ink);transform:rotate(-15deg)}.chat-send:disabled{opacity:.4;cursor:not-allowed}.chat-foot{text-align:center;color:var(--muted-2);font-size:10px;font-family:var(--mono);letter-spacing:.06em;background:#fff;padding:0 14px 10px}.chat-foot strong{color:var(--accent-deep);font-weight:600}@media (max-width:480px){.chat-widget{bottom:16px;right:16px}.chat-window{width:auto;height:calc(100vh - 120px);max-height:600px;position:fixed;bottom:84px;left:16px;right:16px}}
