:root{
  /* AkihiroLabs brand: navy primary, white background, charcoal text, cyan highlight */
  --bg:#ffffff; --bg2:#f5f7fb; --panel:#ffffff;
  --line:rgba(30,58,138,.12);
  --text:#1f2937; --muted:#5b6472;
  --accent:#1E3A8A; --accent2:#00A8CC; --accent-soft:rgba(30,58,138,.08);
  --danger:#dc2626;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:'Inter',sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,.logo{font-family:'Archivo',sans-serif}
a{color:inherit;text-decoration:none}
button{font-family:'Inter',sans-serif;cursor:pointer}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}

/* ---------- Icons ---------- */
.ico{width:1em;height:1em;display:block;flex:none}
.ico-txt{line-height:1}
.byte-mark{width:1em;height:1em;display:block;flex:none}

/* ---------- Nav ---------- */
nav{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:64px}
.logo{display:flex;align-items:center;gap:10px}
.logo .byte-mark{font-size:36px}
.logo .wm{font-weight:800;font-size:21px;letter-spacing:-.015em;color:var(--accent);line-height:1}
.logo .wm b{font-weight:800;color:var(--accent2);margin-left:.22em}
.logo .ears{transform-origin:32px 30px}
.logo:hover .ears{animation:earTwitch .5s ease}
.nav-links{display:flex;gap:28px;font-size:13.5px;color:var(--muted)}
.nav-links a:hover{color:var(--text)}
.nav-right{display:flex;align-items:center;gap:16px}
.lang-btn{background:none;border:1px solid var(--line);color:var(--muted);padding:6px 14px;border-radius:999px;font-size:12.5px;transition:.2s}
.lang-btn:hover{color:var(--text);border-color:var(--accent)}
.burger{display:none;background:none;border:0;color:var(--text);font-size:24px;padding:4px}

/* ---------- Hero ---------- */
.hero{position:relative;padding:150px 0 100px;background:
  radial-gradient(800px 420px at 70% 0%,rgba(0,168,204,.10),transparent 65%),var(--bg)}
.hero-grid{display:grid;grid-template-columns:1.6fr .8fr;gap:72px;align-items:center}
.eyebrow{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;letter-spacing:.18em;text-transform:uppercase;margin-bottom:20px}
.eyebrow::before{content:"";width:34px;height:2px;background:var(--accent)}
.hero h1{font-size:clamp(44px,6.6vw,88px);font-weight:800;line-height:1.02;letter-spacing:-.025em}
.hero h1 span{color:var(--accent2)}
.hero-sub{color:var(--muted);max-width:560px;margin-top:26px;font-size:17px}
.scroll-btn{margin-top:40px;display:inline-flex;width:56px;height:56px;border-radius:50%;background:var(--accent);align-items:center;justify-content:center;font-size:22px;color:#fff;transition:.25s}
.scroll-btn:hover{transform:translateY(4px)}
.hero-side{display:flex;flex-direction:column;gap:26px}
.side-block{border-top:1px solid var(--line);padding-top:16px}
.side-block h3{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;margin-bottom:10px}
.side-block p{color:var(--muted);font-size:13.5px}
.side-block a{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid var(--accent);padding-bottom:3px}
.side-block a:hover{color:var(--accent)}
.socials{display:flex;gap:12px;margin-top:4px}
.socials a{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--accent);transition:.2s}
.socials a:hover{border-color:var(--accent);background:var(--accent);color:#fff}

/* ---------- Sections ---------- */
section{padding:96px 0;border-top:1px solid var(--line)}
.sec-label{color:var(--accent);font-size:12px;letter-spacing:.2em;text-transform:uppercase;margin-bottom:14px}
.sec-label::before{content:"/ "}
h2{font-size:clamp(28px,3.8vw,44px);font-weight:800;letter-spacing:-.015em;line-height:1.15}

.about-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:start;margin-top:8px}
.about-left p{color:var(--muted);margin-top:20px;font-size:15px;white-space:pre-line}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.stat .num{font-family:'Archivo';font-size:60px;font-weight:800;line-height:1;color:var(--text)}
.stat .num em{color:var(--accent);font-style:normal}
.stat .lbl{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:6px}
.stat p{color:var(--muted);font-size:13.5px;margin-top:14px}

.strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:26px 0;background:var(--bg2)}
.strip-in{display:flex;align-items:center;gap:40px;flex-wrap:wrap}
.strip-lbl{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);cursor:default;user-select:none}
.strip-items{display:flex;gap:36px;flex-wrap:wrap;font-family:'Archivo';font-weight:700;color:#334155;font-size:15px}
.strip-items span{display:inline-flex;align-items:center;gap:9px;opacity:.75;transition:.2s;cursor:default;white-space:nowrap}
.strip-items .ico,.strip-items .byte-mark{font-size:18px;color:var(--accent)}
.strip-items span:hover{opacity:1;color:var(--accent)}

/* Icon tiles (skills, apps, lab) */
.skill .ic,.proj .ic,.lab .ic{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:12px;background:var(--accent-soft);color:var(--accent);transition:transform .3s ease,background .3s ease,color .3s ease}

.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:44px}
.skill{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px 22px;transition:.25s}
.skill:hover{border-color:var(--accent);transform:translateY(-4px)}
.skill .ic{width:46px;height:46px;font-size:22px}
.skill:hover .ic{background:var(--accent);color:#fff}
.skill h3{font-size:15.5px;margin:16px 0 6px}
.skill p{color:var(--muted);font-size:13px}

.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px}
.proj{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px 24px;display:flex;flex-direction:column;transition:.25s}
.proj:hover{border-color:var(--accent);transform:translateY(-5px)}
.proj .top{display:flex;justify-content:space-between;align-items:center}
.proj .ic{width:56px;height:56px;font-size:28px;border-radius:14px}
.proj .tag{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);padding:4px 10px;border-radius:999px}
.proj h3{font-size:18px;margin:18px 0 8px}
.proj p{color:var(--muted);font-size:13.5px;flex:1}
.proj .tech{margin-top:18px;display:flex;gap:8px;flex-wrap:wrap}
.proj .tech span{font-size:11px;color:var(--muted);border:1px solid var(--line);padding:3px 9px;border-radius:999px}

.contact{text-align:center;background:radial-gradient(500px 260px at 50% 100%,rgba(0,168,204,.10),transparent 70%),var(--bg)}
.contact p{color:var(--muted);max-width:480px;margin:18px auto 0}
.cta{display:inline-flex;align-items:center;gap:10px;margin-top:34px;background:var(--accent);color:#fff;padding:15px 38px;border-radius:999px;font-family:'Archivo';font-weight:700;font-size:15px;transition:.25s}
.cta:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(30,58,138,.28)}

footer{border-top:1px solid var(--line);padding:28px 0;color:var(--muted);font-size:13px}
.foot-in{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}
#footLeft{display:inline-flex;align-items:center;gap:8px}
#footLeft .byte-mark{font-size:22px}

