*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/.5);--tw-ring-offset-shadow:0 0#0000;--tw-ring-shadow:0 0#0000;--tw-shadow:0 0#0000;--tw-shadow-colored:0 0#0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/.5);--tw-ring-offset-shadow:0 0#0000;--tw-ring-shadow:0 0#0000;--tw-shadow:0 0#0000;--tw-shadow-colored:0 0#0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}a{color:inherit;text-decoration:inherit}kbd,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}button,input{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button{text-transform:none}button{-webkit-appearance:button;background-image:none}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}h1,h2,p,pre{margin:0}input::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}:disabled{cursor:default}svg{display:block;vertical-align:middle}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.z-10{z-index:10}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.flex{display:flex}.grid{display:grid}.h-2\.5{height:.625rem}.h-5{height:1.25rem}.min-h-80{min-height:22rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-2\.5{width:.625rem}.max-w-7xl{max-width:88rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.cursor-text{cursor:text}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-6{gap:1.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-2{row-gap:.5rem}
.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));
}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:.75rem}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-2{padding-bottom:.5rem}.pt-4{padding-top:1rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0/.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}body{margin:0}.hover\:opacity-80:hover{opacity:.8}@media (min-width:1024px) {
  .lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lg\:gap-8{gap:2rem}
}

nav[role="tablist"] {
  display: flex;
  width: 100%;
  box-sizing: border-box;
  align-items: center;
  justify-content: flex-start;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.06) transparent;
  scroll-snap-type: x proximity;
}
nav[role="tablist"]::-webkit-scrollbar { height: 8px }
nav[role="tablist"]::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.06); border-radius: 9999px }
nav[role="tablist"]::-webkit-scrollbar-track { background: transparent }

