Files
egbim_homepage/egbim/skin/sales/assets/css/style.css
T
2026-07-23 16:15:57 +09:00

1608 lines
40 KiB
CSS

@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;
}