/* 工具页：Contact / Search / 404 / Share Cards（2026-10-16 自 legacy.css 收口：去 Lab 守卫，段序与原层叠一致；段头保留 Lab 方案出处） */

/* dim:contact-cards start — E09 落地 = Lab E09-V2「大字名录」（用户 2026-10-04 选定）；由 tools/land_e09_v2.py 从 lab/dims/E09/v2/e09.css 生成，勿手改 */
/* 落地补充：只在桌面版生效，≤ 1200px 沿用 dim:project-cards 卡格 */
@media (min-width: 1201px) {
/* E09-V2 大字名录（Claude）。参考 refs/karolortyl-contact-big-email.png：Karol Ortyl 的 Contact 页把联系地址
   用超大号字直接排成主角，左右两栏，说明退到右栏的小字。
   翻译：三列卡格 → 六行通栏名录。公司名放到 54px 衬线占左栏，就是入口本身；负责范围与「访问 …」链接收进右栏。
   行与行之间只用一根细线；右侧留出 I11 书封升起的位置。 */
body.landed-a01 [data-dim="contact-cards"] .cards {
  grid-template-columns: 1fr; border-top: 1px solid var(--line);
}
body.landed-a01 [data-dim="contact-cards"] .cards > li,
body.landed-a01 [data-dim="contact-cards"] .cards > li + li {
  display: grid; grid-template-columns: 640px minmax(0, 1fr); grid-template-rows: auto 1fr;
  column-gap: 48px; align-items: start; min-height: 158px;
  padding: 34px 150px 30px 0; border-left: 0; border-bottom: 1px solid var(--line);
}
body.landed-a01 [data-dim="contact-cards"] .cards h3 {
  grid-column: 1; grid-row: 1 / 3; align-self: center;
  font: 700 52px/1 var(--serif); letter-spacing: -.028em; white-space: nowrap;
}
body.landed-a01 [data-dim="contact-cards"] .cards p {
  grid-column: 2; grid-row: 1; margin-top: 4px; max-width: 26em;
  font-size: 15px; line-height: 1.75; color: var(--on-soot-muted);
}
body.landed-a01 [data-dim="contact-cards"] .cards .link-mono { grid-column: 2; grid-row: 2; justify-self: start; margin-top: 8px; }
}
/* dim:contact-cards end */

/* dim:route-selector start */
.route { display: grid; gap: 12px; max-width: 520px; }
.route label { font-family: var(--serif); font-size: 18px; }
.helper, .form-status { color: var(--on-soot-muted); font-size: 13px; }
.route + .policy { margin-top: 24px; }
/* dim:route-selector end */

/* dim:route-selector-panel start — D07 落地 = Lab D07-V3「命令面板」（用户 2026-10-04 选定）；由 tools/land_d07_v3.py 从 lab/dims/D07/v3/d07.{css,js} 生成，勿手改 */
/* D07-V3 命令面板（Claude）：⌘K 范式。表单变成一块抬升的终端面板，顶栏问题 + 提示符，mono 选项可上下键游走，当前项整行骨白高亮。 */
:is(body.page-home, body.landed-a01) .route.d07-on {
  max-width: 760px; display: grid; grid-template-columns: 1fr auto; gap: 0; counter-reset: d07;
  background: var(--soot-raise); border: 1px solid var(--line); border-radius: 10px; overflow: hidden;
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--bone) 3%, transparent), 0 40px 90px -20px color-mix(in srgb, var(--soot) 90%, transparent);
}
/* 顶栏：问题当作输入行 */
:is(body.page-home, body.landed-a01) .route.d07-on > label {
  grid-column: 1 / -1; display: flex; align-items: center; gap: 14px;
  padding: 20px 24px; border-bottom: 1px solid var(--line);
  font: 400 19px/1.3 var(--sans); color: var(--on-soot-fg);
}
:is(body.page-home, body.landed-a01) .route.d07-on > label::before { content: "›"; font: 700 22px/1 var(--mono); color: var(--burn); }
:is(body.page-home, body.landed-a01) .route.d07-on > label::after {
  content: ""; width: 9px; height: 20px; margin-left: -6px; background: var(--burn);
  animation: d07-caret 1.1s steps(1) infinite;
}
@keyframes d07-caret { 50% { opacity: 0; } }

