﻿.home-page {
  display: grid;
  gap: 14px;
  padding: 10px 0 40px;
}

.home-hero,
.home-notice,
.featured-project,
.portfolio-card,
.home-contact-panel {
  border: 1px solid var(--line);
  box-shadow: var(--shadow-soft);
}

.home-hero {
  overflow: hidden;
  border-radius: var(--radius);
  background: #3441a7;
}

.hero-slider {
  position: relative;
  min-height: 280px;
  overflow: hidden;
}

.hero-slide {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(340px, 0.9fr);
  align-items: center;
  gap: 28px;
  padding: 34px 42px;
  opacity: 0;
  visibility: hidden;
  transform: translateX(24px);
  background:
    radial-gradient(
      circle at 88% 15%,
      rgba(255, 255, 255, 0.22),
      transparent 24%
    ),
    radial-gradient(
      circle at 68% 120%,
      rgba(92, 231, 255, 0.26),
      transparent 34%
    ),
    linear-gradient(120deg, #586cff 0%, #006fe6 48%, #407de9 100%);
  transition:
    opacity 0.45s ease,
    visibility 0.45s ease,
    transform 0.45s ease;
}

.hero-slide:nth-child(2) {
  background:
    radial-gradient(
      circle at 83% 14%,
      rgba(255, 255, 255, 0.19),
      transparent 24%
    ),
    radial-gradient(
      circle at 72% 125%,
      rgba(66, 231, 211, 0.23),
      transparent 35%
    ),
    linear-gradient(120deg, #0077eb 0%, #008dff 48%, #4d9adf 100%);
}

.hero-slide:nth-child(3) {
  background:
    radial-gradient(
      circle at 83% 10%,
      rgba(255, 255, 255, 0.18),
      transparent 24%
    ),
    radial-gradient(
      circle at 72% 125%,
      rgba(30, 183, 255, 0.24),
      transparent 35%
    ),
    linear-gradient(120deg, #0077eb 0%, #006edc 48%, #23b7ff 100%);
}

.hero-slide.is-active {
  position: relative;
  opacity: 1;
  visibility: visible;
  transform: translateX(0);
}

.hero-copy {
  position: relative;
  z-index: 2;
  max-width: 620px;
}

.hero-kicker,
.section-kicker,
.project-category {
  color: #9bdcff;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}

.hero-kicker {
  margin-bottom: 10px;
  color: rgba(255, 255, 255, 0.72);
}

.hero-copy h1,
.hero-copy h2 {
  margin-bottom: 12px;
  color: #fff;
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.16;
  letter-spacing: -1.8px;
}

.hero-copy > p:not(.hero-kicker) {
  max-width: 590px;
  margin-bottom: 22px;
  color: rgba(255, 255, 255, 0.82);
  font-size: 13px;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.hero-actions .button {
  min-height: 42px;
  padding-inline: 20px;
}

.hero-actions .button:first-child {
  color: #4857da;
  background: #fff;
  box-shadow: 0 10px 24px rgba(32, 43, 136, 0.18);
}

.hero-actions .button.secondary {
  border-color: rgba(255, 255, 255, 0.25);
  color: #fff;
  background: rgba(25, 35, 107, 0.18);
}

.hero-art {
  position: relative;
  min-height: 210px;
}

.hero-orbit {
  position: absolute;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 50%;
}

.orbit-one {
  width: 230px;
  height: 230px;
  right: 20px;
  top: -12px;
}

.orbit-two {
  width: 150px;
  height: 150px;
  right: 132px;
  bottom: -36px;
}

.hero-browser,
.community-window,
.code-window {
  position: absolute;
  top: 18px;
  right: 28px;
  width: 310px;
  height: 178px;
  padding: 22px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 16px;
  background: rgba(30, 42, 122, 0.4);
  box-shadow: 0 24px 44px rgba(31, 42, 119, 0.28);
  backdrop-filter: blur(10px);
  transform: rotate(-3deg);
}

.browser-bar,
.community-nav {
  display: block;
  width: 100%;
  height: 18px;
  margin-bottom: 18px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.86);
}

.browser-line {
  display: block;
  width: 46%;
  height: 9px;
  margin-bottom: 9px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.46);
}

.line-wide {
  width: 72%;
}

.browser-card {
  position: absolute;
  bottom: 18px;
  width: 115px;
  height: 58px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.84);
}

.card-one {
  left: 22px;
}

.card-two {
  right: 22px;
  opacity: 0.66;
}

.hero-badge {
  position: absolute;
  right: 8px;
  bottom: 4px;
  display: grid;
  place-items: center;
  width: 62px;
  height: 62px;
  border: 5px solid rgba(255, 255, 255, 0.42);
  border-radius: 50%;
  color: #008dff;
  background: #fff;
  box-shadow: 0 12px 28px rgba(25, 34, 105, 0.28);
  font-size: 13px;
  font-weight: 1000;
}

.community-window {
  transform: rotate(2deg);
}

.community-banner {
  display: block;
  height: 45px;
  margin-bottom: 12px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.75);
}

.community-row {
  display: block;
  height: 12px;
  margin-top: 9px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.48);
}

.row-two {
  width: 82%;
}

.row-three {
  width: 64%;
}

.code-window {
  padding-top: 48px;
  transform: rotate(-2deg);
}

.code-dot {
  position: absolute;
  top: 20px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.dot-red {
  left: 22px;
  background: #ff7b7b;
}

.dot-yellow {
  left: 39px;
  background: #ffd066;
}

.dot-green {
  left: 56px;
  background: #65dda0;
}

.code-row {
  display: block;
  height: 10px;
  margin-bottom: 13px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.68);
}

.code-row-1 {
  width: 72%;
}

.code-row-2 {
  width: 92%;
}

.code-row-3 {
  width: 64%;
}

.code-row-4 {
  width: 82%;
}

.hero-controls {
  position: absolute;
  left: 42px;
  bottom: 18px;
  z-index: 4;
  display: flex;
  gap: 7px;
}

