:root{
  --ink:#1a1714; --paper:#f4f1ea; --card:#fbfaf6; --line:#d8d2c6;
  --muted:#6b6459; --accent:#7a2e22; --accent2:#3a4a55; --gold:#b8892b;
}
*{box-sizing:border-box;}
body{margin:0; background:var(--paper); color:var(--ink);
  font-family:"Iowan Old Style","Palatino Linotype",Georgia,serif; line-height:1.5;}

/* nav */
.atlas-header{position:sticky; top:0; z-index:30; background:rgba(244,241,234,.96);
  backdrop-filter:blur(6px); border-bottom:1px solid var(--line);}
.atlas-nav-row{max-width:1200px; margin:0 auto; padding:16px 24px; display:flex;
  align-items:center; justify-content:space-between; gap:16px;}
.atlas-wordmark{font-style:italic; font-weight:600; font-size:1.15rem; text-decoration:none;
  color:var(--ink); letter-spacing:.01em;}
.atlas-toggle{display:none;}
nav.atlas-primary{display:flex; gap:22px; align-items:center;}
nav.atlas-primary a{font-size:.8rem; text-transform:uppercase; letter-spacing:.1em;
  text-decoration:none; color:var(--muted); white-space:nowrap;}
nav.atlas-primary a:hover, nav.atlas-primary a[aria-current="page"]{color:var(--accent);}
@media(max-width:640px){
  nav.atlas-primary{display:none; position:absolute; top:100%; left:0; right:0;
    background:var(--paper); border-bottom:1px solid var(--line); flex-direction:column;
    align-items:flex-start; padding:14px 24px 18px; gap:12px;}
  nav.atlas-primary.open{display:flex;}
  .atlas-toggle{display:block; background:none; border:1px solid var(--line); padding:6px 12px;
    font-family:inherit; font-size:.78rem; text-transform:uppercase; letter-spacing:.08em;
    color:var(--ink); cursor:pointer;}
}

/* login / guest gate */
.auth-gate{position:fixed; inset:0; z-index:100; background:rgba(26,23,20,.6);
  display:flex; align-items:center; justify-content:center; padding:20px;}
.auth-gate[hidden]{display:none;}
.auth-box{background:var(--card); border:1px solid var(--line); max-width:360px; width:100%;
  padding:28px 26px; text-align:center;}
