/*
  Francisco Guadarrama — single-page state-based website
  Palette constraint: every visible color derives from --bg, --text, or --accent.
*/
:root{
  --bg:#fdfdfc;
  --text:#22223b;
  --accent:#4577b5;

  --t-size:50px;
  --t-weight:580;
  --t-lh:46px;
  --t-ls:-0.08em;
  --t-ws:0.05em;

  --b-size:17px;
  --b-weight:350;
  --b-lh:22px;
  --b-ls:-0.05em;
  --b-ws:-0.04em;

  --n-size:24px;
  --n-weight:470;
  --n-ls:-0.10em;

  --m-size:16px;
  --m-weight:300;
  --m-ls:-0.04em;

  --v-size:16px;
  --v-weight:530;
  --v-lh:20px;
  --v-ls:-0.05em;

  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --ease-pop:cubic-bezier(.22,1,.36,1);

  --top-pad:30px;
  --side-pad:clamp(22px,4vw,58px);
  --content-max:1180px;

  --hero-size:27px;
  --hero-weight:230;
  --hero-line-height:1;
  --hero-letter-spacing:-.081em;
  --hero-word-spacing:.055em;
  --hero-paragraph-gap:.55em;
  --hero-max-width:860px;
  --hero-left-offset:72px;
  --hero-mobile-side-inset:22px;

  --section-title-size:50px;
  --section-title-weight:380;
  --record-title-size:22px;
  --record-title-weight:380;
  --record-body-size:17px;
  --record-body-weight:350;
  --record-date-size:16px;
  --record-date-weight:300;
  --record-meta-size:16px;
  --record-meta-weight:400;
  --contact-size:30px;
  --contact-weight:380;
  --footer-size:10px;
  --footer-weight:280;

  --goo-spread:1;
  --goo-blur:6;
  --goo-contrast:18;
  --goo-open-dur:520ms;
  --goo-close-dur:360ms;
  --goo-stagger:42ms;
  --goo-close-stagger:24ms;
  --goo-icon-dur:240ms;
  --goo-anticip-dur:700ms;
  --goo-ease:cubic-bezier(0.22,1,0.36,1);
  --goo-icon-ease:cubic-bezier(0.22,1,0.36,1);

  /* Transitions.dev — Texts reveal */
  --stagger-dur:500ms;
  --stagger-distance:12px;
  --stagger-stagger:40ms;
  --stagger-blur:3px;
  --stagger-ease:cubic-bezier(0.22,1,0.36,1);

  /* Desktop optical edge shared by the hero and the radial trigger. */
  --home-edge:calc(var(--side-pad) + var(--hero-left-offset));
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}
body{
  margin:0;
  overflow-x:hidden;
  min-height:100vh;
  background:var(--bg);
  color:var(--text);
  font-family:"Albert Sans",system-ui,sans-serif;
  font-synthesis-weight:none;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  transition:background-color 220ms var(--ease-out),color 180ms ease;
}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
::selection{background:var(--accent);color:var(--bg)}
.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;
}
.rough-filters{position:absolute;pointer-events:none}

.app-shell{height:100svh;overflow:hidden;position:relative;background:var(--bg)}

.topbar{position:fixed;inset:0 0 auto 0;z-index:60;height:0;padding:0;pointer-events:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px}

/* Radial menu: independent circular controls.
   This is the same positioning/hit-testing architecture used by the known-good
   /redesign build: a large fixed anchor inside .topbar, pointer-events disabled
   on the anchor, restored only on the main trigger/open satellites. */
