/* Targeted improvements to the existing design; accent.css and the original layout stay intact. */
/* Keep the original text face explicit; do not inherit the browser's UI fallback. */
body { font-family:Inter,system-ui,-apple-system,sans-serif; }
/* Keep the original star field behind the content, above the body background. */
body { isolation:isolate; }
body > #main { position:relative;z-index:1;background:transparent; }
body > footer { position:relative;z-index:1; }
[hidden] { display:none!important; }
.section-link { color:inherit;text-decoration:none; }
.back-btn { display:inline-flex;align-items:center;min-height:44px;text-decoration:none; }
#lang-toggle,#resume-theme-button { position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:16px; }
#lang-toggle::before,#resume-theme-button::before { content:'';position:absolute;width:44px;height:44px;left:50%;top:50%;transform:translate(-50%,-50%); }
.social-icons a { position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:18px;color:var(--teal)!important; }
.social-icons a::before { content:'';position:absolute;inset:-13px 0; }
.social-icons { gap:0!important; }
/* One fixed circular crop keeps the layout still while switching photographs.
   Dark photo registered to the light photo using eyes, brows, nose, chin and hair.
   Uniform scale only: retain the original face proportions and source images. */
.profile-portrait { position:relative;width:161px;height:161px;overflow:hidden; }
.profile-portrait img { width:100%;height:100%;object-fit:cover;object-position:50% 27%; }
.profile-portrait-dark { transform-origin:0 0;transform:translate(-1.6657px,-0.2345px) scale(1.0214516); }
/* Icon-only CV link in the same size and spacing as email and LinkedIn. */
.social-icons .profile-cv { padding:0;border:0;text-decoration:none; }
.profile-cv svg { flex-shrink:0; }
.social-icons .profile-cv[aria-disabled="true"] { cursor:default; }
.social-icons .profile-cv::after { content:attr(aria-label);position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%,-3px);white-space:nowrap;font-size:11px;font-weight:500;line-height:1.4;opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease; }
.social-icons .profile-cv:is(:hover,:focus-visible)::after { opacity:1;transform:translate(-50%,0); }
.profile-cv-text { display:inline-block; }
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,[tabindex="0"]:focus-visible {
  outline:2px solid var(--teal);outline-offset:5px;border-radius:3px;
}
.skip-link { position:fixed;top:8px;left:-10000px;z-index:1000;width:1px;height:1px;overflow:hidden;background:#fff;color:#155b52;padding:0; }
.skip-link:focus { left:8px;width:auto;height:auto;overflow:visible;padding:10px 16px; }
.dark .skip-link { background:#080808;color:#c7ded8; }
.tech-stack>span { cursor:default; }
.sim-model-notes summary { cursor:pointer;min-height:44px;display:list-item;padding:10px 0;color:var(--teal); }
.sim-model-notes p { font-size:13px;line-height:1.75; }
/* Improve the faint utility text only; preserve the original teal and black/white palette. */
html:not(.dark) :is(.text-black\/30,.text-black\/35,.text-black\/40,.text-black\/45,.text-black\/50) { color:rgb(0 0 0 / .58); }
:where(.dark) :is(.dark\:text-white\/30,.dark\:text-white\/35,.dark\:text-white\/40,.dark\:text-white\/45) { color:rgb(255 255 255 / .62)!important; }
.bh-controls .bh-icon-btn { width:44px;height:44px; }
.bh-controls .bh-trail-btn { min-height:44px; }
.bh-controls .bh-sliders input[type=range] { height:28px; }
.bh-controls input[type=range]:focus-visible { outline:2px solid #c7ded8;outline-offset:4px; }
/* Keep the original tiny slideshow dots, with a larger invisible pointer target. */
#ps-dots button { position:relative; }
#ps-dots button::before { content:'';position:absolute;inset:-10px -5px; }
#ps-prev,#ps-next { min-width:44px;min-height:44px; }
html:not(.js) .view[data-view] { display:block; }
html:not(.js) .animate,html:not(.js) .ps-reveal { opacity:1!important;transform:none!important; }
html:not(.js) .edu-accordion-content { max-height:none!important;opacity:1!important; }
html:not(.js) #lang-toggle { display:inline-flex; }
html:not(.js) #resume-theme-button { display:none; }
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto!important; }
  /* The explicitly requested theme animation is the only CSS exception. */
  *:not(.sun-and-moon,.sun-and-moon *),*::before,*::after { animation:none!important;transition:none!important; }
  .animate,.ps-reveal { opacity:1!important;transform:none!important; }
}

/* Compact manual feedback carousel in the existing resume style. */
.prose .freelance-feedback { margin-top:1.4rem; }
.prose .freelance-feedback .feedback-header { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:.65rem; }
.prose .freelance-feedback h3 { margin:0;font-family:inherit;font-size:11px;font-weight:500;letter-spacing:.035em;text-transform:uppercase;color:inherit;opacity:.65; }
.feedback-controls { display:flex;align-items:center;flex-shrink:0; }
.feedback-controls button { display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;padding:0;background:transparent;color:var(--teal);cursor:pointer; }
.feedback-controls button:hover { opacity:.7; }
.feedback-controls button svg { width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round; }
.feedback-counter { min-width:26px;text-align:center;font-size:11px;font-variant-numeric:tabular-nums;opacity:.6; }
.feedback-viewport { min-height:90px; }
.prose .freelance-feedback figure { margin:0;padding:0 0 0 14px;border-left:1px solid var(--teal); }
.prose .freelance-feedback blockquote { margin:0;padding:0;border:0;font-size:13px;font-style:italic;font-weight:400;color:inherit;quotes:none; }
.prose .freelance-feedback blockquote p { margin:0;line-height:1.65; }
.prose .freelance-feedback blockquote p::before,.prose .freelance-feedback blockquote p::after { content:none; }
.prose .freelance-feedback figcaption { margin:.5rem 0 0;line-height:1; }
.feedback-stars { display:inline-flex;gap:3px;color:var(--teal); }
.feedback-stars svg { width:13px;height:13px;fill:currentColor; }

/* Match the existing project PDF links, using a graph icon for the simulation. */
#view-projects .project-demo-link { color:var(--teal)!important; }