.auth-box h2{margin:0 0 8px; font-size:1.3rem;}
.auth-box p{color:var(--muted); font-size:.9rem; margin:0 0 18px;}
.auth-box form{display:flex; gap:8px; margin-bottom:14px;}
.auth-box input[type=password]{flex:1; min-width:0; padding:9px 12px; border:1px solid var(--line);
  font-family:inherit; font-size:.95rem; background:#fff;}
.auth-error{color:var(--accent); font-size:.82rem; margin:-8px 0 14px;}
.auth-box #guestBtn{width:100%;}

header{padding:48px 24px 8px; max-width:1200px; margin:0 auto; text-align:center;}
header h1{font-size:2.4rem; margin:0 0 8px; letter-spacing:-.5px;}
header .sub{color:var(--muted); font-size:1.02rem; max-width:760px; margin:0 auto;}

/* controls */
.controls{position:sticky; top:69px; z-index:20; background:rgba(244,241,234,.96);
  backdrop-filter:blur(6px); border-bottom:1px solid var(--line); padding:12px 24px 14px; margin-top:26px;}
.controls-inner{max-width:1200px; margin:0 auto;}
.searchrow{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:10px;}
.searchrow input{flex:1; min-width:200px; padding:9px 12px; border:1px solid var(--line);
  background:#fff; font-family:inherit; font-size:.95rem;}
.btn{padding:8px 14px; border:1px solid var(--line); background:#fff; cursor:pointer;
  font-family:inherit; font-size:.85rem; color:var(--ink);}
.btn:hover{background:#efe9dd;}
.count{color:var(--muted); font-size:.85rem; white-space:nowrap;}
.view-toggle{display:flex; gap:6px;}
.view-btn.on{background:var(--accent); color:#fff; border-color:var(--accent);}
.facets{display:flex; flex-wrap:wrap; gap:14px;}
.facets-panel #clear{margin-top:12px;}
.filters-toggle{display:none;}
@media(max-width:640px){
  .filters-toggle{display:inline-block;}
  .facets-panel{display:none; margin-top:12px;}
  .facets-panel.open{display:block;}
}
.facet{display:flex; flex-wrap:wrap; gap:5px; align-items:center;}
.facet .flabel{font-size:.72rem; text-transform:uppercase; letter-spacing:.6px; color:var(--muted); margin-right:2px;}
.chip{font-size:.78rem; padding:3px 9px; border:1px solid var(--line); border-radius:12px;
  background:#fff; cursor:pointer; color:#3c342c; user-select:none;}
.chip:hover{border-color:var(--accent);}
.chip.on{background:var(--accent); color:#fff; border-color:var(--accent);}

main{max-width:1200px; margin:0 auto; padding:8px 24px 80px;}
section{margin-top:40px;}
section.hidden{display:none;}
h2{font-size:1.4rem; margin:0 0 4px; padding-bottom:8px; border-bottom:2px solid var(--ink);}
h2 .n{font-size:.85rem; color:var(--muted); font-weight:normal;}
.section-note{color:var(--muted); margin:0 0 18px; font-size:.95rem; max-width:840px;}
#favSection h2{border-bottom-color:var(--gold);}

.grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(248px,1fr)); gap:18px;}
.card{background:var(--card); border:1px solid var(--line); overflow:hidden;
  display:flex; flex-direction:column; position:relative;}
.card.hidden{display:none;}
.imgwrap{aspect-ratio:1/1; background:#e7e2d8; overflow:hidden; display:flex;
  align-items:center; justify-content:center;}
.imgwrap img{width:100%; height:100%; object-fit:cover; display:block;}
.card.link .imgwrap{
  background:linear-gradient(135deg,#efe9dd,#e2dccf); color:var(--muted); font-size:.8rem;
  text-align:center; padding:16px; flex-direction:column; gap:6px; font-style:italic;}
.card.link .imgwrap img{display:none;}
.card.link .imgwrap::before{content:"⌕"; font-size:1.7rem; opacity:.5; font-style:normal;}
.star{position:absolute; top:8px; right:8px; z-index:3; width:32px; height:32px; border-radius:50%;
  border:none; background:rgba(255,255,255,.85); cursor:pointer; font-size:1.05rem; line-height:1;
  color:#b7b0a4; display:flex; align-items:center; justify-content:center; box-shadow:0 1px 3px rgba(0,0,0,.15);}
.star:hover{background:#fff;}
.star.on{color:var(--gold);}
.gear{position:absolute; top:8px; right:48px; z-index:3; width:32px; height:32px; border-radius:50%;
  border:none; background:rgba(255,255,255,.85); cursor:pointer; font-size:1rem; line-height:1;
  color:#b7b0a4; display:flex; align-items:center; justify-content:center; box-shadow:0 1px 3px rgba(0,0,0,.15);}
.gear:hover{background:#fff;}
.gear.on{color:var(--accent);}
.cbody{padding:13px 15px 15px; display:flex; flex-direction:column; flex:1;}

.tag-editor{margin-top:10px; padding-top:10px; border-top:1px dashed var(--line);
  display:flex; flex-direction:column; gap:8px;}
.te-label{display:flex; flex-direction:column; gap:4px; font-size:.72rem; color:var(--muted);
  text-transform:uppercase; letter-spacing:.06em;}
.te-label input{font-family:inherit; font-size:.85rem; text-transform:none; letter-spacing:normal;
  padding:6px 8px; border:1px solid var(--line); background:#fff; color:var(--ink);}
.te-tags{display:flex; flex-wrap:wrap; gap:4px;}
.te-tag{display:inline-flex; align-items:center; gap:4px;}
.te-remove{border:none; background:none; cursor:pointer; color:var(--muted); font-size:.9rem;
  line-height:1; padding:0;}
.te-remove:hover{color:var(--accent);}
.te-empty{color:var(--muted); font-style:italic; font-size:.8rem;}
.te-add{display:flex; gap:6px;}
.te-add input{flex:1; min-width:0; padding:6px 8px; border:1px solid var(--line); font-family:inherit; font-size:.85rem;}
.te-reset{align-self:flex-start; font-size:.75rem;}
.flag{display:inline-block; font-size:.68rem; letter-spacing:.5px; text-transform:uppercase;
  color:#fff; background:var(--accent); padding:2px 7px; border-radius:2px; margin-bottom:7px; align-self:flex-start;}
.flag.orbit{background:var(--accent2);} .flag.anchor{background:var(--gold);}
.card h3{margin:0 0 2px; font-size:1.08rem;}
.dates{color:var(--muted); font-size:.82rem; margin-bottom:7px;}
.cbody p{margin:0 0 10px; font-size:.88rem; color:#2c2822;}
.tags{display:flex; flex-wrap:wrap; gap:4px; margin-bottom:10px;}
.tag{font-size:.68rem; padding:1px 6px; background:#ece6da; border-radius:8px; color:#5a5348;}
.view{margin-top:auto; font-size:.83rem; color:var(--accent); text-decoration:none;
  border-top:1px solid var(--line); padding-top:9px; font-weight:600;}
.view:hover{text-decoration:underline;}
.empty{color:var(--muted); font-style:italic; padding:30px 0;}

.list{list-style:none; margin:0; padding:0; border-top:1px solid var(--line);}
.list-row{display:flex; align-items:baseline; gap:10px; padding:9px 4px; border-bottom:1px solid var(--line);}
.list-row .star{position:static; width:auto; height:auto; background:none; box-shadow:none; font-size:.95rem; flex:none;}
.list-row .lname{font-weight:600; white-space:nowrap; text-decoration:none;}
.list-row .lname:hover{text-decoration:underline;}
.list-row .ldesc{color:var(--muted); font-size:.9rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
@media(max-width:640px){
  .list-row{flex-wrap:wrap;}
  .list-row .ldesc{white-space:normal;}
}
footer{max-width:1200px; margin:0 auto; padding:24px; color:var(--muted); font-size:.83rem; border-top:1px solid var(--line);}
a{color:var(--accent);}

/* prose pages (about) */
.prose-main{max-width:840px; margin:0 auto; padding:8px 24px 80px; text-align:left;}
.prose-main h2{margin-top:40px;}
.prose-main p{font-size:.98rem; margin:0 0 14px; color:#2c2822;}

/* poster */
.poster-hero{max-width:1160px; margin:28px auto 4px; padding:22px 24px; background:var(--card);
  border:1px solid var(--line); display:grid; grid-template-columns:minmax(240px,380px) 1fr; gap:28px; align-items:start;}
.poster-hero img{width:100%; border:1px solid var(--line); box-shadow:0 2px 12px rgba(0,0,0,.14); background:#fff; display:block;}
.poster-read h2{font-size:1.35rem; border-bottom:2px solid var(--ink); padding-bottom:7px; margin:0 0 12px;}
.poster-read p{font-size:.93rem; margin:0 0 11px; color:#2c2822;}
.poster-read p .lead{color:var(--accent); font-weight:600;}
.poster-read .cand{font-size:.86rem; color:var(--muted); border-top:1px solid var(--line); padding-top:10px; margin-top:2px;}
@media(max-width:720px){.poster-hero{grid-template-columns:1fr;}}
details.poster-full{max-width:1160px; margin:0 auto 4px; padding:0 24px;}
details.poster-full summary{cursor:pointer; list-style:none; padding:12px 18px; background:var(--card);
  border:1px solid var(--line); font-size:.95rem; color:var(--accent); font-weight:600; user-select:none;}
details.poster-full summary::-webkit-details-marker{display:none;}
details.poster-full summary::before{content:"▸ "; color:var(--accent);}
details.poster-full[open] summary::before{content:"▾ ";}
details.poster-full summary:hover{background:#efe9dd;}
details.poster-full .full-inner{border:1px solid var(--line); border-top:none; background:var(--card); padding:18px 22px 8px;}
details.poster-full h4{margin:14px 0 6px; font-size:1rem; color:var(--ink);}
details.poster-full h4:first-child{margin-top:0;}
details.poster-full p{font-size:.93rem; margin:0 0 11px; color:#2c2822; max-width:900px;}
