feat: strengthen design skill and refresh all showcases
Some checks failed
ci / build (push) Has been cancelled

This commit is contained in:
Yun Chan 2026-09-12 18:16:33 +09:00
parent 69e5cc1efd
commit e09d4efb1c
257 changed files with 8196 additions and 2374 deletions

View file

@ -1,5 +1,5 @@
.admin-body {
min-width: 20rem;
min-width: 0;
color: #1c1c1a;
background: #f3f4f3;
}
@ -237,7 +237,7 @@
display: inline-flex;
align-items: center;
gap: 0.55rem;
padding: 0.42rem 0.6rem;
padding: 0.42rem 0.7rem;
}
.topbar-actions .icon-button {
@ -390,10 +390,10 @@
gap: 0.5rem;
align-items: center;
margin-bottom: 0.75rem;
padding: 0.7rem;
padding: 0.875rem;
background: #fff;
border: 1px solid #dedfdd;
border-radius: 0.5rem;
border: 1px solid var(--brief-rule);
border-radius: var(--brief-panel-radius);
}
.search-field {
@ -412,6 +412,7 @@
width: 100%;
min-height: 2.75rem;
min-width: 0;
padding-inline: 0.5rem;
color: #222320;
background: transparent;
border: 0;
@ -419,6 +420,11 @@
font-size: 0.72rem;
}
.search-field:focus-within {
border-color: var(--focus);
box-shadow: 0 0 0 2px color-mix(in srgb, var(--focus) 32%, transparent);
}
.queue-toolbar select {
min-height: 2.75rem;
padding: 0.42rem 1.8rem 0.42rem 0.65rem;
@ -459,7 +465,8 @@
.settings-proof {
background: #fff;
border: 1px solid #dedfdd;
border-radius: 0.55rem;
border-radius: var(--brief-panel-radius);
box-shadow: none;
}
.queue-panel {
@ -522,7 +529,11 @@
}
.table-scroll {
min-width: 0;
max-width: 100%;
overflow: auto;
overscroll-behavior-inline: contain;
scrollbar-gutter: stable both-edges;
scrollbar-width: thin;
}
@ -535,9 +546,9 @@
.queue-table th,
.queue-table td {
padding: 0.7rem 0.6rem;
padding: 0.8rem 0.875rem;
border-bottom: 1px solid #ecedea;
font-size: 0.66rem;
font-size: var(--admin-body-size);
text-align: left;
vertical-align: middle;
}
@ -548,7 +559,7 @@
top: 0;
color: #777973;
background: #fafbfa;
font-size: 0.58rem;
font-size: var(--admin-meta-size);
font-weight: 730;
}
@ -605,7 +616,7 @@
.queue-table td > strong + small {
margin-top: 0.13rem;
color: #62665f;
font-size: 0.57rem;
font-size: var(--admin-meta-size);
}
.row-title {
@ -822,6 +833,13 @@
to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
.queue-loading > span {
animation: none;
opacity: 0.72;
}
}
.queue-empty > span {
display: grid;
width: 3rem;
@ -1087,7 +1105,7 @@
.text-button {
min-width: 2.75rem;
min-height: 2.75rem;
padding: 0.4rem;
padding: 0.5rem;
color: #6f5420;
background: transparent;
border: 0;
@ -1510,23 +1528,26 @@
.claim-review article {
margin-bottom: 0.5rem;
padding: 0.65rem;
padding: 0.75rem;
background: #fafbfa;
border: 1px solid #e1e2df;
border: 1px solid var(--brief-rule);
border-left-width: 3px;
border-radius: 0.35rem;
border-radius: var(--brief-panel-radius);
}
.claim-review article.is-fact {
border-left-color: #3d7c5d;
background: var(--review-fact-bg);
}
.claim-review article.is-unknown {
border-left-color: #b1832d;
background: var(--review-unknown-bg);
}
.claim-review article.is-edited {
border-left-color: #9d3f34;
background: var(--review-edited-bg);
}
.claim-review header {
@ -1791,9 +1812,15 @@
}
.admin-dialog {
position: fixed;
inset: 0;
box-sizing: border-box;
width: min(35rem, calc(100% - 2rem));
max-height: calc(100dvh - 2rem);
margin: auto;
padding: 0;
overflow: auto;
overscroll-behavior: contain;
color: #20211f;
background: #fff;
border: 0;
@ -1801,6 +1828,10 @@
box-shadow: 0 1.5rem 5rem rgba(20, 20, 19, 0.28);
}
html:has(.admin-dialog[open]) {
overflow: hidden;
}
.admin-dialog::backdrop {
background: rgba(20, 20, 19, 0.62);
backdrop-filter: blur(2px);
@ -1923,6 +1954,13 @@
font-size: 0.65rem;
}
@media (min-width: 120rem) {
.admin-content {
max-width: 122rem;
padding: 2rem;
}
}
@media (max-width: 92rem) {
.admin-workbench {
grid-template-columns: minmax(35rem, 1fr) 23rem;
@ -1977,6 +2015,33 @@
}
}
/* 짧은 가로 화면은 조사관을 덮는 시트로 다뤄야 한다.
미디어·부제까지 고정하면 scroll 영역이 0px로 수축해 핵심 검토 내용이 전부 사라진다. */
@media (max-width: 76rem) and (max-height: 40rem) {
.inspector {
top: 0;
max-height: 100dvh;
}
.inspector-header {
padding: 0.65rem 0.8rem;
}
.inspector-header small,
.inspector-media {
display: none;
}
.inspector-tabs button {
min-height: 2.25rem;
padding-block: 0.45rem;
}
.inspector-actions {
padding: 0.5rem;
}
}
@media (max-width: 64rem) {
.admin-shell {
grid-template-columns: 13.5rem minmax(0, 1fr);
@ -2034,11 +2099,29 @@
}
.admin-topbar {
min-width: 0;
gap: 0.5rem;
padding: 0 0.8rem;
}
.breadcrumb {
margin-right: auto;
min-width: 0;
overflow-wrap: anywhere;
}
.topbar-actions {
min-width: 0;
flex: 0 0 auto;
}
.account-button {
display: grid;
width: 2.75rem;
min-width: 0;
flex: 0 0 2.75rem;
place-items: center;
padding: 0;
}
.icon-button kbd,
@ -2087,7 +2170,7 @@
@media (max-width: 34rem) {
.demo-strip {
min-height: 2.3rem;
padding-inline: 0.5rem;
padding-inline: 0.75rem;
}
.admin-sidebar,
@ -2141,6 +2224,29 @@
}
}
/* 이 규칙은 좁은 폭 보정 뒤에 둬야 한다. 그렇지 않으면 34rem 보정의 top 값이
짧은 화면 시트보다 뒤에 적용되어 스크롤 영역이 다시 0px가 된다. */
@media (max-width: 76rem) and (max-height: 40rem) {
.inspector {
top: 0;
max-height: 100dvh;
}
.channel-gates {
grid-template-columns: repeat(2, minmax(0, 1fr));
padding: 0.35rem;
gap: 0.35rem;
}
.channel-gate {
padding: 0.35rem 0.4rem;
}
.channel-gate small {
display: none;
}
}
/* 작은 운영 문구도 본문 대비 기준을 넘도록 중립색을 한 단계 진하게 쓴다. */
.admin-main small,
.admin-main dt,

View file

@ -100,12 +100,6 @@ body {
color: var(--slate-deep);
}
.site-nav .nav-admin {
padding: 0 0.95rem;
color: var(--sheet);
background: var(--charcoal);
}
.menu-button {
display: none;
width: 2.75rem;
@ -165,6 +159,7 @@ body {
.brief-hero {
display: grid;
min-width: 0;
width: min(100%, 96rem);
margin: 0 auto;
padding: 3rem 2rem 0;
@ -292,12 +287,14 @@ body {
grid-area: dock;
display: grid;
grid-template-columns: minmax(10rem, 1.15fr) repeat(5, minmax(7.5rem, 0.8fr)) minmax(10rem, 1fr);
gap: 0.8rem 1rem;
min-width: 0;
gap: 1rem;
align-items: end;
margin: -5.5rem 2.5rem 0;
padding: 1.35rem 1.5rem 1rem;
background: var(--sheet);
border-top: 3px solid var(--charcoal);
border-bottom: 1px solid var(--brief-rule);
box-shadow: 0 6px 0 var(--paper-shadow), 0 1.4rem 3rem rgba(44, 45, 40, 0.1);
}
@ -312,34 +309,35 @@ body {
.dock-heading span {
color: var(--slate-deep);
font-size: 0.62rem;
font-size: var(--brief-label-size);
font-weight: 760;
}
.dock-heading strong {
margin-top: 0.2rem;
font-size: 0.8rem;
font-size: 0.9375rem;
}
.dock-field > span:first-child {
display: block;
margin-bottom: 0.3rem;
color: #646963;
font-size: 0.61rem;
font-size: var(--brief-label-size);
font-weight: 710;
}
.dock-field input,
.dock-field select {
width: 100%;
min-height: 2.75rem;
padding: 0.55rem 0.4rem;
min-height: 3rem;
padding: 0.55rem 0.5rem;
color: var(--charcoal);
background: transparent;
border: 0;
border-bottom: 1px solid #90948e;
border-radius: 0;
font-size: 0.78rem;
font-size: var(--brief-input-size);
font-variant-numeric: tabular-nums;
font-weight: 710;
}
@ -373,7 +371,7 @@ body {
.save-button {
min-height: 2.75rem;
padding: 0.35rem;
padding: 0.5rem;
color: #555b56;
background: transparent;
border: 0;
@ -409,6 +407,17 @@ body {
gap: clamp(3rem, 7vw, 7rem);
}
/* 1920px 이상에서는 비교·서류 표면만 조금 넓혀 여백이 본문을 압도하지 않게 한다. */
@media (min-width: 120rem) {
.brief-hero {
width: min(100%, 104rem);
}
.briefing-section {
width: min(100% - 4rem, 100rem);
}
}
.briefing-heading {
align-self: center;
}
@ -537,25 +546,34 @@ body {
.compare-heading {
display: grid;
min-width: 0;
align-items: end;
grid-template-columns: minmax(28rem, 1fr) minmax(17rem, 0.5fr) auto;
grid-template-columns: minmax(0, 1fr) minmax(0, 0.5fr) minmax(0, auto);
gap: 3rem;
margin-bottom: 3.5rem;
}
.compare-heading > p {
min-width: 0;
margin: 0 0 0.45rem;
color: #5a605b;
font-size: 0.8rem;
}
.compare-heading h2 {
overflow-wrap: anywhere;
word-break: normal;
}
.unit-switches {
display: flex;
min-width: 0;
gap: 0.6rem;
}
.unit-switches > div {
display: flex;
min-width: 0;
border: 1px solid var(--hairline);
}
@ -1035,8 +1053,9 @@ body {
.handoff-section {
display: grid;
min-width: 0;
align-items: center;
grid-template-columns: minmax(24rem, 0.8fr) minmax(28rem, 1fr) auto;
grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr) minmax(0, auto);
gap: clamp(3rem, 7vw, 7rem);
padding: clamp(6rem, 9vw, 9rem) max(2rem, calc((100% - 92rem) / 2));
color: var(--sheet);
@ -1047,6 +1066,18 @@ body {
color: #bec7cc;
}
.handoff-section > header,
.handoff-steps,
.handoff-cta {
min-width: 0;
}
.handoff-section h2,
.handoff-steps p,
.handoff-cta {
overflow-wrap: anywhere;
}
.handoff-steps {
margin: 0;
padding: 0;
@ -1122,9 +1153,15 @@ body {
}
.consult-dialog {
position: fixed;
inset: 0;
box-sizing: border-box;
width: min(36rem, calc(100% - 2rem));
max-height: calc(100svh - 2rem);
margin: auto;
padding: 0;
overflow: auto;
overscroll-behavior: contain;
color: var(--charcoal);
background: var(--sheet);
border: 1px solid var(--charcoal);
@ -1132,6 +1169,10 @@ body {
box-shadow: 0 2rem 5rem rgba(0, 0, 0, 0.28);
}
html:has(.consult-dialog[open]) {
overflow: hidden;
}
.consult-dialog::backdrop {
background: rgba(18, 19, 17, 0.72);
}
@ -1298,12 +1339,16 @@ body {
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.75rem 1.25rem 1.25rem;
overflow-y: auto;
overscroll-behavior: contain;
background: var(--sheet);
border-bottom: 1px solid var(--hairline);
}
@ -1312,8 +1357,7 @@ body {
display: flex;
}
.site-nav a,
.site-nav .nav-admin {
.site-nav a {
min-height: 3rem;
padding: 0 0.5rem;
color: var(--charcoal);
@ -1324,15 +1368,15 @@ body {
.brief-hero {
padding: 0;
grid-template-areas: "masthead" "scene" "dock";
grid-template-columns: 1fr;
grid-template-columns: minmax(0, 1fr);
}
.masthead {
padding: 5rem max(1.25rem, calc((100% - 44rem) / 2)) 4rem;
padding: 5rem max(1.25rem, calc((100% - 44rem) / 2)) var(--space-10);
}
.hero-scene {
height: min(70vw, 40rem);
height: min(70vw, 38rem);
min-height: 32rem;
}
@ -1371,7 +1415,7 @@ body {
}
.compare-heading {
grid-template-columns: 1fr auto;
grid-template-columns: minmax(0, 1fr) minmax(0, auto);
}
.compare-heading > p {
@ -1439,7 +1483,7 @@ body {
}
.handoff-section {
grid-template-columns: 1fr;
grid-template-columns: minmax(0, 1fr);
}
.handoff-cta {
@ -1456,6 +1500,7 @@ body {
}
@media (max-width: 40rem) {
.handoff-cta { width: 100%; min-width: 0; }
.demo-strip {
font-size: 0.62rem;
}
@ -1576,7 +1621,7 @@ body {
}
.compare-heading {
grid-template-columns: 1fr;
grid-template-columns: minmax(0, 1fr);
gap: 1.5rem;
margin-bottom: 2.5rem;
}

View file

@ -51,6 +51,15 @@
--radius-md: 0.75rem;
--radius-lg: 1.25rem;
--transition: 180ms cubic-bezier(0.22, 1, 0.36, 1);
--brief-label-size: 0.8125rem;
--brief-input-size: 1rem;
--brief-panel-radius: 0.5rem;
--brief-rule: var(--line-light);
--admin-body-size: 0.8125rem;
--admin-meta-size: 0.75rem;
--review-fact-bg: #f2f8f4;
--review-unknown-bg: #fff8e8;
--review-edited-bg: #fdf0ed;
}
*,