/* 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; } }
