.page-main {
    padding-top: 82px;
    min-height: 70vh;
}

.history-heading {
    margin: 0 0 1rem;
    font-size: 1.5rem;
    font-weight: 700;
}

.history-list {
    margin: 0 0 2.2rem;
    padding-left: 1.2rem;
    color: #5b6770;
    line-height: 1.8;
}

.history-list li {
    margin-bottom: .6rem;
}

.history-list strong {
    color: var(--ink);
}

.history-photo {
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: var(--cream);
}

.history-photo img {
    display: block;
    width: 100%;
    height: auto;
}

.history-photo figcaption {
    padding: 10px 16px;
    color: #5b6770;
    font-size: .9rem;
}

.history-quote {
    max-width: 780px;
    margin: 3rem auto 0;
    padding: 2rem 1.5rem;
    border-top: 2px solid var(--gold);
    border-bottom: 2px solid var(--gold);
}

.history-quote p {
    color: #5b6770;
    font-size: 1.1rem;
    line-height: 1.8;
}

.history-quote strong {
    color: var(--gold-dark);
    font-size: 1.2rem;
}

.history-video {
    max-width: 860px;
    overflow: hidden;
    border-radius: 9px;
}

.page-hero {
    padding: 3rem 0 1.5rem;
    background: var(--cream);
    border-bottom: 1px solid var(--line);
}

.achievements-page-title {
    font-size: clamp(2rem, 3.5vw, 3rem);
}

.notice-toolbar .form-label {
    font-size: .8rem;
    font-weight: 600;
    color: var(--muted);
}

.notice-item {
    display: flex;
    gap: 1.25rem;
    padding: 1.4rem 0;
    border-bottom: 1px solid var(--line);
}

.notice-item time {
    flex: 0 0 74px;
    height: 74px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: var(--cream);
    border: 1px solid var(--line);
    color: var(--gold-dark);
    line-height: 1.1;
}

.notice-item time strong { font-size: 1.6rem; }
.notice-item time span { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; }

.notice-item h2 { font-size: 1.25rem; margin-bottom: .4rem; }
.notice-item h2 a { color: var(--ink); text-decoration: none; }
.notice-item h2 a:hover { color: var(--gold-dark); }
.notice-item p { color: var(--muted); margin-bottom: .6rem; }
.notice-item-links { display: flex; flex-wrap: wrap; gap: 1.25rem; }

.empty-state {
    padding: 3rem 1rem;
    text-align: center;
    border: 1px dashed var(--line);
    border-radius: 12px;
}

.notice-article { max-width: 820px; }

.cat-event { --cat: #2f7dd1; }
.cat-holiday { --cat: #d1453b; }
.cat-exam { --cat: #8a4fd6; }
.cat-term { --cat: #2e9e6b; }
.cat-meeting { --cat: #d98a1f; }
.cal-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--cat, #888); margin-right: .35rem; flex: 0 0 10px; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 1rem; font-size: .85rem; color: var(--muted); }

.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #fff; }
.cal-head { padding: .5rem; text-align: center; font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--gold-dark); background: var(--cream); border-bottom: 1px solid var(--line); }
.cal-cell { min-height: 104px; padding: .3rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); overflow: hidden; }
.cal-cell:nth-child(7n) { border-right: 0; }
.cal-out { background: #fafafa; color: #aaa; }
.cal-today { background: #fff8e6; }
.cal-num { display: block; font-size: .8rem; font-weight: 600; margin-bottom: .2rem; }
.cal-today .cal-num { color: var(--gold-dark); }
.cal-event { display: block; width: 100%; margin-bottom: 2px; padding: 1px 5px; border: 0; border-radius: 4px; font-size: .7rem; line-height: 1.3; text-align: left; color: #fff; background: var(--cat, #888); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.cal-event:hover { filter: brightness(1.1); }

.cal-list-item { display: flex; align-items: flex-start; gap: .5rem; padding: .8rem 0; border-bottom: 1px solid var(--line); }
.cal-list-item .cal-dot { margin-top: .45rem; }

@media (max-width: 767.98px) {
    .cal-cell { min-height: 64px; padding: .2rem; }
    .cal-event { font-size: 0; padding: 0; height: 6px; }
    .cal-head { font-size: .65rem; padding: .35rem 0; }
}

.contact-card {
    height: 100%;
    padding: 1.4rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 4px 16px rgba(17, 35, 49, .05);
}
.contact-card a { display: block; font-size: 1.15rem; font-weight: 600; color: var(--ink); text-decoration: none; word-break: break-word; }
.contact-card a:hover { color: var(--gold-dark); }
.contact-label { display: block; margin-bottom: .35rem; font-size: .75rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--gold-dark); }

.map-card { padding: 1.25rem; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.map-frame { overflow: hidden; border-radius: 10px; aspect-ratio: 4 / 3; }
.map-frame iframe { width: 100%; height: 100%; border: 0; }
.notice-body { font-size: 1.05rem; line-height: 1.75; }

.auth-card {
    padding: 2rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(17, 35, 49, .06);
}

.admin-body { background: #f4f5f7; }
.admin-nav { background: #fff; box-shadow: 0 2px 12px rgba(17, 35, 49, .07); }
.admin-nav .navbar-brand { font-size: 1rem; }
.admin-nav .nav-link.active { color: var(--gold-dark); font-weight: 700; }

.slide-thumb { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }

.dash-card {
    background: #fff;
    border-radius: 10px;
    border-left: 4px solid;
    padding: 1rem 1.1rem;
    box-shadow: 0 2px 10px rgba(17, 35, 49, .06);
}
.dash-card strong { display: block; font-size: 1.9rem; line-height: 1.1; }
.dash-card span { color: var(--muted); font-size: .85rem; }

.menu-tile {
    display: block;
    height: 100%;
    padding: 1.1rem 1.2rem;
    border-radius: 12px;
    background: var(--gold);
    color: #fff;
    text-decoration: none;
    box-shadow: 0 4px 14px rgba(169, 124, 39, .25);
    transition: transform .15s, background .15s;
}
.menu-tile:hover { background: var(--gold-dark); color: #fff; transform: translateY(-2px); }
.menu-tile strong { display: block; font-size: 1.05rem; }
.menu-tile span { font-size: .8rem; opacity: .9; }

@media (max-width: 767.98px) {
    .page-main { padding-top: 72px; }
    .notice-item { flex-direction: column; gap: .75rem; }
    .notice-item time { flex-basis: auto; width: 74px; }
}