.hero-controls button {
  width: 23px;
  height: 5px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.38);
  cursor: pointer;
  transition:
    width 0.2s ease,
    background 0.2s ease;
}

.hero-controls button.is-active {
  width: 38px;
  background: #fff;
}

.home-notice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  min-height: 48px;
  padding: 10px 16px;
  border-radius: 7px;
  background:
    radial-gradient(
      circle at 85% 12%,
      rgba(255, 255, 255, 0.24),
      transparent 23%
    ),
    radial-gradient(
      circle at 68% 118%,
      rgba(30, 183, 255, 0.28),
      transparent 35%
    ),
    linear-gradient(120deg, #0077eb 0%, #0056cf 40%, #272c36 100%);
}

.notice-label,
.new-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 22px;
  padding: 0 9px;
  border-radius: 20px;
  color: #5868ee;
  background: #fff;
  font-size: 9px;
  font-weight: 1000;
  text-transform: uppercase;
}

.home-notice p {
  margin: 0;
  color: rgba(255, 255, 255, 0.82);
  font-size: 11px;
}

.home-notice p strong {
  margin-right: 8px;
  color: #fff;
}

.home-notice > a {
  color: #fff;
  font-size: 10px;
  font-weight: 900;
}

.featured-section,
.portfolio-section {
  display: grid;
  gap: 12px;
}

.home-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  padding: 22px 4px 4px;
}

.section-kicker {
  margin-bottom: 5px;
  color: #23b7ff;
}

.home-section-head h2 {
  margin: 0;
  font-size: 22px;
  letter-spacing: -0.7px;
}

.section-description {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 11px;
}

.section-more {
  color: #aeb5c9;
  font-size: 10px;
  font-weight: 800;
}

.featured-list {
  display: grid;
  gap: 12px;
}

.featured-project {
  overflow: hidden;
  border-radius: var(--radius);
  background: linear-gradient(
    180deg,
    rgba(49, 53, 70, 0.98),
    rgba(40, 44, 58, 0.98)
  );
}

.featured-topline {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
  color: #bac0d1;
  font-size: 12px;
}

.new-chip {
  min-height: 19px;
  padding: 0 7px;
  color: #fff;
  background: var(--accent);
  font-size: 8px;
}

.featured-body {
  display: grid;
  grid-template-columns: minmax(360px, 0.9fr) minmax(0, 1.1fr);
  gap: 0;
}

.featured-image {
  display: block;
  min-height: 270px;
  padding: 16px;
  background: rgba(22, 25, 35, 0.24);
}

.featured-image img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 238px;
  border-radius: 7px;
  object-fit: cover;
  box-shadow: 0 14px 28px rgba(10, 13, 24, 0.24);
}

.featured-content {
  display: flex;
  flex-direction: column;
  padding: 26px 26px 18px;
}

.project-category {
  margin-bottom: 8px;
  color: #25baff;
}

.featured-content h3 {
  margin-bottom: 10px;
  font-size: 23px;
  letter-spacing: -0.7px;
}

.project-description {
  margin-bottom: 14px;
  color: #aeb5c9;
  font-size: 11px;
}

.project-features {
  display: grid;
  gap: 7px;
  margin: 0 0 18px;
  padding: 0;
  list-style: none;
}

.project-features li {
  position: relative;
  padding-left: 18px;
  color: #c8cddd;
  font-size: 10px;
}

.project-features li::before {
  content: "??;
  position: absolute;
  left: 0;
  top: 0;
  color: #23b7ff;
  font-weight: 1000;
}

.project-links {
  display: grid;
  gap: 8px;
  margin-top: auto;
}

.project-detail,
.project-inquiry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 42px;
  padding: 0 13px;
  border-radius: 6px;
  font-size: 10px;
  font-weight: 900;
}

.project-detail {
  color: #fff;
  background: linear-gradient(90deg, #008dff, #006edc);
}

.project-inquiry {
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: #aeb5c8;
  background: rgba(21, 24, 34, 0.25);
}

.featured-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  min-height: 34px;
  padding: 8px 14px;
  border-top: 1px solid var(--line);
  color: #747d95;
  background: rgba(30, 34, 46, 0.45);
  font-size: 11px;
}

.featured-meta span::before {
  content: "??;
  margin-right: 6px;
  color: #008dff;
}

.portfolio-heading {
  align-items: center;
}

.portfolio-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}

.portfolio-filters button {
  min-height: 30px;
  padding: 0 11px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  color: #99a1b6;
  background: rgba(255, 255, 255, 0.035);
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.portfolio-filters button:hover,
.portfolio-filters button.is-active {
  border-color: rgba(0, 141, 255, 0.52);
  color: #fff;
  background: rgba(0, 141, 255, 0.2);
}

.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.portfolio-card {
  overflow: hidden;
  border-radius: 7px;
  background: linear-gradient(
    180deg,
    rgba(48, 52, 68, 0.98),
    rgba(41, 45, 59, 0.98)
  );
  transition:
    transform 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}

.portfolio-card:hover {
  border-color: rgba(0, 141, 255, 0.38);
  box-shadow: 0 16px 34px rgba(12, 15, 26, 0.26);
  transform: translateY(-3px);
}

.portfolio-card.is-hidden,
.portfolio-card.is-collapsed {
  display: none;
}

.portfolio-preview {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: #222634;
}

.portfolio-preview img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition:
    transform 0.32s ease,
    filter 0.32s ease;
}

.preview-overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background: rgba(29, 35, 95, 0.68);
  font-size: 10px;
  font-weight: 1000;
  opacity: 0;
  transition: opacity 0.25s ease;
}

.portfolio-card:hover .portfolio-preview img {
  filter: brightness(0.7);
  transform: scale(1.04);
}

.portfolio-card:hover .preview-overlay {
  opacity: 1;
}

.portfolio-card-head {
  min-height: 66px;
  padding: 12px 14px;
}

.portfolio-card-head span {
  color: #747d95;
  font-size: 8px;
  font-weight: 900;
}

