:root {
    --primary-color: #003366;
    --accent-color: #CCAD00;
    --light-bg: #f8f8f8;
    --dark-text: #333;
    --light-text: #fff;
}

* { margin:0; padding:0; box-sizing:border-box;
    font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif; }

body { line-height:1.6; color:var(--dark-text); background-color:var(--light-bg); }

.container { width:90%; max-width:1200px; margin:0 auto; padding:0 15px; }

header { background:var(--primary-color); color:var(--light-text);
         padding:20px 0; text-align:center; }

.skip-link { position:absolute; left:-9999px; top:0; background:#fff; color:var(--primary-color);
        padding:8px 14px; z-index:100; }
.skip-link:focus { left:8px; top:8px; }

/* ---- navigation: main items centred, account actions pinned right ---- */
.site-nav { background:var(--primary-color); border-top:1px solid rgba(255,255,255,0.12); }
.site-nav ul { list-style:none; display:flex; align-items:center; gap:22px; }
.site-nav a { color:var(--light-text); text-decoration:none; font-weight:600;
        transition:color .2s; display:inline-block; padding:12px 0; }
.site-nav a:hover, .site-nav a.active { color:var(--accent-color); }
.nav-menu { display:flex; justify-content:space-between; align-items:center; gap:24px; }
.nav-main { justify-content:flex-start; }
.nav-account { gap:18px; }
.nav-main a.first-member { border-left:1px solid rgba(255,255,255,0.3); padding-left:22px; }
.site-nav a.cta { border:1px solid var(--accent-color); border-radius:4px;
        padding:4px 14px; color:var(--accent-color); }
.site-nav a.cta:hover, .site-nav a.cta.active { background:var(--accent-color); color:var(--primary-color); }
.nav-toggle { display:none; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:#f4511e;
        margin-left:5px; vertical-align:3px; }
.site-nav a.solid { background:var(--accent-color); color:var(--primary-color);
        border-radius:4px; padding:4px 14px; }
