:root{--primary: #e07a5f;--primary-deep: #9a442d;--secondary: #f4a261;--bg: #fff8f0;--ink: #3d405b;--muted: #6f7288;--line: rgb(224 122 95 / 14%);--card: #ffffff;--icon-wash: rgb(224 122 95 / 12%);--danger: #ba1a1a;--shadow: 0 2px 8px -1px rgb(224 122 95 / 8%), 0 1px 3px rgb(61 64 91 / 4%);--shadow-card: 0 8px 24px -4px rgb(224 122 95 / 12%), 0 2px 6px -1px rgb(61 64 91 / 5%);--green: var(--primary);color:var(--ink);background:var(--bg);font-family:Nunito Sans,Apple SD Gothic Neo,Noto Sans KR,sans-serif}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}a{color:inherit;text-decoration:none}button.icon,button.primary,button.danger,button.ghost,button.chip{border-radius:999px}button.icon{display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;background:transparent;color:var(--primary-deep);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .12s ease,transform .12s ease}button.icon:hover{background:#e07a5f1f}button.icon:active,button.icon.pressed{background:#e07a5f38;transform:scale(.9)}button.primary{border:0;background:var(--primary);color:#fff;padding:12px 18px;box-shadow:0 6px 16px #e07a5f47}button.danger{border:1px solid #e7c8c8;background:#fff6f6;color:var(--danger);padding:10px 14px}button.ghost,button.chip{border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px}button.chip.on{border-color:var(--primary);background:var(--primary);color:#fff}button:disabled{opacity:.35}.topbar{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:88px 1fr 88px;align-items:center;min-height:56px;padding:env(safe-area-inset-top) 8px 0;background:#fff8f0eb;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar h1{margin:0;overflow:hidden;font-family:Plus Jakarta Sans,Apple SD Gothic Neo,sans-serif;font-size:17px;font-weight:700;text-align:center;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{display:flex;justify-content:flex-end}.topbar.dark{background:#111;border-bottom-color:transparent;color:#fff}.topbar.dark button.icon{color:#fff}.topbar.dark button.icon:hover{background:#ffffff1f}.topbar.dark button.icon:active,.topbar.dark button.icon.pressed{background:#ffffff3d}.page{width:min(960px,100%);margin:0 auto;padding:20px 16px 40px}.stack{display:grid;gap:12px}.banner,.hint,.muted{color:var(--muted);font-size:14px}.panel{display:grid;gap:12px;padding:18px 16px;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.panel h2,.login-card h1{margin:0;font-family:Plus Jakarta Sans,Apple SD Gothic Neo,sans-serif;font-size:15px;font-weight:700}.login-screen{display:grid;align-content:center;justify-items:center;gap:16px;min-height:100dvh;padding:24px 16px 48px}.login-card{display:grid;gap:14px;width:min(100%,400px);padding:28px 22px;background:var(--card);border-radius:24px;box-shadow:var(--shadow)}.login-card h1{font-size:28px;text-align:center}.kind-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.kind-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:140px;padding:22px 12px;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-card);transition:transform .14s ease,box-shadow .14s ease}.kind-card:active{transform:scale(.98)}.kind-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:999px;background:var(--icon-wash);color:var(--primary-deep)}.kind-card strong{font-family:Plus Jakarta Sans,Apple SD Gothic Neo,sans-serif;font-size:16px;font-weight:700}.album-thumb .missing{display:block;width:100%;height:100%}.album-thumb img,.photo-grid img{display:block;width:100%;height:100%;object-fit:cover}.album-copy{display:flex;justify-content:space-between;gap:8px;padding:12px 14px 14px}.album-copy strong{font-size:16px}.album-count{color:var(--muted);font-size:13px}.album-list,.menu,.name-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.album-row,.name-list li{display:grid;align-items:center;background:var(--card);border-radius:16px;box-shadow:var(--shadow)}.album-row{grid-template-columns:72px 1fr;gap:12px;padding:8px 14px 8px 8px}.album-thumb{width:72px;height:72px;overflow:hidden;border-radius:12px;background:#ddd6cc}.name-list li{display:grid;grid-template-columns:1fr auto;gap:12px;min-height:56px;padding:8px 14px}.menu-link{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:52px;padding:10px 0;background:transparent;border-radius:0;box-shadow:none;border-top:1px solid var(--line);font-family:Plus Jakarta Sans,Apple SD Gothic Neo,sans-serif;font-weight:600}.menu-link span[aria-hidden=true]:last-child{color:var(--muted);font-size:20px}.menu-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--icon-wash);color:var(--primary-deep)}.panel .menu li:first-child .menu-link{border-top:0;padding-top:0}input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #e07a5f26}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}.photo-grid a{aspect-ratio:1;overflow:hidden;border-radius:12px;background:#ddd6cc}.viewer-page{min-height:100dvh;background:#111;color:#fff}.viewer{position:relative;min-height:calc(100dvh - 56px)}.viewer-image{width:100%;height:calc(100dvh - 56px);object-fit:contain;background:#111}.viewer-caption,.viewer-controls{position:absolute;left:0;right:0;display:flex;justify-content:center}.viewer-caption{bottom:84px;flex-direction:column;gap:4px;padding:0 20px;text-align:center;text-shadow:0 1px 8px rgb(0 0 0 / 70%)}.viewer-caption p{margin:0}.viewer-controls{bottom:calc(16px + env(safe-area-inset-bottom));gap:8px}.viewer-controls button{border:0;border-radius:999px;background:#ffffff29;color:#fff;padding:10px 16px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.empty{padding:28px 16px;color:var(--muted);text-align:center;background:var(--card);border-radius:16px}.row,.chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}label{display:grid;gap:6px;font-size:14px}input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}.error{margin:0;color:var(--danger)}.dialog-backdrop{position:fixed;inset:0;z-index:3;display:grid;align-items:end;background:#00000073}.dialog{display:grid;gap:12px;max-height:85vh;padding:18px 16px calc(16px + env(safe-area-inset-bottom));overflow:auto;background:var(--bg);border-radius:20px 20px 0 0}details.panel summary{cursor:pointer;font-weight:650}.missing{background:#ddd6cc}