/* 列表 */
:is(body.page-home, body.landed-a01) .d07-group { grid-column: 1 / -1; display: grid; gap: 2px; padding: 10px; }
:is(body.page-home, body.landed-a01) .d07-opt {
  display: grid; grid-template-columns: 26px 1fr auto auto; align-items: center; column-gap: 12px;
  height: 44px; padding: 0 12px; border: 0; border-radius: 6px; background: none; cursor: pointer; text-align: left;
  font: 500 14px/1 var(--mono); color: var(--on-soot-muted); counter-increment: d07;
}
:is(body.page-home, body.landed-a01) .d07-opt::before { content: ""; width: 8px; height: 8px; border: 1px solid currentColor; border-radius: 2px; opacity: .6; }
:is(body.page-home, body.landed-a01) .d07-name { grid-column: 2; }
:is(body.page-home, body.landed-a01) .d07-mark { grid-column: 3; font: 600 14px/1 var(--mono); opacity: 0; }
:is(body.page-home, body.landed-a01) .d07-mark::before { content: "↵"; }
:is(body.page-home, body.landed-a01) .d07-no {
  grid-column: 4; display: inline-grid; place-items: center; min-width: 24px; height: 22px; padding: 0 6px;
  border: 1px solid var(--line); border-radius: 4px; font: 600 11px/1 var(--mono);
}
:is(body.page-home, body.landed-a01) .d07-no::before { content: counter(d07); }
:is(body.page-home, body.landed-a01) .d07-opt:hover { background: var(--line); color: var(--on-soot-fg); }
:is(body.page-home, body.landed-a01) .d07-opt[aria-checked="true"] { background: var(--bone); color: var(--soot); }
:is(body.page-home, body.landed-a01) .d07-opt[aria-checked="true"]::before { background: var(--burn); border-color: var(--burn); opacity: 1; }
:is(body.page-home, body.landed-a01) .d07-opt[aria-checked="true"] .d07-mark { opacity: 1; }
:is(body.page-home, body.landed-a01) .d07-opt[aria-checked="true"] .d07-no { border-color: color-mix(in srgb, var(--soot) 35%, transparent); }
:is(body.page-home, body.landed-a01) .d07-opt:focus-visible { outline: 2px solid var(--burn); outline-offset: 1px; }

/* 底栏：说明 + 按钮 */
:is(body.page-home, body.landed-a01) .route.d07-on > .helper {
  grid-column: 1; grid-row: 3; align-self: center; margin: 0; padding: 14px 24px;
  border-top: 1px solid var(--line); font: 500 12px/1.5 var(--mono); color: var(--on-soot-muted);
}
:is(body.page-home, body.landed-a01) .route.d07-on > button { grid-column: 2; grid-row: 3; align-self: stretch; margin: 0; padding: 0 20px; border-top: 1px solid var(--line); }
:is(body.page-home, body.landed-a01) .route.d07-on > .form-status { grid-column: 1 / -1; grid-row: 4; margin: 0; padding: 0 24px 14px; font-family: var(--mono); }
:is(body.page-home, body.landed-a01) .route.d07-on > .form-status:empty { display: none; }

@media (prefers-reduced-motion: reduce) {
  :is(body.page-home, body.landed-a01) .route.d07-on > label::after { animation: none; }
}
:is(body.page-home, body.landed-a01) .d07-opt > *, :is(body.page-home, body.landed-a01) .d07-opt::before { grid-row: 1; }
:is(body.page-home, body.landed-a01) .d07-opt::before { grid-column: 1; }
:is(body.page-home, body.landed-a01) .route.d07-on { margin-bottom: 30px; }
/* dim:route-selector-panel end */