.portfolio-card-head h3 {
  margin: 3px 0 0;
  font-size: 12px;
  letter-spacing: -0.2px;
}

.portfolio-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.035);
}

.portfolio-actions a {
  display: grid;
  place-items: center;
  min-height: 38px;
  color: #d7dae5;
  font-size: 9px;
  font-weight: 800;
}

.portfolio-actions a + a {
  border-left: 1px solid var(--line);
}

.portfolio-more-wrap {
  display: flex;
  justify-content: center;
  padding-top: 8px;
}

.portfolio-more {
  min-height: 42px;
  padding: 0 22px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 6px;
  color: #dfe2ec;
  background: rgba(255, 255, 255, 0.045);
  font-size: 10px;
  font-weight: 900;
  cursor: pointer;
}

.portfolio-more:hover {
  border-color: rgba(0, 141, 255, 0.42);
  background: rgba(0, 141, 255, 0.12);
}

.portfolio-more[hidden] {
  display: none;
}

.home-contact-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 26px;
  margin-top: 12px;
  padding: 30px;
  overflow: hidden;
  border-radius: var(--radius);
  background:
    radial-gradient(
      circle at 92% 0%,
      rgba(0, 141, 255, 0.25),
      transparent 34%
    ),
    linear-gradient(135deg, rgba(47, 52, 69, 0.98), rgba(36, 40, 53, 0.98));
}

.home-contact-panel h2 {
  margin-bottom: 8px;
  font-size: 24px;
  letter-spacing: -0.8px;
}

.home-contact-panel p:not(.section-kicker) {
  margin: 0;
  color: #aeb5c9;
  font-size: 11px;
}

.contact-panel-actions {
  display: flex;
  gap: 8px;
}

/* ?몃? ?대?吏 ?놁씠 ?쒖떆?섎뒗 ?ы듃?대━??誘몃━蹂닿린 */
.site-mock {
  --mock-accent: #008dff;
  --mock-bg: #eef2ff;
  --mock-panel: #ffffff;
  --mock-text: #26304a;
  display: block;
  width: 100%;
  height: 100%;
  padding: 5.5% 5%;
  overflow: hidden;
  background: var(--mock-bg);
}

.site-mock-large {
  min-height: 238px;
  border-radius: 7px;
  box-shadow: 0 14px 28px rgba(10, 13, 24, 0.24);
}

.mock-top {
  display: flex;
  align-items: center;
  gap: 5px;
  height: 13%;
  padding: 0 4%;
  border-radius: 6px 6px 0 0;
  background: var(--mock-panel);
}

.mock-top i {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--mock-accent);
  opacity: 0.58;
}

.mock-top b {
  width: 30%;
  height: 22%;
  margin-left: auto;
  border-radius: 8px;
  background: var(--mock-text);
  opacity: 0.16;
}

.mock-hero {
  position: relative;
  display: block;
  height: 42%;
  padding: 9% 7%;
  overflow: hidden;
  background: var(--mock-accent);
}

.mock-hero::after {
  content: "";
  position: absolute;
  right: -8%;
  top: -36%;
  width: 43%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
}

.mock-hero b,
.mock-hero i {
  position: relative;
  z-index: 1;
  display: block;
  border-radius: 6px;
  background: #fff;
}

.mock-hero b {
  width: 47%;
  height: 12%;
  margin-bottom: 6%;
  opacity: 0.95;
}

.mock-hero i {
  width: 58%;
  height: 6%;
  margin-top: 4%;
  opacity: 0.52;
}

.mock-hero i:last-child {
  width: 36%;
}

.mock-columns {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4%;
  height: 45%;
  padding-top: 4%;
}

.mock-columns i {
  position: relative;
  border-radius: 5px;
  background: var(--mock-panel);
}

.mock-columns i::before,
.mock-columns i::after {
  content: "";
  position: absolute;
  left: 12%;
  border-radius: 5px;
  background: var(--mock-text);
  opacity: 0.16;
}

.mock-columns i::before {
  top: 18%;
  width: 55%;
  height: 7%;
}

.mock-columns i::after {
  top: 34%;
  width: 72%;
  height: 5%;
}