.t-goo-anchor{position:fixed;top:0;right:calc(var(--home-edge) - 80px);z-index:65;width:220px;height:380px;pointer-events:none;overflow:visible}
.t-goo-layer{display:none}
.t-goo-item,.t-goo-main{
  appearance:none;position:absolute;left:80px;top:80px;width:40px;height:40px;padding:0;border-radius:50%;
  display:grid;place-items:center;overflow:visible;-webkit-tap-highlight-color:transparent;
  border:1px solid color-mix(in srgb,var(--text) 11%,transparent);background:var(--bg);color:var(--text);
  box-shadow:none;
  transition:background-color 180ms ease,color 140ms ease,border-color 180ms ease;
}
.t-goo-main{z-index:5;pointer-events:auto}
.t-goo-item{
  z-index:4;pointer-events:none;opacity:0;filter:blur(4px);transform:translate(0,0) scale(.82);
  transition:transform var(--goo-open-dur) var(--goo-ease) calc(var(--i,0)*var(--goo-stagger)),opacity var(--goo-icon-dur) ease-out calc(var(--i,0)*var(--goo-stagger)),filter var(--goo-icon-dur) ease-out calc(var(--i,0)*var(--goo-stagger)),color 140ms ease,background-color 180ms ease,border-color 180ms ease;
  will-change:transform,opacity,filter;
}
.t-goo-anchor[data-open="true"] .t-goo-item{pointer-events:auto;opacity:1;filter:blur(0);transform:translate(calc(var(--fx)*var(--goo-spread)),calc(var(--fy)*var(--goo-spread))) scale(1)}
.t-goo-anchor[data-open="false"] .t-goo-item{transition-duration:var(--goo-close-dur),180ms,180ms,140ms,180ms,180ms;transition-delay:calc(var(--ri,0)*var(--goo-close-stagger)),calc(var(--ri,0)*var(--goo-close-stagger)),calc(var(--ri,0)*var(--goo-close-stagger)),0ms,0ms,0ms}
.t-goo-item svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transform:scale(.9);transition:transform 190ms var(--goo-icon-ease),color 140ms ease}
.t-goo-anchor[data-open="true"] .t-goo-item svg{transform:scale(1.06)}
.t-goo-label{position:absolute;right:calc(100% + 10px);top:50%;transform:translate(6px,-50%);white-space:nowrap;font-size:11px;font-weight:400;line-height:1;letter-spacing:-.025em;color:var(--text);opacity:0;filter:blur(2px);pointer-events:none;transition:opacity 170ms ease-out,filter 180ms ease-out,transform 230ms var(--goo-ease),color 140ms ease}
.t-goo-anchor[data-open="true"] .t-goo-label{opacity:1;filter:blur(0);transform:translate(0,-50%);transition-delay:calc(95ms + (var(--i,0)*var(--goo-stagger)))}
.t-goo-item:hover .t-goo-label,.t-goo-item:focus-visible .t-goo-label{color:var(--accent)}
.t-goo-item:hover,.t-goo-item:focus-visible,.t-goo-main:hover,.t-goo-main:focus-visible{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 34%,transparent)}
.t-goo-item:hover svg,.t-goo-item:focus-visible svg{transform:scale(1.1)}
.t-goo-item:active{transform:translate(calc(var(--fx)*var(--goo-spread)),calc(var(--fy)*var(--goo-spread))) scale(.94)!important}
.t-goo-item:active svg{transform:scale(.98)}
.t-goo-swap,.t-goo-icon{display:grid;place-items:center;width:20px;height:20px}
.t-goo-icon{transition:transform 420ms var(--goo-ease),filter 220ms ease,opacity 220ms ease;will-change:transform,filter}
.t-goo-icon svg{width:20px;height:20px}
.t-goo-main:active .t-goo-icon{transform:scale(.94)}
.t-goo-anchor[data-open="true"] .t-goo-icon{transform:rotate(45deg)}
.t-goo-anchor.is-anticipating .t-goo-main{animation:t-goo-anticip var(--goo-anticip-dur) var(--goo-ease)}
@keyframes t-goo-anticip{0%,100%{transform:translateY(0)}18%{transform:translateY(3px)}38%{transform:translateY(-1.5px)}58%{transform:translateY(.7px)}}

.settings-popover{
  position:fixed;top:126px;right:var(--home-edge);z-index:70;
  width:min(302px,calc(100vw - var(--side-pad) - var(--side-pad)));
  padding:10px;border:1px solid color-mix(in srgb,var(--text) 24%,transparent);border-radius:13px;
  background:var(--bg);color:var(--text);
  box-shadow:0 18px 54px color-mix(in srgb,var(--text) 13%,transparent);
  opacity:0;filter:blur(2px);transform:translateY(-5px) scale(.975);transform-origin:top right;
  visibility:hidden;pointer-events:none;
  transition:opacity 155ms ease-out,filter 175ms ease-out,transform 205ms var(--ease-out),visibility 0s linear 205ms;
}
.settings-popover.is-open{
  opacity:1;filter:blur(0);transform:translateY(0) scale(1);visibility:visible;pointer-events:auto;
  transition:opacity 150ms ease-out,filter 175ms ease-out,transform 215ms var(--ease-out),visibility 0s linear 0s;
}
.settings-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;
  padding:8px 7px;
}
.settings-row+.settings-row{border-top:1px solid color-mix(in srgb,var(--text) 12%,transparent)}
.settings-label{font-size:12px;font-weight:430;letter-spacing:-.025em}
.segmented-control{
  display:flex;align-items:center;padding:2px;border:1px solid color-mix(in srgb,var(--text) 18%,transparent);
  border-radius:9px;background:color-mix(in srgb,var(--text) 4%,transparent);
}
.segmented-control button{
  appearance:none;border:0;border-radius:6px;background:transparent;color:var(--text);
  min-width:45px;padding:5px 8px;font-size:11px;font-weight:530;letter-spacing:-.025em;
  transition:background-color 150ms ease,color 150ms ease,transform 135ms var(--ease-out);
}
.segmented-control button:hover,.segmented-control button:focus-visible{color:var(--accent)}
.segmented-control button:active{transform:scale(.95)}
.segmented-control button[aria-pressed="true"]{background:var(--text);color:var(--bg)}
.segmented-control button[aria-pressed="true"]:hover,.segmented-control button[aria-pressed="true"]:focus-visible{color:var(--bg)}

main{height:100%}
.view{
  position:absolute;inset:0;
  min-height:100%;
  background:var(--bg);
  opacity:1;transform:none;filter:none;
  transition:background-color 220ms var(--ease-out),color 180ms ease;
}
.view.is-leaving{opacity:1;transform:none;filter:none}
.view.is-entering,.view.is-entering.is-entering-active{opacity:1;transform:none;filter:none}
.view[hidden]{display:none}

