/* Drafting details are confined to the notebook headings, guide rails and contact sheet. */
:root{--draft-blue:#2E6FFF;--draft-ink:#4b505a;--draft-line:rgba(16,20,28,.15);--draft-dot:radial-gradient(circle,rgba(10,12,16,.13) .5px,transparent 1px);--draft-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.045'/%3E%3C/svg%3E")}
body{overflow-x:clip}
.drawing-guides{z-index:3}
.ruler{z-index:8}.ruler-top{background-image:repeating-linear-gradient(to right,rgba(140,146,158,.18) 0 1px,transparent 1px 10px)}
.ruler-left{height:100%!important}.ruler-top .rmark,.ruler-top .rval,.ruler-left .rmark,.ruler-left .rval{position:absolute;display:block;pointer-events:none;opacity:0;transition:opacity .12s;z-index:4;min-width:0;padding:0;transform:none;writing-mode:horizontal-tb}
.ruler .rmark:before,.ruler .rval:before{display:none}
.ruler.is-active .rmark,.ruler.is-active .rval{opacity:1}
.ruler-top .rmark{top:0;width:24px;height:19px;background:rgb(46 111 255 / .22)}.ruler-left .rmark{left:0;width:19px;height:24px;background:rgb(46 111 255 / .22)}
.ruler .rval{font:9px/15px 'JetBrains Mono',monospace;color:var(--draft-blue);background:#fff;white-space:nowrap;letter-spacing:0}
.ruler-top .rval{top:1px}.ruler-left .rval{left:20px}
.ruler-right{height:100%!important}.ruler-right .rmark,.ruler-right .rval{position:absolute;display:block;pointer-events:none;opacity:0;transition:opacity .12s;z-index:4;min-width:0;padding:0;transform:none;writing-mode:horizontal-tb}.ruler-right .rmark:before,.ruler-right .rval:before{display:none}.ruler-right.is-active .rmark,.ruler-right.is-active .rval{opacity:1}.ruler-right .rmark{right:0;width:19px;height:24px;background:rgb(46 111 255 / .22)}.ruler-right .rval{left:auto;right:20px;font:9px/15px 'JetBrains Mono',monospace;color:var(--draft-blue);background:#fff;white-space:nowrap}.ruler-left .sheetmark,.ruler-right .sheetmark{position:absolute;width:13px;height:1px;background:#777d86;z-index:5;pointer-events:none}.ruler-left .sheetmark{left:3px}.ruler-right .sheetmark{left:auto;right:3px}.ruler .sheetmark.is-current{background:var(--draft-blue)}
.after-work,.life-section{width:min(1004px,calc(100% - 56px))}.after-work{padding-top:96px}.side-projects-list{max-width:728px}.draft-heading{position:relative;padding-top:32px;margin-bottom:42px}.draft-heading-rule{position:absolute;top:0;left:0;right:0;border-top:1px solid var(--line);height:1px}.draft-heading-rule:before,.draft-heading-rule:after{content:'';position:absolute;top:-6px;width:11px;height:11px;background:linear-gradient(var(--rail-tick),var(--rail-tick)) center/11px 1px no-repeat,linear-gradient(var(--rail-tick),var(--rail-tick)) center/1px 11px no-repeat}.draft-heading-rule:before{left:-5px}.draft-heading-rule:after{right:-5px}.draft-heading-rule span{position:absolute;right:12px;top:-7px;padding-left:8px;background:#fff;color:var(--draft-ink);font:9px/14px 'JetBrains Mono',monospace}.draft-sublabel{font:10px/1.5 'JetBrains Mono',monospace;color:var(--draft-ink);margin:0 0 12px}.draft-heading .notebook-heading{font:700 clamp(34px,3vw,38px)/1.16 var(--font);letter-spacing:-1.2px;text-wrap:balance;margin:0;max-width:850px}.life-section{padding-top:38px}.interest-matrix{width:min(728px,100%);margin-inline:auto}.life-section{position:relative;isolation:isolate}
main{position:relative;z-index:2;background:#fff}.footer-layer{margin-top:calc(-1 * var(--resume-height,0px));position:relative;z-index:1;isolation:isolate;overflow:clip}.contact-sheet,.resume-sheet{background-color:#fff;background-image:linear-gradient(155deg,rgba(240,243,248,.4),transparent 55%),var(--draft-dot),var(--draft-noise);background-size:auto,10px 10px,auto}.contact-sheet{position:relative;z-index:2;border-top:1px solid var(--draft-line);border-bottom:1px solid var(--draft-line);padding:0 0 32px;overflow:visible}.resume-sheet{position:sticky;bottom:0;z-index:0;background:#fff;padding:24px 0 20px}
.footer-scale{position:relative;height:28px;background:repeating-linear-gradient(to right,rgba(140,146,158,.18) 0 1px,transparent 1px 10px);background-size:auto 6px;background-position:left bottom;background-repeat:repeat-x}.contact-inner{max-width:1004px;margin:auto;width:calc(100% - 56px)}.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;padding:72px 0 45px}.contact-copy h2{font:700 clamp(42px,5vw,68px)/1.02 var(--font);letter-spacing:-2px;margin:18px 0 22px}.contact-sentence{font:15px/1.65 var(--font);color:#434852;margin:0 0 26px}.contact-form{position:relative;align-self:stretch;display:grid;grid-template-rows:1fr;gap:0;padding:20px 0 26px}.contact-form label{font:10px/1.5 'JetBrains Mono',monospace;color:#555b64}.contact-form textarea{width:100%;height:100%;min-height:140px;resize:vertical;border:1px solid #aeb4bc;border-radius:3px;background:#ffffffd9;padding:14px 16px;color:#20242b;font:14px/1.6 var(--font)}.contact-form textarea:focus-visible{outline:2px solid var(--draft-blue);outline-offset:2px}.contact-form-actions{display:flex;align-items:center;justify-content:space-between;gap:16px}.contact-form-actions span{font:9px/1.5 'JetBrains Mono',monospace;color:#777d86}.contact-form-actions button{min-height:42px;border:1px solid #24282e;border-radius:3px;background:#fff;color:#20242b;padding:8px 17px;font:500 13px var(--font)}.contact-form-actions button:hover:not(:disabled){background:#f5f5f5}.contact-form-actions button:disabled{opacity:.45;cursor:default}.contact-honeypot{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.contact-status:empty{display:none}.contact-status{min-height:18px;margin:0;color:#555b64;font:11px/1.5 var(--font)}
.site-credits{font:9px/1.4 'JetBrains Mono',monospace}.site-credits>div{bottom:48px;border-radius:3px;border:1px solid #9da4ad}
.contact-copy h2.contact-signature{font:400 clamp(88px,8vw,118px)/.9 NoteCaveat,cursive;letter-spacing:-6px;transform:rotate(-7deg);transform-origin:left center;margin:20px 0 28px}.contact-form-actions{justify-content:flex-end}
/* Resume uses the same fine-line drawing register as the rest of the page. */
.resume-paper{width:min(820px,calc(100% - 80px));min-height:812px;margin:auto;display:grid;grid-template-columns:31% 69%;border:1px solid #9da4ad;background:#ffffffb8;color:#39404a}
.resume-sidebar{border-right:1px solid #9da4ad;display:flex;flex-direction:column}
.resume-identity,.resume-group{padding:10px 20px;border-bottom:1px solid #b8bdc4;margin:0}
.resume-group:last-child{border-bottom:0;flex:1}
.resume-kicker{font:9px/1.5 'JetBrains Mono',monospace;letter-spacing:.05em;color:#727983}
.resume-identity h2{font:600 27px/1.2 var(--font);letter-spacing:-1px;margin:10px 0 8px}
.resume-identity h2 span{display:block;font:11px/1.5 'JetBrains Mono',monospace;letter-spacing:0;margin-top:5px}
.resume-identity>p:last-child{font:12px/1.6 var(--font);margin:0;color:#555c66}
.resume-group h3{font:500 11px/1.5 'JetBrains Mono',var(--font);color:#555c66;margin:0 0 8px;letter-spacing:.05em}
.resume-group p,.resume-group li,.resume-group a{font:11px/1.5 var(--font);color:#4b525c}
.resume-group p{margin:0 0 10px}.resume-group p:last-child{margin-bottom:0}.resume-group strong{font-weight:600;color:#313842}
.resume-group a{display:block;overflow-wrap:anywhere}.resume-group ul{list-style:none;padding:0;margin:0}.resume-group li{margin:0 0 3px}
.resume-main{display:flex;flex-direction:column;min-width:0}
.resume-job{margin:0;padding:0 18px 10px;border-bottom:1px solid #b8bdc4;flex:0}
.resume-job:last-child{border-bottom:0}
.resume-job-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;margin:0 -18px 8px;border-bottom:1px solid #b8bdc4}
.resume-job h4{font:600 13px/1.5 var(--font);margin:0;padding:7px 18px}
.resume-job h4 span{display:inline;font:11px/1.5 var(--font);color:#6b737e;margin-left:8px}
.resume-job time{display:flex;align-items:center;font:9px/1.5 'JetBrains Mono',monospace;color:#737b86;white-space:nowrap;border-left:1px solid #b8bdc4;padding:10px 12px}
.resume-job p,.resume-job li{font:12px/1.5 var(--font);color:#4b525c}.resume-job p{margin:0 0 8px}.resume-job ul{padding-left:15px;margin:6px 0 9px}.resume-job li{margin-bottom:3px}.resume-job li strong{font-weight:600;color:#313842}
 .resume-job-primary{flex:1;padding-bottom:16px}
.resume-job-primary h4{font-size:19px;padding-top:12px;padding-bottom:12px}
.resume-job .resume-project-grid{display:grid;grid-template-columns:1fr;list-style:none;padding:0;margin:12px 0 0;border:1px solid #b8bdc4}
.resume-job .resume-project-grid li{display:grid;grid-template-columns:126px minmax(0,1fr);font-size:12px;line-height:1.5;margin:0;border-bottom:1px solid #cbd0d6}
.resume-project-grid li:last-child{border-bottom:0}
.resume-project-grid li > :first-child{padding:8px 10px;border-right:1px solid #cbd0d6}
.resume-project-grid li span{padding:8px 10px}
.resume-job:not(.resume-job-primary){padding-bottom:8px}
.resume-job:not(.resume-job-primary) p{font-size:11px;margin-bottom:0}
@media(max-width:600px){.resume-job .resume-project-grid li{grid-template-columns:100px minmax(0,1fr);font-size:11px}}
.resume-actions{width:min(820px,calc(100% - 80px));margin:0 auto;display:flex;align-items:center;justify-content:space-between;min-height:44px;padding:8px 12px;border:1px solid #9da4ad;border-top:0;background:#ffffffb8;font:9px/1.4 'JetBrains Mono',monospace;color:#737981}.resume-actions>a{margin-left:auto}.resume-actions>a:hover{text-decoration:underline}
@media(max-width:900px){.resume-paper,.resume-actions{width:calc(100% - 48px)}.resume-paper{min-height:0}}
.footer-scale .rmark,.footer-scale .rval{position:absolute;top:0;display:block;opacity:0;pointer-events:none;transition:opacity .12s}.footer-scale.is-active .rmark,.footer-scale.is-active .rval{opacity:1}.footer-scale .rmark{width:24px;height:27px;background:rgb(46 111 255 / .22)}.footer-scale .rval{top:3px;padding:1px 3px;background:#fff;color:var(--draft-blue);font:9px/15px 'JetBrains Mono',monospace}
@media(max-width:760px){.contact-inner,.after-work,.life-section{width:calc(100% - 48px)}.draft-heading-rule:before,.draft-heading-rule:after{display:none}}
@media(max-width:600px){.draft-heading{padding-top:26px;margin-bottom:38px}.draft-heading .notebook-heading{font-size:25px;line-height:1.95;letter-spacing:-.5px}.after-work{padding-top:76px}.life-section{padding-top:30px}.contact-grid{grid-template-columns:1fr;gap:28px;padding:48px 0 32px}.contact-sentence{font-size:14px}.contact-copy h2.contact-signature{font-size:88px}.resume-sheet{padding:30px 0 26px}.resume-paper{width:calc(100% - 40px);display:block;min-height:0}.resume-sidebar{border-right:0;border-bottom:1px solid #9da4ad}.resume-actions{width:calc(100% - 40px)}.resume-job-head{grid-template-columns:minmax(0,1fr) auto}.resume-job h4{padding-inline:12px}.resume-job time{font-size:8px;padding-inline:8px}.site-credits>div{left:0;right:auto}}
@media(prefers-reduced-motion:reduce){.ruler .rmark,.ruler .rval{transition:none}}

/* Keep old ticks and pointer labels from extending a newly shortened page. */
.ruler-left,.ruler-right{overflow-y:clip}

/* Taller sheets retain normal scrolling so every resume section is reachable. */
.footer-layer::before{content:"";display:block;height:var(--resume-height,0px);pointer-events:none}
.footer-layer.resume-tall{margin-top:0}
.footer-layer.resume-tall::before{display:none}
.resume-tall .resume-sheet{position:relative}

.contact-input-wrap{position:relative;min-height:140px}
.contact-input-wrap textarea{display:block;padding-bottom:60px}
#contact-submit{position:absolute;right:12px;bottom:12px;min-height:34px;padding:7px 14px;border:1px solid #000;border-radius:3px;background:#000;color:#fff;font:13px var(--font);cursor:pointer}
#contact-submit:hover:not(:disabled){background:#262626}
#contact-submit:disabled{opacity:.4;cursor:default}
.contact-status{position:absolute;top:calc(100% - 20px);left:0}