.theme-indigo {
  --mock-accent: #008dff;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #27304c;
}
.theme-violet {
  --mock-accent: #0077eb;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-copper {
  --mock-accent: #0f8fe8;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-blue {
  --mock-accent: #4474f2;
  --mock-bg: #edf3ff;
  --mock-panel: #ffffff;
  --mock-text: #263650;
}
.theme-navy {
  --mock-accent: #243251;
  --mock-bg: #e9edf4;
  --mock-panel: #ffffff;
  --mock-text: #1e293e;
}
.theme-sky {
  --mock-accent: #2ca3d6;
  --mock-bg: #eaf8fd;
  --mock-panel: #ffffff;
  --mock-text: #244153;
}
.theme-dark {
  --mock-accent: #313a54;
  --mock-bg: #1f2432;
  --mock-panel: #2b3141;
  --mock-text: #eef1ff;
}
.theme-cobalt {
  --mock-accent: #266fd1;
  --mock-bg: #e9f2ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-red {
  --mock-accent: #0f8fe8;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-slate {
  --mock-accent: #586379;
  --mock-bg: #eef0f4;
  --mock-panel: #ffffff;
  --mock-text: #2e3441;
}
.theme-amber {
  --mock-accent: #1aa7e8;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}

.featured-image .site-mock {
  height: 100%;
}

.portfolio-preview .site-mock {
  position: absolute;
  inset: 0;
}

.portfolio-card:hover .site-mock {
  filter: brightness(0.72);
  transform: scale(1.04);
  transition:
    transform 0.32s ease,
    filter 0.32s ease;
}

.home-page {
  display: grid;
  gap: 14px;
  padding: 10px 0 40px;
}

.home-hero,
.home-notice,
.featured-project,
.portfolio-card,
.home-contact-panel {
  border: 1px solid var(--line);
  box-shadow: var(--shadow-soft);
}

.home-hero {
  overflow: hidden;
  border-radius: var(--radius);
  background: #3441a7;
}

.hero-slider {
  position: relative;
  min-height: 280px;
  overflow: hidden;
}

.hero-slide {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(340px, 0.9fr);
  align-items: center;
  gap: 28px;
  padding: 34px 42px;
  opacity: 0;
  visibility: hidden;
  transform: translateX(24px);
  background:
    radial-gradient(
      circle at 88% 15%,
      rgba(255, 255, 255, 0.22),
      transparent 24%
    ),
    radial-gradient(
      circle at 68% 120%,
      rgba(92, 231, 255, 0.26),
      transparent 34%
    ),
    linear-gradient(120deg, #586cff 0%, #006fe6 48%, #407de9 100%);
  transition:
    opacity 0.45s ease,
    visibility 0.45s ease,
    transform 0.45s ease;
}

.hero-slide:nth-child(2) {
  background:
    radial-gradient(
      circle at 83% 14%,
      rgba(255, 255, 255, 0.19),
      transparent 24%
    ),
    radial-gradient(
      circle at 72% 125%,
      rgba(66, 231, 211, 0.23),
      transparent 35%
    ),
    linear-gradient(120deg, #0077eb 0%, #008dff 48%, #4d9adf 100%);
}

.hero-slide:nth-child(3) {
  background:
    radial-gradient(
      circle at 83% 10%,
      rgba(255, 255, 255, 0.18),
      transparent 24%
    ),
    radial-gradient(
      circle at 72% 125%,
      rgba(30, 183, 255, 0.24),
      transparent 35%
    ),
    linear-gradient(120deg, #0077eb 0%, #006edc 48%, #23b7ff 100%);
}

.hero-slide.is-active {
  position: relative;
  opacity: 1;
  visibility: visible;
  transform: translateX(0);
}

.hero-copy {
  position: relative;
  z-index: 2;
  max-width: 620px;
}

.hero-kicker,
.section-kicker,
.project-category {
  color: #9bdcff;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}

.hero-kicker {
  margin-bottom: 10px;
  color: rgba(255, 255, 255, 0.72);
}

.hero-copy h1,
.hero-copy h2 {
  margin-bottom: 12px;
  color: #fff;
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.16;
  letter-spacing: -1.8px;
}

.hero-copy > p:not(.hero-kicker) {
  max-width: 590px;
  margin-bottom: 22px;
  color: rgba(255, 255, 255, 0.82);
  font-size: 13px;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.hero-actions .button {
  min-height: 42px;
  padding-inline: 20px;
}

.hero-actions .button:first-child {
  color: #4857da;
  background: #fff;
  box-shadow: 0 10px 24px rgba(32, 43, 136, 0.18);
}

.hero-actions .button.secondary {
  border-color: rgba(255, 255, 255, 0.25);
  color: #fff;
  background: rgba(25, 35, 107, 0.18);
}

.hero-art {
  position: relative;
  min-height: 210px;
}

.hero-orbit {
  position: absolute;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 50%;
}

.orbit-one {
  width: 230px;
  height: 230px;
  right: 20px;
  top: -12px;
}

.orbit-two {
  width: 150px;
  height: 150px;
  right: 132px;
  bottom: -36px;
}

.hero-browser,
.community-window,
.code-window {
  position: absolute;
  top: 18px;
  right: 28px;
  width: 310px;
  height: 178px;
  padding: 22px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 16px;
  background: rgba(30, 42, 122, 0.4);
  box-shadow: 0 24px 44px rgba(31, 42, 119, 0.28);
  backdrop-filter: blur(10px);
  transform: rotate(-3deg);
}

.browser-bar,
.community-nav {
  display: block;
  width: 100%;
  height: 18px;
  margin-bottom: 18px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.86);
}

.browser-line {
  display: block;
  width: 46%;
  height: 9px;
  margin-bottom: 9px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.46);
}

.line-wide {
  width: 72%;
}

.browser-card {
  position: absolute;
  bottom: 18px;
  width: 115px;
  height: 58px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.84);
}

.card-one {
  left: 22px;
}

.card-two {
  right: 22px;
  opacity: 0.66;
}

.hero-badge {
  position: absolute;
  right: 8px;
  bottom: 4px;
  display: grid;
  place-items: center;
  width: 62px;
  height: 62px;
  border: 5px solid rgba(255, 255, 255, 0.42);
  border-radius: 50%;
  color: #008dff;
  background: #fff;
  box-shadow: 0 12px 28px rgba(25, 34, 105, 0.28);
  font-size: 13px;
  font-weight: 1000;
}

.community-window {
  transform: rotate(2deg);
}

.community-banner {
  display: block;
  height: 45px;
  margin-bottom: 12px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.75);
}

.community-row {
  display: block;
  height: 12px;
  margin-top: 9px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.48);
}

.row-two {
  width: 82%;
}

.row-three {
  width: 64%;
}

.code-window {
  padding-top: 48px;
  transform: rotate(-2deg);
}

.code-dot {
  position: absolute;
  top: 20px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.dot-red {
  left: 22px;
  background: #ff7b7b;
}

.dot-yellow {
  left: 39px;
  background: #ffd066;
}

.dot-green {
  left: 56px;
  background: #65dda0;
}

.code-row {
  display: block;
  height: 10px;
  margin-bottom: 13px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.68);
}

.code-row-1 {
  width: 72%;
}

.code-row-2 {
  width: 92%;
}

.code-row-3 {
  width: 64%;
}

.code-row-4 {
  width: 82%;
}

.hero-controls {
  position: absolute;
  left: 42px;
  bottom: 18px;
  z-index: 4;
  display: flex;
  gap: 7px;
}

.hero-controls button {
  width: 23px;
  height: 5px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.38);
  cursor: pointer;
  transition:
    width 0.2s ease,
    background 0.2s ease;
}

.hero-controls button.is-active {
  width: 38px;
  background: #fff;
}

