@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400;1,600&family=IM+Fell+English:ital@0;1&display=swap');

:root {
    --cream:    #f5f0e4;
    --parchment:#e8dfc8;
    --gold:     #b8973a;
    --gold-lt:  #d4b05a;
    --green:    #1c3a28;
    --green-md: #2e5940;
    --burgundy: #6b1a2a;
    --ink:      #1a1208;
    --shadow:   rgba(26,18,8,0.30);
    --font-display: 'IM Fell English', Georgia, serif;
    --font-body:    'Cormorant Garamond', Georgia, serif;
}

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }

body {
    background-color: var(--green);
    background-image:
        radial-gradient(ellipse at 50% 0%, rgba(184,151,58,0.22) 0%, transparent 65%),
        url("data:image/svg+xml,%3Csvg width='120' height='120' viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23b8973a' stroke-width='0.5' opacity='0.12'%3E%3Ccircle cx='60' cy='60' r='50'/%3E%3Ccircle cx='60' cy='60' r='32'/%3E%3Cpath d='M10 60 Q35 10 60 10 Q85 10 110 60 Q85 110 60 110 Q35 110 10 60z'/%3E%3Cpath d='M60 10 L60 110 M10 60 L110 60'/%3E%3C/g%3E%3C/svg%3E");
    font-family: var(--font-body);
    color: var(--ink);
    min-height: 100vh;
}

/* ─── Utility ─────────────────────────────────────── */
.hidden { display: none !important; }

/* ─── Gate (Full Page) ────────────────────────────── */
#gate {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    transition: opacity 0.7s ease;
}

#gate.fading { opacity: 0; }

.gate-box {
    position: relative;
    background: var(--cream);
    padding: 3.5rem 3rem 3rem;
    width: 100%;
    max-width: 400px;
    text-align: center;
}

/* Corner ornaments */
.gate-box::before, .gate-box::after,
.gate-box .corner-bl, .gate-box .corner-br {
    content: '';
    position: absolute;
    width: 44px;
    height: 44px;
    border-color: var(--gold);
    border-style: solid;
}
.gate-box::before    { top:8px;    left:8px;   border-width:2px 0 0 2px; }
.gate-box::after     { top:8px;    right:8px;  border-width:2px 2px 0 0; }
.gate-box .corner-bl { bottom:8px; left:8px;   border-width:0 0 2px 2px; }
.gate-box .corner-br { bottom:8px; right:8px;  border-width:0 2px 2px 0; }

.gate-ornament {
    display: block;
    font-size: 1.8rem;
    color: var(--gold);
    margin-bottom: 0.8rem;
    letter-spacing: 0.3em;
}

.gate-box h1 {
    font-family: var(--font-display);
    font-size: 2.4rem;
    font-weight: 400;
    color: var(--green);
    letter-spacing: 0.04em;
    margin-bottom: 0.3rem;
}

.gate-sub {
    color: var(--burgundy);
    font-style: italic;
    font-size: 0.95rem;
    margin-bottom: 1.8rem;
}

.gate-divider {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.8rem;
    color: var(--gold);
    font-size: 1rem;
    letter-spacing: 0.4em;
}
.gate-divider::before,
.gate-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(to right, transparent, var(--gold));
}
.gate-divider::after {
    background: linear-gradient(to left, transparent, var(--gold));
}

.gate-input {
    width: 100%;
    padding: 0.85rem 1.2rem;
    background: var(--parchment);
    border: 1px solid var(--gold);
    font-family: var(--font-body);
    font-size: 1.15rem;
    color: var(--ink);
    text-align: center;
    letter-spacing: 0.12em;
    outline: none;
    transition: border-color 0.3s, box-shadow 0.3s;
}
.gate-input:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(28,58,40,0.1);
}
.gate-input::placeholder { color: #a09070; font-style: italic; }

.gate-btn {
    margin-top: 1rem;
    width: 100%;
    padding: 0.85rem 1.5rem;
    background: var(--green);
    color: var(--gold-lt);
    border: 1px solid rgba(184,151,58,0.5);
    font-family: var(--font-display);
    font-size: 1rem;
    letter-spacing: 0.1em;
    cursor: pointer;
    transition: background 0.3s, color 0.3s, transform 0.15s;
}
.gate-btn:hover  { background: var(--green-md); color: var(--cream); transform: translateY(-1px); }
.gate-btn:disabled { opacity: 0.6; cursor: default; transform: none; }

.gate-error {
    margin-top: 1rem;
    color: var(--burgundy);
    font-style: italic;
    font-size: 0.92rem;
    min-height: 1.4em;
}

@keyframes shake {
    0%,100% { transform: translateX(0); }
    20%      { transform: translateX(-8px); }
    40%      { transform: translateX( 8px); }
    60%      { transform: translateX(-4px); }
    80%      { transform: translateX( 4px); }
}

/* ─── Content Index (post-login) ──────────────────── */
#content-index {
    min-height: 100vh;
    background-color: var(--cream);
    background-image:
        radial-gradient(ellipse at 20% 10%, rgba(184,151,58,0.08) 0%, transparent 55%),
        radial-gradient(ellipse at 80% 90%, rgba(28,58,40,0.08) 0%, transparent 55%),
        url("data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23b8973a' stroke-width='0.4' opacity='0.15'%3E%3Cpath d='M40 0 Q55 20 40 40 Q25 20 40 0z'/%3E%3Cpath d='M0 40 Q20 55 40 40 Q20 25 0 40z'/%3E%3Cpath d='M80 40 Q60 55 40 40 Q60 25 80 40z'/%3E%3Cpath d='M40 80 Q55 60 40 40 Q25 60 40 80z'/%3E%3C/g%3E%3C/svg%3E");
    display: flex;
    flex-direction: column;
    opacity: 0;
    animation: fadeIn 0.8s ease forwards;
}

