/* 대시보드 셸(546) — 색 · 간격은 .b01-shell 안 변수만(프로젝트 화면 영향 0) · 간격 = 4 의 배수 */ .b01-shell { --b01-accent: #1f7a4d; --b01-accent-soft: #eaf5ee; --b01-accent-text: #ffffff; --b01-bg: #f6f7f9; --b01-card: #ffffff; --b01-line: #e6e8ec; --b01-text: #1f2328; --b01-muted: #6b7280; --b01-hover: #f3f4f6; --b01-alert: #e5484d; --b01-radius: 10px; --b01-head-h: 48px; --b01-nav-w: 210px; --b01-rail-w: 56px; /* 옛 구역 부품(공용 카드 · 표 · 단추)도 셸 색을 따름 — 셸 안에서만 */ --color-bg: var(--b01-bg); --color-surface: var(--b01-card); --color-surface-raised: var(--b01-card); --color-border: var(--b01-line); --color-primary: var(--b01-accent); --color-primary-text: var(--b01-accent-text); min-height: 100dvh; display: grid; grid-template-rows: var(--b01-head-h) 1fr; background: var(--b01-bg); color: var(--b01-text); } :root[data-theme="dark"] .b01-shell { --b01-accent: #3fae75; --b01-accent-soft: #173326; --b01-accent-text: #0e1512; --b01-bg: #121417; --b01-card: #1b1e23; --b01-line: #2c3038; --b01-text: #e6e8eb; --b01-muted: #9aa1ab; --b01-hover: #242830; --b01-alert: #f06b6f; } /* 옛 ☰ 서랍 · 떠 있는 단추 — 대시보드에선 걷음(왼쪽 메뉴 · 사용자 메뉴가 맡음) */ html:has(.b01-shell) .app-header { display: none; } /* 위 머리 */ .b01-shell__head { position: sticky; top: 0; z-index: var(--z-header); display: flex; align-items: center; gap: 12px; padding: 0 16px; background: var(--b01-card); border-bottom: 1px solid var(--b01-line); } .b01-shell__brand { font-weight: 800; letter-spacing: 0.6px; color: var(--b01-text); text-decoration: none; } .b01-shell__org { display: inline-flex; align-items: center; gap: 4px; max-width: 220px; padding: 4px 8px; border: 1px solid var(--b01-line); border-radius: 8px; background: none; color: var(--b01-muted); font: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .b01-shell__org.is-switch { cursor: pointer; } .b01-shell__org.is-switch:hover { background: var(--b01-hover); color: var(--b01-text); } .b01-shell__search { width: 240px; padding: 4px 12px; border: 1px solid var(--b01-line); border-radius: 8px; background: var(--b01-bg); color: var(--b01-text); font: inherit; } .b01-shell__spacer { flex: 1; } .b01-shell__icon-btn { position: relative; display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--b01-line); border-radius: 8px; background: var(--b01-card); color: var(--b01-muted); cursor: pointer; } .b01-shell__icon-btn:disabled { cursor: default; } .b01-shell__icon-btn:not(:disabled):hover { background: var(--b01-hover); color: var(--b01-text); } .b01-shell__icon-btn .b01-shell__badge { position: absolute; top: -6px; right: -6px; margin: 0; } .ui-icon { display: inline-grid; place-items: center; flex: none; } /* 사용자 메뉴 */ .b01-shell__user { position: relative; } .b01-shell__user-btn { display: inline-flex; align-items: center; gap: 8px; padding: 4px 8px 4px 4px; border: 0; border-radius: 8px; background: none; color: var(--b01-text); font: inherit; cursor: pointer; } .b01-shell__user-btn:hover { background: var(--b01-hover); } .b01-shell__avatar { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--b01-accent-soft); color: var(--b01-accent); font-weight: 700; font-size: 12px; } .b01-shell__user-name { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .b01-shell__menu { position: absolute; top: calc(100% + 4px); right: 0; z-index: var(--z-dropdown); display: flex; flex-direction: column; min-width: 240px; padding: 4px; background: var(--b01-card); border: 1px solid var(--b01-line); border-radius: var(--b01-radius); box-shadow: 0 8px 24px rgba(16, 24, 40, 0.12); } .b01-shell__menu[hidden] { display: none; } .b01-shell__menu-who { display: flex; flex-direction: column; gap: 4px; padding: 8px 12px 12px; border-bottom: 1px solid var(--b01-line); margin-bottom: 4px; } .b01-shell__menu-who span { color: var(--b01-muted); font-size: 12px; } .b01-shell__menu-item, .b01-shell__menu-touch { display: flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 12px; border: 0; border-radius: 8px; background: none; color: var(--b01-text); font: inherit; text-align: left; cursor: pointer; } .b01-shell__menu-item:hover { background: var(--b01-hover); } .b01-shell__menu-touch { cursor: default; } .b01-shell__menu-touch > span:nth-child(2) { flex: 1; } .b01-shell__menu-touch button { padding: 2px 8px; border: 1px solid var(--b01-line); border-radius: 12px; background: var(--b01-card); color: var(--b01-muted); font: inherit; font-size: 12px; cursor: pointer; } .b01-shell__menu-touch button[aria-pressed="true"] { border-color: var(--b01-accent); background: var(--b01-accent-soft); color: var(--b01-accent); } /* 몸통 — 왼쪽 메뉴 + 페이지 */ .b01-shell__body { display: grid; grid-template-columns: var(--b01-nav-w) minmax(0, 1fr); } .b01-shell__nav { position: sticky; top: var(--b01-head-h); height: calc(100dvh - var(--b01-head-h)); overflow-y: auto; padding: 8px; background: var(--b01-card); border-right: 1px solid var(--b01-line); } .b01-shell__nav-group { margin: 12px 8px 4px; color: var(--b01-muted); font-size: 12px; } .b01-shell__nav-item { display: flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 8px; border-radius: 8px; color: var(--b01-text); text-decoration: none; } .b01-shell__nav-item:hover { background: var(--b01-hover); } .b01-shell__nav-item.is-active { background: var(--b01-accent-soft); color: var(--b01-accent); font-weight: 600; } .b01-shell__nav-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .b01-shell__badge { min-width: 20px; padding: 0 4px; border-radius: 8px; background: var(--b01-hover); color: var(--b01-muted); font-size: 11px; font-weight: 600; line-height: 16px; text-align: center; } .b01-shell__badge.is-alert { background: var(--b01-alert); color: #fff; } .b01-shell__badge[hidden] { display: none; } .b01-shell__main { min-width: 0; padding: 20px 24px 32px; } /* 도움 페이지 카드 */ .b01-shell__card { padding: 16px; background: var(--b01-card); border: 1px solid var(--b01-line); border-radius: var(--b01-radius); } .b01-shell__help { display: flex; align-items: center; gap: 16px; max-width: 640px; } .b01-shell__help p { flex: 1; margin: 0; } /* 작은 화면 — 메뉴는 아이콘 레일 · 머리 찾기 칸 · 이름 숨김 */ @media (max-width: 1024px) { .b01-shell__body { grid-template-columns: var(--b01-rail-w) minmax(0, 1fr); } .b01-shell__nav-group { height: 1px; margin: 8px 4px; overflow: hidden; background: var(--b01-line); color: transparent; } .b01-shell__nav-item { position: relative; justify-content: center; padding: 0; } .b01-shell__nav-label { display: none; } .b01-shell__nav-item .b01-shell__badge { position: absolute; top: 0; right: 0; } .b01-shell__search, .b01-shell__user-name { display: none; } }