.home-notice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  min-height: 48px;
  padding: 10px 16px;
  border-radius: 7px;
  background: linear-gradient(
    90deg,
    rgba(0, 141, 255, 0.98),
    rgba(32, 178, 255, 0.92)
  );
}

.notice-label,
.new-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 22px;
  padding: 0 9px;
  border-radius: 20px;
  color: #5868ee;
  background: #fff;
  font-size: 9px;
  font-weight: 1000;
  text-transform: uppercase;
}

.home-notice p {
  margin: 0;
  color: rgba(255, 255, 255, 0.82);
  font-size: 11px;
}

.home-notice p strong {
  margin-right: 8px;
  color: #fff;
}

.home-notice > a {
  color: #fff;
  font-size: 10px;
  font-weight: 900;
}

.featured-section,
.portfolio-section {
  display: grid;
  gap: 12px;
}

.home-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  padding: 22px 4px 4px;
}

.section-kicker {
  margin-bottom: 5px;
  color: #23b7ff;
}

.home-section-head h2 {
  margin: 0;
  font-size: 22px;
  letter-spacing: -0.7px;
}

.section-description {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 11px;
}

.section-more {
  color: #aeb5c9;
  font-size: 10px;
  font-weight: 800;
}

.featured-list {
  display: grid;
  gap: 12px;
}

.featured-project {
  overflow: hidden;
  border-radius: var(--radius);
  background: linear-gradient(
    180deg,
    rgba(49, 53, 70, 0.98),
    rgba(40, 44, 58, 0.98)
  );
}

.featured-topline {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
  color: #bac0d1;
  font-size: 12px;
}

.new-chip {
  min-height: 19px;
  padding: 0 7px;
  color: #fff;
  background: var(--accent);
  font-size: 8px;
}

.featured-body {
  display: grid;
  grid-template-columns: minmax(360px, 0.9fr) minmax(0, 1.1fr);
  gap: 0;
}

.featured-image {
  display: block;
  min-height: 270px;
  padding: 16px;
  background: rgba(22, 25, 35, 0.24);
}

.featured-image img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 238px;
  border-radius: 7px;
  object-fit: cover;
  box-shadow: 0 14px 28px rgba(10, 13, 24, 0.24);
}

.featured-content {
  display: flex;
  flex-direction: column;
  padding: 26px 26px 18px;
}

.project-category {
  margin-bottom: 8px;
  color: #25baff;
}

.featured-content h3 {
  margin-bottom: 10px;
  font-size: 23px;
  letter-spacing: -0.7px;
}

.project-description {
  margin-bottom: 14px;
  color: #aeb5c9;
  font-size: 11px;
}

.project-features {
  display: grid;
  gap: 7px;
  margin: 0 0 18px;
  padding: 0;
  list-style: none;
}

.project-features li {
  position: relative;
  padding-left: 18px;
  color: #c8cddd;
  font-size: 10px;
}

.project-features li::before {
  content: "??;
  position: absolute;
  left: 0;
  top: 0;
  color: #23b7ff;
  font-weight: 1000;
}

.project-links {
  display: grid;
  gap: 8px;
  margin-top: auto;
}

.project-detail,
.project-inquiry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 42px;
  padding: 0 13px;
  border-radius: 6px;
  font-size: 10px;
  font-weight: 900;
}

.project-detail {
  color: #fff;
  background: linear-gradient(90deg, #008dff, #006edc);
}

.project-inquiry {
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: #aeb5c8;
  background: rgba(21, 24, 34, 0.25);
}

.featured-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  min-height: 34px;
  padding: 8px 14px;
  border-top: 1px solid var(--line);
  color: #747d95;
  background: rgba(30, 34, 46, 0.45);
  font-size: 11px;
}

.featured-meta span::before {
  content: "??;
  margin-right: 6px;
  color: #008dff;
}

.portfolio-heading {
  align-items: center;
}

.portfolio-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}

.portfolio-filters button {
  min-height: 30px;
  padding: 0 11px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  color: #99a1b6;
  background: rgba(255, 255, 255, 0.035);
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.portfolio-filters button:hover,
.portfolio-filters button.is-active {
  border-color: rgba(0, 141, 255, 0.52);
  color: #fff;
  background: rgba(0, 141, 255, 0.2);
}

.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.portfolio-card {
  overflow: hidden;
  border-radius: 7px;
  background: linear-gradient(
    180deg,
    rgba(48, 52, 68, 0.98),
    rgba(41, 45, 59, 0.98)
  );
  transition:
    transform 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}

.portfolio-card:hover {
  border-color: rgba(0, 141, 255, 0.38);
  box-shadow: 0 16px 34px rgba(12, 15, 26, 0.26);
  transform: translateY(-3px);
}

.portfolio-card.is-hidden,
.portfolio-card.is-collapsed {
  display: none;
}

.portfolio-preview {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: #222634;
}

.portfolio-preview img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition:
    transform 0.32s ease,
    filter 0.32s ease;
}

.preview-overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background: rgba(29, 35, 95, 0.68);
  font-size: 10px;
  font-weight: 1000;
  opacity: 0;
  transition: opacity 0.25s ease;
}

.portfolio-card:hover .portfolio-preview img {
  filter: brightness(0.7);
  transform: scale(1.04);
}

.portfolio-card:hover .preview-overlay {
  opacity: 1;
}

.portfolio-card-head {
  min-height: 66px;
  padding: 12px 14px;
}

.portfolio-card-head span {
  color: #747d95;
  font-size: 8px;
  font-weight: 900;
}

.portfolio-card-head h3 {
  margin: 3px 0 0;
  font-size: 12px;
  letter-spacing: -0.2px;
}

.portfolio-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.035);
}

.portfolio-actions a {
  display: grid;
  place-items: center;
  min-height: 38px;
  color: #d7dae5;
  font-size: 9px;
  font-weight: 800;
}

.portfolio-actions a + a {
  border-left: 1px solid var(--line);
}

.portfolio-more-wrap {
  display: flex;
  justify-content: center;
  padding-top: 8px;
}

