:root {
  --bg:#F0E0C0; --fg:#000; --muted:#606850; --brand:#502800; --accent:#B89048; --panel:#E0D8B8;
  --focus: #0000ff;
  --fontScale: 1;
}
*{box-sizing:border-box}
html{font-size:calc(16px * var(--fontScale));}
body{margin:0;background:var(--bg);color:var(--fg);font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;line-height:1.5}
a{color:#0068B8}
a:focus,button:focus,input:focus,select:focus,textarea:focus{outline:3px solid var(--focus);outline-offset:2px}
header.site{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--brand);color:#fff}
header.site img{height:32px;width:auto}
header.site nav{margin-left:auto;display:flex;gap:.75rem;flex-wrap:wrap}
header.site a{color:#fff;text-decoration:none}
header.site a:focus, header.site a:hover{text-decoration:underline}
main{max-width:880px;margin:0 auto;padding:1rem}
.card{background:var(--panel);padding:1rem;border-radius:.5rem;box-shadow:0 1px 2px rgba(0,0,0,.06)}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:.5rem;border-bottom:1px solid #ddd;vertical-align:top}
thead th{background:#faf8f2;text-align:left}
.btn{display:inline-block;padding:.5rem .75rem;border-radius:.375rem;border:1px solid var(--muted);background:#fff}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#000}
.btn.danger{background:#b00020;border-color:#b00020;color:#fff}
.grid{display:grid;gap:1rem}
.grid.cols-2{grid-template-columns:1fr}
@media(min-width:640px){.grid.cols-2{grid-template-columns:1fr 1fr}}
.form-row{display:flex;flex-direction:column;margin:.5rem 0}
label{font-weight:600}
input[type="text"], input[type="email"], input[type="password"], textarea{padding:.5rem;border:1px solid #bbb;border-radius:.375rem}
.help{font-size:.9rem;color:#333}
img.post-img{max-width:300px;height:auto;border:1px solid #ddd;background:#fff}
.flash{padding:.75rem;border-radius:.375rem;margin:.75rem 0}
.flash.ok{background:#e6ffed;border:1px solid #0f9d58;color:#0f5132}
.flash.err{background:#ffefef;border:1px solid #b00020;color:#601410}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.login-dialog{max-width:440px;margin:10vh auto;padding:1rem;background:#fff;border-radius:.5rem;box-shadow:0 2px 10px rgba(0,0,0,.15)}
.logo-wrap{display:flex;align-items:center;gap:.5rem}
.font-controls{margin-left:auto;display:flex;gap:.25rem}
.font-controls button{width:2rem;height:2rem}
footer.site{margin-top:3rem;padding:1rem;text-align:center;color:#333}
.photos{display:grid;gap:.75rem;justify-content:center;grid-template-columns:repeat(2,minmax(0,1fr))}
.photos .post-img{width:100%;height:auto;max-width:300px;justify-self:center}
@media(min-width:640px){.photos{grid-template-columns:repeat(3,1fr)}}
@media(min-width:880px){.photos{grid-template-columns:repeat(4,1fr)}}
@media(min-width:1100px){.photos{grid-template-columns:repeat(5,1fr)}}

details > summary { cursor:pointer; display:inline-block }
details > summary::-webkit-details-marker { display:none }

/* 3.1.1 header layout flip and full-screen menu */
header.site{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#502800;color:#fff}
.title-left{display:flex;align-items:center;gap:.5rem}
.logo{height:32px;width:auto}
.site-title{font-size:1.1rem}
.controls-right{display:flex;align-items:center;gap:.5rem}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:1px solid rgba(255,255,255,.6);background:transparent;color:#fff;border-radius:.5rem}
.font-controls{display:flex;gap:.25rem}
.font-controls .btn{min-width:2.25rem;height:2.25rem}

.overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);backdrop-filter:blur(2px);}
.menu-full{position:fixed;inset:0;background:#F0E0C0;color:#000;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;padding:1.25rem 1rem;gap:1rem}
.menu-full ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.menu-full a{color:#000;text-decoration:none;font-size:1.25rem;padding:.75rem 0;border-bottom:1px solid #B89048}
.menu-full a:focus,.menu-full a:hover{text-decoration:underline}
.menu-full .close-menu{align-self:flex-end}

.inert{pointer-events:none !important}
html.noscroll, body.noscroll{height:100%;overflow:hidden}

@media(min-width:740px){
  .site-title{font-size:1.25rem}
}


/* 3.1.2 stronger modal */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.78);backdrop-filter:blur(2px);z-index:10000}
.menu-full{position:fixed;inset:0;background:#F0E0C0;color:#000;display:flex;flex-direction:column;padding:1.25rem 1rem;gap:1rem;z-index:10001}
#appWrap.blocked{pointer-events:none !important}



/* 3.1.3 robustness */
[hidden]{display:none !important}
#appWrap.blocked{pointer-events:none !important}
#appWrap.masked *{visibility:hidden !important}

#siteMenu, #siteMenu * { visibility: visible !important }


/* 3.1.5 submenu styles */
.menu-full .has-sub{display:block}
.menu-full .sub-toggle{display:block;width:100%;text-align:left;background:transparent;border:none;font-size:1.25rem;padding:.75rem 0;border-bottom:1px solid #B89048;color:#000}
.menu-full .sub-toggle:focus{text-decoration:underline;outline:3px solid var(--focus);outline-offset:2px}
.menu-full .sub-list{padding-left:1rem;border-left:3px solid #B89048;margin:.25rem 0 .5rem}
.menu-full .sub-list a{font-size:1.1rem;border-bottom:none;padding:.5rem 0}

/* table base */
.table-wrap{overflow:auto}
.tbl{width:100%;border-collapse:collapse}
.tbl th,.tbl td{border:1px solid #bbb;padding:.5rem;text-align:left;vertical-align:top;background:#fff}
.tbl thead th{background:#E0D8B8}
.btn{display:inline-block;padding:.4rem .6rem;border:1px solid #333;background:#fff;color:#000;text-decoration:none;border-radius:.25rem}
.btn.danger{border-color:#700;color:#700}
.alert{background:#fff3cd;border:1px solid #ffeeba;padding:.5rem;border-radius:.25rem;margin:.5rem 0}
.form label{display:block;margin:.5rem 0}
.form input[type="text"],.form input[type="email"],.form input[type="password"],.form select{width:100%;max-width:420px}
.actions{display:flex;gap:.5rem;margin-top:.75rem}