/* dim:search-box start */
.search-form label { display: block; margin-bottom: 12px; font-family: var(--serif); font-size: 18px; }
.search-row { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.search-row input { flex: 1 1 260px; font-size: 16px; }
/* dim:search-box end */

/* dim:search-results start */
.search-status { margin: 26px 0 8px; font: 600 10px/1.4 var(--mono); letter-spacing: .12em; color: var(--on-soot-muted); }
/* dim:search-results end */

/* dim:error-page start */
.error-page { display: grid; align-items: center; min-height: 70svh; padding: var(--sec-y) 0; }
.error-page h1 { margin-top: 20px; font: 700 clamp(40px, 7vw, 96px)/1.05 var(--serif); letter-spacing: var(--ls-display); }
/* dim:error-page end */

/* dim:error-page-terminal start — J01 落地 = Lab J01-V3「终端」（用户 2026-10-04 选定）；由 tools/land_j01_v3.py 从 lab/dims/J01/v3/j01.{css,js} 生成，勿手改 */
/* J01-V3 终端（Claude）：换语言。整块收进一块深色屏幕，全部等宽字；原有文字逐行「打印」出来，
   错误行橙红，404 是屏幕右上的大号等宽读数，末尾一个块光标。楔形撤掉。 */
html body.landed-a01 .error-page.a3-head { min-height: calc(100svh - 78px); padding: 56px 0; display: flex; align-items: center; animation: none; }
html body.landed-a01 .error-page .a3-wedge,
html body.landed-a01 .error-page .a3-hair { display: none; }

/* 屏幕 */
html body.landed-a01 .error-page .a3-body { position: relative; max-width: 1080px; padding: 92px 64px 60px; overflow: hidden;
  background: var(--soot-raise); border: 1px solid var(--line); border-radius: 14px; font-family: var(--mono); }
html body.landed-a01 .error-page .a3-body::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 40px; border-bottom: 1px solid var(--line);
  background: radial-gradient(circle 6px at 26px 20px, var(--burn) 98%, transparent), radial-gradient(circle 6px at 48px 20px, var(--dust) 98%, transparent),
    radial-gradient(circle 6px at 70px 20px, var(--line) 98%, transparent), var(--soot); }
html body.landed-a01 .error-page .a3-body::after { content: ""; position: absolute; inset: 41px 0 0; pointer-events: none;
  background: repeating-linear-gradient(0deg, var(--line) 0 1px, transparent 1px 4px); opacity: .22; }

/* 行 */
html body.landed-a01 .error-page :is(.a3-kicker, .a3-cut, .a3-title, .a3-deck) { display: block; position: static; margin: 0; transform: none; mask: none; text-wrap: nowrap; }
html body.landed-a01 .error-page :is(.a3-kicker, .a3-cut, .a3-title, .a3-deck)::before { display: inline-block; width: 1.6em; color: var(--on-soot-accent); }
html body.landed-a01 .error-page .a3-kicker { font: 400 15px/1.6 var(--mono); letter-spacing: .02em; text-transform: none; color: var(--bone); }
html body.landed-a01 .error-page .a3-kicker::before { content: "$"; height: auto; background: none; clip-path: none; vertical-align: baseline; }
html body.landed-a01 .error-page .a3-cut { margin-top: 10px; font: 700 15px/1.6 var(--mono); letter-spacing: .02em; color: var(--on-soot-accent); white-space: nowrap; }
html body.landed-a01 .error-page .a3-cut::before { content: "!"; }
html body.landed-a01 .error-page .a3-title { margin-top: 44px; max-width: none; font: 700 64px/1.15 var(--mono), var(--sans); letter-spacing: -.01em; color: var(--bone); }
html body.landed-a01 .error-page .a3-title::before { content: ">"; width: 24px; font: 700 15px/1 var(--mono); vertical-align: middle; }
html body.landed-a01 .error-page .a3-deck { margin-top: 22px; font: 400 16px/1.7 var(--mono), var(--sans); color: var(--on-soot-muted); }
html body.landed-a01 .error-page .a3-deck::before { content: "#"; color: var(--on-soot-muted); }
html body.landed-a01 .error-page .a3-meta { margin: 40px 0 0 24px; padding-left: 0; align-items: center; }
html body.landed-a01 .error-page .a3-meta::after { content: ""; display: inline-block; width: 13px; height: 26px; margin-left: 4px; background: var(--bone); }

