:root{color-scheme:light;--floral:#fffaf0;--ivory:#fffff0;--corn:#fff8dc;--snow:#fffafa;--white:#fff;--ink:#2a2620;--mute:#5c5547;--accent:#8a6a1f;--line:#e6dcbd;--ok:#2d6a4f;--bad:#a3261f}
*{box-sizing:border-box}
body{margin:0;background:var(--floral);color:var(--ink);font:16px/1.65 system-ui,-apple-system,"Segoe UI",sans-serif}
h1,h2,h3{font-family:Georgia,"Iowan Old Style","Palatino Linotype",serif;font-weight:700}
.wrap{max-width:1060px;margin:0 auto;padding:0 20px}
.hero{position:relative;background:linear-gradient(180deg,var(--corn),var(--ivory));color:var(--ink);padding:44px 0 96px;border-bottom:1px solid var(--line)}
.hero.has-img{background-size:cover;background-position:center bottom;background-repeat:no-repeat;border-bottom:0;display:flex;align-items:flex-end;padding:24px 0 28px}
.hero.has-img .hero-in{width:100%}
.hero.has-img .skyline{display:none}
.hero.has-img h1,.hero.has-img .badge,.hero.has-img .count{text-shadow:0 1px 3px rgba(255,255,255,.9),0 0 12px rgba(255,255,255,.7)}
.hero-in{display:flex;gap:28px;align-items:center;position:relative;z-index:1}
.hero h1{margin:.1rem 0 0;font-size:2.6rem;line-height:1.05;letter-spacing:-.01em}
.badge{margin:0;color:var(--accent);font-weight:700;font-size:.95rem;letter-spacing:.02em}
.count{margin:.4rem 0 1.1rem;color:var(--mute)}
.avatar{width:128px;height:128px;border-radius:12px 12px 64px 64px;object-fit:cover;border:3px solid var(--accent);flex:none;background:var(--snow)}
.avatar.ph{display:grid;place-items:center;font:700 2.4rem Georgia,serif;color:var(--accent)}
.skyline{position:absolute;left:0;bottom:-1px;width:100%;height:70px;fill:var(--floral)}
.actions{display:flex;gap:10px;flex-wrap:wrap}
.btn{display:inline-block;background:var(--ink);color:#fff;border:2px solid var(--ink);padding:10px 20px;border-radius:4px;font:700 .95rem system-ui,sans-serif;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--accent);border-color:var(--accent)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--corn);color:var(--ink);border-color:var(--ink)}
.btn.danger{background:transparent;color:var(--bad);border-color:var(--bad)}
.btn:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.grid{display:grid;grid-template-columns:330px 1fr;gap:30px;padding-top:12px;padding-bottom:56px;align-items:start}
aside{position:sticky;top:84px}
.card{background:var(--white);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:4px;padding:22px;margin-bottom:20px}
.card h2,.rh{font-size:1.25rem;margin:0 0 .6rem}
.card h3{font-size:1rem;margin:1.1rem 0 .4rem}
.sub{color:var(--mute);margin-top:0;font-size:.92rem}
.brk{font-weight:600;margin:0}
.chips{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.chips li{background:var(--corn);border:1px solid var(--line);border-radius:999px;padding:2px 12px;font-size:.82rem}
.rh{font-size:1.5rem;margin-bottom:.2rem}.rh span{color:var(--accent);margin-left:8px}
.rev{display:flex;gap:16px;background:var(--white);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:4px;padding:20px;margin:16px 0}
.dot{width:46px;height:46px;border-radius:8px 8px 23px 23px;background:var(--corn);border:1px solid var(--accent);color:var(--accent);display:grid;place-items:center;font:700 .9rem Georgia,serif;flex:none}
.rev h3{margin:0;font-size:1.1rem}.meta{margin:0;color:var(--mute);font-size:.85rem}
.stars{color:var(--accent);letter-spacing:2px;margin:.3rem 0 .5rem}
.body p{max-width:68ch;margin:.5rem 0}
label{display:block;font-size:.9rem;font-weight:600;margin-bottom:12px}
input,textarea,select{display:block;width:100%;margin-top:4px;padding:10px;border:1px solid #cfc29a;border-radius:4px;background:var(--snow);color:var(--ink);font:inherit}
.hp{position:absolute;left:-9999px}
.ok{color:var(--ok);font-weight:600}.bad{color:var(--bad);font-weight:600}
.found{margin-top:28px;background:var(--corn)}
.found h3{margin-top:0}
.narrow{max-width:380px;margin:60px auto}
.admin .wrap{padding-top:20px;padding-bottom:40px;max-width:760px}
@media(max-width:800px){.grid{grid-template-columns:1fr}aside{position:static}.hero-in{flex-direction:column;text-align:center}.hero h1{font-size:2rem}.actions{justify-content:center}.avatar{width:104px;height:104px}}

.bar{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--white);border-bottom:1px solid var(--line);box-shadow:0 2px 10px rgba(42,38,32,.08);transform:translateY(-100%);visibility:hidden;transition:transform .25s ease,visibility .25s}
.bar.show{transform:none;visibility:visible}
.bar-in{display:flex;align-items:center;gap:12px;padding-top:10px;padding-bottom:10px}
.mini{width:44px;height:44px;border-radius:6px 6px 22px 22px;object-fit:cover;border:2px solid var(--accent);flex:none;display:grid;place-items:center;font:700 .85rem Georgia,serif;color:var(--accent);background:var(--snow)}
.bar-name{display:flex;flex-direction:column;line-height:1.25;margin-right:auto;min-width:0}
.bar-name strong{font:700 1rem Georgia,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-name span{font-size:.8rem;color:var(--mute)}
.bar .btn{padding:7px 14px;font-size:.88rem}
html{scroll-padding-top:84px}
@media(max-width:800px){.bar .btn.ghost{display:none}aside{top:auto}}
@media(prefers-reduced-motion:reduce){.bar{transition:none}}

.share{position:relative;display:inline-block}
.share summary{list-style:none;cursor:pointer}.share summary::-webkit-details-marker{display:none}
.share summary::after{content:" \25BE"}
.menu{position:absolute;right:0;top:calc(100% + 6px);min-width:170px;background:var(--white);border:1px solid var(--line);border-radius:6px;box-shadow:0 8px 24px rgba(42,38,32,.15);padding:6px;z-index:60;display:flex;flex-direction:column}
.menu a,.menu button{display:block;width:100%;text-align:left;background:none;border:0;padding:9px 12px;border-radius:4px;color:var(--ink);font:600 .92rem system-ui,sans-serif;text-decoration:none;cursor:pointer}
.menu a:hover,.menu button:hover,.menu a:focus-visible,.menu button:focus-visible{background:var(--corn)}
@media(max-width:800px){.hero-in .actions .share .menu{left:50%;right:auto;transform:translateX(-50%)}}

dialog.modal{border:0;border-radius:8px;padding:26px 24px 24px;width:min(520px,92vw);max-height:90vh;overflow:auto;background:var(--white);color:var(--ink);box-shadow:0 20px 60px rgba(42,38,32,.35);border-top:4px solid var(--accent)}
dialog.modal::backdrop{background:rgba(42,38,32,.55)}
dialog.modal[open]{animation:pop .18s ease-out}
dialog.modal h2{margin:0 0 .5rem;font-size:1.35rem;padding-right:36px}
.x{position:absolute;top:10px;right:12px;margin:0}
.x button{background:none;border:0;font:400 2rem/1 system-ui;color:var(--mute);cursor:pointer;padding:0 6px;border-radius:4px}
.x button:hover{color:var(--ink)}.x button:focus-visible{outline:3px solid var(--accent)}
body:has(dialog[open]){overflow:hidden}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){dialog.modal[open]{animation:none}}

main.grid{max-width:none;padding-left:24px;padding-right:24px}
.revgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}
.revgrid .rev{margin:0;height:100%}
@media(max-width:640px){.revgrid{grid-template-columns:1fr}}

.rev{scroll-margin-top:90px}
.rev.sel{outline:3px solid var(--accent);outline-offset:2px}
.rshare{margin-top:.6rem}
.rshare .btn{padding:5px 12px;font-size:.82rem}
.rev .menu{left:0;right:auto}
