:root{--color-bg:#fafafa;--color-surface:#fff;--color-gray-100:#f1f2f4;--color-gray-200:#e2e5e9;--color-gray-400:#9ca3af;--color-gray-600:#52586b;--color-gray-900:#12151c;--color-primary:#0099d8;--color-primary-bg:#e3f4fc;--color-primary-border:#a8dff5;--color-secondary:#c9a24b;--color-secondary-bg:#f7efdc;--color-success:#7da789;--color-success-bg:#e7f0e9;--color-warning:#d0a45c;--color-warning-bg:#f6ecda;--color-error:#c97b7b;--color-error-bg:#f5e4e4;--radius:8px;--font-sans:-apple-system, "Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-gray-900);font-family:var(--font-sans);margin:0;font-size:15px;line-height:22px}h1{letter-spacing:-.01em;margin:0 0 12px;font-size:28px;font-weight:700;line-height:36px}h2{margin:0 0 12px;font-size:20px;font-weight:600;line-height:28px}.btn{border-radius:var(--radius);border:1px solid var(--color-gray-200);background:var(--color-surface);color:var(--color-gray-900);cursor:pointer;justify-content:center;align-items:center;padding:10px 16px;font-family:inherit;font-size:15px;line-height:20px;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:#0088c2;border-color:#0088c2}.btn-outline{background:var(--color-primary-bg);border-color:var(--color-primary-border);color:var(--color-primary)}.btn-sm{padding:6px 10px;font-size:13px;line-height:18px}.chip{border:1px solid var(--color-gray-200);background:var(--color-surface);color:var(--color-gray-600);cursor:pointer;border-radius:999px;align-items:center;padding:6px 12px;font-size:13px;line-height:18px;display:inline-flex}.chip[aria-pressed=true]{background:var(--color-primary-bg);border-color:var(--color-primary-border);color:var(--color-primary)}.badge{background:var(--color-gray-100);color:var(--color-gray-600);border-radius:999px;align-items:center;padding:2px 8px;font-size:13px;line-height:18px;display:inline-flex}.badge-new{background:var(--color-secondary-bg);color:var(--color-secondary)}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-error{background:var(--color-error-bg);color:var(--color-error)}.card{background:var(--color-surface);border:1px solid var(--color-gray-200);border-radius:var(--radius);padding:16px}.photo-tile{aspect-ratio:1;cursor:pointer;border:2px solid #0000;border-radius:6px;position:relative;overflow:hidden}.photo-tile img{object-fit:cover;width:100%;height:100%;display:block}.photo-tile.is-selected{border-color:var(--color-primary)}.photo-tile.is-selected:after{content:"";background:#0099d859;position:absolute;inset:0}.photo-tile-video-badge{z-index:1;color:#fff;background:#0000008c;border-radius:4px;padding:1px 6px;font-size:12px;line-height:16px;position:absolute;bottom:4px;right:4px}.selection-bar{background:var(--color-surface);border-top:1px solid var(--color-gray-200);align-items:center;gap:8px;padding:12px 16px;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.selection-bar>*{white-space:nowrap;flex-shrink:0}.label{color:var(--color-gray-600);margin-bottom:4px;font-size:13px;display:block}.field{border-radius:var(--radius);border:1px solid var(--color-gray-200);background:var(--color-surface);width:100%;color:var(--color-gray-900);padding:10px 12px;font-family:inherit;font-size:15px}.field:focus{border-color:var(--color-primary-border);box-shadow:0 0 0 3px var(--color-primary-bg);outline:none}.hint{color:var(--color-gray-400);margin-top:4px;font-size:13px;line-height:18px}[role=alert]{border-radius:var(--radius);background:var(--color-error-bg);color:var(--color-error);padding:10px 12px;font-size:13px}.photo-grid{grid-template-columns:repeat(2,1fr);gap:4px;display:grid}@media (width>=768px){.photo-grid{grid-template-columns:repeat(4,1fr)}}@media (width>=1024px){.photo-grid{grid-template-columns:repeat(6,1fr)}}.form-page{flex-direction:column;gap:12px;max-width:480px;margin:0 auto;padding:16px;display:flex}.slideshow-page{height:100svh;position:relative;overflow:hidden}.slideshow-header{z-index:2;background:var(--color-surface);border-bottom:1px solid var(--color-gray-200);align-items:center;gap:8px;padding:12px 16px;transition:opacity .3s;display:flex;position:absolute;top:0;left:0;right:0}.slideshow-header.is-hidden{opacity:0;pointer-events:none}.slideshow-header .field{width:auto}.slideshow-tag-select{flex:1}.slideshow-image-area{background:var(--color-gray-100);touch-action:pan-y;justify-content:center;align-items:center;height:100%;display:flex;position:relative;overflow:hidden}.slideshow-image-area img,.slideshow-image-area video{object-fit:contain;max-width:100%;max-height:100%}.slideshow-media-layer{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.slideshow-effect-crossfade-in{animation:.9s forwards slideshow-fade-in}.slideshow-effect-crossfade-out{animation:.9s forwards slideshow-fade-out}@keyframes slideshow-fade-in{0%{opacity:0}to{opacity:1}}@keyframes slideshow-fade-out{0%{opacity:1}to{opacity:0}}.slideshow-effect-slide{animation:.8s forwards slideshow-slide-in}@keyframes slideshow-slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.slideshow-effect-kenburns img,.slideshow-effect-kenburns video{animation:5s ease-in-out forwards slideshow-kenburns}@keyframes slideshow-kenburns{0%{transform:scale(1)}to{transform:scale(1.15)}}.slideshow-effect-blur-focus img,.slideshow-effect-blur-focus video{animation:1s forwards slideshow-blur-focus}@keyframes slideshow-blur-focus{0%{filter:blur(20px);opacity:.6}to{filter:blur();opacity:1}}.slideshow-effect-bw-color img,.slideshow-effect-bw-color video{animation:1.2s forwards slideshow-bw-color}@keyframes slideshow-bw-color{0%{filter:grayscale()}to{filter:grayscale(0)}}.slideshow-vignette{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 120px 40px #0000008c}.slideshow-info-label{border-radius:var(--radius);color:#fff;opacity:0;pointer-events:none;background:#00000073;padding:6px 12px;font-size:13px;animation:1s .3s forwards slideshow-fade-in;position:absolute;bottom:16px;left:16px}.slideshow-night-overlay{z-index:50;opacity:0;pointer-events:none;background:#000;transition:opacity 1.2s;position:fixed;inset:0}.slideshow-night-overlay.is-visible{opacity:1}.slideshow-nav-btn{z-index:1;transition:opacity .3s;position:absolute;top:50%;transform:translateY(-50%)}.slideshow-nav-btn.is-hidden{opacity:0;pointer-events:none}.slideshow-nav-prev{left:12px}.slideshow-nav-next{right:12px}.photos-page{padding-bottom:72px}.photos-toolbar{background:var(--color-surface);border-bottom:1px solid var(--color-gray-200);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.photos-toolbar-tabs,.photos-toolbar-actions{align-items:center;gap:8px;display:flex}.photos-filters{flex-wrap:wrap;align-items:center;gap:8px;padding:12px 16px;display:flex}.scan-run-panel{margin:8px 16px}.photos-grid-wrap{padding:4px 16px 16px}.photo-detail-page{flex-direction:column;gap:12px;max-width:640px;margin:0 auto;padding:16px;display:flex}.photo-detail-preview{background:var(--color-gray-100);border-radius:var(--radius);justify-content:center;align-items:center;min-height:40vh;display:flex;overflow:hidden}.photo-detail-preview img,.photo-detail-preview video{object-fit:contain;max-width:100%;max-height:70vh}.photo-detail-meta{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.photo-detail-tags{align-items:center;gap:6px;display:flex}.mobile-upload-page{flex-direction:column;gap:12px;max-width:480px;margin:0 auto;padding:16px;display:flex}.mobile-upload-preview-tile{position:relative}.mobile-upload-remove-btn{z-index:1;padding:2px 8px;line-height:16px;position:absolute;top:4px;right:4px}.stack{flex-direction:column;gap:12px;display:flex}.stack-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stack-row .field{width:auto}.filter-separator{color:var(--color-gray-400)}.tag-modal-backdrop{z-index:10;background:#12151c66;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.tag-modal{flex-direction:column;gap:12px;width:100%;max-width:420px;max-height:90vh;display:flex;overflow-y:auto}.tag-modal-thumbs{flex-wrap:wrap;gap:4px;display:flex}.tag-modal-thumb{border-radius:6px;width:48px;height:48px;overflow:hidden}.tag-modal-thumb img{object-fit:cover;width:100%;height:100%}.tag-modal-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tag-modal-chip-remove{cursor:pointer;margin-left:4px}.tag-modal-add{gap:6px;display:flex}.tag-modal-add .field{flex:1}.tag-modal-actions{justify-content:flex-end;gap:8px;display:flex}
