/* Refinements for the established obsidian/copper identity. */
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
body { font-weight:400; }
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible { outline:2px solid #efbb90; outline-offset:4px; }
.hero-actions { display:flex; align-items:center; gap:25px; position:relative; z-index:2; }
.hero-cv { display:inline-flex; align-items:center; gap:17px; min-height:44px; font-size:11px; color:#c3b4a5; text-decoration:none; }
.hero-cv:hover { color:#efbb90; }
.intro-description { font-size:13px; max-width:430px; color:#b8ada1; line-height:1.9; }
.intro--options h3 { font-size:12px; }
.intro--options p { font-size:12px; color:#a1978c; }
.header--cta { min-height:42px; font-size:10px; }
.header--nav-toggle { min-height:44px; }
.kicker { color:#afa397; }
.work { padding-top:95px; padding-bottom:80px; }
.work h2 { font-size:34px; letter-spacing:-1px; }
.project-caption { max-width:560px; }
.project-category { font-size:9px; letter-spacing:1.2px; }
.project-caption>#project-description { font-size:13px; line-height:1.8; margin-bottom:10px; color:#b7aa9d; }
.project-source { min-height:42px; font-size:12px; }
.project-library-link { min-height:36px; padding-block:7px; font-size:11px; }
.project-discovery { display:flex; justify-content:center; gap:23px; margin-top:12px; }
.project-discovery button { padding:5px 0; min-height:32px; background:none; border:0; font-size:10px; color:#ad9986; cursor:pointer; }
.project-discovery button:hover { color:#efbb90; }
.project-discovery button span { margin-left:7px; }
.project-counter { margin-top:12px; font-size:9px; }
.project-pagination { margin-top:8px; }
.project-pagination button { color:#aa917b; height:40px; font-size:10px; }
.work--lockup .slider--item-title { font-size:11px; }
.work--lockup .slider--item-center .slider--item-title { font-size:18px; }
.about { height:auto; min-height:100%; justify-content:center; padding:105px 0 80px; }
.about--banner { height:auto; min-height:495px; padding-bottom:30px; }
.about--banner h2 { font-size:58px; max-width:590px; }
.about-bio { max-width:495px; font-size:13px; line-height:1.9; color:#b9aca0; }
.about--banner .about-shield { top:20px; right:-38px; width:330px; height:370px; }
.about-skills { display:flex; flex-wrap:wrap; gap:7px; list-style:none; padding:0; margin:0 0 18px; max-width:490px; position:relative; z-index:1; }
.about-skills li { font-size:9px; color:#d0b398; padding:6px 10px; border:1px solid #4d3625; background:#1b1510; line-height:1.5; }
.about--banner .about-cv { font-size:11px; min-height:42px; }
.about--options { gap:17px; }
.about--options>a,.about--options>a:nth-child(n) { min-height:125px; height:auto; padding:20px 17px; }
.about--options>a>span { font-size:21px; }
.about--options h3,.about--options>a:hover h3 { font-size:9px; margin-top:13px; }
.about--options p { font-size:10px; color:#ac9683; line-height:1.7; }
.contact--lockup .modal { width:370px; min-width:370px; padding:36px 30px 30px; }
.contact-eyebrow { font-size:8px; letter-spacing:1.3px; }
.contact--lockup .modal--information p { font-size:10px; color:#b19b86; }
.contact-email-row { display:flex; align-items:center; justify-content:center; gap:6px; }
.contact--lockup .modal--information .contact-email { font-size:13px; white-space:nowrap; }
.email-copy { background:none; border:0; color:#bd9875; display:inline-flex; align-items:center; justify-content:center; min-width:34px; min-height:42px; padding:0; cursor:pointer; }
.email-copy:hover { color:#f2d5ba; }
.contact--lockup .modal--information .contact-phone { font-size:12px; color:#c0ac99; }
.contact--lockup .modal--options a { min-height:46px; font-size:12px; }
.contact--lockup .modal--options>li:last-child a { font-size:11px; }
.contact-small-links a { font-size:10px; min-height:28px; display:inline-flex; align-items:center; }
.map-attribution { font-size:9px; }
.experience-company { font-size:12px; }
.experience-date { font-size:10px; }
.experience-list article>div>p:last-child:not(.experience-company) { font-size:12px; color:#b0a092; }
.ctf-record { margin:25px 0 18px; padding-top:23px; border-top:1px solid #3f3023; }
.ctf-record>.kicker { font-size:8px; margin-bottom:17px; color:#b69373; }
.ctf-record>div { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.ctf-record strong { display:block; font-size:22px; letter-spacing:-.6px; color:#e6d1bc; }
.ctf-record span { display:block; font-size:9px; line-height:1.7; margin-top:7px; color:#a58e7a; }
.experience-cv { font-size:12px; min-height:44px; }
.mobile-dock { display:none; }
.site-toast { position:fixed; bottom:32px; left:50%; transform:translate(-50%,12px); width:max-content; max-width:calc(100% - 40px); padding:13px 20px; z-index:100; border:1px solid #956c46; background:#211910f7; color:#f1d7bc; box-shadow:0 8px 30px #0005; font:12px/1.6 Montserrat,Arial,sans-serif; text-align:center; pointer-events:none; opacity:0; transition:opacity .2s,transform .2s; }
.site-toast.is-visible { opacity:1; transform:translate(-50%,0); }
.project-index { box-sizing:border-box; width:min(620px,calc(100vw - 36px)); max-height:min(760px,85dvh); padding:30px; border:1px solid #795436; color:#f1ede7; background:#13100dfc; box-shadow:0 40px 120px #000a; scrollbar-width:thin; scrollbar-color:#735034 #13100d; }
.project-index::backdrop { background:#050403cc; backdrop-filter:blur(10px); }
.project-index-header { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
.project-index-header .kicker { font-size:8px; margin-bottom:12px; }
.project-index-header h2 { font-size:30px; line-height:1.2; letter-spacing:-1px; margin:0 0 25px; }
#project-index-close { background:transparent; border:1px solid #4e3725; color:#cead8c; font:27px/1 Arial; width:40px; height:40px; cursor:pointer; flex:none; }
#project-search { box-sizing:border-box; font:12px Montserrat,Arial,sans-serif; background:#0c0b09; color:#e6d7c7; border:1px solid #57402c; padding:14px; width:100%; min-height:45px; border-radius:0; }
#project-search::placeholder { color:#a08a75; }
.project-index-list { list-style:none; margin:18px 0 0; padding:0; }
.project-index-list li { border-top:1px solid #35271c; }
.project-index-list button { display:flex; align-items:center; gap:18px; width:100%; padding:15px 12px; min-height:66px; color:#f0dfce; background:transparent; border:0; text-align:left; cursor:pointer; }
.project-index-list button:hover,.project-index-list button[aria-pressed=true] { background:#2a1d12; }
.choice-number { color:#b08b67; font-size:10px; }
.project-index-list strong { display:block; font-size:15px; font-weight:700; }
.project-index-list small { display:block; font-size:8px; letter-spacing:.8px; margin-top:6px; color:#b1977d; }
.choice-arrow { margin-left:auto; color:#d7ad84; font-size:18px; }
#project-search-result { font-size:10px; color:#ac9178; margin:18px 0 0; }
/* Project tools: larger text, correct image proportions and an easy path to contact. */
.project-site section[id],.project-site #content { scroll-margin-top:110px; }
.project-site .project-header { position:sticky; top:0; z-index:10; background:#0c0c0cf5; backdrop-filter:blur(16px); padding-block:22px; }
.project-site .project-header nav { font-size:12px; }
.project-site .lab-note { font-size:13px; line-height:1.9; }
.project-site .lab-panel label { font-size:12px; }
.project-site .lab-panel small { font-size:11px; line-height:1.8; }
.project-site .checklist { font-size:12px; }
.project-site .tool-status { font-size:12px; }
.project-site .lab-panel .button { font-size:11px; }
.project-site .project-notes li { font-size:12px; line-height:1.8; }
.project-site .detail-description { font-size:13px; line-height:1.9; }
.project-site .project-notes .verified { font-size:11px; }
.project-site .run-section>div>p:not(.eyebrow) { font-size:13px; }
.project-site .run-section .source-note { font-size:11px!important; }
.project-site .command-box pre { font-size:12px; }
.project-site .command-box>div,.project-site .copy-command { font-size:10px; }
.project-site .detail-share { background:none; border:0; color:#be9a77; font-size:11px; min-height:44px; padding:8px 0; cursor:pointer; }
.project-site .detail-share:hover { color:#f0d1b1; }
.project-site .pdf-preview,.project-site .app-screenshot { height:auto; }
.project-site .report-services { font-size:12px; }
.project-site .finding p { font-size:12px; }
.project-site .project-footer { font-size:9px; }
@media(min-width:901px) and (max-width:1180px) { .about--banner .about-shield { width:275px; height:320px; opacity:.65; } .about-bio { max-width:440px; } .about-skills { max-width:430px; } .about--banner h2 { font-size:52px; } }
@media(max-width:900px) { .about--banner .about-shield { width:280px; height:330px; opacity:.45; } .contact--lockup .modal { width:350px; min-width:350px; } }
@media(max-width:700px) {
  .mobile-dock { display:grid; grid-template-columns:repeat(5,1fr); position:absolute; bottom:max(12px,env(safe-area-inset-bottom)); left:0; right:0; padding:6px; z-index:25; border:1px solid #76513688; background:#14110ef5; box-shadow:0 -12px 40px #0006; backdrop-filter:blur(16px); }
  .mobile-dock button { border:0; background:transparent; color:#bca38c; font-size:10px; min-width:0; min-height:43px; padding:5px 0; cursor:pointer; }
  .mobile-dock button>span { display:block; font-size:8px; letter-spacing:.8px; margin-bottom:4px; color:#866b52; }
  .mobile-dock button[aria-current=page] { background:#322216; color:#f1cfab; }
  .mobile-dock button[aria-current=page]>span { color:#d59a6a; }
  .viewport-footer { display:none; }
  .intro,.about,.work,.experience { padding-bottom:115px; }
  .intro-description { font-size:12px; max-width:290px; }
  .intro--options h3 { font-size:10px; }
  .intro--options p { font-size:11px; }
  .hero-actions { gap:18px; flex-wrap:wrap; }
  .hero-cv { font-size:10px; gap:10px; }
  .global-cta { gap:20px; }
  .work { padding-top:108px; }
  .work h2 { font-size:26px; line-height:1.35; margin-bottom:25px; }
  .work--lockup .slider--item-center .slider--item-image { width:215px; height:215px; }
  .work--lockup .slider { min-height:260px; }
  .work--lockup .slider--item-center .slider--item-title { font-size:17px; }
  .project-caption { max-width:100%; margin-top:18px; }
  .project-caption>#project-description { font-size:12px; }
  .project-category { font-size:8px; }
  .project-library-link { font-size:11px; margin-left:20px; }
  .project-discovery { margin-top:9px; gap:23px; }
  .project-discovery button { font-size:10px; min-height:38px; }
  .project-counter { margin-top:8px; }
  .project-pagination { gap:4px; }
  .project-pagination button { flex:1 1 34px; max-width:40px; height:40px; }
  .about { padding-top:112px; }
  .about--banner { min-height:0; padding-bottom:30px; }
  .about--banner h2 { font-size:clamp(40px,10.8vw,56px); }
  .about--banner .about-shield { width:230px; height:270px; top:35px; right:-35px; opacity:.23; }
  .about-bio { max-width:100%; font-size:12px; line-height:1.9; }
  .about-skills { gap:6px; margin-bottom:20px; }
  .about-skills li { font-size:9px; padding:6px 8px; }
  .about--options { grid-template-columns:1fr 1fr; gap:12px; }
  .about--options>a,.about--options>a:nth-child(n) { padding:17px 12px; min-height:118px; }
  .about--options>a:last-child { display:block; grid-column:1/-1; min-height:90px; }
  .about--options>a>span { font-size:19px; }
  .about--options h3,.about--options>a:hover h3 { font-size:8px; }
  .about--options p { font-size:9px; }
  .contact--lockup { padding-bottom:115px; }
  .contact--lockup .modal { width:min(335px,100%); min-width:0; padding:30px 22px 25px; }
  .modal h2 { font-size:26px; }
  .contact-eyebrow { font-size:7px; }
  .contact--lockup .modal--information .contact-email { font-size:12px; }
  .contact--lockup .modal--information p { font-size:9px; }
  .contact-small-links a { font-size:9px; }
  .map-attribution { bottom:83px; right:14px; font-size:7px; }
  .experience-list h3 { font-size:17px; }
  .experience-company { font-size:12px; }
  .experience-list article>div>p:last-child:not(.experience-company) { font-size:12px; }
  .experience-date { font-size:10px; }
  .ctf-record>div { grid-template-columns:1fr; gap:15px; }
  .ctf-record article { display:flex; align-items:center; gap:20px; }
  .ctf-record strong { min-width:115px; font-size:21px; }
  .ctf-record span { font-size:9px; margin:0; }
  .site-toast { bottom:90px; font-size:11px; padding:12px 16px; }
  .project-site .site-toast { bottom:25px; }
  .project-index { padding:23px 19px; }
  .project-index-header h2 { font-size:25px; }
  .project-index-header .kicker { font-size:7px; }
  .project-index-list button { padding:14px 9px; gap:14px; }
  .project-index-list small { font-size:7px; }
  .project-site .project-header { padding-block:18px; }
  .project-site .project-header nav { font-size:10px; gap:18px; }
  .project-site .lab-panel { padding:23px 18px; }
  .project-site .lab-note { font-size:12px; }
  .project-site .project-notes li { font-size:12px; }
  .project-site .project-footer { font-size:7px; }
  .project-site .command-box pre { font-size:11px; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }
@media(forced-colors:active) { button,a,input,select,textarea { forced-color-adjust:auto; } .project-index,.mobile-dock { border:1px solid ButtonText; } }

/* Keep the first view complete on shorter desktop displays. */
@media(min-width:701px) and (max-height:800px) {
  .work { height:auto; min-height:100%; padding:100px 0 65px; }
  .work h2 { font-size:30px; line-height:1.2; margin-bottom:18px; }
  .work--lockup .slider--item-center .slider--item-image { width:200px; height:200px; }
  .work--lockup .slider--item-center .slider--item-title { margin-top:15px; }
  .project-caption { margin-top:12px; }
  .project-caption>#project-description { min-height:25px; margin-bottom:6px; }
  .project-source { min-height:38px; }
  .project-discovery { margin-top:6px; }
  .project-counter { margin-top:6px; }
  .project-pagination { margin-top:6px; }
  .about { padding-top:100px; padding-bottom:30px; }
  .about--banner { min-height:0; padding-bottom:25px; }
  .about--banner h2 { font-size:50px; line-height:1.04; margin-bottom:20px; }
  .about-bio { line-height:1.8; margin-bottom:16px; }
  .about-skills { margin-bottom:12px; }
  .about--options>a,.about--options>a:nth-child(n) { min-height:110px; padding-block:16px; }
}

.header::before { content:''; position:absolute; inset:0 -8vw -15px; z-index:-1; background:linear-gradient(#0c0c0cf5 64%,#0c0c0c00); pointer-events:none; }
@media(max-width:700px),(max-height:650px) {
  .contact { position:relative; height:auto; min-height:100%; }
  .contact--lockup { height:auto; min-height:100dvh; padding-top:115px; padding-bottom:120px; }
}

/* Copper sight: an accurate center diamond and a trailing four-corner frame. */
.cursor-hud { position:fixed; inset:0; z-index:2147483000; pointer-events:none!important; opacity:0; transition:opacity .15s; color:#e4ae7b; }
.cursor-hud[data-visible=true] { opacity:1; }
.cursor-core,.cursor-reticle { position:fixed; top:0; left:0; width:0; height:0; pointer-events:none!important; }
.cursor-core { z-index:2; }
.cursor-core>i { display:block; width:4px; height:4px; background:#f5d3ae; transform:translate(-50%,-50%) rotate(45deg); box-shadow:0 0 5px #e7a46955; transition:width .2s,height .2s; }
.cursor-frame { display:block; position:absolute; width:34px; height:34px; transform:translate(-50%,-50%) rotate(0deg); transition:width .25s,height .25s,transform .3s,opacity .2s; opacity:.8; }
.cursor-frame>i { position:absolute; width:7px; height:7px; border:1px solid currentColor; }
.cursor-frame>i:nth-child(1) { top:0; left:0; border-right:0; border-bottom:0; }
.cursor-frame>i:nth-child(2) { top:0; right:0; border-left:0; border-bottom:0; }
.cursor-frame>i:nth-child(3) { bottom:0; right:0; border-left:0; border-top:0; }
.cursor-frame>i:nth-child(4) { bottom:0; left:0; border-right:0; border-top:0; }
.cursor-action { display:block; position:absolute; top:30px; left:0; width:70px; transform:translateX(-50%); font:6px/1.4 Montserrat,Arial,sans-serif; letter-spacing:2px; text-align:center; color:#f1c69a; text-shadow:0 1px 5px #000; }
.cursor-hud[data-intent=link] .cursor-frame { width:47px; height:47px; transform:translate(-50%,-50%) rotate(45deg); opacity:1; }
.cursor-hud[data-intent=drag] .cursor-frame { width:43px; height:43px; transform:translate(-50%,-50%) rotate(-45deg); }
.cursor-hud[data-intent=disabled] .cursor-frame { opacity:.3; width:24px; height:24px; }
.cursor-hud.is-pressed .cursor-frame { width:25px; height:25px; transform:translate(-50%,-50%) rotate(90deg); opacity:1; }
.cursor-hud.is-pressed .cursor-core>i { width:6px; height:6px; }
html.has-custom-cursor,html.has-custom-cursor * { cursor:none!important; }

@media(prefers-reduced-motion:reduce) { .cursor-hud,.cursor-frame,.cursor-core>i { transition:none; } }
