/* 한칸스튜디오 공용 스타일
   흑백 바탕에 라임 하나만 포인트로 쓴다. 본문 글자에는 라임을 쓰지 않는다.
   모서리는 모두 각지게(픽셀), 누를 수 있는 것은 2px 테두리 + 각진 그림자로 게임 버튼처럼 만든다. */
:root{
  --bg:#FFFFFF;
  --soft:#F4F4F1;
  --ink:#111111;
  --ink-2:#7C7C7C;
  --line:#E4E4E0;
  --drop:#111111;        /* 각진 그림자 */
  --accent:#A8D848;      /* LifeSim 아이콘 계단색 */
  --accent-ink:#5E8A12;  /* 흰 바탕 위 작은 표시(체크)용으로 어둡게 */
  --accent-hero:#5727B7; /* 첫 화면 글자층은 difference로 섞이므로, 흰 바탕에서 라임으로 보이게 뒤집은 값 */
  --sans:"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --code:"Roboto Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){--bg:#0E0E0E;--soft:#181818;--ink:#EDEDED;--ink-2:#8C8C8C;--line:#262626;--drop:#3A3A3A;--accent-ink:#A8D848;--accent-hero:#B6E656;color-scheme:dark}
}
:root[data-theme="dark"]{--bg:#0E0E0E;--soft:#181818;--ink:#EDEDED;--ink-2:#8C8C8C;--line:#262626;--drop:#3A3A3A;--accent-ink:#A8D848;--accent-hero:#B6E656;color-scheme:dark}

/* ── 기본 ── */
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.7;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;overflow-x:clip}
h1,h2,h3,p{margin:0}
h1,h2,h3{text-wrap:balance}
a{color:inherit;text-underline-offset:3px}
img{max-width:100%}
[hidden]{display:none!important}
::selection{background:var(--accent);color:#111}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{max-width:1040px;margin:0 auto;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
.muted{color:var(--ink-2)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.ex{font-family:var(--code);font-size:10px;font-weight:500;letter-spacing:.12em;color:var(--ink-2);border:1px solid var(--line);padding:1px 6px;margin-left:8px;vertical-align:middle;white-space:nowrap}
.quest-tag{font-family:var(--code);font-size:12px;font-weight:500;letter-spacing:.16em;color:var(--ink-2)}
@keyframes caret{50%{opacity:0}}

/* ── 누를 수 있는 것: 2px 테두리 + 각진 그림자. 올리면 떠오르고 라임, 누르면 꾹 ── */
.btn,.skill button,.filters button{font-family:var(--sans);font-weight:700;font-size:14px;text-decoration:none;display:inline-block;cursor:pointer;border:2px solid var(--ink);border-radius:0;background:var(--bg);color:var(--ink);padding:9px 16px;box-shadow:3px 3px 0 var(--drop);transition:transform .08s steps(2),box-shadow .08s steps(2),background .08s steps(2)}
.btn.fill{background:var(--ink);color:var(--bg)}
.btn:hover,.skill button:hover:hover,.filters button:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--drop);background:var(--accent);color:#111;border-color:#111}
.btn:active,.skill button:active:active,.filters button:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}

