:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Noto Sans SC",sans-serif;color:#272521;background:#f5f1eb;--ink:#272521;--muted:#817b72;--line:#ded7cc;--card:#fffdf9;--accent:#b65d45;--danger:#a33b2e}*{box-sizing:border-box}body{margin:0}.topbar{display:flex;align-items:flex-end;justify-content:space-between;padding:28px 5vw 20px;border-bottom:1px solid var(--line);gap:20px}.eyebrow{font-size:11px;letter-spacing:.16em;color:var(--muted)}h1,h2{font-family:Georgia,serif;font-weight:400}h1{font-size:32px;margin:8px 0 0}h2{margin:4px 0;font-size:28px}.actions,.view-tabs,.album-list{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.button{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:10px 15px;border-radius:999px;cursor:pointer;font:inherit}.button:hover,.tab:hover,.album-chip:hover{border-color:#a79c8e}.button.primary{background:var(--ink);color:white;border-color:var(--ink)}.button.ghost{background:transparent;border:0;color:var(--muted)}.button.small{padding:7px 11px;font-size:13px}main{max-width:1440px;margin:0 auto;padding:26px 5vw 42px}.login{max-width:520px;margin:8vh auto;background:var(--card);padding:34px;border:1px solid var(--line);border-radius:18px}.login h2{font-size:32px;line-height:1.15}.login form{display:grid;gap:10px;margin-top:28px}.login input,.toolbar input,.photo-form input,.photo-form textarea,.album-control select{border:1px solid var(--line);background:white;border-radius:10px;padding:12px;font:inherit}.view-tabs{border-bottom:1px solid var(--line);padding-bottom:14px}.tab,.album-chip{border:1px solid transparent;background:transparent;padding:8px 10px;border-radius:999px;cursor:pointer;color:var(--muted);font:inherit;font-size:14px}.tab.active,.album-chip.selected{background:var(--ink);color:white;border-color:var(--ink)}.toolbar{display:flex;align-items:center;gap:14px;margin:18px 0}.toolbar input{flex:1;max-width:680px}.muted{color:var(--muted);font-size:13px}.status{min-height:24px;color:var(--muted);font-size:13px;margin-bottom:10px}.error{color:var(--danger);min-height:18px;font-size:13px}.album-panel{border:1px solid var(--line);background:#faf7f1;border-radius:16px;padding:16px;margin:0 0 20px}.album-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.album-heading h2{font-size:22px}.album-chip span{font-size:11px;opacity:.75}.gallery{columns:4 220px;column-gap:16px}.card{break-inside:avoid;margin:0 0 16px;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;transition:transform .16s,box-shadow .16s}.card:hover{transform:translateY(-2px);box-shadow:0 8px 22px #51442b18}.card-image{position:relative}.card img{display:block;width:100%;height:auto;background:#e9e3da}.heart,.analysis-mark{position:absolute;border:0;border-radius:50%;width:34px;height:34px;display:grid;place-items:center}.heart{right:9px;top:9px;background:#fffdf9e6;color:var(--muted);font-size:20px;cursor:pointer}.heart.on{color:var(--accent)}.analysis-mark{left:9px;top:9px;background:#272521bf;color:white;font-size:15px}.card-copy{padding:12px}.card-title{font:18px Georgia,serif}.card-meta{color:var(--muted);font-size:12px;margin-top:5px}.empty{border:1px dashed var(--line);border-radius:16px;padding:46px 24px;text-align:center;background:#faf7f1;color:var(--muted)}.empty h2{color:var(--ink)}dialog{width:min(1180px,94vw);max-height:92vh;overflow:auto;border:0;border-radius:18px;padding:24px;background:var(--card);color:var(--ink)}dialog::backdrop{background:#27252199}.close{float:right;border:0;background:none;font-size:30px;cursor:pointer;color:var(--muted)}.detail{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:28px;clear:both}.detail-image{background:#eee8df;align-self:start}.detail-image img{display:block;width:100%;max-height:76vh;object-fit:contain}.detail-side{min-width:0}.photo-form{display:grid;gap:11px;margin:15px 0}.photo-form label{display:grid;gap:6px;font-size:13px;color:var(--muted)}.photo-form textarea{min-height:82px;resize:vertical}.photo-form .check{display:flex;align-items:center;gap:8px;color:var(--ink)}.collection-box,.analysis,.comments{border-top:1px solid var(--line);padding-top:16px;margin-top:19px}.collection-box h3,.analysis h3,.comments h3{font:20px Georgia,serif;margin:0 0 11px}.album-control{display:flex;gap:8px}.album-control select{flex:1;min-width:0}.membership-list,.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.membership,.tags span{background:#f0ebe3;border:1px solid var(--line);padding:5px 8px;border-radius:999px;font-size:12px}.membership button,.comment-actions button,.text-button{border:0;background:none;color:var(--muted);cursor:pointer}.membership button{font-size:16px;line-height:10px;margin-left:2px}.text-button{padding:10px 0;font:inherit;text-decoration:underline}.analysis{background:#fbf5ee;padding:15px;border-radius:12px;border-top:0}.analysis h3 span{color:var(--accent)}.analysis p{font-size:14px;line-height:1.6;margin:7px 0}.analysis.pending{background:#f7f4ee;color:var(--muted)}.analysis details{font-size:13px;margin-top:10px}.danger-button{margin-top:18px;border:0;background:none;color:var(--danger);padding:4px 0;cursor:pointer;font:inherit}.comment{padding:13px 0;border-bottom:1px solid var(--line)}.comment b{font-size:13px}.comment time{color:var(--muted);font-size:11px;margin-left:8px}.comment p{margin:7px 0;line-height:1.55}.comment-actions{float:right;display:flex;gap:8px}.comment-actions button{font-size:12px}.comment-form{display:flex;gap:8px;margin-top:14px}.comment-form input{min-width:0;flex:1;padding:10px;border:1px solid var(--line);border-radius:9px;font:inherit}@media(max-width:700px){.topbar{align-items:flex-start;flex-direction:column;padding-top:22px}.actions{width:100%;flex-wrap:nowrap;overflow:auto;padding-bottom:2px}.actions .button{white-space:nowrap}.view-tabs{overflow:auto;flex-wrap:nowrap}.tab{white-space:nowrap}.toolbar{margin:14px 0}.toolbar input{width:100%}.detail{display:block}.detail-side{padding-top:18px}.gallery{columns:2 150px}.album-control{align-items:stretch}.album-control .button{padding:8px 10px}dialog{padding:18px}.detail-image img{max-height:58vh}}