.portfolio-more {
  min-height: 42px;
  padding: 0 22px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 6px;
  color: #dfe2ec;
  background: rgba(255, 255, 255, 0.045);
  font-size: 10px;
  font-weight: 900;
  cursor: pointer;
}

.portfolio-more:hover {
  border-color: rgba(0, 141, 255, 0.42);
  background: rgba(0, 141, 255, 0.12);
}

.portfolio-more[hidden] {
  display: none;
}

.home-contact-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 26px;
  margin-top: 12px;
  padding: 30px;
  overflow: hidden;
  border-radius: var(--radius);
  background:
    radial-gradient(
      circle at 92% 0%,
      rgba(0, 141, 255, 0.25),
      transparent 34%
    ),
    linear-gradient(135deg, rgba(47, 52, 69, 0.98), rgba(36, 40, 53, 0.98));
}

.home-contact-panel h2 {
  margin-bottom: 8px;
  font-size: 24px;
  letter-spacing: -0.8px;
}

.home-contact-panel p:not(.section-kicker) {
  margin: 0;
  color: #aeb5c9;
  font-size: 11px;
}

.contact-panel-actions {
  display: flex;
  gap: 8px;
}

/* ?몃? ?대?吏 ?놁씠 ?쒖떆?섎뒗 ?ы듃?대━??誘몃━蹂닿린 */
.site-mock {
  --mock-accent: #008dff;
  --mock-bg: #eef2ff;
  --mock-panel: #ffffff;
  --mock-text: #26304a;
  display: block;
  width: 100%;
  height: 100%;
  padding: 5.5% 5%;
  overflow: hidden;
  background: var(--mock-bg);
}

.site-mock-large {
  min-height: 238px;
  border-radius: 7px;
  box-shadow: 0 14px 28px rgba(10, 13, 24, 0.24);
}

.mock-top {
  display: flex;
  align-items: center;
  gap: 5px;
  height: 13%;
  padding: 0 4%;
  border-radius: 6px 6px 0 0;
  background: var(--mock-panel);
}

.mock-top i {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--mock-accent);
  opacity: 0.58;
}

.mock-top b {
  width: 30%;
  height: 22%;
  margin-left: auto;
  border-radius: 8px;
  background: var(--mock-text);
  opacity: 0.16;
}

.mock-hero {
  position: relative;
  display: block;
  height: 42%;
  padding: 9% 7%;
  overflow: hidden;
  background: var(--mock-accent);
}

.mock-hero::after {
  content: "";
  position: absolute;
  right: -8%;
  top: -36%;
  width: 43%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
}

.mock-hero b,
.mock-hero i {
  position: relative;
  z-index: 1;
  display: block;
  border-radius: 6px;
  background: #fff;
}

.mock-hero b {
  width: 47%;
  height: 12%;
  margin-bottom: 6%;
  opacity: 0.95;
}

.mock-hero i {
  width: 58%;
  height: 6%;
  margin-top: 4%;
  opacity: 0.52;
}

.mock-hero i:last-child {
  width: 36%;
}

.mock-columns {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4%;
  height: 45%;
  padding-top: 4%;
}

.mock-columns i {
  position: relative;
  border-radius: 5px;
  background: var(--mock-panel);
}

.mock-columns i::before,
.mock-columns i::after {
  content: "";
  position: absolute;
  left: 12%;
  border-radius: 5px;
  background: var(--mock-text);
  opacity: 0.16;
}

.mock-columns i::before {
  top: 18%;
  width: 55%;
  height: 7%;
}

.mock-columns i::after {
  top: 34%;
  width: 72%;
  height: 5%;
}

.theme-indigo {
  --mock-accent: #008dff;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #27304c;
}
.theme-violet {
  --mock-accent: #0077eb;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-copper {
  --mock-accent: #0f8fe8;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-blue {
  --mock-accent: #4474f2;
  --mock-bg: #edf3ff;
  --mock-panel: #ffffff;
  --mock-text: #263650;
}
.theme-navy {
  --mock-accent: #243251;
  --mock-bg: #e9edf4;
  --mock-panel: #ffffff;
  --mock-text: #1e293e;
}
.theme-sky {
  --mock-accent: #2ca3d6;
  --mock-bg: #eaf8fd;
  --mock-panel: #ffffff;
  --mock-text: #244153;
}
.theme-dark {
  --mock-accent: #313a54;
  --mock-bg: #1f2432;
  --mock-panel: #2b3141;
  --mock-text: #eef1ff;
}
.theme-cobalt {
  --mock-accent: #266fd1;
  --mock-bg: #e9f2ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-red {
  --mock-accent: #0f8fe8;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}
.theme-slate {
  --mock-accent: #586379;
  --mock-bg: #eef0f4;
  --mock-panel: #ffffff;
  --mock-text: #2e3441;
}
.theme-amber {
  --mock-accent: #1aa7e8;
  --mock-bg: #eaf7ff;
  --mock-panel: #ffffff;
  --mock-text: #213958;
}

.featured-image .site-mock {
  height: 100%;
}

.portfolio-preview .site-mock {
  position: absolute;
  inset: 0;
}

.portfolio-card:hover .site-mock {
  filter: brightness(0.72);
  transform: scale(1.04);
  transition:
    transform 0.32s ease,
    filter 0.32s ease;
}

/* =========================================================
   ?꾩옱 ??HTML 援ъ“ 蹂닿컯
   湲곗〈 ?몃뵒怨졖룸떎???ㅼ? ?좎??섍퀬 ?대옒?ㅻ챸留??곌껐?⑸땲??
   ========================================================= */

.portfolio-board {
  display: grid;
  gap: 12px;
}

/* ??HTML: portfolio-card-title */
.portfolio-card {
  position: relative;
}

.portfolio-card-title {
  min-height: 66px;
  padding: 12px 14px;
}

.portfolio-card-title > span {
  display: block;
  color: #747d95;
  font-size: 8px;
  font-weight: 900;
}

.portfolio-card-title h2 {
  margin: 3px 0 0;
  overflow: hidden;
  color: inherit;
  font-size: 12px;
  letter-spacing: -0.2px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 移대뱶 ?곗륫 ?곷떒 ?곕룄 */
.card-ribbon {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 20px;
  padding: 0 8px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 20px;
  color: #fff;
  background: rgba(35, 40, 56, 0.78);
  font-size: 8px;
  font-weight: 900;
  backdrop-filter: blur(8px);
}

/* ??HTML: portfolio-thumb */
.portfolio-thumb {
  position: relative;
  display: block;
  width: 100%;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  padding: 0;
  border: 0;
  background: #222634;
  cursor: pointer;
}

.portfolio-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
  transition:
    transform 0.32s ease,
    filter 0.32s ease;
}

.thumb-overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background: rgba(29, 35, 95, 0.68);
  font-size: 10px;
  font-weight: 1000;
  opacity: 0;
  transition: opacity 0.25s ease;
}

