@charset "UTF-8"; /** * 반응형 폰트 크기 (responsive font) * @param {number} $min-px - 최소 폰트 크기 (px) * @param {number} $max-px - 최대 폰트 크기 (px) * @param {number} $min-vw - 최소 뷰포트 너비 (기본값: 375px) * @param {number} $max-vw - 최대 뷰포트 너비 (기본값: 1920px) */ /** * 박스 그림자 (box-shadow) * @param {number} $x - X 오프셋 (기본값: 0px) * @param {number} $y - Y 오프셋 (기본값: 3px) * @param {number} $blur - 블러 반경 (기본값: 6px) * @param {number} $spread - 확산 반경 (기본값: 0px) * @param {color} $color - 색상 (기본값: rgba(0, 0, 0, 0.25)) * @param {boolean} $important - !important 사용 여부 (기본값: false) */ /** * 텍스트 그림자(text-shadow) * @param {number} $x - X 오프셋 (기본값: 0px) * @param {number} $y - Y 오프셋 (기본값: 1px) * @param {number} $blur - 블러 반경 (기본값: 0px) * @param {color} $color - 색상 (기본값: rgba(0, 0, 0, 0.25)) * @param {boolean} $important - !important 사용 여부 (기본값: false) */ /** * 미디어 쿼리 mixin * @param {string|number} $width - 브레이크포인트 이름 또는 픽셀 값 * @param {string} $type - 'min' 또는 'max' * @example * @include mq('desktop') { ... } * @include mq(1920px) { ... } * @include mq('tablet', 'max') { ... } */ :root { /* background */ --bg-base: linear-gradient(180deg, #ece3d2 0%, #b7ac96 84.27%), #f3efea; --bg-transparent: transparent; --bg-section: #f3efea; --bg-card: #fff; --bg-chart: #fafafa; --bg-title: linear-gradient( 180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.2) 100% ), #895d24; --bg-calendar: #f6f3f0; --bg-change: rgba(0, 0, 0, 0.08); --bg-change-up: rgba(230, 4, 3, 0.08); --bg-change-down: rgba(0, 47, 255, 0.08); --bg-chart-highlight: rgba(255, 92, 0, 0.25); --bg-chart-mixbullet: #d84101; --bg-badge-year: rgba(220, 103, 0, 0.15); --bg-badge-month: linear-gradient( 0deg, rgba(255, 119, 0, 0.1) 0%, rgba(255, 119, 0, 0.1) 100% ), #fff; --bg-badge-linearea01: linear-gradient( 0deg, rgba(43, 143, 16, 0.1) 0%, rgba(43, 143, 16, 0.1) 100% ), #fff; --bg-badge-linearea02: linear-gradient( 0deg, rgba(124, 16, 143, 0.1) 0%, rgba(124, 16, 143, 0.1) 100% ), #fff; --bg-chart-mixbar01: #4cae9b; --bg-chart-mixbar02: #60b7a6; --bg-chart-mixbar03: #389783; --bg-chart-mixbar: linear-gradient( 90deg, #4cae9b 0%, #60b7a6 37.09%, #389783 100% ); --bg-chart-area01: rgba(43, 143, 16, 0.3); --bg-chart-area02: rgba(124, 16, 143, 0.3); --bg-chart-linearea01: #2b8f10; --bg-chart-line01-bullet01: #89d774; --bg-chart-line01-bullet02: #2b8f10; --bg-chart-line01-bullet03: #257011; --bg-chart-linearea02: #7c108f; --bg-chart-line02-bullet01: #eda1fa; --bg-chart-line02-bullet02: #831996; --bg-chart-line02-bullet03: #490754; --bg-individual01: rgba(43, 143, 16, 0.1); --bg-individual02: rgba(124, 16, 143, 0.1); /* border */ --border-base: rgba(0, 0, 0, 0.1); --border-primary: rgba(0, 0, 0, 0.1); --border-stat: #e7decd; --border-person: #e3dac8; --border-card-inner: rgba(0, 0, 0, 0.1); --border-title: linear-gradient(180deg, #825822 0%, #9d704c 100%); /* text color*/ --text-base: #000; --text-primary: #555; --text-secondary: #777; --stat-base: #333; --stat-primary: #d84101; --stat-secondary: #99572c; --stat-tertiary: #db6600; --unit-primary: #2b8f10; --unit-secondary: #7c108f; --unit-tertiary: #0098df; --text-weekly-title: #895d24; --card-title: #fff; --chart-base: #777; --change-base: #555; --change-label: #333; --change-up: #b00; --change-down: #00198b; --stat-accrue: #d84101; --stat-month: #f70; --stat-sales: #885d1a; --stat-unit-base: linear-gradient(180deg, #777 0%, #000 100%); --stat-unit-accrue: linear-gradient(180deg, #ff5c00 0%, #b94300 100%); --stat-unit-month: linear-gradient(180deg, #409d8a 0%, #1a4c45 100%); --stat-unit-individual01: linear-gradient(180deg, #2b8f10 0%, #1b580b 100%); --stat-unit-individual02: linear-gradient(180deg, #7c108f 0%, #41074c 100%); --stat-unit-sales: linear-gradient(180deg, #c4964b 0%, #5f2f0e 100%); /* chart color */ --grid-border-dashed: rgba(0, 0, 0, 0.2); --chart-mixline: #d84101; --chart-mixbar: #e76c00; /* etc */ --title-stroke: drop-shadow(0 0 1px rgba(0, 0, 0, 0.5)); --title-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5), 1px -1px 0 rgba(0, 0, 0, 0.5), -1px 1px 0 rgba(0, 0, 0, 0.5), 1px 1px 0 rgba(0, 0, 0, 0.5); } /** * 반응형 폰트 크기 (responsive font) * @param {number} $min-px - 최소 폰트 크기 (px) * @param {number} $max-px - 최대 폰트 크기 (px) * @param {number} $min-vw - 최소 뷰포트 너비 (기본값: 375px) * @param {number} $max-vw - 최대 뷰포트 너비 (기본값: 1920px) */ /** * 박스 그림자 (box-shadow) * @param {number} $x - X 오프셋 (기본값: 0px) * @param {number} $y - Y 오프셋 (기본값: 3px) * @param {number} $blur - 블러 반경 (기본값: 6px) * @param {number} $spread - 확산 반경 (기본값: 0px) * @param {color} $color - 색상 (기본값: rgba(0, 0, 0, 0.25)) * @param {boolean} $important - !important 사용 여부 (기본값: false) */ /** * 텍스트 그림자(text-shadow) * @param {number} $x - X 오프셋 (기본값: 0px) * @param {number} $y - Y 오프셋 (기본값: 1px) * @param {number} $blur - 블러 반경 (기본값: 0px) * @param {color} $color - 색상 (기본값: rgba(0, 0, 0, 0.25)) * @param {boolean} $important - !important 사용 여부 (기본값: false) */ /** * 미디어 쿼리 mixin * @param {string|number} $width - 브레이크포인트 이름 또는 픽셀 값 * @param {string} $type - 'min' 또는 'max' * @example * @include mq('desktop') { ... } * @include mq(1920px) { ... } * @include mq('tablet', 'max') { ... } */ html { scroll-behavior: smooth; } html.is-locked body { height: calc(var(--window-inner-height) - 1px); overflow: hidden; box-sizing: border-box; } html body { margin: 0; padding: 0; background: var(--bg-base); } .wrap { min-height: var(--window-inner-height); min-width: 1440px; } .header { position: relative; padding: 0 24px; height: 64px; display: flex; align-items: center; justify-content: center; } .header .logo { position: absolute; bottom: 12px; left: 24px; font-size: 28px; font-weight: bold; display: flex; align-items: center; justify-content: center; margin-right: 4px; padding: 0; } .header .logo .i-logo { display: inline-block; width: 38px; height: 24px; margin-top: 4px; background: url(../images/favicon.svg); background-position: center; background-size: 100% auto; } .header h1 { position: relative; font-size: 32px; font-weight: 700; color: var(--text-base); } .header h1::before { content: attr(data-text); position: absolute; inset: 0; opacity: 0.7; pointer-events: none; color: transparent; z-index: -1; filter: drop-shadow(0 0 1px rgba(255, 255, 255, 0.5)); text-shadow: -1px -1px 0 rgba(255, 255, 255, 0.5), 1px -1px 0 rgba(255, 255, 255, 0.5), -1px 1px 0 rgba(255, 255, 255, 0.5), 1px 1px 0 rgba(255, 255, 255, 0.5); } .header .date { position: absolute; right: 24px; bottom: 12px; font-size: 20px; font-weight: 500; color: var(--text-secondary); } :root { --header-height: 64px; --footer-height: 48px; --grid-gap: 24px; --total-offset: calc(var(--header-height) + var(--footer-height)); --grid-height: 576px; --card-height: 280px; --weekly-height: calc(var(--window-inner-height) - 576px - 24px - 64px); } /* $card-heights: ( "min": 280px, "default": calc((var(--grid-height) - var(--card-gap)) / 2), );*/ .main-contents { display: grid; min-height: calc(var(--window-inner-height) - var(--header-height)); grid-template-rows: var(--grid-height) auto; gap: 24px; } .main-grid { padding: 0 24px; display: grid; grid-template-columns: 418fr 335fr 247fr; grid-template-rows: repeat(2, 2fr); gap: 16px; height: var(--grid-height); } .main-weekly { position: relative; border-radius: 16px 16px 0 0; background-color: #fafafa; height: var(--weekly-height); box-shadow: 0 -4px 40px 0 rgba(0, 0, 0, 0.3); overflow: hidden; } .card { position: relative; border-radius: 8px; outline: 2px solid var(--border-base); background: var(--bg-card); overflow: hidden; } .card.individual, .card.sales { height: var(--grid-height); min-height: 576px; display: grid; grid-template-columns: 100%; grid-row: 1/3; } .card.individual { grid-column-start: 2; grid-template-rows: clamp(348px, var(--grid-height) - 228px, var(--grid-height) - 228px) 228px; } .card.individual .chart-wrap { display: grid; grid-template-columns: 100%; grid-template-rows: 38px calc( clamp(348px, var(--grid-height) - 228px, var(--grid-height) - 228px) - 38px ); } .card.individual .card-body { height: 228px; } .card.individual .stat-row [class^="change"] { font-size: 10px; } .card.individual .stat-row [class^="change"] em { font-size: 16px; } .card.individual .stat-row .big-num { font-size: 5.2rem; } .card.sales { grid-column-start: 3; grid-template-rows: 38px 96fr 516fr; } .card.sales .card-body { flex-direction: row-reverse; display: flex; align-items: center; justify-content: space-between; } .card.sales .chart-wrap { position: relative; display: grid; grid-template-columns: 100%; grid-template-rows: repeat( 2, clamp( (538px - (var(--card-height) - 38px) / 3) / 2, (var(--grid-height) - 38px - (var(--card-height) - 38px) / 3) / 2, (var(--grid-height) - 38px - (var(--card-height) - 38px) / 3) / 2 ) ); width: 100%; padding: 0 12px; height: calc( (var(--grid-height) - 38px - (var(--card-height) - 38px) / 3) / 2 * 2 ); min-height: calc((538px - (var(--card-height) - 38px) / 3) / 2 * 2); border-top: 1px solid var(--border-base); } .card.sales .chart-wrap .legend { position: absolute; right: 12px; top: 12px; z-index: 1; } .card.sales .chart-wrap .chart-body { padding: 0; height: calc( (var(--grid-height) - 38px - (var(--card-height) - 38px) / 3) / 2 ); min-height: calc((538px - (var(--card-height) - 38px) / 3) / 2); } .card.sales .chart-wrap .chart-body:not(:last-child) { border-bottom: 1px dashed var(--border-base); } .card.sales .chart-wrap .chart-tit { position: absolute; left: 0px; top: 10px; font-size: 16px; font-weight: 700; line-height: 1; } .card-header { position: relative; width: 100%; display: flex; align-items: center; justify-content: space-between; } .card-header h3 { position: relative; font-size: 20px; font-weight: 700; line-height: 1; height: 38px; padding: 0px 4px 0px 14px; color: var(--card-title); background: var(--bg-title); display: inline-flex; align-items: center; filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.5)); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5), 1px -1px 0 rgba(0, 0, 0, 0.5), -1px 1px 0 rgba(0, 0, 0, 0.5), 1px 1px 0 rgba(0, 0, 0, 0.5); } .card-header h3 .tail::before, .card-header h3 .tail::after { content: ""; position: absolute; top: 2px; right: -48px; width: 48px; height: 34px; background: var(--bg-title); box-sizing: border-box; -webkit-mask: url("../images/mask_tail.svg"); mask: url("../images/mask_tail.svg"); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: contain; mask-size: contain; -webkit-mask-position: center left; mask-position: center left; } .card-header h3 .tail::before { top: 0; height: 38px; background: var(--border-title); } .card-header h3::after { content: ""; position: absolute; top: 0px; left: 0; width: 100%; height: 100%; background: var(--border-title); inset: 0; -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; border-radius: inherit; padding: 1px; padding: 2px 0 2px; } .card-header .legend { padding-top: 12px; padding-right: 12px; align-self: flex-start; } .card-body { width: 100%; } .card.yearly, .card.month { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: 38px auto; height: clamp(280px, var(--card-height), var(--card-height)); } .card.yearly .chart-wrap, .card.month .chart-wrap { grid-column-start: 2; grid-row-start: 1; height: clamp(280px, var(--card-height), var(--card-height)); min-height: 280px; padding: 12px; border-left: 1px solid var(--border-base); } .card.yearly .chart-wrap .legend, .card.month .chart-wrap .legend { position: absolute; top: 12px; right: 12px; } .card.yearly .chart-body, .card.month .chart-body { height: calc(clamp(280px, var(--card-height), var(--card-height)) - 38px); } .card.yearly .card-body, .card.month .card-body { grid-column-start: 1; grid-row-start: 2; padding: 0 16px; display: grid; grid-template-columns: 100%; grid-template-rows: repeat(3, 1fr); } .stat-row { padding: 10px 0; width: 100%; white-space: nowrap; display: flex; align-items: center; justify-content: space-between; } .stat-row:not(:last-child) { border-bottom: 1px solid var(--border-base); } .stat-row.accrue { /* .label { color: $color; }*/ } .stat-row.accrue .big-num { font-weight: 700; background: var(--stat-primary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .stat-row.month { /* .label { color: $color; }*/ } .stat-row.month .big-num { font-weight: 700; background: var(--stat-tertiary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .stat-row.individual01 { /* .label { color: $color; }*/ } .stat-row.individual01 .big-num { font-weight: 700; background: var(--unit-primary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .stat-row.individual02 { /* .label { color: $color; }*/ } .stat-row.individual02 .big-num { font-weight: 700; background: var(--unit-secondary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .stat-row.sales { justify-content: center; gap: 40px; /* .label { color: $color; }*/ } .stat-row.sales .big-num { font-weight: 700; background: var(--stat-secondary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .stat-row.sales .unit { width: auto; } .stat-row .label-box { flex-direction: column; gap: 8px; display: flex; align-items: flex-start; justify-content: flex-start; } .stat-row .label { font-size: 16px; font-weight: 700; line-height: 1; color: var(--stat-base); } .stat-row [class^="change"] { padding: 4px 8px; height: 28px; border-radius: 50px; background: var(--bg-change); font-size: 12px; color: var(--change-base); gap: 4px; display: flex; align-items: center; justify-content: center; } .stat-row [class^="change"] em { position: relative; padding-left: 20px; font-size: 20px; font-weight: 700; line-height: 1.2; color: var(--text-base); } .stat-row [class^="change"] em::before { content: " "; position: absolute; left: 6px; top: calc(50% - 1px); width: 8px; height: 2px; background: var(--text-base); } .stat-row [class^="change"][class*="down"] { background: var(--bg-change-down); } .stat-row [class^="change"][class*="down"] em { color: var(--change-down); } .stat-row [class^="change"][class*="down"] em::before { left: 4px; top: calc(50% - 5px); width: 0; height: 0; background: none; border-style: solid; border-width: 10px 6px 0 6px; border-color: var(--change-down) transparent transparent transparent; } .stat-row [class^="change"][class*="up"] { background: var(--bg-change-up); } .stat-row [class^="change"][class*="up"] em { color: var(--change-up); } .stat-row [class^="change"][class*="up"] em::before { left: 4px; top: calc(50% - 5px); width: 0; height: 0; background: none; border-style: solid; border-width: 0 6px 10px 6px; border-color: transparent transparent var(--change-up) transparent; } .stat-row .big-num { font-size: 6.2rem; line-height: 1; } .stat-row .unit { display: inline-flex; width: 3rem; font-size: 1.8rem; } .stat-row .unit.copy { font-size: 1.4rem; } .stat-row .big-num, .stat-row .unit { font-weight: 700; /*background: var(--stat-unit-base); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent;*/ color: var(--stat-base); } .chart-wrap { background: var(--bg-chart); width: 100%; height: 100%; } .chart-header { width: 100%; display: flex; align-items: center; justify-content: space-between; } .chart-body { position: relative; flex-grow: 1; width: 100%; } .chart-body .badge-box { position: absolute; top: 8px; left: 48px; } [class^="badge"]:not([class*="box"]) { display: inline-block; padding: 4px; border-radius: 4px; border-width: 1px; border-style: solid; font-weight: 700; line-height: 1; overflow: hidden; } [class^="badge"][class*="box"] { gap: 8px; display: flex; align-items: center; justify-content: center; } [class^="badge"][class*="year"] { border-color: var(--stat-accrue); background: var(--bg-badge-year); color: var(--stat-accrue); font-size: 14px; } [class^="badge"][class*="month"] { border-color: var(--stat-month); background: var(--bg-badge-month); color: var(--stat-month); font-size: 14px; } [class^="badge"][class*="individual01"] { border-color: var(--unit-primary); background: var(--bg-badge-linearea01); color: var(--unit-primary); font-size: 14px; } [class^="badge"][class*="individual02"] { border-color: var(---unit-secondary); background: var(--bg-badge-linearea02); color: var(--unit-secondary); font-size: 14px; } /*개인별 판매실적 상단 목표량 뱃지 260105 sdi 추가 */ .card.individual .legend > span { display: inline-flex; align-items: center; gap: 3px; line-height: 1; } .legend { gap: 8px; font-size: 14px; color: var(--text-secondary); display: flex; align-items: center; justify-content: center; } .legend-dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 2px; } .legend-dot.mix-bar { background: var(--chart-mixbar); } .legend-dot.mix-line { background: var(--chart-mixline); } .legend-dot.line-area01 { background-color: var(--unit-primary); } .legend-dot.line-area02 { background-color: var(--unit-secondary); } .individual .chart-body { padding: 0 12px; border-bottom: 1px solid var(--border-base); } .individual .card-body { display: grid; grid-template-columns: repeat(2, 1fr); align-items: center; } .individual .card-body .person-box { padding: 0 16px; } .individual .person-box { position: relative; } .individual .person-box:nth-child(1):not(:last-child)::after { content: ""; position: absolute; right: 0; top: 0; height: 100%; border-right: 1px solid var(--border-base); } .individual .person-box:nth-child(1) .person-name { background-color: var(--bg-individual01); } .individual .person-box:nth-child(1) .person-name span, .individual .person-box:nth-child(1) .person-name small { background: var(--unit-primary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .individual .person-box:nth-child(2) .person-name { background-color: var(--bg-individual02); } .individual .person-box:nth-child(2) .person-name span, .individual .person-box:nth-child(2) .person-name small { background: var(--unit-secondary); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .individual .person-box .stat-row { padding: 16px 0; } .individual .person-box .stat-row:last-child { padding-bottom: 0; } .individual .person-name { text-align: center; height: 42px; width: 100%; border-radius: 8px; font-size: 22px; font-weight: 700; gap: 4px; display: flex; align-items: center; justify-content: center; } .individual .person-name small { padding-top: 4px; font-size: 16px; } .yearly_button { display: flex; align-items: center; justify-content: center; gap: 10px; } .yearly_button .year-nav-btn { width: 26px; height: 26px; border-radius: 4px; margin-top: 4px; border: 1px solid rgba(0, 0, 0, 0.4); background: linear-gradient(180deg, #f0f0f0 0%, #e1e0de 100%); box-shadow: 0 0.3px 2px 1px rgba(0, 0, 0, 0.1); display: flex; align-items: center; justify-content: center; } .weekly-grid { position: relative; display: grid; grid-template-columns: 260px auto; height: calc(100% - 80px); overflow: hidden; z-index: 1; } .weekly-header { padding: 18px 24px; height: calc(var(--weekly-height) - 80px); flex-direction: column; display: flex; align-items: flex-start; justify-content: space-between; border-right: 1px solid var(--border-base); } .weekly-title p { font-size: 18px; color: var(--text-primary); font-weight: 500; } .weekly-title h3 { color: var(--text-base); font-size: 24px; font-weight: 700; line-height: 1.4; } .weekly .week-navigation { gap: 10px; display: flex; align-items: center; justify-content: flex-start; } .weekly .week-nav-btn { width: 26px; height: 26px; border-radius: 4px; margin-top: 4px; border: 1px solid rgba(0, 0, 0, 0.4); background: linear-gradient(180deg, #f0f0f0 0%, #e1e0de 100%); box-shadow: 0 0.3px 2px 1px rgba(0, 0, 0, 0.1); display: flex; align-items: center; justify-content: center; } .weekly .person-list { gap: 2px; flex-direction: column; display: flex; align-items: center; justify-content: center; } .weekly .person-list .name { font-size: 1.6rem; font-weight: 500; } .weekly .person-list .name small { font-size: 1.2rem; font-weight: 500; } .weekly .person-list li { gap: 6px; display: flex; align-items: center; justify-content: center; } .weekly .person-list [class^="badge"] { margin-top: 2px; } .weekly [class^="badge"] { display: inline-block; width: 1.8rem; height: 1.8rem; font-size: 1.2rem; color: #fff; border: none; line-height: 1; padding: 2px; margin: 0px 2px; text-align: center; } .weekly .badge-green { background: var(--unit-primary); } .weekly .badge-purple { background: var(--unit-secondary); } .weekly .badge-teal { background: var(--unit-tertiary); } .weekly .badge-black { background: #111; } .weekly .schedule { display: grid; grid-template-columns: repeat(5, 1fr); height: calc(var(--weekly-height) - 80px); } /* .weekly .day dl { display: grid; grid-template-columns: 40px 1fr; column-gap: 8px; align-items: flex-start; padding: 12px 0; margin: 12px 0; padding: 10px 12px; background: #fafafa; border-radius: 6px; } */ .weekly .day dl dt { display: block; /* 🔥 숨겨져 있던 거 다시 살림 */ font-size: 13px; font-weight: 600; color: #555; line-height: 1.4; white-space: nowrap; margin-bottom: 6px; } .weekly .day dl dd.day-content { margin: 0; } /* 일정 리스트 영역 */ .weekly .day-content { display: flex; flex-direction: column; gap: 6px; } .weekly .day-card { position: relative; color: #555; } .weekly .day-card.today { background-color: #f4e1d3; color: #000; } .weekly .day-card.today .active { background: rgba(255, 92, 0, 0.25); font-weight: 700; } .weekly .day-title { position: relative; padding: 0 8px; height: 48px; font-size: 18px; font-weight: 700; border-bottom: 1px solid var(--border-base); box-shadow: 0 1px 0 0 #fff; display: flex; align-items: center; justify-content: center; } .weekly .day-title span { font-weight: 400; } .weekly .day-list { padding: 0 0 4px 0px; height: calc(var(--weekly-height) - 48px - 80px); overflow: auto; } .weekly .day-list li { position: relative; padding: 4px 8px 4px 32px; font-size: 1.8rem; word-break: keep-all; } .weekly .day-list li:first-child { padding-top: 16px; } .weekly .day-list li:first-child::before { top: 2.6rem; } .weekly .day-list li::before { content: " "; position: absolute; left: 18px; top: 1.6rem; display: inline-block; width: 4px; height: 4px; background-color: #555; border-radius: 50%; } .weekly .day-list [class^="badge"] { margin-bottom: 3px; vertical-align: middle; } .weekly .day-card .day { position: relative; height: calc(var(--weekly-height) - 48px - 80px); overflow: auto; } .weekly .day-card::after { content: " "; position: absolute; width: 1px; height: calc(var(--weekly-height) - 80px - 20px); top: 50%; right: 0; translate: 0 -50%; background: var(--border-base); } .weekly .day dl:has(.schedule-item) { padding: 16px 8px; gap: 8px; display: flex; align-items: flex-start; justify-content: flex-start; } .weekly .day dl:has(.schedule-item) dt { display: block; font-size: 14px; margin-top: 2px; font-weight: 500; white-space: nowrap; } .weekly .day dl:has(.schedule-item):not(:last-child) { padding-top: 8px; } .weekly .day dl:has(.schedule-item):last-child { border-top: 1px solid var(--border-base); } .weekly .day dl dt { display: none; } .weekly .day .schedule-item { vertical-align: middle; position: relative; display: block; padding-left: 16px; } .weekly .day .schedule-item:before { background-color: var(--text-primary); border-radius: 50%; content: " "; display: inline-block; height: 4px; left: 8px; position: absolute; top: 1rem; width: 4px; } .weekly .day .schedule-item [class^="badge"] { position: relative; top: 2px; } .weekly .main-issue { height: 80px; box-shadow: 0 -1px 0 0 #fff, 0 2px 0 0 #fff inset; background: rgba(240, 237, 234, 0.5); border-top: 1px solid rgba(0, 0, 0, 0.2); display: grid; grid-template-columns: 267px auto; align-items: center; } .weekly .issue { height: 80px; padding: 4px 0; } .weekly .issue-header { padding-left: 24px; } .weekly .issue-header h3 { font-size: 24px; } .weekly .issue-list { height: 72px; overflow-y: auto; flex-direction: column; display: flex; align-items: flex-start; justify-content: center; } .weekly .issue-list li { position: relative; padding: 4px 8px 4px 32px; font-size: 1.8rem; color: var(--text-primary); } .weekly .issue-list li::before { content: " "; position: absolute; left: 18px; top: 1.6rem; display: inline-block; width: 4px; height: 4px; background-color: var(--text-primary); border-radius: 50%; } .sales .person-list { padding-top: 12px; padding-right: 24px; align-self: center; flex-direction: column; gap: 4px; display: flex; align-items: center; justify-content: center; } .sales .person-list dl { border-radius: 4px; overflow: hidden; display: flex; align-items: center; justify-content: space-between; } .sales .person-list dl dt { width: 24px; height: 24px; color: #fff; font-size: 12px; display: flex; align-items: center; justify-content: center; } .sales .person-list dl dd { width: 58px; text-align: right; padding: 0 8px; font-weight: bold; } .sales .person-list dl dd small { font-size: 10px; } .sales .person-list .individual01 { background-color: var(--bg-individual01); } .sales .person-list .individual01 dt { background: var(--unit-primary); } .sales .person-list .individual01 dd { color: var(--unit-primary); } .sales .person-list .individual02 { background-color: var(--bg-individual02); } .sales .person-list .individual02 dt { background: var(--unit-secondary); } .sales .person-list .individual02 dd { color: var(--unit-secondary); } .month .chart-legend { position: absolute; bottom: 5%; width: 100%; gap: 4px; display: flex; align-items: center; justify-content: center; } .month .chart-legend li { padding: 4px 8px; gap: 4px; white-space: nowrap; border-radius: 2px; font-size: 1.5rem; display: flex; align-items: center; justify-content: center; } .month .chart-legend li.active { border: 1px solid var(--border-base); background: rgba(255, 92, 0, 0.25); font-weight: 500; } .month .chart-legend li .legend-dot { width: 12px; height: 12px; margin-top: 2px; border: 1px solid var(--border-base); } .month .chart-wrap:has(.badge-month) canvas { margin-top: 25px; } .month .chart-wrap canvas { margin-top: 50px; max-height: 180px; } .calendar.modal { display: flex; align-items: flex-end; padding: 0; } .calendar.modal.closing { animation: fadeIn 0.3s; animation-iteration-count: 1; } .calendar.modal.closing .modal-content { animation: slideDown 0.4s ease-out forwards; } .calendar .modal-content { max-width: 100%; max-height: calc(var(--window-inner-height) - 80px); border-radius: 32px 32px 0 0; border-top: 3px solid #fff; background: var(--bg-calendar); box-shadow: 0 -3px 30px 0 rgba(0, 0, 0, 0.8); transform: translateY(100%); overflow: hidden; animation: slideUp 0.4s ease-out forwards; } .calendar .modal-header { padding: 0 24px; height: 80px; } .calendar .modal-body { height: calc(var(--window-inner-height) - 160px); } .calendar .filter-options { gap: 6px; display: flex; align-items: center; justify-content: center; } .calendar .filter-options .checkbox-group { border-radius: 4px; padding: 8px 12px; border: 1px solid rgba(0, 0, 0, 0.15); font-size: 16px; font-weight: 500; gap: 8px; display: flex; align-items: center; justify-content: center; } .calendar .filter-options .checkbox-group.green { background: rgba(43, 143, 16, 0.05); } .calendar .filter-options .checkbox-group.green input[type="checkbox"]:checked { border-color: #257a0e; background-color: #2b8f10; } .calendar .filter-options .checkbox-group.purple { background: rgba(124, 16, 143, 0.05); } .calendar .filter-options .checkbox-group.purple input[type="checkbox"]:checked { border-color: #6a0e7a; background-color: #7c108f; } .calendar .filter-options .checkbox-group.teal { background: rgba(4, 164, 175, 0.05); } .calendar .filter-options .checkbox-group.teal input[type="checkbox"]:checked { border-color: #008b94; background-color: #00a3ae; } .calendar .filter-options .checkbox-group.black { background: rgba(0, 0, 0, 0.04); } .calendar .filter-options .checkbox-group.black input[type="checkbox"]:checked { border-color: #000; background-color: #111; } .calendar .filter-options .checkbox-group input[type="checkbox"] { -moz-appearance: none; appearance: none; -webkit-appearance: none; width: 16px; height: 16px; border-radius: 4px; border: 1.5px solid rgba(0, 0, 0, 0.15); background-color: #fff; } .calendar .filter-options .checkbox-group input[type="checkbox"]:checked { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M3.67169 10C3.33979 10 3.03554 9.84159 2.84193 9.60398L0.186696 6.19818C0.10372 6.09258 0.0484027 5.98697 0.020744 5.85496C-0.00691467 5.72296 -0.00691467 5.59095 0.020744 5.45894C0.020744 5.32693 0.0760614 5.19493 0.159037 5.08932C0.242014 4.98371 0.32499 4.87811 0.435624 4.7989C0.546259 4.7197 0.656894 4.6669 0.795187 4.6405C0.933481 4.61409 1.07177 4.58769 1.21007 4.6405C1.34836 4.6405 1.48665 4.6933 1.59729 4.7725C1.70792 4.85171 1.81856 4.93091 1.90153 5.03652L3.64403 7.28064L8.06942 0.46906C8.20772 0.257848 8.45664 0.0994388 8.73323 0.0202343C9.00982 -0.0325687 9.28641 0.0202343 9.50768 0.152242C10.0055 0.442658 10.1438 1.04989 9.83958 1.52512L4.58443 9.52477C4.50145 9.65678 4.36316 9.78879 4.22486 9.86799C4.08657 9.9472 3.92062 10 3.75467 10C3.75467 10 3.72701 10 3.69935 10H3.67169Z' fill='white'/%3E%3C/svg%3E%0A"); background-position: center; background-repeat: no-repeat; background-size: 10px; } .calendar .date-navigation { gap: 24px; display: flex; align-items: center; justify-content: center; } .calendar .date-navigation .prev-btn, .calendar .date-navigation .next-btn { width: 32px; height: 32px; padding: 8px 12px; gap: 8px; border-radius: 50px; border: 1px solid rgba(0, 0, 0, 0.4); background: linear-gradient(180deg, #f0f0f0 0%, #e1e0de 100%); background-position: center; background-repeat: no-repeat; background-size: 8px auto; box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.2); text-indent: -9999px; color: transparent; font-size: 1px; overflow: hidden; display: flex; align-items: center; justify-content: center; } .calendar .date-navigation .prev-btn { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='15' viewBox='0 0 9 15' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.6859 7.5L9 1.45612L7.83532 -1.0182e-07L2.98003e-07 7.5L7.83532 15L9 13.5439L2.6859 7.5Z' fill='%23424242'/%3E%3C/svg%3E"); } .calendar .date-navigation .next-btn { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='15' viewBox='0 0 9 15' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.3141 7.5L1.27298e-07 1.45612L1.16468 -1.0182e-07L9 7.5L1.16468 15L1.18404e-06 13.5439L6.3141 7.5Z' fill='%23424242'/%3E%3C/svg%3E"); } .calendar .current-date { position: relative; font-size: 40px; font-weight: 700; background: linear-gradient(180deg, #777 0%, #000 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .calendar .current-date:before { content: attr(data-text); position: absolute; inset: 0; pointer-events: none; color: transparent; z-index: -1; filter: drop-shadow(0 0 1px rgb(255, 255, 255)); text-shadow: -1px -1px 0 rgb(255, 255, 255), 1px -1px 0 rgb(255, 255, 255), -1px 1px 0 rgb(255, 255, 255), 1px 1px 0 rgb(255, 255, 255); } .calendar .flex { gap: 38px; padding-right: 16px; } .calendar .weekdays { display: grid; grid-template-columns: minmax(100px, 5.2083%) repeat(5, 1fr) minmax( 100px, 5.2083% ); height: 32px; background: linear-gradient( 180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100% ), #895d24; border: 2px solid rgba(0, 0, 0, 0.05); box-shadow: 0 -8px 16px 0 rgba(0, 0, 0, 0.2) inset; font-size: 16px; font-weight: 700; text-align: center; color: #fff; filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.5)); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5), 1px -1px 0 rgba(0, 0, 0, 0.5), -1px 1px 0 rgba(0, 0, 0, 0.5), 1px 1px 0 rgba(0, 0, 0, 0.5); } .calendar .weekdays .weekday:not(:last-child) { border-right: 0.5px solid rgba(0, 0, 0, 0.2); } .calendar .calendar-days { height: calc(var(--window-inner-height) - 194px); overflow-y: auto; } .calendar .days { display: grid; min-height: calc(var(--window-inner-height) - 194px); } .calendar .days.collapsed { height: calc(var(--window-inner-height) - 194px); max-height: none; overflow: hidden; } .calendar .days.collapsed .week:not(.current-week-row) { min-height: 0; overflow: hidden; } .calendar .days.collapsed .week:not(.current-week-row) .day { overflow: hidden; } .calendar .week { display: grid; grid-template-columns: minmax(100px, 5.2083%) repeat(5, 1fr) minmax( 100px, 5.2083% ); min-height: 100px; } .calendar .week.current-week-row { box-shadow: 0 0 32px 0 rgba(0, 0, 0, 0.15); height: -moz-max-content; height: max-content; min-height: 100%; } .calendar .week .day { padding: 8px 8px 16px 8px; border-bottom: 1px solid rgba(0, 0, 0, 0.1); color: var(--text-primary); } .calendar .week .day.other-month { opacity: 0.5; } .calendar .week .day.current-week { height: auto; background: #fff; } .calendar .week .day.first-current-week { position: relative; } .calendar .week .day.first-current-week::before { content: " "; display: block; position: absolute; left: 0; top: 0; width: 100vw; height: 100%; box-shadow: 0 0 32px 0 rgba(0, 0, 0, 0.15); } .calendar .week .day:not(:nth-child(7n + 1)) { border-left: 1px solid rgba(0, 0, 0, 0.1); } .calendar .week .day:nth-child(7n) { background: rgba(0, 107, 188, 0.03); } .calendar .week .day:nth-child(7n) .day-number { color: #006bbc; } .calendar .week .day:nth-child(7n + 1) { background: rgba(188, 0, 0, 0.03); } .calendar .week .day:nth-child(7n + 1) .day-number { color: #bc0000; } .calendar .week .day.today { color: var(--text-base); font-weight: 500; background: rgba(255, 92, 0, 0.25); } .calendar .week .day-content { gap: 8px; flex-direction: column; display: flex; align-items: flex-start; justify-content: center; } .calendar .week .day-number { font-size: 18px; color: var(--text-primary); } .calendar .week .day dl { padding: 16px 0; gap: 8px; display: flex; align-items: flex-start; justify-content: flex-start; } .calendar .week .day dl:has(.event-item) dt { display: block; font-size: 14px; margin-bottom: 8px; font-weight: 500; white-space: nowrap; } .calendar .week .day dl:has(.event-item):not(:last-child) { padding-top: 8px; } .calendar .week .day dl:has(.event-item):last-child { border-top: 1px solid var(--border-base); } .calendar .week .day dl dt { display: none; } .calendar .event-item { position: relative; gap: 4px; padding: 0px 8px 0px 16px; } .calendar .event-item:before { background-color: var(--text-primary); border-radius: 50%; content: " "; display: inline-block; height: 4px; left: 8px; position: absolute; top: 1rem; width: 4px; } .calendar .event-title em { color: #f00; } .calendar .event-tag { width: 20px; height: 20px; font-size: 14px; line-height: 1; font-weight: 500; border-radius: 4px; color: #fff; margin: 0 2px; padding: 2px; display: inline-block; text-align: center; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } } @keyframes slideDown { from { transform: translateY(0); } to { transform: translateY(100%); } } /*대시보드 헤더 누적수 표시 260128*/ /* 누적 배지 */ .cumulative-copy { display: inline-flex; align-items: center; gap: 3px; padding: 15px 20px; border-radius: 6px; position: absolute; top: 8px; left: 120px; font-size: 20px; font-weight: 600; color: #737270; white-space: nowrap; } .day-card.dimmed { opacity: 0.35; }