/* 대시보드 홈(PLAN 547-2) — 색 · 간격 = 셸 변수(--b01-*) · 종류 색 = 테마 차트 변수 */ .b01-home { --b01-home-road: var(--b01-accent); --b01-home-plan: var(--color-chart-0); --b01-home-stab: var(--color-chart-2); --b01-home-warn: var(--color-warning); display: flex; flex-direction: column; gap: var(--spacing-16); color: var(--b01-text); } .b01-home__head { display: flex; align-items: center; gap: var(--spacing-12); flex-wrap: wrap; } .b01-home__head h2 { margin: 0; font-size: 19px; } .b01-home__push { margin-left: auto; } .b01-home__muted { color: var(--b01-muted); font-size: 12px; } .b01-home__stale { color: var(--b01-home-warn); font-size: 12px; font-weight: 600; } .b01-home__alert { color: var(--b01-alert); } .b01-home__seg { display: inline-flex; border: 1px solid var(--b01-line); border-radius: 8px; overflow: hidden; } .b01-home__seg button { border: 0; background: var(--b01-card); color: var(--b01-text); padding: var(--spacing-4) var(--spacing-12); font: inherit; font-size: 12px; cursor: pointer; } .b01-home__seg button.on { background: var(--b01-accent); color: var(--b01-accent-text); } .b01-home__body { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: var(--spacing-16); align-items: start; } .b01-home__main, .b01-home__side { display: flex; flex-direction: column; gap: var(--spacing-12); min-width: 0; } .b01-home__pane { background: var(--b01-card); border: 1px solid var(--b01-line); border-radius: var(--b01-radius); padding: var(--spacing-12) var(--spacing-16); display: flex; flex-direction: column; gap: var(--spacing-8); } .b01-home__pane > .ui-btn { align-self: flex-start; } .b01-home__pane-title { margin: 0; font-size: 13px; } .b01-home__actions { display: flex; gap: var(--spacing-8); flex-wrap: wrap; } /* 종류 배지 · 썸네일 · 단계 점 */ .b01-home__kind--road { --kind: var(--b01-home-road); } .b01-home__kind--plan { --kind: var(--b01-home-plan); } .b01-home__kind--stability { --kind: var(--b01-home-stab); } .b01-home__kind--erosion { --kind: var(--b01-muted); } .b01-home__badge { display: inline-block; font-size: 11px; font-weight: 600; border-radius: 5px; padding: 0 6px; white-space: nowrap; color: var(--kind); border: 1px solid var(--kind); } .b01-home__title { display: flex; align-items: center; gap: var(--spacing-8); min-width: 0; } .b01-home__title b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .b01-home__thumb { display: block; width: 100%; background: var(--b01-accent-soft); } .b01-home__thumb polyline { fill: none; stroke: var(--kind); stroke-width: 3; stroke-linejoin: round; stroke-linecap: round; } .b01-home__thumb--big { height: 210px; } .b01-home__thumb--mid { height: 100px; } .b01-home__thumb--row { width: 80px; height: 44px; border-radius: 6px; } .b01-home__thumb--row polyline { stroke-width: 2; } .b01-home__pips { display: flex; gap: 4px; } .b01-home__pips i { flex: 1; height: 7px; border-radius: 4px; background: var(--b01-line); box-sizing: border-box; } .b01-home__pips i.ok { background: var(--kind); } .b01-home__pips i.cur { background: var(--b01-card); border: 2px solid var(--kind); } .b01-home__next { border: 1px solid var(--b01-home-warn); border-radius: 8px; padding: var(--spacing-4) var(--spacing-8); font-size: 12.5px; } /* 1 — 큰 카드 */ .b01-home__big { padding: 0; overflow: hidden; gap: 0; } .b01-home__big-top { display: grid; grid-template-columns: 1.1fr 1fr; } .b01-home__big-info { padding: var(--spacing-12) var(--spacing-16); display: flex; flex-direction: column; gap: var(--spacing-8); } .b01-home__big-info .b01-home__title b { font-size: 17px; } .b01-home__metrics { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; border-top: 1px solid var(--b01-line); } .b01-home__metrics div { padding: var(--spacing-8) var(--spacing-12); border-left: 1px solid var(--b01-line); } .b01-home__metrics div:first-child { border-left: 0; } .b01-home__metrics b { display: block; font-size: 15px; font-variant-numeric: tabular-nums; } .b01-home__metrics span { color: var(--b01-muted); font-size: 11.5px; } /* 2~3 — 중간 카드 */ .b01-home__mids { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--spacing-12); } .b01-home__mid { background: var(--b01-card); border: 1px solid var(--b01-line); border-radius: var(--b01-radius); overflow: hidden; } .b01-home__mid--first { border-color: var(--b01-accent); } .b01-home__mid-body { padding: var(--spacing-8) var(--spacing-12) var(--spacing-12); display: flex; flex-direction: column; gap: var(--spacing-4); } /* 4~8 — 한 줄 목록 */ .b01-home__split { display: grid; grid-template-columns: 1.3fr 1fr; gap: var(--spacing-12); align-items: start; } .b01-home__split--list { grid-template-columns: minmax(0, 1fr) 220px; } .b01-home__split--list > div { display: flex; flex-direction: column; gap: var(--spacing-8); min-width: 0; } .b01-home__rows { background: var(--b01-card); border: 1px solid var(--b01-line); border-radius: var(--b01-radius); overflow: hidden; } .b01-home__row { display: grid; grid-template-columns: 80px minmax(0, 1.2fr) minmax(0, 1fr) auto; gap: var(--spacing-12); align-items: center; padding: var(--spacing-8) var(--spacing-12); border-top: 1px solid var(--b01-line); cursor: pointer; } .b01-home__row:first-child { border-top: 0; } .b01-home__row:hover, .b01-home__row:focus-visible { background: var(--b01-hover); outline: none; } .b01-home__row--stale { box-shadow: inset 3px 0 0 var(--b01-home-warn); } .b01-home__member { display: flex; align-items: center; gap: var(--spacing-8); font-size: 12.5px; } .b01-home__avatar { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: 10px; font-weight: 700; background: var(--b01-accent-soft); color: var(--b01-accent); } .b01-home__stack { display: flex; height: 10px; border-radius: 6px; overflow: hidden; background: var(--b01-line); } .b01-home__stack i { display: block; height: 100%; } .b01-home__stack--start { background: var(--b01-accent-soft); } .b01-home__stack--working { background: var(--b01-accent); } .b01-home__stack--last { background: var(--b01-home-warn); } /* 9 넘음 — 요약 숫자 · 그래프 */ .b01-home__many { display: flex; flex-direction: column; gap: var(--spacing-12); } .b01-home__kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: var(--spacing-12); } .b01-home__kpi { background: var(--b01-card); border: 1px solid var(--b01-line); border-radius: var(--b01-radius); padding: var(--spacing-8) var(--spacing-12); } .b01-home__kpi b { display: block; font-size: 22px; font-variant-numeric: tabular-nums; } .b01-home__bars text { font-size: 10px; fill: var(--b01-text); } .b01-home__bars rect { fill: var(--b01-accent); } .b01-home__bars rect.rest { fill: var(--b01-accent-soft); } .b01-home__donut-row { display: flex; align-items: center; gap: var(--spacing-16); } .b01-home__donut circle { fill: none; stroke: var(--kind); stroke-width: 6; } .b01-home__donut text { font-size: 8px; font-weight: 700; fill: var(--b01-text); } .b01-home__legend { display: grid; gap: var(--spacing-4); font-size: 12px; } .b01-home__legend span { display: flex; align-items: center; gap: var(--spacing-4); } .b01-home__swatch { width: 9px; height: 9px; border-radius: 3px; background: var(--kind); } /* 오른쪽 — 처리할 일 · 처음 세 걸음 */ .b01-home__todo, .b01-home__step { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--spacing-8); align-items: center; font-size: 12.5px; } .b01-home__dot { width: 7px; height: 7px; border-radius: 50%; } .b01-home__dot--plan { background: var(--b01-home-plan); } .b01-home__dot--warn { background: var(--b01-home-warn); } .b01-home__dot--alert { background: var(--b01-alert); } .b01-home__step-no { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; border: 2px solid var(--b01-accent); color: var(--b01-accent); } .b01-home__step--done .b01-home__step-no { background: var(--b01-accent); color: var(--b01-accent-text); } @media (max-width: 900px) { .b01-home__body, .b01-home__split, .b01-home__split--list, .b01-home__big-top { grid-template-columns: 1fr; } .b01-home__row { grid-template-columns: 60px minmax(0, 1fr) auto; } .b01-home__row-stage { display: none; } }