@keyframes fadeIn { to { opacity: 1; } }

/* ─── Header ──────────────────────────────────────── */
header {
    padding: 2.5rem 0 2rem;
    text-align: center;
    border-bottom: 1px solid rgba(184,151,58,0.5);
}

.site-title {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 400;
    color: var(--green);
    letter-spacing: 0.06em;
}

.site-tagline {
    margin-top: 0.3rem;
    color: var(--burgundy);
    font-style: italic;
    font-size: 0.95rem;
    letter-spacing: 0.1em;
}

/* ─── Layout ──────────────────────────────────────── */
.container {
    max-width: 720px;
    margin: 0 auto;
    padding: 0 2rem;
}

.index-main {
    flex: 1;
    padding-top: 4rem;
    padding-bottom: 4rem;
}

.section-heading {
    font-family: var(--font-display);
    font-size: 1.05rem;
    font-weight: 400;
    color: #9a8a6a;
    text-align: left;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 1.4rem;
    padding-bottom: 0.6rem;
    border-bottom: 1px solid rgba(184,151,58,0.35);
}

.ornamental-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    color: var(--gold);
    font-size: 1rem;
    letter-spacing: 0.4em;
    margin-bottom: 3rem;
}
.ornamental-divider::before,
.ornamental-divider::after {
    content: '';
    flex: 1;
    max-width: 140px;
    height: 1px;
    background: linear-gradient(to right, transparent, var(--gold));
}
.ornamental-divider::after {
    background: linear-gradient(to left, transparent, var(--gold));
}

/* ─── Content Links ───────────────────────────────── */
.content-nav {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.content-link {
    display: flex;
    align-items: center;
    gap: 2rem;
    padding: 1.4rem 0.4rem;
    border-bottom: 1px solid rgba(184,151,58,0.2);
    text-decoration: none;
    color: var(--ink);
    background: transparent;
    transition: padding-left 0.2s;
    position: relative;
}
.content-link:first-child { border-top: 1px solid rgba(184,151,58,0.2); }

.content-link::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    background: var(--gold);
    transform: scaleY(0);
    transform-origin: bottom;
    transition: transform 0.25s ease;
}

.content-link:hover {
    padding-left: 1rem;
}
.content-link:hover::before { transform: scaleY(1); }

.link-num {
    font-family: var(--font-body);
    font-style: italic;
    font-size: 0.85rem;
    color: rgba(184,151,58,0.7);
    min-width: 1.6rem;
    letter-spacing: 0;
}

.link-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.link-title {
    font-family: var(--font-body);
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--ink);
    letter-spacing: 0.01em;
}

.link-desc {
    font-size: 0.9rem;
    color: #6a5530;
    font-style: italic;
}

.link-arrow {
    color: var(--gold);
    font-size: 1.1rem;
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity 0.25s, transform 0.25s;
}
.content-link:hover .link-arrow {
    opacity: 1;
    transform: translateX(0);
}

.index-footer-ornament {
    text-align: center;
    color: var(--gold);
    font-size: 1.4rem;
    margin-top: 3rem;
    opacity: 0.6;
}

/* ─── Footer ──────────────────────────────────────── */
footer {
    border-top: 1px solid rgba(184,151,58,0.25);
    text-align: left;
    padding: 2rem 0;
    font-size: 0.85rem;
    color: #9a8a6a;
    letter-spacing: 0.02em;
}


/* ─── Responsive ──────────────────────────────────── */
@media (max-width: 540px) {
    .gate-box { padding: 2.8rem 1.8rem 2.4rem; }
    .gate-box h1 { font-size: 2rem; }
    .content-link { gap: 1.2rem; padding: 1.3rem 1.2rem; }
    .content-link:hover { padding-left: 1.8rem; }
}
