*{box-sizing:border-box}body{margin:0;background:#fff;color:#111;font-family:Arial,Helvetica,sans-serif}.site-shell{display:grid;grid-template-columns:86px minmax(0,1fr);min-height:100vh}.site-nav{padding:12px 8px;border-right:1px solid #222}.site-logo{width:70px}.site-nav ul{padding-left:16px}.content{padding:12px 16px 40px;min-width:0}.content h1{font-size:20px;margin:0 0 10px}.breadcrumb{font-weight:bold;margin-bottom:10px;font-size:13px}.index-tools{display:flex;gap:12px;align-items:center;margin:10px 0 14px;color:#666;font-size:13px}.index-tools input{width:min(420px,100%);padding:7px 10px;border:1px solid #c8c8c8;border-radius:7px}.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;align-items:start}.year-card{border:1px solid #d3d3d3;border-radius:8px;overflow:hidden}.year-card[hidden],.album-row[hidden]{display:none}.year-card header{display:flex;justify-content:space-between;padding:7px 10px;background:#eef1f5;border-bottom:1px solid #d6d9de}.year-count{font-size:11px;color:#666}.album-row{display:grid;grid-template-columns:78px minmax(0,1fr) auto;gap:7px;padding:3px 9px;align-items:baseline}.album-row:hover{background:#f7f7f7}.album-date{font-size:12px;color:#666;text-align:right}.badges{display:flex;gap:5px;font-size:11px;color:#777}.folder-badge{padding:1px 5px;border:1px solid #c8d5e5;border-radius:5px;background:#eef4fb;color:#365b7d}.locked{padding:1px 5px;border-radius:5px;background:#f5f0e8;color:#765c32}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:10px}.photo-card{padding:7px;border:1px solid #d8d8d8;border-radius:6px;background:#fafafa;text-align:center;cursor:pointer}.photo-card:hover{background:#f4f4f4}.thumb{height:145px;display:flex;align-items:center;justify-content:center}.thumb img{max-width:100%;max-height:145px}.filename{display:block;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.card-date{margin-top:2px;color:#777;font-size:11px}.card-caption{margin-top:2px;color:#444;font-size:11px;font-style:italic}.viewer[hidden]{display:none}.viewer{position:fixed;inset:0;z-index:1000;background:#fff;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}.viewer-head{display:flex;align-items:center;gap:7px;padding:7px 10px;border-bottom:1px solid #ddd}.viewer-title{font-size:13px;max-width:22vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-meta{display:flex;gap:5px;justify-content:flex-end;flex:1;overflow:hidden}.meta-chip{padding:3px 7px;border:1px solid #d4d4d4;border-radius:6px;background:#f5f5f5;font-size:11px;white-space:nowrap}.viewer-head button{border:1px solid #ccc;border-radius:5px;background:#fff;padding:5px 8px}.viewer-head button.active{background:#e8eef6}.viewer-head .close{font-size:25px;border:0}.viewer-stage{min-height:0;display:grid;grid-template-columns:46px minmax(0,1fr) 46px;background:#f5f5f5;overflow:hidden}.viewer-stage .nav{border:0;background:transparent;font-size:38px;color:#555}.image-wrap{display:flex;align-items:center;justify-content:center;overflow:hidden;padding:10px;min-width:0;min-height:0}.image-wrap img{max-width:100%;max-height:100%;object-fit:contain}.viewer-stage.actual{overflow:auto}.viewer-stage.actual .image-wrap{overflow:auto;display:block;text-align:center}.viewer-stage.actual .image-wrap img{max-width:none;max-height:none;object-fit:none}.viewer-foot{border-top:1px solid #ddd;padding:7px 10px 12px;overflow:hidden}.viewer-strip{display:flex;gap:5px;overflow-x:auto;padding:2px}.viewer-strip button{flex:0 0 64px;width:64px;height:48px;padding:2px;border:1px solid #ccc;background:#fff}.viewer-strip button.active{border:2px solid #333}.viewer-strip img{width:100%;height:100%;object-fit:contain}.viewer-caption{text-align:center;font-size:12px}.info-panel{position:absolute;top:50px;right:12px;z-index:3;padding:12px 14px;border:1px solid #bbb;border-radius:7px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.18)}.info-panel th{text-align:right;padding-right:10px}@media(max-width:800px){.site-shell{grid-template-columns:1fr}.site-nav{display:none}.content{padding:10px}.gallery{grid-template-columns:repeat(auto-fill,minmax(125px,1fr))}.thumb{height:120px}.thumb img{max-height:120px}.meta-exposure,.meta-aperture,.meta-iso{display:none}}