/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}}:root{color:#263647;font-synthesis:none;background:#c7afb4;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0;overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit}::selection{color:#253648;background:#e6ad97}.book{scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;width:100%;height:100dvh;display:flex;overflow:auto hidden}.book::-webkit-scrollbar{display:none}.page{scroll-snap-align:start;flex:0 0 100vw;place-items:center;width:100vw;height:100dvh;padding:clamp(14px,3.4vh,42px) clamp(16px,4.1vw,70px);display:grid;overflow:hidden}.paper{background:#fffcf2;border:1px solid #e9dfcd;width:min(100%,1440px);height:100%;min-height:0;position:relative;overflow:hidden;box-shadow:0 16px 42px #55444b3d,0 2px 5px #55444b30}.paper:before{content:"";pointer-events:none;opacity:.16;z-index:10;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.4' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E");position:absolute;inset:0}.topline,.cover-bottom,.project-bottomline{letter-spacing:.16em;color:#7c827c;justify-content:space-between;gap:15px;font-size:9px;font-weight:700;display:flex}.page-entrance{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(20px)}.is-active .page-entrance{opacity:1;transform:none}.cover-paper{grid-template-columns:47% 53%;display:grid}.cover-visual{background:radial-gradient(circle at 48% 54%,#fff4de 0,#f9eadc 53%,#f2dfd9 100%);place-items:center;display:grid;position:relative;overflow:hidden}.cover-visual:before{content:"";aspect-ratio:1;border:1px solid #e3c8ba;border-radius:50%;width:72%;position:absolute;top:14%;left:10%}.cover-visual img{z-index:2;object-fit:contain;filter:drop-shadow(0 18px 18px #6a523629);width:112%;max-width:none;max-height:90%;animation:6s ease-in-out infinite float;position:relative}.image-caption{letter-spacing:.22em;color:#927c74;font-size:9px;font-weight:700;position:absolute;bottom:5%;left:8%}.tiny-star{z-index:3;color:#bd8f62;position:absolute}.star-one{font-size:24px;top:10%;left:15%}.star-two{font-size:28px;top:15%;right:11%}.cover-content{flex-direction:column;padding:clamp(30px,4vw,76px);display:flex;position:relative}.cover-content .topline{margin-bottom:auto}.eyebrow{letter-spacing:.17em;color:#b66c5c;text-transform:uppercase;font-size:10px;font-weight:700}.cover-content h1{letter-spacing:-.075em;margin:23px 0 25px;font-family:Georgia,Times New Roman,serif;font-size:clamp(63px,8vw,132px);font-weight:400;line-height:.9}.cover-content h1 em{color:#c66f5d;font-weight:400}.cover-description{color:#52605d;max-width:520px;margin:0;font-size:clamp(13px,1.27vw,18px);line-height:1.65}.explore-link{color:#ad5e51;text-transform:uppercase;letter-spacing:.14em;border-bottom:1px solid #b66c5c;align-items:center;gap:35px;width:max-content;margin-top:30px;padding-bottom:8px;font-size:11px;font-weight:700;transition:gap .25s;display:inline-flex}.explore-link:hover{gap:50px}.explore-link span{font-size:19px}.cover-bottom{border-top:1px solid #ded8c8;margin-top:auto;padding-top:18px}.project-paper{flex-direction:column;padding:clamp(25px,3vw,48px) clamp(28px,4.4vw,70px);display:flex}.project-topline{border-bottom:1px solid #e1dccc;padding-bottom:18px}.project-body{flex:1;grid-template-columns:49% 51%;gap:clamp(20px,3.3vw,54px);min-height:0;padding:clamp(21px,3vh,42px) 0;display:grid}.visual-column{flex-direction:column;min-width:0;min-height:0;display:flex}.screenshot-card{background:#fff;border:1px solid #d8d6ca;flex:1;min-height:0;padding:13px;overflow:hidden;transform:rotate(-1.2deg);box-shadow:0 12px 24px #66594a23}.project-image{object-fit:cover;width:100%;height:100%;display:block}.visual-note{letter-spacing:.18em;color:#9d837b;margin:14px 0 0;font-size:9px;font-weight:700}.preview-mock{color:#36546a;background:#e5ece7;border:1px solid #d4ddd5;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.preview-geometry{background:#e2eaf0}.preview-collage{background:#ece7dc}.mock-bar{background:#f7faf7;border-bottom:1px solid #d7dfd7;align-items:center;gap:5px;height:34px;padding:0 10px;display:flex}.mock-bar>span{background:#b8cbb9;border-radius:50%;width:6px;height:6px}.mock-bar small{text-overflow:ellipsis;white-space:nowrap;color:#879487;max-width:55%;margin-left:auto;font-size:8px;overflow:hidden}.mock-interface{flex:1;min-height:0;display:flex}.mock-sidebar{background:#5e837a;flex-direction:column;gap:12px;width:18%;min-width:38px;padding:20px 11px;display:flex}.preview-geometry .mock-sidebar{background:#5b7991}.preview-collage .mock-sidebar{background:#947c6f}.mock-sidebar i{background:#e1eee499;border-radius:9px;height:7px}.mock-sidebar i:first-child{background:#eff8ef;border-radius:8px;width:24px;height:24px}.mock-content{flex:1;padding:clamp(18px,3vw,45px);position:relative;overflow:hidden}.mock-content:after{content:"";aspect-ratio:1;border:15px solid #aac8bc44;border-radius:50%;width:50%;position:absolute;bottom:-16%;right:-10%}.mock-tag{letter-spacing:.13em;color:#7b9a89;background:#fdfcf4;border-radius:30px;padding:7px 9px;font-size:8px;font-weight:700;display:inline-block}.mock-content strong{letter-spacing:-.07em;overflow-wrap:anywhere;max-width:100%;margin:28px 0 23px;font-size:clamp(24px,3.2vw,56px);line-height:1;display:block}.mock-line{background:#b4c8be;border-radius:8px;width:50%;height:8px;margin:9px 0}.mock-line.wide{width:72%}.mock-widgets{gap:8px;margin-top:36px;display:flex}.mock-widgets i{background:#fbfdf9;border:1px solid #d2dfd5;border-radius:8px;width:31%;height:clamp(40px,8vw,118px);box-shadow:0 4px #c9d8cf66}.project-content{scrollbar-width:none;flex-direction:column;min-width:0;min-height:0;padding-right:4px;display:flex;overflow-y:auto}.project-content::-webkit-scrollbar{display:none}.project-content .eyebrow{margin:0 0 10px}.project-number{letter-spacing:-.06em;vertical-align:-3px;color:#b66c5c;font-family:Georgia,serif;font-size:25px;font-weight:400}.project-content h2{letter-spacing:-.07em;margin:0 0 18px;font-family:Georgia,Times New Roman,serif;font-size:clamp(40px,4.4vw,76px);font-weight:400;line-height:.94}.project-content h2 span{color:#c66f5d}.project-summary{color:#46565a;margin:0 0 16px;font-size:clamp(12px,1.13vw,17px);line-height:1.48}.project-detail{border-top:1px solid #e4dfd2;grid-template-columns:110px 1fr;gap:14px;padding:10px 0;display:grid}.project-detail>span{letter-spacing:.1em;color:#bb7568;font-size:9px;font-weight:700}.project-detail p{color:#566360;margin:0;font-size:clamp(11px,.9vw,14px);line-height:1.43}.tech-list{flex-wrap:wrap;gap:5px;display:flex}.tech-list small{color:#536b5d;background:#e9eee5;border-radius:20px;padding:5px 8px;font-size:9px;font-weight:700}.project-byline{color:#718077;margin:auto 0 0;padding-top:12px;font-size:10px;font-weight:700}.project-byline span{color:#bc7163;margin:0 5px}.project-bottomline{border-top:1px solid #e1dccc;padding-top:13px}.paper-sparkle{color:#d3b885;pointer-events:none;font-size:26px;position:absolute;top:15%;right:4%}.page-controls{z-index:30;backdrop-filter:blur(12px);background:#fffcf2ed;border:1px solid #d7c9b7;border-radius:30px;align-items:center;gap:11px;padding:6px;display:flex;position:fixed;bottom:clamp(17px,4vh,52px);right:clamp(19px,4vw,72px);box-shadow:0 6px 20px #57495030}.page-controls button{color:#fff9ed;cursor:pointer;background:#bd7464;border:0;border-radius:50%;width:35px;height:35px;transition:transform .2s,background .2s}.page-controls button:hover:not(:disabled){background:#945649;transform:scale(1.08)}.page-controls button:disabled{cursor:default;background:#cfc6b8}.page-controls span{text-align:center;letter-spacing:.08em;color:#746f6a;min-width:41px;font-size:9px;font-weight:700}:focus-visible{outline-offset:3px;outline:2px solid #b86e60}@keyframes float{50%{transform:translateY(-12px)}}@media (width<=1000px){.cover-content h1{font-size:clamp(55px,8vw,80px)}.cover-content{padding:32px}.project-paper{padding:24px 28px}.project-body{gap:25px}.project-detail{grid-template-columns:85px 1fr;gap:8px}.project-content h2{font-size:clamp(36px,4.5vw,52px)}}@media (width<=700px){.page{padding:12px}.paper{height:100%}.cover-paper{flex-direction:column;display:flex}.cover-visual{height:43%;min-height:0}.cover-visual img{width:auto;max-width:95%;height:112%;max-height:none}.image-caption{font-size:7px}.cover-content{height:57%;padding:19px 23px}.topline,.cover-bottom,.project-bottomline{letter-spacing:.1em;font-size:7px}.cover-content .topline{margin-bottom:auto}.cover-content .eyebrow{margin:10px 0 0;font-size:8px}.cover-content h1{margin:9px 0 11px;font-size:clamp(47px,13vw,70px)}.cover-description{font-size:11px;line-height:1.45}.explore-link{gap:22px;margin-top:13px;font-size:9px}.cover-bottom{padding-top:10px}.project-paper{padding:14px 17px}.project-topline{padding-bottom:9px}.project-body{flex-direction:column;gap:9px;padding:11px 0;display:flex}.visual-column{flex:none;height:35%}.screenshot-card{padding:7px}.visual-note{margin-top:7px;font-size:7px}.mock-bar{height:20px}.mock-content{padding:12px}.mock-content strong{margin:10px 0;font-size:25px}.mock-line{height:5px;margin:5px 0}.mock-widgets{margin-top:11px}.mock-widgets i{height:30px}.mock-sidebar{gap:6px;padding:10px 6px}.project-content{flex:1}.project-content .eyebrow{margin:0 0 7px;font-size:8px}.project-number{font-size:20px}.project-content h2{margin-bottom:9px;font-size:clamp(34px,10vw,52px)}.project-summary{margin-bottom:8px;font-size:11px}.project-detail{grid-template-columns:88px 1fr;padding:7px 0}.project-detail>span{font-size:7px}.project-detail p{font-size:9px}.tech-list small{padding:4px 6px;font-size:8px}.project-byline{padding-top:8px;font-size:8px}.project-bottomline{padding-top:8px}.paper-sparkle{display:none}.page-controls{gap:7px;padding:4px;bottom:18px;right:21px}.page-controls button{width:29px;height:29px;font-size:14px}.page-controls span{min-width:35px;font-size:8px}}@media (height<=680px) and (width>=701px){.project-body{padding:15px 0}.project-paper{padding-top:18px;padding-bottom:18px}.cover-content h1{margin:15px 0;font-size:clamp(54px,7.5vw,90px)}.cover-description{font-size:13px}.explore-link{margin-top:15px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.page-entrance,.is-active .page-entrance,.cover-visual img,.explore-link,.page-controls button{transition:none;animation:none}.page-entrance{opacity:1;transform:none}}html{scroll-behavior:auto}:root{color:#20332e;background:#f6f3ea}.page{padding:0}.paper{width:100%;max-width:none;height:100%;box-shadow:none;background:#f6f3ea;border:0}.cover-visual{background:radial-gradient(circle at 48% 48%,#48665a 0,#27483e 55%,#18372f 100%)}.cover-visual:before{border-color:#c9d0b76b}.cover-visual img{filter:drop-shadow(0 20px 19px #091d1890)}.image-caption{color:#e0d9bd}.tiny-star{color:#d8b36e}.cover-content{background:#f6f3ea}.topline,.cover-bottom,.project-bottomline{color:#687a70}.cover-content h1 em,.project-content h2 span{color:#6c866c}.cover-description,.project-summary{color:#4d6056}.eyebrow,.project-number,.project-detail>span{color:#8b643c}.explore-link{color:#765834;border-color:#765834}.cover-bottom,.project-topline,.project-bottomline{border-color:#cbd2c2}.project-paper{background:#f6f3ea}.screenshot-card{border-color:#bac8ba;box-shadow:0 12px 24px #1b3b2b29}.visual-note{color:#718674}.preview-mock,.preview-geometry,.preview-collage{color:#24443b;background:#e0e7dc;border-color:#bdccbc}.mock-bar{background:#f0f1e9;border-color:#c8d3c5}.mock-bar>span{background:#9eb5a0}.mock-bar>span:first-child{background:#ba9360}.mock-bar small{color:#61776a}.mock-sidebar,.preview-geometry .mock-sidebar,.preview-collage .mock-sidebar{background:#31584c}.mock-tag{color:#54735e;background:#f6f4e9}.mock-line{background:#a9c0ab}.mock-widgets i{background:#f7f7ed;border-color:#bfd0be}.mock-widgets i:nth-child(2){background:#bdd0b9}.mock-widgets i:nth-child(3){background:#b9c8c1}.mock-content:after{border-color:#b0c9ae50}.project-detail{border-color:#ced5c8}.project-detail p{color:#4f6256}.tech-list small{color:#335847;background:#dfe8db}.project-byline{color:#536d5d}.project-byline span{color:#9c7445}.paper-sparkle{color:#bd9b5f}.page-controls{background:#23483d;border-color:#23483d;bottom:24px;right:28px;box-shadow:0 8px 22px #1b3b2b35}.page-controls button{color:#1c3d33;background:#d6ad6a}.page-controls button:hover:not(:disabled){background:#efc47b}.page-controls button:disabled{color:#b8c4b9;background:#668175}.page-controls span{color:#f8f4e8}:focus-visible{outline-color:#bc9863}@media (width<=700px){.page-controls{bottom:15px;right:17px}}.brand{white-space:nowrap;align-items:center;gap:10px;display:inline-flex}.brand img{width:27px;height:27px;display:block}.project-mascot{z-index:2;filter:drop-shadow(0 5px 7px #1b3b2b32);pointer-events:none;width:clamp(72px,8vw,112px);height:auto;position:absolute;bottom:7%;right:49%;transform:rotate(6deg)}@media (width<=700px){.brand{gap:5px}.brand img{width:18px;height:18px}.project-mascot{width:54px;bottom:48%;right:7%}}.cover-content .topline{flex-shrink:0;align-items:center;min-height:36px;margin-bottom:0}.cover-heading-group{margin:auto 0;padding:clamp(28px,5vh,56px) 0}.cover-heading-group .eyebrow{margin:0 0 12px}.cover-heading-group h1{margin-top:0}.cover-content .cover-bottom{flex-shrink:0;margin-top:0}.brand{gap:12px}.brand img{flex:none;width:35px;height:35px}@media (width<=700px){.cover-content .topline{min-height:27px}.cover-heading-group{padding:20px 0}.cover-heading-group .eyebrow{margin:0 0 8px}.brand{gap:8px}.brand img{width:27px;height:27px}}@media (height<=680px){.cover-heading-group{padding:16px 0}}.visual-column.has-image{justify-content:center}.has-image .screenshot-card{aspect-ratio:16/9;background:#e4ebe3;flex:none;place-items:center;width:100%;display:grid}.has-image .project-image{object-fit:contain;background:#fff}.project-image-link{cursor:zoom-in;width:100%;height:100%;display:block}.project-image-link:focus-visible{outline-offset:5px}@media (width<=700px){.visual-column.has-image{justify-content:flex-start}.has-image .screenshot-card{aspect-ratio:auto;height:calc(100% - 15px)}}.cover-heading-group h1{font-size:clamp(58px,7vw,112px)}.cover-description{font-size:clamp(12px,1.08vw,15px);line-height:1.56}.cover-heading-group{padding:clamp(15px,3vh,36px) 0}.skills-paper{flex-direction:column;padding:clamp(25px,3vw,48px) clamp(28px,4.4vw,70px);display:flex}.skills-layout{flex:1;grid-template-columns:minmax(290px,38%) 1fr;align-items:center;gap:clamp(28px,5vw,90px);min-height:0;padding:clamp(22px,4vh,54px) 0;display:grid}.skills-intro{max-width:470px}.skills-intro h2{letter-spacing:-.07em;margin:18px 0 28px;font-family:Georgia,Times New Roman,serif;font-size:clamp(50px,5.5vw,86px);font-weight:400;line-height:.95}.skills-intro h2 em{color:#6c866c;font-weight:400}.skills-intro>p:not(.eyebrow){color:#4d6056;margin:0;font-size:clamp(13px,1.2vw,17px);line-height:1.65}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;gap:14px;display:grid}.skill-group{background:#e7ece1;border:1px solid #c9d4c4;min-height:190px;padding:clamp(18px,2vw,30px);position:relative;overflow:hidden}.skill-group:nth-child(2),.skill-group:nth-child(3){background:#eef0e6}.skill-group:after{content:"✳";color:#a9bba5;font-size:28px;position:absolute;top:13px;right:18px}.skill-index{letter-spacing:.14em;color:#8b643c;font-size:9px;font-weight:700}.skill-group h3{margin:22px 0 12px;font-family:Georgia,serif;font-size:clamp(27px,2.7vw,40px);font-weight:400;line-height:1}.skill-group p{color:#4d6056;margin:0;font-size:clamp(11px,.94vw,14px);line-height:1.55}@media (width<=850px){.skills-layout{grid-template-columns:1fr;align-content:center;gap:22px;overflow-y:auto}.skills-intro h2{margin:8px 0 12px;font-size:clamp(43px,8vw,65px)}.skills-intro>p:not(.eyebrow){font-size:12px}.skills-intro .explore-link{margin-top:13px}.skill-group{min-height:128px}.skill-group h3{margin:13px 0 7px}.skills-grid{gap:10px}}@media (width<=700px){.cover-heading-group h1{font-size:clamp(42px,12vw,60px)}.cover-description{font-size:10px;line-height:1.42}.cover-visual{height:34%}.cover-content{height:66%}.skills-paper{padding:16px 18px}.skills-layout{align-content:start;gap:12px;padding:12px 0}.skills-intro h2{font-size:clamp(38px,10vw,54px)}.skills-intro>p:not(.eyebrow){font-size:10px;line-height:1.4}.skills-grid{gap:7px}.skill-group{min-height:0;padding:12px}.skill-group:after{font-size:18px;top:5px;right:8px}.skill-index{font-size:7px}.skill-group h3{margin:9px 0 5px;font-size:24px}.skill-group p{font-size:9px;line-height:1.38}}