/* Text reveal: motion lives on text groups, not on the entire page.
   This avoids stacked transforms/blur and keeps exits quiet. */
.t-stagger-line{opacity:1;transform:translateY(0);filter:blur(0)}
.view.is-entering .t-stagger-line{
  opacity:0;
  transform:translateY(var(--stagger-distance));
  filter:blur(var(--stagger-blur));
  will-change:transform,opacity,filter;
}
.view.is-entering.is-entering-active .t-stagger-line{
  opacity:1;
  transform:translateY(0);
  filter:blur(0);
  transition:
    opacity var(--stagger-dur) var(--stagger-ease),
    transform var(--stagger-dur) var(--stagger-ease),
    filter var(--stagger-dur) var(--stagger-ease);
  transition-delay:var(--stagger-delay,0ms);
}
.view.is-leaving .t-stagger-line{
  opacity:0;
  transform:translateY(0);
  filter:blur(0);
  transition:opacity 200ms ease,transform 0s linear,filter 0s linear;
  transition-delay:0s;
}


.home-view{display:flex;flex-direction:column;overflow:auto;overscroll-behavior:contain;padding:80px 0;scrollbar-width:none}
.home-view::-webkit-scrollbar{display:none}
.hero-copy{width:min(var(--hero-max-width),calc(100vw - var(--side-pad) - var(--side-pad) - var(--hero-left-offset)));max-width:var(--hero-max-width);flex:0 0 auto;margin-top:auto;margin-bottom:auto;margin-left:calc(var(--side-pad) + var(--hero-left-offset));margin-right:var(--side-pad);overflow:visible;scrollbar-width:none}
.hero-copy::-webkit-scrollbar{display:none}
.hero-copy p{position:relative;margin:0;max-width:none;font-size:var(--hero-size);font-weight:var(--hero-weight);line-height:var(--hero-line-height);letter-spacing:var(--hero-letter-spacing);word-spacing:var(--hero-word-spacing);text-wrap:pretty;overflow:visible}
.hero-copy p+p{margin-top:var(--hero-paragraph-gap)}
.home-view.is-entering .annotation-decoration{opacity:0;transform:scale(.985)}
.home-view.is-entering.is-entering-active .annotation-decoration{opacity:var(--annotation-opacity,1);transform:scale(1);transition:opacity 240ms ease-out,transform 280ms var(--stagger-ease);transition-delay:var(--annotation-delay,150ms)}
.lang-es{display:none}html[lang="es"] .lang-en{display:none}html[lang="es"] .lang-es{display:block}
.annotation-layer{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:visible}
.annotation-fragment{position:absolute;color:var(--annotation-color-light,var(--accent));pointer-events:none;overflow:visible}
html[data-theme="dark"] .annotation-fragment{color:var(--annotation-color-dark,var(--annotation-color-light,var(--accent)))}
.annotation-fragment .annotation-decoration{position:absolute;display:block;overflow:visible;color:currentColor;pointer-events:none}
.annotation-fragment.annotation-wavy .annotation-decoration{bottom:-.24em;left:-1.5%;width:103%;height:.38em}
.annotation-fragment.annotation-underline .annotation-decoration{bottom:-.28em;left:-1%;width:102%;height:.46em}
.annotation-fragment.annotation-double .annotation-decoration{bottom:-.58em;left:-1%;width:102%;height:.82em}
.annotation-fragment.annotation-dotted .annotation-decoration{bottom:-.30em;left:-1%;width:102%;height:.46em}
.annotation-dots{background:radial-gradient(circle,currentColor 1.25px,transparent 1.35px);background-size:.46em 100%;background-position:0 100%;background-repeat:repeat-x}
.annotation-fragment.annotation-circle .annotation-decoration{inset:-.30em -.35em;width:calc(100% + .70em);height:calc(100% + .60em)}
.annotation-fragment.annotation-highlight .annotation-decoration{left:-3%;bottom:.02em;width:106%;height:.82em;opacity:.28;--annotation-opacity:.28}
.annotation-fragment.annotation-arrow .annotation-decoration{bottom:-.38em;left:-1%;width:106%;height:.62em}
.annotation-fragment.annotation-bracket .annotation-decoration{inset:-.18em -.20em;width:calc(100% + .40em);height:calc(100% + .36em)}
.annotation-fragment.annotation-box .annotation-decoration{inset:-.20em -.22em;width:calc(100% + .44em);height:calc(100% + .40em)}
.annotation-fragment.annotation-strikethrough .annotation-decoration{top:50%;left:-1%;width:102%;height:.44em;transform:translateY(-50%)}
.annotation-fragment.annotation-crossout .annotation-decoration{top:50%;left:-2%;width:104%;height:1.25em;transform:translateY(-50%)}
.tune-word{position:relative;z-index:2;border-radius:.10em;transition:background-color 110ms ease,box-shadow 110ms ease,color 110ms ease}
html[data-debug="true"] .home-view.is-current .tune-word{cursor:pointer;-webkit-user-select:none;user-select:none}
html[data-debug="true"] .home-view.is-current .tune-word:hover{background:color-mix(in srgb,var(--accent) 7%,transparent)}
html[data-debug="true"] .home-view.is-current .tune-word.is-selected{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 42%,transparent)}

