@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400..700;1,9..40,400..700&display=swap";@media (width<=32rem){.calc-formula-fields{grid-template-columns:1fr}}@media (width>=768px){.all-projects-container{border:1px solid var(--pw-border);box-shadow:var(--pw-shadow-md);border-radius:.75rem;margin:2rem auto;padding:2rem 2.5rem}}@media (width<=480px){.contact-item{flex-direction:column;align-items:flex-start;gap:.35rem}.contact-label{min-width:auto}}.resume-entry+.resume-entry,.resume-subheading{margin-top:.15rem}@media print{.navbar,.pw-chat,.resume-print-hide{display:none!important}.app-main .page.resume-page{color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact;max-width:100%;padding:0 .5in .75in;font-size:10.5pt}.app-main .page.resume-page,.app-main .page.resume-page *{color:#000!important}body{background:#fff}.resume-heading__link{color:#000}.resume-section__title{color:#000;border-bottom-color:#000}.resume-item,.resume-skill-block__item,.resume-subheading__primary,.resume-summary,.resume-pro-skills li,.resume-subheading__row--muted{color:#000}}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{flex-direction:column;width:100%;max-width:100%;min-height:100vh;display:flex}.app-main{flex-direction:column;flex:1;width:100%;display:flex}.navbar{background:linear-gradient(135deg, var(--pw-primary) 0%, var(--pw-primary-mid) 100%);z-index:1000;width:100%;transition:background-color .3s;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.navbar-container{width:100%;max-width:72rem;padding-block:0;padding-inline:max(.5rem, env(safe-area-inset-left,0px)) max(.5rem, env(safe-area-inset-right,0px));justify-content:flex-start;align-items:center;gap:1rem;height:3.75rem;margin:0 auto;display:flex;position:relative}.navbar-left{flex:1;align-items:center;gap:.5rem 1rem;min-width:0;display:flex}.navbar-right{flex-shrink:0;align-items:center;gap:.75rem;margin-left:auto;display:flex}.nav-tools-btn{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.5rem;justify-content:center;align-items:center;padding:.35rem;text-decoration:none;transition:background-color .2s,border-color .2s;display:flex}.nav-tools-btn:hover{background-color:#ffffff1f;border-color:#fff3}.nav-tools-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.nav-tools-icon{object-fit:contain;width:2rem;height:2rem;display:block}.nav-tool{position:relative}.nav-tool-dropdown{border-top:3px solid var(--pw-secondary);z-index:200;background-color:#fff;border-radius:.5rem;min-width:17rem;padding:.75rem;position:absolute;top:calc(100% + .35rem);left:auto;right:0;transform:none;box-shadow:0 8px 24px #00000026}.nav-tool-dropdown--calendar{min-width:20rem}.nav-tool-dropdown .calc-pad,.nav-tool-dropdown .calendar-pad{max-width:none}.nav-tool-fullpage{text-align:center;box-sizing:border-box;width:100%;color:var(--pw-primary);background:#e5e7eb;border-color:#d1d5db;margin-top:.75rem;padding:.5rem .75rem;text-decoration:none;display:block}.nav-tool-fullpage:hover{color:var(--pw-primary);background:#d1d5db;border-color:#9ca3af}.navbar-wordmark{color:#fff;letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:min(14rem,42vw);font-size:1rem;font-weight:700;text-decoration:none;overflow:hidden}.navbar-wordmark:hover{color:#ffffffeb}.navbar-logo{cursor:pointer;align-items:center;gap:12px;text-decoration:none;transition:opacity .3s;display:flex}.navbar-logo:hover{opacity:.7}.navbar-logo-img{object-fit:contain;width:auto;height:40px}.navbar-brand{color:#fff;letter-spacing:1px;font-size:24px;font-weight:700}.nav-menu{align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;display:flex;position:relative;left:auto;transform:none}.nav-item{justify-content:center;align-items:center;display:flex;position:relative}.nav-link{color:#fff;white-space:nowrap;border-bottom:5px solid #0000;align-items:center;gap:6px;padding:18px 14px;font-size:16px;font-weight:500;text-decoration:none;transition:all .3s;display:flex}.nav-link:hover{border-bottom-color:var(--pw-secondary);background-color:#ffffff1a}.nav-link:active{border-bottom-color:#fff}.nav-dropdown-btn{cursor:pointer;background:0 0;border:none;font-family:inherit}.dropdown-arrow{font-size:12px;transition:transform .3s;display:inline-block}.nav-item.open .dropdown-arrow{transform:rotate(180deg)}.dropdown-menu{z-index:100;border-top:3px solid var(--pw-secondary);background-color:#fff;border-radius:6px;min-width:180px;margin:0;padding:6px 0;list-style:none;display:none;position:absolute;top:100%;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000026}.dropdown-menu.visible{display:block}.dropdown-item{width:100%}.dropdown-link{color:var(--pw-primary);white-space:nowrap;padding:10px 18px;font-size:14px;font-weight:500;text-decoration:none;transition:background-color .2s,color .2s;display:block}.dropdown-link:hover{background-color:var(--pw-accent-muted);color:var(--pw-primary)}.nav-user-section{margin-left:auto;margin-right:20px}.nav-user-display{background-color:#ffffff1a;border-radius:20px;align-items:center;gap:12px;padding:8px 16px;transition:background-color .3s;display:flex}.nav-user-display:hover{background-color:#ffffff26}.nav-user-avatar{background-color:#9ca3af;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex;position:relative;overflow:hidden}.nav-user-img{object-fit:cover;width:100%;height:100%}.nav-user-placeholder{background-color:#9ca3af;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.nav-user-placeholder svg{width:24px;height:24px}.nav-user-info{flex-direction:column;gap:2px;display:flex}.nav-username{color:#fff;white-space:nowrap;font-size:16px;font-weight:500;line-height:1.2}.nav-user-role{color:#ffffffd9;text-transform:capitalize;font-size:12px;font-weight:400;line-height:1.2}.nav-logout-btn{background-color:var(--pw-secondary);color:#fff;cursor:pointer;border:none;border-radius:5px;margin-left:10px;padding:8px 20px;font-size:14px;font-weight:600;transition:all .3s}.nav-logout-btn:hover{background-color:var(--pw-accent);color:#000;transform:translateY(-2px);box-shadow:0 4px 8px #ff6b6b4d}.hamburger{cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex-direction:column;flex-shrink:0;gap:6px;margin:-.5rem;padding:.5rem;display:none}.hamburger:focus-visible{outline-offset:2px;outline:2px solid #fff}.hamburger span{background-color:#fff;border-radius:3px;width:25px;height:3px;transition:all .3s}.hamburger span.open:first-child{transform:rotate(45deg)translate(10px,10px)}.hamburger span.open:nth-child(2){opacity:0}.hamburger span.open:nth-child(3){transform:rotate(-45deg)translate(7px,-7px)}@media screen and (width<=768px){.navbar-container{height:60px}.navbar-brand{font-size:20px}.hamburger{display:flex}.navbar-left{flex:1;width:auto;min-width:0}.navbar-right{order:2;gap:.5rem}.nav-tools-icon{width:1.75rem;height:1.75rem}.nav-tool-dropdown{max-width:calc(100vw - 1rem);position:fixed;top:60px;left:auto;right:.5rem}.nav-menu{background-color:var(--pw-primary);text-align:start;flex-direction:column;gap:0;width:100%;transition:all .3s;position:fixed;top:60px;left:-100%;transform:none;box-shadow:0 10px 27px #0000000d}.nav-menu.active{left:0}.nav-item{width:100%}.nav-link{border-bottom:none;border-right:4px solid #0000;justify-content:flex-start;width:100%;padding:15px 1.25rem}.nav-link:hover{background-color:#ffffff26;border-bottom:none;border-right-color:#fff}.dropdown-menu{box-shadow:none;border-top:none;border-left:3px solid var(--pw-secondary);background-color:var(--pw-primary-mid);border-radius:0;min-width:100%;padding:0;position:static;transform:none}.dropdown-link{color:#f8fafc;padding:10px 30px}.dropdown-link:hover{color:#fff;background-color:#0003}.nav-user-section{width:100%;margin:15px auto}.nav-user-display{justify-content:center;width:fit-content;margin:0 auto}.nav-logout-btn{margin:15px auto;display:block}}@media screen and (width<=480px){.navbar-container{height:50px;padding-inline:max(.375rem, env(safe-area-inset-left,0px)) max(.375rem, env(safe-area-inset-right,0px))}.navbar-logo-img{height:30px}.navbar-brand{font-size:16px}.hamburger span{width:22px;height:3px}}:root{--pw-font-sans:"DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--pw-primary:#2596be;--pw-primary-mid:#1e5b5f;--pw-accent:#0ea5e9;--pw-accent-hover:#0284c7;--pw-accent-muted:#0ea5e91f;--pw-dark-text:#2596be;--pw-muted-text:#64748b;--pw-light-text:#fff;--pw-canvas:#f1f5f9;--pw-surface:#fff;--pw-border:#e2e8f0;--pw-table-hover:#f0f9ff;--pw-table-even:#f8fafc;--pw-error:#dc2626;--pw-error-accent:#fef2f2;--pw-error-hover:#fca5a5;--pw-shadow-sm:0 1px 2px #0f172a0f;--pw-shadow-md:0 4px 6px -1px #0f172a14, 0 2px 4px -2px #0f172a0f;--pw-shadow-lg:0 10px 15px -3px #0f172a14, 0 4px 6px -4px #0f172a0f;--pw-secondary:var(--pw-accent);--pw-button-hover:var(--pw-accent-hover);--pw-accent-warm:#fffbeb;--pw-background:var(--pw-canvas)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;min-height:100%}body{font-family:var(--pw-font-sans), serif;background-color:var(--pw-canvas);color:var(--pw-dark-text);line-height:1.6}#root{flex-direction:column;width:100%;min-height:100vh;display:flex}:focus-visible{outline:2px solid var(--pw-accent);outline-offset:2px}h1{color:var(--pw-dark-text);letter-spacing:-.02em;font-weight:700;line-height:1.15}h2{color:var(--pw-dark-text);letter-spacing:-.01em;font-weight:600}img{object-fit:contain;max-width:100%;height:auto;display:block}.page{text-align:left;flex:1;width:100%;max-width:720px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.page h1{margin-bottom:.75rem;font-size:clamp(1.75rem,4vw,2.25rem)}.page>p{color:var(--pw-muted-text);font-size:1.05rem;line-height:1.65}.page>p+p{margin-top:1.1em}.page-section{border-top:1px solid var(--pw-border);margin-top:2.25rem;padding-top:1.75rem}.page-section h2{color:var(--pw-dark-text);margin-bottom:.5rem;font-size:clamp(1.1rem,2.2vw,1.3rem)}.page-section p{color:var(--pw-muted-text);font-size:1.05rem;line-height:1.65}.page-section p+p{margin-top:.85em}.page table{margin-top:1.5rem}.skills-tables{flex-direction:column;gap:2rem;margin-top:1.5rem;display:flex}.welcome-screen{background:radial-gradient(ellipse 80% 60% at 50% -30%, #0ea5e926, transparent), var(--pw-canvas);flex:1;justify-content:center;align-items:center;padding:2rem 1.25rem 3rem;display:flex}.welcome-screen__inner{text-align:center;width:100%;max-width:36rem}.welcome-screen__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--pw-accent);margin-bottom:.75rem;font-size:.75rem;font-weight:600}.welcome-screen__inner>h1{color:var(--pw-dark-text);margin-bottom:1rem;font-size:clamp(1.85rem,5vw,2.5rem);font-weight:700}.welcome-screen__lead{color:var(--pw-muted-text);max-width:28rem;margin:0 auto 1.75rem;font-size:1.0625rem;line-height:1.65}.welcome-screen__portrait{border:3px solid var(--pw-surface);width:9rem;height:9rem;box-shadow:var(--pw-shadow-md);border-radius:50%;margin:0 auto 1.75rem;overflow:hidden}.welcome-screen__portrait img{object-fit:cover;width:100%;height:100%}.welcome-screen__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;display:flex}.welcome-screen__actions .button-primary,.welcome-screen__actions .button-outline,.welcome-screen__actions .button-ghost{margin:0}.link{color:var(--pw-accent);font-weight:500;text-decoration:none;transition:color .15s}.link:hover{color:var(--pw-accent-hover);text-decoration:underline}.button-primary,.button-secondary,.button-outline,.button-ghost{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:.5rem;padding:.65rem 1.25rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:background-color .15s,color .15s,border-color .15s,box-shadow .15s}.button-primary{background-color:var(--pw-primary);color:var(--pw-light-text);box-shadow:var(--pw-shadow-sm)}.button-primary:hover{background-color:var(--pw-primary-mid);box-shadow:var(--pw-shadow-md)}.button-secondary{background-color:var(--pw-accent);color:var(--pw-light-text)}.button-secondary:hover{background-color:var(--pw-accent-hover)}.button-outline{background:var(--pw-surface);color:var(--pw-primary);border-color:var(--pw-border);box-shadow:var(--pw-shadow-sm)}.button-outline:hover{border-color:var(--pw-accent);color:var(--pw-accent-hover);background:var(--pw-accent-muted)}.button-ghost{color:var(--pw-muted-text);background:0 0;border-color:#0000}.button-ghost:hover{color:var(--pw-primary);background:#0f172a0d}.button-clear{color:var(--pw-border);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0 4px;font-size:20px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.button-clear:hover{color:var(--pw-primary)}.calc-row{flex-flow:wrap;align-items:stretch;gap:.75rem;margin-top:.75rem;display:flex}.calc-box{background:var(--pw-surface);border:1px solid var(--pw-border);box-shadow:var(--pw-shadow-md);border-radius:.75rem;flex-direction:column;padding:1rem;display:flex}.calc-box--formulas{flex:1;min-width:16rem}.calc-pad{flex-direction:column;gap:.75rem;max-width:18rem;display:flex}.calc-box .calc-pad{width:18rem;max-width:100%}.calc-pad__display{text-align:end;font-variant-numeric:tabular-nums;color:var(--pw-primary);background:var(--pw-surface);border:1px solid var(--pw-border);word-break:break-all;border-radius:.5rem;min-height:2.75rem;margin:0;padding:.75rem 1rem;font-size:1.5rem;font-weight:600}.calc-pad__keys{flex-direction:column;gap:.5rem;display:flex}.calc-pad__row{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;display:grid}.calc-pad__row--fns{grid-template-columns:repeat(5,minmax(0,1fr))}.calc-pad__row--fns .button-primary,.calc-pad__row--fns .button-outline,.calc-pad__row--fns .button-ghost{padding:.5rem .2rem;font-size:.9rem}.calc-pad .button-primary,.calc-pad .button-outline,.calc-pad .button-ghost{width:100%;min-height:2.5rem;padding:.5rem .35rem;font-size:1rem}.calc-pad .button-ghost{background-color:var(--pw-muted-text);color:var(--pw-light-text);box-shadow:var(--pw-shadow-sm)}.calc-pad .button-ghost:hover{background-color:var(--pw-muted-text);color:var(--pw-light-text);box-shadow:var(--pw-shadow-md);filter:brightness(.9)}.calc-pad__key--wide{grid-column:span 2}.calc-formulas{flex-wrap:wrap;gap:.5rem;display:flex}.calc-box--formulas .calc-formulas .button-primary,.calc-box--formulas .calc-formulas .button-outline{min-height:2.5rem;padding:.5rem .75rem;font-size:.95rem}.calc-box--formulas>p{margin:.75rem 0 0}.calc-formula-panel{margin-top:.75rem}.calc-formula-panel h3{margin-bottom:.25rem;font-size:1.05rem}.calc-formula-panel__eq{font-variant-numeric:tabular-nums}.calc-formula-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem;margin-top:1rem;display:grid}.calc-formula-field label{color:var(--pw-dark-text);margin-bottom:.35rem;font-weight:600;display:block}.calc-formula-field input,.calc-formula-field select{border:1px solid var(--pw-border);background:var(--pw-surface);width:100%;color:var(--pw-dark-text);border-radius:.5rem;padding:.65rem .75rem;font-family:inherit;font-size:.95rem}.calc-formula-field__unit{color:var(--pw-muted-text);margin:.25rem 0 0;font-size:.8rem}.calc-formula-actions{margin-top:1rem}@media (width<=32rem){.calc-formula-fields{grid-template-columns:1fr}}.calendar-pad{flex-direction:column;gap:.75rem;display:flex}.calendar-pad__title{color:var(--pw-primary);margin:0;font-size:1.125rem;font-weight:700}.calendar-pad__actions{flex-wrap:wrap;gap:.5rem;display:flex}.calendar-pad__actions .button-primary,.calendar-pad__actions .button-outline{padding:.4rem .75rem;font-size:.8125rem}.calendar-pad__table{border-collapse:collapse;table-layout:fixed;width:100%}.calendar-pad__table th{color:var(--pw-muted-text);text-align:center;padding:.35rem .15rem;font-size:.75rem;font-weight:600}.calendar-pad__table td{text-align:center;vertical-align:middle;padding:.15rem}.calendar-pad__table .button-primary,.calendar-pad__table .button-ghost{width:100%;min-height:2rem;color:var(--pw-primary);box-shadow:none;background-color:#0000;border:1px solid #0000;padding:.25rem .15rem;font-size:.8125rem}.calendar-pad__table .button-primary{background-color:var(--pw-primary);color:var(--pw-light-text)}.calendar-pad__table .button-primary:hover{background-color:var(--pw-primary-mid)}.calendar-pad__table .button-ghost:hover:not(:disabled){background:#0f172a0d}.calendar-pad__table .button-ghost:disabled{opacity:.35;cursor:default}.calendar-pad__selected{color:var(--pw-muted-text);margin:0;font-size:.875rem}.clear-input-container{width:100%;display:inline-block;position:relative}input{font-family:inherit}.input-error{border-color:var(--pw-error);background:var(--pw-error-accent)}.input-error:focus{outline:2px solid var(--pw-error-hover);border-color:var(--pw-error)}.select{border:1px solid var(--pw-border);background-color:var(--pw-primary);color:var(--pw-light-text);border-radius:6px;padding:6px 10px;font-size:14px}table{border-collapse:collapse;border:1px solid var(--pw-border);background:var(--pw-surface);width:100%;max-width:100%;box-shadow:var(--pw-shadow-sm);border-radius:.5rem;display:table;overflow:hidden}table .header-row,table thead{background-color:var(--pw-primary);color:var(--pw-light-text)}table th,table td{border:1px solid var(--pw-border);text-align:left;padding:.65rem 1rem}table th{font-size:.875rem;font-weight:600}tbody tr:nth-child(2n){background-color:var(--pw-table-even)}tbody tr:hover{background-color:var(--pw-table-hover)}table button{color:var(--pw-light-text);background-color:var(--pw-primary);cursor:pointer;border:none;border-radius:.375rem;padding:.35rem .75rem;font-size:.8125rem;font-weight:600;transition:background-color .15s}table button:hover,.table button:hover{background-color:var(--pw-accent-hover)}.table button{color:var(--pw-light-text);background-color:var(--pw-primary);cursor:pointer;border:none;border-radius:.375rem;padding:.5rem .875rem;font-size:.875rem;font-weight:600;transition:background-color .15s}.contact-container{text-align:center;flex:1;max-width:40rem;margin:0 auto;padding:2.5rem 1.25rem 4rem}.contact-container h1{color:var(--pw-dark-text);margin-bottom:.75rem;font-size:clamp(1.75rem,4vw,2.25rem)}.contact-intro{color:var(--pw-muted-text);text-align:left;margin-bottom:2rem;font-size:1.0625rem;line-height:1.65}.contact-links{background-color:var(--pw-surface);border:1px solid var(--pw-border);box-shadow:var(--pw-shadow-md);text-align:left;border-radius:.75rem;flex-direction:column;gap:0;padding:0;display:flex;overflow:hidden}.contact-item{border-bottom:1px solid var(--pw-border);align-items:center;gap:1rem;padding:1rem 1.25rem;font-size:1rem;display:flex}.contact-item:last-child{border-bottom:none}.contact-label{color:var(--pw-primary);min-width:5.5rem;font-size:.875rem;font-weight:600}.contact-value{color:var(--pw-dark-text);word-break:break-word}.contact-value.link{text-decoration:none}.contact-value.link:hover{color:var(--pw-accent-hover)}.all-projects-container{text-align:left;background-color:var(--pw-surface);width:100%;max-width:52rem;box-shadow:none;border:none;border-radius:0;flex:1;margin:0 auto;padding:2.5rem 1.25rem 4rem}@media (width>=768px){.all-projects-container{border:1px solid var(--pw-border);box-shadow:var(--pw-shadow-md);border-radius:.75rem;margin:2rem auto;padding:2rem 2.5rem}}.all-projects-container h1{color:var(--pw-dark-text);margin-bottom:.5rem;font-size:clamp(1.75rem,4vw,2.25rem)}.all-projects-container>p{color:var(--pw-muted-text);margin-bottom:1rem;font-size:1rem;line-height:1.65}.all-projects-container .button-primary{margin:.5rem .75rem .5rem 0}.all-projects-container .button-primary:last-of-type{margin-right:0}.all-projects-placeholder{color:var(--pw-muted-text);font-style:italic}.project-table__links{flex-wrap:wrap;align-items:baseline;display:inline-flex}.project-table__live-link:before{content:"·";color:var(--pw-muted-text);margin-right:.35em;text-decoration:none}.projects-lead{color:var(--pw-dark-text);margin-top:1.5rem;margin-bottom:.5rem;font-size:.9375rem;font-weight:600}@media (width<=480px){.contact-item{flex-direction:column;align-items:flex-start;gap:.35rem}.contact-label{min-width:auto}}.page.resume-page{color:#000;max-width:52rem;font-size:.9375rem;line-height:1.45}.resume-heading{text-align:center;margin-bottom:1.5rem}.resume-heading__name{font-variant:small-caps;letter-spacing:.06em;color:#000;margin:0 0 .35rem;font-size:clamp(1.65rem,4vw,2.1rem);font-weight:700;line-height:1.15}.resume-heading__contact{color:#000;margin:0;font-size:.875rem;line-height:1.55}.resume-heading__pipe{color:#000}.resume-heading__link{color:#000;text-underline-offset:2px;text-decoration:underline;text-decoration-thickness:1px}.resume-heading__link:hover{color:var(--pw-accent-hover)}.resume-heading__print{margin-top:1rem}.resume-section{margin-top:1.1rem}.resume-section:first-of-type{margin-top:.75rem}.resume-section__title{font-variant:small-caps;letter-spacing:.08em;text-align:left;color:#000;border-bottom:1px solid #000;margin:0 0 .35rem;padding-bottom:.2rem;font-size:1.05rem;font-weight:400}.resume-subheading-list{flex-direction:column;gap:.85rem;display:flex}.resume-entry+.resume-entry,.resume-subheading{margin-top:.15rem}.resume-subitem{color:#000;margin:.25rem 0 .35rem;font-size:.875rem;line-height:1.5}.resume-subheading__row{justify-content:space-between;align-items:baseline;gap:1rem;width:100%;display:flex}.resume-subheading__row--muted{color:#000;font-size:.875rem;font-style:italic}.resume-subheading__primary{font-weight:700}.resume-subheading__secondary{white-space:nowrap;flex-shrink:0;font-size:.875rem}.resume-project-heading{justify-content:space-between;align-items:baseline;gap:1rem;width:100%;margin-top:.15rem;font-size:.875rem;display:flex}.resume-project-heading__left{text-align:left}.resume-project-heading__sep{color:#000;font-style:normal;font-weight:400}.resume-project-heading__right{white-space:nowrap;flex-shrink:0;font-size:.875rem}.resume-item-list{margin:.35rem 0 0;padding-left:1.1rem;list-style-type:disc}.resume-item-list .resume-item{padding-left:.15rem}.resume-item{color:#000;margin:0;font-size:.875rem}.resume-item+.resume-item{margin-top:.2em}.resume-skill-block{margin:.25rem 0 0;padding-left:1.1rem;list-style:none}.resume-skill-block__item{color:#000;font-size:.875rem;line-height:1.55}.resume-summary{color:#000;margin:.25rem 0 0;font-size:.875rem;line-height:1.55}.resume-pro-skills{flex-wrap:wrap;align-items:baseline;gap:.35rem 0;margin:.25rem 0 0;padding:0;list-style:none;display:flex}.resume-pro-skills li{color:#000;font-size:.875rem;line-height:1.55}.resume-pro-skills li:not(:last-child):after{content:"•";color:#000;margin:0 .55rem}@media print{.navbar,.pw-chat,.resume-print-hide{display:none!important}.app-main .page.resume-page{color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact;max-width:100%;padding:0 .5in .75in;font-size:10.5pt}.app-main .page.resume-page,.app-main .page.resume-page *{color:#000!important}body{background:#fff}.resume-heading__link{color:#000}.resume-section__title{color:#000;border-bottom-color:#000}.resume-item,.resume-skill-block__item,.resume-subheading__primary,.resume-summary,.resume-pro-skills li,.resume-subheading__row--muted{color:#000}}.photography-page{max-width:72rem;margin:0 auto;padding:2rem 1.25rem 4rem}.photography-page__header{margin-bottom:2.5rem}.photography-page__eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--pw-muted-text);margin-bottom:.5rem;font-size:.75rem;font-weight:600}.photography-page__header h1{margin-bottom:.75rem;font-size:clamp(1.75rem,4vw,2.5rem)}.photography-page__lead{max-width:40rem;color:var(--pw-muted-text);font-size:1.05rem}.photography-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;list-style:none;display:grid}.photography-card{background:var(--pw-surface);box-shadow:var(--pw-shadow-md);border-radius:.5rem;transition:transform .2s,box-shadow .2s;overflow:hidden}.photography-card:hover{box-shadow:var(--pw-shadow-lg);transform:translateY(-2px)}.photography-card img{aspect-ratio:4/3;object-fit:cover;background:var(--pw-border);width:100%;display:block}.resume-parser__form .resume-parser__label{color:var(--pw-dark-text);margin-top:1rem;margin-bottom:.35rem;font-weight:600;display:block}.resume-parser__form input[type=file]{width:100%;color:var(--pw-muted-text);font-size:.9rem;display:block}.resume-parser__textarea{border:1px solid var(--pw-border);background:var(--pw-surface);width:100%;color:var(--pw-dark-text);resize:vertical;border-radius:.375rem;padding:.75rem;font-family:inherit;font-size:.95rem;line-height:1.5}.resume-parser__textarea:disabled{opacity:.55;background:var(--pw-canvas)}.resume-parser__subhead{margin-top:1.75rem}.resume-parser__actions{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.resume-parser__error{color:var(--pw-error);background:var(--pw-error-accent);border-radius:.375rem;margin-top:1.25rem;padding:.75rem 1rem}.resume-parser__score{margin-bottom:1rem;font-size:1.1rem}.resume-parser__meta{color:var(--pw-muted-text);font-size:.9rem}.resume-parser__block{margin-top:1.25rem}.resume-parser__block h3{margin-bottom:.4rem;font-size:1.05rem}.resume-parser__block ul{color:var(--pw-muted-text);margin-left:1.25rem}.resume-parser__recs{margin-left:1.25rem}.resume-parser__recs li{margin-bottom:.65rem}.resume-parser__sev--high{color:var(--pw-error);font-weight:600}.resume-parser__sev--medium{color:#b45309;font-weight:600}.resume-parser__sev--low{color:var(--pw-muted-text);font-weight:600}.resume-parser__fix{color:var(--pw-muted-text);margin-top:.15rem;font-size:.92rem;display:block}.resume-parser__back{margin-top:2rem}.pw-chat{z-index:10000;pointer-events:auto;right:max(.5rem, env(safe-area-inset-right,0px));bottom:max(.75rem, env(safe-area-inset-bottom,0px));font-family:var(--pw-font-sans), serif;direction:ltr;flex-direction:column;align-items:flex-end;gap:.5rem;display:flex;position:fixed}.pw-chat__toggle{cursor:pointer;background:linear-gradient(135deg, var(--pw-primary) 0%, var(--pw-primary-mid) 100%);width:3.25rem;height:3.25rem;color:var(--pw-light-text);box-shadow:var(--pw-shadow-lg);border:none;border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,box-shadow .15s;display:flex}.pw-chat__toggle:hover{box-shadow:var(--pw-shadow-md), 0 0 0 3px var(--pw-accent-muted);transform:scale(1.04)}.pw-chat__toggle:active{transform:scale(.98)}.pw-chat__toggle-icon{width:1.35rem;height:1.35rem}dialog.pw-chat__panel{top:auto;left:auto;right:max(.5rem, env(safe-area-inset-right,0px));bottom:calc(max(.75rem, env(safe-area-inset-bottom,0px)) + 3.25rem + .5rem);background:var(--pw-surface);border:1px solid var(--pw-border);width:min(22rem,100vw - 1.25rem);max-height:min(28rem,100vh - 6rem);box-shadow:var(--pw-shadow-lg);border-radius:.75rem;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;overflow:hidden;transform:none}dialog.pw-chat__panel:not([open]){display:none!important}.pw-chat__header{background:var(--pw-primary);color:var(--pw-light-text);justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.pw-chat__title{letter-spacing:-.02em;font-size:.9375rem;font-weight:700}.pw-chat__close{width:2rem;height:2rem;color:var(--pw-light-text);cursor:pointer;background:#ffffff1f;border:none;border-radius:.375rem;flex-shrink:0;justify-content:center;align-items:center;font-size:1.25rem;line-height:1;transition:background-color .15s;display:flex}.pw-chat__close:hover{background:#ffffff38}.pw-chat__body{flex-direction:column;flex:1;gap:.65rem;min-height:10rem;padding:.75rem;display:flex;overflow-y:auto}.pw-chat__msg{white-space:pre-wrap;word-break:break-word;border-radius:.625rem;max-width:95%;padding:.55rem .7rem;font-size:.875rem;line-height:1.5}.pw-chat__msg--assistant{background:var(--pw-table-even);color:var(--pw-dark-text);border:1px solid var(--pw-border);align-self:flex-start}.pw-chat__msg--pending{opacity:.75;font-style:italic}.pw-chat__send:disabled,.pw-chat__input:disabled{opacity:.65;cursor:not-allowed}.pw-chat__actions{flex-wrap:wrap;gap:.35rem;margin-top:.35rem;display:flex}.pw-chat__footer{border-top:1px solid var(--pw-border);background:var(--pw-surface);align-items:stretch;gap:.5rem;padding:.65rem .75rem;display:flex}.pw-chat__input{border:1px solid var(--pw-border);background:var(--pw-canvas);min-width:0;color:var(--pw-dark-text);border-radius:.5rem;flex:1;padding:.5rem .65rem;font-family:inherit;font-size:.875rem}.pw-chat__input::placeholder{color:var(--pw-muted-text)}.pw-chat__send{flex-shrink:0;padding:.5rem .85rem;font-size:.8125rem}.chess-page{max-width:52rem}.chess-mode{gap:.5rem;margin-top:1rem;display:flex}.chess-mode__btn{border:1px solid var(--pw-border);background:var(--pw-canvas);color:var(--pw-dark-text);cursor:pointer;border-radius:.5rem;padding:.45rem .9rem;font-size:.9rem}.chess-mode__btn:hover{border-color:var(--pw-accent)}.chess-mode__btn--active{background:var(--pw-accent-muted);border-color:var(--pw-accent);font-weight:600}.chess-square--locked{cursor:wait}.chess-layout{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;margin-top:1.5rem;display:flex}.chess-board{aspect-ratio:1;border:2px solid var(--pw-primary-mid);width:min(90vw,30rem);box-shadow:var(--pw-shadow-md);border-radius:.5rem;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);display:grid;overflow:hidden}.chess-square{cursor:pointer;border:none;justify-content:center;align-items:center;padding:0;font-size:clamp(1.5rem,6vw,2.4rem);line-height:1;transition:background-color .1s;display:flex;position:relative}.chess-square--light{background-color:#fefdf5}.chess-square--dark{background-color:#00642e}.chess-square--selected{background-color:var(--pw-accent)}.chess-square--target{box-shadow:inset 0 0 0 3px var(--pw-accent)}.chess-piece{-webkit-user-select:none;user-select:none}.chess-piece--w{color:#a3a6a8;text-shadow:0 0 2px #0f172ae6}.chess-piece--b{color:#1a1a1a;text-shadow:0 0 2px #fff9}.chess-dot{background-color:#0ea5e999;border-radius:50%;width:28%;height:28%;position:absolute}.chess-coord{color:#0f172a8c;pointer-events:none;font-size:.6rem;font-weight:600;position:absolute}.chess-coord--rank{top:2px;left:3px}.chess-coord--file{bottom:2px;right:3px}.chess-panel{flex-direction:column;flex:1;gap:1rem;min-width:12rem;display:flex}.chess-status{color:var(--pw-dark-text);font-size:1.05rem;font-weight:600}.chess-controls{gap:.75rem;display:flex}.chess-controls .button-outline:disabled{opacity:.5;cursor:not-allowed}.chess-captured{border:1px solid var(--pw-border);background:var(--pw-canvas);border-radius:.5rem;flex-direction:column;gap:.4rem;padding:.65rem .75rem;display:flex}.chess-captured__row{align-items:center;gap:.6rem;min-height:1.6rem;display:flex}.chess-captured__label{color:var(--pw-muted-text);flex:0 0 5.5rem;font-size:.8rem;font-weight:600}.chess-captured__pieces{flex-wrap:wrap;gap:.1rem;font-size:1.35rem;line-height:1;display:flex}.chess-captured__empty{color:var(--pw-muted-text);font-size:.9rem}.chess-moves h2{margin-bottom:.5rem;font-size:1rem}.chess-moves__empty{color:var(--pw-muted-text);font-size:.9rem}.chess-moves__list{max-height:18rem;color:var(--pw-dark-text);grid-template-columns:repeat(2,1fr);gap:.15rem 1rem;padding-left:1.4rem;font-size:.9rem;display:grid;overflow-y:auto}.chess-promotion{z-index:50;background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.chess-promotion__card{background:var(--pw-surface);box-shadow:var(--pw-shadow-lg);text-align:center;border-radius:.75rem;padding:1.25rem 1.5rem}.chess-promotion__card>p{margin-bottom:.75rem;font-weight:600}.chess-promotion__choices{gap:.5rem;display:flex}.chess-promotion__btn{border:1px solid var(--pw-border);background:var(--pw-canvas);cursor:pointer;color:var(--pw-dark-text);border-radius:.5rem;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem .75rem;font-size:1.8rem;display:flex}.chess-promotion__btn:hover{border-color:var(--pw-accent);background:var(--pw-accent-muted)}.chess-promotion__btn span{font-size:1.8rem}.game2048-page{max-width:52rem}.game2048-layout{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;margin-top:1.5rem;display:flex}.game2048-board{--pad:.55rem;--gap:.55rem;aspect-ratio:1;width:min(90vw,26rem);box-shadow:var(--pw-shadow-md);touch-action:none;-webkit-user-select:none;user-select:none;background:#bbada0;border-radius:.5rem;position:relative}.game2048-slots{gap:var(--gap);padding:var(--pad);box-sizing:border-box;grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);width:100%;height:100%;display:grid}.game2048-slot{background:#cdc1b4;border-radius:.35rem}.game2048-tiles{z-index:1;pointer-events:none;position:absolute;inset:0}.game2048-tile{z-index:1;width:calc((100% - 2 * var(--pad) - 3 * var(--gap)) / 4);height:calc((100% - 2 * var(--pad) - 3 * var(--gap)) / 4);transform:translate(calc(var(--pad) + var(--c) * (100% + var(--gap))), calc(var(--pad) + var(--r) * (100% + var(--gap))));transition:transform .12s ease-in;position:absolute;top:0;left:0}.game2048-tile--merged{z-index:2}.game2048-tile__inner{border-radius:.35rem;justify-content:center;align-items:center;width:100%;height:100%;font-size:clamp(1.1rem,5vw,1.85rem);font-weight:700;line-height:1;display:flex}.game2048-tile__inner--spawn{animation:.18s ease-out game2048-pop}.game2048-tile__inner--merge{animation:.18s ease-out game2048-merge}@keyframes game2048-pop{0%{transform:scale(.4)}to{transform:scale(1)}}@keyframes game2048-merge{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.game2048-tile{transition:none}.game2048-tile__inner--spawn,.game2048-tile__inner--merge{animation:none}}.game2048-cell--0{color:#0000;background:#cdc1b4}.game2048-cell--2{color:#776e65;background:#eee4da}.game2048-cell--4{color:#776e65;background:#ede0c8}.game2048-cell--8{color:#f9f6f2;background:#f2b179}.game2048-cell--16{color:#f9f6f2;background:#f59563}.game2048-cell--32{color:#f9f6f2;background:#f67c5f}.game2048-cell--64{color:#f9f6f2;background:#f65e3b}.game2048-cell--128{color:#f9f6f2;background:#edcf72;font-size:clamp(.95rem,4.2vw,1.55rem)}.game2048-cell--256{color:#f9f6f2;background:#edcc61;font-size:clamp(.95rem,4.2vw,1.55rem)}.game2048-cell--512{color:#f9f6f2;background:#edc850;font-size:clamp(.95rem,4.2vw,1.55rem)}.game2048-cell--1024{color:#f9f6f2;background:#edc53f;font-size:clamp(.8rem,3.6vw,1.3rem)}.game2048-cell--2048{color:#f9f6f2;background:#edc22e;font-size:clamp(.8rem,3.6vw,1.3rem)}.game2048-cell--super{color:#f9f6f2;background:#3c3a32;font-size:clamp(.7rem,3.2vw,1.15rem)}.game2048-panel{flex-direction:column;flex:1;gap:1rem;min-width:12rem;display:flex}.game2048-scores{gap:.75rem;display:flex}.game2048-score{border:1px solid var(--pw-border);background:var(--pw-canvas);text-align:center;border-radius:.5rem;flex:1;padding:.65rem .75rem}.game2048-score__label{letter-spacing:.04em;text-transform:uppercase;color:var(--pw-muted-text);font-size:.75rem;font-weight:600;display:block}.game2048-score__value{color:var(--pw-dark-text);font-size:1.35rem;font-weight:700;display:block}.game2048-status{color:var(--pw-dark-text);font-size:1.05rem;font-weight:600}.game2048-controls{gap:.75rem;display:flex}.game2048-controls .button-outline:disabled{opacity:.5;cursor:not-allowed}.game2048-help{color:var(--pw-muted-text);font-size:.9rem}.game2048-overlay{z-index:50;background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.game2048-overlay__card{background:var(--pw-surface);box-shadow:var(--pw-shadow-lg);text-align:center;border-radius:.75rem;min-width:14rem;padding:1.25rem 1.5rem}.game2048-overlay__card>p{margin-bottom:.75rem;font-weight:600}.game2048-overlay__actions{justify-content:center;gap:.5rem;display:flex}
