.public-body {
    background:
        radial-gradient(circle at 4% 3%, rgba(221,187,88,.11), transparent 22rem),
        radial-gradient(circle at 96% 10%, rgba(144,169,214,.10), transparent 24rem),
        var(--be-bg);
}
.public-shell { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.public-header { position: sticky; top: 0; z-index: 50; border-bottom: 1px solid rgba(231,222,212,.86); background: rgba(247,243,238,.88); backdrop-filter: blur(18px); }
.public-nav { min-height: 88px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 28px; }
.public-brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.public-brand-mark { width: 42px; height: 42px; display: grid; place-items: center; flex: 0 0 42px; padding: 6px; border: 1px solid var(--be-border); border-radius: 50%; background: rgba(252,250,247,.92); box-shadow: var(--be-shadow-soft); }
.public-brand-mark svg { width: 100%; height: 100%; }
.public-brand-copy { display: grid; line-height: 1.06; }
.public-brand-copy strong { font-family: var(--be-font-display); font-size: 1.65rem; font-weight: 600; letter-spacing: .02em; }
.public-brand-copy small { margin-top: 5px; color: var(--be-text-soft); font-size: .72rem; }
.public-nav-links { display: flex; justify-content: flex-end; gap: 22px; }
.public-nav-links a { color: var(--be-text-soft); font-size: .88rem; font-weight: 600; text-decoration: none; transition: 150ms ease; }
.public-nav-links a:hover { color: var(--be-text); }
.public-login-button { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 18px; border: 1px solid #67544B; border-radius: 14px; background: var(--be-text); color: #fff; font-weight: 700; text-decoration: none; box-shadow: 0 9px 20px rgba(91,74,66,.14); transition: 160ms ease; }
.public-login-button:hover { transform: translateY(-1px); background: #4F4039; }

.public-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0,1fr) minmax(440px,.92fr); gap: 52px; align-items: center; min-height: 610px; margin-top: 26px; padding: clamp(38px,5vw,66px); border: 1px solid var(--be-border); border-radius: 30px; background: rgba(252,250,247,.90); box-shadow: 0 24px 60px rgba(91,74,66,.09); }
.public-hero::after { content:""; position:absolute; width:270px; height:270px; right:-90px; top:-110px; border-radius:50%; background:rgba(244,232,186,.25); pointer-events:none; }
.public-hero-copy { position: relative; z-index: 2; }
.public-pill { display: inline-flex; align-items: center; gap: 9px; width: fit-content; margin-bottom: 22px; padding: 8px 12px; border: 1px solid var(--be-border); border-radius: 999px; background: rgba(255,253,249,.75); color: var(--be-text-soft); font-size: .78rem; }
.public-pill span { width: 8px; height: 8px; border-radius: 50%; background: var(--be-daisy); }
.public-hero h1 { margin: 0 0 22px; font-size: clamp(4.7rem,8vw,7.4rem); font-weight: 500; line-height: .78; letter-spacing: -.025em; }
.public-hero h1 em { color: #73805A; font-style: normal; }
.public-hero-lead { max-width: 590px; color: var(--be-text-soft); font-size: 1rem; line-height: 1.9; }
.public-hero-actions { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 25px; }
.public-button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: 0 18px; border-radius: 14px; font-weight: 700; text-decoration: none; transition: 160ms ease; }
.public-button.primary { border: 1px solid #67544B; background: var(--be-text); color: white; }
.public-button.secondary { border: 1px solid var(--be-border-strong); background: #FFFDF9; color: var(--be-text); }
.public-button:hover { transform: translateY(-1px); }
.public-contact-mini { display: flex; flex-wrap: wrap; gap: 7px 14px; margin-top: 24px; padding-top: 20px; border-top: 1px dashed var(--be-border-strong); color: var(--be-text-soft); font-size: .84rem; }
.public-contact-mini a { color: var(--be-text); font-weight: 700; text-decoration: none; font-variant-numeric: tabular-nums; }

.public-hero-art { position: relative; z-index: 2; min-height: 455px; overflow: hidden; border: 1px solid var(--be-border); border-radius: 26px; background: linear-gradient(155deg,#FFFDF9,#F7F2EB); box-shadow: 0 16px 38px rgba(91,74,66,.08); }
.public-hero-art::before { content:""; position:absolute; width:210px; height:210px; left:-70px; bottom:-90px; border:1px solid rgba(155,163,122,.25); border-radius:48% 52% 53% 47%; transform:rotate(28deg); }
.art-wordmark { position:absolute; top:26px; left:32px; z-index:2; font-family:var(--be-font-display); font-size:2.2rem; letter-spacing:.08em; color:#7C6B62; }
.art-tag { position:absolute; top:25px; right:22px; z-index:3; padding:9px 12px; border:1px solid var(--be-border); border-radius:14px; background:rgba(255,253,249,.86); color:var(--be-text-soft); font-size:.72rem; box-shadow:var(--be-shadow-soft); }
.botanical-art { position:absolute; inset:70px 0 32px; width:100%; height:calc(100% - 102px); }
.art-note { position:absolute; right:24px; bottom:21px; color:var(--be-text-soft); font-family:var(--be-font-display); font-size:1rem; }

.public-section { padding: 90px 0 0; }
.public-section-heading { display: flex; justify-content: space-between; gap: 26px; align-items: flex-end; margin-bottom: 24px; }
.public-kicker { display: inline-block; margin-bottom: 8px; color: #818A64; font-size: .70rem; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.public-section-heading h2, .public-about h2, .public-contact h2 { margin: 0 0 8px; font-size: clamp(2.3rem,4vw,3.4rem); }
.public-section-heading p, .public-about p, .public-contact p { margin:0; color:var(--be-text-soft); }

.announcement-board { overflow:hidden; border:1px solid var(--be-border); border-radius:26px; background:rgba(252,250,247,.92); box-shadow:var(--be-shadow-soft); }
.announcement-tabs { display:flex; gap:6px; padding:9px; border-bottom:1px solid var(--be-border); background:rgba(247,243,238,.82); }
.announcement-tab { border:0; border-radius:13px; padding:11px 16px; background:transparent; color:var(--be-text-soft); font-weight:700; cursor:pointer; }
.announcement-tab.is-active { background:#FFFDF9; color:var(--be-text); box-shadow:0 5px 16px rgba(91,74,66,.07); }
.announcement-panel { padding: 24px; }
.announcement-card { position:relative; padding:25px; border:1px solid var(--be-border); border-radius:20px; background:#FFFDF9; }
.announcement-card.featured { border-top:4px solid var(--be-daisy); }
.announcement-card.course-card { border-top:4px solid var(--be-blue); }
.announcement-date { color:var(--be-text-soft); font-size:.75rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.announcement-card h3 { margin:7px 0 8px; font-size:1.65rem; }
.announcement-card p { max-width:850px; margin:0; color:var(--be-text-soft); }
.announcement-contact { display:inline-flex; margin-top:16px; color:#687EA7; font-weight:700; text-decoration:none; font-variant-numeric:tabular-nums; }

.public-about { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr); gap:26px; align-items:stretch; padding-top:90px; }
.public-about-card { padding:32px; border:1px solid var(--be-border); border-radius:26px; background:radial-gradient(circle at 88% 18%,rgba(144,169,214,.12),transparent 11rem),var(--be-card); box-shadow:var(--be-shadow-soft); }
.public-about-card p { max-width:700px; line-height:1.85; }
.public-about-notes { display:grid; gap:12px; }
.public-about-notes > div { position:relative; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; column-gap:12px; padding:20px; border:1px solid var(--be-border); border-radius:18px; background:#FFFDF9; }
.public-about-notes strong { align-self:end; font-family:var(--be-font-display); font-size:1.35rem; }
.public-about-notes p { grid-column:2; margin:0; font-size:.86rem; }
.note-dot { grid-row:1 / span 2; align-self:center; width:12px; height:12px; border-radius:50%; }
.note-dot.daisy{background:var(--be-daisy)}.note-dot.blue{background:var(--be-blue)}.note-dot.leaf{background:var(--be-leaf)}

.public-contact { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:30px; align-items:center; margin-top:90px; margin-bottom:80px; padding:32px; border:1px solid var(--be-border); border-radius:28px; background:linear-gradient(135deg,rgba(232,234,217,.72),rgba(252,250,247,.95)); box-shadow:var(--be-shadow-soft); }
.public-contact-actions { display:flex; gap:12px; flex-wrap:wrap; justify-content:flex-end; }
.contact-phone,.contact-name { min-width:180px; display:grid; padding:15px 18px; border:1px solid var(--be-border); border-radius:16px; background:#FFFDF9; text-decoration:none; }
.contact-phone span,.contact-name span { color:var(--be-text-soft); font-size:.72rem; font-weight:700; }
.contact-phone strong,.contact-name strong { margin-top:3px; font-family:var(--be-font-body); font-size:1.08rem; font-variant-numeric:tabular-nums; }
.public-footer { border-top:1px solid var(--be-border); background:rgba(252,250,247,.62); }
.public-footer .public-shell { min-height:84px; display:flex; align-items:center; justify-content:space-between; gap:18px; color:var(--be-text-soft); font-size:.8rem; }
.public-footer span:last-child { font-family:var(--be-font-display); font-size:1rem; }

@media (max-width: 980px) {
    .public-nav { grid-template-columns:auto 1fr auto; }
    .public-nav-links { display:none; }
    .public-hero { grid-template-columns:1fr; min-height:0; }
    .public-hero-art { min-height:430px; }
    .public-about { grid-template-columns:1fr; }
    .public-contact { grid-template-columns:1fr; }
    .public-contact-actions { justify-content:flex-start; }
}
@media (max-width: 620px) {
    .public-shell { width:min(100% - 24px,1180px); }
    .public-nav { min-height:74px; gap:10px; }
    .public-brand-mark { width:36px;height:36px;flex-basis:36px; }
    .public-brand-copy strong { font-size:1.35rem; }
    .public-brand-copy small { display:none; }
    .public-login-button { min-height:42px; padding:0 13px; font-size:.82rem; }
    .public-hero { margin-top:12px; padding:28px 22px; border-radius:24px; gap:32px; }
    .public-hero h1 { font-size:clamp(4rem,23vw,5.3rem); }
    .public-hero-art { min-height:350px; }
    .art-wordmark { top:20px; left:22px; font-size:1.7rem; }
    .art-tag { display:none; }
    .art-note { right:17px; bottom:15px; font-size:.86rem; }
    .public-section,.public-about { padding-top:65px; }
    .announcement-tabs { overflow-x:auto; }
    .announcement-tab { white-space:nowrap; }
    .announcement-panel { padding:14px; }
    .announcement-card { padding:20px; }
    .public-contact { margin-top:65px; margin-bottom:54px; padding:24px; }
    .contact-phone,.contact-name { width:100%; }
    .public-footer .public-shell { flex-direction:column; align-items:flex-start; justify-content:center; padding:18px 0; }
}

/* Public homepage V1.1: use the supplied Blooming English artwork directly. */
.public-hero-art {
    min-height: 0;
    aspect-ratio: 1 / 1;
    display: block;
    background: #F8F3ED;
}
.public-hero-art::before { display: none; }
.public-hero-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.public-hero-copy {
    align-self: center;
}
.public-hero-actions {
    margin-top: 30px;
}
.public-section {
    padding-top: 76px;
    padding-bottom: 80px;
}
.public-section-heading {
    margin-bottom: 20px;
}
@media (max-width: 980px) {
    .public-hero-art { min-height: 0; }
}
@media (max-width: 620px) {
    .public-hero-art { min-height: 0; }
    .public-section { padding-top: 58px; padding-bottom: 54px; }
}

/* School Updates CMS */
.public-hero-simple {
    grid-template-columns: 1fr;
    justify-items: center;
    min-height: 0;
}
.public-hero-simple .public-hero-art {
    width: min(100%, 760px);
}
.public-hero-actions-centered {
    justify-content: center;
    margin-top: 4px;
}
.public-announcement-grid {
    display: grid;
    gap: 16px;
}
.announcement-card {
    display: grid;
    grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
    gap: 20px;
}
.announcement-card:not(:has(.announcement-card-image)) {
    grid-template-columns: 1fr;
}
.announcement-card-image {
    overflow: hidden;
    border-radius: 15px;
    background: #F7F3EE;
    aspect-ratio: 4 / 3;
}
.announcement-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.announcement-card h3 a {
    color: inherit;
    text-decoration: none;
}
.announcement-read-more {
    display: inline-flex;
    margin-top: 14px;
    color: #687EA7;
    font-weight: 700;
    text-decoration: none;
}
.course-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 12px;
}
.course-meta span {
    display: inline-flex;
    padding: 6px 9px;
    border: 1px solid var(--be-border);
    border-radius: 999px;
    background: #F9F6F1;
    color: var(--be-text-soft);
    font-family: var(--be-font-body);
    font-size: .78rem;
    font-variant-numeric: tabular-nums;
}
.public-empty {
    padding: 28px;
    border: 1px dashed var(--be-border-strong);
    border-radius: 18px;
    color: var(--be-text-soft);
    text-align: center;
}
.announcement-detail-shell {
    padding-top: 44px;
    padding-bottom: 80px;
}
.announcement-back {
    display: inline-flex;
    margin-bottom: 18px;
    color: var(--be-text-soft);
    font-weight: 700;
    text-decoration: none;
}
.announcement-detail-card {
    overflow: hidden;
    border: 1px solid var(--be-border);
    border-radius: 28px;
    background: #FFFDF9;
    box-shadow: var(--be-shadow-soft);
}
.announcement-detail-image {
    max-height: 680px;
    overflow: hidden;
    background: #F7F3EE;
}
.announcement-detail-image img {
    display: block;
    width: 100%;
    max-height: 680px;
    object-fit: contain;
}
.announcement-detail-body {
    padding: clamp(24px, 5vw, 54px);
}
.announcement-detail-body h1 {
    max-width: 900px;
    margin: 8px 0 14px;
    font-size: clamp(2.4rem, 5vw, 4.2rem);
}
.announcement-detail-summary {
    max-width: 850px;
    color: var(--be-text-soft);
    font-size: 1.05rem;
    line-height: 1.8;
}
.announcement-long-copy {
    max-width: 900px;
    margin-top: 26px;
    white-space: pre-line;
    line-height: 1.9;
}
.detail-course-meta {
    margin-top: 18px;
}
.detail-contact {
    margin-top: 30px;
}
@media (max-width: 700px) {
    .announcement-card { grid-template-columns: 1fr; }
    .announcement-card-image { aspect-ratio: 16 / 10; }
}
