/* 한남자리 공개 화면 — 토큰은 tokens.css 한 곳에서만 온다. 이 파일에 색·radius 리터럴을 두지 않는다. */ html { scroll-padding-top: calc(var(--header-height) + 1rem); } /* ── 상단 바(브랜드 + 항목 4 + 좁은 화면 메뉴 버튼). 긴 페이지라 고정하되 바탕이 단색이므로 흐림 없이 불투명 ── */ .site-header { position: sticky; z-index: 80; top: 0; display: flex; min-height: var(--header-height); align-items: center; justify-content: space-between; gap: 2rem; padding: 0 max(1rem, calc((100% - 88rem) / 2)); background: var(--surface); border-bottom: 1px solid var(--line); } .brand-link { display: flex; align-items: center; gap: 0.7rem; text-decoration: none; } .brand-mark { display: grid; width: 2.25rem; height: 2.25rem; place-items: center; color: var(--white); background: var(--accent); border-radius: var(--radius); font-size: 0.8125rem; font-weight: var(--weight-strong); letter-spacing: 0.04em; } .brand-lockup strong, .brand-lockup small { display: block; } .brand { font-size: 0.9375rem; line-height: 1.2; } .brand-lockup small { margin-top: 0.1rem; color: var(--ink-3); font-size: 0.8125rem; line-height: 1.2; } .site-nav { display: flex; align-items: center; gap: 1.5rem; } .site-nav a { display: inline-flex; min-height: 2.75rem; align-items: center; font-size: 0.875rem; font-weight: var(--weight-strong); text-decoration: none; white-space: nowrap; border-bottom: 2px solid transparent; transition: border-color var(--transition); } .site-nav a:hover, .site-nav a:focus-visible { border-bottom-color: var(--accent); } .menu-button { display: none; width: 2.75rem; height: 2.75rem; padding: 0.85rem 0.7rem; background: transparent; border: 1px solid var(--line); border-radius: var(--radius); } .menu-button i { display: block; height: 2px; margin: 0.3rem 0; background: var(--ink); } .eyebrow { margin: 0 0 0.75rem; color: var(--accent-deep); font-size: 0.8125rem; font-weight: var(--weight-strong); } /* ── 히어로: 격자·목록. 표제는 작게, 조건 띠가 격자 위 ── */ .listing-hero { width: var(--content); margin: 0 auto; padding: 1.5rem 0 0; } .hero-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; padding-bottom: 1rem; } .hero-head h1 { max-width: var(--measure); margin: 0; font-family: var(--font-display); font-size: 1.25rem; font-weight: var(--weight-strong); line-height: 1.3; letter-spacing: -0.01em; } .masthead-note { display: flex; flex: 0 0 auto; gap: 1.5rem; margin: 0; } .masthead-note div { display: flex; gap: 0.5rem; font-size: 0.8125rem; line-height: 1.5; } .masthead-note dt { color: var(--ink-3); } .masthead-note dd { margin: 0; font-weight: var(--weight-strong); } .brief-dock { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)) minmax(12rem, auto); gap: 0 1.25rem; align-items: end; padding: 1rem 1.25rem 0.9rem; background: var(--surface-raised); border: 1px solid var(--line); border-top: 2px solid var(--ink); border-radius: var(--radius) var(--radius) 0 0; } .dock-field > span:first-child { display: block; margin-bottom: 0.2rem; color: var(--ink-3); font-size: var(--brief-label-size); font-weight: var(--weight-strong); line-height: 1.4; } .dock-field input, .dock-field select { width: 100%; min-height: 2.75rem; padding: 0.45rem 0; color: var(--ink); background: transparent; border: 0; border-bottom: 1px solid var(--ink-3); border-radius: 0; font-size: var(--brief-input-size); font-variant-numeric: tabular-nums; font-weight: var(--weight-strong); transition: border-color var(--transition); } .dock-field input:hover, .dock-field select:hover, .dock-field input:focus-visible, .dock-field select:focus-visible { border-bottom-color: var(--accent); } .input-suffix { position: relative; display: block; } .input-suffix input { padding-right: 2.75rem; } .input-suffix i { position: absolute; right: 0; bottom: 0.8rem; color: var(--ink-3); font-size: 0.8125rem; font-style: normal; } .dock-actions { display: flex; align-items: center; justify-content: flex-end; gap: 1rem; padding-bottom: 0.1rem; } .save-button { min-height: 2.75rem; padding: 0.5rem 0.25rem; color: var(--ink-2); background: transparent; border: 0; font-size: 0.8125rem; font-weight: var(--weight-strong); text-decoration: underline; text-underline-offset: 0.25rem; } .save-button:hover { color: var(--accent-deep); } .condition-note { grid-column: 1 / -1; margin: 0.6rem 0 0; color: var(--ink-3); font-size: 0.8125rem; line-height: 1.5; } /* 격자: 간격 대신 1px 선으로 칸을 나눈다(R2). 칸마다 캡션이 위, 1:1 사진이 아래 */ .listing-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-top: 0; border-radius: 0 0 var(--radius) var(--radius); overflow: hidden; } .candidate-option { position: relative; display: grid; min-width: 0; padding: 1rem 1.25rem 1.25rem; color: var(--ink); background: var(--surface-raised); transition: background-color var(--transition), box-shadow var(--transition); } .candidate-option:hover { background: var(--white); box-shadow: inset 0 0 0 1px var(--ink-3); } .candidate-option.is-selected { background: var(--white); box-shadow: inset 0 0 0 2px var(--accent); } .candidate-button { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; padding: 0; background: transparent; border: 0; border-radius: 0; } .candidate-button:focus-visible { outline-offset: -3px; } .candidate-content { pointer-events: none; } .candidate-caption { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.15rem 0.6rem; align-items: baseline; align-content: start; min-height: 3.75rem; margin-bottom: 0.75rem; } .candidate-index { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .candidate-caption strong { font-size: 1.0625rem; line-height: 1.3; } .candidate-option.is-selected .candidate-caption strong { color: var(--accent-deep); } .candidate-verdict { grid-column: 2; color: var(--ink-3); font-size: 0.8125rem; line-height: 1.4; } .candidate-verdict.is-lead { color: var(--accent-deep); font-weight: var(--weight-strong); } .candidate-facts { grid-column: 2; display: flex; flex-wrap: wrap; gap: 0.2rem 0.6rem; font-size: 0.875rem; line-height: 1.4; } .candidate-facts small { font-size: inherit; font-variant-numeric: tabular-nums; } .candidate-facts b { font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .candidate-option figure { position: relative; display: grid; margin: 0; } .candidate-option figcaption, .candidate-scene > figcaption, .image-filmstrip figcaption { margin-bottom: 0.35rem; color: var(--ink-3); font-size: 0.8125rem; line-height: 1.4; } .candidate-media, .candidate-media picture { display: block; height: 100%; } .candidate-media { aspect-ratio: 1; overflow: hidden; background: var(--surface-sunken); } .candidate-media img { width: 100%; height: 100%; object-fit: cover; object-position: 55% center; } /* 세 번째 칸은 같은 거실 사진을 창가 쪽으로 다르게 잘라 두 번째 사진처럼 쓴다(새 이미지를 만들지 않는다) */ .candidate-media.is-crop-window img { object-position: 100% 35%; transform: scale(1.4); transform-origin: 100% 35%; } /* View Transitions: 칸마다 고유 이름을 줘야 재정렬이 따로 움직인다 */ [data-listing="home-1"] { view-transition-name: listing-1; } [data-listing="home-2"] { view-transition-name: listing-2; } [data-listing="home-3"] { view-transition-name: listing-3; } ::view-transition { pointer-events: none; } /* 전환 중에는 문서 전체가 히트테스트에서 빠진다(실측: 전환 중 클릭이 html 에 떨어짐). 짧게 끝낸다 */ ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation-duration: 120ms; animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1); } /* ── 공통 섹션 머리 ── */ .section-heading h2 { max-width: 24em; margin: 0; font-family: var(--font-display); font-size: clamp(1.5rem, 2.4vw, 2.125rem); font-weight: var(--weight-strong); line-height: 1.3; letter-spacing: -0.02em; } .section-heading > p { max-width: var(--measure); margin: 1rem 0 0; color: var(--ink-2); } /* ── 브리핑 ── */ .briefing-section { width: var(--content); margin: 0 auto; padding: clamp(4rem, 7vw, 6rem) 0 clamp(3rem, 5vw, 4rem); } .briefing-sheet { margin-top: 2rem; background: var(--surface-raised); border: 1px solid var(--line); border-top: 2px solid var(--ink); border-radius: var(--radius); } .briefing-sheet > header { display: flex; min-height: 3.5rem; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1.5rem; padding: 0.75rem 1.25rem; border-bottom: 1px solid var(--line); } .briefing-sheet > header span { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); } .briefing-sheet > header strong { font-size: 0.9375rem; } .briefing-empty { display: grid; grid-template-columns: 3rem minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; padding: 2rem 1.25rem; } .briefing-empty > span, .group-number { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .briefing-empty h3 { margin: 0; font-size: 1.125rem; } .briefing-empty p { max-width: var(--measure); margin: 0.35rem 0 0; color: var(--ink-2); font-size: 0.9375rem; } .briefing-groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); } .briefing-groups section { min-width: 0; padding: 1.25rem; background: var(--surface-raised); } .briefing-groups h3 { margin: 0.4rem 0 0.75rem; font-size: 1rem; } .briefing-groups ul { margin: 0; padding: 0; list-style: none; } .briefing-groups li { padding: 0.75rem 0; border-top: 1px solid var(--line); } .briefing-groups li strong, .briefing-groups li span, .briefing-groups li small { display: block; } .briefing-groups li strong { font-size: 0.9375rem; } .briefing-groups li span { margin-top: 0.15rem; color: var(--ink-2); font-size: 0.9375rem; line-height: 1.6; } .briefing-groups li small { margin-top: 0.3rem; color: var(--ink-3); font-size: 0.8125rem; } /* ── 비교: 선택한 집 사진(1:1, 캡션 위) + 다섯 조건 ── */ .compare-section { width: var(--content); margin: 0 auto; padding: clamp(3rem, 5vw, 4rem) 0; } .compare-heading { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem 3rem; margin-bottom: 2rem; } .unit-switches { display: flex; flex-wrap: wrap; gap: 0.6rem; } .unit-switches > div { display: flex; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; } .unit-switches button { min-width: 2.75rem; min-height: 2.75rem; padding: 0 0.75rem; color: var(--ink-2); background: var(--surface-raised); border: 0; border-right: 1px solid var(--line); font-size: 0.875rem; font-weight: var(--weight-strong); transition: background-color var(--transition), color var(--transition); } .unit-switches button:last-child { border-right: 0; } .unit-switches button:hover { color: var(--ink); background: var(--white); } .unit-switches button[aria-pressed="true"] { color: var(--white); background: var(--accent); } .compare-desk { display: grid; grid-template-columns: minmax(0, 26rem) minmax(0, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; } .candidate-scene { position: relative; display: grid; grid-template-rows: auto auto minmax(0, 1fr); min-width: 0; margin: 0; padding: 1.25rem; background: var(--surface-raised); } .scene-caption { display: flex; align-items: baseline; gap: 0.75rem; margin-bottom: 0.75rem; } .scene-caption > span { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .scene-caption strong, .scene-caption small { display: block; } .scene-caption strong { font-size: 1.0625rem; } .scene-caption small { margin-top: 0.1rem; color: var(--ink-2); font-size: 0.875rem; } .candidate-scene > img { width: 100%; aspect-ratio: 1; object-fit: cover; object-position: 53% center; background: var(--surface-sunken); transition: opacity var(--transition); } .condition-matrix { display: grid; grid-template-rows: repeat(5, minmax(0, 1fr)); margin: 0; background: var(--surface-raised); } .condition-matrix > div { display: grid; grid-template-columns: 6rem minmax(0, 1fr); gap: 0.2rem 1rem; align-content: center; padding: 0.9rem 1.25rem; border-bottom: 1px solid var(--line); } .condition-matrix > div > dt { grid-row: 1 / 3; align-self: center; } .condition-matrix > div:last-child { border-bottom: 0; } .condition-matrix dt { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); } .condition-matrix dd { margin: 0; font-size: 1.0625rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .condition-matrix .matrix-note { grid-column: 2; color: var(--ink-3); font-size: 0.875rem; font-weight: var(--weight-body); } .condition-matrix .matrix-note.is-adjust { color: var(--amber); font-weight: var(--weight-strong); } .condition-matrix .matrix-note.is-check { color: var(--blue); } /* ── 서류철: 탭 한 줄 + 패널 ── */ .dossier-section { width: var(--content); margin: 0 auto; padding: clamp(3rem, 5vw, 4rem) 0 clamp(4rem, 7vw, 6rem); } .dossier-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.5rem 3rem; align-items: end; margin-bottom: 1.5rem; } .dossier-heading .eyebrow { grid-column: 1 / -1; } .dossier-heading > p:last-child { margin: 0; text-align: right; } .dossier-heading > p:last-child strong, .dossier-heading > p:last-child span { display: block; } .dossier-heading > p:last-child strong { font-size: 0.9375rem; } .dossier-heading > p:last-child span { color: var(--ink-3); font-size: 0.8125rem; } .dossier-shell { background: var(--surface-raised); border: 1px solid var(--line); border-radius: var(--radius); } .dossier-tabs { display: flex; overflow-x: auto; border-bottom: 1px solid var(--line); } .dossier-tabs button { min-width: max-content; min-height: 3.25rem; padding: 0 1.25rem; color: var(--ink-2); background: transparent; border: 0; border-bottom: 2px solid transparent; border-right: 1px solid var(--line); font-size: 0.9375rem; font-weight: var(--weight-strong); transition: color var(--transition), border-color var(--transition); } .dossier-tabs button:hover { color: var(--ink); } .dossier-tabs button[aria-selected="true"] { color: var(--accent-deep); border-bottom-color: var(--accent); } .dossier-pages { min-width: 0; } .dossier-panel { padding: clamp(1.25rem, 2.5vw, 2rem); } .image-filmstrip { display: grid; grid-template-columns: repeat(2, minmax(0, 20rem)); gap: 1.5rem; } .image-filmstrip figure { position: relative; display: grid; min-width: 0; margin: 0; } .image-filmstrip img { width: 100%; aspect-ratio: 1; object-fit: cover; background: var(--surface-sunken); } .image-filmstrip figure:first-child img { object-position: 58% center; } .image-filmstrip figure:last-child img { object-position: 56% center; } .spec-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; margin: 1.5rem 0 0; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; } .spec-strip div { min-width: 0; padding: 0.75rem 1rem; background: var(--surface-raised); } .spec-strip dt { color: var(--ink-3); font-size: 0.8125rem; } .spec-strip dd { margin: 0.15rem 0 0; font-size: 0.9375rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .decision-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; margin-top: 2rem; } .decision-columns section { border-top: 2px solid var(--ink); } .decision-columns h3 { margin: 0.75rem 0; font-size: 1rem; } .decision-columns ul { margin: 0; padding: 0; list-style: none; } .decision-columns li { padding: 0.55rem 0 0.55rem 1.15rem; border-bottom: 1px solid var(--line); font-size: 0.9375rem; } .decision-columns li::before { float: left; margin-left: -1.15rem; color: var(--accent); content: "—"; } .page-heading { display: grid; grid-template-columns: 8rem minmax(0, 1fr); gap: 1rem 2rem; align-items: start; padding-bottom: 1.25rem; border-bottom: 2px solid var(--ink); } .page-heading span { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); } .page-heading h3 { max-width: 24em; margin: 0; font-size: clamp(1.25rem, 2vw, 1.5rem); font-weight: var(--weight-strong); line-height: 1.3; } .page-ledger { margin: 1.5rem 0 0; } .page-ledger div { display: grid; grid-template-columns: 11rem minmax(0, 1fr); gap: 0.25rem 2rem; padding: 0.9rem 0; border-bottom: 1px solid var(--line); } .page-ledger dt { color: var(--ink-3); font-size: 0.875rem; } .page-ledger dd { margin: 0; font-size: 0.9375rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .review-list { margin: 1.5rem 0 0; padding: 0; list-style: none; } .review-list li { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--line); } .review-list li > span { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); } .review-list strong { font-size: 0.9375rem; } .review-list p, .location-memo p { margin: 0.2rem 0 0; color: var(--ink-2); font-size: 0.9375rem; } .location-memo { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin-top: 1.5rem; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; } .location-memo p { margin: 0; padding: 1.25rem; background: var(--surface-raised); } /* ── 푸터: 다음 행동 하나 크게(상담 준비 폼). 절차 셋은 왼쪽, 폼은 오른쪽 밝은 판 ── */ .site-footer { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "intro form" "legal legal"; gap: 3rem clamp(3rem, 6vw, 6rem); padding: clamp(4rem, 7vw, 6rem) max(1rem, calc((100% - 88rem) / 2)) 2rem; color: var(--ink-inverse); background: var(--ink); } .footer-intro { grid-area: intro; min-width: 0; } .footer-intro h2 { max-width: 20em; margin: 0; font-family: var(--font-display); font-size: clamp(1.5rem, 2.4vw, 2.125rem); font-weight: var(--weight-strong); line-height: 1.3; letter-spacing: -0.02em; } .handoff-steps { margin: 2rem 0 0; padding: 0; border-top: 1px solid var(--line-dark); list-style: none; } .handoff-steps li { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--line-dark); } .handoff-steps li > span { color: var(--accent-soft); font-size: 0.8125rem; font-weight: var(--weight-strong); font-variant-numeric: tabular-nums; } .handoff-steps strong { display: block; font-size: 1rem; } .step-copy { display: block; margin-top: 0.2rem; color: var(--accent-soft); font-size: 0.9375rem; line-height: 1.6; } .consult-prep { grid-area: form; display: grid; gap: 1rem; align-content: start; padding: 1.5rem; color: var(--ink); background: var(--surface-raised); border-radius: var(--radius); } .consult-prep h3 { margin: 0; font-size: 1.25rem; line-height: 1.3; } .prep-home { color: var(--ink-2); font-size: 0.9375rem; } .prep-home strong { color: var(--ink); } .prep-options { display: grid; gap: 0.5rem; } .prep-options label, .dialog-content label { display: flex; min-height: 3rem; align-items: center; gap: 0.7rem; padding: 0.6rem 0.75rem; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); font-size: 0.9375rem; transition: border-color var(--transition); } .prep-options label:hover, .dialog-content label:hover { border-color: var(--accent); } .prep-options input, .dialog-content input { width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--accent); } .handoff-cta { min-height: 3.25rem; font-size: 1rem; } .prep-note { color: var(--ink-3); font-size: 0.8125rem; } .footer-legal { grid-area: legal; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 1rem 2.5rem; align-items: start; padding-top: 1.5rem; border-top: 1px solid var(--line-dark); font-size: 0.8125rem; } .footer-brand strong, .footer-brand span { display: block; } .footer-brand strong { font-size: 0.9375rem; } .footer-brand span { color: var(--accent-soft); } .footer-legal p { max-width: var(--measure); margin: 0; color: var(--accent-soft); } .footer-legal nav { display: flex; gap: 1.25rem; } .footer-legal a { display: inline-flex; min-height: 2.75rem; align-items: flex-start; text-underline-offset: 0.2rem; } /* ── 상담 대화상자 ── */ .consult-dialog { position: fixed; inset: 0; box-sizing: border-box; width: min(34rem, calc(100% - 2rem)); max-height: calc(100svh - 2rem); margin: auto; padding: 0; overflow: auto; overscroll-behavior: contain; color: var(--ink); background: var(--surface-raised); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-dialog); } html:has(.consult-dialog[open]) { overflow: hidden; } .consult-dialog::backdrop { background: rgb(var(--accent-rgb) / 0.12); } .dialog-shell { margin: 0; } .dialog-shell > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.5rem; padding: 1.5rem; border-bottom: 1px solid var(--line); } .dialog-shell > header span { color: var(--ink-3); font-size: 0.8125rem; font-weight: var(--weight-strong); } .dialog-shell h2 { margin: 0.25rem 0 0; font-size: 1.25rem; line-height: 1.3; } .dialog-close { width: 2.75rem; height: 2.75rem; flex: 0 0 auto; color: var(--ink); background: transparent; border: 1px solid var(--line); border-radius: var(--radius); font-size: 1.35rem; } .dialog-privacy { margin: 0; padding: 0.75rem 1.5rem; color: var(--ink-2); background: var(--surface); border-bottom: 1px solid var(--line); font-size: 0.8125rem; } .dialog-content { display: grid; gap: 0.6rem; padding: 1.5rem; } .dialog-content > p { margin: 0 0 0.5rem; } .dialog-content ol { margin: 0; padding-left: 1.25rem; } .dialog-shell > footer { display: flex; justify-content: flex-end; padding: 1rem 1.5rem; border-top: 1px solid var(--line); } .image-fallback { position: absolute; inset: 0; display: grid; place-items: center; padding: 1rem; color: var(--ink-2); background: var(--surface-sunken); font-size: 0.875rem; text-align: center; } .no-script { position: fixed; z-index: 200; right: 1rem; bottom: 1rem; max-width: 24rem; padding: 1rem; color: var(--ink-inverse); background: var(--ink); border-left: 3px solid var(--accent); border-radius: var(--radius); } .no-script p { margin: 0.25rem 0 0; font-size: 0.875rem; } /* ── 반응형 ── */ @media (max-width: 78rem) { .brief-dock { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem 1.25rem; } .dock-actions { grid-column: 1 / -1; justify-content: flex-start; padding-top: 0.5rem; } .compare-desk { grid-template-columns: minmax(0, 24rem) minmax(0, 1fr); } } @media (max-width: 60rem) { .site-header { padding: 0 1rem; } .menu-button { display: block; } .site-nav { position: fixed; z-index: 90; top: 6.5rem; right: 0; bottom: 0; left: 0; display: none; align-items: stretch; flex-direction: column; gap: 0; max-height: calc(100dvh - 6.5rem); padding: 0.5rem 1rem 1rem; overflow-y: auto; overscroll-behavior: contain; background: var(--surface-raised); border-bottom: 1px solid var(--line); } .site-nav.is-open { display: flex; } .site-nav a { min-height: 3rem; padding: 0 0.25rem; border-bottom: 1px solid var(--line); } .hero-head { flex-direction: column; align-items: flex-start; gap: 0.75rem; } .masthead-note { flex-wrap: wrap; gap: 0.25rem 1.25rem; } .listing-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } /* 두 열에서는 점수 순 재정렬(인라인 order)을 끄고 등록 순서를 지킨다 — 홀로 남는 세 번째 칸을 가로 한 줄로 펴야 빈 칸이 생기지 않는데, 그 칸이 중간에 끼면 자동 배치가 구멍을 남긴다 */ .candidate-option { order: initial !important; } .candidate-option:last-child { grid-column: 1 / -1; } .candidate-option:last-child .candidate-content { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; } .candidate-option:last-child .candidate-caption { align-content: start; min-height: 0; margin-bottom: 0; } .briefing-empty { grid-template-columns: 2.5rem minmax(0, 1fr); } .briefing-empty .button { grid-column: 2; justify-self: start; } .briefing-groups { grid-template-columns: minmax(0, 1fr); } .compare-desk { grid-template-columns: minmax(0, 1fr); } .candidate-scene > img { max-width: 28rem; } .condition-matrix { grid-template-rows: none; } .dossier-heading { grid-template-columns: minmax(0, 1fr); } .dossier-heading > p:last-child { text-align: left; } .site-footer { grid-template-columns: minmax(0, 1fr); grid-template-areas: "intro" "form" "legal"; } .footer-legal { grid-template-columns: minmax(0, 1fr); } } @media (max-width: 40rem) { .brand-lockup small { display: none; } .listing-hero { padding-top: 1rem; } .hero-head h1 { font-size: 1.125rem; } .brief-dock { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem 1rem; padding: 0.75rem 1rem; } .dock-actions { flex-wrap: wrap; gap: 0.5rem 1rem; padding-top: 0.25rem; } .dock-actions .button { flex: 1 1 12rem; } .candidate-option { padding: 0.75rem 0.75rem 1rem; } .candidate-caption { grid-template-columns: minmax(0, 1fr); min-height: 0; margin-bottom: 0.5rem; } .candidate-caption strong { font-size: 0.9375rem; } .candidate-verdict, .candidate-facts { grid-column: 1; } .candidate-facts { font-size: 0.8125rem; } .candidate-option figcaption, .candidate-scene > figcaption, .image-filmstrip figcaption { font-size: 0.8125rem; } .briefing-empty { grid-template-columns: minmax(0, 1fr); padding: 1.5rem 1rem; } .briefing-empty > span { display: none; } .briefing-empty .button { grid-column: 1; } .briefing-sheet > header, .briefing-groups section, .candidate-scene, .condition-matrix > div, .dossier-panel, .location-memo p, .consult-prep { padding-right: 1rem; padding-left: 1rem; } .condition-matrix > div { grid-template-columns: 5rem minmax(0, 1fr); } .image-filmstrip { grid-template-columns: minmax(0, 1fr); gap: 1rem; } .spec-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } .spec-strip div:last-child { grid-column: 1 / -1; } .decision-columns, .location-memo { grid-template-columns: minmax(0, 1fr); } .page-heading { grid-template-columns: minmax(0, 1fr); gap: 0.5rem; } .page-ledger div { grid-template-columns: minmax(0, 1fr); gap: 0.2rem; } .site-footer { padding-right: 1rem; padding-left: 1rem; } .handoff-cta { width: 100%; } .consult-dialog { width: calc(100% - 1rem); max-height: calc(100svh - 1rem); } .dialog-shell > header, .dialog-content, .dialog-shell > footer { padding: 1rem; } } @media (prefers-reduced-motion: reduce) { .candidate-option, .candidate-scene > img, .site-nav a, .dossier-tabs button, .unit-switches button { transition-duration: 0.01ms; } }