admin.scss 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. @charset "UTF-8";
  2. @font-face {
  3. font-family: 'AudiType';
  4. src: url('/fonts/AudiTypeVF.woff2') format('woff2-variations');
  5. font-display: swap;
  6. font-style: normal;
  7. font-stretch: 130%;
  8. }
  9. // Utility classes for padding and margin (1-100)
  10. @for $i from 1 through 200 {
  11. // Padding
  12. .pt--#{$i} { padding-top: #{$i}px !important; }
  13. .pr--#{$i} { padding-right: #{$i}px !important; }
  14. .pb--#{$i} { padding-bottom: #{$i}px !important; }
  15. .pl--#{$i} { padding-left: #{$i}px !important; }
  16. .p--#{$i} { padding: #{$i}px !important; }
  17. // Margin
  18. .mt--#{$i} { margin-top: #{$i}px !important; }
  19. .mr--#{$i} { margin-right: #{$i}px !important; }
  20. .mb--#{$i} { margin-bottom: #{$i}px !important; }
  21. .ml--#{$i} { margin-left: #{$i}px !important; }
  22. .m--#{$i} { margin: #{$i}px !important; }
  23. }
  24. //풀사이즈 레이아웃 구성
  25. .detail--container--full{
  26. }
  27. /*=================================================
  28. |컴포넌트 별 css
  29. |START
  30. =================================================*/
  31. //풀사이즈 배너 텍스트1 형
  32. .img--section--full{
  33. width:100%;
  34. position: relative;
  35. &:before{
  36. content:'';
  37. display: block;
  38. width:100%;
  39. height:100%;
  40. position: absolute;
  41. z-index: 2;
  42. pointer-events: none;
  43. inset: 0px;
  44. z-index: 1;
  45. background: linear-gradient(rgba(0, 0, 0, 0) 46.66%, rgb(0, 0, 0) 100%);
  46. }
  47. img{
  48. width:100%;
  49. max-width:100%;
  50. height:100vh;
  51. }
  52. .alt--text{
  53. color: rgb(252, 252, 253);
  54. letter-spacing: 0px;
  55. font-weight: 400;
  56. text-decoration: none;
  57. font-size: 28px;
  58. line-height: 40px;
  59. position: absolute;
  60. bottom:40px;
  61. left:0px;
  62. overflow: hidden;
  63. padding: 0 96px;
  64. white-space: pre-wrap;
  65. z-index: 2;
  66. }
  67. }
  68. //풀사이즈 패럴렉스 1형
  69. .prallax--banner--wrapper{
  70. position: relative;
  71. overflow: hidden;
  72. height:1000px;
  73. .prallax--banner{
  74. position: absolute;
  75. width: 100%;
  76. height: 120%;
  77. transform: translate3d(0, 0, 0); // 초기값 GPU 레이어 생성
  78. -webkit-transform: translate3d(0, 0, 0);
  79. backface-visibility: hidden;
  80. -webkit-backface-visibility: hidden;
  81. //perspective: 1000px;
  82. //-webkit-perspective: 1000px;
  83. position: absolute;
  84. top: -17%;
  85. left: 50%;
  86. will-change: transform;
  87. backface-visibility: hidden;
  88. picture {
  89. width: 100%;
  90. height: 100%;
  91. display: block;
  92. }
  93. img {
  94. width: 100%;
  95. height: 100%;
  96. object-fit: cover;
  97. object-position: center;
  98. transform: translateZ(0); // GPU 가속
  99. -webkit-transform: translateZ(0);
  100. }
  101. }
  102. .text--box--wrapper{
  103. position: absolute;
  104. backface-visibility: hidden;
  105. -webkit-backface-visibility: hidden;
  106. width: 100%;
  107. top:147px;
  108. left: 0px;
  109. z-index: 1;
  110. will-change: transform, opacity;
  111. transform: translate3d(0, 0, 0); // 초기값 GPU 레이어 생성
  112. -webkit-transform: translate3d(0, 0, 0);
  113. display: flex;
  114. -webkit-box-pack: center;
  115. justify-content: center;
  116. transition: opacity 0.1s ease-out;
  117. perspective: 1000px;
  118. -webkit-perspective: 1000px;
  119. .text--container{
  120. max-width:50%;
  121. position: relative;
  122. box-sizing: border-box;
  123. background: linear-gradient(134deg, rgb(44, 52, 63) 0%, rgb(35, 42, 52) 100%);
  124. backdrop-filter: blur(60px);
  125. display: flex;
  126. flex-direction: column;
  127. gap: 24px;
  128. flex-shrink: 0;
  129. flex-basis: 86%;
  130. margin: 88px auto 0 auto;
  131. padding: 40px;
  132. border-radius: 20px;
  133. h2{
  134. margin: 0px;
  135. color: rgb(252, 252, 253);
  136. letter-spacing: 0px;
  137. font-weight: 400;
  138. text-decoration: none;
  139. font-size: 24px;
  140. line-height: 36px;
  141. font-stretch: 130%;
  142. }
  143. p{
  144. margin: 0px;
  145. color: rgba(252, 252, 253, 0.7);
  146. font-family: AudiType, sans-serif;
  147. letter-spacing: 0px;
  148. font-weight: 400;
  149. text-decoration: none;
  150. font-size: 16px;
  151. line-height: 24px;
  152. font-stretch: 105%;
  153. }
  154. a{
  155. transition-timing-function:
  156. cubic-bezier(0.75, 0.02, 0.5, 1);
  157. transition-duration: 250ms;
  158. transition-property: color, text-decoration-color;
  159. display: inline-flex ;
  160. -webkit-box-align: center;
  161. align-items: center;
  162. font-family: AudiType, sans-serif;
  163. letter-spacing: 0px;
  164. font-weight: 400;
  165. text-decoration: underline 1px rgb(252, 252, 253);
  166. font-size: 16px;
  167. line-height: 24px;
  168. font-stretch: 105%;
  169. color: rgb(252, 252, 253);
  170. box-sizing: border-box;
  171. text-underline-offset: 7px;
  172. padding-bottom: 2px;
  173. min-height: 24px;
  174. }
  175. }
  176. }
  177. }
  178. //Swiper 배너 컴포넌트 (30% + 70% 레이아웃)
  179. .swiper--banner--wrapper {
  180. width: 100%;
  181. padding: 40px 96px;
  182. background: #000;
  183. .swiper--banner--container {
  184. max-width: 1920px;
  185. height: 70vh;
  186. margin: 0 auto;
  187. display: flex;
  188. min-height: 600px;
  189. // 30% 영역: 컨트롤 및 텍스트
  190. .swiper--controls--section {
  191. width: 30%;
  192. padding: 40px;
  193. display: flex;
  194. flex-direction: column;
  195. justify-content: center;
  196. .controls--top {
  197. margin-bottom: 40px;
  198. .pagination--nav--wrapper {
  199. display: flex;
  200. align-items: flex-start;
  201. justify-content: flex-start;
  202. flex-direction: column;
  203. gap: 20px;
  204. .swiper-pagination {
  205. position: relative;
  206. width: auto;
  207. display: flex;
  208. justify-content: center;
  209. align-items: center;
  210. gap: 12px;
  211. .swiper-pagination-bullet {
  212. width: 24px;
  213. height: 24px;
  214. background: rgba(255, 255, 255, 0.1);
  215. border-radius: 50%;
  216. color: rgba(255, 255, 255, 0.6);
  217. font-size: 14px;
  218. font-weight: 400;
  219. display: flex;
  220. align-items: center;
  221. justify-content: center;
  222. cursor: pointer;
  223. transition: all 0.3s ease;
  224. opacity: 1;
  225. &:hover {
  226. background:rgba(252,252,253,.3) ;
  227. color: rgba(255, 255, 255, 0.8);
  228. }
  229. &.swiper-pagination-bullet-active {
  230. background: transparent;
  231. color: #fff;
  232. font-weight: 600;
  233. }
  234. }
  235. }
  236. .navigation--buttons {
  237. display: flex;
  238. align-items: center;
  239. justify-content: center;
  240. gap: 16px;
  241. .swiper-pagination{
  242. top:0px;
  243. bottom:0px;
  244. }
  245. .swiper-button-prev{
  246. background: url(/img/ico--back--s.svg) no-repeat center;
  247. }
  248. .swiper-button-next{
  249. background: url(/img/ico--forward--s.svg) no-repeat center;
  250. }
  251. .swiper-button-prev,
  252. .swiper-button-next {
  253. position: relative;
  254. width: 24px;
  255. height: 24px;
  256. border-radius: 50%;
  257. color: white;
  258. margin: 0;
  259. transition: all 0.3s ease;
  260. cursor: pointer;
  261. &:hover{
  262. background:rgba(252,252,253,.3) ;
  263. }
  264. &.swiper-button-disabled {
  265. opacity: 0.3;
  266. cursor: not-allowed;
  267. &:hover {
  268. transform: none;
  269. }
  270. }
  271. }
  272. }
  273. }
  274. }
  275. .text--content {
  276. text-align: center;
  277. .text--slider {
  278. position: relative;
  279. overflow: hidden;
  280. height: 120px; // 고정 높이로 레이아웃 안정성 확보
  281. .text--slide {
  282. position: absolute;
  283. top: 0;
  284. left: 0;
  285. width: 100%;
  286. opacity: 0;
  287. transform: translateX(-100%);
  288. transition: all 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  289. text-align: left;
  290. &.active {
  291. opacity: 1;
  292. transform: translateX(0);
  293. }
  294. // 이전 슬라이드는 오른쪽으로 사라짐
  295. &:not(.active) {
  296. transform: translateX(100%);
  297. }
  298. }
  299. }
  300. .main--title {
  301. margin:0px;
  302. color: rgb(252, 252, 253);
  303. letter-spacing: 0px;
  304. font-weight: 400;
  305. text-decoration: none;
  306. font-size: 20px;
  307. line-height: 32px;
  308. font-stretch: 130%;
  309. padding-bottom:12px;
  310. }
  311. .sub--title {
  312. margin: 0px;
  313. color: rgba(252, 252, 253, 0.7);
  314. letter-spacing: 0px;
  315. font-weight: 400;
  316. text-decoration: none;
  317. font-size: 16px;
  318. line-height: 24px;
  319. font-stretch: 105%;
  320. }
  321. .notice--text {
  322. margin-top: 40px;
  323. padding-top: 20px;
  324. // border-top: 1px solid rgba(255, 255, 255, 0.1);
  325. text-align: left;
  326. p {
  327. margin: 0;
  328. color: rgba(252, 252, 253, 0.5);
  329. font-size: 14px;
  330. line-height: 20px;
  331. font-style: italic;
  332. }
  333. }
  334. }
  335. }
  336. // 70% 영역: 단일 배너
  337. .swiper--banner--section {
  338. width: 70%;
  339. position: relative;
  340. overflow: hidden;
  341. .swiper--container {
  342. width: 100%;
  343. height: 100%;
  344. .swiper-slide {
  345. .slide--image {
  346. width: 100%;
  347. height: 100%;
  348. border-radius: 20px;
  349. overflow: hidden;
  350. img {
  351. width: 100%;
  352. height: 100%;
  353. object-fit: cover;
  354. object-position: center;
  355. transition: transform 0.8s ease;
  356. }
  357. }
  358. &.swiper-slide-active {
  359. .slide--image img {
  360. transform: scale(1.02);
  361. }
  362. }
  363. }
  364. }
  365. }
  366. }
  367. // 반응형 처리
  368. @media (max-width: 1024px) {
  369. .swiper--banner--container {
  370. flex-direction: column;
  371. .swiper--controls--section {
  372. width: 100%;
  373. order: 2;
  374. padding: 30px 20px;
  375. }
  376. .swiper--banner--section {
  377. width: 100%;
  378. height: 400px;
  379. order: 1;
  380. }
  381. }
  382. }
  383. @media (max-width: 768px) {
  384. padding: 40px 0;
  385. .swiper--banner--container {
  386. .swiper--controls--section {
  387. padding: 20px;
  388. .text--content {
  389. .text--slider {
  390. height: 100px; // 모바일에서는 높이 조정
  391. }
  392. .main--title {
  393. font-size: 24px;
  394. line-height: 32px;
  395. }
  396. .sub--title {
  397. font-size: 16px;
  398. line-height: 22px;
  399. }
  400. }
  401. }
  402. .swiper--banner--section {
  403. height: 300px;
  404. }
  405. }
  406. }
  407. }
  408. /*=================================================
  409. |컴포넌트 별 css
  410. |END
  411. =================================================*/
  412. // 로그인 폼 기본 디폴트 디자인
  413. .admin--login {
  414. min-height: 100vh;
  415. background: #000000;
  416. display: flex;
  417. align-items: center;
  418. justify-content: center;
  419. font-family: 'AudiType', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  420. .login--container {
  421. width: 100%;
  422. max-width: 480px;
  423. padding: 20px;
  424. }
  425. .login--box {
  426. background: #0a0a0a;
  427. border: 1px solid rgba(255, 255, 255, 0.1);
  428. border-radius: 12px;
  429. padding: 60px 40px;
  430. box-shadow: 0 20px 60px rgba(0, 0, 0, 0.8);
  431. }
  432. .login--logo {
  433. text-align: center;
  434. margin-bottom: 50px;
  435. h1 {
  436. font-size: 48px;
  437. font-weight: 700;
  438. color: #ffffff;
  439. letter-spacing: 8px;
  440. margin: 0;
  441. font-stretch: 130%;
  442. }
  443. .subtitle {
  444. color: rgba(255, 255, 255, 0.4);
  445. font-size: 14px;
  446. text-transform: uppercase;
  447. letter-spacing: 3px;
  448. margin-top: 10px;
  449. }
  450. }
  451. .login--form {
  452. .form--group {
  453. margin-bottom: 24px;
  454. }
  455. .form--input {
  456. width: 100%;
  457. height: 52px;
  458. background: #000000;
  459. border: 1px solid rgba(255, 255, 255, 0.15);
  460. border-radius: 8px;
  461. padding: 0 20px;
  462. font-size: 15px;
  463. color: #ffffff;
  464. transition: all 0.3s ease;
  465. &::placeholder {
  466. color: rgba(255, 255, 255, 0.6);
  467. }
  468. &:focus {
  469. outline: none;
  470. border-color: rgba(255, 255, 255, 0.4);
  471. background: rgba(255, 255, 255, 0.02);
  472. }
  473. &:hover {
  474. border-color: rgba(255, 255, 255, 0.25);
  475. }
  476. }
  477. .form--options {
  478. display: flex;
  479. justify-content: space-between;
  480. align-items: center;
  481. margin-bottom: 32px;
  482. .checkbox--label {
  483. display: flex;
  484. align-items: center;
  485. cursor: pointer;
  486. color: rgba(255, 255, 255, 0.6);
  487. font-size: 14px;
  488. input[type="checkbox"] {
  489. width: 18px;
  490. height: 18px;
  491. margin-right: 10px;
  492. background: #000000;
  493. border: 1px solid rgba(255, 255, 255, 0.3);
  494. border-radius: 4px;
  495. cursor: pointer;
  496. accent-color: #ffffff;
  497. }
  498. &:hover {
  499. color: rgba(255, 255, 255, 0.8);
  500. }
  501. }
  502. .forgot--password {
  503. color: rgba(255, 255, 255, 0.6);
  504. font-size: 14px;
  505. text-decoration: none;
  506. transition: color 0.3s ease;
  507. &:hover {
  508. color: #ffffff;
  509. }
  510. }
  511. }
  512. .login--button {
  513. width: 100%;
  514. height: 52px;
  515. background: #ffffff;
  516. color: #000000;
  517. border: none;
  518. border-radius: 8px;
  519. font-size: 16px;
  520. font-weight: 600;
  521. letter-spacing: 1px;
  522. cursor: pointer;
  523. transition: all 0.3s ease;
  524. &:hover {
  525. background: rgba(255, 255, 255, 0.9);
  526. transform: translateY(-2px);
  527. box-shadow: 0 10px 30px rgba(255, 255, 255, 0.2);
  528. }
  529. &:active {
  530. transform: translateY(0);
  531. }
  532. }
  533. }
  534. .login--footer {
  535. text-align: center;
  536. margin-top: 40px;
  537. p {
  538. color: rgba(255, 255, 255, 0.3);
  539. font-size: 12px;
  540. letter-spacing: 0.5px;
  541. }
  542. }
  543. }