/* 404：屏幕右上的大号等宽读数 */
html body.landed-a01 .error-page .a3-no { position: absolute; right: 64px; top: 84px; bottom: auto; left: auto; transform: none;
  font: 700 168px/1 var(--mono); letter-spacing: -.04em; color: transparent; -webkit-text-stroke: 1.5px var(--on-soot-accent); animation: none; }

/* 打印：每行从左向右按字符步进揭开，结束后光标闪几下停住 */
@media (prefers-reduced-motion: no-preference) {
  html body.landed-a01 .error-page :is(.a3-kicker, .a3-cut, .a3-title, .a3-deck, .a3-meta, .a3-no) { animation: j01v3-type var(--dur) var(--at) steps(var(--st)) both; }
  html body.landed-a01 .error-page .a3-kicker { --at: 150ms; --dur: 420ms; --st: 28; }
  html body.landed-a01 .error-page .a3-cut { --at: 650ms; --dur: 380ms; --st: 28; }
  html body.landed-a01 .error-page .a3-no { --at: 650ms; --dur: 200ms; --st: 3; }
  html body.landed-a01 .error-page .a3-title { --at: 1100ms; --dur: 420ms; --st: 8; }
  html body.landed-a01 .error-page .a3-deck { --at: 1580ms; --dur: 460ms; --st: 22; }
  html body.landed-a01 .error-page .a3-meta { --at: 2080ms; --dur: 260ms; --st: 4; }
  html body.landed-a01 .error-page .a3-meta::after { animation: j01v3-blink 1s 2340ms steps(1) 4 both; }
}
@keyframes j01v3-type { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes j01v3-blink { 0% { opacity: 1; } 50% { opacity: 0; } }
/* dim:error-page-terminal end */

/* dim:search-apple start — B08 落地 = Lab B08-V7「苹果检索」（用户 2026-10-04 选定）；由 tools/land_b08_v7.py 生成，勿手改 */
@media (min-width: 861px) {
/* B08-V7 苹果检索（Claude）。从基底 V1 改：去掉全部线稿，只留「大输入 + 一条分隔线」，翻译 Apple 搜索页：
   左对齐圆角矩形输入框（框内左侧放大镜、右侧圆形清除）、下方一条分隔线 + 一行小字计数；
   结果是宽松的大行，左侧方形「类型图块」占 Apple 产品图的位置，右侧无衬线标题 + 摘要。 */
body.landed-a01 [data-dim="search-box"] label {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
body.landed-a01 [data-dim="search-box"] .search-row { position: relative; flex-wrap: nowrap; gap: 24px; width: 100%; }
body.landed-a01 [data-dim="search-box"] .search-row input {
  flex: 0 0 640px; height: 58px; padding: 0 56px 0 54px; border-radius: 13px;
  border: 1px solid color-mix(in srgb, var(--bone) 30%, transparent); background: transparent;
  color: var(--on-soot-fg); font: 400 19px/1 var(--sans); letter-spacing: -.01em; outline: none;
  transition: border-color 160ms linear, box-shadow 160ms linear;
}
body.landed-a01 [data-dim="search-box"] .search-row input::placeholder { color: var(--on-soot-muted); }
body.landed-a01 [data-dim="search-box"] .search-row input::-webkit-search-cancel-button { display: none; }
body.landed-a01 [data-dim="search-box"] .search-row input:focus { border-color: var(--on-soot-accent); }
body.landed-a01 [data-dim="search-box"] .search-row input:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--burn) 32%, transparent); }
/* 放大镜：圆 + 柄，画在输入框左侧 */
body.landed-a01 [data-dim="search-box"] .search-row::before,
body.landed-a01 [data-dim="search-box"] .search-row::after { content: ""; position: absolute; pointer-events: none; }
body.landed-a01 [data-dim="search-box"] .search-row::before {
  left: 20px; top: 20px; width: 13px; height: 13px; border: 1.5px solid var(--on-soot-muted); border-radius: 50%;
}
body.landed-a01 [data-dim="search-box"] .search-row::after {
  left: 33px; top: 35px; width: 7px; height: 1.5px; background: var(--on-soot-muted); transform: rotate(45deg); transform-origin: 0 50%;
}
/* 清除：框内右端一颗圆形 ×（文字视觉隐藏，保留可访问名） */
body.landed-a01 [data-dim="search-box"] .search-row .link-mono {
  position: absolute; left: 602px; top: 18px; width: 22px; height: 22px; min-height: 0; padding: 0; gap: 0;
  border-radius: 50%; background: var(--on-soot-muted); color: transparent; font-size: 0; overflow: hidden;
}
body.landed-a01 [data-dim="search-box"] .search-row .link-mono::before {
  content: "×"; display: grid; place-items: center; width: 22px; height: 22px; background: none; clip-path: none; transform: none;
  color: var(--soot); font: 700 16px/1 var(--sans);
}
body.landed-a01 [data-dim="search-box"] .search-row .link-mono::after { content: none; }
body.landed-a01 [data-dim="search-box"] .search-row .link-mono:hover { background: var(--on-soot-fg); }
body.landed-a01 [data-dim="search-box"] .search-row:has(input:placeholder-shown) .link-mono { visibility: hidden; }

