@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300&family=Jost:wght@300;400;500&display=swap'); /* ── Host fills the padded app-root container ───────────────────── */ :host { display: block; height: calc(100vh - 40px); /* compensates for app-root padding: 20px */ } /* ── Page shell ─────────────────────────────────────────────────── */ .page { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; overflow: hidden; background-color: #1a1714; background-image: radial-gradient(ellipse 70% 60% at 14% 56%, rgba(200, 169, 110, 0.07) 0%, transparent 100%), radial-gradient(ellipse 50% 50% at 87% 24%, rgba(200, 169, 110, 0.045) 0%, transparent 100%); } /* Subtle horizontal staff-line texture */ .page::before { content: ''; position: absolute; inset: 0; background-image: repeating-linear-gradient( to bottom, transparent 0px, transparent 59px, rgba(200, 169, 110, 0.033) 59px, rgba(200, 169, 110, 0.033) 60px ); pointer-events: none; } /* ── Admin link ─────────────────────────────────────────────────── */ .admin-link { position: absolute; top: 0; right: 0; font-family: 'Jost', sans-serif; font-size: 0.68rem; font-weight: 300; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(240, 230, 211, 0.28); text-decoration: none; transition: color 0.25s; z-index: 2; } .admin-link:hover { color: #c8a96e; } /* ── Hero content ───────────────────────────────────────────────── */ .hero { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 2.25rem; width: 100%; max-width: 800px; padding: 0 1rem; } /* ── Title block ────────────────────────────────────────────────── */ .title-block { text-align: center; animation: rise 0.85s cubic-bezier(0.16, 1, 0.3, 1) both; } .clef { display: block; font-size: 2.2rem; line-height: 1.1; color: #c8a96e; opacity: 0.65; margin-bottom: 0.2rem; } h1 { font-family: 'Cormorant Garamond', 'Palatino Linotype', Palatino, Georgia, serif; font-size: clamp(2.8rem, 7.5vw, 5rem); font-weight: 300; letter-spacing: 0.22em; color: #f0e6d3; margin: 0 0 0.25em; line-height: 1; } .tagline { font-family: 'Cormorant Garamond', Georgia, serif; font-size: clamp(0.8rem, 1.8vw, 1rem); font-weight: 300; font-style: italic; color: #c8a96e; letter-spacing: 0.35em; text-transform: uppercase; margin: 0 0 1.1rem; } .ornament-line { width: 44px; height: 1px; background: linear-gradient(90deg, transparent, #c8a96e 35%, #c8a96e 65%, transparent); margin: 0 auto 1.1rem; } .description { font-family: 'Jost', sans-serif; font-size: 0.8rem; font-weight: 300; color: rgba(240, 230, 211, 0.38); letter-spacing: 0.06em; margin: 0; } /* ── Cards grid ─────────────────────────────────────────────────── */ .cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.875rem; width: 100%; animation: rise 0.85s cubic-bezier(0.16, 1, 0.3, 1) 0.14s both; } /* ── Individual card ────────────────────────────────────────────── */ .card { background: rgba(255, 255, 255, 0.025); border: 1px solid rgba(200, 169, 110, 0.13); border-radius: 4px; padding: 1.75rem 1rem 1.5rem; display: flex; flex-direction: column; align-items: center; gap: 0.55rem; text-decoration: none; color: inherit; cursor: pointer; font-family: 'Jost', sans-serif; font-size: inherit; text-align: center; transition: border-color 0.3s ease, background 0.3s ease, transform 0.35s cubic-bezier(0.16, 1, 0.3, 1); position: relative; } .card::before { content: ''; position: absolute; inset: 0; border-radius: 3px; background: linear-gradient(145deg, rgba(200, 169, 110, 0.07) 0%, transparent 65%); opacity: 0; transition: opacity 0.3s; pointer-events: none; } .card:hover { border-color: rgba(200, 169, 110, 0.38); background: rgba(255, 255, 255, 0.04); transform: translateY(-5px); } .card:hover::before { opacity: 1; } .card:active { transform: translateY(-2px); } /* ── Icon container ─────────────────────────────────────────────── */ .icon-wrap { width: 48px; height: 48px; border-radius: 11px; overflow: hidden; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } .icon-wrap svg { display: block; width: 100%; height: 100%; } .icon-wrap.copy { background: rgba(200, 169, 110, 0.1); color: #c8a96e; padding: 11px; box-sizing: border-box; transition: background 0.3s, color 0.3s; } /* ── Card text ──────────────────────────────────────────────────── */ .card-label { font-size: 0.875rem; font-weight: 500; color: #ede0cc; letter-spacing: 0.03em; transition: color 0.25s; } .card-sub { font-size: 0.68rem; font-weight: 300; color: rgba(240, 230, 211, 0.32); letter-spacing: 0.09em; } /* ── Copy card: confirmed state ─────────────────────────────────── */ .copy-card.copied .card-label { color: #7cc48e; } .copy-card.copied .icon-wrap.copy { background: rgba(124, 196, 142, 0.1); color: #7cc48e; } /* ── Page-load animation ────────────────────────────────────────── */ @keyframes rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } } /* ── Responsive ─────────────────────────────────────────────────── */ @media (max-width: 580px) { :host { height: auto; } .page { min-height: calc(100vh - 40px); padding: 2.5rem 0; justify-content: flex-start; padding-top: 15%; } .cards { grid-template-columns: 1fr; max-width: 280px; } .card:hover { transform: none; } } @media (max-width: 380px) { h1 { letter-spacing: 0.1em; } }