:root{--bg:#f3efe7;--surface:#faf7f1;--ink:#20221d;--muted:#77766e;--line:#d8d2c6;--accent:#b24c2e;--shadow:0 18px 50px rgba(45,38,27,.09)}
[data-theme="midnight"]{--bg:#171816;--surface:#22231f;--ink:#f0eee7;--muted:#a7a69e;--line:#3b3c36;--accent:#e58a69;--shadow:0 18px 50px rgba(0,0,0,.28)}
[data-theme="sage"]{--bg:#e8ede5;--surface:#f4f6f1;--ink:#243029;--muted:#6d786f;--line:#c8d0c6;--accent:#486a55;--shadow:0 18px 50px rgba(35,55,41,.1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',sans-serif;min-height:100vh;transition:background .3s,color .3s}a{color:inherit;text-decoration:none}main{min-height:calc(100vh - 150px)}
.site-header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(22px,5vw,76px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px;font-weight:600;letter-spacing:.04em}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--ink);border-radius:50%;font-family:'Playfair Display',serif;font-style:italic}.site-header nav{display:flex;align-items:center;gap:28px;font-size:14px}.site-header nav>a:not(.button):hover{color:var(--accent)}.nav-avatar{display:grid!important;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--bg)!important}
.button{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:2px;background:var(--ink);color:var(--bg);padding:14px 22px;font:600 14px 'DM Sans';cursor:pointer;transition:transform .2s,opacity .2s}.button:hover{transform:translateY(-2px);opacity:.9}.button-small{padding:10px 16px}.button-wide{width:100%;padding:16px}.eyebrow{text-transform:uppercase;letter-spacing:.19em;font-size:11px;font-weight:600;color:var(--accent)}
.hero{padding:clamp(70px,10vw,150px) clamp(22px,8vw,130px) clamp(70px,9vw,120px);position:relative}.hero:after{content:'✦';position:absolute;right:12%;top:22%;font-size:50px;color:var(--accent);opacity:.6}.hero h1,.auth-intro h1,.form-page h1,.settings-page h1{font:600 clamp(54px,8vw,112px)/.93 'Playfair Display',serif;letter-spacing:-.045em;margin:22px 0}.hero h1 em,.auth-intro h1 em,.form-page h1 em{font-weight:500}.hero-copy{max-width:460px;color:var(--muted);font-size:17px;line-height:1.7;margin:30px 0}.text-link{display:inline-flex;gap:10px;border-bottom:1px solid var(--ink);padding-bottom:7px;font-size:14px}
.gallery-section{padding:0 clamp(22px,5vw,76px) 110px}.section-heading{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:35px}.section-heading h2{font:600 30px 'Playfair Display',serif;margin:0}.section-heading>span{font-size:12px;color:var(--muted)}.masonry{columns:3 280px;column-gap:18px}.photo-card{break-inside:avoid;margin:0 0 18px;overflow:hidden;background:var(--surface)}.photo-card a{display:block;position:relative}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .5s}.photo-tall img{aspect-ratio:3/4}.photo-card:hover img{transform:scale(1.025)}.photo-overlay{position:absolute;inset:auto 0 0;padding:55px 18px 18px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.65));opacity:0;transition:.25s}.photo-card:hover .photo-overlay{opacity:1}.photo-overlay strong,.photo-overlay small{display:block}.photo-overlay small{margin-top:4px;opacity:.75}.empty-state{text-align:center;background:var(--surface);border:1px solid var(--line);padding:80px 24px}.empty-symbol{font-size:36px;color:var(--accent)}.empty-state h3{font:600 34px 'Playfair Display';margin:18px 0 8px}.empty-state p{color:var(--muted);margin:0 0 25px}
.auth-shell,.form-page{display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:8vw;max-width:1200px;margin:0 auto;padding:80px 30px 110px}.auth-intro h1,.form-page h1{font-size:clamp(48px,6vw,78px)}.auth-intro>p:last-child,.form-page>div>p:last-child{color:var(--muted);line-height:1.7;max-width:430px}.panel{background:var(--surface);padding:clamp(28px,5vw,55px);box-shadow:var(--shadow);border:1px solid var(--line)}.panel-heading{margin-bottom:28px}.panel-heading h2{font:600 34px 'Playfair Display';margin:0 0 7px}.panel-heading p,.form-foot{color:var(--muted);font-size:14px}.panel label{display:block;font-size:13px;font-weight:600;margin:20px 0}.panel input,.panel textarea{display:block;width:100%;margin-top:9px;padding:13px 0;background:transparent;color:var(--ink);font:15px 'DM Sans';border:0;border-bottom:1px solid var(--line);outline:none}.panel input:focus,.panel textarea:focus{border-color:var(--accent)}.panel label small{display:block;color:var(--muted);font-weight:400;margin-top:5px}.form-foot{text-align:center;margin:22px 0 0}.form-foot a{text-decoration:underline}.form-error,.flash{padding:13px 18px;font-size:14px}.form-error,.flash-error{background:#f5dcd3;color:#7d2d1c}.flash-success{background:#d9ead9;color:#28572d}.flash{margin:16px auto;max-width:900px}.dropzone{display:flex!important;min-height:190px;flex-direction:column;align-items:center;justify-content:center;border:1px dashed var(--muted);cursor:pointer}.dropzone input{position:absolute;opacity:0;width:1px}.drop-icon{font-size:32px;color:var(--accent);margin-bottom:8px}.dropzone.has-file{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.settings-page{max-width:1180px;margin:auto;padding:90px 30px 120px}.settings-page h1{font-size:clamp(42px,6vw,72px);margin:12px 0}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:45px 0 28px}.theme-card{position:relative;padding:22px;border:2px solid transparent;background:var(--surface);cursor:pointer}.theme-card:has(input:checked){border-color:var(--accent)}.theme-card input{position:absolute;opacity:0}.theme-swatch{height:145px;padding:25px;display:flex;flex-direction:column;gap:12px;margin-bottom:18px;background:#f3efe7}.theme-swatch i{display:block;height:7px;background:#20221d}.theme-swatch i:nth-child(1){width:70%}.theme-swatch i:nth-child(2){width:95%}.theme-swatch i:nth-child(3){width:45%;background:#b24c2e}.theme-preview-midnight .theme-swatch{background:#171816}.theme-preview-midnight i{background:#f0eee7}.theme-preview-midnight i:nth-child(3){background:#e58a69}.theme-preview-sage .theme-swatch{background:#e8ede5}.theme-preview-sage i{background:#243029}.theme-preview-sage i:nth-child(3){background:#486a55}.theme-card strong,.theme-card small{display:block}.theme-card small{color:var(--muted);margin-top:5px}.plugin-note{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);max-width:900px;margin:0 auto 90px;padding:28px 20px}.plugin-note span{font-size:11px;text-transform:uppercase;letter-spacing:.17em;color:var(--accent)}.plugin-note p{font:italic 22px 'Playfair Display';margin:0;max-width:500px}footer{display:flex;justify-content:space-between;padding:30px clamp(22px,5vw,76px);border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.upload-page{grid-template-columns:.8fr 1.2fr;max-width:1320px}.batch-upload{padding:clamp(24px,4vw,44px)}.batch-upload select{display:block;width:100%;margin-top:9px;padding:13px 0;background:transparent;color:var(--ink);font:15px 'DM Sans';border:0;border-bottom:1px solid var(--line)}.upload-summary{margin:15px 0;color:var(--muted);font-size:13px}.upload-queue{display:grid;gap:14px;max-height:620px;overflow:auto;margin:0 -6px 20px 0;padding-right:6px}.upload-item{display:grid;grid-template-columns:105px 1fr;gap:18px;padding:14px;border:1px solid var(--line);background:var(--bg)}.upload-item img{width:105px;height:105px;object-fit:cover}.upload-item label{margin:10px 0}.upload-filename{display:block;overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.batch-upload button:disabled{cursor:not-allowed;opacity:.45;transform:none}
@media(max-width:760px){.site-header{height:72px}.site-header nav{gap:14px}.site-header nav>a:first-child,.site-header nav>a:nth-child(2){display:none}.hero:after{display:none}.auth-shell,.form-page{grid-template-columns:1fr;padding-top:50px}.auth-intro h1,.form-page h1{font-size:52px}.theme-grid{grid-template-columns:1fr}.section-heading{align-items:start;gap:15px;flex-direction:column}.settings-page .section-heading>span{line-height:1.4}.photo-overlay{opacity:1}.plugin-note,footer{flex-direction:column}.upload-item{grid-template-columns:72px 1fr}.upload-item img{width:72px;height:72px}}
.admin-shell{display:grid;grid-template-columns:240px 1fr;max-width:1320px;margin:auto;min-height:750px}.admin-sidebar{padding:65px 30px;border-right:1px solid var(--line)}.admin-sidebar h2{font:600 25px 'Playfair Display';margin:12px 0 30px}.admin-sidebar nav{display:flex;flex-direction:column;gap:7px}.admin-sidebar nav a{padding:11px 13px;color:var(--muted);font-size:14px}.admin-sidebar nav a:hover{background:var(--surface);color:var(--ink)}.admin-content{padding:60px clamp(25px,5vw,70px) 100px}.admin-heading{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:24px;margin-bottom:32px}.admin-heading h1{font:600 47px 'Playfair Display';margin:8px 0 0}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat-grid article,.admin-panel{background:var(--surface);border:1px solid var(--line);padding:28px}.stat-grid span{font-size:12px;color:var(--muted)}.stat-grid strong{display:block;font:600 45px 'Playfair Display';margin-top:12px}.admin-panel h2{font:600 28px 'Playfair Display';margin-top:0}.admin-panel>p{color:var(--muted)}.quick-links{display:grid;margin-top:25px;border-top:1px solid var(--line)}.quick-links a{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line)}.admin-form label{display:block;font-size:13px;font-weight:600;margin-bottom:22px}.admin-form input{display:block;width:100%;max-width:600px;margin-top:8px;padding:13px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}.admin-check-list{display:grid;gap:10px;margin:25px 0}.admin-check-list label{display:flex;align-items:center;gap:15px;padding:17px;border:1px solid var(--line);cursor:pointer}.admin-check-list input{width:18px;height:18px}.admin-check-list strong,.admin-check-list small{display:block}.admin-check-list small{color:var(--muted);margin-top:4px}.admin-list{display:grid;gap:13px}.admin-list article{display:flex;align-items:center;justify-content:space-between;padding:22px;background:var(--surface);border:1px solid var(--line)}.admin-list h3{margin:0 0 5px}.admin-list p{margin:0 0 8px;color:var(--muted)}.admin-list code{font-size:11px}.admin-list form{display:flex;align-items:center;gap:15px}.switch input{position:absolute;opacity:0}.switch span{display:block;width:46px;height:26px;background:var(--line);border-radius:20px;padding:3px;cursor:pointer}.switch span:after{content:'';display:block;width:20px;height:20px;border-radius:50%;background:white;transition:.2s}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translateX(20px)}.admin-table{overflow:auto;background:var(--surface);border:1px solid var(--line)}.admin-table table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{text-align:left;padding:17px;border-bottom:1px solid var(--line);font-size:13px}.admin-table th{color:var(--muted)}.admin-table td small{display:block;color:var(--muted);margin-top:4px}.admin-table select{padding:7px;background:var(--bg);color:var(--ink);border:1px solid var(--line)}.admin-table button,.danger-link{border:0;background:none;color:var(--accent);cursor:pointer;margin-left:8px}.badge{padding:6px 9px;background:var(--bg);font-size:11px}.admin-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}.admin-image-grid article{background:var(--surface);border:1px solid var(--line)}.admin-image-grid img{width:100%;height:170px;object-fit:cover}.admin-image-grid article>div{padding:14px}.admin-image-grid small{display:block;color:var(--muted);margin:4px 0 12px}.admin-image-grid form{display:inline}.danger-link{margin:0;padding:0}@media(max-width:800px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{padding:25px;border-right:0;border-bottom:1px solid var(--line)}.admin-sidebar nav{flex-direction:row;overflow:auto}.admin-content{padding-top:35px}.stat-grid{grid-template-columns:1fr}.admin-heading{align-items:start;flex-direction:column;gap:15px}}
