/* Generated by scripts/build_portfolio.py. Edit the source stylesheets. */
/* Self-hosted Latin subsets. Sources and licenses: images/fonts/README.md. */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/images/fonts/713ca32c3c8b.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/images/fonts/713ca32c3c8b.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/images/fonts/713ca32c3c8b.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/images/fonts/713ca32c3c8b.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/images/fonts/7e3d7e3c7de8.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/images/fonts/eb889034c083.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/images/fonts/86628368fe0c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Kalam';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/images/fonts/aeb2855702b3.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Kalam';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/images/fonts/291d51f3dff6.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Pirata One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/images/fonts/8d3c54597598.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Backbenchers Studio — a captain's log. Isolated from legacy showcase styles. */
:root{--paper:#eee8db;--paper-light:#f6f1e7;--ink:#252822;--muted:#66675d;--red:#b62f27;--red-bright:#ff3030;--line:#c9c4b7;--night:#202720;--gold:#d5b87f;--serif:'Libre Caslon Display',Georgia,serif;--display:'Barlow Condensed','Arial Narrow',Impact,sans-serif;--sans:'DM Sans',Arial,sans-serif;--mono:'IBM Plex Mono',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.65 var(--sans);-webkit-font-smoothing:antialiased}body::before{content:'';position:fixed;inset:0;z-index:20;pointer-events:none;opacity:.035;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='.91' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.65' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button{border:0}img{max-width:100%;height:auto;display:block}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.05}p+p{margin-top:18px}::selection{background:var(--red);color:white}[hidden]{display:none!important}:focus-visible{outline:3px solid #0066ff;outline-offset:5px}.wrap{width:min(1280px,calc(100% - 96px));margin-inline:auto}.eyebrow,.small-label{font:500 10px/1.5 var(--mono);letter-spacing:1.5px;text-transform:uppercase}.small-label{color:var(--muted);font-size:9px}.red{color:var(--red)}.gold{color:var(--gold)}.serif{font-family:var(--serif);font-weight:400;font-style:italic;letter-spacing:-2px;text-transform:none}.text-link{font-size:12px;font-weight:700;border-bottom:1px solid currentColor;padding-bottom:5px}.text-link:hover{color:var(--red)}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;min-height:49px;padding:14px 22px;background:transparent;border:1px solid var(--ink);font:600 12px/1.4 var(--sans);transition:background .2s,color .2s,transform .2s}.button span{font-size:20px;font-weight:400}.button:hover{background:var(--ink);color:var(--paper);transform:translateY(-2px)}.red-button{background:var(--red);color:var(--paper-light);border-color:var(--red)}.red-button:hover{background:#8f211c;border-color:#8f211c}.light-button{background:var(--paper);color:var(--ink);border-color:var(--paper)}.light-button:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}.signal{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-right:8px}.skip-link{position:fixed;left:20px;top:-100px;z-index:100;background:var(--ink);color:white;padding:10px 20px}.skip-link:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:var(--red);z-index:70;transform:scaleX(0);transform-origin:left}
/* Navigation */
.site-header{position:sticky;top:0;z-index:50;background:rgba(238,232,219,.97);border-bottom:1px solid var(--line)}.header-inner{width:min(1440px,calc(100% - 64px));margin:auto;display:flex;align-items:center;justify-content:space-between;height:86px;gap:24px}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.brand img{background:var(--ink);padding:8px;width:54px;height:48px;object-fit:contain}.brand>span{font:800 19px/.95 var(--display);letter-spacing:.5px}.brand small{display:block;font:400 7px/1.5 var(--mono);letter-spacing:.8px;margin-top:6px}.main-nav{display:flex;gap:30px;font-size:12px;font-weight:600}.main-nav a{padding:10px 0;position:relative}.main-nav a::after{content:'';position:absolute;bottom:2px;left:0;right:100%;height:1px;background:var(--red);transition:right .2s}.main-nav a:hover::after,.main-nav a[aria-current="location"]::after{right:0}.header-tools{display:flex;align-items:center;gap:22px}.motion-toggle{font:400 9px var(--mono);padding:10px 0;background:none;display:flex;gap:6px;align-items:center}.motion-toggle>span:first-child{font-size:23px;line-height:1}.header-contact{font:600 10px var(--mono);border-bottom:1px solid var(--ink);padding:7px 0}.menu-toggle{display:none;font:500 10px var(--mono);background:none;padding:10px 0}
/* Home port */
.edition{display:flex;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);padding:15px 0;font:400 8px var(--mono);letter-spacing:1px}.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;align-items:center;min-height:660px;padding-top:32px}.hero-copy{padding:26px 0 36px;position:relative;z-index:2}.hero-copy>.eyebrow{font-size:9px;letter-spacing:1.25px;margin-bottom:25px}.hero h1{font:800 clamp(66px,7.9vw,114px)/.88 var(--display);letter-spacing:-2px}.hero-name{font:700 20px/1.4 var(--sans);margin-top:27px}.hero-name>span{font-size:11px;font-weight:400;color:var(--muted);display:inline-block;margin-left:10px}.hero-intro{font-size:16px;line-height:1.65;margin-top:12px}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:28px}.hero-footnote{font:400 9px var(--mono);color:var(--muted);margin-top:23px}.voyage-art{position:relative;min-width:0;height:620px}.sea-chart{position:absolute;width:112%;height:100%;left:-6%;top:0;color:#9b9d86;overflow:visible}.hero-ship{position:absolute;width:64%;max-width:400px;top:56px;left:17%;filter:drop-shadow(6px 18px 0 rgba(69,75,53,.07));animation:ship-sway 7s ease-in-out infinite;transform-origin:50% 85%}.chart-label{position:absolute;top:15px;left:26%;font:500 8px var(--mono);letter-spacing:2px;transform:rotate(-5deg)}.chart-caption{position:absolute;bottom:9px;left:7%;font:400 8px var(--mono);letter-spacing:1px}.map-pin{position:absolute;z-index:3;background:var(--paper);display:flex;align-items:center;gap:9px;font:500 8px var(--mono);letter-spacing:.6px;padding:5px 6px;border-bottom:1px solid var(--ink);transition:color .2s,transform .2s}.map-pin:hover{color:var(--red);transform:translateY(-3px)}.map-pin>span{width:23px;height:23px;background:var(--red);color:var(--paper);border:1px solid var(--paper);outline:1px solid var(--red);border-radius:50%;display:grid;place-content:center;font-size:9px}.map-pin>b{font-size:14px}.pin-one{left:0;top:143px;transform:rotate(-5deg)}.pin-two{right:-5px;top:340px;transform:rotate(3deg)}.pin-three{left:5px;bottom:66px;transform:rotate(-4deg)}.captain-stamp{position:absolute;bottom:36px;right:12px;transform:rotate(-14deg);width:115px;height:115px;border:2px solid var(--red);outline:1px solid var(--red);outline-offset:-7px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--red);background:var(--paper)}.captain-stamp span{font:600 7px var(--mono);letter-spacing:1px}.captain-stamp img{width:49px;height:39px;margin:6px 0;background:var(--ink);padding:4px}.compass-needle{transform-origin:519px 99px;animation:compass-drift 12s ease-in-out infinite}.hero-bottom{display:flex;align-items:center;justify-content:space-between;font:400 8px var(--mono);letter-spacing:1px;border-top:1px solid var(--line);padding:19px 0 25px}.hero-bottom>a{display:flex;gap:30px;align-items:center}.hero-bottom>a>span{font-size:18px}.ribbon{overflow:hidden;background:var(--red);color:var(--paper);border-top:1px solid #a5201a;border-bottom:1px solid #a5201a;padding:10px 0}.ribbon-track{display:flex;width:max-content;animation:ribbon 40s linear infinite}.ribbon-track>span{white-space:nowrap;font:600 17px var(--display);letter-spacing:2px;display:flex;align-items:center;gap:42px;padding-right:42px}.ribbon i{font-size:18px;font-style:normal;color:#e1b296}
/* Shared sections */
.section-space{padding-top:94px;padding-bottom:100px}.section-dark{background:var(--night);color:var(--paper)}.section-dark .section-top{border-color:#485046}.section-dark .small-label{color:#aeb2a0}.section-top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:40px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:40px}.section-heading h2,.about h2,.tribute h2{font:700 61px/.94 var(--display);letter-spacing:-.7px}.section-heading h2 .serif,.about h2 .serif,.tribute h2 .serif{font-size:63px;line-height:1.05}.section-heading>p{font-size:13px;line-height:1.8;max-width:355px;color:var(--muted);margin-bottom:4px}.section-dark .section-heading>p{color:#bfc2b4}
/* Flagship */
.flagship{padding:64px 0}.flagship-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:64px;align-items:center}.flagship-visual{position:relative;overflow:hidden;border:1px solid #555d4c;background:#151a15}.flagship-visual img{width:100%;aspect-ratio:1.16;object-fit:cover;object-position:center;transition:transform .5s}.flagship-visual:hover img{transform:scale(1.025)}.visual-tag{position:absolute;top:18px;left:18px;background:var(--paper);color:var(--ink);font:500 9px var(--mono);letter-spacing:1px;padding:8px 12px;transform:rotate(-3deg);pointer-events:none}.visual-bottom{position:absolute;bottom:0;left:0;right:0;background:#161e15e0;padding:15px;text-align:center;font:400 8px var(--mono);letter-spacing:1px;pointer-events:none}.flagship-copy h2{font:800 86px/.86 var(--display);letter-spacing:0;margin:18px 0 28px}.flagship-copy h2 .serif{display:block;font-size:42px;letter-spacing:-1px;margin-top:13px;line-height:1}.flagship-copy>p:not(.eyebrow):not(.status-note){font-size:13px;line-height:1.8;color:#d3d6c8;max-width:420px}.flagship-copy .status-note{font:400 9px var(--mono);letter-spacing:1px;color:var(--gold);margin:26px 0 22px}.status-note .signal{background:var(--gold)}.history-strip{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #485046;margin-top:42px;padding-top:27px}.history-strip>div{padding:0 26px;border-left:1px solid #485046}.history-strip>div:first-child{padding-left:0;border-left:0}.history-year{font:700 30px var(--display);color:var(--gold);letter-spacing:1px}.history-strip p{font-size:12px;margin:3px 0}.history-strip a{font:400 8px var(--mono);color:#afb6a4;border-bottom:1px solid #606853;padding-bottom:2px}.history-strip a:hover{color:white}
/* Searchable fleet */
.fleet-controls{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px 0}.filter-buttons{display:flex;gap:3px;flex-wrap:wrap}.filter{min-height:38px;padding:9px 11px;background:none;font:500 10px var(--sans);white-space:nowrap;border:1px solid transparent}.filter sup{font:400 8px var(--mono);margin-left:5px;vertical-align:super;opacity:.7}.filter.active{background:var(--ink);color:var(--paper)}.filter:hover:not(.active){border-color:var(--ink)}.search-box{display:flex;align-items:center;gap:9px;border-bottom:1px solid #9c9e8d;padding:4px 0;min-width:185px;flex:1;max-width:245px}.search-box>span:first-child{font-size:23px;line-height:1}.search-box input{border:0;background:none;padding:6px 0;font-size:11px;min-width:0;width:100%;color:var(--ink)}.search-box kbd{font:400 9px var(--mono);border:1px solid var(--line);padding:0 5px;color:var(--muted)}.fleet-meta{display:flex;justify-content:space-between;font:400 8px/1.5 var(--mono);color:var(--muted);letter-spacing:.5px;padding:18px 0}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 24px}.project-card{min-width:0;border-bottom:1px solid var(--line);padding-bottom:20px;transition:border-color .25s}.project-cover{display:block;position:relative;overflow:hidden;background:#ded9cb}.project-image{aspect-ratio:1.5;object-fit:cover;object-position:top;width:100%;transition:transform .65s cubic-bezier(.2,.7,.2,1),filter .4s;filter:saturate(.7)}.project-card:hover .project-image{transform:scale(1.045);filter:saturate(1)}.project-card:hover{border-color:var(--red)}.project-number{position:absolute;top:12px;left:12px;font:500 8px var(--mono);letter-spacing:.6px;background:var(--paper-light);color:var(--ink);padding:6px 8px;box-shadow:0 1px 4px #0002}.cover-arrow{position:absolute;right:12px;bottom:12px;display:grid;place-content:center;width:31px;height:31px;border-radius:50%;background:var(--paper);color:var(--ink);font-size:17px;transform:rotate(-45deg);opacity:0;transition:opacity .2s,transform .3s}.project-card:hover .cover-arrow,.project-card:focus-within .cover-arrow{opacity:1;transform:rotate(0)}.project-body{padding-top:16px}.project-eyebrow{font:400 8px/1.6 var(--mono);text-transform:uppercase;color:var(--muted);letter-spacing:.5px}.project-card h3{font:600 27px/1.15 var(--display);margin:7px 0 10px;letter-spacing:.1px}.project-card h3 a{display:flex;align-items:center;justify-content:space-between;gap:8px}.project-card h3 span{font:400 20px var(--sans);color:var(--red)}.project-summary{font-size:12px;line-height:1.75;color:var(--muted);min-height:63px;max-width:96%}.project-status{font:400 8px/1.5 var(--mono);margin-top:18px;display:flex;align-items:center;gap:6px;color:#565d4a}.status-dot{display:inline-block;flex-shrink:0;width:4px;height:4px;background:#787d5e}.project-image-contain{object-fit:contain;padding:25px;background:#e3dbcb}.concept-art{width:100%;aspect-ratio:1.5;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-direction:column;padding:30px;position:relative;font:400 8px var(--mono);letter-spacing:2px}.som-art{background:#193d37;color:#e3dfc5}.concept-art strong{font:800 70px var(--display);letter-spacing:-2px;line-height:1.2}.som-art strong span{color:#e8b95e}.concept-bars{display:flex;align-items:flex-end;gap:10px;height:36px;margin:5px 0 14px}.concept-bars i{background:#78a289;width:24px;height:23px}.concept-bars i:nth-child(2){height:30px}.concept-bars i:nth-child(3){height:36px;background:#e8b95e}.concept-bars i:nth-child(4){height:20px}.concept-bars i:nth-child(5){height:32px}.concept-art small{font-size:6px;letter-spacing:.5px;position:absolute;bottom:10px}.epst-art{background:#cbd6cb;color:#263a2f}.epst-art strong{margin:15px}.epst-art strong span{color:#9d382c;margin-left:12px}.fleet-more{display:flex;justify-content:center;margin-top:36px}.fleet-more .button{min-width:280px}.empty-state{text-align:center;padding:70px 20px}.empty-compass{font-size:48px;color:var(--red)}.empty-state h3{font:400 40px var(--serif)}.empty-state p{margin:15px auto 25px;color:var(--muted);max-width:400px}
/* Memorial */
.tribute{position:relative;overflow:hidden;min-height:570px}.tribute-image{position:absolute;inset:0 0 0 38%;opacity:.7}.tribute-image img{width:100%;height:100%;object-fit:cover;object-position:center}.tribute::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,var(--night) 0%,var(--night) 22%,#202720e8 40%,#20272040 80%)}.tribute-inner{position:relative;z-index:1;padding:70px 0;display:flex}.tribute-copy{max-width:520px}.tribute .eyebrow{font-size:9px;letter-spacing:1px}.tribute h2{margin:25px 0 30px}.tribute p:not(.eyebrow){font-size:13px;line-height:1.8;color:#d3d6c8;max-width:445px}.tribute-credit{font:400 10px/1.9 var(--mono)!important;margin:28px 0!important;border-left:2px solid var(--gold);padding-left:16px}.tribute .button{font-size:11px}
/* Captain */
.about-grid{display:grid;grid-template-columns:.8fr 1fr;gap:105px;align-items:center;padding:12px 45px 15px}.captain-poster{background:#d5c4a5;max-width:335px;padding:16px 20px 18px;border:1px solid #a39980;box-shadow:9px 10px 0 #2528220c;transform:rotate(-3deg);text-align:center;position:relative;margin:0 auto}.poster-top{font:800 67px/.95 var(--display);letter-spacing:8px;display:block}.poster-sub{font:500 7px var(--mono);letter-spacing:1px;display:block;margin:8px 0 13px}.captain-poster img{width:100%;height:295px;object-fit:cover;object-position:top;border:2px solid #6d624b;filter:sepia(.18)}.poster-name{display:block;font:800 31px var(--display);letter-spacing:1px;margin:9px 0 2px}.poster-bottom{font:400 7px var(--mono);letter-spacing:1px}.poster-seal{position:absolute;right:-16px;bottom:70px;width:67px;height:67px;border:3px double var(--red);border-radius:50%;display:grid;place-content:center;font:600 12px/1.2 var(--mono);color:var(--red);transform:rotate(-18deg)}.about-copy h2{margin-bottom:25px}.about-copy p{font-size:13px;line-height:1.8;color:var(--muted)}.about-copy .large-copy{font-size:16px;color:var(--ink)}.about-copy .captain-note{font:italic 25px/1.4 var(--serif);color:var(--red);margin:25px 0}.about-links{display:flex;gap:28px;align-items:center;margin-top:28px}.journey{display:grid;grid-template-columns:repeat(3,1fr);margin-top:70px;border-top:1px solid var(--line);padding-top:27px;gap:45px}.journey span{font:400 8px var(--mono);letter-spacing:1px;color:var(--red)}.journey h3{font:600 24px var(--display);margin:12px 0 8px}.journey p{font-size:12px;color:var(--muted)}
/* Skills & journal */
.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px 45px}.skill{border-top:1px solid #515749;padding-top:18px}.skill-number{font:400 9px var(--mono);color:var(--gold)}.skill h3{font:600 26px var(--display);margin:12px 0}.skill .skill-tools{font:400 10px/1.9 var(--mono);color:var(--gold);min-height:38px}.skill p{font-size:12px;color:#b7beae;line-height:1.75}.skill a{display:inline-block;font-size:10px;margin-top:20px;border-bottom:1px solid #707663;padding-bottom:5px}.skill a:hover{color:var(--gold)}.journal-link{display:flex;align-items:center;gap:35px;padding:12px 0 20px}.journal-icon{width:135px;height:135px;flex-shrink:0;border:1px solid var(--line);display:grid;place-content:center;font:500 35px var(--mono);color:var(--red);background:repeating-linear-gradient(0deg,transparent 0 22px,#cac8b933 23px 24px)}.journal-link h2{font:600 39px/.95 var(--display);margin:15px 0}.journal-link h2 .serif{font-size:43px;letter-spacing:-.6px}.journal-link p{font-size:12px;color:var(--muted)}.journal-link .eyebrow{font-size:8px}.journal-arrow{font-size:48px;color:var(--red);margin-left:auto;transition:transform .2s}.journal-link:hover .journal-arrow{transform:translate(5px,-5px)}
/* Contact */
.contact{background:var(--red);color:var(--paper);padding:50px 0 26px;overflow:hidden}.contact .section-top{border-color:#de7c66;margin-bottom:30px}.contact .small-label{color:#f1c4ad}.contact-intro{font-size:14px}.contact h2{font:800 clamp(85px,12vw,165px)/1 var(--display);letter-spacing:-3px;margin:4px 0 26px}.contact h2 .serif{font-size:1.2em;letter-spacing:-6px}.contact-email{font-size:22px;display:inline-flex;align-items:center;gap:70px;border-bottom:1px solid #e2977e;padding-bottom:15px}.contact-email span{font-size:32px}.contact-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:55px;font:400 8px var(--mono);letter-spacing:1px}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px 0;font:400 8px var(--mono)}.footer-brand{display:flex;align-items:center;gap:10px;font-weight:500;letter-spacing:.4px}.footer-brand img{background:var(--ink);padding:5px;width:38px;height:33px}.site-footer p{font-size:8px;color:var(--muted)}
/* Project dossiers */
.case-page{padding-top:38px}.back-link{font:400 9px var(--mono);letter-spacing:1px;display:inline-block;margin-bottom:44px}.back-link:hover{color:var(--red)}.case-top{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:22px;margin-bottom:24px}.case-page h1{font:700 clamp(52px,7.5vw,104px)/.95 var(--display);letter-spacing:-1px;max-width:1100px}.case-deck{font:400 28px/1.4 var(--serif);max-width:820px;margin-top:25px}.case-org{margin:23px 0 34px;color:var(--muted)}.case-hero{border:1px solid var(--line);background:#ded9cb}.case-hero img{max-height:570px;aspect-ratio:2.1;object-position:top;filter:none}.case-hero .concept-art{aspect-ratio:3;min-height:270px}.case-hero .project-image-contain{object-position:center}.case-grid{display:grid;grid-template-columns:1fr 290px;gap:95px;margin:58px 0 65px;align-items:start}.case-main section{margin-bottom:42px}.case-main h2{font:600 33px/1.15 var(--display);margin:12px 0 18px}.case-main p:not(.eyebrow),.feature-list{font-size:15px;line-height:1.85;color:#565c50}.feature-list{list-style:none;padding:0;margin:0}.feature-list li{padding:14px 0 14px 25px;border-top:1px solid var(--line);position:relative}.feature-list li::before{content:'↗';position:absolute;left:0;color:var(--red)}.credit-note{padding:24px;border:1px solid var(--line);background:#e5dfd0}.credit-note p:not(.eyebrow){font-size:12px;line-height:1.8;margin-top:10px}.case-sidebar{position:sticky;top:115px}.stack-list{list-style:none;display:flex;gap:8px;flex-wrap:wrap;padding:0;margin:16px 0 28px}.stack-list li{font:400 10px var(--mono);border:1px solid var(--line);padding:8px}.case-sidebar .button{width:100%;margin-bottom:30px}.case-sources{border-top:1px solid var(--line);padding-top:22px}.case-sources>p:not(.eyebrow){font-size:12px;line-height:1.8;color:var(--muted);margin-top:18px}.source-list{padding:0;list-style:none}.source-list li{margin-bottom:15px;font-size:11px}.source-list a{border-bottom:1px solid var(--line);padding-bottom:2px}.source-list a:hover{color:var(--red)}.case-date{font:400 8px var(--mono);color:var(--muted);margin-top:30px;letter-spacing:1px}.private-label{display:block;font:400 10px/1.8 var(--mono);border:1px solid var(--line);padding:15px;margin-bottom:25px;color:var(--red)}.next-voyage{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);padding:25px 0;margin-bottom:60px}.next-voyage>a{display:flex;justify-content:space-between;gap:30px;font:600 44px var(--display);margin-top:14px}.next-voyage>a span{color:var(--red)}
/* Résumé */
.resume-page{max-width:1040px;padding-top:30px;padding-bottom:70px}.resume-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:40px}.resume-toolbar .back-link{margin:0}.resume-page h1{font:700 76px/1.05 var(--display);margin:18px 0}.resume-title{font-size:21px}.resume-contact{font:400 11px/1.8 var(--mono);margin:24px 0 40px}.resume-contact a{border-bottom:1px solid var(--line)}.resume-page section{border-top:1px solid var(--line);padding-top:24px;margin-top:30px}.resume-page h2{font:700 30px var(--display);margin-bottom:20px}.resume-projects{display:grid;grid-template-columns:1fr 1fr;gap:28px 40px}.resume-project h3{font:600 24px var(--display);margin-bottom:5px}.resume-project h3 a{border-bottom:1px solid var(--line)}.resume-org{font:400 9px/1.7 var(--mono);color:var(--red);text-transform:uppercase}.resume-project p+p{margin-top:10px;font-size:13px;line-height:1.8}.resume-skills{padding-left:18px;font-size:13px;line-height:1.8}.resume-skills li{margin-bottom:10px}
@keyframes ship-sway{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-12px) rotate(1deg)}}@keyframes compass-drift{0%,100%{transform:rotate(-20deg)}50%{transform:rotate(25deg)}}@keyframes ribbon{to{transform:translateX(-50%)}}@keyframes reveal{from{opacity:.35;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.project-card.just-revealed{animation:reveal .4s both}.motion-paused *,.motion-paused *::before,.motion-paused *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-paused{scroll-behavior:auto}
@media(min-width:1600px){.hero-grid{min-height:710px}.voyage-art{height:660px}.hero-ship{top:76px}.hero h1{font-size:122px}}
@media(max-width:1150px){.wrap{width:calc(100% - 64px)}.main-nav{gap:20px}.header-tools{gap:16px}.hero-grid{min-height:610px}.hero h1{font-size:93px}.voyage-art{height:570px}.hero-ship{top:80px;width:70%;left:15%}.chart-label{font-size:7px;left:22%;top:35px}.map-pin{font-size:7px}.pin-two{right:-10px;top:310px}.captain-stamp{width:100px;height:100px;right:0;bottom:45px}.hero-name>span{display:block;margin:2px 0 0}.hero-copy>.eyebrow{font-size:8px}.hero-actions{gap:20px}.hero-actions .text-link{font-size:11px}.flagship-grid{gap:40px}.flagship-copy h2{font-size:76px}.flagship-copy h2 .serif{font-size:36px}.flagship-visual img{aspect-ratio:.98}.about-grid{gap:60px;padding-inline:10px}.section-heading h2,.about h2,.tribute h2{font-size:55px}.section-heading h2 .serif,.about h2 .serif,.tribute h2 .serif{font-size:56px}.project-card h3{font-size:25px}.project-summary{font-size:11px;min-height:60px}.filter{font-size:9px;padding-inline:8px}.search-box{max-width:200px}.case-grid{gap:55px;grid-template-columns:1fr 250px}}
@media(max-width:900px){.header-inner{width:calc(100% - 40px);height:74px;gap:16px}.brand>span{font-size:16px}.brand img{width:43px;height:42px}.main-nav{gap:15px;font-size:10px}.header-contact{display:none}.header-tools{gap:15px}.edition span:last-child{display:none}.hero-grid{gap:0;min-height:555px}.hero h1{font-size:76px}.hero-copy>.eyebrow{letter-spacing:.5px;font-size:7px}.hero-name{font-size:18px}.hero-intro{font-size:13px}.hero-actions{gap:18px;flex-wrap:wrap}.hero-actions .button{font-size:11px;padding:12px 16px;gap:20px}.hero-footnote{font-size:7px}.voyage-art{height:505px}.hero-ship{top:75px;width:74%;left:13%}.pin-one{top:137px;left:-8px}.pin-two{top:285px;right:-8px}.pin-three{bottom:68px;font-size:6px;left:0}.captain-stamp{width:85px;height:85px;bottom:18px}.captain-stamp span{font-size:5px}.captain-stamp img{width:39px;height:31px}.chart-caption{font-size:6px;left:0;bottom:0}.chart-label{font-size:6px;top:40px;left:16%}.hero-bottom{font-size:7px;letter-spacing:.4px}.hero-bottom>a{gap:12px}.section-space{padding-top:70px;padding-bottom:70px}.flagship-grid{gap:30px}.flagship-copy h2{font-size:60px}.flagship-copy h2 .serif{font-size:31px}.flagship-copy>p:not(.eyebrow):not(.status-note){font-size:12px}.flagship-copy>.eyebrow{font-size:8px}.flagship-visual img{aspect-ratio:.8}.history-strip a{font-size:7px}.section-heading>p{max-width:265px;font-size:12px}.section-heading h2,.about h2,.tribute h2{font-size:48px}.section-heading h2 .serif,.about h2 .serif,.tribute h2 .serif{font-size:50px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 22px}.fleet-controls{gap:14px}.search-box{max-width:none;flex-basis:100%}.project-summary{font-size:12px}.about-grid{gap:42px;padding:0;grid-template-columns:.85fr 1fr}.captain-poster{padding:14px;width:100%}.poster-top{font-size:51px}.captain-poster img{height:235px}.poster-name{font-size:23px}.poster-sub{font-size:6px;letter-spacing:.4px}.about-copy p{font-size:12px}.about-copy .large-copy{font-size:14px}.about-links{gap:16px;flex-wrap:wrap}.journey{gap:25px;margin-top:50px}.skills-grid{gap:30px}.skill h3{font-size:23px}.skill .skill-tools{font-size:9px;min-height:54px}.journal-icon{width:110px;height:110px}.journal-link h2{font-size:33px}.journal-link h2 .serif{font-size:36px}.site-footer{flex-wrap:wrap}.site-footer p{font-size:7px}.site-footer>a:last-child{font-size:7px}.case-grid{gap:35px;grid-template-columns:1fr 215px}.case-main p:not(.eyebrow),.feature-list{font-size:13px}.case-deck{font-size:25px}.case-hero img{aspect-ratio:1.6}.resume-page h1{font-size:60px}}
@media(max-width:650px){html{scroll-padding-top:83px}.wrap{width:calc(100% - 40px)}.header-inner{height:68px}.brand>span{font-size:15px}.brand small{font-size:6px;letter-spacing:.5px}.brand img{width:39px;height:37px;padding:6px}.header-tools{gap:15px}.motion-toggle{font-size:0;gap:0}.motion-toggle>span:first-child{font-size:24px}.motion-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.menu-toggle{display:flex;align-items:center;gap:8px;font-size:9px}.main-nav{position:absolute;top:68px;left:0;right:0;background:var(--paper);border-bottom:1px solid var(--ink);padding:18px 20px;display:flex;gap:15px;justify-content:space-between;flex-wrap:wrap;font-size:12px}.js .main-nav:not(.is-open){display:none}body:not(.js) .site-header{margin-bottom:74px}.edition{padding:13px 0;font-size:6px;letter-spacing:.5px;gap:15px}.edition span:nth-child(2){text-align:right}.hero-grid{grid-template-columns:1fr;min-height:auto;padding-top:12px}.hero-copy{padding:26px 0 0}.hero-copy>.eyebrow{font-size:8px;letter-spacing:.7px;margin-bottom:21px}.hero h1{font-size:clamp(60px,17.3vw,109px);letter-spacing:-1.5px}.hero-name{margin-top:22px;font-size:20px}.hero-name>span{display:inline-block;margin-left:6px;font-size:10px}.hero-intro{font-size:15px;margin-top:12px}.hero-actions{margin-top:24px;gap:23px}.hero-actions .button{padding:12px 19px;font-size:12px}.hero-actions .text-link{font-size:11px}.hero-footnote{font-size:8px;margin-top:20px}.voyage-art{height:465px;width:min(100%,410px);margin:12px auto 7px}.sea-chart{left:-3%;width:106%;top:0}.hero-ship{width:66%;max-height:395px;object-fit:contain;left:17%;top:30px}.chart-label{top:8px;left:20%;font-size:6px}.pin-one{left:0;top:132px;font-size:7px}.pin-two{right:-2px;top:255px;font-size:7px}.pin-three{left:0;bottom:52px;font-size:7px}.captain-stamp{bottom:26px;width:90px;height:90px;right:0}.captain-stamp span{font-size:5.5px}.chart-caption{font-size:6px;left:8px;bottom:3px}.hero-bottom{padding:16px 0 20px;gap:10px;align-items:flex-start}.hero-bottom>span{max-width:160px;font-size:6px;line-height:1.7}.hero-bottom>a{max-width:135px;text-align:right;line-height:1.7;font-size:6px}.ribbon-track>span{font-size:14px;gap:25px;padding-right:25px}.ribbon{padding:8px 0}.section-top{gap:18px;margin-bottom:28px;padding-bottom:15px;align-items:flex-start}.section-top>.eyebrow{font-size:8px;letter-spacing:.8px}.section-top>.small-label{font-size:6px;max-width:135px;text-align:right;letter-spacing:.5px}.flagship{padding:40px 0}.flagship-grid{grid-template-columns:1fr;gap:30px}.flagship-visual img{aspect-ratio:1.2;object-position:center}.flagship-copy h2{font-size:76px;margin-top:17px}.flagship-copy h2 .serif{font-size:39px}.flagship-copy>p:not(.eyebrow):not(.status-note){font-size:13px}.flagship-copy .button{width:100%}.visual-bottom{font-size:6px}.history-strip{gap:0;margin-top:32px;padding-top:20px}.history-strip>div{padding:0 10px}.history-year{font-size:24px}.history-strip p{font-size:10px;line-height:1.5;margin:4px 0 8px}.history-strip a{font-size:7px;line-height:1.7;display:inline-block}.section-space{padding:52px 0}.section-heading{display:block;margin-bottom:30px}.section-heading h2,.about h2,.tribute h2{font-size:48px;line-height:.95}.section-heading h2 .serif,.about h2 .serif,.tribute h2 .serif{font-size:53px}.section-heading>p{max-width:100%;font-size:12px;margin-top:22px}.section-heading>p br{display:none}.filter-buttons{gap:3px}.filter{font-size:9px;padding:8px;min-height:36px}.filter sup{font-size:7px;margin-left:3px}.fleet-controls{padding:10px 0 14px;gap:12px}.search-box{font-size:12px}.fleet-meta{font-size:7px;gap:12px;padding:16px 0}.fleet-meta>span:last-child{font-size:6px;max-width:128px;text-align:right}.project-grid{gap:28px;grid-template-columns:1fr}.project-image{aspect-ratio:1.58}.project-summary{min-height:0;max-width:100%;font-size:12px}.project-card h3{font-size:28px}.project-body{padding-top:13px}.project-card{padding-bottom:18px}.project-status{margin-top:13px}.cover-arrow{opacity:1;transform:none;width:27px;height:27px;font-size:16px}.project-number{font-size:7px;top:10px;left:10px}.concept-art{aspect-ratio:1.58}.tribute-image{inset:0;opacity:.3}.tribute::after{background:linear-gradient(90deg,#202720f0,#20272088)}.tribute-inner{padding:48px 0}.tribute-copy{max-width:100%}.tribute .eyebrow{font-size:7px}.tribute h2{margin:23px 0}.tribute p:not(.eyebrow){font-size:12px;max-width:100%}.tribute-credit{font-size:9px!important;margin:24px 0!important}.tribute .button{font-size:11px;width:100%}.about-grid{grid-template-columns:1fr;gap:43px}.captain-poster{max-width:280px;margin:8px auto 0;padding:16px}.poster-top{font-size:59px}.captain-poster img{height:270px}.poster-name{font-size:28px}.about-copy p{font-size:13px}.about-copy .large-copy{font-size:15px}.about-copy h2{margin-bottom:22px}.about-copy .captain-note{font-size:25px}.about-links{flex-wrap:nowrap;gap:25px}.journey{grid-template-columns:1fr;gap:22px;margin-top:35px}.journey>div{border-bottom:1px solid var(--line);padding-bottom:20px}.journey h3{margin:8px 0 6px}.skills-grid{grid-template-columns:1fr;gap:25px}.skill h3{font-size:27px}.skill .skill-tools{min-height:0;font-size:10px}.skill p{font-size:12px}.skill a{margin-top:15px}.skill-number{font-size:8px}.logbook .section-top .text-link{font-size:9px}.journal-link{gap:17px;align-items:flex-start}.journal-icon{width:47px;height:57px;font-size:17px;margin-top:2px}.journal-link h2{font-size:28px;line-height:1}.journal-link h2 .serif{font-size:33px;line-height:1}.journal-link .eyebrow{font-size:6px;letter-spacing:.5px}.journal-arrow{display:none}.journal-link p{font-size:11px}.journal-link h2 br{display:none}.contact{padding:38px 0 24px}.contact-intro{font-size:12px}.contact h2{font-size:clamp(58px,15vw,94px);letter-spacing:-1px;margin:18px 0 25px}.contact h2 .serif{letter-spacing:-3px}.contact-email{font-size:17px;width:100%;gap:20px;justify-content:space-between;padding-bottom:12px}.contact-email span{font-size:26px}.contact-bottom{margin-top:35px;font-size:6px;letter-spacing:.5px;gap:15px}.site-footer{padding:20px 0;gap:17px}.footer-brand{font-size:7px}.site-footer p{order:3;flex-basis:100%;font-size:7px;border-top:1px solid var(--line);padding-top:13px}.site-footer>a:last-child{font-size:6px}.case-page{padding-top:25px}.back-link{font-size:8px;margin-bottom:28px}.case-top{padding-top:16px;margin-bottom:20px}.case-top .eyebrow{font-size:8px}.case-top .small-label{font-size:7px;text-align:right;max-width:130px}.case-page h1{font-size:56px}.case-deck{font-size:24px;margin-top:20px}.case-org{font-size:8px;margin:20px 0 25px}.case-hero img{aspect-ratio:1.35}.case-grid{display:flex;flex-direction:column;gap:30px;margin:35px 0 40px}.case-main h2{font-size:29px}.case-main p:not(.eyebrow),.feature-list{font-size:13px}.case-main section{margin-bottom:32px}.case-sidebar{position:static;width:100%;border-top:1px solid var(--line);padding-top:22px}.case-sources{margin-top:0}.source-list li{font-size:12px}.case-sidebar .button{width:auto}.next-voyage{margin-bottom:30px}.next-voyage>a{font-size:33px;line-height:1.1}.credit-note{padding:19px}.case-hero .concept-art{aspect-ratio:1.6;min-height:200px}.resume-toolbar{flex-wrap:wrap;gap:20px;margin-bottom:28px}.resume-toolbar .button{font-size:10px;padding:10px 15px;min-height:42px}.resume-page h1{font-size:56px}.resume-title{font-size:17px}.resume-contact{font-size:10px;overflow-wrap:anywhere}.resume-projects{grid-template-columns:1fr;gap:25px}.resume-page h2{font-size:28px}.resume-page section>p{font-size:13px}.resume-project h3{font-size:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{body{background:white;color:black;font-size:10pt}body::before,.site-header,.site-footer,.reading-progress,.resume-toolbar,.skip-link{display:none!important}.resume-page{width:100%;max-width:none;margin:0;padding:0}.resume-page h1{font-size:36pt;margin:8pt 0}.resume-title{font-size:13pt}.resume-page .eyebrow{font-size:7pt}.resume-contact{font-size:8pt;margin:12pt 0 18pt}.resume-page h2{font-size:17pt}.resume-page section{margin-top:14pt;padding-top:12pt}.resume-projects{display:block}.resume-project{break-inside:avoid;margin-bottom:13pt}.resume-project h3{font-size:14pt}.resume-project p+p{font-size:9pt;margin-top:4pt}.resume-org{font-size:7pt}.resume-page section>p,.resume-skills{font-size:9pt;line-height:1.55}.resume-page h2{break-after:avoid}.resume-page a{color:inherit;text-decoration:none;border:0}.resume-skills li{margin-bottom:6pt}@page{size:A4;margin:16mm}}

/* Keep functional labels readable at every viewport. */
.project-eyebrow,.project-status{font-size:10px}.filter{font-size:11px}.fleet-meta{font-size:10px}.search-box input{font-size:12px}.skill a{font-size:12px}.source-list li{font-size:12px}.history-strip a{font-size:10px;line-height:1.8}.section-top>.eyebrow{font-size:10px}.section-top>.small-label{font-size:9px}.hero-footnote{font-size:10px}.case-top .small-label{font-size:10px}.case-org{font-size:10px}
@media(max-width:650px){.filter{font-size:11px;padding:8px 10px}.fleet-meta{font-size:9px}.fleet-meta>span:last-child{font-size:8px}.project-eyebrow,.project-status{font-size:10px}.section-top>.eyebrow{font-size:9px}.section-top>.small-label{font-size:8px}.hero-footnote{font-size:9px}.history-strip a{font-size:9px}.hero-copy>.eyebrow{font-size:9px}.tribute .eyebrow{font-size:9px}.project-summary{font-size:13px}.project-number{font-size:9px}.search-box input{font-size:14px}.contact-bottom{font-size:8px}.case-top .small-label{font-size:8px}}
.contact .small-label{color:#f6e9d6}
@media(max-width:650px){.captain-poster{width:calc(100% - 34px)}}

/* Backbenchers Studio — restrained pirate identity, editorial portfolio. */
:root {
  color-scheme: dark;
  --paper: #0d1720; --paper-light: #14222d; --ink: #f0eadf;
  --muted: #aeb8be; --red: #f28c7d; --red-fill: #a9332b;
  --line: #31404b; --night: #0a131b; --surface: #13212b;
  --gold: #e6c68c; --soft-gold: #e6c68c;
  --header-bg: #0d1720f5; --pirate: 'Pirata One', Georgia, serif;
  --compass: 'Cinzel', Georgia, serif;
}
:root[data-theme=light] {
  color-scheme: light;
  --paper: #f4eee2; --paper-light: #fffaf0; --ink: #302f2b;
  --muted: #66665f; --red: #a53129; --line: #d4cbb9;
  --surface: #e9e3d5; --soft-gold: #805b27; --header-bg: #f4eee2f5;
}
body { background: var(--paper); transition: background-color .25s, color .25s; }
body::before { opacity: .012; }
html { scroll-padding-top: 90px; }
.wrap { width: min(1240px, calc(100% - 80px)); }
:focus-visible { outline: 2px solid var(--red); outline-offset: 5px; }
.eyebrow { font-size: 10px; letter-spacing: 1.4px; }
.small-label { font-size: 9px; letter-spacing: .7px; }
.serif { font-family: var(--pirate); font-style: normal; letter-spacing: 0; }
.gold { color: var(--soft-gold); }
.button { border-radius: 4px; min-height: 46px; padding: 12px 20px; font-size: 12px; }
.red-button { background: var(--red-fill); border-color: var(--red-fill); color: #fff5e9; }
.red-button:hover { background: #852720; border-color: #852720; color: white; }
.light-button { background: #eee3ce; color: #18232c; border-color: #eee3ce; }
.light-button:hover { background: var(--gold); color: #18232c; }
.skip-link { background: #a9332b; color: white; }
.section-space { padding-block: 84px; }
.section-dark { background: var(--night); color: #f0eadf; }
.section-dark .small-label, .section-dark .section-heading>p { color: #b5bec2; }
.section-dark .gold, .section-dark .serif { color: var(--gold); }
.section-top { margin-bottom: 34px; padding-bottom: 18px; }
.section-heading { margin-bottom: 34px; gap: 45px; align-items: end; }
.section-heading h2, .about h2, .tribute h2 {
  font: 600 clamp(30px, 3.4vw, 46px)/1.12 var(--sans); letter-spacing: -1.8px;
}
.section-heading h2 .serif, .about h2 .serif, .tribute h2 .serif {
  display: block; font-size: 1.16em; line-height: 1.1; margin-top: 3px; letter-spacing: 0;
}
.section-heading>p { font-size: 13px; line-height: 1.85; max-width: 340px; }
/* Compact navigation, with a steady background while scrolling. */
.site-header { background: var(--header-bg); backdrop-filter: blur(14px); border-color: var(--line); }
.header-inner { max-width: 1360px; height: 72px; gap: 20px; }
.brand { gap: 10px; }
.brand img, .footer-brand img { background: #0d1720; border-radius: 50%; }
.brand img { width: 42px; height: 42px; padding: 6px; }
.brand>span { font-family: var(--compass); font-size: 14px; letter-spacing: .4px; }
.brand small { font-size: 7px; }
.header-tools { gap: 15px; }
.main-nav { gap: 25px; font-size: 12px; }
.header-contact { display: none; }
.day-toggle, .motion-toggle { background: none; display: flex; align-items: center; gap: 6px; min-height: 44px; padding: 7px 0; font: 400 9px var(--mono); }
.day-toggle>span:first-child { font-size: 22px; }
.site-footer { min-height: 100px; }
.site-footer p { font-size: 9px; line-height: 1.8; }
/* One identity, one piece of artwork at a time. */
.edition { color: var(--muted); font-size: 8px; letter-spacing: .9px; padding-block: 17px; }
.hero-grid { grid-template-columns: 1.08fr 1fr; gap: 65px; min-height: 620px; padding-block: 40px; }
.hero-copy { padding: 12px 0; }
.hero-copy>.eyebrow { font-size: 10px; letter-spacing: 1.3px; margin-bottom: 27px; color: var(--soft-gold); }
.hero-copy .signal { background: var(--soft-gold); }
.hero h1 { font: 600 clamp(60px, 6vw, 84px)/.98 var(--sans); letter-spacing: -4.5px; }
.hero h1>span { color: var(--soft-gold); }
.hero-name { font-size: 18px; font-weight: 500; line-height: 1.5; margin-top: 28px; }
.hero-intro { font-size: 14px; line-height: 1.9; max-width: 415px; color: var(--muted); margin-top: 15px; }
.hero-actions { gap: 28px; margin-top: 27px; }
.hero-disciplines { display: flex; flex-wrap: wrap; gap: 9px 16px; margin-top: 27px; }
.hero-disciplines a { font: 400 10px/1.7 var(--mono); color: var(--muted); border-bottom: 1px solid var(--line); padding-bottom: 3px; }
.hero-disciplines a:hover { color: var(--soft-gold); border-color: var(--soft-gold); }
.hero-footnote { font-size: 9px; margin-top: 17px; color: var(--muted); }
.voyage-art { height: 485px; width: 100%; margin: 0; position: relative; border: 1px solid var(--line); border-radius: 180px 180px 8px 8px; background: radial-gradient(ellipse at 50% 30%, #779c9e16, transparent 65%); isolation: isolate; }
.art-orbit { position: absolute; inset: 20px 22px 80px; border: 1px solid var(--line); border-radius: 50%; color: var(--soft-gold); opacity: .6; pointer-events: none; }
.art-orbit::before, .art-orbit::after { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; border-left: 1px dashed var(--line); }
.art-orbit::after { transform: rotate(90deg); }
.art-orbit>span { position: absolute; top: -8px; left: calc(50% - 4px); background: var(--paper); font: 400 10px var(--mono); }
.hero-art-window { position: absolute; inset: 22px 28px 97px; display: grid; place-items: center; }
.hero-ship { position: static; width: auto; height: 100%; max-height: 350px; object-fit: contain; filter: drop-shadow(0 15px 18px #0003); animation: ship-sway 9s ease-in-out infinite; }
.hero-bounty { width: auto; height: 100%; max-height: 344px; object-fit: contain; filter: drop-shadow(0 8px 10px #0003); transform: rotate(-3deg); }
.voyage-art figcaption { position: absolute; bottom: 59px; left: 27px; right: 27px; display: flex; justify-content: space-between; align-items: center; color: var(--muted); font-size: 11px; line-height: 1.6; }
.voyage-art figcaption>span:last-child { text-align: right; }
.voyage-art figcaption strong { color: var(--ink); font-weight: 500; }
.art-mark { font: 400 9px var(--mono); color: var(--soft-gold); letter-spacing: 1px; }
.art-switch { position: absolute; bottom: 0; left: 0; right: 0; border-top: 1px solid var(--line); display: flex; justify-content: center; gap: 3px; padding: 3px; }
.art-switch button { min-height: 42px; flex: 1; background: none; font: 500 10px var(--sans); color: var(--muted); border-radius: 3px; }
.art-switch button[aria-pressed=true] { background: var(--surface); color: var(--ink); }
.hero-bottom { padding: 18px 0 22px; gap: 20px; color: var(--muted); font-size: 8px; letter-spacing: .6px; }
.hero-mood { display: flex; align-items: center; gap: 22px; }
.hero-mood>a { color: var(--ink); font-size: 9px; }
.gear-toggle { display: inline-flex; gap: 8px; align-items: center; background: none; color: var(--soft-gold); padding: 8px 0; min-height: 38px; font: 400 9px var(--mono); }
.gear-toggle[aria-pressed=true] { color: var(--red); }
.gear-five .voyage-art { border-color: var(--red); box-shadow: 0 0 45px #ce555018; }
.gear-five .hero h1>span { color: var(--red); }
/* Cinematic previews; the actual 3D scenes load only on launch. */
.playground { background: var(--surface); border-block: 1px solid var(--line); }
.world-heading-meta { max-width: 355px; }
.world-heading-meta>p { font-size: 13px; color: var(--muted); }
.world-navigation { display: flex; justify-content: flex-end; gap: 8px; align-items: center; margin-top: 18px; }
.world-navigation>span { margin-right: auto; font: 400 10px var(--mono); color: var(--muted); }
.world-navigation button, .personal-controls button { background: transparent; border: 1px solid var(--line); border-radius: 50%; width: 43px; height: 43px; font-size: 19px; }
.world-navigation button:hover, .personal-controls button:hover { background: var(--ink); color: var(--paper); }
.world-panel { display: block; animation: studio-enter .42s ease both; }
.world-stage { touch-action: pan-y pinch-zoom; }
.world-panel+.world-panel { margin-top: 36px; }
.js .world-panel+.world-panel { margin-top: 0; }
.world-scene { position: relative; min-height: 560px; border-radius: 8px; overflow: hidden; background: #07101b; color: #f8f1e4; border: 1px solid #56616a; }
.world-preview { position: absolute; inset: 0; }
.world-preview img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; transform: scale(1.015); transition: transform 1s cubic-bezier(.2,.7,.2,1); }
.world-scene:hover .world-preview img { transform: scale(1.04); }
.world-scene::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg,#07101b66,transparent 30%,#07101baa 55%,#07101bf5 100%); }
.world-hud { position: absolute; inset: 25px 28px auto; z-index: 2; display: flex; justify-content: space-between; gap: 15px; font: 400 9px var(--mono); letter-spacing: 1px; color: #fff4de; }
.world-hud>span { background: #07101bcc; padding: 7px 10px; border: 1px solid #d2d5d52e; border-radius: 3px; }
.world-hud i { font-style: normal; margin-left: 9px; color: #e6c68c; }
.world-copy { position: absolute; z-index: 2; bottom: 35px; left: 35px; right: 130px; max-width: 750px; }
.world-copy .eyebrow { font-size: 9px; color: #e6c68c; }
.world-copy h3 { font: 600 clamp(29px,3.5vw,46px)/1.1 var(--sans); letter-spacing: -1.3px; margin: 12px 0; }
.world-copy>p:not(.eyebrow) { font-size: 13px; line-height: 1.75; color: #d4dce0; max-width: 580px; }
.world-actions { display: flex; align-items: center; gap: 24px; margin-top: 21px; flex-wrap: wrap; }
.world-actions .text-link { color: #fff4de; font-size: 11px; }
.world-index { position: absolute; right: 28px; bottom: 27px; z-index: 2; color: #e6c68c66; font: 400 100px/1 var(--pirate); }
.world-caption { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; min-height: 79px; padding: 18px 2px 12px; }
.world-sources { display: flex; flex-wrap: wrap; gap: 8px 18px; align-content: start; }
.world-source { color: var(--soft-gold); font: 400 10px/1.8 var(--mono); text-decoration: underline; text-underline-offset: 4px; }
.world-credit { color: var(--muted); font-size: 10px; line-height: 1.7; text-align: right; }
.world-tabs { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 10px; margin-top: 10px; }
.world-tabs button { padding: 6px; background: var(--paper); border: 1px solid var(--line); border-radius: 5px; text-align: left; min-width: 0; color: var(--muted); transition: border-color .2s, transform .2s; }
.world-tabs button:hover { border-color: var(--soft-gold); transform: translateY(-3px); }
.world-tabs button[aria-selected=true] { border-color: var(--soft-gold); box-shadow: inset 0 -2px 0 var(--soft-gold); color: var(--ink); }
.world-tabs img { width: 100%; aspect-ratio: 1.9; object-fit: cover; border-radius: 2px; opacity: .7; filter: saturate(.6); transition: opacity .3s,filter .3s; }
.world-tabs [aria-selected=true] img, .world-tabs button:hover img { opacity: 1; filter: none; }
.world-tabs button>span { display: block; font: 500 11px/1.5 var(--sans); padding: 9px 3px 7px; }
.world-tabs small { display: block; font: 400 7px/1.7 var(--mono); color: var(--muted); margin-bottom: 3px; }
/* Personal portfolio sites: browser frames in a native scroll-snap collection. */
.personal-collection { border-bottom: 1px solid var(--line); }
.personal-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.personal-toolbar>span { font: 400 9px var(--mono); letter-spacing: 1px; color: var(--muted); }
.personal-controls { display: flex; gap: 8px; }
.personal-controls button:disabled { opacity: .35; cursor: default; }
.personal-track { display: flex; gap: 24px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--line) transparent; padding: 3px 1px 24px; scroll-behavior: smooth; }
.personal-card { flex: 0 0 calc(50% - 12px); min-width: 0; scroll-snap-align: start; }
.browser-frame { border: 1px solid var(--line); border-radius: 7px; overflow: hidden; background: var(--surface); }
.browser-bar { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 36px; padding: 8px 14px; border-bottom: 1px solid var(--line); font: 400 9px var(--mono); color: var(--muted); }
.browser-dots { display: flex; gap: 5px; }
.browser-dots i { width: 5px; height: 5px; border-radius: 50%; background: var(--muted); opacity: .6; }
.personal-preview { display: block; overflow: hidden; aspect-ratio: 1.58; }
.personal-preview img { width: 100%; height: 100%; object-fit: cover; object-position: top; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.personal-card:hover .personal-preview img { transform: scale(1.035); }
.personal-copy { padding: 23px 3px 6px; }
.personal-copy .eyebrow { color: var(--soft-gold); font-size: 9px; }
.personal-copy h3 { display: flex; align-items: baseline; justify-content: space-between; font: 500 26px/1.3 var(--sans); letter-spacing: -.7px; margin: 9px 0 12px; }
.personal-copy h3>span { font: 400 10px var(--mono); color: var(--muted); letter-spacing: 0; }
.personal-copy>p:not(.eyebrow) { font-size: 13px; color: var(--muted); }
.personal-links { display: flex; flex-wrap: wrap; gap: 25px; margin-top: 20px; }
.personal-links .text-link { font-size: 11px; }
.collection-hint { text-align: right; font: 400 9px var(--mono); color: var(--muted); margin-top: 10px; }
.collection-hint span { margin-left: 10px; font-size: 17px; }
/* The gallery shares the portfolio's navigation, typography, and preferences. */
.gallery-page { padding-block: 38px 70px; }
.gallery-page .back-link { margin-bottom: 44px; }
.gallery-page .section-heading { align-items: end; margin-bottom: 45px; }
.gallery-page h1 { font: 600 clamp(34px,4.5vw,60px)/1.1 var(--sans); letter-spacing: -2px; margin-top: 17px; }
.gallery-page h1 .serif { display: block; color: var(--soft-gold); font-size: 1.12em; margin-top: 6px; }
.experiment-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 45px 26px; }
.experiment-card { min-width: 0; border-bottom: 1px solid var(--line); padding-bottom: 25px; }
.experiment-cover { display: block; position: relative; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--surface); }
.experiment-cover img { width: 100%; aspect-ratio: 1.6; object-fit: cover; transition: transform .7s ease; }
.experiment-cover:hover img { transform: scale(1.04); }
.experiment-number { position: absolute; left: 15px; top: 15px; padding: 7px 10px; border: 1px solid #ffffff30; border-radius: 3px; background: #0d1720e8; color: #efe5d1; font: 400 8px var(--mono); }
.experiment-launch { position: absolute; right: 15px; bottom: 15px; background: #efe5d1; color: #18232c; border-radius: 50%; width: 43px; height: 43px; display: grid; place-items: center; font-size: 24px; }
.experiment-copy { padding-top: 22px; }
.experiment-copy .eyebrow { color: var(--soft-gold); font-size: 9px; }
.experiment-copy h2 { font: 500 26px/1.25 var(--sans); letter-spacing: -.7px; margin: 12px 0; }
.experiment-copy>p:not(.eyebrow) { color: var(--muted); font-size: 13px; line-height: 1.8; }
.showcase-sources { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 17px; }
.showcase-sources a { font: 400 10px/1.9 var(--mono); color: var(--soft-gold); text-decoration: underline; text-underline-offset: 4px; padding-block: 5px; }
.experiment-copy .experiment-credit { font-size: 10px!important; margin-top: 16px; }
/* All projects. */
.flagship { background: #0a1720; }
.flagship-visual { border-color: #586068; border-radius: 6px; }
.flagship-copy h2 { font-size: 72px; }
.flagship-copy h2 .serif { color: var(--gold); font-size: 40px; }
.visual-tag { background: #efe5d1; color: #252c31; }
.visual-bottom { background: #0b1720e8; color: #e8e0d1; }
.flagship .gold { color: var(--gold); }
.history-strip a { color: #b7c3c7; }
.project-cover { border: 1px solid var(--line); border-radius: 5px; background: var(--surface); }
.project-image { filter: none; }
.project-image-contain { background: #13212b; }
.project-number { background: #0d1720eb; color: #efe5d1; font-size: 8px; border-radius: 2px; }
.project-card h3 { font-family: var(--sans); font-size: 21px; letter-spacing: -.6px; line-height: 1.25; }
.project-summary { font-size: 12px; min-height: 0; }
.project-status { color: var(--muted); font-size: 9px; }
.status-dot { background: var(--soft-gold); }
.filter { min-height: 42px; border-radius: 3px; }
.filter.active { background: var(--soft-gold); color: var(--paper); }
.filter.active sup { opacity: 1; }
.search-box input::placeholder { color: var(--muted); opacity: 1; }
.fleet-layout-tools { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding-top: 14px; }
.fleet-layout-tools>.eyebrow { font-size: 8px; color: var(--muted); }
.fleet-layout-tools>div { display: flex; gap: 4px; }
.fleet-layout-tools button { background: none; border: 1px solid var(--line); min-height: 40px; padding: 8px 13px; border-radius: 3px; font: 500 10px var(--sans); }
.fleet-layout-tools button[aria-pressed=true] { background: var(--surface); border-color: var(--soft-gold); }
.project-grid.manifest { grid-template-columns: 1fr; }
.manifest .project-card { display: grid; grid-template-columns: 170px 1fr; gap: 25px; padding-bottom: 23px; }
.manifest .project-body { padding-top: 0; }
.manifest .project-cover { align-self: start; }
.manifest .project-status { margin-top: 10px; }
.manifest .concept-art { padding: 10px; }
.manifest .concept-art strong { font-size: 35px; }
.manifest .concept-art>span, .manifest .concept-art>small { font-size: 5px; }
.manifest .concept-bars { transform: scale(.6); height: 22px; margin: 0 0 8px; }
/* About and the memorial retain their personal context. */
.tribute::after { background: linear-gradient(90deg,#0a131b 0%,#0a131b 22%,#0a131bf0 42%,#0a131b55 85%); }
.tribute h2 .serif { color: var(--gold); }
.tribute-credit { color: #e7e1d5!important; }
.about-grid { gap: 80px; padding-inline: 20px; }
.captain-keepsake { min-width: 0; text-align: center; }
.captain-portrait { max-width: 300px; padding: 12px 12px 40px; background: #dfceb2; border-radius: 4px; position: relative; margin: auto; transform: rotate(-2deg); }
.captain-portrait img { width: 100%; height: 290px; object-fit: cover; object-position: top; border-radius: 2px; }
.portrait-signature { position: absolute; bottom: 4px; left: 0; right: 0; color: #393022; font: 400 24px var(--pirate); }
.captain-keepsake>.eyebrow { margin-top: 24px; font-size: 8px; color: var(--muted); }
.captain-memory { margin-top: 20px; border-top: 1px solid var(--line); text-align: left; }
.captain-memory summary { display: flex; justify-content: space-between; gap: 10px; padding: 15px 0; font-size: 11px; color: var(--soft-gold); cursor: pointer; }
.captain-memory summary::marker { content: ''; }
.captain-memory summary>span { font-size: 18px; }
.captain-memory[open] summary>span { transform: rotate(45deg); }
.captain-memory img { border: 1px solid var(--line); border-radius: 4px; }
.captain-memory p { color: var(--muted); font-size: 11px; line-height: 1.8; margin-top: 12px; }
.about-copy .captain-note { font: 500 17px/1.6 var(--sans); color: var(--soft-gold); }
.journey span { color: var(--soft-gold); }
.journey h3 { font: 500 20px/1.4 var(--sans); letter-spacing: -.5px; }
/* Visual capabilities: brand marks + original category line drawings. */
.skills-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; }
.skill { padding: 26px 23px; border: 1px solid #334550; border-radius: 7px; background: #11212b; min-width: 0; display: flex; flex-direction: column; transition: border-color .25s,transform .25s; }
.skill:hover { border-color: #887d62; transform: translateY(-3px); }
.skill-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 21px; }
.skill-header svg { width: 32px; height: 32px; fill: none; stroke: #e6c68c; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.skill-number { font: 400 8px var(--mono); letter-spacing: 1px; color: #9eafb8; }
.skill h3 { font: 500 21px/1.3 var(--sans); letter-spacing: -.6px; margin: 0 0 12px; }
.skill>p { color: #b8c4c9; font-size: 12px; line-height: 1.8; min-height: 44px; }
.tech-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; margin: 23px 0 22px; }
.skill .tech-chip { background: #0b1720; border: 1px solid #2a3c48; border-radius: 5px; min-height: 83px; margin: 0; padding: 10px 4px 8px; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 8px; color: #e5e9e9; transition: background .2s,border-color .2s; }
.tech-chip:hover, .tech-chip:focus-visible { border-color: #e6c68c; background: #1b2e39; }
.tech-chip img { width: 29px; height: 29px; object-fit: contain; background: #f6f3ea; border-radius: 5px; padding: 4px; }
.tech-chip>span:last-child { font: 400 9px/1.3 var(--sans); text-align: center; }
.tech-monogram { width: 29px; height: 29px; display: grid; place-items: center; color: #e6c68c; background: #1d3442; border: 1px solid #4b616d; border-radius: 5px; font: 500 17px/1 var(--mono); }
.skill>a { margin-top: auto; color: #e6c68c; font-size: 11px; line-height: 1.7; padding-top: 13px; border-top: 1px solid #334550; border-bottom: 0; }

/* A quieter contact panel. */
.journal-icon { background: var(--surface); color: var(--soft-gold); border-color: var(--line); }
.journal-link h2 { font-size: 33px; }
.contact { color: var(--ink); background: var(--surface); padding: 56px 0 30px; border-block: 1px solid var(--line); }
.contact .section-top { border-color: var(--line); }
.contact .small-label { color: var(--muted); }
.contact-intro { font-size: 14px; color: var(--muted); }
.contact h2 { font: 500 clamp(35px,4.3vw,60px)/1.2 var(--sans); letter-spacing: -2px; margin: 18px 0 28px; }
.contact h2 .serif { color: var(--soft-gold); letter-spacing: 0; }
.contact-email { font: 400 22px/1.5 var(--sans); border-color: var(--line); width: min(580px,100%); padding-bottom: 15px; }
.contact-email>span { font-size: 30px; color: var(--soft-gold); }
.contact-bottom { color: var(--muted); margin-top: 38px; }
/* Project details and print-friendly résumé. */
.case-page h1 { font-family: var(--sans); font-weight: 600; letter-spacing: -2px; font-size: clamp(42px,6.5vw,85px); }
.case-main h2 { font-family: var(--sans); font-size: 28px; font-weight: 500; letter-spacing: -.7px; }
.case-main p:not(.eyebrow), .feature-list { color: var(--muted); }
.case-hero, .credit-note { background: var(--surface); }
.resume-page h1 { font: 600 64px/1.1 var(--sans); letter-spacing: -2px; }
.resume-org { color: var(--red); }
/* Native page scrolling; small reveals never intercept wheel or touch. */
@keyframes studio-enter { from { opacity: .5; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.studio-arrive { animation: studio-enter .6s ease both; }
@media(min-width:1600px) {
  .hero-grid { min-height: 665px; }.hero h1 { font-size: 88px; }.voyage-art { height: 500px; }
}
@media(max-width:1150px) {
  .hero-grid { gap: 45px; }.hero h1 { font-size: 72px; }.voyage-art { height: 455px; }
  .hero-art-window { inset: 25px 24px 103px; }.hero-ship { max-height: 310px; }
  .header-tools { gap: 10px; }.main-nav { gap: 22px; font-size: 11px; }
  .theme-label,.motion-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
  .day-toggle,.motion-toggle { width: 32px; justify-content: center; }
  .skill { padding: 23px 17px; }.tech-chip>span:last-child { font-size: 8px; }.about-grid { gap: 55px; }
}
@media(max-width:900px) {
  .wrap { width: calc(100% - 48px); }.hero-grid { gap: 30px; min-height: 550px; }
  .hero h1 { font-size: 64px; letter-spacing: -3px; }.hero-copy>.eyebrow { font-size: 8px; }
  .hero-name { font-size: 16px; }.hero-intro { font-size: 13px; }.hero-actions { gap: 22px; }
  .hero-disciplines { gap: 8px 12px; }.hero-disciplines a { font-size: 9px; }
  .voyage-art { height: 420px; border-radius: 150px 150px 7px 7px; }
  .hero-art-window { inset: 25px 20px 105px; }.hero-ship { max-height: 284px; }
  .hero-bounty { max-height: 278px; }.voyage-art figcaption { left: 20px; right: 20px; font-size: 10px; }
  .hero-mood { gap: 15px; }.hero-mood>a { font-size: 8px; }.hero-bottom { font-size: 7px; }
  .section-space { padding-block: 64px; }.section-heading { gap: 30px; }
  .world-scene { min-height: 510px; }.world-copy { left: 26px; bottom: 28px; right: 95px; }
  .world-copy h3 { font-size: 37px; }.world-index { font-size: 75px; }
  .world-tabs { display: flex; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--line) transparent; padding-bottom: 9px; }
  .world-tabs button { flex: 0 0 145px; scroll-snap-align: start; }.world-tabs small { font-size: 7px; }
  .skills-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }.tech-chip>span:last-child { font-size: 9px; }
  .personal-card { flex-basis: calc(65% - 12px); }.personal-copy h3 { font-size: 24px; }
  .about-grid { gap: 36px; padding-inline: 0; }.captain-portrait img { height: 265px; }
  .section-heading>p { max-width: 270px; }.world-heading-meta { max-width: 290px; }
}
@media(max-width:650px) {
  html { scroll-padding-top: 78px; }.wrap { width: calc(100% - 36px); }
  .header-inner { width: calc(100% - 28px); height: 62px; gap: 10px; }
  .brand { gap: 8px; }.brand img { width: 34px; height: 34px; padding: 4px; }
  .brand>span { font-size: 11px; letter-spacing: .1px; }.brand small { font-size: 5.5px; letter-spacing: .2px; }
  .header-tools { gap: 6px; }.day-toggle,.motion-toggle { width: 29px; }
  .menu-toggle { font-size: 0; min-width: 32px; min-height: 44px; justify-content: center; }
  .menu-toggle>span { font-size: 21px; }.main-nav { top: 62px; background: var(--paper-light); border-color: var(--line); font-size: 12px; }
  .main-nav a { min-height: 42px; padding: 10px 0; }
  .edition { font-size: 6px; padding-block: 12px; }.edition span:nth-child(2) { text-align: right; }
  .hero-grid { grid-template-columns: 1fr; gap: 28px; min-height: 0; padding: 31px 0 25px; }
  .hero-copy { padding: 0; }.hero-copy>.eyebrow { font-size: 8px; letter-spacing: .9px; margin-bottom: 20px; }
  .hero h1 { font-size: 58px; line-height: .99; letter-spacing: -3px; }
  .hero-name { font-size: 16px; margin-top: 23px; max-width: 300px; }
  .hero-intro { font-size: 13px; margin-top: 12px; max-width: 410px; }
  .hero-actions { gap: 26px; margin-top: 21px; }.hero-actions .button { font-size: 12px; padding: 12px 18px; }
  .hero-actions .text-link { font-size: 12px; }.hero-disciplines { margin-top: 22px; gap: 8px 14px; }
  .hero-disciplines a { font-size: 9px; }.hero-footnote { font-size: 8px; margin-top: 14px; }
  .voyage-art { width: min(100%,370px); height: 358px; margin: 0 auto; border-radius: 145px 145px 6px 6px; }
  .hero-art-window { inset: 20px 25px 99px; }.hero-ship { max-height: 239px; }.hero-bounty { max-height: 237px; }
  .art-orbit { inset: 16px 23px 75px; }.voyage-art figcaption { bottom: 55px; left: 22px; right: 22px; }
  .art-mark { font-size: 8px; }.art-switch button { min-height: 40px; font-size: 10px; }
  .hero-bottom { padding: 12px 0 18px; display: block; }
  .hero-bottom>span { display: none; }.hero-mood { justify-content: space-between; gap: 12px; }
  .hero-mood>a { font-size: 8px; }.gear-toggle { font-size: 9px; }
  .section-space { padding-block: 48px; }.section-top { margin-bottom: 27px; padding-bottom: 15px; }
  .section-top>.eyebrow { font-size: 8px; letter-spacing: 1px; }.section-top>.small-label { font-size: 7px; }
  .section-top .text-link { font-size: 10px; white-space: nowrap; }
  .section-heading { display: block; margin-bottom: 25px; }
  .section-heading h2,.about h2,.tribute h2 { font-size: 31px; line-height: 1.15; letter-spacing: -1px; }
  .section-heading h2 .serif,.about h2 .serif,.tribute h2 .serif { font-size: 40px; line-height: 1.1; }
  .section-heading>p { max-width: none; font-size: 12px; margin-top: 17px; }
  .world-heading-meta { max-width: none; margin-top: 17px; }.world-heading-meta>p { font-size: 12px; }
  .world-navigation { margin-top: 15px; }.world-navigation button,.personal-controls button { width: 40px; height: 40px; }
  .world-scene { min-height: 435px; border-radius: 6px; }
  .world-preview img { object-position: 55% center; }.world-hud { inset: 14px 13px auto; gap: 5px; font-size: 6px; letter-spacing: .5px; }
  .world-hud>span { padding: 6px; }.world-hud i { margin-left: 2px; }
  .world-copy { left: 19px; right: 19px; bottom: 23px; max-width: none; }
  .world-copy .eyebrow { font-size: 8px; }.world-copy h3 { font-size: 30px; line-height: 1.1; letter-spacing: -.9px; margin-block: 11px; }
  .world-copy>p:not(.eyebrow) { font-size: 12px; line-height: 1.75; }
  .world-actions { gap: 18px; margin-top: 19px; }.world-actions .button { font-size: 11px; padding: 12px 14px; gap: 8px; }
  .world-actions .text-link { font-size: 10px; }.world-index { display: none; }
  .world-caption { grid-template-columns: 1fr; gap: 12px; min-height: 128px; padding: 17px 2px 10px; }
  .world-credit { text-align: left; font-size: 9px; line-height: 1.8; }.world-source { font-size: 9px; }
  .world-tabs { gap: 8px; margin-top: 3px; }.world-tabs button { flex-basis: 132px; }
  .world-tabs button>span { font-size: 10px; }.world-tabs small { font-size: 6px; }
  .personal-toolbar { margin-bottom: 16px; gap: 12px; }.personal-toolbar>span { max-width: 185px; font-size: 7px; line-height: 1.8; }
  .personal-track { gap: 16px; padding-bottom: 20px; }.personal-card { flex-basis: 88%; }
  .browser-bar { padding: 8px 10px; font-size: 8px; min-height: 33px; }.browser-dots { gap: 3px; }.browser-dots i { width: 4px; height: 4px; }
  .personal-preview { aspect-ratio: 1.35; }.personal-copy { padding-top: 20px; }.personal-copy h3 { font-size: 22px; }
  .personal-copy .eyebrow { font-size: 8px; }.personal-copy>p:not(.eyebrow) { font-size: 12px; }.personal-links { gap: 18px; margin-top: 16px; }
  .personal-links .text-link { font-size: 10px; }.collection-hint { font-size: 8px; }
  .flagship-copy h2 { font-size: 61px; }.flagship-copy h2 .serif { font-size: 36px; }
  .flagship-copy>p:not(.eyebrow):not(.status-note) { font-size: 12px; }.history-strip a { font-size: 9px; }
  .fleet-meta>span:last-child { display: none; }.project-card h3 { font-size: 22px; }.project-summary { font-size: 12px; }
  .project-eyebrow { font-size: 9px; }.project-grid { gap: 26px; }.project-status { font-size: 9px; }
  .manifest .project-card { grid-template-columns: 80px 1fr; gap: 15px; }.manifest .project-image { aspect-ratio: 1; }
  .manifest .project-number,.manifest .cover-arrow { display: none; }.manifest h3 { font-size: 19px; }.manifest .project-summary { font-size: 11px; }
  .manifest .project-eyebrow,.manifest .project-status { font-size: 8px; }.manifest .concept-art { min-height: 85px; aspect-ratio: 1; padding: 5px; }
  .manifest .concept-art>span,.manifest .concept-art>small,.manifest .concept-bars { display: none; }.manifest .concept-art strong { font-size: 28px; }
  .tribute::after { background: linear-gradient(90deg,#0a131bf5,#0a131bb5); }.tribute h2 { margin-block: 22px; }
  .tribute .eyebrow { font-size: 8px; }.tribute p:not(.eyebrow) { font-size: 12px; }
  .about-grid { grid-template-columns: 1fr; gap: 33px; }.captain-keepsake { padding-inline: 16px; }
  .captain-portrait { max-width: 245px; }.captain-portrait img { height: 263px; }.captain-memory summary { font-size: 11px; }
  .about-copy .large-copy { font-size: 14px; }.about-copy p { font-size: 12px; }.about-copy .captain-note { font-size: 16px; }
  .about-links { gap: 25px; }.journey { gap: 18px; margin-top: 30px; }.journey h3 { font-size: 20px; }
  .skills-grid { grid-template-columns: 1fr; gap: 15px; }.skill { padding: 23px 20px; }
  .skill-header { margin-bottom: 17px; }.skill-header svg { width: 30px; height: 30px; }.skill-number { font-size: 8px; }
  .skill h3 { font-size: 21px; }.skill>p { min-height: 0; font-size: 12px; }
  .tech-grid { margin-block: 20px; gap: 8px; }.tech-chip { min-height: 78px; }.tech-chip>span:last-child { font-size: 10px; }
  .skill>a { font-size: 11px; }.journal-link h2 { font-size: 26px; }.journal-link h2 .serif { font-size: 29px; }
  .contact { padding: 38px 0 25px; }.contact-intro { font-size: 12px; }.contact h2 { font-size: 32px; letter-spacing: -.9px; margin-block: 17px 24px; }
  .contact h2 .serif { display: block; font-size: 39px; }.contact-email { font-size: 17px; }.contact-email>span { font-size: 26px; }
  .contact-bottom { font-size: 7px; line-height: 1.8; gap: 20px; margin-top: 30px; }.site-footer p { font-size: 8px; }
  .case-page h1 { font-size: 43px; letter-spacing: -1.8px; overflow-wrap: anywhere; }.case-main h2 { font-size: 25px; }.case-top { flex-wrap: wrap; }
  .case-top .small-label { max-width: none; text-align: left; }.case-main { min-width: 0; }.resume-page h1 { font-size: 47px; }
  .gallery-page { padding-top: 26px; }.gallery-page h1 { font-size: 35px; letter-spacing: -1px; }
  .gallery-page h1 .serif { font-size: 40px; }.gallery-page .section-heading { margin-bottom: 30px; }
  .experiment-grid { grid-template-columns: 1fr; gap: 32px; }.experiment-copy h2 { font-size: 23px; }
  .experiment-copy>p:not(.eyebrow) { font-size: 12px; }.showcase-sources a { min-height: 40px; font-size: 9px; }
}
@media(max-width:360px) {
  .brand>span { font-size: 10px; }.brand small { font-size: 5px; }.header-tools { gap: 2px; }
  .hero h1 { font-size: 53px; }.hero-name { font-size: 15px; }.hero-copy>.eyebrow { font-size: 7px; }
  .hero-bottom { padding-bottom: 15px; }.hero-mood { gap: 8px; }.hero-mood>a { font-size: 7px; }
  .voyage-art { height: 334px; }.hero-ship { max-height: 217px; }.hero-bounty { max-height: 215px; }
  .world-actions { gap: 15px; }.world-actions .button { font-size: 10px; padding: 12px; }.world-actions .text-link { font-size: 9px; }
  .world-copy h3 { font-size: 28px; }.world-copy>p:not(.eyebrow) { font-size: 11px; }.world-scene { min-height: 430px; }
  .section-top .text-link { font-size: 9px; }.personal-copy h3 { font-size: 20px; }.personal-links { gap: 13px; }.personal-links .text-link { font-size: 9px; }
  .contact-email { font-size: 15px; }.case-page h1 { font-size: 38px; }.tech-chip>span:last-child { font-size: 9px; }.about-links .button { padding-inline: 15px; }
}
/* One pirate / tech type system across the portfolio, stories and gallery. */
:root { --display: var(--pirate); --serif: var(--pirate); --compass: var(--pirate); --spring: cubic-bezier(.2,1.65,.4,1); }
.hero h1, .section-heading h2, .about h2, .tribute h2, .flagship-copy h2, .contact h2,
.gallery-page h1, .case-page h1, .case-main h2, .resume-page h1, .resume-page h2,
.project-card h3, .personal-copy h3, .experiment-copy h2, .world-copy h3, .skill h3, .journey h3, .journal-link h2 {
  font-family: var(--pirate); font-weight: 400; letter-spacing: .2px;
}
.hero h1 { font-size: clamp(76px,7.6vw,110px); line-height: .98; }
.hero h1>span { display: inline-block; }
.brand>span { font: 400 23px/1.2 var(--pirate); letter-spacing: .7px; }
.brand small { font-family: var(--mono); letter-spacing: .3px; margin-top: 4px; }
.section-heading h2 .serif, .about h2 .serif, .tribute h2 .serif, .gallery-page h1 .serif { font-size: 1em; }
.project-card h3, .personal-copy h3, .experiment-copy h2 { font-size: 30px; }
.skill h3 { font-size: 29px; line-height: 1.15; }.journey h3 { font-size: 27px; }
.hero-copy>.eyebrow::after { content: ' /'; color: var(--red); }
.voyage-art { background: radial-gradient(ellipse at 50% 50%,#e6c68c15,transparent 66%), repeating-linear-gradient(0deg,transparent 0 31px,#819eac08 32px), repeating-linear-gradient(90deg,transparent 0 31px,#819eac08 32px); }
.art-orbit { border-style: dashed; }.art-orbit::after { border-color: var(--soft-gold); opacity: .35; }
.art-orbit i { position: absolute; right: 14%; top: 12%; width: 7px; height: 7px; border: 1px solid var(--soft-gold); transform: rotate(45deg); }
.hero-ship { animation: ship-sway 6s ease-in-out infinite; }
.hero-bounty:not([hidden]) { animation: poster-arrive .65s var(--spring); }
@keyframes poster-arrive { from { opacity: 0; transform: translateY(14px) rotate(-7deg) scale(.94); } to { opacity: 1; transform: rotate(-3deg) scale(1); } }
.button, .art-switch button, .world-tabs button, .world-navigation button, .personal-controls button, .skill .tech-chip {
  transition: transform .35s var(--spring), background .2s, border-color .2s, box-shadow .2s;
}
.button:hover, .world-navigation button:hover, .personal-controls button:not(:disabled):hover { transform: translateY(-4px); box-shadow: 0 5px 0 #0002; }
.button:active, .world-navigation button:active, .personal-controls button:active, .art-switch button:active { transform: translateY(2px) scale(.96); box-shadow: none; }
.skill .tech-chip:hover { transform: translateY(-4px) rotate(-1deg); }
.world-panel:not([hidden]) { animation: scene-arrive .6s var(--spring); }
@keyframes scene-arrive { from { opacity: .3; transform: translateY(14px) scale(.988); } to { opacity: 1; transform: none; } }
/* Screenshot frames never hide a site's navigation behind a project badge. */
.framed-preview, .browser-frame, .voyage-art { transform: perspective(1100px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)); transition: transform .5s var(--spring), border-color .25s, box-shadow .25s; }
.framed-preview { border-radius: 10px 10px 5px 5px; box-shadow: 0 8px 25px #0001; }
.framed-preview:hover, .framed-preview:focus-visible { border-color: var(--soft-gold); box-shadow: 0 10px 30px #0003; }
.preview-chrome { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 35px; padding: 8px 12px; border-bottom: 1px solid var(--line); color: var(--muted); background: var(--surface); font: 400 8px/1.4 var(--mono); }
.preview-chrome>span:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.preview-lights { display: flex; gap: 4px; flex-shrink: 0; }.preview-lights i { width: 4px; height: 4px; border: 1px solid var(--soft-gold); border-radius: 50%; }.preview-lights i:first-child { background: var(--soft-gold); }
.preview-counter { color: var(--soft-gold); }
.preview-screen { display: grid; place-items: center; aspect-ratio: 1.5; padding: 10px; background: radial-gradient(ellipse at 40% 15%,#47616d40,transparent),var(--night); overflow: hidden; }
.framed-preview .project-image { width: 100%; height: 100%; max-height: 100%; aspect-ratio: auto; object-fit: contain; object-position: center; border-radius: 3px; }
.project-card:hover .framed-preview .project-image { transform: none; }
.preview-bottom { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; font: 400 8px/1.4 var(--mono); color: var(--muted); border-top: 1px solid var(--line); }
.preview-bottom>span:last-child { color: var(--soft-gold); }.preview-bottom b { display: inline-block; font-size: 16px; margin-left: 5px; transition: transform .4s var(--spring); }.framed-preview:hover .preview-bottom b { transform: rotate(90deg); }
.personal-preview { position: relative; background: var(--night); padding: 9px; }
.personal-preview img { object-fit: contain; object-position: center; height: 100%; }
.personal-card:hover .personal-preview img { transform: none; }
.preview-personal-hint { position: absolute; right: 16px; bottom: 16px; background: #0d1720f2; color: #f0eadf; border: 1px solid #51636f; border-radius: 20px; padding: 7px 12px; font: 400 9px var(--mono); }
.manifest .preview-chrome, .manifest .preview-bottom { display: none; }.manifest .preview-screen { aspect-ratio: 1.3; padding: 4px; }
/* Native dialog: keyboard focus, Escape and touch scrolling. */
.preview-open { overflow: hidden; }
.preview-dialog { width: min(1200px,94vw); max-width: 94vw; max-height: 94dvh; padding: 0; margin: auto; color: var(--ink); background: var(--paper); border: 1px solid var(--soft-gold); border-radius: 12px; box-shadow: 0 30px 100px #0008; overflow: auto; }
.preview-dialog::backdrop { background: #040c13dc; backdrop-filter: blur(10px); }
.preview-dialog[open] { animation: scene-arrive .45s var(--spring); }
.preview-toolbar { padding: 17px 22px; display: flex; justify-content: space-between; align-items: center; gap: 20px; border-bottom: 1px solid var(--line); }
.preview-toolbar .eyebrow { font-size: 8px; color: var(--muted); }.preview-toolbar h2 { font: 400 32px/1.2 var(--pirate); margin-top: 5px; }
.preview-close { background: var(--surface); border: 1px solid var(--line); border-radius: 50%; width: 44px; height: 44px; flex-shrink: 0; font-size: 28px; }
.preview-viewport { height: min(65dvh,760px); overflow: auto; overscroll-behavior: contain; padding: 15px; background: #081018; }
.preview-viewport img { width: 100%; height: 100%; object-fit: contain; margin: auto; }
.preview-viewport.is-enlarged img { width: 1440px; min-width: 100%; max-width: none; height: auto; object-fit: initial; }
.preview-footer { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; padding: 14px 22px; }.preview-footer .text-link { font-size: 11px; }
.preview-zoom { min-height: 42px; padding: 9px 14px; border: 1px solid var(--line); border-radius: 5px; background: var(--surface); font-size: 12px; }
.preview-tip { color: var(--muted); font: 400 9px var(--mono); margin-right: auto; }
.motion-paused .framed-preview, .motion-paused .browser-frame, .motion-paused .voyage-art, .motion-paused .button, .motion-paused .tech-chip, .motion-paused .world-navigation button, .motion-paused .personal-controls button { transform: none; }
@media(max-width:900px) { .hero h1 { font-size: 83px; letter-spacing: 0; }.brand>span { font-size: 20px; } }
@media(max-width:650px) {
  .hero h1 { font-size: clamp(66px,18vw,90px); }.hero-name { margin-top: 22px; }
  .brand>span { font-size: 19px; }.brand small { font-size: 5px; }.hero-copy>.eyebrow::after { content: ''; }
  .project-card h3,.personal-copy h3,.experiment-copy h2 { font-size: 30px; }.world-copy h3 { font-size: 36px; }
  .preview-screen { padding: 8px; }.preview-chrome { min-height: 34px; font-size: 9px; }.preview-bottom { font-size: 8px; }
  .personal-preview { aspect-ratio: 1.5; }.manifest .preview-screen { aspect-ratio: 1; }
  .preview-dialog { width: 96vw; max-width: 96vw; max-height: 94dvh; }.preview-toolbar { padding: 13px; }.preview-toolbar h2 { font-size: 27px; }
  .preview-toolbar .eyebrow { font-size: 6px; }.preview-viewport { height: 52dvh; padding: 8px; }.preview-footer { padding: 12px; gap: 10px 18px; }
  .preview-tip { display: none; }.preview-footer .text-link { font-size: 10px; }.preview-zoom { flex-basis: 100%; }
}
@media(prefers-reduced-motion:reduce) { .framed-preview,.browser-frame,.voyage-art { transform: none; } }

@media print {
  *,*::before,*::after { transition: none!important; animation: none!important; }
  :root { color-scheme: light; --paper: white; --paper-light: white; --ink: black; --muted: #333; --red: #333; --line: #bbb; --surface: white; --soft-gold: #333; }
  body { background: white!important; color: black!important; }
  .resume-page h1 { font: 600 36pt/1.1 Georgia,serif; letter-spacing: 0; }
  .resume-org { color: #333; }.site-header,.site-footer { display: none!important; }
}

/* Fewer competing labels, more room for the work. */
.logbook-button { background: var(--gold); color: #342618; border-color: var(--gold); }
.logbook-button:hover { background: #f4ddb0; color: #342618; border-color: #f4ddb0; }
.hero-grid { min-height: 560px; padding-block: 25px; }
.hero-name { margin-top: 22px; }
.hero-intro { margin-top: 10px; }
.hero-disciplines { margin-top: 25px; }
.hero-footnote { margin-top: 18px; }
.section-space { padding-block: 70px; }
.section-heading { margin-bottom: 28px; }
.section-top { margin-bottom: 27px; }
.project-card h3 { font: 600 23px/1.25 var(--sans); letter-spacing: -.6px; }
.project-body { padding: 19px 2px 4px; }
.project-summary { min-height: 0; font-size: 13px; line-height: 1.7; max-width: 100%; }
.project-eyebrow { font-size: 9px; color: var(--soft-gold); }
.project-grid { gap: 35px 28px; }
.preview-bottom { padding-block: 6px; }
.fleet-meta { align-items: center; min-height: 48px; margin-bottom: 18px; }
.fleet-layout-tools { margin: 0; padding: 0; border: 0; }
.fleet-layout-tools button { min-width: 38px; min-height: 36px; font-size: 17px; padding: 3px 9px; }
.flagship { padding-block: 46px; }
.flagship-grid { grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: 55px; align-items: center; }
.flagship-visual img { aspect-ratio: 1.9; object-fit: cover; object-position: top; }
.flagship-copy h2 { font-size: 47px; margin: 17px 0; }
.flagship-copy h2 .serif { font-size: 27px; }
.flagship-copy p:not(.eyebrow) { font-size: 14px; line-height: 1.8; max-width: 570px; }
.flagship-copy .text-link { color: #e6c68c; margin-top: 18px; }
.world-caption { display: block; padding: 0; }
.world-caption summary { padding: 14px 1px; display: flex; justify-content: space-between; cursor: pointer; font: 400 10px var(--mono); color: var(--muted); list-style: none; }
.world-caption summary::-webkit-details-marker { display: none; }
.world-caption .world-sources { padding: 8px 0; }
.world-caption .world-credit { max-width: 760px; padding-bottom: 14px; }
.personal-collection { padding-block: 0; }
.personal-disclosure { padding-block: 27px; }
.personal-disclosure>summary { display: flex; justify-content: space-between; align-items: center; gap: 24px; cursor: pointer; list-style: none; }
.personal-disclosure>summary::-webkit-details-marker { display: none; }
.personal-disclosure>summary>span:first-child { display: grid; gap: 10px; }
.collection-title { font: 400 33px/1.2 var(--pirate); }
.disclosure-action { display: flex; align-items: center; gap: 20px; font-size: 12px; color: var(--soft-gold); }
.disclosure-action b { font-size: 26px; font-weight: 400; transition: transform .25s; }
.personal-disclosure[open] .disclosure-action b { transform: rotate(45deg); }
.personal-disclosure[open] .personal-toolbar { margin-top: 35px; }
.about-grid { grid-template-columns: minmax(200px,.65fr) minmax(0,1.35fr); gap: 85px; padding: 0; align-items: center; }
.captain-keepsake { max-width: 300px; margin-inline: auto; width: 100%; }
.captain-portrait img { max-height: 310px; width: 100%; object-fit: cover; object-position: top; }
.about-copy .large-copy { font-size: 17px; line-height: 1.8; }
.about-copy>p:not(.large-copy) { font-size: 14px; }
.skills-grid { gap: 16px; align-items: start; }
.skill { padding: 22px; }
.skill>summary { list-style: none; cursor: pointer; }
.skill>summary::-webkit-details-marker { display: none; }
.skill h3 { font: 500 18px/1.4 var(--sans); margin: 17px 0 7px; }
.skill-header { margin-bottom: 0; }
.skill-plus { font-size: 21px; margin-left: auto; color: var(--gold); transition: transform .2s; }
.skill[open] .skill-plus { transform: rotate(45deg); }
.skill-teaser { font: 400 10px/1.8 var(--mono); color: #b5bec2; }
.skill-detail { padding-top: 18px; }
.skill-detail>p { margin-bottom: 14px; }
.skill-number { margin-left: auto; }
.tribute { min-height: 400px; }
.tribute-inner { min-height: 400px; padding-block: 50px; }
.tribute-copy { max-width: 560px; }
.tribute-copy>p:not(.eyebrow) { font-size: 14px; }
.journal-icon { width: 76px; height: 76px; font-size: 24px; }
.journal-link h2 { font-size: 32px; margin: 10px 0; }
.contact { padding-block: 65px 35px; }
.contact h2 { margin-top: 25px; }
@media(max-width:1000px) {
 .main-nav { gap: 15px; font-size: 11px; }.header-tools { gap: 12px; }
 .flagship-grid { gap: 35px; }.about-grid { gap: 40px; }
 .project-card h3 { font-size: 20px; }
}
@media(max-width:650px) {
 .hero-grid { padding-block: 20px; }.hero-actions { gap: 12px; }.hero-actions .button { font-size: 11px; padding-inline: 14px; }
 .section-space { padding-block: 45px; }.section-heading { gap: 18px; }
 .hero-footnote { font-size: 8px; }.project-grid { gap: 29px; }
 .fleet-meta { gap: 10px; }.fleet-meta .fleet-layout-tools { display: flex; }.fleet-meta [hidden] { display: none; }
 .project-card h3 { font-size: 22px; }.project-summary { font-size: 13px; }
 .flagship { padding-block: 35px; }.flagship-grid { grid-template-columns: 1fr; gap: 25px; }.flagship-copy h2 { font-size: 40px; }
 .flagship-copy h2 .serif { font-size: 24px; }.flagship-visual { min-height: 0; }
 .personal-disclosure>summary { align-items: flex-start; gap: 16px; }.collection-title { font-size: 26px; }
 .disclosure-action { font-size: 0; gap: 0; }.disclosure-action b { font-size: 26px; }.personal-disclosure .eyebrow { font-size: 8px; }
 .about-grid { display: grid; grid-template-columns: 1fr; gap: 30px; }.captain-keepsake { max-width: 230px; }.captain-portrait img { max-height: 250px; }
 .about-copy .large-copy { font-size: 15px; }.skills-grid { grid-template-columns: 1fr; }.skill { padding: 20px; }
 .tribute,.tribute-inner { min-height: 410px; }.tribute-copy>p:not(.eyebrow) { font-size: 13px; }
 .journal-icon { width: 50px; height: 60px; font-size: 18px; }.journal-link { gap: 17px; }.journal-link h2 { font-size: 25px; }
 .contact { padding-block: 45px 25px; }.contact h2 { margin-top: 20px; }
}
@media print { .resume-dialog:not([open]),.preview-dialog { display: none!important; } }

/* A sea chart on screen; a standard, single-column document in print. */
.resume-open { overflow: hidden; }
.resume-dialog { --resume-ink: #34291d; --resume-muted: #6a5339; width: min(1080px,96vw); max-width: 96vw; height: min(940px,94dvh); max-height: 94dvh; padding: 0; margin: auto; border: 1px solid #8e7445; border-radius: 12px; background: #111d23; color: #f3e5c7; overflow: hidden; box-shadow: 0 40px 140px #000c; }
.resume-dialog[open] { display: flex; flex-direction: column; animation: logbook-unfold .4s cubic-bezier(.2,.7,.2,1); }
.resume-dialog::backdrop { background: #030d13dd; backdrop-filter: blur(12px); }
.resume-dialog-toolbar { display: flex; flex: none; justify-content: space-between; align-items: center; gap: 20px; padding: 18px 25px; border-bottom: 1px solid #465044; background: #111d23; }
.resume-dialog-toolbar .eyebrow { color: #d4bb8a; font-size: 8px; }
.resume-dialog-toolbar h2 { font: 400 29px/1.2 var(--pirate); margin-top: 5px; }
.resume-dialog-actions { display: flex; align-items: center; gap: 18px; }
.resume-dialog-actions a { font-size: 11px; white-space: nowrap; }
.resume-print { color: #352717; background: #ead4a6; border: 1px solid #ead4a6; border-radius: 4px; padding: 12px 16px; font-size: 12px; min-height: 44px; }
.resume-print:disabled { opacity: .45; cursor: wait; }
.resume-close { width: 44px; height: 44px; border: 1px solid #81714f; border-radius: 50%; background: transparent; color: #f3e5c7; font: 400 29px/1 var(--sans); flex-shrink: 0; }
.resume-close:hover { background: #35413e; }
.resume-dialog-scroll { overflow: auto; overscroll-behavior: contain; min-height: 0; padding: 30px 52px 40px; background: radial-gradient(ellipse at 20% 0,#4a553b66,transparent 65%),repeating-linear-gradient(30deg,transparent 0 100px,#c1a6680b 101px 102px),#18272c; }
.resume-dialog-footer { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 25px; font: 400 8px/1.5 var(--mono); letter-spacing: .6px; }
.resume-dialog-footer a { font: 500 11px/1.5 var(--sans); letter-spacing: 0; border-bottom: 1px solid #a99368; }
.resume-load-status { text-align: center; padding: 50px 10px; color: #eed7ae; }
.resume-load-status a { display: inline-block; text-decoration: underline; }
.resume-dialog [hidden] { display: none!important; }
.resume-page { max-width: none; width: 100%; padding: 30px 30px 65px; }
.resume-page-toolbar { max-width: 1030px; margin: 0 auto; display: flex; justify-content: space-between; gap: 25px; align-items: center; }
.resume-page-toolbar>div { display: flex; align-items: center; gap: 25px; }
.resume-page-toolbar .back-link { margin: 0; }
.resume-page-toolbar a { font-size: 11px; }
.resume-print-hint { font-size: 12px; color: var(--muted); text-align: center; margin: 20px 0 24px; }
.resume-stage { max-width: 1030px; margin: 0 auto; background: radial-gradient(ellipse at top,#63705255,transparent),#17262c; padding: 35px; border: 1px solid #65563d; border-radius: 7px; box-shadow: 0 25px 80px #0003; }
.resume-paper { --resume-ink: #34291d; --resume-muted: #6a5339; position: relative; padding: 38px 64px 38px; background: linear-gradient(90deg,transparent,#f4e5c799 7%,#f4e5c7cc 18%,#f4e5c7bb 82%,#f4e5c766 94%,transparent), #ecdbb8 url('/images/resume/captains-chart.jpg') center top/100% auto repeat-y; color: var(--resume-ink); font: 400 13px/1.75 var(--sans); clip-path: polygon(0 8px,4% 2px,8% 10px,13% 4px,19% 9px,25% 2px,32% 8px,38% 3px,45% 10px,52% 1px,60% 8px,68% 2px,76% 9px,83% 3px,91% 8px,100% 0,calc(100% - 3px) 20%,100% 42%,calc(100% - 4px) 65%,100% 85%,calc(100% - 2px) calc(100% - 6px),94% 100%,82% calc(100% - 8px),70% 100%,55% calc(100% - 6px),40% 100%,27% calc(100% - 5px),13% 100%,0 calc(100% - 5px),3px 78%,0 54%,4px 29%); }
.resume-paper::before { content: ''; position: absolute; inset: 16px; border: 1px solid #8a622c40; pointer-events: none; }
.resume-paper a { color: inherit; text-decoration: none; border-bottom: 1px solid #81664575; }
.resume-paper a:hover { color: #8b3326; border-color: #8b3326; }
.resume-paper :focus-visible { outline: 2px solid #893725; outline-offset: 4px; }
.resume-edition { display: flex; justify-content: space-between; gap: 20px; font: 500 8px/1.6 var(--mono); letter-spacing: 1.3px; border-bottom: 1px solid #896d4370; padding-bottom: 13px; margin-bottom: 25px; }
.resume-identity { display: grid; grid-template-columns: minmax(0,1fr) 120px; gap: 25px; align-items: center; }
.resume-kicker { font: 400 18px/1.2 var(--pirate); letter-spacing: 2px; color: #805136; margin-bottom: 14px; }
.resume-paper .resume-identity h1,.resume-paper .resume-identity h2 { font: 400 clamp(37px,4.3vw,58px)/1.08 var(--pirate); letter-spacing: .2px; margin: 0 0 13px; color: #392617; }
.resume-role { font: 600 14px/1.5 var(--sans); }
.resume-alias { font: 400 11px/1.6 var(--sans); margin-top: 6px; color: #6a5339; }
.resume-portrait { position: relative; margin: 0; padding: 7px 7px 5px; border: 1px solid #856844; background: #ebd7ae; transform: rotate(3deg); box-shadow: 3px 5px 0 #83664135; }
.resume-portrait>img { width: 100%; height: 130px; object-fit: cover; object-position: top; filter: sepia(.18); }
.resume-portrait figcaption { font: 500 8px/1.5 var(--mono); text-align: center; margin-top: 5px; letter-spacing: 1px; }
.resume-seal { position: absolute; bottom: -19px; right: -17px; width: 50px; height: 50px; display: grid; place-items: center; border-radius: 47% 52% 44% 50%; background: radial-gradient(circle at 32% 22%,#b84c39,#742419 70%); border: 3px double #bc6550; box-shadow: 2px 3px 5px #43231166; transform: rotate(-16deg); }
.resume-seal img { width: 31px; height: auto; opacity: .78; }
.resume-paper .resume-contact { display: flex; flex-wrap: wrap; gap: 5px 18px; font: 400 11px/1.8 var(--sans); margin: 28px 0 24px; padding: 13px 0; border-block: 1px solid #85673e80; overflow-wrap: anywhere; }
.resume-paper .resume-section { border-top: 0; padding-top: 0; margin-top: 25px; }
.resume-paper .resume-section>h2,.resume-paper .resume-section>h3 { font: 600 12px/1.5 var(--sans); text-transform: uppercase; letter-spacing: 1.5px; padding-bottom: 8px; margin: 0 0 12px; border-bottom: 1px solid #8d70465e; color: #6d3b28; }
.resume-section p { font-size: 12px; line-height: 1.85; }
.resume-paper .resume-section>h3:not(:first-child),.resume-paper .resume-section>h4:not(:first-child) { font-size: 12px; color: #34291d; text-transform: none; letter-spacing: 0; border: 0; margin-bottom: 5px; padding: 0; }
.resume-skill-list { list-style: none; margin: 0; padding: 0; font-size: 12px; }
.resume-skill-list li+li { margin-top: 6px; }
.resume-section-note { font-style: italic; color: #6a5339; margin-bottom: 15px; }
.resume-entry { margin: 0 0 18px; break-inside: avoid; }
.resume-entry-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 15px; margin-bottom: 6px; }
.resume-entry-heading h3,.resume-entry-heading h4 { font: 700 14px/1.45 var(--sans); margin: 0; }
.resume-entry-heading>span { font-size: 10px; color: #6a5339; text-align: right; }
.resume-section .resume-stack { font: 400 10px/1.7 var(--sans); color: #725337; margin-top: 5px; }
.resume-paper-footer { display: flex; justify-content: space-between; gap: 25px; border-top: 1px solid #81633f80; padding-top: 20px; margin-top: 28px; font: 500 8px/1.7 var(--mono); }
@keyframes logbook-unfold { from { opacity: 0; transform: translateY(18px) scale(.98); } to { opacity: 1; transform: none; } }
@media(max-width:700px) {
 .resume-dialog { width: 98vw; max-width: 98vw; height: 96dvh; max-height: 96dvh; border-radius: 8px; }
 .resume-dialog-toolbar { padding: 13px 14px; gap: 10px; }.resume-dialog-toolbar h2 { font-size: 22px; }.resume-dialog-toolbar .eyebrow { font-size: 6px; }
 .resume-dialog-actions { gap: 9px; }.resume-full-page { display: none; }.resume-print { padding: 9px 10px; font-size: 10px; }
 .resume-close { width: 38px; height: 38px; }.resume-dialog-scroll { padding: 16px 10px 25px; }
 .resume-dialog-footer { padding: 11px 14px; }.resume-dialog-footer>span { display: none; }.resume-dialog-footer a { margin: auto; }
 .resume-paper { padding: 30px 26px; }.resume-paper::before { inset: 10px; }
 .resume-edition { font-size: 6px; letter-spacing: .6px; gap: 8px; margin-bottom: 23px; }
 .resume-identity { grid-template-columns: minmax(0,1fr) 84px; gap: 16px; }
 .resume-paper .resume-identity h1,.resume-paper .resume-identity h2 { font-size: clamp(29px,7vw,43px); }
 .resume-kicker { font-size: 13px; letter-spacing: 1px; margin-bottom: 10px; }.resume-role { font-size: 11px; }.resume-alias { font-size: 10px; }
 .resume-portrait { padding: 5px; }.resume-portrait>img { height: 99px; }.resume-portrait figcaption { font-size: 6px; }
 .resume-seal { width: 37px; height: 37px; right: -9px; bottom: -15px; }.resume-seal img { width: 24px; }
 .resume-paper .resume-contact { display: grid; gap: 4px; font-size: 11px; margin-top: 23px; }
 .resume-paper .resume-section { margin-top: 23px; }.resume-section p,.resume-skill-list { font-size: 12px; }
 .resume-entry-heading { display: block; }.resume-entry-heading>span { display: block; text-align: left; margin-top: 3px; }
 .resume-entry-heading h3,.resume-entry-heading h4 { font-size: 14px; }.resume-entry { margin-bottom: 20px; }
 .resume-paper-footer { flex-direction: column; gap: 9px; }
 .resume-page { padding: 20px 10px 35px; }.resume-page-toolbar { gap: 15px; flex-wrap: wrap; padding: 0 10px; }
 .resume-page-toolbar>div { gap: 15px; }.resume-page-toolbar .button { font-size: 11px; }
 .resume-stage { padding: 12px 7px; }.resume-print-hint { font-size: 11px; max-width: 270px; margin-inline: auto; }
}
@media(prefers-reduced-motion:reduce) { .resume-dialog[open] { animation: none; } }
@media screen {
 .resume-paper { background-blend-mode:normal; font-size:14px; padding-top:38px; }
 .resume-section p,.resume-skill-list { font-size:14px; line-height:1.8; }
 .resume-paper .resume-contact { font-size:13px; }.resume-role { font-size:15px; }.resume-alias { font-size:12px; }
 .resume-portrait { background:radial-gradient(ellipse,#d2ad6966,transparent 70%); border:0; padding:0; box-shadow:none; transform:rotate(2deg); }
 .resume-portrait>img { height:150px; object-fit:contain; filter:drop-shadow(0 6px 5px #69442133); }
 .resume-portrait figcaption { font-size:8px; }.resume-paper .resume-section>h2,.resume-paper .resume-section>h3 { font-size:13px; }
 .resume-entry-heading h3,.resume-entry-heading h4 { font-size:16px; }.resume-section .resume-stack { font-size:12px; }
 .resume-entry-heading>span { font-size:12px; }.resume-dialog-toolbar h2 { margin-bottom:0; }
}
@media screen and (max-width:700px) {
 .resume-paper { padding:30px 23px; }.resume-identity { grid-template-columns:minmax(0,1fr) 92px; gap:10px; }.resume-portrait>img { height:125px; }
 .resume-role { font-size:13px; }.resume-alias { font-size:11px; }.resume-close { width:44px; height:44px; }.resume-dialog-toolbar { padding:10px 12px; }
 .resume-dialog-toolbar h2 { font-size:21px; }.resume-dialog-footer { padding:8px 14px; }.resume-dialog-footer a { min-height:34px; display:flex!important; align-items:center; }
 .resume-edition { letter-spacing:.5px; }.resume-paper .resume-identity h1,.resume-paper .resume-identity h2 { font-size:clamp(32px,6vw,43px); }
}
@media screen and (max-width:420px) {
 .resume-dialog { width:100%; max-width:100%; height:100dvh; max-height:100dvh; border-radius:0; border-inline:0; }
 .resume-dialog-toolbar { padding-top:max(10px,env(safe-area-inset-top)); }.resume-dialog-toolbar .eyebrow { font-size:6px; letter-spacing:.7px; }
 .resume-dialog-toolbar h2 { font-size:18px; }.resume-dialog-actions { gap:6px; }.resume-dialog-actions .resume-pdf { font-size:10px; padding-inline:8px; }
 .resume-dialog-scroll { padding:13px 5px 20px; }.resume-dialog-footer { padding-bottom:max(8px,env(safe-area-inset-bottom)); }
 .resume-paper { padding:27px 20px; }.resume-paper::before { inset:9px; }.resume-edition { font-size:6px; }
 .resume-identity { grid-template-columns:minmax(0,1fr) 80px; }.resume-portrait>img { height:110px; }.resume-seal { right:-3px; }
 .resume-paper .resume-identity h1,.resume-paper .resume-identity h2 { font-size:32px; }.resume-kicker { font-size:12px; }
 .resume-page { padding-inline:3px; }.resume-stage { padding:10px 3px; }
}
@media screen and (max-height:500px) and (orientation:landscape) {
 .resume-dialog { height:98dvh; max-height:98dvh; }.resume-dialog-toolbar { padding:5px 15px; }.resume-dialog-toolbar .eyebrow { display:none; }.resume-dialog-toolbar h2 { font-size:22px; }.resume-dialog-footer { padding:3px 15px; }
}
@media print {
 @page { size: A4; margin: 14mm 16mm; }
 html.resume-open { overflow: visible!important; }
 body:has(.resume-dialog[open])>*:not(.resume-dialog) { display: none!important; }
 .resume-dialog[open] { display: block!important; position: static!important; width: auto!important; height: auto!important; max-width: none!important; max-height: none!important; margin: 0!important; padding: 0!important; border: 0!important; box-shadow: none!important; overflow: visible!important; background: white!important; }
 .resume-dialog::backdrop { display: none; }
 .resume-dialog-toolbar,.resume-dialog-footer,.resume-page-toolbar,.resume-print-hint,.resume-load-status,.resume-edition,.resume-kicker,.resume-portrait { display: none!important; }
 .resume-page,.resume-stage,.resume-dialog-scroll,.resume-dialog-content { display: block; width: auto; max-width: none; height: auto; max-height: none; overflow: visible; padding: 0; margin: 0; background: white; border: 0; box-shadow: none; }
 .resume-paper { padding: 0; margin: 0; background: white!important; color: black!important; clip-path: none; font: 10pt/1.4 Arial,sans-serif; }
 .resume-paper::before { display: none; }.resume-identity { display: block; }
 .resume-paper .resume-identity h1,.resume-paper .resume-identity h2 { font: 700 24pt/1.15 Arial,sans-serif; color: black; letter-spacing: 0; margin: 0 0 5pt; }
 .resume-role { font: 600 11pt/1.4 Arial,sans-serif; }.resume-alias { font: 9pt/1.4 Arial,sans-serif; color: #222; }
 .resume-paper .resume-contact { display: block; font: 9pt/1.6 Arial,sans-serif; margin: 10pt 0; padding: 6pt 0; border-color: #999; }
 .resume-contact a { display: inline; margin-right: 12pt; }
 .resume-paper .resume-section { margin: 12pt 0 0; padding: 0; border: 0; }
 .resume-paper .resume-section>h2,.resume-paper .resume-section>h3 { font: 700 10pt/1.4 Arial,sans-serif; color: black; letter-spacing: .4pt; padding-bottom: 4pt; margin-bottom: 7pt; border-color: #aaa; break-after: avoid; }
 .resume-section p,.resume-skill-list { font: 9pt/1.45 Arial,sans-serif; color: black; }
 .resume-entry { margin-bottom: 10pt; break-inside: avoid; }.resume-entry-heading { display: block; margin-bottom: 3pt; }
 .resume-entry-heading h3,.resume-entry-heading h4 { display: inline; font: 700 10pt/1.4 Arial,sans-serif; }
 .resume-entry-heading>span { display: inline; text-align: left; color: #333; font-size: 9pt; margin-left: 8pt; }
 .resume-section .resume-stack { font: 8pt/1.4 Arial,sans-serif; color: #333; margin-top: 3pt; }
 .resume-skill-list li+li { margin-top: 3pt; }.resume-section-note { margin-bottom: 8pt; }
 .resume-paper a { color: black; border: 0; text-decoration: none; }
 .resume-paper-footer { display: block; font: 8pt/1.5 Arial,sans-serif; margin-top: 12pt; padding-top: 7pt; border-color: #aaa; }.resume-paper-footer a { margin-left: 10pt; }
}
/* The direct PDF is available even when the host browser cannot print. */
.resume-dialog-actions .resume-pdf { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 15px; background: #ead4a6; color: #352717; border-radius: 4px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.resume-dialog-actions .resume-print { background: transparent; color: #f3e5c7; border-color: #81714f; }
.resume-dialog-footer .resume-full-page { display: inline; }
@media(max-width:700px) { .resume-dialog-actions .resume-pdf { font-size: 10px; padding-inline: 10px; }.resume-dialog-actions .resume-print { display: none; }.resume-dialog-footer a { margin: 0; }.resume-page-toolbar>div { flex-wrap: wrap; gap: 12px; } }

/* A navigable sea chart: transparent artwork, ink, brass, and paper. */
body { background-image: radial-gradient(ellipse at 95% 3%,#256d7133,transparent 35%),radial-gradient(ellipse at 0 55%,#9671450d,transparent 35%); }
.hero { position:relative; }
.voyage-art { isolation:isolate; border:0; background:radial-gradient(ellipse at 50% 70%,#488b8526,transparent 65%); box-shadow:none; overflow:visible; min-height:500px; }
.voyage-art::before { content:''; position:absolute; inset:24px 0 65px; border:1px solid #c5aa6655; border-radius:50%; background:repeating-radial-gradient(circle at center,transparent 0 58px,#cab48115 59px 60px),linear-gradient(30deg,transparent 49.8%,#c6b67922 50%,transparent 50.2%); transform:rotate(-18deg); z-index:-1; }
.voyage-art::after { content:''; position:absolute; inset:56px 34px 96px; border:1px dashed #c5aa6644; border-radius:50%; pointer-events:none; z-index:-1; }
.hero-art-window { inset:0 30px 75px; overflow:visible; }
.hero-captain { height:100%; max-height:450px; max-width:100%; object-fit:contain; filter:drop-shadow(0 20px 20px #0006); animation:captain-drift 7s ease-in-out infinite; }
.hero-bounty { height:100%; max-height:425px; max-width:100%; object-fit:contain; filter:drop-shadow(0 18px 16px #0006); animation:paper-drift 8s ease-in-out infinite; }
.hero-ship { filter:drop-shadow(0 20px 20px #0006); }
.voyage-art figcaption { bottom:30px; left:25px; right:25px; border-top:1px solid #c6aa6d50; padding-top:15px; }
.art-switch { bottom:-15px; left:0; right:0; justify-content:center; gap:8px; }
.art-switch button { min-height:38px; padding:9px 13px; border-radius:20px; background:var(--paper); }
.art-switch button[aria-pressed=true] { background:var(--gold); color:#35291d; }
.chart-coordinate { position:absolute; top:2px; left:8px; writing-mode:vertical-rl; font:9px var(--mono); letter-spacing:3px; color:var(--muted); }
.floating-waypoint { position:absolute; z-index:3; display:flex; align-items:center; gap:10px; padding:11px 15px; min-height:44px; font:500 11px var(--sans); border:1px solid #bba36a70; border-radius:4px 16px 16px 4px; color:#e8d2a4; background:#13282de8; box-shadow:0 12px 30px #0003; backdrop-filter:blur(12px); transition:translate .25s,box-shadow .25s; }
.floating-waypoint span { font:24px var(--pirate); }.floating-waypoint:hover { translate:0 -4px; box-shadow:0 15px 35px #0006; }
.waypoint-worlds { right:-5px; top:24%; transform:rotate(4deg); }.waypoint-log { left:-12px; bottom:25%; transform:rotate(-4deg); }
.section-top { position:relative; border-bottom:1px solid var(--line); padding-bottom:17px; }
.section-top::after { content:'✦'; position:absolute; right:0; bottom:-8px; font-size:14px; color:var(--gold); background:var(--paper); padding-left:10px; }
.section-top .eyebrow { color:var(--soft-gold); }
.project-card { position:relative; }.project-card .project-body { padding:20px 13px 10px; border-left:1px solid #bda77944; }
.project-card .project-body::before { content:''; position:absolute; bottom:0; left:-3px; width:7px; height:7px; border-radius:50%; background:var(--gold); }
.framed-preview { border-radius:12px 12px 2px 2px; box-shadow:0 18px 30px #0002; }
.preview-chrome,.preview-bottom { background:linear-gradient(110deg,#263438,#15252d); color:#cfbc92; }
.preview-dialog { border-color:#8d7850; }.preview-toolbar,.preview-footer { background:linear-gradient(100deg,#192a30,#102029); }
.captain-keepsake { max-width:350px; }.captain-portrait { padding:0; background:none; border:0; box-shadow:none; max-width:340px; transform:rotate(-3deg); filter:drop-shadow(0 22px 20px #0006); transition:transform .4s; }
.captain-portrait:hover { transform:rotate(1deg) translateY(-7px); }
.captain-portrait img { width:100%; height:auto; max-height:none; object-fit:contain; }
.captain-memory { margin-top:32px; }
.arsenal { background:radial-gradient(ellipse at 90% 30%,#26757a20,transparent 50%),var(--night); }
.skill { position:relative; overflow:hidden; background:linear-gradient(140deg,#25464d38,transparent 70%); border:1px solid #8e80524d; border-radius:4px 20px 4px 4px; }
.skill::after { content:''; position:absolute; width:105px; height:105px; border:1px dashed #cdb77322; border-radius:50%; right:-35px; top:-35px; pointer-events:none; }
.skill[open] { box-shadow:0 17px 36px #0003; border-color:#bda06488; }.skill h3 { font:400 28px/1.25 var(--pirate); }
.tech-chip,.skill .tech-chip { background:transparent; border-color:#a98f5a35; border-radius:50% 50% 8px 8px; min-height:93px; padding:14px 7px 11px; transition:transform .25s,border-color .25s; }
.tech-chip img,.skill .tech-chip img { background:transparent!important; border-radius:0; padding:0; width:33px; height:33px; object-fit:contain; filter:drop-shadow(0 4px 5px #0004); }
.tech-chip:hover { transform:translateY(-5px) rotate(-3deg); border-color:#ccb47a; }
[data-theme=dark] .tech-chip img:is([src$='/threejs.svg'],[src$='/express.svg'],[src$='/github.svg'],[src$='/prisma.svg'],[src$='/unity.svg']) { filter:brightness(0) invert(.88) sepia(.2) drop-shadow(0 4px 6px #0005); }
.journal-link { position:relative; padding:25px 30px; background:linear-gradient(100deg,#d2bb8020,#d2bb8007); border:1px solid #b9a36c55; border-radius:3px 20px 3px 3px; }
.journal-icon { border:1px solid #b9a36c55; border-radius:50%; background:transparent; color:var(--gold); transform:rotate(-8deg); }
.contact { position:relative; overflow:hidden; background:radial-gradient(ellipse at 85% 100%,#458f7940,transparent 60%),var(--paper); }
.contact::before { content:'✧'; position:absolute; font:500px/1 var(--pirate); color:#c5aa6d0c; right:-50px; bottom:-140px; pointer-events:none; }
.case-page { background:radial-gradient(ellipse at 100% 5%,#367b7620,transparent 30%); }
.case-hero { border:1px solid #b7a27166; border-radius:5px 22px 5px 5px; padding:9px; background:#cdb77913; box-shadow:0 25px 60px #0003; }
.case-hero .project-image { border-radius:2px 14px 2px 2px; }
.case-sidebar { background:linear-gradient(115deg,#e8d6ad,#f3e7cd 45%,#dbc396); color:#483721; padding:27px; border:0; box-shadow:0 17px 38px #0003; clip-path:polygon(0 4px,12% 0,24% 5px,38% 1px,55% 5px,73% 0,89% 5px,100% 0,100% calc(100% - 5px),83% 100%,65% calc(100% - 4px),45% 100%,27% calc(100% - 5px),9% 100%,0 calc(100% - 4px)); }
.case-sidebar .eyebrow,.case-sidebar .case-date,.case-sidebar p,.case-sidebar .private-label { color:#665035; }.case-sidebar .stack-list li { color:#483721; border-color:#96784a55; background:#8365340b; }.case-sidebar a:not(.button) { color:#6c392c; }
.case-main section { border-top:1px solid #a78d5d55; padding-top:25px; }.case-main section .eyebrow { color:var(--soft-gold); }
.crew-signoff { display:flex; align-items:center; gap:20px; padding:25px 0; border-block:1px solid var(--line); margin-top:35px; }.crew-signoff img { width:90px; height:105px; object-fit:contain; filter:drop-shadow(0 8px 12px #0004); }.crew-signoff strong { display:block; font:30px var(--pirate); margin-bottom:9px; }.crew-signoff a { color:var(--soft-gold); font-size:13px; }
.case-preview-note { font:12px/1.7 var(--sans); color:var(--muted); margin:18px 0 0; }
.system-gallery { margin:30px 0 55px; display:grid; grid-template-columns:1fr 1fr; gap:24px; }.system-gallery figure { margin:0; min-width:0; }.system-gallery a { display:block; border:1px solid #b6a06766; padding:6px; background:#b6a06712; border-radius:8px; transition:transform .3s; }.system-gallery a:hover { transform:translateY(-5px); }.system-gallery img { width:100%; height:auto; border-radius:4px; }.system-gallery figcaption { padding:15px 3px; }.system-gallery strong { display:block; font:24px var(--pirate); }.system-gallery p { font-size:13px; color:var(--muted); margin-top:8px; }
.experiment-card { border:1px solid #bfa66c44; padding:10px 10px 0; background:linear-gradient(140deg,#8491720c,transparent); box-shadow:0 18px 30px #0002; }.experiment-copy { padding-inline:12px; }.experiment-cover { border-radius:5px; }
[data-theme=light] .voyage-art { background:radial-gradient(ellipse,#467d6c20,transparent 65%); }[data-theme=light] .skill { background:#b2965c0b; }[data-theme=light] .floating-waypoint { background:#eadbbeee; color:#423720; }
@keyframes captain-drift { 50% { transform:translateY(-10px) rotate(1deg); } }@keyframes paper-drift { 50% { transform:rotate(2deg) translateY(-7px); } }
.motion-paused .hero-captain,.motion-paused .hero-bounty { animation:none; }
@media(max-width:900px) { .waypoint-worlds { right:0; }.waypoint-log { left:0; }.hero-captain { max-height:380px; }.voyage-art { min-height:430px; }.art-switch button { padding-inline:10px; font-size:10px; } }
@media(max-width:650px) { .voyage-art { min-height:415px; margin:15px auto 25px; width:min(100%,390px); }.hero-art-window { inset:0 20px 80px; }.hero-captain { max-height:340px; }.hero-bounty { max-height:320px; }.floating-waypoint { padding:8px 11px; font-size:10px; }.waypoint-worlds { top:24%; }.waypoint-log { bottom:26%; }.chart-coordinate { font-size:7px; }.captain-keepsake { max-width:280px; }.captain-portrait img { max-height:none; }.system-gallery { grid-template-columns:1fr; gap:12px; }.case-sidebar { padding:24px; }.journal-link { padding:20px 15px; }.journal-icon { flex-shrink:0; }.skill h3 { font-size:26px; }.case-hero { padding:5px; } }
@media(prefers-reduced-motion:reduce) { .hero-captain,.hero-bounty { animation:none; }.floating-waypoint,.captain-portrait,.system-gallery a,.tech-chip { transition:none; transform:none!important; translate:none!important; } }
@media print { .crew-signoff,.floating-waypoint,.chart-coordinate { display:none; }.case-sidebar { clip-path:none; background:white; box-shadow:none; } }
/* Decorative chart rings may extend past their card, never the viewport. */
body { overflow-x:clip; }
@media print { body { overflow:visible; } }
.case-hero:has(img[src*='som-bi-']) img { aspect-ratio:1.44; max-height:none; object-fit:contain; }
/* Horizontal chart meridian follows the card width, even on a narrow phone. */
.art-orbit::after { left:0; right:0; top:50%; bottom:auto; border-left:0; border-top:1px dashed var(--soft-gold); transform:none; }
.voyage-art::before { transform:none; }

/* Project records: visual evidence beside a compact, readable paper overview. */
[hidden], .hero-art-window > [hidden] { display:none!important; }
.hero-art-window { display:grid; place-items:center; }
.hero-art-window > * { grid-area:1/1; position:relative; inset:auto; max-width:100%; min-width:0; }
.hero-art-window .hero-ship { width:auto; height:100%; max-height:390px; }
.hero-art-window .hero-bounty { aspect-ratio:418/600; width:auto; height:100%; }
.wanted-document { display:block; position:relative; aspect-ratio:418/600; width:100%; height:100%; }
.wanted-document .wanted-original { display:block; width:100%; height:100%; object-fit:fill; }
.wanted-document .wanted-photo { position:absolute; left:9.65%; top:22.45%; width:80.25%; height:39.8%; overflow:hidden; }
.wanted-document .wanted-photo img { position:absolute; width:128.2%; max-width:none; height:auto; max-height:none; left:-14%; top:-58.8%; }
.project-cover .preview-screen { display:grid; place-items:center; aspect-ratio:16/10; background:#0b1522; overflow:hidden; }
.project-cover .preview-screen .project-image { width:100%; height:100%; aspect-ratio:auto; object-fit:contain; object-position:center; transform:none; }
.case-hero .project-image { width:100%; height:auto; max-height:720px; object-fit:contain; background:#101b24; }
.personal-preview img { object-fit:contain; object-position:top; background:#101b24; }
.project-log { width:min(1180px,calc(100vw - 40px)); max-width:none; max-height:calc(100dvh - 40px); padding:0; overflow:hidden; color:var(--ink); background:var(--paper); box-shadow:0 35px 100px #0009; }
.project-log[open] { display:flex; flex-direction:column; }
.project-log .preview-toolbar { flex-shrink:0; padding:20px 28px; border-bottom:1px solid #b8a16a66; color:#eee4d2; }
.project-log .preview-toolbar h2 { font:clamp(25px,3.5vw,40px)/1.1 var(--pirate); overflow-wrap:anywhere; }
.project-log .preview-toolbar .eyebrow { font-size:9px; color:#cdbb92; margin-bottom:7px; }
.project-log .preview-close { flex:0 0 44px; width:44px; height:44px; min-height:44px; color:#eee4d2; border-color:#c4ac7955; }
.project-log-scroll { overflow:auto; overscroll-behavior:contain; min-height:0; scrollbar-color:#a69062 #12212a; }
.project-log-grid { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:24px; padding:26px; align-items:start; background:radial-gradient(ellipse at 10% 0,#48898320,transparent 60%); }
.project-log-visual { min-width:0; position:sticky; top:0; }
.project-log .preview-viewport { padding:0; min-height:0; height:auto; aspect-ratio:16/11; max-height:none; display:flex; align-items:center; justify-content:center; overflow:auto; border:1px solid #b8a16a55; border-radius:4px; background:#09121b; }
.project-log .preview-viewport img { width:100%; height:100%; max-height:none; object-fit:contain; }
.project-log .preview-viewport.is-enlarged { display:block; }
.project-log .preview-viewport.is-enlarged img { width:1100px; min-width:1100px; height:auto; max-width:none; object-fit:unset; }
.preview-caption { margin:12px 0; color:var(--muted); font:11px/1.6 var(--mono); }
.project-log .preview-zoom { min-height:44px; font-size:12px; padding:9px 15px; background:transparent; color:var(--soft-gold); border:1px solid #b8a16a66; border-radius:30px; }
.preview-gallery { display:flex; flex-wrap:wrap; gap:8px; margin-block:12px; }
.preview-gallery:empty { display:none; }
.preview-gallery button { min-height:44px; padding:8px 12px; border:1px solid var(--line); border-radius:4px; color:var(--ink); background:var(--surface); font:11px var(--sans); }
.preview-gallery button[aria-pressed=true] { border-color:var(--soft-gold); color:var(--soft-gold); }
.project-log-paper { min-width:0; padding:30px 25px; color:#3c2e20; background:linear-gradient(110deg,#ddc795,#f1e2bf 45%,#e7d2a7); box-shadow:0 15px 24px #0004; clip-path:polygon(0 5px,10% 0,23% 6px,38% 1px,54% 5px,70% 0,86% 5px,100% 1px,100% calc(100% - 6px),86% 100%,69% calc(100% - 4px),52% 100%,31% calc(100% - 5px),15% 100%,0 calc(100% - 3px)); }
.preview-meta { font:10px/1.7 var(--mono); text-transform:uppercase; letter-spacing:1px; color:#735339; margin:0 0 18px; border-bottom:1px solid #88633a55; padding-bottom:12px; }
.preview-summary { font:500 19px/1.5 var(--sans); margin:0 0 24px; }
.project-log-paper h3 { font:24px/1.2 var(--pirate); margin:22px 0 12px; }
.preview-features { margin:0; padding-left:18px; font:14px/1.65 var(--sans); }
.preview-features li { padding:0 0 10px 3px; }
.preview-features li::marker { color:#96612d; }
.preview-stack { display:flex; flex-wrap:wrap; gap:6px; list-style:none; margin:0; padding:0; }
.preview-stack li { padding:6px 9px; border:1px solid #88633a55; border-radius:3px; font:11px/1.4 var(--mono); }
.preview-context { margin-top:25px; border-block:1px solid #88633a55; }
.preview-context summary { display:flex; justify-content:space-between; gap:10px; padding:15px 0; min-height:44px; cursor:pointer; font:600 13px/1.6 var(--sans); }
.preview-context p { font:14px/1.8 var(--sans); margin-bottom:17px; }
.preview-context .preview-credit { font-size:12px; color:#735339; border-top:1px solid #88633a55; padding-top:12px; }
.preview-sources { display:flex; flex-wrap:wrap; gap:4px 18px; padding-top:15px; }
.preview-sources a { display:inline-flex; align-items:center; min-height:44px; text-decoration:underline; text-underline-offset:4px; font:600 12px/1.6 var(--sans); color:#733b2e; }
.project-log .preview-footer { padding:14px 26px; display:flex; flex-wrap:wrap; gap:12px 22px; align-items:center; flex-shrink:0; border-top:1px solid #b8a16a66; color:#eee4d2; }
.project-log .preview-tip { margin-right:auto; font:10px var(--mono); color:#bfac88; }
.project-log .preview-footer .text-link { min-height:44px; display:flex; align-items:center; color:#ead8b0; font-size:12px; }
.project-log .preview-live { min-height:44px; padding:11px 17px; background:#dfc68c; color:#322619; border-radius:4px; font-size:12px; }
.preview-unavailable { color:#dfc68c; font:30px var(--pirate); padding:25px; }
@media(max-width:760px) {
 .project-log { width:calc(100vw - 16px); max-height:calc(100dvh - 16px); border-radius:10px; }
 .project-log-grid { grid-template-columns:1fr; padding:15px; gap:18px; }
 .project-log-visual { position:static; }
 .project-log .preview-viewport { aspect-ratio:16/9; }
 .project-log-paper { padding:25px 20px; }
 .project-log .preview-toolbar { padding:16px; gap:12px; }
 .project-log .preview-footer { padding:10px 16px; gap:8px 16px; justify-content:space-between; }
 .project-log .preview-tip { display:none; }
 .preview-summary { font-size:18px; }
 .hero-art-window .hero-ship { max-height:320px; }
}
@media(prefers-reduced-motion:reduce) { .project-log * { scroll-behavior:auto!important; } }
.studio-signature { display:flex; align-items:center; gap:24px; padding:20px 0; margin-top:18px; border-block:1px solid var(--line); }
.studio-signature img { width:min(55%,220px); height:auto; }
.studio-signature span { color:var(--soft-gold); font:11px/1.6 var(--mono); }
[data-theme=light] .studio-signature img { filter:brightness(.2); }
/* Preserve a clear reading area for the original wanted-poster wording. */
.voyage-art:has([data-art="bounty"][aria-pressed="true"]) .floating-waypoint { display:none; }
.project-log .preview-close { background:#182a30; color:#eee4d2; }

/* Warm paper, readable evidence, and deliberate tactile feedback. */
:root[data-theme=light] {
 --paper:#d8cbb1; --paper-light:#e4d6b9; --surface:#cdbfa3; --ink:#302b23;
 --muted:#595346; --line:#a4997e; --header-bg:#d2c4aaf5; --soft-gold:#70501f;
}
[data-theme=light] body { background-image:radial-gradient(ellipse at 95% 0,#577d7133,transparent 50%),linear-gradient(120deg,#65543512,transparent 45%,#6e50321c); }
[data-theme=light] .site-header { box-shadow:0 8px 30px #3a302318; }
[data-theme=light] :is(.framed-preview,.browser-frame,.experiment-card,.skill) { box-shadow:0 14px 30px #34271d20,0 2px 3px #34271d18; }
[data-theme=light] .world-tabs button { background:#cbbc9f; color:#302b23; }
.project-cover .preview-screen { position:relative; padding:0; width:100%; }
.project-cover .preview-screen .project-image { padding:0; display:block; min-width:0; background:#0b1522; filter:none; }
.manifest .project-card { grid-template-columns:minmax(210px,32%) minmax(0,1fr); align-items:center; gap:28px; padding:22px 0; }
.manifest .project-cover { width:100%; border-radius:10px; }
.manifest .project-cover .preview-screen { aspect-ratio:16/10; padding:0; }
.manifest .project-card .project-body { padding:12px 20px; }
.manifest .project-summary { min-height:0; }
.world-tabs { gap:12px; padding:12px 2px 20px; }
.world-tabs img { opacity:1; filter:none; }
.world-tabs button { box-shadow:0 5px 0 #0003,0 12px 25px #0002; border-radius:10px; }
.world-tabs button[aria-selected=true] { box-shadow:0 5px 0 #93733c,0 14px 26px #0004; }
.rail-navigation { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:20px 0 2px; }
.rail-navigation p { font:11px/1.5 var(--mono); color:var(--muted); }
.rail-navigation>div,.record-navigation { display:flex; gap:10px; align-items:center; }
:is(.rail-navigation,.record-navigation) button,.world-navigation button,.personal-controls button {
 width:48px; height:48px; min-width:48px; border-radius:50%; border:1px solid #aa916055;
 background:linear-gradient(145deg,#30434a,#13232c); color:#ebd19a; font-size:22px;
 box-shadow:0 4px 0 #080f16,0 9px 18px #0003,inset 0 1px #ffffff1a;
}
.record-navigation { margin-left:auto; }
.record-position { font:10px var(--mono); color:#cdbb92; white-space:nowrap; }
[data-theme=light] :is(.rail-navigation,.world-navigation,.personal-controls) button { background:linear-gradient(145deg,#dfc99c,#baa272); color:#352d1e; box-shadow:0 4px 0 #8c7851,0 9px 18px #34271d22; }
.world-tabs,.personal-track { cursor:grab; touch-action:pan-x pan-y; }
.is-dragging { cursor:grabbing!important; scroll-snap-type:none!important; scroll-behavior:auto!important; user-select:none; }
.world-tabs img,.personal-track img { -webkit-user-drag:none; user-select:none; }
.world-stage { touch-action:pan-y; }
:is(button,.button,summary,[role=button],.text-link,.floating-waypoint,.project-cover,.experiment-cover,.personal-preview) {
 -webkit-tap-highlight-color:transparent; transition:scale .18s cubic-bezier(.2,.9,.2,1),translate .25s,box-shadow .25s,background-color .2s;
}
:is(button,.button,summary,[role=button],.text-link,.floating-waypoint):active { scale:.955 .97; }
button:disabled { cursor:default; opacity:.45; }
/* The scanned texture carries the fibers/folds; the silhouette cuts uneven tears. */
.project-log-paper,.case-sidebar {
 background:#dec393 url('/images/resume/weathered-paper.webp') center/100% 100%;
 padding:38px 32px; position:relative; color:#35281b;
 box-shadow:inset 0 0 36px #76471b42;
 clip-path:polygon(1% 1.1%,4% .6%,7% 1%,11% .15%,14% .6%,19% 0,23% .7%,28% .25%,33% .8%,38% .1%,44% .6%,49% 0,54% .8%,60% .3%,65% .9%,70% .1%,75% .6%,81% 0,86% .8%,91% .3%,96% .7%,99% .2%,99.7% 7%,99% 16%,100% 24%,99.4% 35%,100% 43%,99.1% 54%,100% 64%,99.3% 74%,100% 86%,99.2% 98.8%,95% 99.4%,90% 99%,84% 100%,78% 99.3%,72% 99.9%,65% 99.2%,59% 100%,51% 99.5%,45% 100%,38% 99.2%,31% 99.8%,24% 99.1%,18% 100%,12% 99.4%,6% 99.9%,.7% 99%,0 89%,.8% 78%,.1% 68%,.9% 57%,0 45%,.7% 33%,0 21%,.8% 11%);
}
.project-log-grid { filter:drop-shadow(0 8px 10px #0003); }
.project-log-paper::before { content:'✦  CAPTAIN’S ARCHIVE  ✦'; display:block; font:9px/1.7 var(--mono); letter-spacing:2px; color:#714821; text-align:center; border-bottom:3px double #855c3770; padding:3px 0 18px; margin-bottom:22px; }
.project-log-paper::after { content:'BB'; display:grid; place-items:center; width:46px; height:46px; margin:25px 0 0 auto; border-radius:47% 53% 45% 52%; border:4px double #b76247; background:radial-gradient(circle at 30% 25%,#a44832,#652818); color:#e0ad76; font:21px var(--pirate); box-shadow:2px 4px 5px #56311355; rotate:-12deg; }
.project-log-scroll,.resume-dialog-scroll { background:radial-gradient(ellipse at 25% 0,#48635b44,transparent 60%),#111e24; }
.project-log[open],.resume-dialog[open] { animation:log-arrival .42s cubic-bezier(.2,.9,.2,1.12); }
@keyframes log-arrival { from { opacity:0; translate:0 24px; scale:.95; } to { opacity:1; translate:0 0; scale:1; } }
@media screen {
 .resume-paper { background:#e6cf9f url('/images/resume/weathered-paper.webp') center/100% 100%; box-shadow:inset 0 0 50px #83522944,0 20px 45px #0005; }
}
@media(max-width:760px) {
 .manifest .project-card { grid-template-columns:minmax(130px,38%) minmax(0,1fr); gap:14px; align-items:start; }
 .manifest .project-card .project-body { padding:0 0 0 13px; }
 .manifest .project-card h3 { font-size:22px; line-height:1.2; margin-block:7px 10px; }
 .manifest .project-summary { font-size:13px; line-height:1.6; }
 .manifest .project-eyebrow { font-size:9px; }
 .manifest .project-card h3 span { font-size:18px; }
 .project-log-paper { padding:32px 25px; }
 .preview-features { font-size:14px; }
 .record-navigation { width:100%; justify-content:space-between; border-top:1px solid #baa07135; padding-top:10px; }
 .record-navigation button { height:44px; width:44px; min-width:44px; }
 .world-tabs button { flex-basis:160px; }
 .rail-navigation { padding-top:15px; }
 .art-switch { gap:6px; }.art-switch button { min-height:44px; }
}
.motion-paused :is(button,.button,summary,.hero-art-window>*,dialog) { animation:none!important; transition:none!important; }
@media(prefers-reduced-motion:reduce) {
 :is(button,.button,summary,[role=button],.text-link,.floating-waypoint,dialog) { animation:none!important; transition:none!important; scale:none!important; }
}
.motion-preview { display:block; position:relative; width:100%; height:100%; min-width:0; overflow:hidden; }
.preview-loop { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; opacity:0; pointer-events:none; transition:opacity .4s; background:#0b1522; }
.preview-loop.is-playing { opacity:1; }
.preview-screen,.world-preview,.personal-preview,.experiment-cover,.preview-viewport { position:relative; }
.world-preview .preview-loop { object-fit:cover; }
.project-log .preview-viewport .preview-loop { border-radius:3px; }
.project-log .preview-viewport.is-enlarged .preview-loop { display:none; }
.case-hero .motion-preview { aspect-ratio:16/10; }
.case-hero .motion-preview>.project-image { height:100%; padding:0; }
@media(prefers-reduced-motion:reduce) { .preview-loop { display:none; } }
@media print { .preview-loop,.rail-navigation,.record-navigation { display:none; } }
.preview-motion { margin-left:8px; min-height:44px; padding:9px 14px; color:#e6ca93; background:#24353c; border:1px solid #b8a16a66; border-radius:24px; font-size:12px; }
.world-caption { min-height:0; }
/* Avoid a double exposure while a recorded frame replaces its still poster. */
:is(.motion-preview,.world-preview,.preview-viewport,.personal-preview,.experiment-cover):has(>.preview-loop.is-playing)>img { opacity:0; }
@media(min-width:761px) { .project-log .preview-viewport { height:min(42dvh,360px); aspect-ratio:auto; } }

/* Midnight studio: soft light, tactile controls, and small moments of delight. */
:root {
 --paper:#0b1118; --paper-light:#121d26; --surface:#111e27; --night:#080f16;
 --line:#2b3942; --muted:#acb9bf; --header-bg:#0b1118eb;
 --ease-out:cubic-bezier(.16,1,.3,1); --ease-spring:cubic-bezier(.22,1,.36,1.15);
 --lift-shadow:0 20px 44px #0005,0 5px 12px #0003,inset 0 1px #ffffff0c;
}
@view-transition { navigation:auto; }
::view-transition-old(root) { animation:studio-page-out .16s ease both; }
::view-transition-new(root) { animation:studio-page-in .32s var(--ease-out) both; }
@keyframes studio-page-out { to { opacity:0; } }
@keyframes studio-page-in { from { opacity:0; translate:0 10px; } }
body { background-image:radial-gradient(ellipse at 95% 0,#2a676d26,transparent 30%),radial-gradient(ellipse at 0 45%,#533b5814,transparent 35%); }
.site-header { box-shadow:0 8px 36px #0003; border-bottom-color:#ffffff0c; }
.main-nav a { position:relative; transition:color .2s; }
.main-nav a::after { content:''; position:absolute; bottom:1px; left:0; width:100%; height:2px; border-radius:2px; background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease-out); }
.main-nav a:is(:hover,:focus-visible)::after { transform:scaleX(1); }
.header-tools :is(.day-toggle,.motion-toggle,.menu-toggle) { justify-content:center; min-width:44px; min-height:44px; border:1px solid transparent; border-radius:14px; transition:background .2s,border-color .2s,scale .2s; }
.header-tools :is(.day-toggle,.motion-toggle,.menu-toggle):hover { background:#ffffff08; border-color:var(--line); }
.button { position:relative; isolation:isolate; gap:16px; border-radius:13px; min-height:48px; padding:13px 21px; background:linear-gradient(145deg,#23343e,#14202a); border:1px solid #63737d55; color:#eee8dd; box-shadow:0 4px 0 #050b10,0 10px 22px #0004,inset 0 1px #ffffff12; transition:translate .25s var(--ease-out),scale .2s,box-shadow .25s,border-color .25s,background .25s; }
.button.red-button { background:linear-gradient(145deg,#bd5548,#8d302d); border-color:#f68b6c55; color:#fff6ed; box-shadow:0 4px 0 #4c1c1d,0 10px 28px #7d292c33,inset 0 1px #ffd3ac33; }
.button.logbook-button,.button.light-button { background:linear-gradient(145deg,#ebd59c,#c8ac6c); border-color:#ffedb855; color:#302819; box-shadow:0 4px 0 #6e5733,0 10px 28px #b9934420,inset 0 1px #fff8d477; }
.button>span[aria-hidden] { display:inline-block; transition:translate .3s var(--ease-spring); }
.button:hover>span[aria-hidden] { translate:3px -2px; }
.button:active { translate:0 3px; box-shadow:0 1px 0 #050b10,inset 0 2px 6px #0003; }
.text-link { display:inline-flex; align-items:center; min-height:44px; border-bottom-color:var(--line); transition:color .2s,border-color .2s,translate .25s; }
.text-link:hover { color:var(--soft-gold); border-bottom-color:currentColor; }
.filter-buttons { gap:7px; }
.filter { border:1px solid var(--line); background:#ffffff03; border-radius:100px; min-height:44px; padding:9px 15px; transition:background .2s,color .2s,box-shadow .25s; }
.filter.active { background:linear-gradient(135deg,#dcc489,#bda16b); color:#24251f; border-color:#dec997; box-shadow:0 3px 12px #ba985220,inset 0 1px #fff4; }
.search-box { border:1px solid var(--line); border-radius:14px; background:#0002; padding-inline:14px; transition:box-shadow .25s,border-color .25s; }
.search-box:focus-within { border-color:var(--soft-gold); box-shadow:0 0 0 4px #d5bc7e10; }
.fleet-layout-tools button { min-height:44px; min-width:44px; border-radius:10px; }
.art-switch { border:1px solid #8e9ea329; padding:5px; border-radius:100px; background:#0b151cd9; box-shadow:0 8px 25px #0003,inset 0 1px #ffffff08; }
.art-switch button { background:transparent; min-height:44px; }
.art-switch button[aria-pressed=true] { background:linear-gradient(145deg,#e3cd91,#baa06a); box-shadow:0 3px 10px #0003; }
.floating-waypoint { border-radius:14px; border-color:#9db6b844; background:linear-gradient(130deg,#233b41ee,#13232dee); box-shadow:var(--lift-shadow); }
.project-cover,.browser-frame,.experiment-cover { border-radius:16px; border-color:#52616b66; box-shadow:var(--lift-shadow); transition:translate .35s var(--ease-out),box-shadow .35s,border-color .35s; }
.preview-chrome,.preview-bottom,.browser-bar { background:linear-gradient(110deg,#1d2b32,#101b23); }
.project-card .project-body { border-left-color:#4d615b55; }
.project-card .project-body::before { width:5px; height:5px; background:#91b6a3; box-shadow:0 0 12px #91b6a355; }
.project-card h3 a span,.journal-arrow,.next-voyage a span { transition:translate .3s var(--ease-spring); }
.project-card h3 a:hover span,.journal-link:hover .journal-arrow,.next-voyage a:hover span { translate:4px -4px; }
.playground { background:radial-gradient(ellipse at 75% 25%,#28525826,transparent 65%),#0e1921; border-block-color:#41525944; }
.world-scene { border-radius:22px; border-color:#647b8255; box-shadow:0 28px 65px #0005,inset 0 1px #fff1; }
.world-hud>span { border-radius:100px; backdrop-filter:blur(8px); }
.world-copy { bottom:35px; }
.world-actions { gap:12px; }
.world-actions .text-link { border:1px solid #899b9f44; border-radius:13px; background:#11212bc9; padding:10px 17px; min-height:48px; backdrop-filter:blur(10px); }
.world-caption summary { min-height:48px; align-items:center; padding-inline:5px; }
.world-caption summary>span { transition:rotate .3s; }
.world-caption[open] summary>span { rotate:45deg; }
.world-credit { text-align:left; }
:is(.rail-navigation,.record-navigation,.world-navigation,.personal-controls) button { width:46px; min-width:46px; height:46px; border-color:#6f8b9255; background:linear-gradient(145deg,#2a4048,#13222d); box-shadow:0 3px 0 #050c13,0 9px 22px #0004,inset 0 1px #ffffff16; transition:translate .25s,box-shadow .25s,background .25s; }
:is(.rail-navigation,.record-navigation,.world-navigation,.personal-controls) button:hover { background:linear-gradient(145deg,#3d575f,#203740); color:#f5dcab; box-shadow:0 3px 0 #050c13,0 9px 25px #507b7022,inset 0 1px #ffffff22; }
.world-tabs { gap:14px; padding:14px 3px 22px; }
.world-tabs button { border-radius:14px; padding:7px; border-color:#53677055; background:linear-gradient(150deg,#192830,#0e1820); box-shadow:0 8px 20px #0003; }
.world-tabs img { border-radius:9px; }
.world-tabs button[aria-selected=true] { border-color:#c6b07b; background:linear-gradient(145deg,#2c3737,#18272c); box-shadow:0 0 0 1px #d0b88025,0 8px 26px #0005,inset 0 -3px #c9b481; }
.world-tabs button>span { padding:11px 5px 7px; }
.personal-disclosure>summary { border-radius:14px; padding:12px 0; }
.disclosure-action b,.skill-plus { display:grid; place-items:center; width:32px; height:32px; border:1px solid #75848444; border-radius:50%; font:22px/1 var(--sans); }
.arsenal { background:radial-gradient(ellipse at 10% 20%,#315a5924,transparent 50%),radial-gradient(ellipse at 85% 80%,#4e386724,transparent 50%),#090f17; }
.skill { --skill-accent:#9dceba; padding:24px; border:1px solid #40525d70; border-radius:20px; background:linear-gradient(145deg,#1a2832e6,#0d1720); box-shadow:0 10px 25px #0002,inset 0 1px #ffffff08; transition:border-color .3s,box-shadow .3s,background .3s; }
.skill:nth-child(2) { --skill-accent:#acc5f2; }.skill:nth-child(3) { --skill-accent:#eab6b0; }.skill:nth-child(4) { --skill-accent:#c7b8ee; }.skill:nth-child(5) { --skill-accent:#e9c68d; }.skill:nth-child(6) { --skill-accent:#9dced5; }
.skill::after { width:125px; height:125px; top:-70px; right:-55px; border:0; background:var(--skill-accent); filter:blur(50px); opacity:.12; }
.skill[open] { border-color:color-mix(in srgb,var(--skill-accent) 55%,transparent); background:linear-gradient(145deg,#20303a,#101a24); box-shadow:0 18px 45px #0005,inset 0 1px #ffffff12; }
.skill-header { align-items:center; gap:12px; }
.skill .skill-header .skill-mascot { display:grid; place-items:center; width:64px; height:64px; flex-shrink:0; border:1px solid color-mix(in srgb,var(--skill-accent) 30%,transparent); border-radius:20px; background:radial-gradient(ellipse at 25% 0,color-mix(in srgb,var(--skill-accent) 16%,transparent),transparent),#101d27; box-shadow:0 5px 0 #060e16,0 9px 20px #0003,inset 0 1px #ffffff16; rotate:-5deg; transition:rotate .4s var(--ease-spring),translate .4s var(--ease-spring); }
.skill .skill-mascot svg { width:44px; height:44px; fill:none; stroke:var(--skill-accent); stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.skill .skill-mascot .mascot-fill { fill:var(--skill-accent); stroke:none; opacity:.16; }
.skill .skill-mascot .mascot-eye { fill:var(--skill-accent); stroke:none; }
.skill[open] .skill-mascot { rotate:4deg; translate:0 -2px; }
.skill .skill-number { color:var(--skill-accent); font-size:10px; opacity:.8; }
.skill .skill-plus { color:var(--skill-accent); margin-left:0; }
.skill h3 { font:500 20px/1.35 var(--sans); letter-spacing:-.5px; margin:23px 0 9px; max-width:240px; }
.skill-teaser { font-size:10px; color:#aebec6; }
.skill-peek { display:flex; align-items:center; gap:0; margin-top:20px; min-height:32px; }
.skill-peek>span { display:grid; place-items:center; width:31px; height:31px; margin-right:-5px; background:#24323d; border:2px solid #14212b; border-radius:10px; rotate:-6deg; }
.skill-peek>span:nth-child(2) { rotate:5deg; }.skill-peek>span:nth-child(3) { rotate:-3deg; }
.skill-peek img,.skill-peek svg { width:17px; height:17px; object-fit:contain; }
.skill-peek small { margin-left:17px; color:var(--skill-accent); font:10px var(--mono); }
.skill-detail { padding-top:21px; }
.skill-detail>p { font-size:13px; line-height:1.8; color:#b7c4ca; }
.tech-grid { gap:8px; }
.skill .tech-chip { border-radius:13px; background:#0a131b88; border:1px solid #4a607044; min-height:82px; padding:12px 5px; gap:9px; box-shadow:inset 0 1px #ffffff05; }
.skill .tech-chip>span:last-child { font:11px/1.4 var(--sans); }
.skill .tech-chip img,.skill .tech-chip .tech-symbol { width:29px; height:29px; }
.tech-symbol { fill:none; stroke:currentColor; stroke-width:1.7; stroke-linejoin:round; stroke-linecap:round; color:var(--skill-accent); }
.skill .tech-chip:hover { transform:translateY(-3px); border-color:var(--skill-accent); background:#263944; }
.skill-detail>a { display:flex; justify-content:space-between; align-items:center; min-height:44px; padding-top:15px; margin-top:16px; border-top:1px solid #73859133; color:var(--skill-accent); font-size:11px; }
.skill-peek img[src$='/unity.svg'] { filter:brightness(0) invert(.85); }
.journal-link,.experiment-card { border-radius:20px; border-color:#51687255; background:linear-gradient(140deg,#1b2a3288,#12202944); box-shadow:var(--lift-shadow); }
.journal-link { transition:translate .3s,border-color .3s,box-shadow .3s; }
.journal-icon { border-radius:22px; color:#a6c9bf; border-color:#91b7ab44; background:#25383144; }
.case-hero { border-radius:20px; border-color:#73878055; box-shadow:0 30px 65px #0005; }
.preview-dialog,.resume-dialog { border-radius:20px; border-color:#71858388; box-shadow:0 40px 140px #000a; }
.preview-dialog::backdrop,.resume-dialog::backdrop { background:#020911c9; backdrop-filter:blur(10px); }
.preview-toolbar,.preview-footer,.resume-dialog-toolbar { background:linear-gradient(120deg,#1a2b32,#0e1a24); }
:is(.preview-close,.resume-close,.preview-zoom,.preview-motion,.resume-print,.resume-pdf) { border-radius:12px; min-height:44px; }
.preview-close,.resume-close { min-width:44px; background:#ffffff09; border:1px solid #ffffff20; }
.preview-gallery button { border-radius:10px; }
.motion-disclosure { display:flow-root; }
.interactive-surface { overflow:hidden; isolation:isolate; }
.interaction-static { position:relative; }
.tap-bloom { position:absolute; pointer-events:none; width:160px; height:160px; margin:-80px; border-radius:50%; background:radial-gradient(circle,#fff4 0, #e6cf9622 38%,transparent 70%); z-index:3; }
@media(hover:hover) and (pointer:fine) {
 .button:hover { translate:0 -3px; box-shadow:0 6px 0 #050b10,0 15px 32px #0005,inset 0 1px #ffffff22; }
 .button.red-button:hover { box-shadow:0 6px 0 #4c1c1d,0 14px 32px #a244393b,inset 0 1px #ffd3ac44; }
 .button.logbook-button:hover,.button.light-button:hover { box-shadow:0 6px 0 #6e5733,0 14px 32px #b9934430,inset 0 1px #fff8d477; }
 .project-card:hover .project-cover,.browser-frame:hover,.experiment-cover:hover { translate:0 -4px; border-color:#9fb5b388; box-shadow:0 25px 50px #0006,0 0 28px #739e9310; }
 .skill:hover { border-color:color-mix(in srgb,var(--skill-accent) 45%,transparent); }
 .skill:hover .skill-mascot { rotate:5deg; translate:0 -3px; }
 .journal-link:hover { translate:0 -4px; border-color:#9fb5b388; }
}
[data-theme=light] .button:not(.red-button,.logbook-button,.light-button) { background:linear-gradient(145deg,#dcccaa,#c1ad88); color:#352d22; border-color:#8e795c; box-shadow:0 4px 0 #8c7851,0 10px 20px #34271d22; }
[data-theme=light] .art-switch { background:#c0ae8e; }
[data-theme=light] .search-box { background:#ffffff15; }
[data-theme=light] .playground { background:radial-gradient(ellipse at 75% 0,#758c7944,transparent 70%),#cdbfa3; }
[data-theme=light] .filter { background:#ffffff15; }
[data-theme=light] .filter.active { background:#655138; color:#fff4de; border-color:#655138; }
[data-theme=light] .world-tabs button { color:#382f24; background:linear-gradient(145deg,#ddceb0,#c3b18e); }
[data-theme=light] .world-tabs button[aria-selected=true] { border-color:#735c37; box-shadow:inset 0 -3px #735c37,0 8px 20px #34271d25; }
[data-theme=light] .skill { background:linear-gradient(145deg,#20303a,#101a24); color:#f0eadf; }
[data-theme=light] .skill .tech-chip { background:#0a131b88; color:#f0eadf; }
[data-theme=light] .skill .tech-chip img:is([src$='/threejs.svg'],[src$='/express.svg'],[src$='/github.svg'],[src$='/prisma.svg'],[src$='/unity.svg']) { filter:brightness(0) invert(.88); }
[data-theme=light] :is(.journal-link,.experiment-card) { background:linear-gradient(145deg,#e1d3b9,#cbbb9b); }
[data-theme=light] .journal-icon { color:#3d6359; }
@media(max-width:900px) { .skill { padding:21px; }.skill h3 { font-size:19px; }.skill .skill-header .skill-mascot { width:57px; height:57px; } }
@media(max-width:650px) {
 .header-tools { gap:2px; }.header-tools :is(.day-toggle,.motion-toggle,.menu-toggle) { min-width:40px; width:40px; }
 .main-nav.is-open { border-radius:0 0 22px 22px; padding:17px 24px 23px; box-shadow:0 24px 45px #0005; animation:studio-page-in .3s var(--ease-out); }
 .main-nav a { min-height:46px; padding:12px 5px; }
 .hero-actions { gap:12px; }.hero-actions .button { padding-inline:17px; min-height:50px; }
 .skills-grid { grid-template-columns:1fr; gap:14px; }
 .skill { padding:22px; border-radius:18px; }.skill h3 { font-size:21px; max-width:none; margin-top:21px; }
 .skill .skill-header .skill-mascot { width:60px; height:60px; }.skill-teaser { font-size:11px; }
 .skill-peek { margin-top:16px; }.skill .tech-chip { min-height:82px; }
 .world-scene { border-radius:18px; }.world-copy { padding:0!important; left:20px; right:20px; bottom:26px; }.world-copy h3 { font-size:34px; }
 .world-actions { align-items:stretch; gap:10px; }.world-actions .button,.world-actions .text-link { justify-content:center; font-size:11px; padding-inline:14px; }
 .world-tabs button { flex-basis:157px; }.world-tabs small { font-size:8px; }
 .rail-navigation p { font-size:10px; }.world-caption summary { font-size:11px; }
 .preview-dialog,.resume-dialog { border-radius:16px; }
}
@media(max-width:359px) { .brand>span { font-size:16px; }.brand small { font-size:5px; }.brand { gap:5px; }.brand img { width:28px; }.header-inner { width:calc(100% - 20px); gap:4px; }.hero-actions .button { padding-inline:12px; gap:10px; }.world-actions { flex-direction:column; } }
.motion-paused *, .motion-paused *::before, .motion-paused *::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
.motion-paused :is(a,button,summary) { scale:none!important; translate:none!important; }
@media(prefers-reduced-motion:reduce) {
 *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
 :is(a,button,summary) { scale:none!important; translate:none!important; }
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*) { animation:none!important; }
}
@media print { body { background:white; }.skill,.button,.world-scene,.case-hero { box-shadow:none; }.tap-bloom { display:none; } }

/* Keep capability summaries aligned and wordmarks legible. */
@media(min-width:651px) { .skill h3 { min-height:54px; } }
.skill .tech-chip img[src$='/nginx.svg'] { width:50px; height:29px; filter:brightness(1.6); }
.button:is(:hover,:active),.world-navigation button:is(:hover,:active),.personal-controls button:is(:hover,:active),.art-switch button:active { transform:none; }

.motion-paused::view-transition-group(*),.motion-paused::view-transition-old(*),.motion-paused::view-transition-new(*) { animation:none!important; }

.voyage-art figcaption { bottom:52px; }

/* The character lobby: reserved geometry, composited motion, native page scrolling. */
.character-select.voyage-art { height:590px; min-height:590px; margin:0; transform:none; overflow:visible; border-radius:32px; background:radial-gradient(ellipse at 50% 48%,#5b97822a,transparent 64%); }
.character-select::before { inset:53px 18px 130px; border-color:#a9905344; }
.character-select::after { inset:79px 45px 155px; }
.character-hud { position:absolute; top:8px; left:24px; right:24px; display:flex; justify-content:space-between; gap:10px; color:var(--soft-gold); font:9px/1.5 var(--mono); letter-spacing:1.4px; }
.character-counter { color:var(--muted); letter-spacing:2px; }
.character-select .art-orbit { inset:62px 33px 143px; opacity:.55; }
.character-select .art-orbit i { width:8px; height:8px; background:var(--gold); box-shadow:0 0 14px #e6c68c55; }
.immersive-mode .character-select.character-in-view:not(.character-still) .art-orbit { animation:lobby-orbit 44s linear infinite; }
@keyframes lobby-orbit { to { rotate:360deg; } }
.character-select .chart-coordinate { top:100px; left:3px; font-size:8px; }
.character-select .hero-art-window { inset:40px 25px 200px; grid-template-rows:minmax(0,1fr); min-height:0; touch-action:pan-y pinch-zoom; cursor:grab; translate:var(--drag-x,0px) 0; transition:translate .22s ease-out; user-select:none; -webkit-user-select:none; outline-offset:6px; }
.character-select .hero-art-window.is-character-dragging { cursor:grabbing; transition:none; }
.character-select .hero-art-window img { -webkit-user-drag:none; }
.character-select .hero-captain { max-height:410px; }
.character-select .hero-ship { max-height:360px; }
.character-select .hero-bounty { max-height:385px; }
.character-select:not(.character-in-view) .hero-art-window>*,.character-still .hero-art-window>* { animation-play-state:paused!important; }
.character-arrows { position:absolute; inset:42% 0 auto; z-index:5; display:flex; justify-content:space-between; pointer-events:none; }
.character-arrows button { pointer-events:auto; height:48px; width:48px; border-radius:50%; border:1px solid #c4b07866; background:linear-gradient(145deg,#31484e,#11222c); color:#f1d49a; font:25px/1 var(--sans); box-shadow:0 4px 0 #050d15,0 8px 24px #0005; }
.character-arrows button:hover { background:#344d52; }
.character-select .waypoint-worlds { top:25%; right:5px; font-size:10px; }
.character-select .waypoint-log { bottom:35%; left:3px; font-size:10px; }
.character-select .character-dossier { position:absolute; display:grid; justify-content:stretch; gap:4px; left:20px; right:20px; bottom:99px; padding-top:14px; border-top:1px solid #af9c6533; text-align:center; }
.character-role { color:var(--soft-gold); font:8px/1.4 var(--mono); letter-spacing:2px; }
.character-dossier .character-name { font:30px/1.05 var(--pirate); color:var(--ink); }
.character-dossier .character-description { font:11px/1.5 var(--sans); color:var(--muted); text-align:center; }
.character-select .art-switch { bottom:32px; left:10px; right:10px; border-radius:16px; }
.character-select .art-switch button { border-radius:11px; font-size:10px; }
.character-hint { position:absolute; bottom:6px; left:0; right:0; display:flex; justify-content:center; align-items:center; gap:13px; font:7px/1.5 var(--mono); letter-spacing:1px; color:var(--muted); }
.character-hint span { color:var(--soft-gold); font-size:12px; }
.immersive-toggle { display:inline-flex; align-items:center; gap:7px; border:1px solid #77908855; border-radius:100px; padding:8px 12px; min-height:38px; background:#36584922; color:var(--soft-gold); font:10px var(--mono); }
.immersive-toggle[aria-pressed=false] { background:transparent; color:var(--muted); }
html:not(.immersive-mode) :is(.framed-preview,.browser-frame) { transform:none!important; }
/* A single bounded disclosure body eliminates competing mobile animations. */
.skills-grid,.skill,.motion-disclosure { overflow-anchor:none; }
.skill { contain:layout style; }
.skill>summary { touch-action:manipulation; }
summary:active { scale:none!important; }
.skill.studio-arrive { animation:none; }
.skill .skill-peek img,.skill .tech-chip img { opacity:1; }
.skill .tech-chip img[src$='/astro.svg'] { filter:drop-shadow(0 0 2px #e5d5ff99); }
.skill .skill-detail { padding-top:18px; }
.skill .tech-chip { margin-top:0; }
/* An illustrated reading edition: quiet paper beneath crisp, generous text. */
@media screen {
 .resume-stage { max-width:940px; padding:30px; }
 .resume-paper { --resume-hand:'Kalam',Georgia,serif; --resume-ink:#251a10; --resume-muted:#4a321e; width:100%; max-width:840px; margin-inline:auto; padding:44px 64px; font:400 18px/1.78 var(--sans); background:linear-gradient(90deg,#633b1729,#ffe7ad38 9%,#ffebbc47 50%,#ffe7ad38 91%,#633b1729),#d7b36e url('/images/resume/weathered-paper.webp') top center/100% 1100px repeat-y; box-shadow:inset 0 0 36px #6039154a; }
 .resume-paper :is(.resume-section p,.resume-skill-list,.resume-contact,.resume-role,.resume-entry-heading>span) { font-family:var(--sans); font-style:normal; text-shadow:none; color:var(--resume-ink); }
 .resume-paper .resume-section { max-width:64ch; margin:42px auto 0; scroll-margin-top:115px; }
 .resume-paper .resume-section p,.resume-paper .resume-skill-list { font-size:18px; line-height:1.78; letter-spacing:.005em; color:var(--resume-ink); }
 .resume-paper .resume-section p+p { margin-top:16px; }
 .resume-paper p.resume-role { font-family:var(--resume-hand); font-size:20px; font-weight:700; line-height:1.5; }
 .resume-paper .resume-alias { font:400 18px/1.6 var(--resume-hand); color:#51422e; text-shadow:none; }
 .resume-paper .resume-contact { font-size:15px; font-style:normal; gap:9px 22px; }
 .resume-paper .resume-section>h2,.resume-paper .resume-section>h3:first-child { font:400 32px/1.25 var(--pirate); text-transform:none; letter-spacing:.3px; color:#593521; text-shadow:0 1px #fffdf388; border-bottom:1px solid #745d3744; padding-bottom:12px; margin-bottom:20px; }
 .resume-paper .resume-entry-heading h3,.resume-paper .resume-entry-heading h4 { font:700 21px/1.4 var(--sans); color:#30291f; }
 .resume-paper .resume-entry-heading { display:block; }
 .resume-paper .resume-entry-heading>span { display:block; text-align:left; font-size:14px; line-height:1.6; color:#5d5041; margin-top:4px; }
 .resume-paper .resume-section .resume-stack { font:500 13px/1.8 var(--sans); color:#554735; padding:10px 0 15px; border-bottom:1px solid #785b3226; text-shadow:none; }
 .resume-paper .resume-entry { margin-bottom:30px; }
 .resume-paper .resume-section .resume-section-note { font:400 15px/1.7 var(--sans); color:#5b4c3c; margin-bottom:22px; }
 .resume-paper .resume-skill-list li { padding:13px 0 16px; border-bottom:1px solid #785b3226; margin:0; }
 .resume-paper .resume-skill-list li:first-child { padding-top:0; }
 .resume-paper .resume-skill-list li:last-child { border-bottom:0; }
 .resume-paper .resume-skill-list strong { display:block; font-weight:700; margin-bottom:5px; color:#32291e; }
 .resume-paper .resume-personal-note { margin-top:24px; border-left:3px solid #ad835b88; padding:12px 0 12px 20px; }
 .resume-paper .resume-section .resume-signature { font:700 29px/1.6 var(--resume-hand); rotate:-2deg; margin-top:20px; color:#5b3521; }
 .resume-paper .resume-index { display:flex; flex-wrap:wrap; gap:8px 20px; margin:24px 0; padding:16px 0; border-block:1px dashed #87623c55; font:500 12px/1.7 var(--sans); }
 .resume-paper .resume-index a { min-height:40px; display:inline-flex; align-items:center; }
 .resume-paper a { text-decoration-thickness:1px; text-underline-offset:4px; }
 .resume-dialog-scroll { scroll-padding-top:20px; padding:24px 30px 32px; }
 .resume-dialog .resume-section { scroll-margin-top:10px; }
 .resume-paper-footer { font-size:10px; line-height:1.8; }
}
@media(max-width:700px) {
 .character-select.voyage-art { height:555px; min-height:555px; width:min(100%,430px); margin:5px auto 10px; }
 .character-select .hero-art-window { inset:40px 25px 200px; }
 .character-select .hero-captain { max-height:365px; }.character-select .hero-ship { max-height:315px; }.character-select .hero-bounty { max-height:345px; }
 .character-select::before { inset:50px 13px 148px; }.character-select::after { inset:74px 38px 167px; }
 .character-select .art-orbit { inset:56px 26px 162px; }
 .character-select .character-dossier { bottom:108px; padding-top:10px; }
 .character-arrows { inset:39% 0 auto; }.character-arrows button { width:44px; height:44px; }
 .character-select .waypoint-worlds { top:22%; right:1px; padding:9px; font-size:9px; }
 .character-select .waypoint-log { bottom:40%; left:1px; padding:9px; font-size:9px; }
 .character-select .art-switch { bottom:39px; left:0; right:0; gap:3px; padding:4px; }
 .character-select .art-switch button { min-height:46px; padding:8px 6px; }
 .character-hint { bottom:12px; font-size:6px; gap:8px; }
 .hero-mood { flex-wrap:wrap; justify-content:flex-start; gap:10px; }
 .hero-mood>a { margin-left:auto; }
 .character-hud { left:8px; right:8px; font-size:8px; }
 .skill::after { display:none; }
 .skill .tech-chip img { filter:none; }
 .skill .skill-mascot { transition:rotate .25s; }
 .site-header { backdrop-filter:none; background:var(--paper); }
 .world-hud>span,.world-actions .text-link,.floating-waypoint { backdrop-filter:none; }
 .preview-dialog::backdrop,.resume-dialog::backdrop { backdrop-filter:none; background:#030b14e8; }
 .resume-paper .resume-section p,.resume-paper .resume-skill-list { font-size:17px; line-height:1.78; }
 .resume-stage { padding:12px 4px; }
 .resume-paper { padding:30px 23px; }
 .resume-dialog-scroll { padding:14px 5px 22px; }
 .resume-paper .resume-section { margin-top:32px; }
 .resume-paper .resume-role { font-size:17px; }.resume-paper .resume-contact { font-size:15px; }
 .resume-paper .resume-section>h2,.resume-paper .resume-section>h3:first-child { font-size:27px; }
 .resume-paper .resume-index { font-size:12px; gap:6px 16px; }
}
@media(prefers-reduced-motion:reduce) {
 .character-select .hero-art-window { transition:none; }
 .character-select .art-orbit { animation:none!important; }
}
@media print { .resume-index,.resume-signature { display:none; } }

.character-select .character-dossier>span:last-child { text-align:center; }

.character-select .hero-art-window> :is(.hero-captain,.hero-ship,.hero-bounty) { min-height:0; height:100%; max-height:100%; }

/* A single animation owns character changes; legacy floating/arrival effects
   otherwise fight the lobby transition and shift art during a touch scroll. */
.character-select .hero-art-window { translate:none; transition:none; }
.character-select .hero-art-window> :is(.hero-captain,.hero-ship,.hero-bounty):not([hidden]) { animation:none; }
.world-stage { touch-action:pan-y pinch-zoom; }
@media (hover:none), (pointer:coarse) {
 .character-select .floating-waypoint { animation:none; transform:none; }
 .character-select .hero-art-window> :is(.hero-captain,.hero-ship,.hero-bounty) { filter:none; }
 .portfolio-site :is(button,.button,summary,[role=button],.text-link,.floating-waypoint):active { scale:1; translate:none; }
}

/* Floating chart pins: decoration moves, the 64px touch targets stay anchored. */
.character-select .art-switch { background:none; border:0; box-shadow:none; gap:10px; padding:0; bottom:28px; overflow:visible; }
.character-select .art-switch button { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; min-height:68px; padding:9px 4px; border:1px solid #c8ab7259; border-radius:18px; color:#cbd6d6; background:linear-gradient(145deg,#22353ee8,#0c1821f5); box-shadow:0 7px 0 #050d1380,0 12px 22px #0003,inset 0 1px #fff1; transition:background .2s,border-color .2s,color .2s,box-shadow .2s; }
.character-marker { position:relative; display:grid; place-items:center; width:23px; height:23px; color:#b9a276; }
.character-marker svg { width:21px; height:21px; }
.character-marker::after { content:""; position:absolute; inset:-5px; border:1px solid currentColor; border-radius:50%; opacity:0; pointer-events:none; }
.character-select .art-switch button[aria-pressed=true] { color:#fbe7b8; border-color:#e9c87e; background:linear-gradient(145deg,#4a412b,#222c2e); box-shadow:0 6px 0 #0a1118,0 0 24px #ecc16a20,inset 0 1px #ffe1a052; }
.character-select .art-switch button[aria-pressed=true] .character-marker { color:#f5cf7a; }
.character-select .art-switch button[aria-pressed=true] .character-marker::after { opacity:.65; }
.immersive-mode .character-select.character-in-view:not(.character-still) [aria-pressed=true] .character-marker::after { animation:chart-pin-beacon 2.8s ease-out infinite; }
@keyframes chart-pin-beacon { 0%,100% { opacity:.2; scale:.85; } 45% { opacity:.7; scale:1.14; } }
.character-select .art-switch button:focus-visible { outline:2px solid #ffe4a8; outline-offset:5px; }
@media(hover:hover) and (pointer:fine) { .character-select .art-switch button:hover { border-color:#e9c87e; box-shadow:0 7px 0 #050d1380,0 0 24px #ecc16a25; } }
@media(max-width:700px) { .character-select .art-switch { bottom:30px; gap:8px; }.character-select .art-switch button { min-height:68px; font-size:10px; padding:9px 3px; }.character-hint { bottom:5px; } }
@media(prefers-reduced-motion:reduce) { .character-select .character-marker::after { animation:none!important; } }

/* Keep rotating decoration and swipe feedback inside the lobby's paint bounds. */
.hero-grid { grid-template-columns:minmax(0,1.08fr) minmax(0,1fr); }
.hero-grid>* { min-width:0; }
.character-select.voyage-art { overflow:clip; contain:layout paint; }
.character-select .hero-art-window { grid-template-columns:minmax(0,1fr); overflow:clip; overscroll-behavior-x:contain; }
.character-select .hero-art-window> :is(.hero-captain,.hero-ship,.hero-bounty) { max-width:100%; filter:none; }
.character-select .art-switch button { min-width:0; flex-basis:0; }
.character-select .floating-waypoint { backdrop-filter:none; }
@media(max-width:650px) { .hero-grid { grid-template-columns:minmax(0,1fr); } }
@media(hover:none), (pointer:coarse) {
 /* A rotating ellipse expands its layer beyond the phone viewport. */
 .immersive-mode .character-select .art-orbit { animation:none!important; }
 body.portfolio-site::before { display:none; }
}

/* The toolkit is one instrument panel, with a shared surface for every tool. */
.skills-grid { align-items:start; }
.skill { border-radius:20px; background:linear-gradient(135deg,#1c3038,#101e28); box-shadow:inset 0 1px #ffffff0c; transition:border-color .2s; }
.skill::after { display:none; }
.skill[open] { background:linear-gradient(135deg,#1c3038,#101e28); box-shadow:inset 0 1px #ffffff0c; }
.skill .skill-header .skill-mascot { border-radius:16px; rotate:0deg; box-shadow:none; background:#0d1c25; }
.skill[open] .skill-mascot,.skill:hover .skill-mascot { rotate:0deg; translate:none; }
.skill .skill-peek { gap:5px; }
.skill .skill-peek>span { rotate:none; margin:0; border:1px solid #647d8540; border-radius:7px; background:#11232d; }
.skill .skill-peek small { margin-left:8px; }
.skill[open] .skill-peek { display:none; }
.skill .skill-detail { margin-top:20px; padding-top:18px; border-top:1px solid #8ca5ab33; }
.skill .skill-detail>p { font-size:14px; line-height:1.75; color:#c4d1d5; }
.skill .tech-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:18px; }
.skill .tech-chip { min-width:0; min-height:88px; margin:0; padding:13px 6px; border-radius:12px; background:#0c1c25; color:#e8f0ef; border:1px solid #63818d40; box-shadow:none; transition:background .18s,border-color .18s; }
.skill .tech-chip>span:last-child { overflow-wrap:anywhere; font-size:12px; }
.skill .tech-chip img,.skill .tech-chip .tech-symbol { width:30px; height:30px; object-fit:contain; }
.skill :is(.tech-chip,.skill-peek) img:is([src$='/threejs.svg'],[src$='/express.svg'],[src$='/github.svg'],[src$='/prisma.svg'],[src$='/unity.svg']) { filter:brightness(0) invert(.9); }
.skill .tech-chip:hover,.skill .tech-chip:focus-visible { transform:none; translate:none; background:#253d46; border-color:var(--skill-accent); }
.skill .skill-detail>a { color:var(--skill-accent); font-size:13px; line-height:1.6; }
.skill>summary:focus-visible { outline:2px solid var(--skill-accent); outline-offset:8px; border-radius:8px; }
@media(max-width:380px) { .skill { padding:18px; }.skill .tech-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* Shared parchment and scroll reveals for the portfolio, articles, and world menus. */
:root {
 --scroll-ink:#291c10;
 --scroll-paper:linear-gradient(100deg,#68401930,#ffe4a838 13%,#ffe8b347 82%,#70421830),#d7b36e url('/images/resume/weathered-paper.webp') center/cover;
 --scroll-tear:polygon(0 9px,4% 3px,9% 8px,14% 1px,20% 6px,27% 2px,34% 9px,41% 3px,48% 7px,55% 0,63% 8px,70% 2px,78% 7px,85% 1px,93% 8px,100% 3px,calc(100% - 2px) 32%,100% 61%,calc(100% - 1px) calc(100% - 7px),93% 100%,85% calc(100% - 6px),76% calc(100% - 1px),68% calc(100% - 8px),59% 100%,50% calc(100% - 5px),41% calc(100% - 1px),32% calc(100% - 7px),24% 100%,16% calc(100% - 5px),8% 100%,0 calc(100% - 4px),2px 69%,0 37%);
}
.scroll-sheet,.expedition-chart,.project-log-paper,.case-sidebar { background:var(--scroll-paper); color:var(--scroll-ink); }
.scroll-sheet { position:relative; isolation:isolate; padding:25px 22px; margin:15px 0 5px; clip-path:var(--scroll-tear); box-shadow:inset 0 0 24px #633b1745; }
/* A quiet compass mark stays outside the reading column. */
.scroll-sheet::before { content:'✧'; position:absolute; right:8px; top:8px; font:34px/1 Georgia,serif; color:#8c683321; pointer-events:none; z-index:-1; }
.scroll-sheet::after { content:''; position:absolute; top:0; left:0; right:0; height:14px; pointer-events:none; background:linear-gradient(#81613b00,#8b633b55,#fff4dbaa); opacity:0; }
details[open]>.motion-disclosure>.scroll-sheet::after { animation:scroll-fold-pass .38s ease-out; }
.motion-disclosure { transform-origin:50% 0; }
.scroll-sheet :is(.skill-detail>p,.world-credit,.captain-memory p,.personal-toolbar>span,.personal-copy p,.personal-copy h3,.personal-copy .eyebrow) { color:#443b2e; }
.scroll-sheet .skill-detail { padding-top:0; }
.scroll-sheet .skill-detail>p,.scroll-sheet .world-credit { font-size:15px; line-height:1.75; }
.scroll-sheet :is(.skill-detail>a,.world-source,.text-link) { color:#713c25; border-color:#81644355; }
.scroll-sheet .skill-detail>a { font-size:13px; }
.scroll-sheet .tech-chip,.scroll-sheet .tech-chip:hover { background:linear-gradient(145deg,#25383e,#14232c); color:#f5ecdb; border-color:#856c4455; }
.scroll-sheet .tech-chip>span:last-child { color:#f5ecdb; }
.scroll-sheet .tech-chip img:is([src$='/threejs.svg'],[src$='/express.svg'],[src$='/github.svg'],[src$='/prisma.svg'],[src$='/unity.svg']) { filter:brightness(0) invert(.9); }
.personal-disclosure[open] .scroll-sheet .personal-toolbar { margin-top:3px; }
.scroll-sheet .personal-controls button { background:#20333b; color:#f1d69d; }
.scroll-sheet :is(.collection-hint,.personal-copy h3>span) { color:#66513a; }
.captain-memory .scroll-sheet p { color:#443b2e; font-size:15px; line-height:1.8; }
.preview-context .scroll-sheet { padding:10px 0; margin-top:0; background:none; clip-path:none; box-shadow:none; }
.preview-context .scroll-sheet::before { display:none; }
.preview-context .scroll-sheet p { font-size:15px; line-height:1.8; color:#443b2e; }
.project-log-paper .preview-features { font-size:15px; line-height:1.75; }
.project-log-paper .preview-meta,.project-log-paper .preview-credit { color:#66503a; }
.project-log-paper .preview-stack li { font-size:12px; }
.resume-dialog-toolbar,.project-log .preview-toolbar,.resume-dialog-footer,.project-log .preview-footer { background:linear-gradient(115deg,#1e3038,#111e28); color:#f1dfb7; border-color:#b9985755; }
.resume-dialog-toolbar h2,.project-log .preview-toolbar h2 { color:#f1dfb7; }
.resume-dialog-toolbar .eyebrow,.project-log .preview-toolbar .eyebrow { color:#c6b58d; }
.resume-dialog-footer a,.project-log .preview-footer .text-link,.record-position { color:#f1dfb7; }
.project-log .preview-tip { color:#c6b58d; }
.resume-dialog-actions .resume-print { color:#f1dfb7; border-color:#9a7953; }
.resume-close,.project-log .preview-close { border-radius:50%; border:3px double #d08d6f; color:#fff2d8; background:radial-gradient(circle at 32% 22%,#b55a43,#792e24); box-shadow:0 3px 7px #381e2033; }
.resume-close:hover,.project-log .preview-close:hover { background:#9a4835; }
.resume-dialog[open],.project-log[open] { transform-origin:50% 0; animation:scroll-envelope-open .46s cubic-bezier(.16,1,.3,1); }
.expedition-chart { border-radius:2px; clip-path:var(--scroll-tear); padding:28px 24px; color:var(--scroll-ink); }
.expedition-chart::before { content:'✧  THE GRAND LINE  ✧'; display:block; font:10px/1.6 'IBM Plex Mono',monospace; letter-spacing:1.5px; color:#795936; margin-bottom:15px; border-bottom:1px solid #89673c50; padding-bottom:12px; }
.expedition-chart p { font-size:12px; }
.expedition-chart a { font-size:14px; line-height:1.6; }
.expedition-dock[open] .expedition-chart { transform-origin:50% 100%; animation:scroll-chart-open .4s cubic-bezier(.16,1,.3,1); }
.logbook-article .post-body { background:var(--scroll-paper); }
@keyframes scroll-envelope-open {
 0% { opacity:.3; clip-path:inset(0 0 94% 0 round 12px); }
 55% { opacity:1; }
 100% { opacity:1; clip-path:inset(0 round 12px); }
}
@keyframes scroll-chart-open {
 from { opacity:.3; clip-path:inset(92% 0 0 0); translate:0 8px; }
 to { opacity:1; clip-path:inset(0); translate:0 0; }
}
@keyframes scroll-fold-pass { 0% { top:0; opacity:.7; } 85% { opacity:.5; } 100% { top:100%; opacity:0; } }
@media(max-width:650px) {
 .main-nav.is-open { background:var(--scroll-paper); color:var(--scroll-ink); border-radius:0; clip-path:var(--scroll-tear); border-color:#89673c55; padding:22px 25px; gap:4px 20px; max-height:calc(100dvh - 90px); overflow:auto; transform-origin:50% 0; animation:scroll-envelope-open .38s cubic-bezier(.16,1,.3,1); }
 .main-nav.is-open::before { content:'✧  CHART YOUR NEXT STOP'; flex-basis:100%; font:11px/1.6 var(--mono); letter-spacing:1px; color:#795936; padding-bottom:10px; border-bottom:1px solid #89673c50; }
 .main-nav.is-open a { color:#3a2d1f; font-size:16px; min-height:46px; }
 .main-nav.is-open a::after { background:#8b4630; }
 .scroll-sheet { padding:23px 15px; }
 .skill .scroll-sheet .tech-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; }
 .skill .scroll-sheet .tech-chip { min-width:0; min-height:78px; padding:10px 3px; }
 .skill .scroll-sheet .tech-chip>span:last-child { font-size:11px; overflow-wrap:anywhere; }
 .resume-dialog[open],.project-log[open] { animation-duration:.35s; }
}
@media(max-width:768px) {
 .logbook-article .nav-links { background:var(--scroll-paper); color:var(--scroll-ink); border-color:#89673c55; }
 .logbook-article .nav-links.active { animation:scroll-envelope-open .38s cubic-bezier(.16,1,.3,1); transform-origin:50% 0; }
 .logbook-article .nav-links a { color:#3a2d1f; }
 .logbook-article .nav-toggle.active span { background:#713c25; }
}
.motion-paused .scroll-sheet::after,.motion-paused :is(.resume-dialog,.project-log,.expedition-chart,.main-nav,.nav-links) { animation:none!important; }
@media(prefers-reduced-motion:reduce) {
 .scroll-sheet::after,.resume-dialog[open],.project-log[open],.expedition-dock[open] .expedition-chart,.main-nav.is-open,.logbook-article .nav-links.active { animation:none!important; transform:none!important; translate:none!important; }
}
@media print { .scroll-sheet { background:white; clip-path:none; box-shadow:none; }.scroll-sheet::after { display:none; } }

/* The header opens a captain's chart on every screen size. */
.js .main-nav:not(.is-open) { display:none; }
.menu-toggle { display:flex; align-items:center; gap:9px; min-height:44px; font:11px var(--mono); }
.menu-toggle>span { font-size:23px; }
.main-nav.is-open { position:absolute; top:100%; left:auto; right:32px; width:min(480px,calc(100vw - 32px)); display:grid; grid-template-columns:1fr 1fr; gap:5px 22px; padding:28px; background:var(--scroll-paper); color:var(--scroll-ink); border:1px solid #89673c55; border-radius:0; clip-path:var(--scroll-tear); max-height:calc(100dvh - 100px); overflow:auto; box-shadow:0 24px 45px #0005; transform-origin:50% 0; animation:scroll-envelope-open .42s cubic-bezier(.16,1,.3,1); }
.main-nav.is-open::before { content:'✧  THE GRAND LINE / VOYAGE CHART'; grid-column:1/-1; font:10px/1.7 var(--mono); letter-spacing:1px; color:#795936; padding-bottom:12px; margin-bottom:8px; border-bottom:1px solid #89673c50; }
.main-nav.is-open a { display:flex; align-items:center; color:#3a2d1f; font-size:16px; min-height:48px; padding:10px 5px; border-bottom:1px dashed #89673c45; }
.main-nav.is-open a::after { background:#8b4630; }
.menu-toggle[aria-expanded=true] { color:var(--gold); }
@media(max-width:650px) {
 .main-nav.is-open { right:12px; width:calc(100vw - 24px); padding:25px 22px; }
 .menu-toggle { font-size:0; gap:0; }
 /* A ledger row stays horizontal on phones; grid cards keep their large covers. */
 .project-grid.manifest { gap:0; }
 .manifest .project-card { grid-template-columns:84px minmax(0,1fr); gap:14px; padding:20px 0; align-items:start; }
 .manifest .project-cover .preview-screen { aspect-ratio:1; padding:0; }
 .manifest .project-card .project-body { padding:0; border-left:0; min-width:0; }
 .manifest .project-card .project-body::before { display:none; }
 .manifest .project-card h3 { font-size:19px; line-height:1.25; margin:6px 0 8px; }
 .manifest .project-card h3 a { gap:8px; }
 .manifest .project-card h3 span { font-size:16px; }
 .manifest .project-summary { font-size:12px; line-height:1.6; }
 .manifest .project-eyebrow { font-size:8px; }
}
@media(max-width:350px) { .manifest .project-card { grid-template-columns:68px minmax(0,1fr); gap:12px; }.manifest .project-card h3 { font-size:17px; } }

/* A weathered map, framed by the dark captain's desk. */
.project-log-paper { clip-path:var(--scroll-tear); box-shadow:inset 0 0 30px #633b1745; }
.expedition-chart,.main-nav.is-open { box-shadow:inset 0 0 28px #633b1740,0 24px 45px #0005; }
.scroll-sheet :is(.skill-detail>p,.world-credit,.captain-memory p,.personal-copy p),.preview-context .scroll-sheet p { color:#291c10; }
.project-log-paper .preview-meta,.project-log-paper .preview-credit,.scroll-sheet :is(.collection-hint,.personal-copy h3>span) { color:#50361e; }

/* Native text selection stays aligned with the ink, including inside dialogs. */
:is(.resume-paper,.project-log-paper,.scroll-sheet,.case-main,.post-body,.project-body,.personal-copy,.case-sidebar,.expedition-chart,.main-nav) {
 -webkit-user-select:text; user-select:text; touch-action:auto;
}
:is(.resume-paper,.project-log-paper,.scroll-sheet,.case-main,.post-body,.project-body,.personal-copy,.case-sidebar,.expedition-chart,.main-nav) :is(p,li,h1,h2,h3,h4) { cursor:text; }
:is(.resume-paper,.project-log-paper,.scroll-sheet,.case-main,.post-body,.project-body,.personal-copy,.case-sidebar,.expedition-chart,.main-nav) ::selection { background:#75402c; color:#fff5dc; text-shadow:none; }
:is(.resume-paper,.project-log-paper,.scroll-sheet,.case-main,.post-body,.project-body,.personal-copy,.case-sidebar,.expedition-chart,.main-nav)::selection { background:#75402c; color:#fff5dc; }
:is(.resume-paper,.project-log-paper,.scroll-sheet,.case-main,.post-body,.project-body,.personal-copy,.case-sidebar,.expedition-chart,.main-nav) a { cursor:pointer; touch-action:manipulation; -webkit-user-drag:none; }
:is(.resume-paper,.project-log-paper,.scroll-sheet) a:is(:hover,:focus-visible) { color:#53220f; background-color:#fff0bc70; text-decoration:underline; text-underline-offset:4px; }
:is(.resume-paper,.project-log-paper,.scroll-sheet) a:focus-visible { outline:2px solid #70351e; outline-offset:3px; }
:is(.resume-paper,.project-log-paper,.scroll-sheet) a:active { scale:none; translate:none; }
.resume-paper .resume-contact a { display:inline-flex; align-items:center; min-height:44px; }
.personal-copy { cursor:auto; }
@media print { :is(.resume-paper,.project-log-paper,.scroll-sheet) a { background:none!important; } }
