:root {
  --bg:#fff;
  --fg:#050505;
  --muted:#8a8a8a;
  --line:#e7e7e7;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--fg)}
html{cursor:none}
body{
  min-height:100vh;
  display:grid;
  grid-template-rows:auto 1fr auto;
  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  overflow-x:hidden;
}
a{color:inherit}
.masthead,.footer{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:24px 28px;font-size:10px;letter-spacing:.12em}
.masthead{border-bottom:1px solid var(--line)}
.identity{display:grid;text-decoration:none;line-height:.95;font-size:12px;font-weight:700;letter-spacing:-.06em}
.meta{color:var(--muted);text-align:right}
.stage{position:relative;display:grid;place-items:center;padding:58px 28px 72px;min-height:68vh}
.projects{display:grid;justify-items:center;gap:3px;position:relative;z-index:2}
.project{
  position:relative;
  display:inline-block;
  text-decoration:none;
  font-size:clamp(36px,7.8vw,118px);
  line-height:.86;
  font-weight:500;
  letter-spacing:-.085em;
  transition:transform .22s ease,opacity .22s ease,font-variation-settings .22s ease;
}
.project::before,.project::after{position:absolute;top:50%;transform:translateY(-50%);font-size:9px;letter-spacing:.08em;color:var(--muted);opacity:0;transition:opacity .18s ease}
.project::before{content:attr(data-index);right:calc(100% + 16px)}
.project::after{content:attr(data-status);left:calc(100% + 16px);white-space:nowrap}
.projects:hover .project{opacity:.18}
.projects .project:hover{opacity:1;transform:translateX(8px)}
.project:hover::before,.project:hover::after{opacity:1}
.project[aria-disabled="true"]{cursor:none}
.signal{position:absolute;inset:0;pointer-events:none;overflow:hidden;opacity:.45}
.signal span{position:absolute;background:var(--line)}
.signal span:nth-child(1){width:1px;height:32%;left:12%;top:18%}
.signal span:nth-child(2){height:1px;width:22%;right:5%;top:24%}
.signal span:nth-child(3){width:1px;height:21%;right:18%;bottom:11%}
.signal span:nth-child(4){height:1px;width:15%;left:8%;bottom:18%}
.signal span:nth-child(5){width:7px;height:7px;border:1px solid var(--fg);background:transparent;left:20%;top:68%;animation:blink 2.2s steps(1) infinite}
.readout{position:absolute;left:28px;bottom:22px;display:flex;gap:12px;color:var(--muted);font-size:9px;letter-spacing:.1em}
.readout span+span::before{content:"/";margin-right:12px;color:var(--line)}
.footer{align-items:center;border-top:1px solid var(--line);color:var(--muted)}
.pulse{color:var(--fg)}
.cursor{position:fixed;left:0;top:0;width:24px;height:24px;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);mix-blend-mode:difference}
.cursor::before,.cursor::after,.cursor span::before,.cursor span::after{content:"";position:absolute;background:#fff}
.cursor::before{width:100%;height:1px;left:0;top:50%}.cursor::after{height:100%;width:1px;top:0;left:50%}
.cursor span::before{width:3px;height:3px;left:50%;top:50%;transform:translate(-50%,-50%)}
.cursor.is-link{transform:translate(-50%,-50%) rotate(45deg);width:30px;height:30px}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:.1}}
@media (pointer:coarse){html{cursor:auto}.cursor{display:none}}
@media (max-width:700px){
  .masthead,.footer{padding:18px 16px}.stage{padding:44px 16px 64px;min-height:72vh}.meta{max-width:150px;line-height:1.5}
  .projects{gap:9px}.project{font-size:clamp(35px,13vw,68px)}
  .project::before,.project::after{display:none}.projects:hover .project{opacity:1}.projects .project:hover{transform:none}
  .readout{left:16px;bottom:18px}.signal span:nth-child(1),.signal span:nth-child(2),.signal span:nth-child(3),.signal span:nth-child(4){opacity:.55}
}

.contact{color:inherit;text-decoration:none}.contact:hover{color:var(--fg)}

.tools-link{color:inherit;text-decoration:none}.tools-link:hover{color:var(--fg)}
.contacts{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}
.contacts>span{color:var(--muted)}
.signal-contact{border:0;background:none;padding:0;font:inherit;letter-spacing:inherit;color:inherit;cursor:none;text-transform:uppercase}
.signal-contact.copied::after{content:"  COPIED";color:var(--fg)}
@media (pointer:coarse){.signal-contact{cursor:pointer}}
@media (max-width:700px){
  .footer{display:grid;grid-template-columns:1fr auto;align-items:center}
  .contacts{grid-column:1 / -1;grid-row:1;justify-content:flex-start;gap:10px}
  .footer>span:first-child{grid-column:1;grid-row:2}
  .pulse{display:none}
  #clock{grid-column:2;grid-row:2}
}


