:root{--primary-contrast:#fff;--secondary-contrast:#ffffff99;--background-gradient:linear-gradient(135deg,#1a1a1a,#2d1a1a,#0f0f0f);--background:#1a1a1a;--muted:rgba(220,53,69,.15);--surface:rgba(40,40,40,.8);--border:rgba(220,53,69,.3);--top-gradient:rgba(220,53,69,.1);--bottom-gradient-top:rgba(220,53,69,.3);--bottom-gradient-bottom:rgba(139,21,33,.1);--button:linear-gradient(135deg,#dc3545,#c82333);--accent:#dc3545;--warning:#fd7e14;--success:#28a745;--homepage-bg:linear-gradient(135deg,#ff9a9e,#fecfef 50%,#fecfef);--homepage-card-bg:hsla(0,0%,100%,.9);--homepage-text:#333;--homepage-accent:#ff6b6b;--homepage-shadow:0 8px 32px rgba(0,0,0,.1)}.dark-theme{--primary-contrast:#fff;--secondary-contrast:#ffffff99;--background-gradient:linear-gradient(90deg,#0b151e,#0b151e);--background:#0b151e;--muted:rgba(21,39,60,.6);--surface:#112031;--border:#ffffff20;--top-gradient:#1b72e833;--bottom-gradient-top:#1b72e8;--bottom-gradient-bottom:#1b72e850;--button:linear-gradient(90deg,#ffca28,#f57c00)}*{margin:0;font-family:Google Sans}html{background:var(--background)}body{color:var(--primary-contrast);background:var(--background-gradient);min-height:100dvh;display:flex;flex-direction:column;justify-content:center;align-items:center}.dots{pointer-events:none;height:100%;background-image:radial-gradient(circle at center,var(--muted) 2px,transparent 2px);background-size:30px 30px;background-position:12px 12px;-webkit-mask-image:linear-gradient(180deg,#000 0,transparent 50%);mask-image:linear-gradient(180deg,#000 0,transparent 50%)}.dots,.top-gradient{position:absolute;top:0;left:0;width:100%}.top-gradient{height:25vh;background:linear-gradient(180deg,transparent 0,var(--top-gradient) 50%);-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 calc(100% - 10vw));clip-path:polygon(0 0,100% 0,100% 100%,0 calc(100% - 10vw))}.bottom-gradient{position:fixed;bottom:0;width:90%;height:900px;margin-bottom:-550px;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--top:var(--bottom-gradient-top);--bottom:var(--bottom-gradient-bottom);--first:conic-gradient(from 90deg at 0% 50%,var(--top),var(--bottom));--second:conic-gradient(from 270deg at 100% 50%,var(--bottom),var(--top));-webkit-mask-image:radial-gradient(closest-side at 50% 50%,var(--background),transparent);mask-image:radial-gradient(closest-side at 50% 50%,var(--background),transparent);background-image:var(--first),var(--second);background-position-x:0,100%;background-position-y:100%,0;background-repeat:no-repeat;opacity:.4;transform:translateY(-200px) rotate(180deg) translateZ(0);transform-origin:center center}.header{position:absolute;top:4vh;justify-content:center}.header svg{padding:16px 25px}.heading{font-size:48px;font-weight:500;letter-spacing:-2%;text-align:center}.regenerate-button{color:var(--background);background:var(--button)}.back-button{position:fixed;top:32px;left:32px;color:var(--primary-contrast);background-color:var(--surface);display:flex;align-items:center;gap:6px;text-decoration:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.button{font-size:15px;line-height:1.3;font-weight:500;padding:11px 16px;border-radius:100px;border:none;cursor:pointer;transition:scale .2s,filter .2s}.button:hover{filter:brightness(1.1)}.button:active{scale:.97}.content{margin:120px 12px;justify-content:center;gap:80px}.content,.content header{display:flex;flex-direction:column;align-items:center}.content header{gap:32px}.content header h2{font-size:20px;font-weight:400}.data-container,.features{display:grid;grid-gap:10px;gap:10px}.features{text-wrap:balance}.data-container,.features{grid-template-columns:repeat(2,1fr)}.data-container{text-wrap:pretty}.card{flex-direction:column;padding:24px;gap:12px;max-width:360px}.card h2{font-size:24px;line-height:1.2;font-weight:500;letter-spacing:-2%}.card p{font-size:13px;line-height:1.5;color:var(--secondary-contrast);letter-spacing:-1%}.card p a,.link{color:var(--primary-contrast);text-decoration:underline;text-underline-offset:2px}.links-container{padding-top:24px;gap:24px}.links,.links-container{display:flex;flex-wrap:wrap}.links{gap:10px}.links a{padding:14px 15px;color:var(--primary-contrast);font-size:14px;font-weight:500;text-decoration:none;white-space:nowrap;justify-content:center;align-items:center;gap:4px}.card,.links a{position:relative;border-radius:24px;background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex}.card:before,.links a:before{content:"";position:absolute;inset:0;border-radius:24px;padding:1px;background:linear-gradient(var(--border),transparent 30%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.card:not(:first-child):after,.links a:not(:first-child):after{content:"";top:0;height:100%;background:var(--surface);position:absolute;pointer-events:none}.card:not(:first-child):after{width:10px;left:-10px;mask:url(/between-cards.svg) no-repeat center/contain;-webkit-mask:url(/between-cards.svg) no-repeat center/contain}.links a:not(:first-child):after{width:30px;left:calc(-20px);mask:url(/between-links.svg) no-repeat center/contain;-webkit-mask:url(/between-links.svg) no-repeat center/contain}.logo-container{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.logo-main{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:600;color:var(--primary-contrast)}.logo-icon{font-size:24px}.logo-credit{font-size:20px;color:var(--secondary-contrast);font-weight:400;opacity:.7;margin-left:36px;font-style:italic}.logo-text{color:var(--accent)}.subtitle{font-size:20px;font-weight:400;color:var(--secondary-contrast);margin-top:12px;text-align:center}.analysis-icon,.upload-icon{font-size:48px;margin-bottom:12px;display:flex;justify-content:center}.analysis-button,.upload-button{background:var(--button);color:#fff;border:none;padding:12px 24px;border-radius:50px;font-size:14px;font-weight:600;cursor:pointer;margin-top:16px;transition:all .3s ease;box-shadow:0 4px 15px rgba(220,53,69,.3)}.analysis-button:hover,.upload-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(220,53,69,.4)}.upload-card{border:2px dashed var(--accent);background:rgba(40,40,40,.6);transition:all .3s ease}.upload-card:hover{border-color:var(--warning);background:rgba(40,40,40,.8)}.analysis-card{background:rgba(40,40,40,.6)}.analysis-card,.card{border:1px solid var(--border)}.card{transition:all .3s ease}.card:hover{transform:translateY(-5px);box-shadow:0 10px 30px rgba(220,53,69,.2)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-form-container{width:100%;max-width:400px;margin:0 auto}.auth-form{background:var(--surface);padding:40px;border-radius:24px;border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 30px rgba(0,0,0,.1)}.auth-form h2{font-size:28px;font-weight:600;margin-bottom:8px;text-align:center;color:var(--primary-contrast)}.auth-subtitle{font-size:14px;color:var(--secondary-contrast);text-align:center;margin-bottom:32px}.form-group{margin-bottom:24px}.form-group input{width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:12px;background:var(--background);color:var(--primary-contrast);font-size:14px;transition:all .3s ease;box-sizing:border-box}.form-group input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(220,53,69,.1)}.form-group input::placeholder{color:var(--secondary-contrast)}.error-message{padding:12px 16px;margin-bottom:20px}.auth-submit-btn{width:100%;padding:14px;background:var(--button);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;margin-bottom:24px}.auth-submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px rgba(220,53,69,.4)}.auth-submit-btn:disabled{opacity:.6;cursor:not-allowed}.auth-links{text-align:center}.auth-links p{color:var(--secondary-contrast);font-size:14px;margin:0}.auth-link{color:var(--accent);text-decoration:none;font-weight:500;transition:opacity .3s ease}.auth-link:hover{opacity:.8;text-decoration:underline}.header{justify-content:space-between;width:100%;max-width:1200px;padding:0 20px}.auth-controls,.header{display:flex;align-items:center}.auth-controls{gap:12px}.auth-loading{color:var(--secondary-contrast);font-size:14px}.user-menu{gap:12px}.logout-button{background:rgba(220,53,69,.1);color:var(--accent);border:1px solid rgba(220,53,69,.3);padding:8px 16px;font-size:13px}.logout-button:hover{background:rgba(220,53,69,.2)}.auth-buttons{display:flex;gap:8px}.login-button{background:transparent;color:var(--primary-contrast);border:1px solid var(--border)}.login-button,.register-button{padding:8px 16px;font-size:13px}.register-button{background:var(--button);color:#fff}.loading-container{display:flex;justify-content:center;align-items:center;padding:60px 0}.loading-spinner{font-size:18px}.loading-spinner,.login-prompt{color:var(--secondary-contrast)}.login-prompt{font-size:16px;text-align:center;margin-top:24px}.welcome-message{text-align:center;margin-bottom:40px}.welcome-message p{color:var(--secondary-contrast);font-size:18px;margin:0}.welcome-message strong{color:var(--accent);font-weight:600}@media only screen and (max-width:1023px){.heading{font-size:36px}.back-button{top:10px;left:10px}.data-container,.features{grid-template-columns:1fr}.card:after,.links a:after,.top-gradient{display:none}.bottom-gradient{width:150%;height:400px;margin-bottom:-450px}.auth-form{padding:30px 20px}.header{flex-direction:column;gap:16px;text-align:center}.auth-controls{order:1}.user-menu{flex-direction:column;gap:8px}}.file-upload-container{width:100%;max-width:480px}.file-upload-area,.upload-feature{display:flex;justify-content:center}.file-upload-area{position:relative;width:100%;min-height:320px;background:var(--surface);border:2px dashed var(--border);border-radius:24px;padding:40px 30px;text-align:center;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-direction:column;align-items:center}.file-upload-area:hover{border-color:var(--accent);background:rgba(40,40,40,.8);transform:translateY(-2px);box-shadow:0 8px 25px rgba(220,53,69,.15)}.file-upload-area.dragging{border-color:var(--accent);background:rgba(220,53,69,.1);transform:scale(1.02)}.file-upload-area.has-file{border-color:var(--success);background:rgba(40,40,40,.9)}.upload-prompt{display:flex;flex-direction:column;align-items:center;gap:16px}.upload-prompt .upload-icon{font-size:48px;margin-bottom:8px}.upload-prompt h3{font-size:24px;font-weight:600;color:var(--primary-contrast);margin:0}.upload-prompt p{font-size:14px;line-height:1.5;color:var(--secondary-contrast);margin:0 0 20px}.upload-prompt .upload-button{background:var(--button);color:#fff;border:none;padding:14px 28px;border-radius:50px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px rgba(220,53,69,.3)}.upload-prompt .upload-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(220,53,69,.4)}.file-info{font-size:12px;color:var(--secondary-contrast);margin-top:16px}.file-selected{display:flex;flex-direction:column;align-items:center;gap:20px;width:100%}.file-icon{font-size:64px;color:var(--success)}.file-details{text-align:center}.file-details h4{font-size:20px;font-weight:600;color:var(--primary-contrast);margin:0 0 12px}.file-name{font-size:16px;font-weight:500;color:var(--accent);margin:0 0 8px;word-break:break-all;max-width:100%}.file-size{font-size:14px;color:var(--secondary-contrast);margin:0}.file-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.remove-button{background:rgba(220,53,69,.1);color:var(--accent);border:1px solid rgba(220,53,69,.3);padding:10px 20px;border-radius:25px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.remove-button:hover{background:rgba(220,53,69,.2);transform:translateY(-1px)}.change-button{background:var(--surface);color:var(--primary-contrast);border:1px solid var(--border);padding:10px 20px;border-radius:25px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.change-button:hover{background:hsla(0,0%,100%,.1);transform:translateY(-1px)}.drag-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(220,53,69,.2);border-radius:22px;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.drag-overlay p{font-size:18px;font-weight:600;color:var(--accent);margin:0}@media only screen and (max-width:1023px){.file-upload-area{min-height:280px;padding:30px 20px}.upload-prompt .upload-icon{font-size:40px}.upload-prompt h3{font-size:20px}.upload-prompt p{font-size:13px}.file-icon{font-size:48px}.file-actions{flex-direction:column;width:100%}.change-button,.remove-button{width:100%}}.analyzing-state,.error-state,.success-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px 0}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}.error-text{color:var(--accent);font-weight:500}.error-text,.success-text{text-align:center;margin:0}.success-text{color:var(--success);font-weight:600}.result-summary{text-align:center;color:var(--secondary-contrast);font-size:14px;margin:0;line-height:1.5}.result-summary strong{color:var(--accent);font-weight:600}.analysis-results-section{width:100%;max-width:1200px;margin-top:60px}.analysis-result-container{background:var(--surface);border-radius:24px;border:1px solid var(--border);overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 30px rgba(0,0,0,.1)}.analysis-header{background:rgba(40,40,40,.8);padding:30px;border-bottom:1px solid var(--border)}.analysis-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.analysis-title h2{font-size:28px;font-weight:600;color:var(--primary-contrast);margin:0}.close-button{background:rgba(220,53,69,.1);color:var(--accent);border:1px solid rgba(220,53,69,.3);width:40px;height:40px;border-radius:50%;font-size:16px;font-weight:700;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.close-button:hover{background:rgba(220,53,69,.2);transform:scale(1.1)}.analysis-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:20px;gap:20px}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-value{font-size:16px;color:var(--primary-contrast);font-weight:600}.summary-value.highlight{color:var(--accent);font-size:18px}.analysis-content{padding:30px}.table-container{background:var(--background);border-radius:16px;border:1px solid var(--border);overflow:hidden}.table-header{background:rgba(40,40,40,.6);padding:20px;border-bottom:1px solid var(--border)}.table-header h3{font-size:20px;font-weight:600;color:var(--primary-contrast);margin:0}.table-wrapper{overflow-x:auto;max-height:600px;overflow-y:auto}.defect-table{width:100%;border-collapse:collapse;font-size:14px}.defect-table th{background:rgba(40,40,40,.8);color:var(--primary-contrast);font-weight:600;padding:16px;text-align:left;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.defect-table th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .2s ease}.defect-table th.sortable:hover{background:rgba(40,40,40,.9)}.defect-table th.sortable.active{color:var(--accent)}.defect-table td{padding:16px;border-bottom:1px solid var(--border);color:var(--primary-contrast)}.defect-table tbody tr:hover{background:rgba(40,40,40,.3)}.defect-table tbody tr.selected{background:rgba(220,53,69,.1)}.po-cell{font-size:13px;color:var(--secondary-contrast)}.po-cell,.sn-cell{font-family:monospace}.sn-cell{font-weight:500;color:var(--primary-contrast)}.count-badge,.count-cell{text-align:center}.count-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.count-badge.low{background:rgba(40,167,69,.2);color:var(--success);border:1px solid rgba(40,167,69,.3)}.count-badge.medium{background:rgba(255,193,7,.2);color:var(--warning);border:1px solid rgba(255,193,7,.3)}.count-badge.high{background:rgba(220,53,69,.2);color:var(--accent);border:1px solid rgba(220,53,69,.3)}.action-cell{text-align:center}.detail-button{background:var(--surface);color:var(--primary-contrast);border:1px solid var(--border);padding:6px 12px;border-radius:16px;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease}.detail-button:hover{background:hsla(0,0%,100%,.1);transform:translateY(-1px)}.detail-row td{background:rgba(40,40,40,.2);padding:0}.coordinates-detail{padding:24px}.coordinates-detail h4{font-size:16px;font-weight:600;color:var(--primary-contrast);margin:0 0 16px}.coordinate-item{gap:8px;padding:8px 12px;background:rgba(40,40,40,.4);border-radius:8px;border:1px solid var(--border)}.coord-index,.coordinate-item{display:flex;align-items:center}.coord-index{background:var(--accent);color:#fff;width:20px;height:20px;border-radius:50%;font-size:10px;font-weight:600;justify-content:center;flex-shrink:0}.coord-values{font-family:monospace;font-size:12px;color:var(--secondary-contrast)}@media only screen and (max-width:1023px){.analysis-results-section{margin-top:40px}.analysis-header{padding:20px}.analysis-title h2{font-size:24px}.analysis-summary{grid-template-columns:1fr;gap:16px}.analysis-content{padding:20px}.table-wrapper{max-height:400px}.defect-table td,.defect-table th{padding:12px 8px;font-size:13px}.coordinates-grid{grid-template-columns:1fr;max-height:200px}.coordinate-item{padding:6px 8px}}.duplicate-result-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.8);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.duplicate-result-modal{background:var(--surface);border-radius:24px;border:1px solid var(--border);max-width:900px;max-height:80vh;width:100%;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 20px 60px rgba(0,0,0,.3)}.duplicate-header{background:rgba(40,40,40,.8);padding:24px 30px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.duplicate-header h3{font-size:24px;font-weight:600;color:var(--primary-contrast);margin:0}.duplicate-summary{padding:24px 30px;border-bottom:1px solid var(--border);background:rgba(40,40,40,.3)}.summary-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.summary-row:last-child{margin-bottom:0}.summary-label{font-size:14px;font-weight:500;color:var(--secondary-contrast);min-width:120px}.sn-tags{display:flex;flex-wrap:wrap;gap:6px}.sn-tag{background:rgba(220,53,69,.2);color:var(--accent);padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500;border:1px solid rgba(220,53,69,.3)}.summary-count{font-size:16px;font-weight:600;padding:4px 12px;border-radius:12px}.summary-count.has-duplicates{background:rgba(220,53,69,.2);color:var(--accent);border:1px solid rgba(220,53,69,.3)}.summary-count.no-duplicates{background:rgba(40,167,69,.2);color:var(--success);border:1px solid rgba(40,167,69,.3)}.no-duplicates-message{padding:60px 30px;text-align:center;color:var(--secondary-contrast)}.no-duplicates-icon{font-size:64px;margin-bottom:16px}.no-duplicates-message h4{font-size:20px;font-weight:600;color:var(--success);margin:0 0 12px}.no-duplicates-message p{font-size:14px;line-height:1.5;margin:0}.duplicates-content{padding:24px 30px;max-height:400px;overflow-y:auto}.duplicates-table-container{overflow-x:auto;margin-bottom:24px}.duplicates-table{width:100%;border-collapse:collapse;font-size:13px}.duplicates-table th{background:rgba(40,40,40,.6);font-weight:600;text-align:left}.duplicates-table td,.duplicates-table th{color:var(--primary-contrast);padding:12px;border-bottom:1px solid var(--border)}.duplicates-table tbody tr:hover{background:rgba(40,40,40,.3)}.index-cell{text-align:center;font-weight:500;color:var(--secondary-contrast)}.coord-cell{font-family:monospace;font-weight:500;color:var(--primary-contrast)}.duplicate-count-badge{display:inline-block;padding:4px 8px;border-radius:10px;font-size:11px;font-weight:600}.duplicate-count-badge.medium{background:rgba(255,193,7,.2);color:var(--warning);border:1px solid rgba(255,193,7,.3)}.duplicate-count-badge.high{background:rgba(220,53,69,.2);color:var(--accent);border:1px solid rgba(220,53,69,.3)}.sns-cell{max-width:200px}.sns-list{display:flex;flex-wrap:wrap;gap:4px}.sn-item{background:rgba(40,40,40,.6);color:var(--primary-contrast);padding:2px 6px;border-radius:8px;font-size:11px;font-family:monospace;border:1px solid var(--border)}.duplicate-warning{display:flex;gap:12px;padding:16px;background:rgba(220,53,69,.1);border:1px solid rgba(220,53,69,.3);border-radius:12px}.warning-icon{font-size:24px;flex-shrink:0}.warning-content h4{font-size:16px;font-weight:600;color:var(--accent);margin:0 0 6px}.warning-content p{font-size:13px;color:var(--secondary-contrast);margin:0;line-height:1.4}.duplicate-actions{padding:20px 30px;border-top:1px solid var(--border);display:flex;justify-content:center}.close-action-button{background:var(--surface);color:var(--primary-contrast);border:1px solid var(--border);padding:10px 24px;border-radius:20px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.close-action-button:hover{background:hsla(0,0%,100%,.1);transform:translateY(-1px)}.table-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px}.checkbox-controls{display:flex;align-items:center;gap:12px}.select-all-checkbox{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--secondary-contrast);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.duplicate-check-button{background:var(--button);color:#fff;border:none;padding:10px 20px;border-radius:20px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px rgba(220,53,69,.3)}.duplicate-check-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px rgba(220,53,69,.4)}.duplicate-check-button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.checkbox-cell,.checkbox-header{width:60px;text-align:center}.checkbox-cell input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}@media only screen and (max-width:1023px){.duplicate-result-modal{max-width:95vw;max-height:90vh}.duplicate-actions,.duplicate-header,.duplicate-summary,.duplicates-content{padding:16px 20px}.duplicate-header h3{font-size:20px}.table-actions{flex-direction:column;align-items:stretch;gap:12px}.checkbox-controls{justify-content:center}.duplicate-check-button{width:100%;text-align:center}.summary-row{flex-direction:column;align-items:flex-start;gap:8px}.summary-label{min-width:auto}.duplicates-table td,.duplicates-table th{padding:8px 6px;font-size:12px}.sns-cell{max-width:120px}.duplicate-warning{flex-direction:column;text-align:center}}.coordinate-chart-container{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:rgba(40,40,40,.4);border-radius:16px;border:1px solid var(--border)}.coordinate-chart{border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.3)}.coordinate-chart-empty{display:flex;align-items:center;justify-content:center;background:rgba(40,40,40,.4);border-radius:16px;border:1px solid var(--border);color:var(--secondary-contrast)}.empty-message{font-size:14px;text-align:center}.chart-legend{gap:16px;font-size:12px;color:var(--secondary-contrast)}.chart-legend,.legend-item{display:flex;align-items:center}.legend-item{gap:6px}.legend-color{width:12px;height:12px;border-radius:50%;border:1px solid hsla(0,0%,100%,.3)}.normal-point{background:#dc3545}.highlight-point{background:#ffc107}.detail-content{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px;align-items:start}.coordinates-chart{justify-self:center}.coordinates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:12px;gap:12px;max-height:300px;overflow-y:auto}.duplicates-chart-section{margin-bottom:32px;padding:24px;background:rgba(40,40,40,.2);border-radius:16px;border:1px solid var(--border)}.duplicates-chart-section h4{font-size:18px;font-weight:600;color:var(--primary-contrast);margin:0 0 16px;text-align:center}@media only screen and (max-width:1023px){.detail-content{grid-template-columns:1fr;gap:16px}.coordinates-chart{justify-self:stretch}.coordinate-chart-container{padding:12px}.coordinates-grid{grid-template-columns:1fr;max-height:200px}.duplicates-chart-section{padding:16px}.chart-legend{gap:12px;flex-wrap:wrap;justify-content:center}}.profile-alert{position:fixed;top:70px;left:0;right:0;z-index:100;background:linear-gradient(135deg,#ffc107,#f57c00);box-shadow:0 4px 12px rgba(255,193,7,.3)}.alert-content{display:flex;align-items:center;gap:16px;max-width:1200px;margin:0 auto;padding:16px 20px}.alert-icon{font-size:24px;flex-shrink:0}.alert-text{display:flex;flex-direction:column;gap:4px;flex-grow:1}.alert-title{font-size:16px;font-weight:600;color:#000}.alert-message{font-size:14px;color:rgba(0,0,0,.8)}.alert-button{background:rgba(0,0,0,.1);color:#000;border:1px solid rgba(0,0,0,.2);padding:10px 20px;border-radius:20px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;flex-shrink:0}.alert-button:hover{background:rgba(0,0,0,.2);transform:translateY(-1px)}.profile-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.8);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.profile-modal{background:var(--surface);border-radius:24px;border:1px solid var(--border);max-width:500px;width:100%;max-height:90vh;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-header{padding:20px 24px 0;display:flex;justify-content:flex-end}.modal-content{padding:0}.profile-form-container{padding:0 24px 24px}.profile-form{width:100%}.form-header{text-align:center;margin-bottom:32px}.form-header h2{font-size:28px;font-weight:600;color:var(--primary-contrast);margin:0 0 8px}.form-subtitle{font-size:14px;color:var(--secondary-contrast);margin:0}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:14px;font-weight:500;margin-bottom:8px;color:var(--primary-contrast)}.form-group input,.form-group textarea{width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:12px;background:var(--background);color:var(--primary-contrast);font-size:14px;font-family:inherit;transition:all .3s ease;box-sizing:border-box;resize:vertical}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(220,53,69,.1)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--secondary-contrast)}.error-messages{margin-bottom:20px}.error-message{background:rgba(220,53,69,.1);padding:10px 16px;border-radius:8px;font-size:13px;margin-bottom:8px;border:1px solid rgba(220,53,69,.2)}.error-message:last-child{margin-bottom:0}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:32px}.cancel-button{background:var(--surface);color:var(--primary-contrast);border:1px solid var(--border);padding:12px 24px;border-radius:20px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.cancel-button:hover:not(:disabled){background:hsla(0,0%,100%,.1);transform:translateY(-1px)}.submit-button{background:var(--button);color:#fff;border:none;padding:12px 24px;border-radius:20px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px rgba(220,53,69,.3)}.submit-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px rgba(220,53,69,.4)}.cancel-button:disabled,.submit-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.user-menu{display:flex;align-items:center;gap:16px}.user-info{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.user-name{font-weight:600}.user-email,.user-name{color:var(--primary-contrast);font-size:14px}.user-email{font-weight:500}.user-department{color:var(--secondary-contrast);font-size:12px}.user-actions{display:flex;gap:8px}.profile-button{background:hsla(0,0%,100%,.1);color:var(--primary-contrast);border:1px solid var(--border);padding:8px 16px;font-size:13px}.profile-button:hover{background:hsla(0,0%,100%,.2)}@media only screen and (max-width:1023px){.profile-alert{top:60px}.alert-content{flex-direction:column;text-align:center;gap:12px;padding:12px 16px}.alert-text{align-items:center}.profile-modal{max-width:95vw;max-height:95vh}.form-actions{flex-direction:column}.cancel-button,.submit-button{width:100%}.user-menu{flex-direction:column;gap:12px;align-items:center}.user-info{align-items:center;text-align:center}.user-actions{flex-direction:column;width:100%}.logout-button,.profile-button{width:100%;text-align:center}}.file-upload-area.has-files{min-height:auto;padding:20px}.files-selected{width:100%}.files-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.files-header h4{margin:0;font-size:18px;color:var(--primary-contrast)}.header-actions{display:flex;gap:8px}.add-button,.remove-all-button{padding:6px 12px;font-size:12px;border-radius:16px;border:1px solid var(--border);cursor:pointer;transition:all .3s ease;background:var(--surface);color:var(--primary-contrast)}.add-button:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.remove-all-button:hover{background:rgba(220,53,69,.1);border-color:var(--accent);color:var(--accent)}.files-list{display:flex;flex-direction:column;gap:12px;max-height:300px;overflow-y:auto}.file-item{display:flex;align-items:center;gap:12px;padding:12px;background:hsla(0,0%,100%,.05);border:1px solid var(--border);border-radius:12px;transition:all .3s ease}.file-item:hover{background:hsla(0,0%,100%,.08)}.file-item .file-icon{font-size:16px;flex-shrink:0}.file-item .file-details{flex-grow:1;display:flex;flex-direction:column;gap:2px}.file-item .file-name{margin:0;font-size:14px;font-weight:500;color:var(--primary-contrast);word-break:break-all}.file-item .file-size{margin:0;font-size:12px;color:var(--secondary-contrast)}.remove-file-button{background:transparent;color:var(--secondary-contrast);border:none;cursor:pointer;padding:4px 8px;border-radius:50%;transition:all .3s ease;font-size:14px;flex-shrink:0}.remove-file-button:hover{background:rgba(220,53,69,.1);color:var(--accent)}.file-status-container{background:var(--surface);border-radius:24px;border:1px solid var(--border);padding:24px;max-width:480px;width:100%}.status-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.status-header h3{margin:0;font-size:20px;color:var(--primary-contrast)}.total-summary{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.total-files,.total-records,.total-sns{font-size:12px;color:var(--secondary-contrast);background:hsla(0,0%,100%,.05);padding:4px 8px;border-radius:12px;border:1px solid var(--border)}.files-status-list{display:flex;flex-direction:column;gap:12px;max-height:300px;overflow-y:auto}.file-status-item{display:flex;align-items:center;gap:12px;padding:12px;background:hsla(0,0%,100%,.03);border:1px solid var(--border);border-radius:12px}.file-status-item .file-info{flex-grow:1}.file-info-inline{display:flex;align-items:center;gap:8px;flex-grow:1}.file-info-inline .file-name{font-weight:500;color:var(--primary-contrast);font-size:14px}.file-separator{opacity:.6}.file-info-inline .defect-count,.file-info-inline .sn-count,.file-separator{color:var(--secondary-contrast);font-size:12px}.file-status-item .file-details h4{margin:0 0 4px;font-size:14px;font-weight:500;color:var(--primary-contrast);word-break:break-all}.file-stats{display:flex;gap:12px}.defect-count,.sn-count{font-size:12px;color:var(--secondary-contrast)}.status-badge{padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500;flex-shrink:0}.status-badge.success{background:rgba(34,197,94,.1);color:#22c55e;border:1px solid rgba(34,197,94,.2)}.file-status-container.loading{text-align:center}.loading-content{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px 20px}.loading-spinner{width:32px;height:32px;border:3px solid hsla(0,0%,100%,.1);border-top:3px solid var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.file-status-container.error{text-align:center}.error-content{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px}.error-message{color:var(--accent);font-size:14px}.file-status-container.empty{text-align:center}.empty-content{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px 20px}.empty-content p{color:var(--secondary-contrast);font-size:14px;margin:0}.file-format-example{margin:20px 0;padding:16px;background:hsla(0,0%,100%,.05);border-radius:12px;border:1px solid var(--border)}.file-format-example h4{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--primary-contrast);text-align:center}.example-table{display:flex;justify-content:center;margin-bottom:8px}.format-table{border-collapse:collapse;font-size:12px}.format-table td,.format-table th{border:1px solid var(--border);padding:6px 12px;text-align:center}.format-table th{background:rgba(220,53,69,.1);color:var(--accent);font-weight:600}.format-table td{color:var(--primary-contrast);background:hsla(0,0%,100%,.03)}.example-note{font-size:11px;color:var(--secondary-contrast);text-align:center;margin:0;opacity:.8}@media only screen and (max-width:1023px){.file-format-example{margin:16px 0;padding:12px}.format-table{font-size:11px}.format-table td,.format-table th{padding:4px 8px}.files-header{flex-direction:column;gap:12px;align-items:stretch}.add-button,.remove-all-button{flex:1 1;text-align:center}.total-summary{align-items:center;flex-direction:row;gap:8px;flex-wrap:wrap;justify-content:center}.file-item,.file-status-item{flex-direction:column;align-items:flex-start;gap:8px}.file-item .file-info{width:100%}.remove-file-button,.status-badge{align-self:flex-end}.duplicate-header{flex-direction:column;align-items:stretch;gap:12px}.header-actions{justify-content:space-between;width:100%}.download-button{font-size:12px;padding:6px 12px;justify-content:center}}.homepage{min-height:100vh;background:var(--homepage-bg);position:relative;overflow-x:hidden}.analysis-button-container{position:fixed;top:20px;left:20px;z-index:1000}.analysis-button{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--homepage-card-bg);border-radius:25px;text-decoration:none;color:var(--homepage-text);font-weight:600;box-shadow:var(--homepage-shadow);transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.analysis-button:hover{transform:translateY(-2px);box-shadow:0 12px 40px rgba(0,0,0,.15)}.analysis-icon{font-size:18px}.analysis-text{font-size:14px}.celebration-container{max-width:800px;margin:0 auto;padding:40px 20px;text-align:center}.celebration-header{margin-bottom:50px}.celebration-title{font-size:3.5rem;font-weight:700;color:var(--homepage-text);margin-bottom:20px;text-shadow:2px 2px 4px rgba(0,0,0,.1);animation:bounce 2s infinite}.celebration-subtitle{font-size:1.3rem;color:var(--homepage-text);opacity:.8;font-weight:500}.celebration-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:25px;gap:25px;margin-bottom:50px}.info-card{background:var(--homepage-card-bg);padding:30px;border-radius:20px;box-shadow:var(--homepage-shadow);display:flex;align-items:center;gap:20px;transition:transform .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.info-card:hover{transform:translateY(-5px)}.info-icon{font-size:3rem;flex-shrink:0}.info-photo{flex-shrink:0;width:80px;height:80px;border-radius:50%;overflow:hidden;box-shadow:0 4px 15px rgba(0,0,0,.1)}.baby-photo{width:100%;height:100%;object-fit:cover;object-position:center}.info-content h3{font-size:1.2rem;font-weight:600;color:var(--homepage-accent);margin-bottom:8px}.info-content p{font-size:1rem;color:var(--homepage-text);line-height:1.5}.map-section{background:var(--homepage-card-bg);padding:40px;border-radius:20px;box-shadow:var(--homepage-shadow);margin-bottom:50px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.map-section h2{font-size:2rem;color:var(--homepage-accent);margin-bottom:25px;font-weight:600;text-align:center}.map-container{margin-bottom:20px;border-radius:15px;overflow:hidden;box-shadow:0 4px 20px rgba(0,0,0,.1)}.map-info{text-align:center}.map-info p{font-size:1rem;color:var(--homepage-text);margin-bottom:8px;line-height:1.5}.map-info p:first-child{font-size:1.2rem;font-weight:600;color:var(--homepage-accent)}.map-note{font-size:.9rem!important;color:var(--homepage-text)!important;opacity:.8!important;font-style:italic}.celebration-message{background:var(--homepage-card-bg);padding:40px;border-radius:20px;box-shadow:var(--homepage-shadow);margin-bottom:50px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.celebration-message h2{font-size:2rem;color:var(--homepage-accent);margin-bottom:20px;font-weight:600}.celebration-message p{font-size:1.1rem;color:var(--homepage-text);line-height:1.8}.celebration-gallery{margin-bottom:50px}.celebration-gallery h2{font-size:2rem;color:var(--homepage-text);margin-bottom:30px;font-weight:600}.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:20px;gap:20px;max-width:600px;margin:0 auto}.photo-item{background:var(--homepage-card-bg);padding:20px;border-radius:15px;box-shadow:var(--homepage-shadow);transition:transform .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.photo-item:hover{transform:translateY(-3px)}.photo-placeholder{font-size:3rem;margin-bottom:10px}.photo-item p{font-size:.9rem;color:var(--homepage-text);font-weight:500}.celebration-footer{background:var(--homepage-card-bg);padding:30px;border-radius:20px;box-shadow:var(--homepage-shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.footer-message{font-size:1.2rem;color:var(--homepage-text);margin-bottom:15px;font-weight:500}.footer-contact{font-size:1rem;color:var(--homepage-text);opacity:.8}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@media (max-width:768px){.celebration-title{font-size:2.5rem}.celebration-subtitle{font-size:1.1rem}.celebration-info{grid-template-columns:1fr}.info-card{flex-direction:column;text-align:center}.photo-grid{grid-template-columns:repeat(2,1fr)}.analysis-button{padding:10px 14px}.analysis-text{font-size:12px}.map-section{padding:25px 20px}.map-section h2{font-size:1.5rem}.map-container iframe{height:250px}}