/* ---------- Inline portrait trigger + Transitions.dev portrait card ---------- */
.portrait-name{
  display:inline;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  color:var(--text);
  font:inherit;
  font-weight:630;
  line-height:inherit;
  letter-spacing:inherit;
  word-spacing:inherit;
  vertical-align:baseline;
  cursor:pointer;
  outline:none;
  -webkit-tap-highlight-color:transparent;
  transition:color 150ms ease,opacity 150ms ease,transform 140ms var(--ease-out);
}
.portrait-name:hover,.portrait-name:focus-visible{opacity:.76}
.portrait-name:active{transform:scale(.97)}
.portrait-name:focus-visible{outline:2px solid var(--accent);outline-offset:.12em;border-radius:.10em}

.portrait-trigger-group{display:inline;white-space:nowrap}
.portrait-cue-hit{
  position:relative;
  display:inline-grid;
  place-items:center;
  width:.64em;height:.64em;
  margin:0 0 0 .18em;
  padding:0;border:0;
  vertical-align:.01em;
  background:transparent;
  color:#ea1b5c;
  cursor:pointer;
  outline:none;
  -webkit-tap-highlight-color:transparent;
}
/* Invisible circular hit target: larger than the thin arrow without changing line layout. */
.portrait-cue-hit::before{
  content:"";
  position:absolute;
  left:50%;top:50%;
  width:1.22em;height:1.22em;
  border:0;border-radius:50%;
  background:transparent;
  transform:translate(-50%,-50%);
}
.portrait-cue-hit:focus-visible{outline:2px solid var(--accent);outline-offset:.18em;border-radius:50%}
.portrait-cue{
  position:relative;z-index:1;
  display:block;
  width:.64em;height:.64em;
  color:inherit;fill:currentColor;
  transform:rotate(45deg);transform-origin:50% 50%;
  pointer-events:none;
  transition:opacity 150ms ease,transform 140ms var(--ease-out);
}
.portrait-trigger-group:hover .portrait-cue,.portrait-trigger-group:focus-within .portrait-cue{opacity:.76}
.portrait-cue-hit:active .portrait-cue{transform:rotate(45deg) scale(.94)}
html[data-theme="dark"] .portrait-cue-hit{color:#ff96ac}

:root{
  --tilt-perspective:1000px;
  --tilt-return:1000ms;
  --tilt-return-ease:cubic-bezier(0.22,1,0.36,1);
  --tilt-follow:400ms;
  --tilt-follow-ease:cubic-bezier(0.22,1,0.36,1);
  --tilt-glare-opacity:.32;
  --tilt-glare-fade:300ms;
  --tilt-glare-ease:cubic-bezier(0.22,1,0.36,1);
  --toast-open:350ms;
  --toast-close:250ms;
  --toast-distance:16px;
  --toast-blur:2px;
  --toast-scale:.97;
  --toast-ease:cubic-bezier(0.22,1,0.36,1);
}
.portrait-stage{
  position:fixed;
  inset:0;
  z-index:115;
  display:grid;
  place-items:center;
  padding:0;
  pointer-events:none;
  overflow:hidden;
}
.portrait-toast{
  position:relative;
  z-index:2;
  width:min(465px,calc(100vw - 44px));
  max-height:calc(100svh - 56px);
  pointer-events:none;
}
.t-toast{
  opacity:0;
  transform:translateY(var(--toast-distance)) scale(var(--toast-scale));
  filter:blur(var(--toast-blur));
  will-change:transform,opacity,filter;
  transition:
    opacity var(--toast-close) var(--toast-ease),
    transform var(--toast-close) var(--toast-ease),
    filter var(--toast-close) var(--toast-ease);
}
.t-toast.is-open{
  opacity:1;
  transform:translateY(0) scale(1);
  filter:blur(0);
  pointer-events:auto;
  transition:
    opacity var(--toast-open) var(--toast-ease),
    transform var(--toast-open) var(--toast-ease),
    filter var(--toast-open) var(--toast-ease);
}
.t-toast.is-open.is-opening-guard{pointer-events:none}
.t-tilt{touch-action:none}
.t-tilt-card{
  position:relative;
  border-radius:16px;
  overflow:hidden;
  transform:
    perspective(var(--tilt-perspective))
    rotateX(var(--tilt-rx,0deg))
    rotateY(var(--tilt-ry,0deg));
  transform-style:preserve-3d;
  transition:transform var(--tilt-return) var(--tilt-return-ease);
  will-change:transform;
  box-shadow:0 22px 62px color-mix(in srgb,var(--text) 18%,transparent);
}
.t-tilt-card.is-tilting{transition:transform var(--tilt-follow) var(--tilt-follow-ease)}
.portrait-image{
  display:block;
  width:100%;
  max-height:calc(100svh - 56px);
  object-fit:cover;
  object-position:center;
  border-radius:16px;
  cursor:pointer;
  -webkit-user-drag:none;
  user-select:none;
}

.portrait-close{
  position:absolute;top:22px;right:30px;z-index:4;
  width:40px;height:40px;padding:0;border:0;border-radius:0;
  display:grid;place-items:center;
  background:transparent;color:#ea1b5c;
  box-shadow:none;
  -webkit-tap-highlight-color:transparent;
  transition:transform 150ms var(--ease-out),opacity 140ms ease;
}
.portrait-close svg{width:32px;height:32px;display:block;pointer-events:none}
.portrait-close:hover,.portrait-close:focus-visible{opacity:.72}
.portrait-close:active{transform:scale(.92)}
.t-smoky-canvas{position:absolute;left:0;top:0;z-index:3;display:block;pointer-events:none;transform-origin:center;will-change:transform,opacity}

.t-tilt-glare{
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:0;
  mix-blend-mode:screen;
  background:
    radial-gradient(circle 95px at var(--tilt-gx,50%) var(--tilt-gy,50%),
      rgba(255,255,255,.48),rgba(255,255,255,.06) 52%,rgba(255,255,255,0) 84%),
    radial-gradient(circle 200px at var(--tilt-gx,50%) var(--tilt-gy,50%),
      rgba(255,255,255,.22),rgba(255,255,255,.04) 58%,rgba(255,255,255,0) 78%),
    radial-gradient(circle 360px at var(--tilt-gx,50%) var(--tilt-gy,50%),
      rgba(255,255,255,.10),rgba(255,255,255,0) 88%);
  transition:opacity var(--tilt-glare-fade) var(--tilt-glare-ease);
}
.t-tilt.is-hover .t-tilt-glare{opacity:var(--tilt-glare-opacity)}
@media (prefers-reduced-motion:reduce){
  .t-tilt-card{transform:none!important;transition:none!important}
  .t-toast{transition:none!important}
}

.content-view{overflow:auto;padding:124px var(--side-pad) 88px;scrollbar-width:thin;scrollbar-color:var(--accent) transparent}
.content-inner{width:min(var(--content-max),100%);margin:0 auto}
.content-heading{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  margin:0 0 54px;
}
.content-heading h2{
  margin:0;
  font-size:var(--section-title-size);font-weight:var(--section-title-weight);line-height:var(--t-lh);
  letter-spacing:var(--t-ls);word-spacing:var(--t-ws);
}
.section-home{
  appearance:none;border:0;background:transparent;color:var(--text);
  position:fixed;top:calc(var(--radial-anchor-top) + 134px);right:calc(var(--home-edge) + 20px);z-index:66;
  width:40px;height:40px;flex:0 0 40px;padding:0;border-radius:50%;
  display:grid;place-items:center;
  transition:color 145ms ease,transform 150ms var(--ease-out),background-color 145ms ease;
}
.section-home .back-arrow-icon{
  width:20px;height:20px;display:block;fill:currentColor;stroke:currentColor;stroke-width:6.4;
  stroke-linejoin:round;pointer-events:none;
}
.section-home:hover,.section-home:focus-visible{color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}
.section-home:active{transform:scale(.92)}
.content-view.is-entering .section-home{opacity:0;transform:translateX(5px)}
.content-view.is-entering.is-entering-active .section-home{
  opacity:1;transform:translateX(0);
  transition:opacity 180ms var(--ease-out) 45ms,transform 220ms var(--ease-out) 45ms,color 145ms ease,background-color 145ms ease;
}
.content-view.is-leaving .section-home{opacity:0;transform:translateX(0);transition:opacity 200ms ease,transform 0s linear}
.records{border-top:1px solid color-mix(in srgb,var(--text) 72%,transparent)}
.content-view.is-leaving .records{border-top-color:transparent;transition:border-top-color 200ms ease}
.record{
  display:grid;grid-template-columns:minmax(145px,190px) minmax(0,1fr);
  gap:clamp(28px,5vw,78px);
  padding:25px 0 30px;
  border-bottom:1px solid color-mix(in srgb,var(--text) 72%,transparent);
}

.record-rail{padding-top:2px;display:flex;flex-direction:column;gap:7px}
.record-date,.record-meta{line-height:1.25;letter-spacing:var(--m-ls)}
.record-date{font-size:var(--record-date-size);font-weight:var(--record-date-weight)}
.record-meta{font-size:var(--record-meta-size);font-weight:var(--record-meta-weight);color:var(--accent)}
.record-body h3{
  margin:0 0 12px;
  font-size:var(--record-title-size);
  font-weight:var(--record-title-weight);line-height:1.08;letter-spacing:-.055em;text-wrap:balance;
}
.record-copy{max-width:720px}
.record-copy p{
  margin:0;color:var(--text);
  font-size:var(--record-body-size);font-weight:var(--record-body-weight);line-height:var(--b-lh);
  letter-spacing:var(--b-ls);word-spacing:var(--b-ws);text-wrap:pretty;
}
.record-copy p+p{margin-top:9px}
.record-copy a{
  text-decoration-thickness:1px;text-underline-offset:3px;
  transition:color 140ms ease,text-decoration-color 140ms ease;
}
.record-copy a:hover,.record-copy a:focus-visible{color:var(--accent)}
.publication-record .record-body h3{margin-bottom:9px}
.publication-record em{font-style:italic}

.contact-view .content-inner{min-height:calc(100svh - 212px);display:flex;flex-direction:column}
.contact-actions{
  border-top:1px solid color-mix(in srgb,var(--text) 72%,transparent);
  display:flex;flex-direction:column;
}
.contact-actions a,.contact-actions button{
  appearance:none;border:0;border-bottom:1px solid color-mix(in srgb,var(--text) 72%,transparent);
  background:transparent;color:var(--text);text-align:left;text-decoration:none;
  padding:18px 0;
  font-size:clamp(24px,3vw,var(--contact-size));font-weight:var(--contact-weight);line-height:1;letter-spacing:-.065em;
  transition:color 150ms ease,transform 150ms var(--ease-out);
}
.contact-actions a:hover,.contact-actions button:hover,.contact-actions a:focus-visible,.contact-actions button:focus-visible{color:var(--accent)}
.contact-actions a:active,.contact-actions button:active{transform:translateX(3px) scale(.995)}

.site-footer{
  position:fixed;left:var(--side-pad);bottom:22px;z-index:20;
  font-size:var(--footer-size);font-weight:var(--footer-weight);letter-spacing:-.025em;
  color:color-mix(in srgb,var(--text) 38%,transparent);
  pointer-events:none;
}

.dialog-backdrop{
  position:fixed;inset:0;z-index:80;background:color-mix(in srgb,var(--bg) 54%,transparent);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
dialog.modal{
  width:min(510px,calc(100vw - 30px));max-height:min(720px,calc(100svh - 30px));
  margin:auto;padding:0;border:1px solid color-mix(in srgb,var(--text) 42%,transparent);
  border-radius:14px;background:var(--bg);color:var(--text);
  box-shadow:0 22px 80px color-mix(in srgb,var(--text) 15%,transparent);
  opacity:1;transform:scale(1) translateY(0);
  transition:opacity 180ms var(--ease-out),transform 220ms var(--ease-out),filter 200ms var(--ease-out);
}
dialog.modal::backdrop{background:transparent}
dialog.modal[open]{
  @starting-style{opacity:0;transform:scale(.96) translateY(10px);filter:blur(2px)}
}
.modal form{padding:22px}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}
.modal-head h2{margin:0;font-size:22px;font-weight:530;letter-spacing:-.055em;line-height:1.1}
.modal-close{
  width:30px;height:30px;border:0;border-radius:50%;background:transparent;color:var(--text);
  display:grid;place-items:center;font-size:23px;font-weight:300;line-height:1;
  transition:color 140ms ease,transform 140ms var(--ease-out);
}
.modal-close:hover,.modal-close:focus-visible{color:var(--accent)}
.modal-close:active{transform:scale(.9)}
.field{display:grid;gap:7px;margin-bottom:14px}
.field>span{font-size:12px;font-weight:530;letter-spacing:-.03em}
.field input,.field textarea{
  width:100%;border:1px solid color-mix(in srgb,var(--text) 35%,transparent);
  border-radius:9px;background:var(--bg);color:var(--text);outline:none;
  padding:10px 11px;font-size:15px;font-weight:350;letter-spacing:-.025em;
  transition:border-color 150ms ease,box-shadow 150ms ease,transform 140ms var(--ease-out);
}
.field textarea{min-height:132px;resize:vertical;line-height:1.4}
.field input:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.robot-check{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:350;letter-spacing:-.02em;margin:3px 0 14px}
.robot-check input{accent-color:var(--accent)}
.honeypot{position:absolute!important;left:-9999px!important;opacity:0!important}
.form-status{min-height:18px;margin:0 0 8px;font-size:12px;font-weight:530;letter-spacing:-.025em;color:var(--accent)}
.submit-button{
  width:100%;min-height:40px;border:1px solid var(--text);border-radius:9px;background:var(--text);color:var(--bg);
  font-size:14px;font-weight:530;letter-spacing:-.025em;
  transition:background-color 150ms ease,border-color 150ms ease,transform 140ms var(--ease-out),opacity 150ms ease;
}
.submit-button:hover:not(:disabled),.submit-button:focus-visible:not(:disabled){background:var(--accent);border-color:var(--accent)}
.submit-button:active:not(:disabled){transform:scale(.985)}
.submit-button:disabled{opacity:.36;cursor:not-allowed}

.password-shell{
  display:flex!important;align-items:center;border:1px solid color-mix(in srgb,var(--text) 35%,transparent);
  border-radius:9px;overflow:hidden;transition:border-color 150ms ease,box-shadow 150ms ease;
}
.password-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
.password-shell.is-error{animation:field-shake 250ms var(--ease-in-out);border-color:var(--accent)}
.password-shell input{border:0!important;box-shadow:none!important;border-radius:0!important;flex:1}
.eye-button{
  flex:0 0 44px;width:44px;height:40px;border:0;background:transparent;color:var(--text);display:grid;place-items:center;
  transition:color 140ms ease,transform 140ms var(--ease-out);
}
.eye-button:hover,.eye-button:focus-visible{color:var(--accent)}
.eye-button:active{transform:scale(.94)}
.eye-button svg{width:23px;height:23px;overflow:visible}
.eye-lid{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;transition:d 210ms var(--ease-in-out)}
.eye-pupil{fill:currentColor;transform-origin:12px 12px;transition:transform 90ms linear}
.eye-button[aria-pressed="true"] .eye-top{d:path("M1 12 C1 12 5 12 12 12 C19 12 23 12 23 12")}
.eye-button[aria-pressed="true"] .eye-bottom{d:path("M1 12 C1 12 5 12 12 12 C19 12 23 12 23 12")}
.eye-button[aria-pressed="true"] .eye-pupil{opacity:0}

.debug-panel{
  position:fixed;right:18px;bottom:18px;z-index:200;width:382px;max-width:calc(100vw - 36px);
  max-height:min(82svh,760px);overflow:hidden;
  border:1px solid color-mix(in srgb,var(--text) 30%,transparent);border-radius:13px;
  background:var(--bg);color:var(--text);box-shadow:0 16px 52px color-mix(in srgb,var(--text) 13%,transparent);
  font-size:12px;letter-spacing:-.02em;
}
.debug-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border-bottom:1px solid color-mix(in srgb,var(--text) 14%,transparent)}
.debug-kicker{font-size:10px;font-weight:530;letter-spacing:.02em;text-transform:uppercase;color:var(--accent);margin-bottom:2px}
.debug-title{font-size:14px;font-weight:600}
.debug-collapse{width:28px;height:28px;border:0;border-radius:7px;background:transparent;color:var(--text);font-size:17px;line-height:1;transition:color 140ms ease,transform 140ms var(--ease-out)}
.debug-collapse:hover,.debug-collapse:focus-visible{color:var(--accent)}
.debug-collapse:active{transform:scale(.92)}
.debug-panel.is-collapsed{width:210px}
.debug-panel.is-collapsed .debug-body{display:none}
.debug-panel.is-collapsed .debug-head{border-bottom:0}
.debug-body{max-height:calc(min(82svh,760px) - 54px);overflow:auto;padding:3px 12px 12px;scrollbar-width:thin;scrollbar-color:var(--accent) transparent}
.debug-panel details{border-bottom:1px solid color-mix(in srgb,var(--text) 14%,transparent)}
.debug-panel summary{cursor:pointer;list-style:none;padding:11px 1px;font-size:12px;font-weight:600;user-select:none}
.debug-panel summary::-webkit-details-marker{display:none}
.debug-panel summary::after{content:"+";float:right;color:var(--accent);font-weight:400}
.debug-panel details[open] summary::after{content:"−"}
.debug-section{padding:0 1px 11px}
.debug-color-row{display:grid;grid-template-columns:minmax(0,1fr) 30px 86px;align-items:center;gap:7px;padding:5px 0}
.debug-panel input[type="color"]{width:30px;height:26px;padding:1px;border:0;border-radius:6px;background:transparent}
.debug-panel input[type="text"],.debug-panel input[type="number"]{
  width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--text) 24%,transparent);border-radius:7px;
  background:var(--bg);color:var(--text);padding:6px 7px;font-size:11px;font-weight:430;letter-spacing:-.02em;outline:none;
  transition:border-color 130ms ease,box-shadow 140ms ease;
}
.debug-panel input[type="text"]:focus,.debug-panel input[type="number"]:focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}
.debug-panel input.is-invalid{border-color:var(--accent)}
.debug-text-row{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:8px;padding:4px 0}
.debug-note{margin:7px 0 0;font-size:10px;font-weight:350;line-height:1.35;color:color-mix(in srgb,var(--text) 68%,transparent)}
.debug-typography label{display:grid;grid-template-columns:minmax(0,1fr) 82px 24px;align-items:center;gap:6px;padding:4px 0}
.debug-typography em{font-size:10px;font-style:normal;color:color-mix(in srgb,var(--text) 62%,transparent)}
.text-tuner{padding-bottom:12px}
.tuner-selection-row{display:grid;grid-template-columns:72px minmax(0,1fr);align-items:start;gap:8px;padding:5px 0 2px}
.tuner-selection-row>span,.tuner-control-row>span{font-size:11px;font-weight:530}
.tuner-selection-row output{min-height:30px;padding:6px 7px;border-radius:7px;background:color-mix(in srgb,var(--accent) 8%,transparent);font-size:10.5px;line-height:1.35;overflow-wrap:anywhere}
.tuner-group{margin-top:12px;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--text) 12%,transparent)}
.tuner-group-title{margin-bottom:7px;font-size:11px;font-weight:600;letter-spacing:-.025em}
.tuner-weight-row{display:grid;grid-template-columns:minmax(0,1fr) 82px;align-items:center;gap:8px}
.debug-panel input[type="range"]{width:100%;accent-color:var(--accent)}
.tuner-control-row{display:grid;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:8px;padding:4px 0}
.debug-panel select{width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--text) 24%,transparent);border-radius:7px;background:var(--bg);color:var(--text);padding:6px 7px;font:inherit;font-size:11px;font-weight:430;letter-spacing:-.02em;outline:none;transition:border-color 130ms ease,box-shadow 140ms ease}
.debug-panel select:focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}
.tuner-color-row{grid-template-columns:72px 30px minmax(0,1fr)}
.tuner-inline-actions{display:flex;gap:7px;margin-top:8px}
.tuner-inline-actions button{flex:1;border:1px solid color-mix(in srgb,var(--text) 30%,transparent);border-radius:7px;background:transparent;color:var(--text);padding:6px 7px;font-size:10.5px;font-weight:530;transition:color 140ms ease,border-color 140ms ease,background-color 140ms ease,transform 135ms var(--ease-out)}
.tuner-inline-actions button:hover:not(:disabled),.tuner-inline-actions button:focus-visible:not(:disabled){border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}
.tuner-inline-actions button:active:not(:disabled){transform:scale(.975)}
.tuner-inline-actions button:disabled{opacity:.38;cursor:not-allowed}
.tuner-selection-actions{margin-top:12px}
.debug-actions{display:flex;gap:8px;margin-top:10px}
.debug-actions button{
  flex:1;border:1px solid color-mix(in srgb,var(--text) 38%,transparent);border-radius:7px;background:transparent;color:var(--text);
  padding:7px 8px;font-size:11px;font-weight:530;transition:color 140ms ease,border-color 140ms ease,transform 135ms var(--ease-out);
}
.debug-actions button:hover,.debug-actions button:focus-visible{border-color:var(--accent);color:var(--accent)}
.debug-actions button:active{transform:scale(.97)}