.portfolio-card:hover .portfolio-thumb img {
  filter: brightness(0.7);
  transform: scale(1.04);
}

.portfolio-card:hover .thumb-overlay {
  opacity: 1;
}

/* ??HTML: portfolio-card-actions */
.portfolio-card-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.035);
}

.portfolio-card-actions button,
.portfolio-card-actions a {
  display: grid;
  place-items: center;
  min-height: 38px;
  padding: 0 8px;
  border: 0;
  color: #d7dae5;
  background: transparent;
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.portfolio-card-actions a {
  border-left: 1px solid var(--line);
}

.portfolio-card-actions button:hover,
.portfolio-card-actions a:hover {
  color: #fff;
  background: rgba(0, 141, 255, 0.12);
}

/* 寃??寃곌낵 ?놁쓬 */
.empty-state {
  padding: 48px 20px;
  border: 1px dashed rgba(255, 255, 255, 0.12);
  border-radius: 7px;
  color: #d7dae5;
  text-align: center;
  background: rgba(255, 255, 255, 0.025);
}

.empty-state strong {
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
}

.empty-state p {
  margin: 0;
  color: #8992a8;
  font-size: 10px;
}

/* 寃곌낵 ??/ ?섏씠吏?ㅼ씠??*/
.portfolio-board-footer {
  display: grid;
  grid-template-columns: minmax(100px, 1fr) auto minmax(100px, 1fr);
  align-items: center;
  gap: 14px;
  padding-top: 8px;
}

.result-summary {
  display: flex;
  align-items: center;
  gap: 4px;
  color: #747d95;
  font-size: 10px;
}

.result-summary strong {
  color: #25baff;
  font-size: 13px;
}

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

.pagination button {
  display: grid;
  place-items: center;
  min-width: 30px;
  height: 30px;
  padding: 0 8px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  color: #99a1b6;
  background: rgba(255, 255, 255, 0.035);
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.pagination button:hover,
.pagination button.is-active,
.pagination button[aria-current="page"] {
  border-color: rgba(0, 141, 255, 0.52);
  color: #fff;
  background: rgba(0, 141, 255, 0.2);
}

.pagination button:disabled {
  cursor: default;
  opacity: 0.35;
}

.reset-button {
  justify-self: end;
  min-height: 30px;
  padding: 0 11px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  color: #99a1b6;
  background: rgba(255, 255, 255, 0.035);
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.reset-button:hover {
  border-color: rgba(0, 141, 255, 0.52);
  color: #fff;
  background: rgba(0, 141, 255, 0.12);
}

@media (max-width: 960px) {
  .portfolio-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .portfolio-board-footer {
    grid-template-columns: 1fr auto;
  }

  .pagination {
    grid-column: 1 / -1;
    grid-row: 1;
  }

  .result-summary {
    grid-column: 1;
    grid-row: 2;
  }

  .reset-button {
    grid-column: 2;
    grid-row: 2;
  }
}

@media (max-width: 640px) {
  .portfolio-grid {
    grid-template-columns: 1fr;
  }

  .portfolio-board-footer {
    grid-template-columns: 1fr;
    justify-items: center;
  }

  .pagination,
  .result-summary,
  .reset-button {
    grid-column: 1;
    grid-row: auto;
    justify-self: center;
  }

  .pagination {
    flex-wrap: wrap;
  }

  .home-notice {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .home-notice > a {
    grid-column: 2;
    justify-self: start;
  }
}

.home-project-modal[hidden] {
  display: none;
}

.home-project-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: 20px;
}

.home-project-modal .modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(11, 13, 20, 0.78);
  backdrop-filter: blur(8px);
}

.home-project-modal .modal-dialog {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
  width: min(920px, 100%);
  max-height: calc(100vh - 40px);
  overflow: auto;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 14px;
  background: #2b3040;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.45);
}

.home-project-modal .modal-close {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  width: 36px;
  height: 36px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 50%;
  color: #fff;
  background: rgba(17, 20, 29, 0.7);
  font-size: 20px;
  cursor: pointer;
}

.home-project-modal .modal-preview {
  display: grid;
  place-items: center;
  min-height: 400px;
  padding: 26px;
  background: #202430;
}

.home-project-modal .modal-preview img {
  width: 100%;
  height: 100%;
  min-height: 348px;
  object-fit: contain;
}

.home-project-modal .modal-mock-preview {
  width: 100%;
}

.home-project-modal .modal-site-mock {
  min-height: 348px;
  border-radius: 8px;
  box-shadow: 0 14px 28px rgba(10, 13, 24, 0.24);
}

.home-project-modal .modal-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 34px 30px;
}

.home-project-modal .modal-category {
  margin-bottom: 8px;
  color: #8fd6ff;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: 0;
  text-transform: uppercase;
}

.home-project-modal .modal-content h2 {
  margin-bottom: 13px;
  color: #f7f9ff;
  font-size: 27px;
  line-height: 1.25;
}

.home-project-modal .modal-content > p:not(.modal-category) {
  color: #bec5d5;
  font-size: 13px;
}

.home-project-modal .modal-meta {
  display: grid;
  gap: 8px;
  margin: 9px 0 22px;
}

.home-project-modal .modal-meta div {
  display: grid;
  grid-template-columns: 80px minmax(0, 1fr);
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
  font-size: 11px;
}

.home-project-modal .modal-meta dt {
  color: #8e97ab;
}

.home-project-modal .modal-meta dd {
  margin: 0;
  color: #f3f5fc;
}

body.modal-open {
  overflow: hidden;
}

@media (max-width: 760px) {
  .home-project-modal .modal-dialog {
    grid-template-columns: 1fr;
  }

  .home-project-modal .modal-preview {
    min-height: 260px;
    padding: 18px;
  }

  .home-project-modal .modal-preview img,
  .home-project-modal .modal-site-mock {
    min-height: 220px;
  }

  .home-project-modal .modal-content {
    padding: 24px 20px;
  }
}
/* =========================================================
   ?꾩옱 ??HTML 援ъ“ 蹂닿컯
   湲곗〈 ?몃뵒怨졖룸떎???ㅼ? ?좎??섍퀬 ?대옒?ㅻ챸留??곌껐?⑸땲??
   ========================================================= */

.portfolio-board {
  display: grid;
  gap: 12px;
}

/* ??HTML: portfolio-card-title */
.portfolio-card {
  position: relative;
}

.portfolio-card-title {
  min-height: 66px;
  padding: 12px 14px;
}

.portfolio-card-title > span {
  display: block;
  color: #747d95;
  font-size: 8px;
  font-weight: 900;
}

.portfolio-card-title h2 {
  margin: 3px 0 0;
  overflow: hidden;
  color: inherit;
  font-size: 12px;
  letter-spacing: -0.2px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 移대뱶 ?곗륫 ?곷떒 ?곕룄 */
.card-ribbon {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 20px;
  padding: 0 8px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 20px;
  color: #fff;
  background: rgba(35, 40, 56, 0.78);
  font-size: 8px;
  font-weight: 900;
  backdrop-filter: blur(8px);
}

/* ??HTML: portfolio-thumb */
.portfolio-thumb {
  position: relative;
  display: block;
  width: 100%;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  padding: 0;
  border: 0;
  background: #222634;
  cursor: pointer;
}

.portfolio-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition:
    transform 0.32s ease,
    filter 0.32s ease;
}

.thumb-overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background: rgba(29, 35, 95, 0.68);
  font-size: 10px;
  font-weight: 1000;
  opacity: 0;
  transition: opacity 0.25s ease;
}

