.services-directory-page { padding: 36px 0 68px; } .services-directory-head { margin-bottom: 40px; } .services-directory-title { margin: 0; font-size: clamp(2rem, 1.6vw + 1.5rem, 3rem); line-height: 1.15; color: var(--color-primary); } .services-directory-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 28px; align-items: start; } .services-directory-sidebar { position: sticky; top: calc(var(--header-height) + 18px); } .services-directory-nav-box { border: 1px solid var(--border-default); border-radius: var(--radius-md); background: color-mix(in srgb, var(--bg-surface) 92%, transparent); padding: 14px; } .services-directory-nav-title { margin: 0; font-size: 1rem; color: var(--text-primary); } .services-directory-nav-list { margin-top: 10px; display: flex; flex-direction: column; gap: 5px; } .services-directory-nav-list a { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; border-radius: 8px; color: var(--text-secondary); text-decoration: none; border: 1px solid transparent; } .services-directory-nav-list a:hover { color: var(--color-primary); border-color: var(--border-default); background: color-mix(in srgb, var(--bg-card) 88%, transparent); } .services-directory-nav-name { font-size: 0.94rem; } .services-directory-nav-count { min-width: 26px; padding: 1px 7px; border-radius: 999px; text-align: center; font-size: 0.74rem; font-weight: 700; color: var(--text-secondary); background: color-mix(in srgb, var(--bg-card) 72%, var(--bg-surface) 28%); border: 1px solid var(--border-default); } .services-directory-content { min-width: 0; } .services-directory-group { scroll-margin-top: calc(var(--header-height) + 18px); } .services-directory-group + .services-directory-group { margin-top: 28px; } .services-directory-group-head { margin-bottom: 12px; } .services-directory-group-head h2 { margin: 0; font-size: 1.52rem; color: var(--text-primary); } .services-directory-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: start; } .services-directory-card { display: block; position: relative; overflow: hidden; border: 1px solid color-mix(in srgb, var(--border-default) 86%, transparent); border-radius: 6px; background: linear-gradient( 132deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, transparent 38% ), linear-gradient( 180deg, color-mix(in srgb, var(--bg-card) 92%, #0f1726 8%) 0%, color-mix(in srgb, var(--bg-card) 98%, transparent) 100% ); padding: 12px 12px 11px; min-height: 0; color: inherit; text-decoration: none; box-shadow: 0 14px 26px -22px color-mix(in srgb, #000000 68%, transparent), inset 0 1px 0 color-mix(in srgb, #ffffff 8%, transparent); transition: transform var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out), background var(--duration-fast) var(--ease-in-out); } .services-directory-card::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, color-mix(in srgb, var(--color-primary) 64%, transparent), transparent) top left / 58px 1px no-repeat, linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 64%, transparent), transparent) top left / 1px 24px no-repeat; opacity: 0.5; } .services-directory-card:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--color-primary) 58%, var(--border-default) 42%); box-shadow: 0 20px 32px -24px color-mix(in srgb, #000000 72%, transparent), inset 0 1px 0 color-mix(in srgb, #ffffff 10%, transparent); background: linear-gradient( 132deg, color-mix(in srgb, var(--color-primary) 14%, transparent) 0%, transparent 40% ), linear-gradient( 180deg, color-mix(in srgb, var(--bg-card) 90%, #0f1726 10%) 0%, color-mix(in srgb, var(--bg-card) 97%, transparent) 100% ); } .services-directory-card:hover .services-directory-name { color: color-mix(in srgb, var(--text-primary) 82%, var(--color-primary) 18%); } .services-directory-card-head { display: flex; align-items: center; gap: 12px; } .services-directory-icon-wrap { width: 54px; height: 54px; border-radius: 6px; border: none; background: transparent; overflow: hidden; display: block; flex-shrink: 0; } .services-directory-icon { width: 100%; height: 100%; object-fit: cover; display: block; } .services-directory-icon-fallback { opacity: 1; } .services-directory-meta { min-width: 0; } .services-directory-name { margin: 0; font-size: 1.16rem; line-height: 1.28; color: var(--text-primary); font-weight: 760; } .services-directory-category { margin-top: 4px; display: inline-block; font-size: 0.8rem; color: var(--text-secondary); } .services-directory-access { position: absolute; top: 10px; right: 10px; z-index: 2; margin: 0; display: inline-flex; align-items: center; gap: 5px; padding: 2px 8px 2px 7px; border-radius: 4px; font-size: 0.68rem; font-weight: 700; line-height: 1.35; letter-spacing: 0.02em; border: 1px solid color-mix(in srgb, var(--color-primary) 62%, var(--border-default) 38%); background: color-mix(in srgb, var(--color-primary) 20%, var(--bg-card) 80%); color: var(--color-primary); } .services-directory-access::before { content: ""; width: 5px; height: 5px; border-radius: 1px; background: currentColor; opacity: 0.9; } .services-directory-card.is-campus-only .services-directory-card-head { padding-right: 98px; } .services-directory-desc { margin: 10px 0 0; padding-top: 10px; border-top: 1px solid color-mix(in srgb, var(--border-default) 84%, transparent); color: var(--text-secondary); font-size: 0.94rem; line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .services-directory-empty { margin-top: 16px; border: 1px solid var(--border-default); border-radius: 12px; padding: 28px; text-align: center; background: color-mix(in srgb, var(--bg-card) 95%, transparent); } .services-directory-empty h2 { margin: 0; font-size: 1.6rem; color: var(--text-primary); } .services-directory-empty p { margin: 10px 0 0; color: var(--text-secondary); } .services-directory-empty-btn { margin-top: 16px; display: inline-flex; align-items: center; justify-content: center; min-width: 148px; height: 38px; padding: 0 16px; border-radius: 10px; border: 1px solid color-mix(in srgb, var(--color-primary) 65%, var(--border-default) 35%); color: var(--color-primary); text-decoration: none; font-weight: 700; } .services-directory-empty-btn:hover { background: color-mix(in srgb, var(--color-primary) 10%, transparent); } @media (max-width: 1280px) { .services-directory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 980px) { .services-directory-head { margin-bottom: 30px; } .services-directory-layout { grid-template-columns: 1fr; gap: 16px; } .services-directory-sidebar { position: static; } .services-directory-nav-list { flex-direction: row; flex-wrap: wrap; gap: 8px; } .services-directory-nav-list li { flex: 0 0 auto; } .services-directory-nav-list a { padding: 7px 11px; } } @media (max-width: 680px) { .services-directory-page { padding: 26px 0 52px; } .services-directory-head { margin-bottom: 24px; } .services-directory-grid { grid-template-columns: 1fr; gap: 12px; } .services-directory-card { min-height: 0; } .services-directory-access { top: 8px; right: 8px; font-size: 0.64rem; padding: 2px 6px; } .services-directory-card.is-campus-only .services-directory-card-head { padding-right: 88px; } }