:root{--color-bg: #f9fafb;--color-surface: #ffffff;--color-surface-muted: #f3f4f6;--color-border: #e5e7eb;--color-border-strong: #d1d5db;--color-text: #111827;--color-text-muted: #6b7280;--color-text-subtle: #9ca3af;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-soft: #eff6ff;--color-primary-text: #1d4ed8;--color-success-soft: #ecfdf5;--color-success-text: #047857;--color-warn-soft: #fffbeb;--color-warn-border: #fde68a;--color-warn-text: #92400e;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-soft: #fef2f2;--color-danger-border: #fecaca;--color-danger-text: #b91c1c;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#333;background:#fafafa;line-height:1.6}a{text-decoration:none;color:inherit}button{cursor:pointer;border:none;font-size:inherit}.navbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#fff;border-bottom:1px solid #eee;position:sticky;top:0;z-index:100}.nav-logo{font-size:1.5rem;font-weight:700;color:var(--color-primary)}.nav-links{display:flex;gap:1.5rem;align-items:center}.nav-links a{color:#555;font-weight:500;transition:color .2s}.nav-links a:hover{color:var(--color-primary)}.lang-btn{padding:.3rem .8rem;background:#f0f0f0;border-radius:4px;font-size:.85rem;font-weight:600}.lang-btn:hover{background:#e0e0e0}.main-content{max-width:1200px;margin:0 auto;padding:2rem;min-height:calc(100vh - 160px)}.hero{text-align:center;padding:4rem 1rem}.hero h1{font-size:2.5rem;color:#1a1a1a;margin-bottom:1rem}.hero p{font-size:1.2rem;color:#666;margin-bottom:2rem}.features{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;padding:2rem 0}.feature{text-align:center;padding:2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f}.feature h3{margin-bottom:.5rem;color:var(--color-primary)}.btn{display:inline-block;padding:.8rem 1.5rem;border-radius:8px;font-weight:600;transition:background .2s}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-secondary{background:#f0f0f0;color:#333}.btn-secondary:hover{background:#e0e0e0}.card{background:#fff;border-radius:12px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 8px #0000000f}.center{display:flex;justify-content:center;align-items:center;min-height:60vh}.login-form{width:100%;max-width:400px;display:flex;flex-direction:column;gap:1rem;text-align:center}.login-form input{padding:.8rem;border:1px solid #ddd;border-radius:8px;font-size:1rem}.login-form input:focus{outline:none;border-color:var(--color-primary)}.login-form .error{color:#dc2626;font-size:.9rem}.login-form small{color:var(--color-text-muted)}.text-link{color:var(--color-primary);font-weight:600}.text-link:hover{text-decoration:underline}.download-page{text-align:center;padding:3rem 0}.download-page h1{margin-bottom:2rem}.download-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;max-width:720px;margin:0 auto}.pricing-page{text-align:center;padding:3rem 0}.pricing-page h1{margin-bottom:1.5rem}.billing-toggle{display:flex;justify-content:center;gap:0;margin-bottom:2rem}.billing-toggle button{padding:.6rem 1.5rem;border:2px solid var(--color-primary);background:#fff;color:var(--color-primary);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s}.billing-toggle button:first-child{border-radius:8px 0 0 8px}.billing-toggle button:last-child{border-radius:0 8px 8px 0;border-left:none}.billing-toggle button.active{background:var(--color-primary);color:#fff}.pricing-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.pricing-card{display:flex;flex-direction:column;align-items:center;gap:1rem}.pricing-card .price{font-size:2rem;font-weight:700;color:var(--color-primary)}.pricing-card .price span{font-size:1rem;font-weight:400;color:#999}.pricing-card ul{list-style:none;text-align:left}.pricing-card li{padding:.3rem 0}.pricing-card li:before{content:"✓ ";color:var(--color-primary);font-weight:700}.mypage{max-width:600px;margin:0 auto;padding:2rem 0}.mypage h1{margin-bottom:1.5rem}.card-links{display:flex;gap:1rem;margin-bottom:1rem}.card-links button{padding:.8rem 1.2rem;background:#fff;border:1px solid #ddd;border-radius:8px;flex:1}.card-links button:hover{background:#f5f5f5}.legal-page{max-width:800px;margin:0 auto;padding:2rem 0}.legal-page h1{margin-bottom:1rem}.legal-page h2{margin-top:2rem;margin-bottom:.5rem;color:#333}.legal-page p,.legal-page li{color:#555;margin-bottom:.5rem}.legal-page ul{padding-left:1.5rem}.footer{text-align:center;padding:2rem;border-top:1px solid #eee;background:#fff}.footer-links{display:flex;justify-content:center;gap:2rem;margin-bottom:.5rem}.footer-links a{color:#999;font-size:.9rem}.footer-links a:hover{color:var(--color-primary)}.copyright{color:#ccc;font-size:.85rem}.btn-large{padding:1rem 2.5rem;font-size:1.1rem}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}.feature-icon{color:var(--color-primary);margin-bottom:1rem;display:flex;justify-content:center}.how-section{text-align:center;padding:4rem 0}.how-section h2{font-size:1.8rem;margin-bottom:2rem;color:#1a1a1a}.how-steps{display:flex;justify-content:center;align-items:center;gap:1rem}.how-step{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 8px #0000000f;max-width:250px}.step-number{width:40px;height:40px;background:var(--color-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;margin:0 auto 1rem}.step-arrow{font-size:1.5rem;color:#ccc}.how-step h3{color:#333;margin-bottom:.5rem}.how-step p{color:#666;font-size:.95rem}.bottom-cta{text-align:center;padding:4rem 1rem;background:#fff;border-radius:16px;margin:2rem 0;box-shadow:0 2px 8px #0000000f}.bottom-cta h2{font-size:1.8rem;margin-bottom:.5rem;color:#1a1a1a}.bottom-cta p{color:#666;margin-bottom:1.5rem}.page-subtitle{color:#666;margin-bottom:2rem}.download-card{display:flex;flex-direction:column;align-items:center;gap:.8rem;text-align:center;word-break:keep-all}.download-icon{color:var(--color-primary);display:flex;justify-content:center;margin-bottom:var(--space-2)}.download-card small{color:var(--color-text-muted)}.download-steps{color:var(--color-text-muted);font-size:.95rem;margin-bottom:var(--space-4)}.download-next{color:var(--color-text-muted);line-height:1.5}.notfound-page{text-align:center;padding:var(--space-6) var(--space-4)}.notfound-actions{display:flex;gap:var(--space-3);justify-content:center;flex-wrap:wrap;margin-top:var(--space-4)}.ios-notice{color:#999;margin-top:2rem;font-size:.9rem}.billing-page{max-width:800px;margin:0 auto;padding:2rem 0}.billing-page h1{margin-bottom:1.5rem}.billing-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000000f;margin-bottom:1.5rem}.billing-table th{background:#f5f5f5;padding:.8rem 1rem;text-align:left;font-weight:600;color:#555}.billing-table td{padding:.8rem 1rem;border-top:1px solid #eee}.badge{display:inline-block;padding:.2rem .6rem;border-radius:4px;font-size:.85rem;font-weight:600}.badge-paid{background:#dcfce7;color:#16a34a}.badge-refunded{background:#fee2e2;color:#dc2626}.subscription-page{max-width:600px;margin:0 auto;padding:2rem 0}.subscription-page h1{margin-bottom:1.5rem}.subscription-page .btn{display:block;width:100%;text-align:center;margin-bottom:.8rem}.plan-name{font-size:1.5rem;font-weight:700;color:var(--color-primary)}.cancel-confirm{border:2px solid #fca5a5;background:#fef2f2}.cancel-buttons{display:flex;gap:1rem;margin-top:1rem}.cancel-buttons .btn{flex:1}.empty-state{text-align:center;padding:3rem;color:#999}.web-upload-page{max-width:600px;margin:0 auto;padding:2rem 0}.web-upload-header{text-align:center;margin-bottom:2rem}.web-upload-header h1{font-size:1.8rem;color:#1a1a1a;margin-bottom:.8rem}.web-upload-meta{display:flex;justify-content:center;gap:1.5rem;color:#666;font-size:.95rem}.web-upload-remaining strong{color:var(--color-primary)}.web-upload-countdown{color:#f59e0b;font-weight:600}.web-upload-loading{text-align:center;padding:4rem;color:#999;font-size:1.1rem}.web-upload-error{text-align:center;padding:3rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f}.web-upload-error-icon{width:60px;height:60px;background:#fee2e2;color:#dc2626;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;margin:0 auto 1rem}.web-upload-error h2{color:#dc2626;margin-bottom:.5rem}.web-upload-error p{color:#666}.web-upload-success{text-align:center;padding:2rem;background:#dcfce7;border-radius:12px;margin-bottom:1.5rem}.web-upload-success-icon{width:50px;height:50px;background:#16a34a;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;margin:0 auto .8rem}.web-upload-success h2{color:#16a34a;margin-bottom:.3rem}.web-upload-success p{color:#555}.web-upload-name{margin-bottom:1.5rem}.web-upload-name label{display:block;font-weight:600;color:#333;margin-bottom:.4rem;font-size:.95rem}.web-upload-name input{width:100%;padding:.8rem;border:1px solid #ddd;border-radius:8px;font-size:1rem}.web-upload-name input:focus{outline:none;border-color:var(--color-primary)}.web-upload-dropzone{margin-bottom:1.5rem}.web-upload-dropzone-label{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2.5rem;border:2px dashed #ccc;border-radius:12px;background:#fafafa;cursor:pointer;transition:border-color .2s,background .2s}.web-upload-dropzone-label:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.web-upload-dropzone-icon{width:50px;height:50px;background:var(--color-primary-soft);color:var(--color-primary);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:700;margin-bottom:.8rem}.web-upload-dropzone-label p{color:#333;font-weight:600;margin-bottom:.3rem}.web-upload-dropzone-label small{color:#999}.web-upload-file-list{margin-bottom:2rem}.web-upload-file-list h3{margin-bottom:.8rem;color:#333}.web-upload-file-item{background:#fff;border:1px solid #eee;border-radius:8px;padding:.8rem 1rem;margin-bottom:.5rem}.web-upload-file-info{display:flex;justify-content:space-between;align-items:center}.web-upload-file-name{font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:70%}.web-upload-file-size{color:#999;font-size:.85rem}.web-upload-file-status{display:flex;align-items:center;margin-top:.3rem}.web-upload-remove-btn{background:#f5f5f5;color:#999;border:none;border-radius:4px;padding:.2rem .6rem;font-size:.85rem;cursor:pointer}.web-upload-remove-btn:hover{background:#fee2e2;color:#dc2626}.web-upload-spinner{color:var(--color-primary);font-size:.85rem;font-weight:600}.web-upload-done-badge{background:#dcfce7;color:#16a34a;padding:.15rem .5rem;border-radius:4px;font-size:.85rem;font-weight:600}.web-upload-error-badge{background:#fee2e2;color:#dc2626;padding:.15rem .5rem;border-radius:4px;font-size:.85rem;font-weight:600}.web-upload-progress{height:4px;background:#e5e7eb;border-radius:2px;margin-top:.5rem;overflow:hidden}.web-upload-progress-bar{height:100%;background:var(--color-primary);border-radius:2px;transition:width .3s}.web-upload-file-error{color:#dc2626;font-size:.85rem;margin-top:.3rem}.web-upload-file-done{border-color:#bbf7d0;background:#f0fdf4}.web-upload-file-error{border-color:#fecaca;background:#fef2f2}.web-upload-start-btn{display:block;width:100%;margin-top:1rem;text-align:center}.web-upload-app-banner{text-align:center;padding:1.5rem;background:var(--color-primary-soft);border-radius:12px;margin-top:2rem;border:1px solid var(--color-primary-soft)}.web-upload-app-banner-text{color:#555;margin-bottom:1rem}.web-upload-app-links{display:flex;justify-content:center;gap:.8rem}@media(max-width:768px){.features,.download-cards,.pricing-cards{grid-template-columns:1fr}.hero h1{font-size:1.8rem}.navbar{padding:.8rem 1rem}.nav-links{gap:.8rem;font-size:.9rem}.how-steps{flex-direction:column}.step-arrow{transform:rotate(90deg)}.how-step{max-width:100%}.web-upload-meta{flex-direction:column;gap:.3rem}.web-upload-header h1{font-size:1.4rem}.web-upload-app-links{flex-direction:column;align-items:center}.search-date-range{flex-direction:column}.search-date-separator{display:none}.search-results-grid,.shared-album-grid{grid-template-columns:repeat(2,1fr)}.shared-album-meta{flex-direction:column;gap:.3rem}.remote-browse-layout{flex-direction:column}.remote-folder-panel{max-width:100%;max-height:250px}.remote-photo-grid{grid-template-columns:repeat(2,1fr)}}.search-page{max-width:900px;margin:0 auto;padding:2rem 0}.search-page h1{margin-bottom:.5rem}.search-filters{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.search-field label{display:block;font-weight:600;color:#333;margin-bottom:.3rem;font-size:.9rem}.search-field input[type=text],.search-field input[type=date]{width:100%;padding:.7rem;border:1px solid #ddd;border-radius:8px;font-size:1rem}.search-field input:focus{outline:none;border-color:var(--color-primary)}.search-date-range{display:flex;align-items:flex-end;gap:.8rem}.search-date-range .search-field{flex:1}.search-date-separator{color:#999;font-size:1.2rem;padding-bottom:.7rem}.search-rating-stars{display:flex;align-items:center;gap:.3rem}.search-star-btn{background:none;border:none;font-size:1.6rem;color:#ccc;cursor:pointer;padding:0;line-height:1;transition:color .15s}.search-star-btn.active,.search-star-btn:hover{color:#f59e0b}.search-rating-label{margin-left:.5rem;color:#666;font-size:.9rem}.search-actions{display:flex;gap:.8rem}.search-error{background:#fef2f2;color:#dc2626;padding:1rem;border-radius:8px;margin-bottom:1.5rem;text-align:center}.search-results-section{margin-top:1rem}.search-results-section h2{margin-bottom:1rem;color:#333}.search-results-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.search-result-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px #0000000f;transition:box-shadow .2s}.search-result-card:hover{box-shadow:0 4px 16px #0000001f}.search-result-thumb{width:100%;aspect-ratio:1;overflow:hidden;background:#f0f0f0}.search-result-thumb img{width:100%;height:100%;object-fit:cover}.search-result-info{padding:.6rem .8rem;display:flex;flex-direction:column;gap:.15rem}.search-result-name{font-size:.85rem;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-date{font-size:.8rem;color:#999}.search-result-rating{font-size:.8rem;color:#f59e0b}.shared-album-page{max-width:900px;margin:0 auto;padding:2rem 0}.shared-album-loading{text-align:center;padding:4rem;color:#999;font-size:1.1rem}.shared-album-error{text-align:center;padding:3rem}.shared-album-error h2{color:#dc2626;margin-bottom:.5rem}.shared-album-error p{color:#666}.shared-album-header{text-align:center;margin-bottom:2rem}.shared-album-header h1{margin-bottom:.5rem}.shared-album-desc{color:#666;margin-bottom:1rem}.shared-album-meta{display:flex;justify-content:center;gap:1.5rem;color:#999;font-size:.9rem}.shared-album-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.shared-album-photo-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px #0000000f;transition:box-shadow .2s}.shared-album-photo-card:hover{box-shadow:0 4px 16px #0000001f}.shared-album-thumb{width:100%;aspect-ratio:1;overflow:hidden;background:#f0f0f0}.shared-album-thumb img{width:100%;height:100%;object-fit:cover}.shared-album-photo-info{padding:.6rem .8rem;display:flex;flex-direction:column;gap:.15rem}.shared-album-photo-name{font-size:.85rem;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-album-photo-date{font-size:.8rem;color:#999}.remote-browse-page{max-width:1100px;margin:0 auto;padding:2rem 0}.remote-browse-page h1{margin-bottom:.5rem}.remote-status-bar{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.remote-status-indicator{display:flex;align-items:center;gap:.5rem;white-space:nowrap}.remote-status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.remote-status-label{font-weight:600;font-size:.9rem}.remote-status-message{color:#666;font-size:.9rem}.remote-connect-form{margin-bottom:1.5rem}.remote-connect-form h3{margin-bottom:.5rem}.remote-connect-hint{color:#666;font-size:.9rem;margin-bottom:1rem}.remote-connect-input-row{display:flex;gap:.8rem}.remote-connect-input-row input{flex:1;padding:.7rem;border:1px solid #ddd;border-radius:8px;font-size:1rem}.remote-connect-input-row input:focus{outline:none;border-color:var(--color-primary)}.remote-connecting{text-align:center;padding:3rem;margin-bottom:1.5rem}.remote-connecting-spinner{width:36px;height:36px;border:3px solid #e5e7eb;border-top-color:var(--color-primary);border-radius:50%;margin:0 auto 1rem;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.remote-connecting p{color:#666}.remote-browse-layout{display:flex;gap:1.5rem;align-items:flex-start}.remote-folder-panel{max-width:280px;min-width:220px;flex-shrink:0;max-height:calc(100vh - 280px);overflow-y:auto}.remote-folder-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.remote-folder-header h3{margin:0}.remote-folder-tree{display:flex;flex-direction:column}.remote-folder-empty{color:#999;font-size:.9rem;padding:.5rem}.remote-folder-item{display:flex;flex-direction:column}.remote-folder-btn{display:flex;align-items:center;gap:.3rem;width:100%;background:none;border:none;padding:.4rem .5rem;border-radius:6px;cursor:pointer;text-align:left;font-size:.9rem;color:#333;transition:background .15s}.remote-folder-btn:hover{background:var(--color-primary-soft)}.remote-folder-btn.selected{background:var(--color-primary-soft);font-weight:600;color:var(--color-primary)}.remote-folder-icon{width:1rem;text-align:center;flex-shrink:0;color:#999}.remote-folder-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remote-folder-count{color:#999;font-size:.8rem;flex-shrink:0}.remote-photo-panel{flex:1;min-width:0}.remote-photos-loading{text-align:center;padding:3rem;color:#999}.remote-photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.remote-photo-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px #0000000f;transition:box-shadow .2s}.remote-photo-card:hover{box-shadow:0 4px 16px #0000001f}.remote-photo-thumb{width:100%;aspect-ratio:1;overflow:hidden;background:#f0f0f0}.remote-photo-thumb img{width:100%;height:100%;object-fit:cover}.remote-photo-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:#aaa;text-align:center;padding:.5rem}.remote-photo-info{padding:.5rem .7rem;display:flex;flex-direction:column;gap:.1rem}.remote-photo-name{font-size:.8rem;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remote-photo-size{font-size:.75rem;color:#999}