.site-nav a.solid:hover, .site-nav a.solid.active { background:#e0c200; color:var(--primary-color); }

/* dropdown (Calendar) */
.has-dd { position:relative; }
.dd-toggle { background:none; border:0; color:var(--light-text); font:inherit; font-weight:600;
        padding:12px 0; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
.dd-toggle:hover, .has-dd.current .dd-toggle { color:var(--accent-color); }
.caret::after { content:""; display:inline-block; border:4px solid transparent;
        border-top-color:currentColor; margin-top:4px; }
.site-nav .dropdown { display:none; position:absolute; top:100%; left:-14px; z-index:50;
        flex-direction:column; align-items:stretch; gap:0; min-width:170px; padding:6px 0;
        background:#fff; border-radius:6px; box-shadow:0 6px 18px rgba(0,0,0,0.22); }
.site-nav .has-dd:hover > .dropdown,
.site-nav .has-dd:focus-within > .dropdown,
.site-nav .has-dd.open > .dropdown { display:flex; }
.site-nav .dropdown a { color:var(--primary-color); padding:9px 18px; display:block; }
.site-nav .dropdown a:hover, .site-nav .dropdown a.active { background:#eef2f7; color:var(--primary-color); }

@media (max-width: 1000px) {
    .js .nav-toggle { display:flex; align-items:center; gap:10px; background:none; border:0;
            color:var(--light-text); font-size:1rem; font-weight:600; padding:12px 0; cursor:pointer; }
    .nav-toggle .bars, .nav-toggle .bars::before, .nav-toggle .bars::after {
            display:block; width:22px; height:2px; background:var(--light-text); content:""; position:relative; }
    .nav-toggle .bars::before { position:absolute; top:-7px; }
    .nav-toggle .bars::after  { position:absolute; top:7px; }
    .js .nav-menu { display:none; }
    .js .nav-menu.open { display:block; padding-bottom:10px; }
    .nav-menu { display:block; }
    .site-nav ul { flex-direction:column; align-items:flex-start; gap:0; }
    .site-nav a { padding:9px 0; }
    .nav-main a.first-member { border-left:0; padding-left:0; }
    .nav-account { margin-top:8px; padding-top:8px; border-top:1px solid rgba(255,255,255,0.2); }
    .site-nav a.cta, .site-nav a.solid { margin:6px 0; }
    .dd-toggle { padding:9px 0; }
    .site-nav .dropdown { position:static; box-shadow:none; background:none; padding:0 0 0 16px; min-width:0; }
    .site-nav .dropdown a { color:var(--light-text); padding:8px 0; }
    .site-nav .dropdown a:hover, .site-nav .dropdown a.active { background:none; color:var(--accent-color); }
    .site-nav .has-dd:hover > .dropdown,
    .site-nav .has-dd:focus-within > .dropdown { display:none; }
    .site-nav .has-dd.open > .dropdown { display:flex; }
}

/* ---- home page ---- */
.hero { text-align:center; padding:60px 20px;
        background:url('masonic-centre-guildford-gates-01-1024x682.jpg')
        no-repeat center center/cover; color:var(--light-text); }
.hero h2, .hero p { background:rgba(0,0,0,0.6); display:inline-block; padding:10px; }
.hero h2 { font-size:2.5rem; margin-bottom:20px; }
.hero p { font-size:1.2rem; margin-bottom:30px; }
.about { text-align:center; padding:40px 20px 20px; }
.about h2 { color:var(--primary-color); margin-bottom:10px; }
.about p { max-width:760px; margin:0 auto; }

.cards { display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));
        gap:20px; max-width:1100px; margin:20px auto 50px; padding:0 20px; }
.info-card { display:flex; flex-direction:column; background:#fff; border-radius:8px;
        box-shadow:0 3px 10px rgba(0,0,0,0.08); padding:24px; border-top:4px solid var(--accent-color); }
.info-card h3 { color:var(--primary-color); margin-bottom:8px; }
.info-card p { flex:1; margin-bottom:14px; }
.info-card a.more { color:var(--primary-color); font-weight:600; text-decoration:none; }
.info-card a.more:hover { text-decoration:underline; }

.link-list { list-style:none; margin:0 0 12px; }
.link-list li { margin-bottom:8px; }
.ext::after { content:" \2197"; font-size:0.85em; }
.detail-table { border-collapse:collapse; width:100%; }
.detail-table th { text-align:left; width:30%; color:#555; font-weight:600; padding:6px 0; }
.detail-table td { padding:6px 0; }
.match { font-size:0.85rem; margin-top:3px; min-height:1.2em; }
.match.ok { color:#1e5b2b; }
.match.no { color:#8a1f17; }

/* ---- generic content pages ---- */
.content { max-width:800px; margin:0 auto; padding:40px 20px; }
.content.narrow { max-width:520px; }
.content h2 { color:var(--primary-color); margin-bottom:20px; }
.content h3 { color:var(--primary-color); margin:28px 0 8px; font-size:1.15rem; }
.content p { margin-bottom:12px; }
.content ul { margin:0 0 12px 22px; }
.content li { margin-bottom:6px; }
.content a { color:var(--primary-color); }
.muted { color:#666; font-size:0.9rem; }

/* ---- buttons ---- */
.btn, button.btn { display:inline-block; background:var(--accent-color);
       color:var(--dark-text); padding:12px 30px; text-decoration:none; border:0;
       border-radius:5px; font-weight:600; font-size:1rem; cursor:pointer;
       transition:background .3s; }
.btn:hover { background:#b39b00; }
.btn.small { padding:6px 14px; font-size:0.85rem; }
.btn.danger { background:#b3261e; color:#fff; }
.btn.danger:hover { background:#8f1e18; }
.btn.secondary { background:#d9dde1; }
.btn.secondary:hover { background:#c4c9ce; }

/* ---- forms ---- */
.card { background:#fff; border-radius:8px; box-shadow:0 3px 10px rgba(0,0,0,0.1);
        padding:28px 24px; margin-top:10px; }
.form-row { margin-bottom:16px; }
.form-row label { display:block; font-weight:600; margin-bottom:4px; }
.form-row input[type=text], .form-row input[type=email], .form-row input[type=password] {
    width:100%; padding:10px 12px; font-size:1rem; border:1px solid #ccc; border-radius:5px; }
.form-row input:focus { outline:2px solid var(--accent-color); border-color:var(--accent-color); }
.form-row .hint { font-size:0.85rem; color:#666; margin-top:3px; }
.check { display:flex; gap:10px; align-items:flex-start; font-size:0.92rem; }
.check input { margin-top:5px; }
.hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ---- flash messages ---- */
.flash { max-width:800px; margin:20px auto 0; padding:12px 16px; border-radius:6px; }
.flash.success { background:#e6f4ea; color:#1e5b2b; border:1px solid #b9dfc3; }
.flash.error   { background:#fdecea; color:#8a1f17; border:1px solid #f3c1bc; }
.flash.info    { background:#e8f0fb; color:#173f73; border:1px solid #bcd0ee; }

/* ---- terms walkthrough ---- */
.terms-page { max-width:760px; }
.progress { height:8px; background:#e3e7ec; border-radius:4px; margin:6px 0 20px; overflow:hidden; }
.progress div { height:100%; background:var(--accent-color); }
.keypoints { background:#fff8d6; border-left:4px solid var(--accent-color); padding:12px 16px;
        margin:0 0 18px; border-radius:0 6px 6px 0; }
.keypoints ul { margin:6px 0 0 20px; }
.terms-ack { margin-top:26px; }
#end { height:1px; }
.read-list { list-style:none; margin:0 0 14px; }
.read-list li { margin-bottom:4px; }
.tick { color:#1e5b2b; font-weight:700; }
.btn + .btn, .btn + a.btn, a.btn + .btn { margin-left:8px; }
a.btn.secondary { color:var(--dark-text); }
.btn[disabled] { opacity:0.5; cursor:not-allowed; }
.notice-box { background:#fff8d6; border:1px solid #e6d98a; border-radius:8px; padding:14px 16px; margin:0 0 20px; }
.notice-box.urgent { background:#fdecea; border-color:#f3c1bc; }
.notice-box .btn { margin-top:8px; }

/* ---- calendar pages ---- */
.calendar-wrapper { padding:40px 20px; text-align:center; }
.calendar-wrapper h2 { margin-bottom:8px; }
.calendar-controls { margin:15px 0; }
.calendar-controls select { padding:10px 15px; font-size:1rem; border-radius:5px;
        border:1px solid #ccc; background:#fff; cursor:pointer; }
/* The calendar sits in a frame whose bottom edge is cut off: Google puts its "+ Google Calendar" button in a
   strip at the very bottom of the embed, and there is no official setting to remove it. The iframe is made
   taller than its frame (by --crop) and the overflow is hidden, so that strip is simply not shown. */
.cal-frame { --crop:48px; height:750px; overflow:hidden; border-radius:8px; background:#fff;
        box-shadow:0 3px 12px rgba(0,0,0,0.1); }
.calendar-wrapper.short .cal-frame { height:550px; }
.cal-frame iframe { display:block; width:100%; height:calc(100% + var(--crop)); border:0; }
.legend { background:rgba(0,51,102,0.08); padding:18px; border-radius:8px;
        margin:25px auto 0; max-width:600px; font-size:0.95rem; }
.legend ul { text-align:left; list-style:none; margin:10px 0 0; }
.legend li { margin:6px 0; }
.legend span { display:inline-block; width:14px; height:14px; border-radius:50%;
        margin-right:10px; vertical-align:middle; }
.calendar-wrapper .btn { margin-top:20px; }

/* ---- admin tables ---- */
.admin-wrap { max-width:1100px; margin:0 auto; padding:30px 20px; }
.admin-wrap h2 { color:var(--primary-color); margin:28px 0 10px; }
.table-wrap { overflow-x:auto; background:#fff; border-radius:8px;
        box-shadow:0 3px 10px rgba(0,0,0,0.08); }
table.admin { border-collapse:collapse; width:100%; font-size:0.92rem; }
table.admin th, table.admin td { padding:10px 12px; text-align:left;
        border-bottom:1px solid #eee; vertical-align:middle; }
table.admin th { background:#f0f3f7; color:var(--primary-color); }
form.inline { display:inline-block; margin-right:4px; }
form.terms-set { margin-top:4px; }
form.terms-set select { padding:4px 6px; font-size:0.85rem; border:1px solid #ccc; border-radius:4px; background:#fff; }
form.terms-set .req { font-size:0.82rem; margin:0 6px; white-space:nowrap; }
.badge { display:inline-block; padding:2px 8px; border-radius:10px; font-size:0.78rem; font-weight:600; }
.badge.active   { background:#e6f4ea; color:#1e5b2b; }
.badge.disabled { background:#fdecea; color:#8a1f17; }
.badge.admin    { background:#e8f0fb; color:#173f73; }

/* ---- News and Noticeboard ---- */
.post { background:#fff; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,0.08); padding:16px 20px; margin:0 0 14px; }
.post h3 { margin:0 0 2px; font-size:1.1rem; }
.post-body { margin-top:10px; }
.post-body p { margin-bottom:10px; }
.post-body a { color:var(--primary-color); word-break:break-word; }
.pager { display:flex; gap:18px; align-items:center; justify-content:center; margin-top:16px; }
.rules { background:#fff8d6; border-left:4px solid var(--accent-color); padding:10px 14px; margin:0 0 14px;
        border-radius:0 6px 6px 0; font-size:0.92rem; }
.rules ul { margin:4px 0 0 20px; }
details.report { margin-top:8px; font-size:0.85rem; }
details.report summary { cursor:pointer; color:#666; }
details.report form { margin-top:6px; display:flex; gap:6px; flex-wrap:wrap; }
details.report input[type=text] { flex:1; min-width:180px; padding:6px 8px; font-size:0.85rem; border:1px solid #ccc; border-radius:4px; }
.admin-post { background:#fff; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,0.08); padding:12px 16px; margin:0 0 10px; }
.admin-post textarea, .admin-post input[type=text] { width:100%; padding:8px 10px; font-size:0.92rem;
        border:1px solid #ccc; border-radius:5px; margin-bottom:6px; }

/* ---- delete a member ---- */
details.del-member { display:inline-block; vertical-align:top; margin-left:4px; }
details.del-member summary { list-style:none; cursor:pointer; display:inline-block; }
details.del-member summary::-webkit-details-marker { display:none; }
details.del-member form { margin-top:6px; padding:10px; background:#fdecea; border:1px solid #f3c1bc;
        border-radius:6px; max-width:300px; white-space:normal; }
details.del-member p { font-size:0.82rem; margin:0 0 6px; }
details.del-member input[type=text] { width:100%; padding:6px 8px; font-size:0.85rem; border:1px solid #ccc;
        border-radius:4px; margin-bottom:6px; }

/* ---- login history ---- */
.welcome-box { background:#eef6ee; border:1px solid #cfe3cf; border-radius:8px; padding:12px 16px; margin:0 0 20px; }
.welcome-box .muted { margin-top:4px; }
.loglines div { font-size:0.82rem; white-space:nowrap; line-height:1.5; }
.loglines .ipaddr { color:#555; }

/* ---- suggestions ---- */
.form-row textarea, .form-row select { width:100%; padding:10px 12px; font-size:1rem; border:1px solid #ccc;
        border-radius:5px; background:#fff; }
.form-row textarea { resize:vertical; }
.form-row textarea:focus, .form-row select:focus { outline:2px solid var(--accent-color); border-color:var(--accent-color); }
.sugg { background:#fff; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,0.08); padding:14px 18px; margin:0 0 12px; }
.sugg-head .badge { margin-left:8px; }
.sugg-body { margin:10px 0; }
.sugg-reply { background:#f0f6ff; border-left:4px solid var(--primary-color); padding:8px 12px; margin:10px 0;
        border-radius:0 6px 6px 0; font-size:0.95rem; }
.sugg-actions { margin-top:10px; padding-top:10px; border-top:1px solid #eee; }
.sugg-actions select { padding:4px 6px; font-size:0.85rem; border:1px solid #ccc; border-radius:4px; background:#fff; }
.sugg-actions .reply-form { margin-top:10px; }
.sugg-actions textarea { width:100%; padding:8px 10px; font-size:0.95rem; border:1px solid #ccc; border-radius:5px; margin-bottom:6px; }
.badge.new { background:#fff3cd; color:#7a5b00; }
.badge.in_progress { background:#e8f0fb; color:#173f73; }
.badge.done { background:#e6f4ea; color:#1e5b2b; }
.badge.declined { background:#eceff1; color:#4a5560; }

/* ---- footer ---- */
footer { background:#212529; color:#adb5bd; text-align:center; padding:20px 0; }
footer a { color:var(--accent-color); text-decoration:none; }
footer .note { max-width:800px; margin:10px auto 0; font-size:0.78rem; }
footer .legal { max-width:800px; margin:16px auto 0; padding-top:14px; border-top:1px solid #3a3f44; }