/* ── 상단 ── */
.top{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:2px solid var(--ink)}
.head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:14px;flex-wrap:wrap}
/* 로고: 굵은 "한칸" + 라임 블록 커서 한 칸 + 작은 STUDIO */
.name{display:inline-flex;align-items:center;font-size:22px;letter-spacing:-.05em;text-decoration:none}
.name .wm{font-weight:900;line-height:1}
.mark{display:inline-block;width:.38em;height:.82em;margin:0 .32em 0 .1em;background:var(--accent)}
.name:hover .mark{animation:caret 1s steps(1) infinite}
.name .studio{font-family:var(--code);font-size:10px;font-weight:500;letter-spacing:.22em}
.links{display:flex;gap:20px;font-size:14px;flex-wrap:wrap;margin-left:auto}
.lang{font-family:var(--code);font-size:12px;font-weight:500;letter-spacing:.08em;text-decoration:none;color:var(--ink);height:34px;display:grid;place-items:center;padding:0 9px;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--drop);transition:transform .08s steps(2),box-shadow .08s steps(2),background .08s steps(2)}
.lang:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--drop);background:var(--accent);color:#111;border-color:#111}
@media (max-width:640px){.head{gap:10px 8px}.head .links{order:3;width:100%;margin-left:0;gap:16px}.head .lang{margin-left:auto}}
.theme{width:34px;height:34px;flex:none;display:grid;place-items:center;cursor:pointer;border:2px solid var(--ink);border-radius:0;background:var(--bg);color:var(--ink);box-shadow:3px 3px 0 var(--drop);padding:0;transition:transform .08s steps(2),box-shadow .08s steps(2),background .08s steps(2)}
.theme:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--drop);background:var(--accent);color:#111;border-color:#111}
.theme:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}
.theme{position:relative}
.theme::before{content:"";width:14px;height:14px;background:currentColor}
.theme::after{content:"";position:absolute;left:13px;top:6px;width:9px;height:9px;background:inherit}
.theme.is-dark::after{content:none}
.theme.is-dark::before{width:12px;height:12px;background:transparent;box-shadow:0 0 0 2px currentColor,-7px -7px 0 -5px currentColor,7px -7px 0 -5px currentColor,-7px 7px 0 -5px currentColor,7px 7px 0 -5px currentColor}
.links a{text-decoration:none;color:var(--ink-2);padding-bottom:2px;background:linear-gradient(var(--accent),var(--accent)) left bottom/0 4px no-repeat;transition:background-size .12s steps(3)}
.links a:hover{color:var(--ink);background-size:100% 4px}
.links a[aria-current="page"]{color:var(--ink);font-weight:700;background-size:100% 4px}

/* ── 하위 페이지 머리: 첫 화면처럼 그림자 + 라임 커서 ── */
.page-head{padding-block:clamp(44px,8vw,96px) clamp(30px,4vw,44px);border-bottom:2px solid var(--ink)}
.page-head .quest-tag{margin-bottom:14px}
.page-head h1{font-weight:900;font-size:clamp(44px,7.6vw,88px);line-height:1.05;letter-spacing:-.055em;text-shadow:.05em .05em 0 var(--line)}
.page-head h1::after{content:"";display:inline-block;width:.16em;height:.72em;margin-left:.1em;background:var(--accent);vertical-align:-.04em;animation:caret 1s steps(1) infinite}
.page-head h1 .ex{text-shadow:none}
.page-head>p:last-child{margin-top:16px;font-size:clamp(16px,1.6vw,18px);color:var(--ink-2);max-width:46ch}