.portfolio-card:hover .portfolio-thumb img {
  filter: brightness(0.7);
  transform: scale(1.04);
}

.portfolio-card:hover .thumb-overlay {
  opacity: 1;
}

/* ??HTML: portfolio-card-actions */
.portfolio-card-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.035);
}

.portfolio-card-actions button,
.portfolio-card-actions a {
  display: grid;
  place-items: center;
  min-height: 38px;
  padding: 0 8px;
  border: 0;
  color: #d7dae5;
  background: transparent;
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.portfolio-card-actions a {
  border-left: 1px solid var(--line);
}

.portfolio-card-actions button:hover,
.portfolio-card-actions a:hover {
  color: #fff;
  background: rgba(0, 141, 255, 0.12);
}

/* 寃??寃곌낵 ?놁쓬 */
.empty-state {
  padding: 48px 20px;
  border: 1px dashed rgba(255, 255, 255, 0.12);
  border-radius: 7px;
  color: #d7dae5;
  text-align: center;
  background: rgba(255, 255, 255, 0.025);
}

.empty-state strong {
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
}

.empty-state p {
  margin: 0;
  color: #8992a8;
  font-size: 10px;
}

/* 寃곌낵 ??/ ?섏씠吏?ㅼ씠??*/
.portfolio-board-footer {
  display: grid;
  grid-template-columns: minmax(100px, 1fr) auto minmax(100px, 1fr);
  align-items: center;
  gap: 14px;
  padding-top: 8px;
}

.result-summary {
  display: flex;
  align-items: center;
  gap: 4px;
  color: #747d95;
  font-size: 10px;
}

.result-summary strong {
  color: #25baff;
  font-size: 13px;
}

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

.pagination button {
  display: grid;
  place-items: center;
  min-width: 30px;
  height: 30px;
  padding: 0 8px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  color: #99a1b6;
  background: rgba(255, 255, 255, 0.035);
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.pagination button:hover,
.pagination button.is-active,
.pagination button[aria-current="page"] {
  border-color: rgba(0, 141, 255, 0.52);
  color: #fff;
  background: rgba(0, 141, 255, 0.2);
}

.pagination button:disabled {
  cursor: default;
  opacity: 0.35;
}

.reset-button {
  justify-self: end;
  min-height: 30px;
  padding: 0 11px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  color: #99a1b6;
  background: rgba(255, 255, 255, 0.035);
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
}

.reset-button:hover {
  border-color: rgba(0, 141, 255, 0.52);
  color: #fff;
  background: rgba(0, 141, 255, 0.12);
}

@media (max-width: 960px) {
  .portfolio-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .portfolio-board-footer {
    grid-template-columns: 1fr auto;
  }

  .pagination {
    grid-column: 1 / -1;
    grid-row: 1;
  }

  .result-summary {
    grid-column: 1;
    grid-row: 2;
  }

  .reset-button {
    grid-column: 2;
    grid-row: 2;
  }
}

@media (max-width: 640px) {
  .portfolio-grid {
    grid-template-columns: 1fr;
  }

  .portfolio-board-footer {
    grid-template-columns: 1fr;
    justify-items: center;
  }

  .pagination,
  .result-summary,
  .reset-button {
    grid-column: 1;
    grid-row: auto;
    justify-self: center;
  }

  .pagination {
    flex-wrap: wrap;
  }

  .home-notice {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .home-notice > a {
    grid-column: 2;
    justify-self: start;
  }
}