/* ---------- 分隔线 + 小字计数 ---------- */
body.landed-a01 [data-dim="search-results"] { margin-top: 40px; border-top: 1px solid var(--line); }
body.landed-a01 [data-dim="search-results"] .search-status {
  margin: 14px 0 34px; font: 400 13px/1.5 var(--sans); letter-spacing: 0; color: var(--on-soot-muted);
}

/* ---------- 结果：图块 + 大行 ---------- */
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] { max-width: 1000px; }
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li {
  grid-template-columns: 136px minmax(0, 1fr); column-gap: 40px; align-items: start; padding: 26px 0; border-bottom: 0;
}
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li .row-meta {
  grid-column: 1; grid-row: 1; display: grid; place-items: center; justify-content: center; width: 136px; height: 100px; max-width: none;
  border-radius: 14px; background: var(--soot-raise);
}
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li .tag {
  border: 0; padding: 0; font: 600 11px/1 var(--mono); letter-spacing: var(--ls-label); color: var(--on-soot-fg);
}
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li:not(:has(a)) .tag { color: var(--on-soot-muted); }
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li .row-main { grid-column: 2; grid-row: 1; padding-top: 6px; }
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li .row-main h3 {
  font: 600 22px/1.3 var(--sans); letter-spacing: -.012em;
}
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li .row-main h3:has(a)::after {
  content: "›"; margin-left: 8px; color: var(--on-soot-accent); font-weight: 400;
}
body.landed-a01 [data-dim="search-results"] .rows[data-search-list] > li .row-main p {
  margin-top: 10px; max-width: 40em; font: 400 16px/1.6 var(--sans); color: var(--on-soot-muted);
}

@media (prefers-reduced-motion: reduce) {
  body.landed-a01 [data-dim="search-box"] .search-row input { transition: none; }
}
}
/* dim:search-apple end */