/* ── 행: 왼쪽 짧은 제목 + 오른쪽 내용 ── */
.row{display:grid;grid-template-columns:180px minmax(0,1fr);gap:clamp(20px,4vw,48px);padding-block:clamp(44px,6vw,72px);border-bottom:1px solid var(--line)}
.row>h2{font-size:16px;font-weight:900;letter-spacing:-.02em;padding-top:2px}
.row>h2::before{content:"";display:inline-block;width:9px;height:9px;background:var(--accent);margin-right:8px;vertical-align:1px}
.row>h2 small{display:block;font-family:var(--code);font-size:11px;font-weight:500;letter-spacing:.12em;color:var(--ink-2);margin:4px 0 0 17px}
.row>h2 small .ex{margin-left:6px}
.row>div{min-width:0}
.more{display:inline-block;margin-top:22px;font-family:var(--code);font-size:13px;font-weight:500;letter-spacing:.04em;text-decoration:none;padding:2px 0;background:linear-gradient(var(--accent),var(--accent)) left bottom/100% 4px no-repeat;transition:background-size .12s steps(3)}
.more::before{content:"▶ "}
.more:hover{background-size:100% 100%;color:#111}
@media (min-width:721px){.row>h2{position:sticky;top:96px;align-self:start}}
@media (max-width:720px){.row{grid-template-columns:1fr;gap:16px}}

/* ── 카드 공통: 2px 테두리, 각진 모서리 ── */
.abilities div,.skill,.cover{border:2px solid var(--ink);border-radius:0}

/* ── 보유 스킬 / 퀘스트 종류 ── */
.abilities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.abilities div{padding:20px;box-shadow:4px 4px 0 var(--drop)}
.abilities h3{font-size:22px;font-weight:900;letter-spacing:-.03em}
.abilities h3::before{content:"";display:inline-block;width:.3em;height:.3em;background:var(--accent);margin-right:.3em;vertical-align:.12em}
.abilities p{margin-top:6px;color:var(--ink-2);font-size:15px}
@media (max-width:640px){.abilities{grid-template-columns:1fr}}

/* ── 작업(LifeSim) ── */
.app-icon{width:132px;height:132px;border-radius:28px;display:block;box-shadow:4px 4px 0 var(--drop)}
.work h3{margin-top:4px}
.checks{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.checks li{font-size:13px;border:1.5px solid var(--ink);padding:2px 10px}
.checks li::before{content:"✓ ";font-weight:700;color:var(--accent-ink)}
.apps{list-style:none;margin:40px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.apps a{display:flex;flex-direction:column;height:100%;padding:18px;border:2px solid var(--ink);box-shadow:4px 4px 0 var(--drop);color:var(--ink);text-decoration:none;transition:transform .08s steps(2),box-shadow .08s steps(2),background .08s steps(2)}
.apps a:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--drop);background:var(--accent);color:#111;border-color:#111}
.apps a:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}
.apps img{width:64px;height:64px;border-radius:14px;margin-bottom:14px}
.apps b{font-size:19px;font-weight:900;letter-spacing:-.03em}
.apps span{margin-top:4px;font-size:14px;color:var(--ink-2);flex:1}
.apps a:hover span{color:#111}
.apps small{margin-top:14px;font-family:var(--code);font-size:11px;letter-spacing:.12em}
@media (max-width:640px){.apps{grid-template-columns:1fr}.apps a{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:14px}.apps img{width:56px;height:56px;margin:0;grid-row:span 3}}

/* ── 파티원 ── */
.member{font-family:var(--code);font-size:clamp(22px,2.6vw,30px);font-weight:500;letter-spacing:.02em;margin-top:6px}
.gallery{list-style:none;margin:24px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.gallery a{display:block;border:2px solid var(--ink);box-shadow:5px 5px 0 var(--drop);transition:transform .08s steps(2),box-shadow .08s steps(2)}
.gallery a:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--accent)}
.gallery img{display:block;width:100%;height:auto}
.gallery span{display:block;margin-top:12px;font-size:14px;color:var(--ink-2)}
.with{font-family:var(--code);font-size:12px!important;letter-spacing:.04em;margin-top:14px!important}
.with a{color:var(--ink);text-decoration:none;box-shadow:inset 0 -.35em 0 var(--accent)}
.member a{color:inherit;text-decoration:none;box-shadow:inset 0 -.3em 0 var(--accent)}
.cal{margin-top:34px}
.cal-head .more{margin-top:0}
.cal-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14px;color:var(--ink-2)}
.cals{list-style:none;margin:12px 0 0;padding:4px 8px 14px 0;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:thin}
.cals li{flex:0 0 clamp(110px,14vw,140px);scroll-snap-align:start}
/* 세로로 스크롤하면 달력 줄이 옆으로 흐른다 (site.js가 .slide 를 붙이고 높이를 정한다) */
.cal.slide .cal-stage{position:sticky;top:96px;overflow:hidden}
.cal.slide .cals{overflow:visible;padding-right:0;will-change:transform}
.cal.slide .cals li{flex-basis:clamp(140px,19vw,200px)}
.cals a:first-child{display:block;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--drop);transition:transform .08s steps(2),box-shadow .08s steps(2)}
.cals a:first-child:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--accent)}
.cals img{display:block;width:100%;height:auto}
.cals .dl{display:block;margin-top:6px;font-family:var(--code);font-size:11px;letter-spacing:.06em;color:var(--ink-2);text-decoration:none;text-align:center}
.cals .dl:hover{color:var(--ink);background:var(--accent);color:#111}
@media (max-width:480px){.gallery{grid-template-columns:1fr}}

/* ── 전자책 ── */
.product{display:grid;grid-template-columns:132px minmax(0,1fr);gap:26px;align-items:start}
.product.lg{grid-template-columns:200px minmax(0,1fr);gap:38px}
.cover{aspect-ratio:3/4;max-width:100%;background:var(--ink);color:var(--bg);padding:14px;display:grid;grid-template-rows:1fr auto;box-shadow:5px 5px 0 var(--accent);position:relative}
.cover::before{content:"";position:absolute;left:10px;top:10px;width:10px;height:10px;background:var(--accent)}
.cover b{font-weight:900;font-size:19px;line-height:1.25;letter-spacing:-.03em;align-self:end}
.product.lg .cover{padding:20px}
.product.lg .cover b{font-size:26px}
.cover span{font-family:var(--code);font-size:10px;letter-spacing:.08em;opacity:.6;margin-top:8px}
.product h3{font-size:clamp(22px,2.4vw,28px);font-weight:900;letter-spacing:-.03em;line-height:1.3}
.facts{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 12px}
.facts span{font-family:var(--code);font-size:12px;border:1.5px solid var(--ink);padding:1px 8px}
.product p{color:var(--ink-2);max-width:54ch}
.cta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}
.price{font-weight:900;font-size:22px;margin-right:6px}
.parts{list-style:none;margin:0;padding:0;counter-reset:p}
.parts li{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;padding:16px 0;border-bottom:1px solid var(--line);counter-increment:p}
.parts li:first-child{padding-top:0}
.parts li::before{content:"PART 0" counter(p);font-family:var(--code);font-size:11px;letter-spacing:.08em;color:var(--ink-2);padding-top:4px}
.parts b{font-size:17px;letter-spacing:-.02em}
.parts p{font-size:15px;color:var(--ink-2)}
.soon{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.soon b{font-size:17px}
@media (max-width:560px){.product,.product.lg{grid-template-columns:1fr}.cover{max-width:160px}}

/* ── 질문 ── */
.faq{margin:0}
.faq div{padding:16px 0;border-bottom:1px solid var(--line)}
.faq div:first-child{padding-top:0}
.faq dt{font-weight:700;font-size:16px}
.faq dt::before{content:"Q ";font-family:var(--code);font-weight:500;color:var(--accent-ink)}
.faq dd{margin:4px 0 0;color:var(--ink-2);font-size:15px;max-width:60ch}

/* ── 치트키(AI 스킬) ── */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.filters button{font-size:13px;font-weight:500;padding:5px 12px;box-shadow:2px 2px 0 var(--drop)}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.skills{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.skill{padding:18px;display:grid;gap:8px;align-content:start;box-shadow:4px 4px 0 var(--drop)}
.skill .top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.skill code{font-family:var(--code);font-size:13px;font-weight:500}
.skill code::before{content:"> ";color:var(--accent-ink)}
.skill .kind{font-family:var(--code);font-size:11px;letter-spacing:.08em;color:var(--ink-2)}
.skill p{font-size:15px}
.skill pre{margin:4px 0 0;font-family:var(--code);font-size:12.5px;line-height:1.6;white-space:pre-wrap;background:var(--soft);border-left:4px solid var(--accent);padding:12px;color:var(--ink)}
.skill button{justify-self:start;font-size:13px;padding:6px 12px;box-shadow:2px 2px 0 var(--drop)}
@media (max-width:640px){.skills{grid-template-columns:1fr}}

/* ── 노트(플레이 로그) ── */
.notes{list-style:none;margin:0;padding:0}
.notes li{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:14px 0;border-bottom:1px solid var(--line)}
.notes li:first-child{padding-top:0}
.notes b{font-size:17px;font-weight:700;letter-spacing:-.02em}
.notes small{display:block;font-size:14px;color:var(--ink-2);font-weight:400;margin-top:2px;letter-spacing:0}
.notes time{font-family:var(--code);font-size:12px;color:var(--ink-2);white-space:nowrap}

/* ── 스테이지 ── */
.stages{list-style:none;margin:0;padding:0;counter-reset:s}
.stages li{display:grid;grid-template-columns:96px minmax(0,1fr);column-gap:16px;row-gap:2px;padding:16px 0;border-bottom:1px solid var(--line);counter-increment:s}
.stages li:first-child{padding-top:0}
.stages li::before{content:"STAGE " counter(s);grid-row:span 2;align-self:start;justify-self:start;font-family:var(--code);font-size:11px;font-weight:500;letter-spacing:.08em;background:var(--ink);color:var(--bg);padding:2px 6px;margin-top:3px}
.stages li.bonus::before{content:"BONUS";background:var(--accent);color:#111}
.stages b,.stages span{grid-column:2}
.stages b{font-size:17px;letter-spacing:-.02em}
.stages span{display:block;font-size:15px;color:var(--ink-2)}

/* ── 소개 / 의뢰 ── */
.about-lead{font-size:clamp(20px,2.4vw,28px);font-weight:900;letter-spacing:-.03em;line-height:1.5;max-width:32ch}
.about-body{display:grid;gap:14px;margin-top:20px;max-width:58ch;color:var(--ink-2)}
.facts-list{list-style:none;margin:0;padding:0}
.facts-list li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);font-size:15px}
.facts-list li:first-child{padding-top:0}
.facts-list li span:first-child{font-family:var(--code);font-size:12px;letter-spacing:.06em;color:var(--ink-2);padding-top:2px}
.facts-list li span:last-child{text-align:right}
.party .cta{margin-top:24px}
.quests{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:640px){.quests{grid-template-columns:1fr}}
.quest-form{margin-top:20px}
.quest-form pre{margin:0}
.contact{margin-top:30px}

/* ── 아래 ── */
.foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-block:24px 44px;border-top:2px solid var(--ink);font-family:var(--code);font-size:12px;letter-spacing:.04em;color:var(--ink-2)}
.foot span:first-child::before{content:"";display:inline-block;width:8px;height:8px;background:var(--accent);margin-right:8px}

