/* V17 — precision polish. Scoped rules, stable hover hitboxes, purposeful contact UI. */
:root{--v17-ink:#090810;--v17-iris:#bfa6ff;--v17-mint:#9feadf;--v17-ease:cubic-bezier(.2,.76,.22,1)}
/* Fix the thumbnail edge feedback-loop: never transform the hit-tested interactive surface.
   Visual depth remains in child layers, which never receive pointer events. */
.project,.project:hover,.project:focus-within,.project-visual,.project:hover .project-visual,.project-visual:hover,
.project.is-visible .project-visual{transform:none!important;translate:none!important;rotate:none!important}
.project-visual{isolation:isolate;overflow:hidden;transition:box-shadow .34s ease,border-color .34s ease!important;backface-visibility:visible}
.project-visual::before,.project-visual::after,.project-visual>strong,.project-visual>.corner-arrow,.project-visual>.v16-project-cue{pointer-events:none!important}
.project:hover .project-visual{box-shadow:0 20px 62px #08051466,0 0 0 1px #c3aaff33 inset!important}
.project:focus-visible .project-visual{outline:2px solid #c6b0ff;outline-offset:4px}
/* Card hover visuals move inside the fixed frame and use bounded translations. */
.project-visual .kanban-window,.project-visual .coderr-terminal,.project-visual .video-browser{will-change:auto}
.project-visual strong{transition:transform .45s var(--v17-ease),filter .4s ease!important}
/* No rogue hover hitbox for the Pokeball or background hover overlays */
.v15-ball-wheel,.v15-ball-wheel *{pointer-events:none!important}

/* Reflection must be updated on the same rendered frame as the sphere.
   This does not force idle 60fps; it removes the old 1-in-4 refresh mismatch. */
.v14-reflection{image-rendering:auto;backface-visibility:hidden}
.v14-reflection-wrap{pointer-events:none!important}

/* Contact: calm high-end closing section, purposeful interactions. */
.contact{background:#090811!important;position:relative;overflow:hidden;padding:105px 0 90px!important;isolation:isolate}
.contact::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 70% 42%,#6c449320 0%,transparent 58%),radial-gradient(circle at 17% 82%,#3f6d7720 0%,transparent 44%),linear-gradient(135deg,#090810,#100c18 62%,#090811)}
.contact::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.28;background-image:radial-gradient(circle,#cabafa 0.75px,transparent 1px);background-size:62px 62px;mask-image:linear-gradient(180deg,transparent,#000 30%,#000 70%,transparent)}
.contact .contact-inner{position:relative;z-index:3;max-width:1280px}
.contact .contact-mesh,.contact .contact-atmosphere,.contact .contact-object,.contact .contact-floaters,.contact>.aurora{opacity:.25!important;pointer-events:none!important}
.v17-contact-head{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:7%;align-items:end;margin:65px 0 46px}
.v17-contact-eyebrow{display:inline-flex;gap:10px;align-items:center;color:#c4b1e5;font:700 11px 'Space Grotesk',sans-serif;letter-spacing:.18em;text-transform:uppercase}
.v17-contact-eyebrow::before{content:"";height:7px;width:7px;background:#a4e4d2;border-radius:50%;box-shadow:0 0 13px #a4e4d2a1}
.v17-contact-title{font-family:'Space Grotesk','DM Sans',sans-serif!important;font-size:clamp(56px,7.1vw,113px)!important;letter-spacing:-.077em;line-height:.95!important;margin:23px 0 0!important;color:#faf6ff!important}
.v17-contact-title em{font-family:Georgia,serif;font-weight:400;font-style:italic;color:#bba2f5!important;letter-spacing:-.08em}
.v17-contact-intro{max-width:365px;color:#aea4bc;font-size:16px;line-height:1.75;margin:0 0 5px}
.v17-contact-main{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:22px;align-items:stretch}
.v17-contact-links{display:grid;gap:12px}
.v17-contact-option{position:relative;display:flex;align-items:center;gap:18px;padding:23px 24px;text-align:left;min-height:115px;border-radius:19px;background:linear-gradient(115deg,#1a1523bb,#15111cf2);border:1px solid #e0d0ff20;color:#f7f2ff;overflow:hidden;transition:border-color .35s,background .35s,box-shadow .35s;cursor:pointer}
.v17-contact-option::before{content:"";position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .35s;background:radial-gradient(circle at var(--glow-x,50%) var(--glow-y,50%),#b99bff24,transparent 58%)}
.v17-contact-option:hover{border-color:#c2a6ff72;box-shadow:0 16px 45px #0006}
.v17-contact-option:hover::before{opacity:1}
.v17-contact-option-icon{width:52px;height:52px;border-radius:16px;background:#9277d029;border:1px solid #cbb6ff36;display:grid;place-items:center;font-size:20px;color:#c6b0ff;flex:none;transition:transform .32s var(--v17-ease)}
.v17-contact-option:hover .v17-contact-option-icon{transform:rotate(-5deg) scale(1.05)}
.v17-contact-option-info{display:grid;gap:7px;flex:1;min-width:0}
.v17-contact-option-info strong{font-size:19px;font-weight:650;letter-spacing:-.04em}
.v17-contact-option-info span{font-size:12px;line-height:1.6;color:#a99eb8}
.v17-contact-option-arrow{font-size:21px;color:#a48bc9;transition:transform .3s}
.v17-contact-option:hover .v17-contact-option-arrow{transform:translate(4px,-4px);color:#e5d8ff}
.v17-contact-meta{display:flex;gap:14px;flex-wrap:wrap;align-items:center;color:#9385a7;font:700 10px 'DM Sans',sans-serif;letter-spacing:.1em;text-transform:uppercase;margin:11px 3px 0}
.v17-contact-meta a{color:#c1a9e5;transition:color .25s}.v17-contact-meta a:hover{color:#fff}
.v17-contact-form{position:relative;padding:32px;border-radius:23px;background:linear-gradient(155deg,#221a2dea,#110e18f0);border:1px solid #e2d1ff38;box-shadow:0 30px 85px #0006,inset 0 1px #ffffff0b;overflow:hidden}
.v17-contact-form::before{content:"";position:absolute;inset:-4% auto auto 35%;width:60%;height:140px;background:radial-gradient(ellipse,#9b81e01d,transparent 74%);pointer-events:none}
.v17-form-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 22px}
.v17-form-heading strong{font-size:21px;font-weight:650;letter-spacing:-.04em;color:#fff}
.v17-form-heading span{color:#9fe3d5;font:700 10px Consolas,monospace;white-space:nowrap}
.v17-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.v17-fields label{display:grid;gap:8px;color:#bdafcc;font:700 10px 'DM Sans',sans-serif;letter-spacing:.12em;text-transform:uppercase}
.v17-fields label.full{grid-column:1/-1}
.v17-fields input,.v17-fields select,.v17-fields textarea{width:100%;min-width:0;background:#100d18;border:1px solid #ffffff25;border-radius:11px;padding:13px 14px;color:#f5f0ff;font:500 14px/1.5 'DM Sans',sans-serif;outline:none;letter-spacing:normal;transition:border-color .25s,box-shadow .25s,background .25s}
.v17-fields input::placeholder,.v17-fields textarea::placeholder{color:#776e86}
.v17-fields textarea{resize:vertical;min-height:115px;max-height:260px}
.v17-fields select{color-scheme:dark;cursor:pointer}
.v17-fields input:focus,.v17-fields textarea:focus,.v17-fields select:focus{border-color:#b9a1ff;box-shadow:0 0 0 3px #ac8bff1e;background:#151020}
.v17-form-actions{display:flex;align-items:center;gap:18px;justify-content:space-between;margin-top:18px;flex-wrap:wrap}
.v17-form-disclaimer{flex:1 1 180px;color:#91849f;font-size:11px;line-height:1.6;margin:0}
.v17-send{border:0;border-radius:100px;display:flex;align-items:center;gap:28px;justify-content:space-between;background:#cfbbff;color:#1a1027;font-size:13px;font-weight:800;min-height:49px;padding:6px 7px 6px 19px;transition:box-shadow .25s,background .25s}
.v17-send:hover{background:#e2d5ff;box-shadow:0 13px 40px #a889ff36}
.v17-send .v17-send-icon{display:grid;place-items:center;width:37px;height:37px;border-radius:50%;background:#241934;color:#fff;font-size:20px;transition:transform .4s var(--v17-ease)}
.v17-send:hover .v17-send-icon{transform:rotate(35deg)}
.v17-mail-feedback{color:#a1e8dc;font-size:12px;line-height:1.5;min-height:20px;margin-top:14px}
.v17-copy-fallback{color:#e2d4ff;border-bottom:1px solid #c4a2ff;background:transparent;border-top:0;border-left:0;border-right:0;padding:7px 0;font-size:12px;cursor:pointer}
.v17-contact-social{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:32px 2px 0;margin-top:44px;border-top:1px solid #ffffff24;color:#9087a0;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.v17-contact-social a{transition:color .25s;color:#c7b8da}.v17-contact-social a:hover{color:#fff}
/* accessibility: no movement of hitboxes, touch-first and keyboard-friendly */
.v17-contact-option:focus-visible,.v17-send:focus-visible,.v17-copy-fallback:focus-visible,.v17-contact-social a:focus-visible{outline:2px solid #d1bbff;outline-offset:3px}
@media(max-width:1000px){.v17-contact-head{gap:30px}.v17-contact-main{grid-template-columns:1fr}.v17-contact-links{grid-template-columns:repeat(3,1fr)}.v17-contact-option{padding:21px 16px;display:grid;justify-items:start}.v17-contact-option-icon{width:45px;height:45px}.v17-contact-option-info strong{font-size:16px}.v17-contact-option-arrow{position:absolute;top:17px;right:18px}.v17-contact-form{max-width:none}}
@media(max-width:700px){.contact{padding:85px 0 60px!important}.v17-contact-head{display:block;margin:52px 0 32px}.v17-contact-title{font-size:clamp(48px,11vw,71px)!important}.v17-contact-intro{margin:22px 0 0}.v17-contact-links{grid-template-columns:1fr}.v17-contact-option{display:flex;min-height:98px}.v17-contact-option-arrow{position:static}.v17-contact-form{padding:21px 17px}.v17-fields{grid-template-columns:1fr}.v17-contact-social{flex-wrap:wrap;font-size:10px}}
@media(prefers-reduced-motion:reduce){.v17-contact-option,.v17-contact-option-icon,.v17-contact-option-arrow,.v17-send,.v17-send-icon{transition:none!important}}
.v17-magnet-inner{display:inline-block;pointer-events:none;transition:transform .3s cubic-bezier(.2,.74,.22,1)}
.v17-contact-option[aria-pressed="true"]{border-color:#bba3ff79;background:linear-gradient(110deg,#2b2040,#181220)}
/* Stable perspective: depth is applied only to an interior title layer, never to its hit target. */
.project-visual>strong{translate:none!important}
.project:hover .project-visual>strong{transform:translate3d(var(--v17-depth-x,0px),calc(-5px + var(--v17-depth-y,0px)),0) scale(1.045)!important}

/* ENES.OS: three explainable branching choices, no invented processing. */
.v17-decision{display:grid;gap:12px;padding:15px 17px;margin:12px 0 14px;border-radius:15px;border:1px solid #ffffff20;background:linear-gradient(130deg,#11101d,#1b1528);color:#ede7f7}
.v17-decision-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.v17-decision-head strong{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:#d8c4fa}
.v17-decision-head span{font:700 9px Consolas,monospace;color:#9da4b5}
.v17-choice-options{display:flex;flex-wrap:wrap;gap:8px}
.v17-choice-options button{font:700 11px 'DM Sans',sans-serif;color:#aca1bd;background:#211b2d;border:1px solid #e1c8ff25;border-radius:100px;padding:9px 13px;transition:color .22s,background .22s,border-color .22s;cursor:pointer}
.v17-choice-options button:hover{color:#fff;border-color:#c0a6ff68}
.v17-choice-options button[aria-pressed="true"]{background:#8062b43d;color:#eee2ff;border-color:#c7acff7d}
.v17-choice-outcome{font-size:12px;line-height:1.65;color:#b5a6c4;min-height:35px;margin:0}
.v17-choice-flow{height:18px;position:relative;display:flex;align-items:center;gap:10px;color:#99e9e1;font:700 10px Consolas,monospace;letter-spacing:.04em}
.v17-choice-flow:before{content:"";height:1px;flex:1;background:linear-gradient(90deg,#ac91e33a,#a6e9d6c8,#ac91e33a)}
.v17-choice-flow:after{content:"◆";position:absolute;left:8%;top:0;color:#bca5ff;opacity:.3}
.system-console.is-running .v17-choice-flow:after{opacity:1;animation:v17-data-pulse 2.25s linear infinite}
.system-console.is-complete .v17-choice-flow:after{left:87%;opacity:1;color:#9ff3d6;animation:none}
@keyframes v17-data-pulse{0%{left:2%;opacity:0}14%{opacity:1}88%{opacity:1}100%{left:87%;opacity:0}}
@media(prefers-reduced-motion:reduce){.system-console.is-running .v17-choice-flow:after{animation:none;left:50%;opacity:1}}
/* Signature: a single purposeful transition cue on navigation, never a persistent animation. */
.v17-signature-pulse{position:fixed;z-index:1001;top:0;left:0;right:0;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,#c6a6ff,#a2f1de,transparent);transform:scaleX(0);opacity:0;transform-origin:center}
.v17-signature-pulse.is-active{animation:v17-signature .7s cubic-bezier(.17,.72,.2,1) both}
@keyframes v17-signature{0%{opacity:0;transform:scaleX(.02)}24%{opacity:.9}100%{opacity:0;transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.v17-signature-pulse{display:none}}
