.ribbon{overflow-x:clip}:root{color:#20221f;font-synthesis:none;scroll-behavior:smooth;--ink:#20221f;--paper:#f8f5e9;--red:#f07557;--green:#35b27f;--blue:#72a3d6;background:#f8f5e9;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,textarea{font:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:4px;outline:3px solid #e55b39}.skip-link{z-index:10;background:#fff;padding:1rem;position:absolute;top:-5rem;left:1rem}.skip-link:focus{top:1rem}.header{border-bottom:1px solid #20221f;align-items:center;gap:2rem;min-height:96px;padding:12px 5%;display:flex}.brand{letter-spacing:.08em;align-items:center;gap:.5rem;font-size:.75rem;font-weight:900;line-height:1.05;text-decoration:none;display:flex}.brand img{object-fit:contain;width:64px;height:42px}.header nav{align-items:center;gap:2rem;margin-left:auto;font-size:.8rem;font-weight:700;display:flex}.header nav a,.language a{text-decoration:none}.header nav a:hover,.language a:hover{text-decoration:underline}.nav-contact{border:1px solid var(--ink);border-radius:100px;padding:12px 20px}.nav-contact span{margin-left:12px}.language{white-space:nowrap;font-size:.75rem;font-weight:700}.language a[aria-current=page]{text-underline-offset:4px;text-decoration:underline}.section-pad{padding:100px 7%}.hero{grid-template-columns:1fr 1fr;align-items:center;gap:4%;min-height:660px;padding-top:70px;padding-bottom:85px;display:grid;position:relative;overflow:hidden}.eyebrow,.section-top,.project-top,.member-role,.hero-bottom,.art-label,.footer-top,.footer-bottom{letter-spacing:.11em;font-size:.72rem;font-weight:800}.eyebrow{align-items:center;gap:8px;display:flex}.dot{background:var(--red);border-radius:50%;width:10px;height:10px}h1,h2,h3,p{margin-top:0}h1,h2{white-space:pre-line;letter-spacing:-.05em;line-height:1.18}h1{margin:35px 0 24px;font-size:clamp(3.3rem,6.3vw,7rem);font-weight:900}.hero-lead{max-width:440px;font-size:1rem;line-height:1.9}.button{border:2px solid var(--ink);cursor:pointer;border-radius:100px;justify-content:space-between;align-items:center;gap:3rem;padding:16px 22px;font-weight:700;text-decoration:none;transition:transform .2s,background .2s,color .2s;display:inline-flex}.button:hover{background:var(--red);color:var(--ink);transform:translateY(-3px)}.button-dark{background:var(--ink);color:#fff}.hero .button{margin-top:20px}.hero-art{border:2px solid var(--ink);background:#f2eddc;border-radius:40px;height:450px;position:relative;overflow:hidden}.art-grid{background-image:linear-gradient(#20221f18 1px,#0000 1px),linear-gradient(90deg,#20221f18 1px,#0000 1px);background-size:38px 38px;position:absolute;inset:0}.shape{animation:5s ease-in-out infinite float;position:absolute}.circle{background:var(--red);border-radius:50%}.triangle{background:var(--green);clip-path:polygon(50% 0,100% 100%,0 100%)}.hexagon{background:var(--blue);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}.hero-art .circle{aspect-ratio:1;width:34%;top:12%;left:12%}.hero-art .triangle{width:39%;height:41%;animation-delay:-1.5s;top:14%;right:10%}.hero-art .hexagon{aspect-ratio:1;width:36%;animation-delay:-3s;bottom:12%;left:35%}.art-label{line-height:1.5;position:absolute;bottom:20px;left:20px}.art-star{font-size:3rem;position:absolute;bottom:15px;right:20px}.hero-bottom{justify-content:space-between;display:flex;position:absolute;bottom:20px;left:7%;right:7%}.ribbon{z-index:1;height:40px;position:relative}.ribbon div{background:var(--red);border-block:2px solid var(--ink);text-align:center;white-space:nowrap;letter-spacing:.12em;width:104%;padding:14px;font-size:.85rem;font-weight:900;position:absolute;top:-5px;left:-2%;overflow:hidden;transform:rotate(-1.5deg)}.dark{background:var(--ink);color:var(--paper)}.section-top{border-bottom:1px solid;justify-content:space-between;gap:1rem;margin-bottom:65px;padding-bottom:18px;display:flex}.about-grid,.contact-grid{grid-template-columns:1.1fr 1fr;gap:10%;display:grid}h2{margin-bottom:0;font-size:clamp(2.5rem,5vw,5.4rem);font-weight:900}.about-grid p,.contact-grid>div>p{max-width:450px;font-size:1.05rem;line-height:2}.shape-row,.contact-shapes{align-items:center;gap:18px;margin-top:55px;display:flex}.mini-circle,.mini-triangle,.mini-hexagon{width:50px;height:50px;display:block}.mini-circle{background:var(--red);border-radius:50%}.mini-triangle{background:var(--green);clip-path:polygon(50% 0,100% 100%,0 100%)}.mini-hexagon{background:var(--blue);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}.section-heading{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:50px;display:flex}.section-heading p{max-width:350px;margin-bottom:0;line-height:1.8}.project-grid{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.project{border:2px solid var(--ink);border-radius:28px;flex-direction:column;justify-content:space-between;min-height:360px;padding:28px;display:flex}.project-1{background:#efb3a3}.project-2{background:#b8dfcc}.project-3{background:#b6cfe8}.project-4{background:#ece3b5}.project-top{justify-content:space-between;display:flex}.project-symbol{align-self:center;font-size:4rem;line-height:1}.project h3{letter-spacing:-.04em;margin:0 0 8px;font-size:clamp(1.5rem,2.5vw,2.4rem)}.project p{margin-bottom:18px;line-height:1.6}.project-links{flex-wrap:wrap;gap:10px;display:flex}.project-links a{border:1px solid var(--ink);border-radius:99px;padding:8px 13px;font-size:.8rem;font-weight:700;text-decoration:none}.project-links a:hover{background:var(--ink);color:#fff}.member-grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.member-art{border-radius:25px;place-items:center;height:230px;display:grid;position:relative;overflow:hidden}.member-art-1{background:#f5d3c7}.member-art-2{background:#c9e8d8}.member-art-3{background:#c6d9ed}.member-shape{width:115px;height:115px;transition:transform .3s;display:block}.member:hover .member-shape{transform:rotate(12deg)scale(1.08)}.member-number{color:var(--ink);font-size:.75rem;font-weight:800;position:absolute;top:16px;left:18px}.member-role{color:#d4d1c6;margin:24px 0 12px}.member h3{margin-bottom:4px;font-size:1.5rem}.member-roman{color:#d4d1c6;font-size:.8rem}.member-detail{margin:24px 0 8px;font-weight:700;line-height:1.6}.member-skills{color:#d4d1c6;font-size:.85rem;line-height:1.7}.contact{background:#f2e9cf}.contact-grid h2{margin-bottom:30px}.email-link{text-underline-offset:5px;margin-top:20px;font-size:clamp(1.1rem,2vw,1.5rem);font-weight:800;display:inline-block}.contact form{flex-direction:column;gap:10px;display:flex}.contact label{margin-top:12px;font-size:.85rem;font-weight:800}.contact label span{margin-left:8px;font-size:.7rem;font-weight:500}.contact input,.contact textarea{border:2px solid var(--ink);background:var(--paper);width:100%;color:var(--ink);border-radius:12px;padding:14px}.contact textarea{resize:vertical}.contact form .button{align-self:flex-start;margin-top:15px}.footer{padding:40px 7% 28px;overflow:hidden}.footer-top,.footer-bottom{justify-content:space-between;gap:1rem;display:flex}.footer a{text-decoration:none}.footer a:hover{text-decoration:underline}.footer-logo{letter-spacing:-.08em;justify-content:space-between;margin:55px 0 35px;font-size:clamp(4rem,17vw,19rem);font-weight:900;line-height:1;display:flex}.footer-logo span{transition:color .2s,transform .2s}.footer-logo span:hover{color:var(--red);transform:translateY(-8px)}.footer-logo span:nth-child(3n+2):hover{color:var(--green)}.footer-logo span:nth-child(3n):hover{color:var(--blue)}@keyframes float{50%{transform:translateY(-12px)rotate(4deg)}}.circle,.mini-circle{border:8px solid var(--red);background:0 0}.triangle,.mini-triangle{clip-path:none;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M50 8 L92 92 H8 Z' fill='none' stroke='white' stroke-width='10' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/100% 100% no-repeat}.hexagon,.mini-hexagon{clip-path:none;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M27 8 H73 L96 50 L73 92 H27 L4 50 Z' fill='none' stroke='white' stroke-width='8' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/100% 100% no-repeat}.mini-circle{border-width:5px}.project-media{background:#fff;border-radius:16px;justify-content:center;align-items:center;width:fit-content;max-width:100%;margin:24px 0;display:flex;position:relative;overflow:hidden}.project-image{width:auto;max-width:100%;height:auto;max-height:320px;display:block}.project-logo{object-fit:contain;background:#fff;border-radius:12px;width:64px;height:64px;padding:5px;position:absolute;bottom:12px;left:12px}.project-media-logo-only{width:100%;padding:24px}.project-media-logo-only .project-logo{width:auto;max-width:70%;height:auto;max-height:160px;padding:0;position:static}.project-media picture{display:contents}.contact input[type=hidden]{display:none}.form-status{min-height:1.6em;margin:0;line-height:1.6}.contact button:disabled{opacity:.6;cursor:wait}.project-5{background:#e5c8d7}.footer-logo span{color:#62635d}@media (width<=800px){.header{flex-wrap:wrap;gap:12px;padding:12px 5%}.header nav{order:3;justify-content:space-between;gap:8px;width:100%;font-size:.7rem}.nav-contact{padding:7px 10px}.language{margin-left:auto}.section-pad{padding:75px 6%}.hero{grid-template-columns:1fr;gap:45px;padding-bottom:80px}.hero-art{height:350px}.hero-bottom{left:6%;right:6%}.about-grid,.contact-grid{grid-template-columns:1fr;gap:35px}.section-heading{display:block}.section-heading p{margin-top:20px}.member-grid{grid-template-columns:1fr;gap:35px}.member-art{height:220px}.member-detail{margin-top:14px}.contact-shapes{margin-top:30px}.footer-logo{margin:45px 0 30px}}@media (width<=500px){.header nav{flex-wrap:wrap;justify-content:flex-start;column-gap:18px}.hero-art{height:280px}.project-grid{grid-template-columns:1fr}.project{min-height:300px}.section-top{margin-bottom:45px}.footer-top,.footer-bottom{font-size:.62rem}.footer-logo{font-size:17vw}}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.work-project{border-top:1px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:6%;display:grid}.project-media .jphacks-logo{background:#20221f}.project-logo-placeholder{letter-spacing:.1em;font-size:2rem;font-weight:900}.work-project:last-child{border-bottom:1px solid var(--ink)}.work-summary{min-width:0;padding:32px 0 45px}.work-summary h3{letter-spacing:-.04em;margin:0 0 8px;font-size:clamp(1.5rem,2.5vw,2.4rem)}.work-summary p{line-height:1.7}.work-summary .project-media{border:1px solid #20221f30}.work-graph{--branch-color:#b34630;min-width:0;padding:24px 0 30px;position:relative}.work-project:nth-child(2) .work-graph{--branch-color:#34785d}.work-project:nth-child(3) .work-graph{--branch-color:#446fa1}.work-project:nth-child(4) .work-graph{--branch-color:#9a6221}.work-project:nth-child(5) .work-graph{--branch-color:#80539a}.work-project:nth-child(6) .work-graph{--branch-color:#187b83}.work-graph:before{content:"";background:var(--ink);width:3px;position:absolute;top:0;bottom:0;left:19px}.commit-list{margin:0;padding:0;list-style:none}.commit{min-height:40px;padding:0 0 18px 80px;position:relative}.commit:after{content:"";background:var(--branch-color);width:3px;position:absolute;top:0;bottom:0;left:59px}.commit:first-child:after{top:10px}.commit-release:first-child:after{top:30px}.commit:before{content:"";box-sizing:border-box;border:2px solid var(--branch-color);background:var(--paper);z-index:1;border-radius:50%;width:13px;height:13px;position:absolute;top:4px;left:54px}.commit-release:before{border-color:var(--ink);background:var(--paper);left:14px}.graph-curve{fill:none;width:40px;height:20px;stroke:var(--branch-color);stroke-width:3px;position:absolute;left:20px;overflow:visible}.graph-merge{top:10px}.graph-fork{height:20px;position:relative}.graph-fork .graph-curve{top:0}.commit-content{overflow-wrap:anywhere;flex-wrap:wrap;align-items:baseline;gap:4px 9px;font-size:.9rem;line-height:1.5;display:flex}.commit-content strong,.commit-content time{font-size:.75rem;font-weight:800}.commit-content time{font-variant-numeric:tabular-nums}.branch-label,.main-label{border:1px solid var(--branch-color);color:var(--branch-color);border-radius:4px;padding:1px 5px;font-size:.7rem;font-weight:800;line-height:1.4}.main-label{border-color:var(--ink);color:var(--ink)}.graph-status{color:#555;font-size:.75rem;font-weight:700}.commit-tech{flex-wrap:wrap;gap:6px;width:100%;margin:0;padding:5px 0 0;list-style:none;display:flex}.commit-tech li{border:1px solid #20221f40;border-radius:99px;align-items:center;gap:4px;padding:3px 7px;font-size:.7rem;display:inline-flex}.commit-tech img{object-fit:contain;width:14px;height:14px}.people .member-role,.people .member-roman,.people .member-skills{color:#53554f}.member-education a{min-height:24px;line-height:24px;display:inline-block}.member-tech li{border-color:#777970}.member-research{overflow-wrap:anywhere;margin:16px 0 0;font-size:.85rem;line-height:1.7}.member-research a{text-underline-offset:3px}.work .work-project,.work .work-project:last-child{border-color:#777970}.work .project-links a{border-color:var(--paper)}.work .project-links a:hover{background:var(--paper);color:var(--ink)}.work .work-graph{--branch-color:#f07557}.work .work-project:nth-child(2) .work-graph{--branch-color:#71d7a8}.work .work-project:nth-child(3) .work-graph{--branch-color:#8cbdf0}.work .work-project:nth-child(4) .work-graph{--branch-color:#eab56f}.work .work-project:nth-child(5) .work-graph{--branch-color:#c9a3e0}.work .work-project:nth-child(6) .work-graph{--branch-color:#7ad6d9}.work .work-graph:before{background:var(--paper)}.work .commit:before{background:var(--ink)}.work .commit-release:before,.work .main-label{border-color:var(--paper);color:var(--paper)}.work .commit-tech li{border-color:#777970}.work .commit-tech img{filter:invert()}@media (width<=700px){.work-project{grid-template-columns:1fr;gap:0}.work-summary{padding-bottom:10px}.work-graph{padding-top:20px}.commit-content{font-size:.85rem}}