/* v9 footer contacts */
.contacts {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
}
.contact-arrow,
.contact-slash {
  color: var(--muted);
}
.contacts .contact,
.contacts button.contact {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  text-decoration: underline;
  text-underline-offset: .18em;
  cursor: pointer;
}
.pulse::first-letter {
  color: #7CFC00;
}
.pulse {
  font-size: 1em;
}

.online-dot {
  color: #7CFC00;
  font-size: 1.35em;
  line-height: 0;
  vertical-align: -0.06em;
}


/* v10: Signal identical to Proton + acid green pulsing online indicator */
.contacts .signal-contact {
  appearance: none !important;
  -webkit-appearance: none !important;
  border: 0 !important;
  outline: 0;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  color: inherit !important;
  font: inherit !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  text-decoration: underline !important;
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
  cursor: pointer;
}

.online-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-right: 7px;
  border-radius: 50%;
  background: #7CFC00;
  color: transparent;
  font-size: 0;
  vertical-align: middle;
  box-shadow: 0 0 0 0 rgba(124,252,0,.65);
  animation: onlinePulse 1.8s ease-out infinite;
}

@keyframes onlinePulse {
  0% {
    box-shadow: 0 0 0 0 rgba(124,252,0,.70);
    transform: scale(1);
  }
  55% {
    box-shadow: 0 0 0 7px rgba(124,252,0,0);
    transform: scale(1.08);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(124,252,0,0);
    transform: scale(1);
  }
}


/* ===========================
   V12 MOBILE PORTFOLIO FIX
   =========================== */

@media (max-width: 700px) {
  html, body {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
  }

  body { min-height: 100svh; }

  .top {
    min-height: auto;
    padding: 18px 20px 16px;
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: start;
    gap: 16px;
  }

  .brand {
    font-size: 18px;
    line-height: .82;
    letter-spacing: -0.06em;
    max-width: 100px;
  }

  .meta {
    font-size: 10px;
    line-height: 1.55;
    letter-spacing: .20em;
    text-align: right;
    max-width: 190px;
  }

  .stage {
    min-height: auto;
    padding: 54px 18px 46px;
    display: block;
  }

  .project-list {
    width: 100%;
    max-width: none;
    margin: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }

  .project {
    width: fit-content;
    max-width: calc(100vw - 36px);
    box-sizing: border-box;
    font-size: clamp(42px, 12.2vw, 62px);
    line-height: .86;
    letter-spacing: -0.075em;
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    margin: 0;
    padding: 0;
  }

  .project:nth-child(1) { align-self: flex-end; }
  .project:nth-child(2) { align-self: flex-start; margin-top: 8px; max-width: 82vw; }
  .project:nth-child(3) { align-self: flex-end; margin-top: 18px; }
  .project:nth-child(4) { align-self: flex-end; margin-top: 6px; }
  .project:nth-child(5) { align-self: flex-end; margin-top: 10px; }
  .project:nth-child(6) { align-self: flex-end; margin-top: 12px; }
  .project:nth-child(7) { align-self: flex-end; margin-top: 12px; }
  .project:nth-child(8) { align-self: flex-end; margin-top: 10px; }

  .readout {
    padding: 18px 20px;
    font-size: 10px;
    letter-spacing: .18em;
    min-height: 52px;
    box-sizing: border-box;
  }

  .footer {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "contacts contacts"
      "place clock";
    gap: 20px 12px;
    align-items: center;
    padding: 18px 20px 22px;
    font-size: 10px;
    line-height: 1.3;
    letter-spacing: .18em;
  }

  .footer > span:first-child { grid-area: place; }

  .contacts {
    grid-area: contacts;
    justify-self: start;
    display: inline-flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: .48rem;
    white-space: nowrap;
  }

  .pulse { display: none; }

  #clock {
    grid-area: clock;
    justify-self: end;
  }

  .online-dot {
    width: 9px;
    height: 9px;
  }

  .crosshair, .axis-x, .axis-y, .cursor { pointer-events: none; }
}

@media (max-width: 390px) {
  .project { font-size: clamp(38px, 11.7vw, 52px); }

  .stage {
    padding-left: 16px;
    padding-right: 16px;
  }

  .project:nth-child(2) { max-width: 88vw; }

  .meta {
    max-width: 160px;
    font-size: 9px;
  }

  .footer, .readout {
    padding-left: 16px;
    padding-right: 16px;
  }
}

@media (max-width: 900px) and (orientation: landscape) {
  .stage {
    padding-top: 30px;
    padding-bottom: 30px;
  }

  .project { font-size: clamp(34px, 7.5vw, 54px); }
}

@media (max-width:700px){.readout{display:none!important;}}
