/* HAND-TUNABLE VISUAL PARAMETERS
   Opening/scene sizing lives beside these in style/badge-webgl.css. */
.badge-page{--paper:#fafaf8;--ink:#272923;--muted:#7e8278;--line:#e3e5de;--badge-tilt-x:6deg;--badge-tilt-y:9deg;--badge-drag-x:9deg;--badge-drag-y:11deg;--badge-hover-scale:1.022;--badge-glare-max:.36;--badge-spring-stiffness:180;--badge-spring-damping:20;margin:0;background:var(--paper);color:var(--ink);font:14px Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.badge-page *{box-sizing:border-box}.badge-page button,.badge-page input,.badge-page textarea{font:inherit}.badge-page button,.badge-page a{color:inherit}.badge-page button{cursor:pointer}.badge-page a{text-decoration:none}.badge-page :focus-visible{outline:2px solid #748763;outline-offset:5px}.badge-page .micro{font:9px/1.7 ui-monospace,SFMono-Regular,monospace;letter-spacing:1.5px;color:var(--muted)}.badge-page .mast{height:94px;margin:0 5%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;text-align:center}.badge-page .mast a{font:30px Newsreader,Georgia,serif;letter-spacing:-1px}.badge-page .mast a span{font:10px Inter,sans-serif;vertical-align:top;margin-left:5px}.badge-page .hero{max-width:1190px;margin:auto;min-height:calc(100svh - 94px);padding:65px 55px 90px;display:grid;grid-template-columns:1fr 1fr;gap:75px;align-items:center;position:relative}.badge-page .badge-stage{min-width:0}.badge-page .badge-perspective{perspective:1400px}.badge-page .badge{--pointer-x:50%;--pointer-y:50%;--glare-opacity:0;--card-hover-scale:1;max-width:375px;margin:auto;background:linear-gradient(115deg,#fff 65%,#f5f5ef);border:1px solid #e2e3dc;border-radius:16px;padding:31px 28px 23px;position:relative;isolation:isolate;overflow:hidden;box-shadow:var(--badge-shadow,0 1px 0 #d6d8d0,0 3px 0 -1px #e6e8e1,0 30px 45px -28px #33392b50,0 8px 18px -13px #2224);transform-style:preserve-3d;will-change:transform,box-shadow}.badge-page .badge:hover,.badge-page .badge.is-interacting{--card-hover-scale:var(--badge-hover-scale)}.badge-page .badge-surface{position:absolute;inset:0;z-index:12;border-radius:inherit;pointer-events:none;overflow:hidden;opacity:var(--glare-opacity);transition:opacity .12s ease;background:radial-gradient(farthest-corner circle at var(--pointer-x) var(--pointer-y),rgba(255,255,255,.94) 0,rgba(255,255,255,.38) 11%,rgba(255,255,255,.08) 24%,rgba(76,78,74,.07) 42%,transparent 58%);box-shadow:inset 1px 1px 0 rgba(255,255,255,.9),inset -1px -1px 0 rgba(78,80,76,.22);mix-blend-mode:normal}.badge-page .badge-surface:before,.badge-page .badge-surface:after{content:"";position:absolute;inset:-25%;pointer-events:none}.badge-page .badge-surface:before{background:linear-gradient(112deg,transparent 35%,rgba(70,72,68,.08) 40%,rgba(255,255,255,.86) 45%,rgba(255,255,255,.2) 49%,transparent 55%);transform:translate3d(var(--surface-shift-x,0),var(--surface-shift-y,0),0);mix-blend-mode:normal}.badge-page .badge-surface:after{inset:0;background:linear-gradient(96deg,rgba(255,255,255,.16),transparent 15% 84%,rgba(70,72,68,.07));mix-blend-mode:normal}.badge-page .slot{width:58px;height:5px;border-radius:5px;background:#e5e6df;box-shadow:inset 0 1px 2px #7773;position:absolute;top:13px;left:calc(50% - 29px)}.badge-page .badge-top{display:grid;grid-template-columns:155px 1fr;gap:20px;align-items:stretch}.badge-page .portrait{position:relative;aspect-ratio:1/1.12;overflow:hidden;border-radius:5px;background:#e8e7e1;touch-action:pan-y}.badge-page .portrait img{height:100%;width:100%;object-fit:cover;display:block;user-select:none;-webkit-user-drag:none;transform:scale(1.055) translate3d(var(--portrait-shift-x,0),var(--portrait-shift-y,0),0);will-change:transform}.badge-page .photo-note{position:absolute;bottom:8px;left:8px;color:white;font:6px ui-monospace,monospace;letter-spacing:1px;text-shadow:0 1px 4px #0008}.badge-page .id-meta{display:flex;flex-direction:column;justify-content:space-between;padding:6px 0}.badge-page .id-meta .micro{font-size:7px;letter-spacing:1px}.badge-page .status{font-size:10px;display:flex;align-items:center;gap:6px;white-space:nowrap}.badge-page .status i{width:5px;height:5px;border-radius:50%;background:#879a71}.badge-page .identity{margin-top:24px}.badge-page .identity h1{font:42px/1 Newsreader,Georgia,serif;letter-spacing:-1.6px;margin:0}.badge-page .identity p{font-size:13px;letter-spacing:.3px;margin:9px 0 24px}.badge-page .experience{border-top:1px solid var(--line)}.badge-page .experience>p{font-size:7px;margin:14px 0 7px}.badge-page .experience-row{width:100%;border:0;background:transparent;display:grid;grid-template-columns:90px 1fr 12px;gap:9px;padding:12px 0;min-height:44px;text-align:left;font-size:11px;border-bottom:1px solid #eeefe9;align-items:center}.badge-page .experience-row:hover,.badge-page .experience-row[aria-expanded=true]{color:#667e50}.badge-page .company{font-weight:600;font-size:11px}.badge-page .badge-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:20px}.badge-page .badge-bottom .micro{font-size:6px;letter-spacing:1px}.badge-page .barcode{width:58px;height:24px;background:repeating-linear-gradient(90deg,#62685b 0 1px,transparent 1px 3px,#62685b 3px 5px,transparent 5px 7px);opacity:.65}.badge-page .interaction-hint{text-align:center;font-size:7px;margin-top:24px}.badge-page .intro{position:relative;align-self:center;padding-bottom:60px}.badge-page h2{font:45px/1.08 Newsreader,Georgia,serif;font-weight:400;letter-spacing:-1.5px;margin:19px 0}.badge-page h2 em{font-weight:400;color:#7d8774}.badge-page .intro-copy{font-size:12px;line-height:1.9;color:var(--muted);margin:22px 0 30px}.badge-page .actions{display:flex;flex-direction:column;gap:10px;max-width:285px}.badge-page .action{display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%;padding:16px 20px;min-height:48px;border:1px solid #dfe2d8;border-radius:7px;background:transparent;font-size:12px}.badge-page .action:hover{background:#f0f2eb}.badge-page .action.primary{background:#292e25;color:#fbfcf8;border-color:#292e25}.badge-page .action.primary:hover{background:#414a36}.badge-page .action-note{font-size:9px;color:var(--muted);margin-top:15px}.badge-page .project-preview{position:absolute;top:100%;left:0;width:100%;display:flex;gap:14px;align-items:center;border-top:1px solid var(--line);padding-top:13px;background:var(--paper)}.badge-page [hidden]{display:none!important}.badge-page .project-preview img{width:72px;height:56px;object-fit:cover;border-radius:4px}.badge-page .project-preview h3{font:18px Newsreader,Georgia,serif;margin:4px 0}.badge-page .project-preview p{font-size:9px;color:var(--muted);margin:0}.badge-page .project-preview .micro{font-size:7px}.badge-page #close-preview{margin-left:auto;align-self:flex-start;border:0;background:none;width:44px;height:44px}.badge-page .scroll-cue{position:absolute;bottom:25px;left:55px;right:55px;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:15px}.badge-page .work-next{padding:110px 8%;border-top:1px solid var(--line)}.badge-page .work-next p{color:var(--muted)}.badge-page .work-next>a{display:inline-block;margin:24px 0;border-bottom:1px solid #8b9383;padding-bottom:7px}.badge-page .resume-section{border-top:1px solid var(--line);padding:65px 5% 0;scroll-margin-top:20px}.badge-page .resume-heading p{color:var(--muted)}.badge-page .resume-heading a{display:inline-block;min-height:44px;padding:12px 0;text-decoration:underline}.badge-page iframe{border:0;display:block;width:100%;height:900px;background:#fafaf8}.badge-page footer{padding:28px 5%;display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);font-size:11px}.badge-page dialog{width:min(530px,calc(100% - 30px));border:1px solid #dedfd8;border-radius:12px;padding:36px;color:var(--ink);background:var(--paper);max-height:90svh;overflow:auto}.badge-page dialog::backdrop{background:#2226;backdrop-filter:blur(6px)}.badge-page .dialog-close{position:absolute;right:10px;top:10px;width:44px;height:44px;background:none;border:0;font-size:24px}.badge-page dialog h2{font-size:38px}.badge-page dialog p{font-size:12px;line-height:1.7;color:var(--muted)}.badge-page dialog label{display:block;font-size:11px;margin:20px 0 8px}.badge-page input,.badge-page textarea{width:100%;border:1px solid #d9ddd1;background:white;border-radius:5px;padding:12px;font-size:14px;line-height:1.7;color:var(--ink)}.badge-page textarea{resize:vertical;margin-bottom:14px}.badge-page dialog .field-note{font-size:10px}@media(max-width:800px){.badge-page .hero{grid-template-columns:1fr;gap:45px;padding:35px 22px 90px}.badge-page .mast{height:75px}.badge-page .badge{max-width:345px;padding:30px 23px 20px}.badge-page .badge-top{grid-template-columns:145px 1fr;gap:16px}.badge-page .intro{max-width:375px;width:100%;margin:auto;padding-bottom:0}.badge-page h2{font-size:38px}.badge-page .actions{max-width:none}.badge-page .project-preview{position:relative;margin-top:20px;top:auto}.badge-page .scroll-cue{left:22px;right:22px}.badge-page iframe{height:1100px}.badge-page .work-next{padding:70px 6%}.badge-page .micro{letter-spacing:1px}}@media(prefers-reduced-motion:reduce){.badge-page .badge{transform:none!important;will-change:auto}.badge-page .badge-surface{display:none}.badge-page .portrait img{transform:none;will-change:auto}}