nav[role="tablist"] button[role="tab"] {
  transition: background-color 160ms ease, color 160ms ease, box-shadow 160ms ease, transform 120ms ease, opacity 160ms ease;
  opacity: 0.95;
  border-radius: 10px;
  padding: 0.4rem 0.75rem;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background-clip: padding-box;
  border: 1px solid transparent;
  color: rgba(255,255,255,0.92);
  background: rgba(255,255,255,0.01);
  position: relative;
  letter-spacing: 0.01em;
  white-space: nowrap;
  flex: 0 0 auto;
  scroll-snap-align: start;
}
nav[role="tablist"] button[role="tab"] svg {
  width: 14px;
  height: 14px;
  opacity: 0.9;
  flex-shrink: 0;
}
nav[role="tablist"] button[role="tab"]:hover {
  /* subtle hover without moving out of the container */
  transform: none;
  opacity: 1;
  background: rgba(255,255,255,0.03);
}
nav[role="tablist"] button[role="tab"][aria-selected="true"] {
  /* keep active state visually lifted but inside the nav */
  background: linear-gradient(180deg, rgba(6,78,59,0.98), rgba(4,64,52,0.98));
  color: #ffffff;
  font-weight: 700;
  opacity: 1;
  border: 1px solid rgba(16,185,129,0.38);
  box-shadow: 0 18px 40px rgba(6,78,59,0.48);
  transform: none;
  z-index: 2;
}
nav[role="tablist"] button[role="tab"][aria-selected="true"]::after {
  content: "";
  position: absolute;
  left: 0.25rem;
  top: 0.45rem;
  bottom: 0.45rem;
  width: 4px;
  border-radius: 4px;
  background: linear-gradient(180deg, #34d399, #10b981);
  box-shadow: 0 6px 18px rgba(16,185,129,0.12);
}
nav[role="tablist"] button[role="tab"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 4px rgba(16,185,129,0.12);
  border: 1px solid rgba(16,185,129,0.45);
}

.prose [role="tabpanel"] h2 {
  border-bottom: none !important;
  padding-bottom: 0 !important;
  margin-bottom: 0.75rem !important;
}
.prose [role="tabpanel"][hidden] {
  display: none;
}
.prose [role="tabpanel"]:not([hidden]) {
  display: block;
  opacity: 1;
  transform: translateY(0);
}

/* Panel sizing and container padding tweaks */
.prose [role="tabpanel"] {
  padding: 1rem 1.25rem;
  border-radius: 8px;
  margin-top: 0.5rem;
  transition: opacity 200ms ease, transform 200ms ease;
  min-height: 22rem;
  max-height: 40rem;
  overflow: auto;
}

/* Terminal card layout: make left card a column so footer can stick to bottom */
.rounded-xl.overflow-hidden {
  display: flex;
  flex-direction: column;
  /* constrain height so content scrolls internally instead of stretching the page */
  max-height: 40rem;
  overflow: hidden;
}
.rounded-xl.overflow-hidden .min-h-80 {
  /* the terminal content grows and scrolls internally */
  flex: 1 1 auto;
  min-height: 0; /* allow shrinking below CSS min-height when needed */
  overflow-y: auto;
}
.rounded-xl.overflow-hidden .terminal-footer {
  margin-top: auto;
  flex-shrink: 0;
  border-top: 1px solid rgba(6,78,59,0.12);
}  


/* Terminal input caret and selection to match theme */
.min-h-80 input[type="text"], .min-h-96 input[type="text"] {
  caret-color: #10b981; /* theme green */
  color: #6ee7b7;
}
.min-h-80 input::placeholder { color: rgba(255,255,255,0.45); }
.min-h-80 input::selection { background: rgba(16,185,129,0.18); color: #042; }

/* Nav buttons explicit pointer cursor */
nav[role="tablist"] button[role="tab"], nav[role="tablist"] button {
  cursor: pointer;
}

/* Themed cursors and caret */
/* Custom green cursor for interactive elements (SVG data URI). Hotspot set to 4 2 for pointer tip */
:root { --theme-cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><path d='M0 0 L14 10 L10 12 L12 16 L9 18 L3 12 Z' fill='%2310b981' /></svg>") 4 2, pointer; }

/* Apply custom cursor to actionable elements only */
a, button, [role="button"], nav[role="tablist"] button, .px-2.5, .kbd {
  cursor: var(--theme-cursor);
}

/* Fallback for touch devices: ensure default behavior remains usable */
@media (hover: none) {
  a, button, [role="button"], nav[role="tablist"] button { cursor: auto; }
}

/* Global themed caret for all text inputs */
input, textarea, select { caret-color: var(--theme-primary, #10b981); }

/* Make sure terminal input keeps themed color as well */
.min-h-80 input[type="text"], .min-h-96 input[type="text"] { caret-color: var(--theme-primary, #10b981); }

.panel-skills .skills-scroll {
  max-height: 18rem; /* limit height and enable internal scrolling */
  overflow-y: auto;
  padding-right: 0.5rem; /* account for scrollbar */
  -webkit-overflow-scrolling: touch;
}
.panel-skills .skills-scroll::-webkit-scrollbar { width: 8px }
.panel-skills .skills-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.04); border-radius: 9999px }

.skill-chip {
  display: inline-block;
  background-color: rgb(31,41,55);
  color: rgb(52,211,153);
  border: 1px solid rgb(55,65,81);
  padding: 0.375rem 0.75rem;
  border-radius: 6px;
  font-size: 0.75rem;
  line-height: 1;
  outline: none;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease, border-color .12s ease;
}
.skill-chip:focus, .skill-chip:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(16,185,129,0.06);
  background: rgba(16,185,129,0.035);
  border-color: rgba(16,185,129,0.18);
}
.skill-chip:focus {
  box-shadow: 0 0 0 4px rgba(16,185,129,0.08);
}
.skill-chip[tabindex] { cursor: pointer; }

/* Prevent text selection in explicitly marked elements */
.no-select, .no-select * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: default }

/* Terminal output wrapping: force long lines to wrap and break if needed so text returns to the next line */
#terminal-output { white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; max-height: 14rem; overflow-y: auto; padding-right: 0.5rem; color: rgb(209,213,219); }
#terminal-output .terminal-output-item { color: inherit; margin-bottom: 0.45rem; line-height: 1.28; }
#terminal-output .terminal-prompt { color: var(--theme-secondary,#34d399); font-weight:600; margin-right:0.35rem; }
#terminal-output .terminal-cmd { color: rgb(229,231,235); }
#terminal-output a { color: var(--theme-primary,#10b981); text-decoration: underline; }
#terminal-output::-webkit-scrollbar { width: 8px }
#terminal-output::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.04); border-radius: 9999px }

/* reduce default gaps inside the scroll region for denser layout */
.panel-skills .grid { gap: 0.6rem; }

/* Screen-reader only helper */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Typing animation target and caret */
.typing-target{
  display:inline-block;
  white-space:pre-wrap;
  max-width:60ch;
  color:rgba(209,213,219,0.96);
  font-size:1rem;
  line-height:1.6;
  letter-spacing:-0.01em;
  transition:opacity 220ms ease, transform 220ms ease;
  opacity:0.98;
}
.typing-target.typing{opacity:0.99}
.typing-target.typing::after{
  content:"";
  display:inline-block;
  width:1px;
  height:1.05em;
  background:var(--theme-primary,#10b981);
  margin-left:6px;
  vertical-align:bottom;
  animation:blink 1s steps(2,start) infinite;
}
.typing-target.typed-done{opacity:1}
.typing-target .accent{ color:var(--theme-primary,#10b981); font-weight:600 }
@keyframes blink{to{visibility:hidden}}
@media (prefers-reduced-motion: reduce){.typing-target.typing::after{animation:none}}

/* Education section styles */
#panel-education .education-list { display:flex; flex-direction:column; gap:0.75rem; }
#panel-education .education-entry { display:flex; gap:1rem; align-items:flex-start; padding:1rem; border-radius:8px; border:1px solid rgba(255,255,255,0.02); background: rgba(17,24,39,0.45); transition: transform .15s ease, box-shadow .18s ease, border-color .15s ease; }
#panel-education .education-entry:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(6,78,59,0.12); border-color: rgba(16,185,129,0.12); }
#panel-education .education-entry:focus { outline: none; box-shadow: 0 0 0 6px rgba(16,185,129,0.08); border-color: rgba(16,185,129,0.18); }
#panel-education .education-entry svg { width:22px; height:22px; flex-shrink:0; margin-top:0.2rem; color:var(--theme-primary,#10b981); }
#panel-education .education-entry h3 { margin:0; font-size:1rem; }
#panel-education .education-entry .edu-institution { color: rgb(209,213,219); margin-top:0.25rem; }
#panel-education .education-entry .edu-meta { color: rgb(156,163,175); font-size: .875rem; margin-top:4px; }
#panel-education .education-entry .edu-courses { margin-top:0.6rem; color: rgb(156,163,175); font-size:.875rem; }
@media(min-width:768px) { #panel-education .education-list { display:grid; grid-template-columns: 1fr; gap:0.75rem; } }

/* Experience timeline styles */
#panel-experience .experience-entry { padding: 0.9rem 1rem; border-radius: 6px; background: rgba(17,24,39,0.35); border: 1px solid rgba(255,255,255,0.02); transition: transform .15s ease, box-shadow .18s ease, border-color .15s ease; }
#panel-experience .experience-entry:hover { transform: translateY(-6px); box-shadow: 0 16px 36px rgba(6,78,59,0.10); border-color: rgba(16,185,129,0.12); }
#panel-experience .experience-entry h3 { margin: 0 0 4px 0; font-size: 1rem; }
#panel-experience .experience-entry p { margin: 0; }
#panel-experience .experience-entry ul { margin: 0; padding-left: 0; }
#panel-experience .experience-entry ul li { display:flex; align-items:flex-start; gap:0.5rem; color: rgba(229,231,235,0.95); }
#panel-experience .experience-entry ul li span:first-child { color: rgba(16,185,129,0.9); }
#panel-experience .experience-entry { border-left-width: 3px; border-left-color: rgba(4,120,87,0.6); }
#panel-experience .experience-entry + .experience-entry { margin-top: 0.75rem; }

/* Tech badges in experience */
#panel-experience .tech-list { display:flex; gap:0.5rem; flex-wrap:wrap; margin-top:0.4rem; }
#panel-experience .tech-badge { display:inline-flex; align-items:center; justify-content:center; gap:0.4rem; padding:0.22rem 0.5rem; border-radius:999px; background: rgba(255,255,255,0.02); color: rgb(156,163,175); font-size:0.75rem; border:1px solid rgba(255,255,255,0.02); min-width:34px; }
#panel-experience .tech-badge svg { width:14px; height:14px; color:inherit; }
#panel-experience .tech-badge:hover { background: rgba(16,185,129,0.06); color: #d9ffe8; border-color: rgba(16,185,129,0.12); }
#panel-experience .tech-badge[title] { cursor:default }

/* Project concise idea + tags */
.project-grid { max-height: 20rem; overflow-y: auto; padding-right: 0.5rem; -webkit-overflow-scrolling: touch; display:grid; grid-template-columns: repeat(auto-fill,minmax(240px,1fr)); gap:1rem }
.project-idea { color: rgb(209,213,219); margin:0 }
.project-tags { color: rgb(156,163,175); display:flex; gap:0.4rem; flex-wrap:wrap }
.project-tags span { margin:0 }
.project-card .project-tags { font-size: .78rem }
.project-card .project-idea { font-size: .95rem }

/* Tag chips */
.project-tag-chip { padding:0.18rem 0.5rem; border-radius:999px; background: rgba(255,255,255,0.02); border:1px solid rgba(255,255,255,0.03); color: rgb(156,163,175); font-size:0.78rem }
.project-tag-chip:hover { background: rgba(16,185,129,0.06); color:#d9ffe8 }

/* Project actions (appears on hover/focus-within) */
.project-actions { display:flex; gap:0.4rem; margin-top:0.6rem; opacity:0; transform:translateY(6px); transition:opacity .14s ease, transform .14s ease }
.project-card:hover .project-actions, .project-card:focus-within .project-actions { opacity:1; transform:none }
.icon-btn { background: transparent; border:1px solid rgba(255,255,255,0.03); padding:0.35rem; border-radius:6px; color: rgba(16,185,129,0.95); display:inline-flex; align-items:center; justify-content:center; cursor:pointer }
.icon-btn[disabled] { opacity:0.35; cursor:default }
.icon-btn svg{ display:block }

/* subtle gradient left accent on hover */
.project-card { position:relative; overflow:visible }
.project-card::before { content:''; position:absolute; left:0; top:0; bottom:0; width:4px; border-radius:6px 0 0 6px; background: linear-gradient(180deg, transparent, transparent); transition: background .18s ease, transform .18s ease; transform: translateX(-6px); opacity:0 }
.project-card:hover::before, .project-card:focus-within::before { transform:none; opacity:1; background: linear-gradient(180deg, rgba(16,185,129,0.95), rgba(34,197,94,0.85)) }

/* Scrollbar */
.project-grid::-webkit-scrollbar { width: 8px }
.project-grid::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.04); border-radius: 9999px }


/* Certifications grid and cards */
.cert-grid { display:grid; gap:0.75rem; max-height: 28rem; overflow-y: auto; padding-right: 0.5rem; -webkit-overflow-scrolling: touch; }
.cert-card { background: rgba(17,24,39,0.4); border:1px solid rgba(255,255,255,0.02); transition: transform .12s ease, box-shadow .15s ease, border-color .12s ease; border-radius: 8px; }
.cert-card:focus, .cert-card:hover { transform: translateY(-6px); box-shadow: 0 16px 36px rgba(6,78,59,0.12); border-color: rgba(16,185,129,0.12); outline:none }
.cert-logo { width:36px; height:36px; display:flex; align-items:center; justify-content:center; color:var(--theme-primary,#10b981); }
.cert-title { font-weight:700 }
.cert-org{ color: rgb(156,163,175); font-size: .9rem }
.cert-meta{ color: rgb(156,163,175); font-size: .8rem }
.cert-link{ color: rgba(16,185,129,0.95); text-decoration: none }
.cert-grid::-webkit-scrollbar { width: 8px }
.cert-grid::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.04); border-radius: 9999px }

/* Credential button */
.cert-btn { display:inline-flex; align-items:center; gap:0.45rem; padding:0.28rem 0.6rem; border-radius:6px; background: rgba(255,255,255,0.02); color: rgba(16,185,129,0.95); border:1px solid rgba(16,185,129,0.08); font-size:0.78rem; cursor:pointer }
.cert-btn .cert-icon { color:inherit }
.cert-btn:hover { background: rgba(16,185,129,0.06); box-shadow: 0 8px 18px rgba(6,78,59,0.06) }
.cert-btn:focus { box-shadow: 0 0 0 3px rgba(16,185,129,0.12); outline:none }

/* Modal styles */
.modal { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; z-index:1000; pointer-events:none }
.modal[aria-hidden="false"] { pointer-events:auto }
.modal-backdrop { position:absolute; inset:0; background:rgba(2,6,23,0.7) }
.modal-panel { position:relative; background: linear-gradient(180deg, rgba(2,6,23,0.95), rgba(2,6,23,0.96)); border-radius:10px; padding:1rem; width:min(900px,94%); max-height:80vh; overflow:auto; border:1px solid rgba(255,255,255,0.04); box-shadow: 0 24px 48px rgba(2,6,23,0.6); }
.modal-header{ display:flex; align-items:center; justify-content:space-between; gap:1rem }
.modal-close{ background:transparent; border:none; color:rgb(156,163,175); font-size:1.1rem; cursor:pointer }
.modal-body{ margin-top:0.6rem }
.modal-frame{ width:100%; height:56vh; border:1px solid rgba(255,255,255,0.04); border-radius:6px }
.modal-external{ color: rgba(16,185,129,0.95); text-decoration:none }

/* small utility */
.modal-open { overflow:hidden }



/* Make only the Experience panel scroll internally to avoid stretching the page */
#panel-experience .experience-scroll {
  max-height: 26rem; /* lock the visual height and enable internal scrolling */
  overflow-y: auto;
  padding-right: 0.5rem; /* reserve space for scrollbar */
  -webkit-overflow-scrolling: touch;
}
#panel-experience .experience-scroll::-webkit-scrollbar { width: 8px }
#panel-experience .experience-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.04); border-radius: 9999px }

/* Matrix background canvas (subtle full-screen Matrix rain) */
#matrix-bg {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0; /* behind content (content uses z-10) */
  opacity: 0.09;
  filter: blur(0.1px);
  will-change: transform, opacity;
}
#matrix-bg.matrix-canvas { display:block; width:100%; height:100%; }

/* hide on touch devices where it's not useful */
@media (hover: none) {
  #matrix-bg { display: none !important; }
}

/* Certification initials badge (Matrix style) */
.cert-logo { padding:0; border-radius:8px; overflow:hidden; position:relative; }
.cert-initials.matrix {
  width:40px; height:28px; margin-right: 10px; display:flex; align-items:center; justify-content:center; border-radius:8px; color: #bfffcf; font-family: 'Courier New', monospace; font-weight:800; font-size:0.95rem; text-transform:uppercase; letter-spacing:0.06em; text-shadow: 0 1px 10px rgba(0,255,160,0.08); position:relative; overflow:hidden; border:1px solid rgba(0,255,140,0.06);
  background: linear-gradient(180deg, hsl(var(--matrix-h,140) 44% 8%), hsl(var(--matrix-h2,170) 44% 12%));
  box-shadow: 0 8px 22px rgba(0,255,140,0.04), inset 0 -6px 12px rgba(0,0,0,0.45); transition: transform .18s ease, box-shadow .18s ease;
}
.cert-initials.matrix::after {
  content: '';
  position: absolute; inset: 0;
  background-image: linear-gradient(to bottom, rgba(0,255,140,0.06) 0%, rgba(0,255,140,0.02) 50%, rgba(0,255,140,0.06) 100%), repeating-linear-gradient(to bottom, rgba(0,255,140,0.06) 0 1px, transparent 1px 6px), repeating-linear-gradient(to right, rgba(0,255,140,0.02) 0 1px, transparent 1px 6px);
  mix-blend-mode: screen; opacity: 0.85; animation: matrix-fall 2.2s linear infinite; pointer-events:none; }
.cert-initials.matrix .glow { position:absolute; left:0; right:0; bottom:0; height:6px; background: linear-gradient(180deg, rgba(0,255,140,0.12), rgba(0,255,140,0)); mix-blend-mode: screen; pointer-events:none }
@keyframes matrix-fall { from { background-position: 0 0, 0 0, 0 0 } to { background-position: 0 100%, 0 240%, 100% 0 } }
.cert-card:hover .cert-initials.matrix, .cert-card:focus .cert-initials.matrix { transform: translateY(-6px); box-shadow: 0 20px 46px rgba(0,255,140,0.08); }
@media (prefers-reduced-motion: reduce) { .cert-initials.matrix::after { animation: none } }

/* Projects grid and card styles */
.project-grid { display: grid; gap: 1rem; }
@media (min-width: 768px) { .project-grid { grid-template-columns: repeat(2, 1fr); } }
.project-card {
  background-color: rgba(17,24,39,0.5);
  border-color: rgb(55,65,81);
  border-width: 1px;
  transition: transform .15s ease, box-shadow .18s ease, border-color .15s ease;
  cursor: pointer;
}
.project-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(6,78,59,0.24);
  border-color: rgba(16,185,129,0.18);
}
.project-card:focus {
  outline: none;
  box-shadow: 0 0 0 6px rgba(16,185,129,0.08);
  border-color: rgba(16,185,129,0.22);
}
.project-card h3 { font-size: 1rem; margin: 0; }
.project-meta { color: rgb(156,163,175); font-size: .75rem; }
.project-date { color: rgb(107,114,128); font-size: .75rem; }
.project-desc { color: rgb(209,213,219); margin-top: .6rem; }
.project-card .project-link { width:16px; height:16px; }
.project-card[role="button"] { user-select: none }

/* Ensure projects grid scrolls internally to avoid stretching the page */
.project-grid {
  max-height: 26rem; /* reasonable limit so the panel doesn't expand indefinitely */
  overflow-y: auto;
  padding-right: 0.5rem;
  -webkit-overflow-scrolling: touch;
}
.project-grid::-webkit-scrollbar { width: 8px }
.project-grid::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.04); border-radius: 9999px }
 



