Some checks are pending
ci / build (push) Waiting to run
Measured convergence before: split hero 13/19, top-bar nav 19/19, one-line notice footer 14/19, body Pretendard 17/21, 10 similarity pairs above 0.78. Each showcase got a pre-assigned hero family, nav form, footer form, type pair, background, accent hue, radius, motion grammar and material from outputs/rework-2026-10-06/plan.md; direction cards and the chosen reason are recorded in every design.md. After: 0 similarity warnings, 19 distinct display faces, 7 hero families, 5 nav forms, 5 footer forms, no scroll reveals, 5 showcases with SVG filter materials. Example contact values replace bracket placeholders under the existing fictional-brand notices. Thumbnails, OG images, card copy and three e2e assertions updated; dead CSS in dure-enrollment and hannam-jari removed; similarity.mjs learns the new font families.
1570 lines
29 KiB
CSS
1570 lines
29 KiB
CSS
/* 한남자리 공개 화면 — 토큰은 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;
|
|
}
|
|
}
|