/* ── 메인 아래 한 단어 링크 칸: 올리면 라임으로 채워진다 ── */
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line);margin-inline:calc(50% - 50vw);padding-inline:max(20px,calc(50vw - 500px))}
.tiles a{display:grid;gap:6px;padding:clamp(30px,5vw,52px) clamp(16px,2.4vw,28px);text-decoration:none;font-weight:900;font-size:clamp(24px,3.4vw,40px);letter-spacing:-.045em;transition:background .1s steps(2)}
.tiles a+a{border-left:1px solid var(--line)}
.tiles a::after{content:"▶";font-size:.5em;align-self:end;justify-self:end;opacity:0;transition:opacity .1s steps(2)}
.tiles small{font-family:var(--code);font-size:11px;font-weight:500;letter-spacing:.16em;color:var(--ink-2)}
.tiles a:hover{background:var(--accent);color:#111}
.tiles a:hover small{color:#111}
.tiles a:hover::after{opacity:1}
@media (max-width:560px){.tiles{grid-template-columns:1fr}.tiles a+a{border-left:0;border-top:1px solid var(--line)}}

/* ── 홈 첫 화면: 픽셀 놀이터 ── */
.hero{position:relative;overflow:hidden;display:flex;align-items:center;min-height:max(520px,calc(100svh - 76px));margin-inline:calc(50% - 50vw);padding-left:max(20px,env(safe-area-inset-left,0px),calc(50vw - 500px));padding-right:max(20px,env(safe-area-inset-right,0px),calc(50vw - 500px));border-bottom:2px solid var(--ink);touch-action:pan-y;background:var(--bg)}
.ink{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0}
/* 첫 화면 글자는 difference로 그려지므로 색은 currentColor와 --accent-hero만 쓴다 */
.hero-text{position:relative;z-index:1;padding-block:56px;mix-blend-mode:difference;color:#FFFFFF;pointer-events:none}
.hero .quest-tag{margin-bottom:18px;color:#8A8A8A}
.hero h1{font-weight:900;font-size:clamp(50px,10vw,124px);line-height:1.02;letter-spacing:-.06em;text-shadow:.055em .055em 0 #8A8A8A}
:lang(en) .hero h1{font-size:clamp(38px,8.2vw,104px);letter-spacing:-.045em}
/* 첫 줄은 속이 빈 외곽선, 둘째 줄은 각진 그림자. 끝에 깜빡이는 블록 커서 */
.hero h1 .thin{font-weight:900}
.hero h1::after{content:"";display:inline-block;width:.16em;height:.74em;margin-left:.1em;background:var(--accent-hero);vertical-align:-.04em;animation:caret 1s steps(1) infinite}
.hero .hint{font-size:13px;margin-top:30px;color:#8A8A8A}
.btn.start{margin-top:30px;pointer-events:auto;color:inherit;background:transparent;border-color:currentColor;font-family:var(--code);letter-spacing:.08em;box-shadow:3px 3px 0 #8A8A8A}
.btn.start:hover{background:var(--accent-hero);border-color:var(--accent-hero);color:#000000;box-shadow:5px 5px 0 #8A8A8A}
/* 첫 화면 등장: 픽셀이 터지는 순간 제목이 칸 단위로 끊어 올라온다 */
.hero.intro .hero-text>*{opacity:0;transform:translateY(32px)}
.hero.intro .hero-text>h1{transform:none}
.hero.intro.go .hero-text>*{opacity:1;transform:none;transition:transform .28s steps(4),opacity .28s steps(4)}
.hero.intro.go .hero-text>:nth-child(2){transition-delay:.04s}
.hero.intro.go .hero-text>:nth-child(3){transition-delay:.24s}
.hero.intro.go .hero-text>:nth-child(4){transition-delay:.32s}
.hero.intro.go .hero-text>:nth-child(5){transition-delay:.4s}

/* ── 글자 띠: 화면 끝까지 넓게, 스크롤 방향으로 흐른다 ── */

/* 올라오며 나타나기: 흐린 상태에서 시작해 완전히 사라지지는 않는다 */
/* ── 홈 섹션 효과 (site.js가 fx-* 를 붙이고, 화면에 들어오면 in) ── */
.fx-wipe{clip-path:inset(-14px 100% -14px -14px)}
.fx-wipe.in{clip-path:inset(-14px -14px -14px -14px);transition:clip-path .42s steps(7) var(--d,0s)}
.fx-get{opacity:0}
.fx-get.in{opacity:1;animation:fx-get .75s steps(15) var(--d,0s) both}
@keyframes fx-get{0%{transform:translateY(-64px)}50%{transform:translateY(0)}66%{transform:translateY(-14px)}80%{transform:translateY(0)}90%{transform:translateY(-4px)}100%{transform:none}}
.fx-checks li{transform:scale(0)}
.fx-checks.in li{animation:fx-pop .27s steps(3) both;animation-delay:calc(.55s + var(--i,0) * .1s)}
@keyframes fx-pop{0%{transform:scale(0)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
.fx-blink.in{animation:fx-blink .8s steps(1) .35s 3}
@keyframes fx-blink{50%{opacity:0}}
.abilities div{transition:transform .08s steps(2),box-shadow .08s steps(2)}
.abilities div:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--accent)}
.abilities div:hover h3::before{animation:fx-blink .5s steps(1) infinite}
.app-icon{transition:transform .08s steps(2)}
.app-icon:hover{animation:fx-bob .5s steps(2) infinite}
.apps a:hover img{animation:fx-bob .5s steps(2) infinite}
@keyframes fx-bob{50%{transform:translateY(-5px)}}

.rv{transform:translateY(28px);opacity:.25;transition:transform .9s cubic-bezier(.2,.8,.2,1),opacity .9s ease}
.rv.in{transform:none;opacity:1}

@media (prefers-reduced-motion: reduce){
  .hero h1::after,.page-head h1::after,.name:hover .mark{animation:none}
  .btn,.skill button,.filters button,.links a,.more,.tiles a,.apps a,.gallery a,.cals a:first-child,.theme,.lang,.abilities div{transition:none}
  .app-icon:hover,.apps a:hover img,.abilities div:hover h3::before{animation:none}
}

/* ── 이스터에그: 숨은 LifeSim 캐릭터 ── */
.egg{position:fixed;right:max(20px,env(safe-area-inset-right,0px));bottom:max(20px,env(safe-area-inset-bottom,0px));z-index:60;display:flex;align-items:flex-end;gap:10px}
.egg-say{position:relative;background:var(--bg);color:var(--ink);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--drop);padding:12px 14px 12px;margin-bottom:70px;max-width:220px}
.egg-say::after{content:"";position:absolute;right:-10px;bottom:16px;width:8px;height:8px;background:var(--ink)}
.egg-say small{display:block;font-family:var(--code);font-size:11px;letter-spacing:.14em;color:var(--accent-ink)}
.egg-say b{display:block;font-size:16px;font-weight:900;letter-spacing:-.02em;margin:2px 0 10px}
.egg-say .btn{font-size:13px;padding:6px 12px}
.egg-x{position:absolute;right:4px;top:2px;border:0;background:none;color:var(--ink-2);font:700 14px var(--code);cursor:pointer;padding:4px}
.egg-me{position:relative;width:128px;height:144px;border:0;padding:0;background:none;cursor:pointer;flex:none}
.egg-me img{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated}
.egg-me .blink{visibility:hidden}
.egg-me.blinking .blink{visibility:visible}
.egg-me::after{content:"";position:absolute;left:28px;right:28px;bottom:6px;height:8px;background:var(--ink);opacity:.18}
.egg.in .egg-me{animation:fx-get .75s steps(15) both}
.egg.in .egg-say{animation:fx-pop .27s steps(3) .7s both}
.egg-me.jump img{animation:egg-jump .42s steps(7)}
@keyframes egg-jump{0%,100%{transform:none}40%{transform:translateY(-36px)}70%{transform:translateY(-8px)}}
@media (max-width:560px){.egg-me{width:96px;height:108px}.egg-say{margin-bottom:50px;max-width:190px}}
@media (prefers-reduced-motion: reduce){.egg.in .egg-me,.egg.in .egg-say,.egg-me.jump img{animation:none}}
