Spring Boot 3.2 + React 18 SPA + SQLite GUARDiA PMS ZIO-WEB-2026 프로젝트 연동 URP 스타일 디자인, GUARDiA 솔루션 상세 소개 (스크린샷 6장) 25개 ChatOps 봇 명령어 카탈로그, Messenger Bot 시나리오 데모 manual/17 개발가이드 생성 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
127 lines
3.5 KiB
CSS
127 lines
3.5 KiB
CSS
/* ─── Header ──────────────────────────────────────────────── */
|
|
.skip-link {
|
|
position: absolute; top: -60px; left: 0; z-index: 9999;
|
|
background: var(--primary); color: #fff;
|
|
padding: 10px 20px; border-radius: 0 0 8px 0;
|
|
transition: top .2s;
|
|
}
|
|
.skip-link:focus { top: 0; }
|
|
|
|
.header {
|
|
position: fixed; top: 0; left: 0; right: 0;
|
|
z-index: 1000; height: var(--header-h);
|
|
background: rgba(26, 26, 46, 0.96);
|
|
backdrop-filter: blur(12px);
|
|
border-bottom: 1px solid rgba(255,255,255,.08);
|
|
transition: all var(--mid) var(--ease);
|
|
}
|
|
.header.scrolled {
|
|
background: rgba(26, 26, 46, 0.99);
|
|
box-shadow: 0 4px 24px rgba(0,0,0,.3);
|
|
}
|
|
.header-inner {
|
|
display: flex; align-items: center; gap: 32px;
|
|
height: 100%;
|
|
}
|
|
|
|
/* 로고 */
|
|
.logo { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
|
|
.logo img { height: 40px; width: auto; filter: brightness(0) invert(1); }
|
|
.logo-text { color: #fff; font-size: 20px; font-weight: 700; }
|
|
.logo-text strong { color: var(--accent); }
|
|
|
|
/* 데스크톱 메뉴 */
|
|
.nav-desktop {
|
|
display: flex; align-items: center; gap: 4px;
|
|
margin-left: 24px; flex: 1;
|
|
}
|
|
.nav-item { position: relative; }
|
|
.nav-trigger {
|
|
height: var(--header-h);
|
|
padding: 0 16px;
|
|
color: rgba(255,255,255,.85);
|
|
font-size: 15px; font-weight: 500;
|
|
transition: color var(--fast);
|
|
display: flex; align-items: center;
|
|
}
|
|
.nav-trigger:hover,
|
|
.nav-item.active .nav-trigger { color: #fff; }
|
|
.nav-item.active .nav-trigger { border-bottom: 2px solid var(--accent); }
|
|
|
|
/* 드롭다운 */
|
|
.dropdown {
|
|
position: absolute; top: calc(var(--header-h) - 2px); left: 0;
|
|
min-width: 180px;
|
|
background: #fff;
|
|
border-radius: 0 0 var(--radius) var(--radius);
|
|
box-shadow: var(--shadow-lg);
|
|
border-top: 3px solid var(--primary);
|
|
padding: 8px 0;
|
|
animation: fadeDown .18s ease;
|
|
}
|
|
@keyframes fadeDown {
|
|
from { opacity:0; transform:translateY(-8px); }
|
|
to { opacity:1; transform:translateY(0); }
|
|
}
|
|
.dropdown-item {
|
|
display: flex; align-items: center; gap: 8px;
|
|
padding: 10px 20px;
|
|
font-size: 14px; color: var(--gray-700);
|
|
transition: all var(--fast);
|
|
}
|
|
.dropdown-item:hover, .dropdown-item.current {
|
|
background: var(--primary-light);
|
|
color: var(--primary);
|
|
}
|
|
|
|
/* CTA 버튼 */
|
|
.header-cta { margin-left: auto; flex-shrink: 0; }
|
|
|
|
/* 햄버거 */
|
|
.hamburger {
|
|
display: none;
|
|
flex-direction: column;
|
|
gap: 5px;
|
|
padding: 8px;
|
|
margin-left: auto;
|
|
}
|
|
.hamburger span {
|
|
display: block; width: 24px; height: 2px;
|
|
background: #fff;
|
|
border-radius: 2px;
|
|
transition: all var(--mid);
|
|
}
|
|
|
|
/* 모바일 메뉴 */
|
|
.nav-mobile {
|
|
display: none;
|
|
flex-direction: column;
|
|
background: var(--secondary);
|
|
border-top: 1px solid rgba(255,255,255,.1);
|
|
max-height: calc(100vh - var(--header-h));
|
|
overflow-y: auto;
|
|
}
|
|
.mobile-group { border-bottom: 1px solid rgba(255,255,255,.08); }
|
|
.mobile-group-header {
|
|
display: flex; align-items: center;
|
|
padding: 14px 24px;
|
|
color: rgba(255,255,255,.85);
|
|
font-size: 15px; font-weight: 500;
|
|
cursor: pointer;
|
|
}
|
|
.mobile-children { background: rgba(0,0,0,.2); }
|
|
.mobile-child {
|
|
display: flex; align-items: center; gap: 8px;
|
|
padding: 10px 36px;
|
|
font-size: 14px; color: rgba(255,255,255,.7);
|
|
}
|
|
.mobile-child:hover { color: #fff; }
|
|
|
|
/* 반응형 */
|
|
@media (max-width: 1024px) {
|
|
.nav-desktop, .header-cta { display: none; }
|
|
.hamburger { display: flex; }
|
|
.header.mobile-open .nav-mobile { display: flex; }
|
|
.header.mobile-open { height: auto; }
|
|
}
|