:root {
  --bg:#fbfaf7; 
  --paper:#ffffff; 
  --ink:#24231f; 
  --muted:#6e6a60; 
  --line:#e8e1d5;
  --brand:#163f35; 
  --brand-soft:#eef4ef; 
  --gold:#b99a55; 
  --shadow:0 18px 48px rgba(29,33,26,.08);
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { 
    margin:0; 
    color:var(--ink); 
    background:linear-gradient(180deg,#fff 0%,var(--bg) 26rem); 
    font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",YuGothic,Meiryo,sans-serif; 
    line-height:1.95; 
    letter-spacing:.02em; 
}
a { 
    color:var(--brand); 
    text-decoration-thickness:.08em; 
    text-underline-offset:.18em; 
    overflow-wrap:anywhere; 
}
.site-header { 
    position:sticky; 
    top:0; 
    z-index:20; 
    background:rgba(255,255,255,.80); 
    backdrop-filter:blur(10px); 
    border-bottom:1px solid var(--line); 
}
.header-inner { 
    max-width:1180px; 
    margin:auto; 
    padding:18px 24px; 
    display:flex; 
    align-items:center; 
    justify-content:space-between; 
    gap:20px; 
}
.logo { 
    display:flex; 
    align-items:center; 
    gap:13px; 
    color:var(--brand); 
    text-decoration:none; 
    font-weight:700; 
    letter-spacing:.08em; 
}

.logo small { 
    display:block; 
    font-size:11px; 
    color:var(--muted); 
    letter-spacing:.14em; 
    margin-top:-4px; 
    font-weight:500; 
}
.header-note { 
    color:var(--muted); 
    font-size:13px; 
    white-space:nowrap; 
}
.hero { 
    max-width:1180px; 
    margin:0 auto; 
    padding:70px 24px 38px; 
}
.hero-card { 
    background:var(--paper); 
    border:1px solid var(--line); 
    border-radius:26px; padding:44px; 
    box-shadow:var(--shadow); 
    position:relative; 
    overflow:hidden; 
}
.hero-card::after { 
    content:""; 
    position:absolute; 
    right:-80px; 
    top:-90px; 
    width:240px; 
    height:240px; 
    border-radius:50%; 
    background:radial-gradient(circle, rgba(185,154,85,.20), rgba(185,154,85,0) 68%); 
}
.kicker { 
    color:var(--gold); 
    font-weight:700; 
    font-size:13px; 
    letter-spacing:.16em; 
    text-transform:uppercase; 
}
h1 { 
    margin:.25em 0 .35em; 
    font-size:clamp(24px,4vw,32px); 
    line-height:1.18; 
    color:var(--brand); 
    letter-spacing:.04em; 
}
.subtitle { 
    color:var(--muted); 
    font-size:clamp(12px,2vw,16px); 
    margin:0; 
}
.date-line { 
    margin-top:22px; 
    padding:12px 16px; 
    background:var(--brand-soft); 
    border-radius:12px; 
    color:var(--brand); 
    font-size:14px; display:inline-block; 
}
.layout { 
    max-width:1180px; 
    margin:0 auto; 
    padding:0 24px 80px; 
    display:grid; 
    grid-template-columns:260px minmax(0,1fr); 
    gap:34px; 
    align-items:start; 
}
.toc { 
    position:sticky; 
    top:92px; 
    background:var(--paper); 
    border:1px solid var(--line); 
    border-radius:20px; 
    padding:20px; 
    box-shadow:0 10px 32px rgba(29,33,26,.05); 
    max-height:calc(100vh - 120px); 
    overflow:auto; 
}
.toc-title { 
    margin:0 0 12px; 
    color:var(--brand); 
    font-weight:700; 
}
.toc a { 
    display:block; 
    padding:9px 0; 
    color:var(--muted); 
    text-decoration:none; 
    border-top:1px solid #f1ece4; 
    font-size:14px; 
    line-height:1.45; 
}
.toc a:hover { 
    color:var(--brand); 
}
.policy { 
    background:var(--paper); 
    border:1px solid var(--line); 
    border-radius:26px; 
    padding:46px min(6vw,64px); 
    box-shadow:var(--shadow); 
}
.policy h2 { 
    margin:3.2em 0 1.1em; 
    padding-top:.6em; 
    color:var(--brand); 
    font-size:clamp(24px,3vw,32px); 
    line-height:1.35; 
    border-top:1px solid var(--line); 
}
.policy h2:first-child { 
    margin-top:0; 
    border-top:0; 
    padding-top:0; 
}
.policy h3 { 
    margin:2.3em 0 .9em; 
    color:#2d4c43; 
    font-size:clamp(19px,2.3vw,24px); 
    line-height:1.45; }
.policy h4 { 
    margin:1.8em 0 .55em; 
    color:#3b3328; 
    font-size:17px; 
    line-height:1.5; 
}
.policy p { 
    margin:0 0 1.08em; 
}
.policy ul { 
    margin:.4em 0 1.35em; 
    padding:0; 
    list-style:none; 
    display:grid; 
    gap:.45em; 
}
.policy li { 
    position:relative; 
    padding-left:1.45em; 
}
.policy li::before { 
    content:""; 
    position:absolute; 
    left:.18em; 
    top:.78em; 
    width:.45em; 
    height:.45em; 
    border-radius:50%; 
    background:var(--gold); 
}
dl { 
    display:grid; 
    grid-template-columns:minmax(140px,220px) 1fr; 
    gap:8px 18px; 
    background:#fcfaf5; 
    border:1px solid var(--line); 
    border-radius:14px; 
    padding:16px 18px; 
    margin:1em 0; 
}
dt { 
    color:var(--muted); 
    font-weight:700; 
}
dd { 
    margin:0; 
}
.dates-final {
    font-size: 11px;
    margin: 50px 0 0;
    text-align: right;
}
.backtop { 
    display:inline-block; 
    margin-top:34px; 
    padding:12px 18px; 
    border-radius:999px; 
    background:var(--brand); 
    color:#fff; 
    text-decoration:none; 
    font-size:14px; 
}
.site-footer { 
    border-top:1px solid var(--line); 
    background:#fff; 
}
.footer-inner { 
    max-width:1180px; 
    margin:auto; 
    padding:26px 24px; 
    text-align:center; 
    color:var(--muted); 
    font-size:13px; 
}
@media (max-width: 900px) {
    .header-inner { 
        padding:14px 18px; 
    } 
    .header-note { 
        display:none; 
    } 
    .hero { 
        padding:44px 18px 24px; 
    } 
    .hero-card { 
        padding:30px 24px; 
        border-radius:20px; 
    }
    .layout { 
        grid-template-columns:1fr; 
        padding:0 18px 56px; 
        gap:20px; 
    } 
    .toc { 
        position:relative; 
        top:auto; 
        max-height:none; 
        border-radius:16px; 
    } 
    .toc a { 
        display:inline-block; 
        margin-right:14px; 
        border-top:0; 
    }
    .policy { 
        padding:30px 20px; 
        border-radius:20px; 
    } 
    dl { 
        grid-template-columns:1fr; 
    }
}
@media print { 
    .site-header,.toc,.backtop { 
        display:none; 
    } 
    body { 
        background:#fff; 
    } 
    .hero { 
        padding:0 0 20px; 
    } 
    .layout { 
        display:block; 
        padding:0; 
    } 
    .policy,.hero-card { 
        box-shadow:none; 
        border:0; 
        padding:0; 
    } 
    a { 
        color:inherit; 
        text-decoration:none; 
    } 
}