*{margin:0;padding:0}html{color-scheme:light}html,body{font-family:'Shippori Mincho', Georgia, serif;font-size:1.1rem;height:100%;background:#f8f4ef;color:#111}body{display:flex;flex-direction:column;animation:pageFadeIn 0.6s ease-in-out}@keyframes pageFadeIn{from{opacity:0}to{opacity:1}}.wrap{flex:1 0 auto;width:92%;margin:0 auto;margin-top:3em}@media only screen and (min-width: 720px){.wrap{width:720px}}a{color:#111;text-decoration:none;transition:opacity 0.2s}a:visited,a:hover,a:active{text-decoration:none}a:hover{opacity:0.5}::selection{background-color:#111;color:#fff}::-moz-selection{background-color:#111;color:#fff}.tex sub,.latex sub,.latex sup{text-transform:uppercase}.tex sub,.latex sub{vertical-align:0.1ex;margin-left:-0.1667em;margin-right:-0.125em}.tex,.latex,.tex sub,.latex sub{font-size:1em}.latex sup{font-size:0.85em;vertical-align:-0.15em;margin-left:-0.3em;margin-right:-0.15em}.nav{position:sticky;top:0;z-index:100;background:#f8f4ef;padding:1em 0;transition:opacity 0.4s ease}.nav--hidden{opacity:0;pointer-events:none}.nav__inner{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:2em}.nav__tab{font-family:'Shippori Mincho', Georgia, serif;font-size:1rem;font-style:italic;color:#999;letter-spacing:0.01em;padding:0;border:none;border-radius:0;transition:color 0.2s}.nav__tab:hover{color:#111;opacity:1}.nav__tab--active{color:#111 !important;font-style:italic;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.under-construction{text-align:center;padding:5em 1em}.under-construction__icon{font-size:2rem;color:#ccc;margin-bottom:0.8em;display:block}.under-construction__title{font-family:'Shippori Mincho', Georgia, serif;font-weight:400;font-size:1.8rem;color:#333;margin-bottom:0.3em}.under-construction__subtitle{font-family:'Shippori Mincho', Georgia, serif;font-style:italic;font-size:1.05rem;color:#666;margin-bottom:1.2em}.under-construction__message{font-family:'Shippori Mincho', Georgia, serif;font-style:italic;font-size:1rem;color:#999;line-height:1.8}.page-content{padding:2em 0 4em}.page-content__title{font-family:'Shippori Mincho', Georgia, serif;font-weight:400;font-size:1.8rem;color:#111;margin-bottom:1.5em;padding-bottom:0.5em;border-bottom:1px solid #e8e8e8}.page-content__body{font-size:1rem;line-height:1.8;color:#333}.page-content__body h2{font-family:'Shippori Mincho', Georgia, serif;font-weight:700;font-size:1.2rem;margin:2em 0 0.8em}.page-content__body h3{font-family:'Shippori Mincho', Georgia, serif;font-weight:700;font-size:1.05rem;margin:1.5em 0 0.5em}.page-content__body p{margin-bottom:1em}.page-content__body ul,.page-content__body ol{margin:0.8em 0 1em 1.5em}.page-content__body ul li,.page-content__body ol li{margin-bottom:0.4em}.page-content__body a{color:#111;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.page-content__body a:hover{opacity:0.5;text-decoration:underline}.page-content__body strong{font-weight:700}.page-content__body hr{border:0;border-top:1px solid #e8e8e8;margin:2em 0}.footer{flex-shrink:0;width:92%;height:auto;box-sizing:border-box;font-family:'Shippori Mincho', Georgia, serif;font-style:italic;color:#bbb;font-size:0.9rem;text-align:center;text-transform:none;margin:0 auto;padding-top:18px;padding-bottom:18px;border:0;border-top:1px solid #e4ddd4}@media only screen and (min-width: 720px){.footer{width:720px}}.footer p{margin-top:0.4em;margin-bottom:0.4em}.footer a:hover{color:#111;opacity:1}.profile{text-align:center;padding:2.5em 0 1em}.profile .portrait{position:relative;width:13rem;height:13rem;margin:0 auto 1.4em}.profile .portrait .spinner{display:none}.profile .portrait .img{position:absolute;top:0;left:0;right:0;bottom:0;background-position:center;background-size:cover;border-radius:50%;border:1px solid #ddd}.profile .name{font-family:'Shippori Mincho', Georgia, serif;font-weight:400;font-size:2rem;color:#111;margin:0 auto 0.2em;letter-spacing:0.01em}.profile .name b{font-weight:700}.profile .title{font-family:'Shippori Mincho', Georgia, serif;font-size:1rem;font-style:italic;color:#999;margin:0.3em auto 1.2em;text-transform:none;letter-spacing:0}.profile .bio{font-size:1rem;line-height:1.8;color:#555;max-width:520px;margin:0 auto}.profile .bio p{margin-top:0.7em}.profile .bio a:hover{opacity:0.5}@media only screen and (min-width: 720px){.profile .portrait{width:15rem;height:15rem}.profile .name{font-size:2.2rem}}.contacts{margin:1.8rem auto;text-align:center;font-size:1.1rem}.contacts .contact{display:inline-block;width:2em;height:2em;line-height:2em;margin:0 0.3em;color:#bbb;text-align:center;background:none;border-radius:0;transition:color 0.2s}.contacts .contact:hover{color:#111;background:none;box-shadow:none;position:static}.actions{margin:1.5em auto 2em;text-align:center}.actions .action{display:inline-block;margin:0.4em 1.2em;font-family:'Shippori Mincho', Georgia, serif;font-size:1rem;font-style:italic;font-weight:400;color:#999;text-transform:none;letter-spacing:0;transition:color 0.2s}.actions .action:after{display:none}.actions .action:hover{color:#111;opacity:1}.hackathon-page{padding:1em 0 4em}.hackathon-page__title{font-family:'Shippori Mincho', Georgia, serif;font-weight:400;font-size:1.8rem;color:#111;margin-bottom:0.3em;text-transform:none;text-align:center}.hackathon-page__subtitle{font-family:'Shippori Mincho', Georgia, serif;font-style:italic;font-size:1.05rem;color:#666;text-align:center;margin:0 0 2.5em}.hackathon-page__cards{display:flex;flex-direction:column}.project-card{display:flex;gap:2em;background:#fff;border:1px solid #e0e0e0;opacity:0;transform:translateY(24px);transition:opacity 0.6s ease, transform 0.6s ease, border-color 0.2s, box-shadow 0.2s;border-radius:4px;overflow:hidden;color:inherit;margin:0 auto 1.2em;text-align:left}.project-card.visible{opacity:1;transform:translateY(0)}.project-card:hover{border-color:#b8b0a4;box-shadow:0 4px 14px rgba(0,0,0,0.05);opacity:1}.project-card__image{flex:0 0 220px;overflow:hidden;background:#f5f5f5}.project-card__image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 0.4s ease;filter:grayscale(20%)}.project-card:hover .project-card__image img{transform:scale(1.02)}.project-card__body{flex:1;padding:1.2em 1.2em 1.2em 0;display:flex;flex-direction:column;gap:0.6em}.project-card__header{display:flex;align-items:center;justify-content:space-between}.project-card__title-row{display:flex;align-items:center;gap:0.6em}.project-card__name{font-family:'Shippori Mincho', Georgia, serif;font-weight:700;font-size:0.95rem;color:#111}.project-card__archived{font-family:'Shippori Mincho', Georgia, serif;font-size:0.7rem;font-style:italic;color:#bbb;border:1px solid #e0e0e0;border-radius:2px;padding:0.1em 0.5em}.project-card__github{font-size:1rem;color:#ccc;transition:color 0.2s}.project-card:hover .project-card__github{color:#555}.project-card__description{font-family:'Shippori Mincho', Georgia, serif;font-size:0.85rem;line-height:1.65;color:#666;flex:1}.project-card__tech{display:flex;flex-wrap:wrap;gap:0.4em}.project-card__tag{font-family:'Shippori Mincho', Georgia, serif;font-size:0.72rem;font-style:italic;color:#aaa;border:1px solid #e0e0e0;border-radius:2px;padding:0.1em 0.5em}.project-card__footer{display:flex;align-items:center;justify-content:space-between}.project-card__hackathon{font-family:'Shippori Mincho', Georgia, serif;font-size:0.78rem;font-weight:700;color:#555}.project-card__year{font-family:'Shippori Mincho', Georgia, serif;font-size:0.78rem;color:#aaa;margin-left:auto}@media only screen and (max-width: 720px){.project-card{flex-direction:column}.project-card__image{flex:0 0 180px;width:100%}.project-card__body{padding:1.2em}}body.page-ideas{height:100vh;height:100dvh;overflow:hidden}body.page-ideas .wrap{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column}body.page-ideas .hackathon-page{flex:1 1 auto;min-height:0;padding-bottom:0;display:flex;flex-direction:column}body.page-ideas .hackathon-page__cards{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0.5em 0 1.5em;-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 5%, #000 95%, transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, #000 5%, #000 95%, transparent 100%);scrollbar-width:thin;scrollbar-color:rgba(0,0,0,0.15) transparent}body.page-ideas .hackathon-page__cards::-webkit-scrollbar{width:6px}body.page-ideas .hackathon-page__cards::-webkit-scrollbar-track{background:transparent}body.page-ideas .hackathon-page__cards::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);border-radius:3px}body.page-ideas .hackathon-page__cards::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.3)}.distillation-page{padding:1em 0 4em}.distillation-page__subtitle{font-family:'Shippori Mincho', Georgia, serif;font-style:italic;font-size:1.05rem;color:#666;text-align:center;margin:0 0 2.5em}body.page-distillation{height:100vh;height:100dvh;overflow:hidden}body.page-distillation .wrap{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column}body.page-distillation .distillation-page{flex:1 1 auto;min-height:0;padding-bottom:0;display:flex;flex-direction:column}body.page-distillation .timeline{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0.5em 0 1.5em;-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 5%, #000 95%, transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, #000 5%, #000 95%, transparent 100%);scrollbar-width:thin;scrollbar-color:rgba(0,0,0,0.15) transparent}body.page-distillation .timeline::-webkit-scrollbar{width:6px}body.page-distillation .timeline::-webkit-scrollbar-track{background:transparent}body.page-distillation .timeline::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);border-radius:3px}body.page-distillation .timeline::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.3)}.timeline{list-style:none;padding:0;margin:0;position:relative}.timeline::before{content:"";position:absolute;top:0.6em;bottom:0.6em;left:7px;width:1px;background:#d8d2c8}.timeline__item{position:relative;padding-left:2.2em;margin-bottom:2.2em}.timeline__item:last-child{margin-bottom:0}.timeline__marker{position:absolute;top:0.55em;left:0;width:15px;height:15px;border-radius:50%;background:#f8f4ef;border:2px solid #111;box-sizing:border-box}.timeline__date{font-family:'Shippori Mincho', Georgia, serif;font-size:0.85rem;font-weight:700;letter-spacing:0.04em;color:#888;margin-bottom:0.5em}.timeline__card{background:#fff;border:1px solid #e0e0e0;border-radius:4px;padding:1.2em 1.4em;transition:border-color 0.2s, box-shadow 0.2s}.timeline__card:hover{border-color:#b8b0a4;box-shadow:0 4px 14px rgba(0,0,0,0.05)}.timeline__title{font-family:'Shippori Mincho', Georgia, serif;font-weight:700;font-size:1.05rem;color:#111;margin:0 0 0.2em}.timeline__source{font-family:'Shippori Mincho', Georgia, serif;font-size:0.8rem;font-style:italic;color:#888;margin:0 0 0.7em}.timeline__source a{color:inherit;border-bottom:1px solid transparent;padding-bottom:1px}.timeline__source a:hover{color:#111;opacity:1;border-bottom-color:#888}.timeline__takeaway{font-size:0.85rem;line-height:1.65;color:#333;margin:0}.timeline__repo{display:inline-flex;align-items:center;justify-content:center;margin-top:0.9em;font-size:1.2rem;color:#555;transition:color 0.2s, transform 0.2s}.timeline__repo:hover{opacity:1;color:#111;transform:translateY(-1px)}@media only screen and (max-width: 480px){.timeline__item{padding-left:1.9em}.timeline__card{padding:1em 1.1em}.timeline__title{font-size:1.15rem}}.contact-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:1em;padding-top:max(1em, env(safe-area-inset-top));padding-bottom:max(1em, env(safe-area-inset-bottom));z-index:1000}.contact-modal.is-open{display:flex;animation:contactFadeIn 0.18s ease-out}.contact-modal__backdrop{position:absolute;inset:0;background:rgba(17,17,17,0.45);backdrop-filter:blur(2px)}.contact-modal__panel{position:relative;background:#f8f4ef;border:1px solid #e0e0e0;border-radius:4px;width:460px;max-width:100%;max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2em 1.8em 1.6em;box-shadow:0 12px 32px rgba(0,0,0,0.18);animation:contactPanelIn 0.22s ease-out}.contact-modal__close{position:absolute;top:0.25em;right:0.25em;width:2.6rem;height:2.6rem;display:flex;align-items:center;justify-content:center;background:transparent;border:none;font-size:1.6rem;line-height:1;color:#888;cursor:pointer;transition:opacity 0.2s, color 0.2s}.contact-modal__close:hover{color:#111;opacity:0.7}.contact-modal__title{font-family:'Shippori Mincho', Georgia, serif;font-size:1.5rem;font-weight:700;color:#111;margin:0 0 0.2em}.contact-modal__subtitle{font-size:0.9rem;color:#777;margin:0 0 1.4em}.contact-modal__form{display:flex;flex-direction:column;gap:0.9em}.contact-modal__field{display:flex;flex-direction:column;font-size:0.85rem;color:#555}.contact-modal__field span{margin-bottom:0.3em;font-weight:700;letter-spacing:0.02em}.contact-modal__field input,.contact-modal__field textarea{font-family:inherit;font-size:0.95rem;color:#111;background:#fff;border:1px solid #d8d2c8;border-radius:3px;padding:0.55em 0.7em;transition:border-color 0.18s, box-shadow 0.18s;resize:vertical}.contact-modal__field input:focus,.contact-modal__field textarea:focus{outline:none;border-color:#111;box-shadow:0 0 0 3px rgba(17,17,17,0.08)}.contact-modal__submit{margin-top:0.4em;background:#111;color:#fff;font-family:inherit;font-size:0.95rem;font-weight:700;letter-spacing:0.04em;border:none;border-radius:3px;padding:0.7em 1em;cursor:pointer;transition:opacity 0.2s}.contact-modal__submit:hover{opacity:0.75}.contact-modal__submit:disabled{opacity:0.5;cursor:default}.contact-modal__status{min-height:1.2em;margin:0.3em 0 0;font-size:0.85rem;color:#555}.contact-modal__status.is-error{color:#b00020}.contact-modal__status.is-success{color:#2e7d32}@media only screen and (max-width: 480px){.contact-modal{padding:0.5em}.contact-modal__panel{padding:1.5em 1.2em 1.2em;border-radius:6px}.contact-modal__title{font-size:1.3rem}}@keyframes contactFadeIn{from{opacity:0}to{opacity:1}}@keyframes contactPanelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.reach-out-link{text-decoration:underline;text-underline-offset:3px;cursor:pointer}body.contact-modal-open{overflow:hidden}