/* dim:share-card start — J02 落点基线（Lab 出案前的朴素版）：1200×630 OG 卡，以 0.47 倍两列展示；文字取自已有标题与简介 */
.og-list { display: grid; grid-template-columns: repeat(auto-fill, 564px); gap: 28px; margin: 0; padding: 0; list-style: none; }
.og-frame { width: 564px; height: 296px; overflow: hidden; box-shadow: 0 0 0 1px var(--line); }
.og { position: relative; box-sizing: border-box; width: 1200px; height: 630px; padding: 72px 80px; transform: scale(.47); transform-origin: 0 0;
  display: flex; flex-direction: column; gap: 22px; background: var(--soot); color: var(--on-soot-fg); }
.og-mark { position: absolute; right: 80px; top: 64px; display: grid; place-items: center; width: 72px; height: 72px; border-radius: 50%; background: var(--bone); color: var(--soot); font: 700 26px/1 var(--serif); }
.og-k { font: 600 20px/1.4 var(--mono); letter-spacing: .14em; color: var(--on-soot-accent); }
.og-t { max-width: 920px; font: 700 64px/1.2 var(--serif); }
.og-d { max-width: 900px; font-size: 26px; line-height: 1.6; color: var(--on-soot-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.og-site { margin-top: auto; font: 600 22px/1 var(--mono); letter-spacing: .1em; color: var(--on-soot-muted); }
@media (max-width: 860px) { .og-list { grid-template-columns: minmax(0, 1fr); } .og-frame { width: 100%; height: auto; aspect-ratio: 1200 / 630; } .og { transform: scale(.29); } }
/* dim:share-card end */

/* dim:share-card-blueprint start — J02 落地 = Lab J02-V3「Vercel 图纸卡」（用户 2026-10-15 选定）；由 tools/land_j02_v3.py 生成，勿手改 */
/* J02-V3 Vercel 图纸：骨白卡被细线分成主区与右侧窄栏，主区左上小标、标题墨色粗体；右栏是一束橙红细线汇向十字准星（纯 CSS 线） */
body.landed-a01 .og { padding: 64px 470px 0 64px; gap: 26px; background:
    linear-gradient(var(--line-on-burn), var(--line-on-burn)) 0 470px / 100% 1px no-repeat,
    linear-gradient(var(--line-on-burn), var(--line-on-burn)) 780px 0 / 1px 100% no-repeat,
    color-mix(in srgb, var(--bone) 70%, white); color: var(--soot); }
body.landed-a01 .og::after { content: ""; position: absolute; left: 820px; top: 40px; width: 330px; height: 380px; pointer-events: none;
  background: repeating-linear-gradient(90deg, transparent 0 22px, color-mix(in srgb, var(--burn) 55%, transparent) 22px 23px),
    radial-gradient(circle at 100% 0, transparent 0 0, transparent 1px);
  -webkit-mask: linear-gradient(200deg, var(--soot) 30%, transparent 75%); mask: linear-gradient(200deg, var(--soot) 30%, transparent 75%); }
body.landed-a01 .og::before { content: ""; position: absolute; left: 1117px; top: 52px; width: 24px; height: 24px; z-index: 1;
  background: linear-gradient(var(--soot), var(--soot)) 50% 0 / 1px 100% no-repeat, linear-gradient(var(--soot), var(--soot)) 0 50% / 100% 1px no-repeat; }
/* 站标：原 Vercel 三角（借用）换成本站轨道环，2026-10-16 */
body.landed-a01 .og .og-mark { position: static; display: block; width: 52px; height: 52px; border-radius: 0; background: none; font-size: 0; }
body.landed-a01 .og .og-mark svg { width: 100%; height: 100%; }
body.landed-a01 .og .og-k { order: 3; position: absolute; left: 64px; top: 510px; color: var(--burn-2); }
body.landed-a01 .og .og-t { max-width: 660px; font: 800 60px/1.15 var(--sans); letter-spacing: -.03em; color: var(--soot); }
body.landed-a01 .og .og-d { display: none; }
body.landed-a01 .og .og-site { position: absolute; left: 820px; top: 510px; margin: 0; color: var(--soot); }
/* dim:share-card-blueprint end */
