:root{color-scheme:light;--paper:#faf6f0;--card-bg:#fffdf9;--ink:#3a3128;--ink-soft:#6f6154;--terracotta:#9c4a21;--terracotta-deep:#7d3a19;--sage:#5c6f52;--line:#e7dccc;--line-strong:#d5c6b2;--on-accent:#fff;--well:#efe8dd;--danger:#a02c20;--danger-border:#c4877e;--input-bg:#fff;--topbar-bg:rgba(250,246,240,0.92);--bg:var(--paper);--fg:var(--ink);--muted:var(--ink-soft);--accent:var(--terracotta);--panel:var(--card-bg);--border:var(--line);--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,monospace;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;--shadow-soft:0 1px 2px rgba(58,49,40,0.06),0 4px 16px rgba(58,49,40,0.06);--shadow-lift:0 2px 4px rgba(58,49,40,0.08),0 10px 28px rgba(58,49,40,0.10)}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--paper:#1a1613;--card-bg:#241f1a;--ink:#ece3d6;--ink-soft:#b3a390;--terracotta:#e0965f;--terracotta-deep:#eaa774;--sage:#a7b795;--line:#362f27;--line-strong:#4a4036;--shadow-soft:0 1px 2px rgba(0,0,0,0.35),0 4px 16px rgba(0,0,0,0.30);--shadow-lift:0 2px 4px rgba(0,0,0,0.40),0 10px 28px rgba(0,0,0,0.45);--on-accent:#241a12;--well:#2e2720;--danger:#f0928a;--danger-border:#7a3b34;--input-bg:#211c17;--topbar-bg:rgba(26,22,19,0.90)}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--fg);font:16px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;min-height:100vh;overflow-x:clip}code{overflow-wrap:anywhere}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--terracotta-deep);text-decoration:underline}h2{font-family:var(--serif);font-size:1.6rem;letter-spacing:-.01em}h2,h3{font-weight:600;color:var(--ink)}h3{font-size:1.05rem}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;align-items:center;flex-wrap:wrap;gap:.35rem 1rem;padding:.8rem 1.5rem;border-bottom:1px solid var(--line);background:var(--topbar-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.topbar h1{font-family:var(--serif);font-size:1.15rem;margin:0;font-weight:600;color:var(--ink)}.topbar .spacer{flex:1 1}.topbar .muted{color:var(--ink-soft);font-size:.85rem;min-width:0;overflow-wrap:anywhere}.topbar a{font-size:.95rem;color:var(--ink);display:inline-flex;align-items:center;min-height:44px;padding:0 .35rem}.topbar a:hover{color:var(--terracotta);text-decoration:none}main{padding:1.75rem 1.5rem 3rem;max-width:1280px;margin:0 auto}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:.9rem;margin-bottom:1.4rem}.section-head h2{margin:.25rem 0 0}.eyebrow{margin:0;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--sage);font-weight:600}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:1rem;gap:1rem}.card{background:var(--card-bg);border:1px solid var(--line);border-radius:10px;padding:1.1rem;box-shadow:var(--shadow-soft);transition:border-color .2s,box-shadow .2s}a.card{display:block;color:var(--fg)}a.card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-lift);color:var(--fg);text-decoration:none}.card strong{color:var(--ink);font-family:var(--serif);font-size:1.1rem}.gallery{column-count:1;column-gap:1.25rem}@media (min-width:640px){.gallery{column-count:2}}@media (min-width:900px){.gallery{column-count:3}}@media (min-width:1200px){.gallery{column-count:4}}.photo-card{display:block;page-break-inside:avoid;break-inside:avoid;margin-bottom:1.25rem;background:var(--card-bg);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:var(--shadow-soft);transition:box-shadow .2s,border-color .2s;color:var(--fg)}.photo-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-lift);text-decoration:none}.photo-card .img-wrap{position:relative;overflow:hidden;line-height:0;background:var(--well)}.photo-card img{width:100%;height:auto;display:block}.photo-card .badge-loc{display:none}.photo-card .caption{padding:.8rem .9rem .9rem}.photo-card .caption .row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:2px}.photo-card .caption h3{margin:0;font-size:1rem;font-weight:600}.photo-card:hover .caption h3{color:var(--terracotta)}.photo-card .caption .year{font-size:.85rem;color:var(--ink-soft);flex-shrink:0}.photo-card .caption .desc{margin:0;font-size:.85rem;color:var(--ink-soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.photo-tile{aspect-ratio:1;background:var(--well);overflow:hidden;border-radius:8px;position:relative;display:block}.photo-tile img{width:100%;height:100%;object-fit:cover;display:block}.photo-tile .serial{position:absolute;bottom:4px;left:6px;color:rgba(255,255,255,.85);font-size:12px;text-shadow:0 1px 2px rgba(0,0,0,.6)}.photo-detail{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-gap:1.25rem;gap:1.25rem}@media (max-width:800px){.photo-detail{grid-template-columns:1fr}}.photo-detail .image-wrap{background:var(--card-bg);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:var(--shadow-soft)}.photo-detail .image-wrap img{width:100%;height:auto;display:block}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.5rem 1.25rem;border-radius:8px;background:var(--terracotta);border:1px solid var(--terracotta);font-weight:600;font-family:inherit;font-size:1rem;cursor:pointer;transition:background .15s,border-color .15s}.button,.button:hover{color:var(--on-accent)}.button:hover{background:var(--terracotta-deep);border-color:var(--terracotta-deep);text-decoration:none}.button.ghost{background:transparent;color:var(--ink);border-color:var(--line-strong)}.button.ghost:hover{color:var(--terracotta);border-color:var(--terracotta);background:transparent}.button.danger{background:transparent;color:var(--danger);border-color:var(--danger-border)}.button.danger:hover{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.button:disabled{opacity:.5;cursor:default}.button:disabled:hover{background:var(--terracotta);border-color:var(--terracotta)}.button.ghost:disabled:hover{color:var(--ink);border-color:var(--line-strong);background:transparent}.linkish{background:none;border:none;padding:.35rem .25rem;font:inherit;font-size:.9rem;color:var(--accent);cursor:pointer;text-decoration:underline;min-height:32px}.linkish.danger{color:var(--danger)}.linkish:disabled{opacity:.5;cursor:default}table.admin{width:100%;border-collapse:collapse;margin-top:.5rem;background:var(--card-bg);border:1px solid var(--line);border-radius:10px}table.admin td,table.admin th{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--line);font-size:.95rem}table.admin th{color:var(--ink-soft);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.admin-nav{display:flex;gap:.25rem;margin:0 0 1.25rem;flex-wrap:wrap;background:var(--card-bg);border:1px solid var(--line);padding:.3rem;border-radius:10px;width:-moz-fit-content;width:fit-content}.admin-nav a{color:var(--ink);font-size:.95rem;padding:.5rem .9rem;border-radius:8px;min-height:40px;display:inline-flex;align-items:center;transition:background .15s,color .15s}.admin-nav a:hover{color:var(--terracotta);background:var(--paper);text-decoration:none}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--well);color:var(--ink);font-size:.8rem}label{display:block;font-size:.85rem;color:var(--ink-soft);margin-bottom:.3rem;font-weight:600}input[type=file],input[type=password],input[type=text],select,textarea{width:100%;min-height:44px;padding:.55rem .75rem;border:1px solid var(--line-strong);border-radius:8px;background:var(--input-bg);color:var(--ink);font-family:inherit;font-size:1rem}textarea{min-height:88px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--terracotta);box-shadow:0 0 0 3px rgba(156,74,33,.15)}.login-card{max-width:400px;margin:5rem auto;padding:2.25rem;text-align:center;background:var(--card-bg);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lift)}.login-card h1{margin-top:0;color:var(--ink);font-family:var(--serif)}.error{color:var(--danger);font-size:.9rem;margin-top:.5rem}.pager a{min-width:120px}.name-sheet{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);width:min(440px,calc(100vw - 32px));background:var(--panel);border:1px solid var(--line-strong);border-radius:14px;box-shadow:var(--shadow-lift);padding:12px 14px;display:flex;flex-direction:column;gap:10px;z-index:60}.name-sheet .row-form{display:flex;gap:8px}.name-sheet input[type=text]{flex:1 1 auto;min-width:0}.chip-row{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:2px;margin:0 -2px}.chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.3rem .9rem;border-radius:999px;border:1px solid var(--line-strong);background:var(--well);color:var(--ink);font-family:inherit;font-size:.95rem;cursor:pointer}.chip:hover{border-color:var(--terracotta);color:var(--terracotta)}.chip:disabled{opacity:.55;cursor:default}.install-banner{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:55;display:flex;gap:12px;align-items:center;padding:14px 16px;border-radius:14px;background:var(--panel);color:var(--fg);border:1px solid var(--line-strong);box-shadow:var(--shadow-lift);font-size:1rem;line-height:1.45}.install-banner img{width:48px;height:48px;border-radius:10px;flex-shrink:0}.install-banner .actions{display:flex;flex-direction:column;gap:8px;margin-left:auto;flex-shrink:0}@media (min-width:640px){.install-banner{left:auto;right:24px;max-width:420px}}footer{margin-top:4rem;border-top:1px solid var(--line);padding:1.5rem;text-align:center;font-size:.8rem;color:var(--ink-soft)}.page-status{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center;padding:2rem}.page-status .spin{width:28px;height:28px;border-radius:999px;border:3px solid var(--line-strong);border-top-color:var(--terracotta);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:640px){main{padding:1.25rem 1rem 3rem}.topbar{padding:.7rem 1rem;gap:.35rem .65rem}.topbar h1{font-size:1.05rem}.topbar a{min-height:48px;padding:0 .5rem;font-size:1rem}h2{font-size:1.4rem}.section-head{flex-wrap:wrap;align-items:flex-start;gap:.4rem}.button{min-height:52px;padding:.7rem 1.4rem;font-size:1.05rem;border-radius:10px}.linkish{min-height:44px;font-size:1rem;padding:.5rem .35rem}input[type=file],input[type=password],input[type=text],select,textarea{min-height:48px}.pager{gap:.75rem}.pager a{min-width:0;flex:1 1}table.admin{display:block;overflow-x:auto;white-space:nowrap}.login-card{margin:3rem auto;padding:1.75rem}.name-sheet{left:0;right:0;bottom:0;transform:none;width:auto;border-radius:14px 14px 0 0;border-width:1px 0 0;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.name-sheet .button{min-height:48px;padding:.55rem 1rem;font-size:1rem}.chip{min-height:44px;font-size:1rem}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}