/* ============================================================
   RakudaLab — Redesign overlay  ("Instrument Panel" theme)
   Layered on top of styles.css (Bootstrap) + Vuetify.
   Keeps existing markup/structure; restyles to dark/technical.
   Tokens mirror design-system/tokens.css (Claude Design source).
   ============================================================ */
:root{
  color-scheme: dark;
  --bg:#0a0e14; --bg-2:#0d131c; --panel:#0f1824; --panel-2:#121e2c;
  --line:#1c2a3a; --line-2:#26384c;
  --ink:#e8eef6; --ink-dim:#9fb0c3; --ink-faint:#63758a;
  --cyan:#5ad0ff; --cyan-deep:#2a9fd6; --amber:#ffbe5c; --lime:#8ef0b8; --violet:#b79dff;
  --radius:14px;
  --mono: ui-monospace,"SF Mono","JetBrains Mono","Cascadia Code",Menlo,Consolas,monospace;
  --sans: "Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}

/* ---------- base ---------- */
html,body{background:var(--bg);}
body#page-top{color:var(--ink);font-family:var(--sans);}
.v-application{font-family:var(--sans)!important;background:var(--bg)!important;color:var(--ink)!important;}
.v-application p{margin-bottom:1rem;}
::selection{background:color-mix(in srgb,var(--cyan) 40%,transparent);}

/* faint global measurement grid */
body#page-top::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:
    linear-gradient(var(--line) 1px,transparent 1px),
    linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:64px 64px;opacity:.10;
}
#app{position:relative;z-index:1;}

/* mono utility + eyebrow used by new markup */
.mono{font-family:var(--mono);}
.eyebrow{
  font-family:var(--mono);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cyan);display:inline-flex;align-items:center;gap:9px;margin-bottom:.25rem;
}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--cyan);opacity:.7;}
.eyebrow.center{justify-content:center;}

/* ---------- navbar ---------- */
#mainNav{
  background:color-mix(in srgb,var(--bg) 82%,transparent)!important;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  box-shadow:none!important;border-bottom:1px solid var(--line);
}
#mainNav.navbar-shrink{background:color-mix(in srgb,var(--bg) 92%,transparent)!important;}
#mainNav .navbar-brand{
  font-family:var(--mono)!important;color:var(--ink)!important;font-weight:600;
  display:inline-flex;align-items:center;gap:10px;
}
#mainNav .navbar-brand::before{
  content:"";width:9px;height:9px;border-radius:2px;background:var(--cyan);box-shadow:0 0 12px var(--cyan);
}
#mainNav .navbar-nav .nav-item .nav-link{
  font-family:var(--mono)!important;font-size:.82rem;letter-spacing:.02em;
  color:var(--ink-dim)!important;text-transform:none!important;
}
#mainNav .navbar-nav .nav-item .nav-link:hover,
#mainNav .navbar-nav .nav-item .nav-link.active{color:var(--cyan)!important;}
#mainNav .navbar-toggler{border-color:var(--line-2);}
#mainNav .navbar-toggler-icon{filter:invert(1) hue-rotate(180deg) brightness(1.4);}

/* ---------- masthead / hero ---------- */
header.masthead2{
  background:
    radial-gradient(120% 90% at 78% 8%, #10202e 0%, transparent 55%),
    radial-gradient(90% 80% at 10% 100%, #101b28 0%, transparent 60%),
    var(--bg)!important;
  border-bottom:1px solid var(--line);
}
header.masthead2 svg#svg-bg{opacity:.9;}
/* fade the data-viz into the ground at the edges */
header.masthead2::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,transparent 45%,var(--bg) 97%);
}
/* Align hero content with the navbar container.
   styles.css absolutely-positions this container, which drops the .container
   auto-centering; left/right:0 restores it. And the row's justify-content-center
   pushed col-lg-8 inward, so the hero text no longer lined up with the brand. */
header.masthead2 div.container{z-index:2;left:0;right:0;}
header.masthead2 .row{justify-content:flex-start!important;}
header.masthead2 h1,header.masthead2 .h1{
  font-family:var(--sans)!important;font-weight:800!important;letter-spacing:-.025em;
  line-height:1.03;color:var(--ink)!important;text-wrap:balance;
}
header.masthead2 h1 .grad{
  background:linear-gradient(100deg,var(--cyan),var(--lime) 60%,var(--amber));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
header.masthead2 .text-white-75{color:var(--ink-dim)!important;}
/* hero readout strip */
.hero-readout{
  display:flex;gap:26px;flex-wrap:wrap;margin-top:1.6rem;
  font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;color:var(--ink-faint);
}
.hero-readout b{color:var(--cyan);font-weight:600;}

/* ---------- section scaffolding ---------- */
.page-section{background:transparent;}
#profile{background:var(--bg-2)!important;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
#backgrounds,#contact{background:var(--bg);border-bottom:1px solid var(--line);}
h2,.v-application h2{color:var(--ink);font-weight:750;letter-spacing:-.02em;}
hr.divider{background-color:var(--cyan)!important;max-width:3.25rem;height:2px;border-radius:2px;}
hr.divider-light{background-color:var(--cyan)!important;}

/* ---------- profile ---------- */
#profile .text-white,#profile h2,#profile h4,#profile p{color:var(--ink)!important;}
#profile img.rounded-circle{
  border-radius:20px!important;border:1px solid var(--line-2);padding:5px;background:var(--panel-2);
  box-shadow:0 10px 40px -18px rgba(0,0,0,.8);
}
#profile .lead{color:var(--cyan)!important;font-family:var(--mono);font-size:.95rem;}
#profile p:not(.lead){color:var(--ink-dim)!important;}