@keyframes field-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

@media(max-width:820px){
  :root{--top-pad:22px;--side-pad:22px;--hero-line-height:1.04;--hero-letter-spacing:-.055em;--hero-word-spacing:.015em;--hero-paragraph-gap:.72em;--home-edge:var(--hero-mobile-side-inset)}
  .home-view{padding:108px 0}
  .hero-copy{width:calc(100vw - var(--hero-mobile-side-inset) - var(--hero-mobile-side-inset));max-width:none;margin-left:var(--hero-mobile-side-inset);margin-right:var(--hero-mobile-side-inset)}
  .hero-copy p{font-size:clamp(22px,5.8vw,var(--hero-size));line-height:var(--hero-line-height);letter-spacing:var(--hero-letter-spacing);word-spacing:var(--hero-word-spacing)}

  /* Mobile radial layout: preserve the exact known-good /redesign anchor
     geometry. Only the label shadow remains removed by design. */
  .t-goo-anchor{top:-58px;right:calc(var(--home-edge) - 80px);height:310px}
  .t-goo-item[data-view-target="experience"]{--fx:-154px!important;--fy:-8px!important}
  .t-goo-item[data-view-target="education"]{--fx:-124px!important;--fy:28px!important}
  .t-goo-item[data-view-target="publications"]{--fx:-94px!important;--fy:64px!important}
  .t-goo-item[data-view-target="contact"]{--fx:-60px!important;--fy:100px!important}
  #gooeySettings{--fx:-22px!important;--fy:136px!important}
  .t-goo-label{
    right:calc(100% + 8px);padding:4px 7px;border-radius:999px;background:var(--bg);
    box-shadow:none;font-size:11px;line-height:1.05;
  }
  .settings-popover{top:126px;right:var(--home-edge)}
  .content-view{padding:102px var(--side-pad) 74px}
  .content-heading{margin-bottom:38px}.content-heading h2{font-size:min(var(--section-title-size),38px);line-height:.96}
  .content-heading .section-home{position:fixed;top:42px;right:calc(var(--home-edge) + 72px);z-index:66}
  .record{grid-template-columns:1fr;gap:13px;padding:21px 0 24px}
  .record-rail{flex-direction:row;justify-content:space-between;gap:18px}
  .record-body h3{font-size:min(var(--record-title-size),24px)}
  .record-copy p{font-size:var(--record-body-size);line-height:1.34;letter-spacing:-.04em;word-spacing:-.02em}
  .site-footer{left:var(--side-pad);bottom:15px;max-width:70vw}
  html:not([data-view="home"]) .site-footer{display:none}
  .field-row{grid-template-columns:1fr}
}
@media(max-width:520px){
  :root{--side-pad:20px}
  .settings-popover{width:min(296px,calc(100vw - 40px))}
  .contact-actions a,.contact-actions button{font-size:min(var(--contact-size),34px)}
  dialog.modal{border-radius:12px}
  .modal form{padding:18px}
}
@media(max-height:700px) and (min-width:821px){
  :root{--hero-size:clamp(28px,3vw,43px);--hero-paragraph-gap:.42em}
}



html[data-theme-transitioning="true"] body,
html[data-theme-transitioning="true"] .app-shell,
html[data-theme-transitioning="true"] .view,
html[data-theme-transitioning="true"] .settings-popover,
html[data-theme-transitioning="true"] dialog.modal{
  transition:background-color 240ms var(--ease-out),color 190ms ease,border-color 190ms ease;
}

@media(prefers-reduced-motion:reduce){
  .t-stagger-line,.view.is-entering .t-stagger-line,.view.is-entering.is-entering-active .t-stagger-line,.view.is-leaving .t-stagger-line{transition:none!important;opacity:1!important;transform:none!important;filter:none!important;will-change:auto!important}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;transition-duration:1ms!important;scroll-behavior:auto!important}
  .view.is-leaving,.view.is-entering,.view.is-entering.is-entering-active{transform:none!important;filter:none!important}
}