.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* ---------- App cards ---------- */
.proj .logo-img{width:56px;height:56px;border-radius:14px;display:block;box-shadow:0 6px 16px rgba(30,58,138,.18)}
.proj .status{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);padding:3px 10px;border-radius:999px}
.proj .links{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.proj .links a{font-size:12.5px;font-weight:600;padding:8px 14px;border-radius:999px;border:1px solid var(--line);transition:.2s}
.proj .links a.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.proj .links a:hover{border-color:var(--accent);transform:translateY(-2px)}
.proj .links a.primary:hover{box-shadow:0 8px 20px rgba(30,58,138,.25)}
.proj{box-shadow:0 1px 2px rgba(30,58,138,.04)}
.lab-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:28px}
.lab{display:flex;gap:14px;align-items:flex-start;background:var(--bg2);border:1px dashed var(--line);border-radius:14px;padding:18px}
.lab .ic{width:40px;height:40px;font-size:20px;border-radius:10px;background:#fff}
.lab h3{font-size:15px;margin-bottom:4px}
.lab p{color:var(--muted);font-size:13px}
.sub-head{font-family:'Archivo',sans-serif;font-size:20px;font-weight:800;margin-top:72px}
.sub-head small{display:block;font-family:'Inter',sans-serif;font-weight:400;font-size:14px;color:var(--muted);margin-top:4px}

/* ---------- Animations ---------- */
@keyframes fadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes bounceY{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}
@keyframes scrollX{to{transform:translateX(-50%)}}
@keyframes underline{from{width:0}to{width:34px}}
@keyframes earTwitch{0%,100%{transform:rotate(0)}25%{transform:rotate(-6deg)}60%{transform:rotate(5deg)}}
.hero .eyebrow{animation:fadeUp .7s .05s both}
.hero .eyebrow::before{animation:underline .8s .5s both}
.hero h1{animation:fadeUp .8s .2s both}
.hero-sub{animation:fadeUp .8s .38s both}
.hero .scroll-btn{animation:fadeUp .7s .55s both, bounceY 2.4s 1.6s ease-in-out infinite}
.hero-side .side-block:nth-child(1){animation:fadeUp .7s .45s both}
.hero-side .side-block:nth-child(2){animation:fadeUp .7s .6s both}
.hero-side .side-block:nth-child(3){animation:fadeUp .7s .75s both}
.skill:hover .ic,.proj:hover .ic{transform:scale(1.1) rotate(-6deg)}
.marquee{overflow:hidden;flex:1;min-width:0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee .strip-items{flex-wrap:nowrap;width:max-content;gap:52px;animation:scrollX 24s linear infinite}
.marquee:hover .strip-items{animation-play-state:paused}
@media (prefers-reduced-motion: reduce){
  *{animation:none !important}
  .reveal{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* ---------- Modals & Admin ---------- */
.overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(4px);z-index:90;display:none;align-items:center;justify-content:center;padding:20px}
.overlay.show{display:flex}
.modal{background:var(--bg2);border:1px solid var(--line);border-radius:16px;padding:34px;width:100%;max-width:380px;text-align:center}
.modal h3{font-size:20px;margin-bottom:6px;display:flex;align-items:center;justify-content:center;gap:10px}
.modal h3 .byte-mark{font-size:30px}
.modal p{color:var(--muted);font-size:13px;margin-bottom:20px}
.modal input{width:100%;margin-bottom:10px;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:12px 14px;font-size:16px;text-align:center;letter-spacing:.08em}
.modal input:focus{outline:none;border-color:var(--accent)}
.modal .hash-out{text-align:left;margin-top:14px}
.modal .hash-out p{font-size:12.5px;margin-bottom:8px}
.modal .hash-out code{background:var(--accent-soft);padding:1px 5px;border-radius:4px}
.modal textarea{width:100%;font:12px/1.4 ui-monospace,Menlo,monospace;background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:8px;color:var(--text);resize:none}
.modal .err{color:var(--danger);font-size:12.5px;margin-top:10px;min-height:16px}
.modal .btn-row{display:flex;gap:10px;margin-top:18px}
.btn{flex:1;padding:11px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:14px;transition:.2s}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.btn.danger{color:var(--danger)}
.btn.danger:hover{border-color:var(--danger)}

/* Admin panel */
.admin{position:fixed;inset:0;z-index:100;background:var(--bg);display:none;flex-direction:column}
.admin.show{display:flex}
.admin-head{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--line);background:var(--bg2)}
.admin-head h3{font-size:16px;display:flex;align-items:center;gap:8px}
.admin-head .dot{width:8px;height:8px;border-radius:50%;background:#37d67a}
.admin-tabs{display:flex;gap:4px;padding:10px 22px 0;border-bottom:1px solid var(--line);background:var(--bg2);overflow-x:auto}
.admin-tabs button{background:none;border:none;color:var(--muted);padding:10px 16px;font-size:13.5px;border-bottom:2px solid transparent;white-space:nowrap}
.admin-tabs button.on{color:var(--text);border-color:var(--accent)}
.admin-body{flex:1;overflow-y:auto;padding:26px 22px 90px}
.admin-body .inner{max-width:820px;margin:0 auto}
.fgroup{margin-bottom:18px}
.fgroup label{display:block;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.fgroup input,.fgroup textarea,.fgroup select{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:10px 12px;font-size:14px;font-family:'Inter',sans-serif}
.fgroup textarea{min-height:74px;resize:vertical}
.fgroup input:focus,.fgroup textarea:focus,.fgroup select:focus{outline:none;border-color:var(--accent)}
.icon-pick{display:flex;align-items:center;gap:12px}
.icon-pick .prev{width:42px;height:42px;flex:none;border-radius:10px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:22px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.card-edit{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px}
.card-edit .ce-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.card-edit .ce-head strong{font-size:14px}
.mini{padding:6px 12px;font-size:12px;border-radius:8px;flex:none}
.admin-foot{position:fixed;bottom:0;left:0;right:0;background:var(--bg2);border-top:1px solid var(--line);padding:12px 22px;display:flex;gap:10px;justify-content:flex-end;z-index:101}
.admin-foot .status{margin-right:auto;color:var(--muted);font-size:12.5px;align-self:center}
.add-btn{width:100%;padding:13px;border:1px dashed var(--line);background:none;color:var(--muted);border-radius:12px;font-size:14px;transition:.2s}
.add-btn:hover{color:var(--accent);border-color:var(--accent)}

@media(max-width:1100px){
  .proj-grid{grid-template-columns:1fr 1fr}
  .lab-grid{grid-template-columns:1fr 1fr}
  .hero-grid{grid-template-columns:1.3fr .9fr;gap:48px}
}
@media(max-width:860px){
  .nav-links{display:none;position:absolute;top:64px;left:0;right:0;background:var(--bg2);flex-direction:column;gap:0;border-bottom:1px solid var(--line)}
  .nav-links.open{display:flex}
  .nav-links a{padding:16px 24px;border-top:1px solid var(--line)}
  .burger{display:block}
  .hero{padding:120px 0 70px}
  .hero-grid,.about-grid{grid-template-columns:1fr;gap:40px}
  .skills-grid{grid-template-columns:1fr 1fr}
  .proj-grid{grid-template-columns:1fr}
  .lab-grid{grid-template-columns:1fr}
  .frow{grid-template-columns:1fr}
}
@media(max-width:480px){
  .skills-grid{grid-template-columns:1fr}
  .logo .wm{font-size:19px}
  .logo .byte-mark{font-size:32px}
}

/* ---------- Admin page (/admin) ---------- */
.admin-page{background:var(--bg2)}
a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.admin-head h3 .byte-mark,.modal h3 .byte-mark{font-size:28px}
.head-actions{display:flex;gap:8px}
.modal.versions{max-width:480px;text-align:left}
.modal.versions h3{justify-content:flex-start}
.ver-list{display:flex;flex-direction:column;gap:8px}
.ver-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.ver-row .when{flex:1;font-size:13.5px}
.ver-row .when small{display:block;color:var(--muted);font-size:12px}
.ver-row .live{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#15803d;background:#dcfce7;padding:3px 9px;border-radius:999px}
.ver-empty{color:var(--muted);font-size:13px}
.btn:disabled{opacity:.6;cursor:wait}
@media(max-width:640px){
  .admin-head{padding:12px 14px}
  .admin-foot{flex-wrap:wrap;padding:10px 12px;gap:8px}
  .admin-foot .status{flex-basis:100%;margin-right:0}
  .admin-foot .btn{flex:1 1 auto;white-space:nowrap}
  .admin-body{padding:20px 14px 170px}
}
