.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:2.5rem;width:100%;max-width:400px;box-shadow:0 4px 14px var(--overlay-primary-30)}.login-brand-logo{width:100%;max-height:72px;object-fit:contain;margin-bottom:.75rem}.login-card h1{font-size:1.5rem;margin-bottom:.25rem}.login-card h2{font-size:1rem;color:var(--text-muted);margin-bottom:1.5rem;font-weight:400}.login-card form button[type=submit]{width:100%;background:var(--primary);color:var(--foreground);border-color:var(--primary);padding:.625rem;font-size:1rem;margin-top:.5rem}.login-card form button[type=submit]:hover{background:var(--primary-hover)}.login-card .error,.login-card .message{margin-top:1rem;font-size:.875rem}.login-card .message{color:var(--success)}.login-links{margin-top:1rem;display:flex;gap:1rem;justify-content:center}.link-btn{background:none;border:none;color:var(--primary);padding:0;font-size:.8125rem;text-decoration:underline}.link-btn:hover{background:none;color:var(--primary-hover)}.support-mail-link{display:inline-flex;justify-content:center;width:100%;margin-top:1rem;font-size:.75rem;color:var(--accent);text-decoration:none}.support-mail-link:hover{text-decoration:underline}.upload-page{min-height:100vh}.app-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:0 2px 8px var(--overlay-primary-30)}.header-left{display:flex;align-items:center;gap:.75rem}.brand-logo-full{height:42px;width:auto;object-fit:contain}.app-header h1{font-size:1.125rem;display:flex;align-items:center;gap:.5rem}.version-badge{font-size:.6875rem;font-weight:500;padding:.125rem .4rem;border-radius:4px;background:var(--accent);color:var(--foreground);letter-spacing:.02em}.header-right{display:flex;align-items:center;gap:1rem}.contact-btn{display:inline-flex;align-items:center;font-size:.8125rem;font-weight:600;padding:.375rem .75rem;border-radius:var(--radius);border:1px solid var(--secondary);color:var(--primary);background:var(--bg-changed)}.contact-btn:hover{background:var(--overlay-secondary-30)}.user-email{color:var(--text-muted);font-size:.875rem}.sign-out-btn{font-size:.8125rem;padding:.375rem .75rem}.app-main{max-width:800px;margin:2rem auto;padding:0 1.5rem}.steps{display:flex;gap:.5rem;margin-bottom:2rem;font-size:.8125rem;color:var(--text-muted)}.steps span{padding:.375rem .75rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.steps span.active{background:var(--primary);color:var(--foreground);border-color:var(--primary)}.steps span.done{background:var(--bg-changed);color:var(--primary);border-color:var(--secondary)}.site-list{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.site-btn{text-align:left;padding:.75rem 1rem;display:flex;justify-content:space-between;align-items:center}.site-btn.new-site{border-style:dashed;color:var(--primary);font-weight:500}.site-coords{font-size:.75rem;color:var(--text-muted)}.coord-row{display:flex;gap:1rem}.coord-row label{flex:1}.hint{display:block;font-size:.75rem;margin-top:.25rem;font-weight:400}.select-folder-btn{padding:.75rem 1.5rem;font-size:1rem;background:var(--primary);color:var(--foreground);border-color:var(--primary)}.select-folder-btn:hover{background:var(--primary-hover)}.upload-mode-tabs{display:inline-flex;gap:.25rem;margin-top:1rem;padding:.25rem;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.upload-mode-tab{background:transparent;color:var(--text-muted);border:1px solid transparent;border-radius:6px;padding:.6rem 1rem;font-size:.875rem;font-weight:600}.upload-mode-tab:hover{background:var(--bg-neutral);color:var(--text)}.upload-mode-tab.active{background:var(--bg);color:var(--primary);border-color:var(--border)}.upload-mode-state{margin-top:.5rem;color:var(--text-muted);font-size:.8125rem}.file-summary{margin-top:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.file-summary table{width:100%;margin:1rem 0}.file-summary td{padding:.25rem .75rem;font-size:.875rem}.file-summary td.count{text-align:right;font-weight:600;width:60px}.file-summary td.note{color:var(--text-muted);font-size:.75rem}.file-range{margin-top:1rem;font-size:.875rem}.file-range p{margin:.25rem 0}.overall-progress{margin-bottom:1.5rem}.overall-progress p{margin-top:.5rem;font-size:.875rem}.upload-speed-line{color:var(--text-muted);display:flex;flex-wrap:wrap;gap:.25rem;align-items:center}.upload-speed-line strong{color:var(--text);font-weight:600}.upload-speed-sep{color:var(--border);padding:0 .25rem}.upload-stalled{color:var(--accent);font-weight:500}.file-list{position:relative;height:60vh;overflow-y:auto;contain:layout paint}.file-list-inner{position:relative;width:100%}.file-row-shell{position:absolute;top:0;left:0;width:100%;padding-bottom:.25rem}.file-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:4px;font-size:.8125rem}.file-row.done{border-color:var(--secondary);background:var(--bg-changed)}.file-row.skipped{border-color:var(--border);background:var(--bg-neutral);opacity:.7}.file-row.error{border-color:var(--error);background:var(--bg-error)}.file-row.retrying{border-color:var(--accent);background:var(--bg-neutral)}.retry-status{color:var(--accent);font-size:.75rem}.retry-button{margin:.75rem 0;padding:.5rem 1.25rem;background:var(--error);color:var(--foreground);border:none;border-radius:var(--radius, 6px);font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s}.retry-button:hover{background:#8f1c17}.file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:1rem}.file-status{flex-shrink:0;display:flex;align-items:center;gap:.5rem}.summary-box{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);padding:2rem}.summary-box.success{border-color:var(--success)}.summary-box.error{border-color:var(--error)}.summary-box.warning{border-color:var(--warning)}.summary-table{margin:1.5rem 0;width:100%}.summary-table td{padding:.375rem .75rem;font-size:.875rem}.summary-table tr.error td{color:var(--error)}.missing-list{margin-top:.5rem;padding-left:1.5rem;font-size:.8125rem}.missing-list li{margin:.125rem 0}.filename-validator{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.validation-summary{display:flex;gap:1rem;margin:1.5rem 0}.val-card{flex:1;text-align:center;padding:1rem;border-radius:var(--radius);border:1px solid var(--border)}.val-card.ok{background:var(--bg-changed);border-color:var(--secondary)}.val-card.rename{background:var(--bg-neutral);border-color:var(--accent)}.val-card.bad{background:var(--bg-error);border-color:var(--error)}.val-count{display:block;font-size:1.75rem;font-weight:700}.val-label{font-size:.8125rem;color:var(--text-muted)}.detected-format{margin:.5rem 0 1rem;font-size:.875rem}.utc-offset-selector{margin:1rem 0}.utc-offset-selector label{font-size:.875rem;display:flex;align-items:center;gap:.5rem}.utc-offset-selector select{padding:.375rem .5rem;border:1px solid var(--border);border-radius:4px;font-size:.875rem}.rename-preview{margin:1.5rem 0;max-height:400px;overflow-y:auto}.rename-preview table{width:100%;border-collapse:collapse;font-size:.8125rem}.rename-preview th{text-align:left;padding:.5rem;border-bottom:1px solid var(--border);font-weight:600}.rename-preview td{padding:.375rem .5rem}.rename-preview td.mono{font-family:monospace;font-size:.75rem}.rename-preview td.arrow{text-align:center;width:30px;color:var(--text-muted)}.rename-preview td.more{text-align:center;color:var(--text-muted);padding:.75rem}.invalid-files{margin:1.5rem 0;padding:1rem;background:var(--bg-error);border:1px solid var(--error);border-radius:var(--radius)}.invalid-files h3{margin:0 0 .5rem;font-size:.9375rem}.invalid-files ul{margin:.5rem 0;padding-left:1.5rem;font-size:.8125rem}.rename-arrow{color:var(--text-muted);font-size:.75rem;margin-left:.5rem}.ignored-row td{color:var(--text-muted);opacity:.7}.metadata-scan{margin:1rem 0;padding:1rem;background:var(--bg-neutral);border:1px solid var(--accent);border-radius:var(--radius);font-size:.875rem}.scan-header{display:flex;align-items:center;gap:.5rem;font-weight:500;margin-bottom:.5rem}.scan-spinner{width:14px;height:14px;border:2px solid var(--bg-neutral);border-top:2px solid var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scan-detail{margin-top:.375rem;font-size:.75rem;color:var(--text-muted)}.metadata-result{margin:1rem 0;padding:.75rem 1rem;border-radius:var(--radius);font-size:.875rem}.metadata-result.success{background:var(--bg-changed);border:1px solid var(--secondary);color:var(--primary)}.metadata-result.neutral{background:var(--bg-neutral);border:1px solid var(--border);color:var(--text-muted)}@media(max-width:980px){.app-header{flex-wrap:wrap;gap:.75rem;padding:.75rem 1rem}.brand-logo-full{height:34px}.header-right{width:100%;justify-content:flex-end;flex-wrap:wrap;gap:.5rem}}.source-tag{font-size:.6875rem;color:var(--text-muted);font-style:italic}:root{--primary: #1F3742;--primary-hover: #162A33;--secondary: #9AB93C;--accent: #0989D3;--foreground: #FFFFFF;--success: #7C9830;--warning: #0989D3;--error: #B3261E;--bg-error: #FFE6E6;--bg-changed: #D9E7B1;--bg-neutral: #EEEEEE;--overlay-primary-30: #4D1F3742;--overlay-secondary-30: #4D9AB93C;--shell-theme: #0175C2;--bg: #EEEEEE;--surface: #FFFFFF;--border: #CAD5DC;--text: #1F3742;--text-muted: #4D6470;--radius: 8px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}h1,h2,h3{font-weight:600}h2{margin-bottom:.5rem}button{cursor:pointer;padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.875rem;transition:all .15s}button:hover{background:var(--bg-neutral)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);color:var(--foreground);border-color:var(--primary)}button.primary:hover{background:var(--primary-hover)}input,select{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem}input:focus,select:focus{outline:2px solid var(--primary);outline-offset:-1px}label{display:block;margin-bottom:1rem;font-size:.875rem;font-weight:500}label input{margin-top:.25rem}code{background:var(--bg-neutral);padding:.125rem .375rem;border-radius:4px;font-size:.8125rem}.error{color:var(--error)}.success{color:var(--success)}.warning{color:var(--warning)}.loading{color:var(--text-muted)}.form-actions{display:flex;gap:.75rem;margin-top:1.5rem}.loading-screen{display:flex;justify-content:center;align-items:center;height:100vh;color:var(--text-muted)}.progress-bar{width:100%;height:1.25rem;background:var(--border);border-radius:var(--radius);overflow:hidden}.progress-bar.small{display:inline-block;width:100px;height:.625rem;vertical-align:middle;margin-right:.5rem}.progress-fill{height:100%;background:var(--accent);transition:width .3s;border-radius:var(--radius)}
