/* Portfolio: a quiet white gallery with an architectural grid and lift on hover. */
#works { position: relative; isolation: isolate; background: #fff; }
#works::before { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; background-image: linear-gradient(90deg, #11111105 1px, transparent 1px); background-size: calc(100% / 12) 100%; mask-image: linear-gradient(transparent, #000 15%, #000 80%, transparent); }
#works .portfolio-header { align-items: flex-start; text-align: left; border-top: 1px solid #deded9; padding-top: 28px; }
#works .portfolio-filter { justify-content: flex-start; gap: 8px; }
#works .filter-btn { background: #fff; color: #555; border-color: #e5e5e2; }
#works .filter-btn.active { background: #202020; color: #fff; border-color: #202020; transform: none; }
#works .portfolio-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px 24px; }
#works .project-card { border: 0; border-radius: 0; background: #fff !important; color: #202020; overflow: visible; box-shadow: none; }
#works .project-thumb { aspect-ratio: 4 / 3; border-radius: 14px; background: #f3f3f0; border: 1px solid #1919190b; }
#works .project-content { padding: 18px 0 0; gap: 8px; justify-content: flex-start; }
.collection-meta { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: 11px; letter-spacing: .04em; color: #696962; }
.collection-meta span:first-child { text-transform: uppercase; }
.collection-meta span:last-child { white-space: nowrap; }
#works .project-title { font-size: 19px; line-height: 1.35; letter-spacing: -.035em; font-weight: 500; margin: 0; color: #222; }
#works .project-desc { color: #71716a; font-size: 12px; line-height: 1.5; margin: 0; }
.collection-open { position: absolute; right: 12px; bottom: 12px; width: 36px; height: 36px; display: grid; place-items: center; background: #fffffff0; color: #222; border-radius: 50%; font-size: 20px; box-shadow: 0 2px 8px #00000010; transition: transform .25s ease; }
@media (hover: hover) and (pointer: fine) {
  #works .project-card:hover { transform: translateY(-3px); box-shadow: none; }
  #works .project-card:hover .project-thumb img, #works .project-card:hover .project-thumb video { transform: scale(1.025); }
  #works .project-card:hover .collection-open { transform: rotate(45deg); }
}
#works .project-card:focus-visible { outline: 2px solid #333; outline-offset: 6px; border-radius: 14px; }
#project-modal { background: #20201d88; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
#project-modal .modal-content { background: #fff; color: #222; max-width: 1160px; border: 1px solid #e5e5df; border-radius: 20px; padding: 40px; box-shadow: 0 24px 80px #00000030; scrollbar-color: #bbb #fff; }
#project-modal .modal-close { position: sticky; float: right; top: 0; margin: -20px -20px 0 0; background: #f5f5f2; color: #222; border: 1px solid #ddd; width: 40px; height: 40px; }
#project-modal .modal-close:hover { background: #e9e9e3; transform: none; }
.collection-intro { padding: 0 48px 24px 0; }
.collection-intro > span { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: #73736a; }
#project-modal .modal-project-title { font-size: clamp(26px, 4vw, 46px); font-weight: 500; letter-spacing: -.045em; margin: 12px 0; }
.collection-intro > p { font-size: 13px; color: #77776c; }
#project-modal .modal-media { max-height: 480px; border-radius: 10px; border: 1px solid #e9e9e3; margin-bottom: 20px; }
.collection-summary { font-size: 15px; color: #595952; line-height: 1.75; max-width: 820px; text-wrap: pretty; }
.collection-gallery { border-top: 1px solid #deded8; margin: 32px 0 48px; padding-top: 24px; }
.collection-gallery-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.collection-gallery-heading h3 { font-size: 18px; font-weight: 500; letter-spacing: -.02em; }
.collection-gallery-heading h3 span { font-size: 11px; color: #777; vertical-align: super; margin-left: 6px; }
.collection-gallery-heading p { font-size: 12px; color: #77776c; }
#project-modal .modal-items-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 22px; }
#project-modal .is-video-gallery .modal-items-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 24px; }
#project-modal .modal-folder-item { display: block; min-width: 0; padding: 0; text-align: left; background: transparent; border: 0; border-radius: 6px; color: #222; will-change: auto; }
.collection-artwork { aspect-ratio: 4 / 3; position: relative; display: flex; align-items: center; justify-content: center; border: 1px solid #0000000b; border-radius: 12px; overflow: hidden; transition: border-color .25s ease, box-shadow .25s ease; }
.is-video-item .collection-artwork { aspect-ratio: 16 / 9; background: #111 !important; }
.collection-artwork img, .collection-artwork video { width: 100%; height: 100%; object-fit: contain; }
.collection-item-caption { display: flex; align-items: baseline; gap: 10px; padding: 12px 2px 0; }
.collection-item-number { flex: none; font-size: 10px; color: #929286; font-variant-numeric: tabular-nums; }
.collection-item-name { font-size: 13px; line-height: 1.55; font-weight: 500; overflow-wrap: anywhere; text-wrap: pretty; }
#project-modal .modal-folder-item:hover { background: transparent; transform: translateY(-3px); }
#project-modal .modal-folder-item:hover .collection-artwork { border-color: #00000020; box-shadow: 0 14px 30px -22px #0009; }
#project-modal .modal-folder-item:focus-visible { outline: 2px solid #333; outline-offset: 5px; }
#project-modal .modal-media-zoom-overlay { background: #fffffff2; color: #222; border: 1px solid #deded8; }
#project-modal .modal-two-col-grid { padding-top: 24px; border-top: 1px solid #e5e5df; }

/* Full-screen viewer: keep the artwork dominant and controls calm. */
#image-zoom-modal { background: rgba(8, 8, 8, .98); backdrop-filter: none; -webkit-backdrop-filter: none; }
#image-zoom-modal .zoom-toolbar { position: relative; z-index: 20; min-height: 72px; padding: 14px 24px; background: rgba(15, 15, 15, .88); border-bottom: 1px solid rgba(255,255,255,.1); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
#image-zoom-modal .zoom-info { min-width: 0; gap: 12px; }
#image-zoom-modal .zoom-title { max-width: min(48vw, 620px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 500; letter-spacing: -.01em; }
#image-zoom-modal .zoom-counter { flex: none; padding: 5px 8px; border-radius: 999px; background: rgba(255,255,255,.08); color: rgba(255,255,255,.65); font-variant-numeric: tabular-nums; }
#image-zoom-modal .zoom-controls { gap: 7px; }
#image-zoom-modal .zoom-btn { width: 40px; height: 40px; border: 1px solid rgba(255,255,255,.13); background: rgba(255,255,255,.07); font-size: 15px; }
#image-zoom-modal #zoom-reset-btn { width: auto; min-width: 64px; padding-inline: 12px; font-variant-numeric: tabular-nums; }
#image-zoom-modal .zoom-btn:hover { background: rgba(255,255,255,.15); }
#image-zoom-modal .zoom-viewport { padding: 28px 88px; touch-action: none; }
#image-zoom-modal .zoom-img { max-width: 100%; max-height: calc(100dvh - 150px); transition: transform .16s ease-out; transform-origin: center; }
#image-zoom-modal .zoom-nav-btn { width: 48px; height: 48px; background: rgba(24,24,24,.8); border-color: rgba(255,255,255,.15); font-size: 28px; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
#image-zoom-modal .zoom-prev-btn { left: 22px; }
#image-zoom-modal .zoom-next-btn { right: 22px; }
#image-zoom-modal .zoom-hint { padding: 11px 20px calc(11px + env(safe-area-inset-bottom)); color: rgba(255,255,255,.48); background: #0c0c0c; font-size: 11px; letter-spacing: .01em; }
@media (max-width: 900px) {
  #works .portfolio-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 18px; }
  #project-modal .modal-items-grid,
  #project-modal .is-video-gallery .modal-items-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #project-modal .modal-content { padding: 28px; }
  #project-modal .modal-close { margin: -12px -12px 0 0; }
}
@media (max-width: 540px) {
  #works .portfolio-grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  #works .project-title { font-size: 20px; }
  #works .project-content { padding-top: 14px; }
  #project-modal { padding: 8px; }
  #project-modal .modal-content { padding: 18px; border-radius: 16px; max-height: 94dvh; }
  #project-modal .modal-close { margin: -8px -8px 0 0; }
  .collection-gallery-heading { align-items: flex-start; flex-direction: column; gap: 6px; }
  #project-modal .modal-items-grid { gap: 24px 12px; }
  #project-modal .is-video-gallery .modal-items-grid { grid-template-columns: 1fr; gap: 28px; }
  .collection-item-caption { gap: 6px; }
  .collection-item-name { font-size: 12px; line-height: 1.5; }
  .collection-intro { padding-right: 32px; }
  .collection-intro > span { line-height: 1.8; }
  #project-modal .modal-two-col-grid { grid-template-columns: 1fr; }

  #image-zoom-modal .zoom-toolbar { min-height: 68px; padding: calc(13px + env(safe-area-inset-top)) 68px 13px 16px; backdrop-filter: none; -webkit-backdrop-filter: none; background: rgba(15,15,15,.98); }
  #image-zoom-modal .zoom-info { display: grid; grid-template-columns: minmax(0, 1fr) auto; width: 100%; gap: 8px; }
  #image-zoom-modal .zoom-title { max-width: none; font-size: 13px; }
  #image-zoom-modal .zoom-counter { font-size: 10px; padding: 4px 7px; }
  #image-zoom-modal .zoom-controls { position: fixed; z-index: 30; left: 50%; bottom: calc(18px + env(safe-area-inset-bottom)); transform: translateX(-50%); padding: 7px; gap: 5px; border: 1px solid rgba(255,255,255,.12); border-radius: 999px; background: rgba(24,24,24,.9); box-shadow: 0 14px 36px #0009; backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
  #image-zoom-modal .zoom-btn { width: 42px; height: 42px; }
  #image-zoom-modal #zoom-reset-btn { min-width: 62px; padding-inline: 9px; }
  #image-zoom-modal #zoom-close-btn { background: rgba(54,54,54,.96); }
  #image-zoom-modal .zoom-viewport { padding: 18px 14px 88px; }
  #image-zoom-modal .zoom-img { max-height: calc(100dvh - 170px); }
  #image-zoom-modal .zoom-nav-btn { top: auto; bottom: calc(84px + env(safe-area-inset-bottom)); width: 42px; height: 42px; transform: none; font-size: 24px; }
  #image-zoom-modal .zoom-prev-btn { left: 14px; }
  #image-zoom-modal .zoom-next-btn { right: 14px; }
  #image-zoom-modal .zoom-hint { display: none; }
}

/* Services spacing: compact on phones while preserving comfortable touch targets. */
@media (max-width: 639px) {
  #services { padding-block: 1.1rem 1.75rem; }
  #services .eyebrow { margin-bottom: 0; }
  #services .services-h2 {
    margin-block: .55rem .9rem;
    font-size: clamp(1.75rem, 8vw, 2.15rem);
    line-height: 1.08;
  }
  #services .service-row-trigger {
    min-height: 58px;
    gap: .65rem;
    padding: .68rem .35rem !important;
    border-radius: 12px;
  }
  #services .service-index {
    width: 1.35rem;
    font-size: .75rem;
  }
  #services .service-title {
    font-size: 1.05rem;
    line-height: 1.2;
  }
  #services .service-badge {
    width: 2.15rem;
    height: 2.15rem;
  }
  #services .service-expand-inner {
    padding-inline: .35rem;
    padding-bottom: 1rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  #works .project-card, #works .project-thumb img, #works .project-thumb video, .collection-open, #project-modal .modal-folder-item { transition: none !important; transform: none !important; }
}