/* ---------- backgrounds → capability cards ---------- */
#backgrounds .row > [class*="col-"]{margin-top:1.25rem;}
#backgrounds .row > [class*="col-"] > .mt-5{
  margin-top:0!important;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);padding:2rem 1.6rem;height:100%;text-align:left;
  position:relative;overflow:hidden;transition:background .25s,transform .25s,border-color .25s;
}
#backgrounds .row > [class*="col-"] > .mt-5::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--cyan);
  transform:scaleY(0);transform-origin:top;transition:transform .3s;
}
#backgrounds .row > [class*="col-"] > .mt-5:hover{background:var(--panel-2);transform:translateY(-4px);border-color:var(--line-2);}
#backgrounds .row > [class*="col-"] > .mt-5:hover::before{transform:scaleY(1);}
#backgrounds [class*="bi-"]{color:var(--cyan)!important;}
#backgrounds h3{color:var(--ink);font-weight:700;}
#backgrounds .text-muted{color:var(--ink-dim)!important;}
#backgrounds a{color:var(--cyan);}

/* ---------- portfolio / works ---------- */
#portfolio{background:var(--bg);border-bottom:1px solid var(--line);padding-bottom:0;}
#portfolio .portfolio-box{border:1px solid var(--line);}
#portfolio .portfolio-box .portfolio-box-caption{
  background:linear-gradient(180deg,rgba(10,14,20,.55),rgba(10,14,20,.94))!important;
}
#portfolio .portfolio-box .portfolio-box-caption .project-category{
  color:var(--cyan)!important;font-family:var(--mono);letter-spacing:.08em;
}
#portfolio .portfolio-box .portfolio-box-caption .project-name{color:var(--ink)!important;font-weight:600;}
#portfolio .portfolio-box:hover{outline:1px solid var(--cyan-deep);}

/* ---------- buttons ---------- */
.btn-primary,.btn-xl.btn-primary{
  background:linear-gradient(180deg,color-mix(in srgb,var(--cyan) 18%,transparent),transparent)!important;
  border:1px solid var(--cyan-deep)!important;color:var(--ink)!important;
  font-family:var(--mono)!important;letter-spacing:.04em!important;border-radius:10px!important;
  text-transform:none!important;transition:transform .2s,box-shadow .2s,border-color .2s;
}
.btn-primary:hover,.btn-xl.btn-primary:hover{
  transform:translateY(-2px);box-shadow:0 8px 30px -10px var(--cyan-deep);border-color:var(--cyan)!important;
}

/* ---------- contact ---------- */
#contact h2{color:var(--ink);}
#contact,#contact a{color:var(--ink-dim);}
#contact a{color:var(--cyan);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s;}
#contact a:hover{border-color:var(--cyan);}

/* ---------- footer ---------- */
footer.bg-light{background:var(--bg-2)!important;border-top:1px solid var(--line);}
footer .text-muted{color:var(--ink-faint)!important;font-family:var(--mono);letter-spacing:.04em;}

/* ---------- Vuetify dialog (works detail) ---------- */
.v-application .v-dialog .v-card{background:var(--panel)!important;color:var(--ink)!important;border:1px solid var(--line-2);}
.v-application .v-card__title{color:var(--ink)!important;}
.v-application .v-card__subtitle{color:var(--cyan)!important;font-family:var(--mono)!important;}
.v-application .v-card__text{color:var(--ink-dim)!important;}
.v-application .v-dialog .v-card a{color:var(--cyan)!important;}
.v-application .v-card__text h6{color:var(--ink)!important;}
.v-application .v-btn{color:var(--ink-dim)!important;}
.v-application .v-avatar{border:1px solid var(--line);border-radius:10px!important;}

/* ---------- i18n (JA / EN toggle) ---------- */
/* paired .l10n-en / .l10n-ja elements; root .lang-* decides which shows */
.lang-en .l10n-ja{display:none!important;}
.lang-ja .l10n-en{display:none!important;}
/* segmented language switch in navbar — current state is always visible */
#mainNav .lang-switch{
  --opt-w:56px;
  position:relative;display:inline-flex;align-items:center;
  padding:3px;margin-left:.6rem;border:1px solid var(--line-2);border-radius:999px;
  background:var(--panel);font-family:var(--mono);
}
#mainNav .lang-switch .thumb{
  position:absolute;top:3px;bottom:3px;left:3px;width:var(--opt-w);
  border-radius:999px;background:color-mix(in srgb,var(--cyan) 20%,transparent);
  border:1px solid var(--cyan);
  transition:transform .28s cubic-bezier(.22,.61,.36,1);
}
#mainNav .lang-switch.is-en .thumb{transform:translateX(var(--opt-w));}
#mainNav .lang-switch .lang-opt{
  position:relative;z-index:1;width:var(--opt-w);
  background:none;border:0;cursor:pointer;line-height:1;
  padding:.34rem 0;font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;
  color:var(--ink-faint);transition:color .2s;
}
#mainNav .lang-switch .lang-opt:hover{color:var(--ink-dim);}
#mainNav .lang-switch .lang-opt[aria-pressed="true"]{color:var(--cyan);}
#mainNav .lang-switch .lang-opt:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:999px;}
@media(max-width:991px){
  #mainNav .lang-switch{margin:.5rem 0 0;}
}
/* keep JA text in the design body font (mono only where intended) */
.lang-ja body,.lang-ja{word-break:normal;}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;}
}
