*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica,Arial,sans-serif;background:#f4f5f7;color:#1f2430;-webkit-tap-highlight-color:transparent}a{color:#2563eb;text-decoration:none}button{font-family:inherit}input,select{font-family:inherit;font-size:16px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px;background:#fff;border-radius:16px;padding:32px 24px;box-shadow:0 8px 24px #0f172a14}.auth-card h1{margin:0 0 4px;font-size:22px}.auth-subtitle{margin:0 0 24px;color:#6b7280;font-size:13px}.auth-card form{display:flex;flex-direction:column;gap:6px}.auth-card label{font-size:13px;color:#4b5563;margin-top:8px}.auth-card input{padding:12px 14px;border-radius:10px;border:1px solid #d1d5db;outline:none}.auth-card input:focus{border-color:#2563eb}.auth-card button{margin-top:20px}.auth-footer{margin-top:20px;text-align:center;font-size:13px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 18px;border-radius:10px;border:none;font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s ease;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:#2563eb;color:#fff}.btn-primary:active{opacity:.85}.btn-secondary{background:#eef2ff;color:#2563eb}.btn-outline{background:#fff;color:#4b5563;border:1px solid #9ca3af;font-weight:500}.btn-outline:active{background:#f3f4f6}.btn-ghost{background:transparent;color:#4b5563;border:1px solid #d1d5db;padding:8px 14px;font-weight:500}.btn-back{margin-bottom:8px;padding:6px 10px;font-size:13px}.upload-btn{margin-top:10px}.page{max-width:720px;margin:0 auto;padding:20px 16px 60px}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px}.page-header h1{font-size:20px;margin:0 0 6px}.muted{color:#6b7280;margin:4px 0}.muted.small,.small{font-size:12px}.error-text{background:#fef2f2;color:#b91c1c;padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:14px}.hint-text{background:#eff6ff;color:#1d4ed8;padding:8px 14px;border-radius:8px;font-size:13px;margin-bottom:14px}.create-case-form{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.create-case-form input{flex:1;min-width:160px;padding:12px 14px;border-radius:10px;border:1px solid #d1d5db;outline:none}.create-case-form input:focus{border-color:#2563eb}.case-list{display:flex;flex-direction:column;gap:12px}.case-card{background:#fff;border-radius:14px;padding:16px;box-shadow:0 2px 10px #0f172a0f;cursor:pointer;display:flex;flex-direction:row;align-items:flex-start;gap:12px}.case-card-check{display:flex;align-items:flex-start;padding-top:2px;cursor:pointer;flex-shrink:0}.case-card-check input{width:18px;height:18px}.case-card-body{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}.case-card:active{opacity:.85}.case-card-title{font-weight:700;font-size:16px}.batch-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin:12px 0;padding:12px 14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.batch-toolbar-check{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.batch-toolbar-check input{width:18px;height:18px}.batch-toolbar-count{font-size:14px;color:#475569}.batch-archive-preview{margin:12px 0 0;padding-left:1.2em;font-size:14px;color:#334155;max-height:220px;overflow:auto}.batch-archive-preview li{margin-bottom:6px}.btn-danger{background:#b45309;color:#fff;border:none}.btn-danger:disabled{opacity:.55}.status-badge{display:inline-block;color:#fff;font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;width:fit-content}.card-section{background:#fff;border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 2px 10px #0f172a0f}.card-section h2{margin:0 0 12px;font-size:16px}.file-preview{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.file-preview img{max-width:100%;border-radius:10px;border:1px solid #e5e7eb}.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.file-grid-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;background:#f9fafb;border-radius:10px;text-align:center;font-size:12px;color:#374151}.file-grid-item img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:8px}.z-photo-form{display:flex;flex-direction:column;gap:14px}.z-photo-field{display:flex;flex-direction:column;gap:6px}.z-photo-field label{font-size:13px;color:#4b5563;font-weight:600}.z-photo-field input[type=file]{font-size:13px}.upload-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid #f1f5f9}.upload-row:last-child{border-bottom:none}.upload-row-label{font-size:14px;font-weight:600;min-width:90px}.upload-row-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}select{width:100%;padding:12px 14px;border-radius:10px;border:1px solid #d1d5db;background:#fff}.banner{padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:14px;font-weight:700}.banner-success{background:#dcfce7;color:#15803d;border:1px solid #86efac;cursor:pointer}.banner-alert{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5}.banner-warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.section-hint{font-size:12px;color:#6b7280;margin:6px 0}.section-hint-strong{color:#b45309;font-weight:700}.thumb-row{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}.thumb{max-width:240px;width:100%;border-radius:10px;border:1px solid #e5e7eb;cursor:pointer;transition:opacity .15s ease}.thumb:active{opacity:.8}.thumb-large{max-width:320px}.thumb-small{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid #e5e7eb;cursor:pointer}.hairline-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.hairline-thumb{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px;background:#f9fafb;border-radius:10px;cursor:pointer;text-align:center;font-size:12px;color:#374151;transition:transform .1s ease}.hairline-thumb:active{transform:scale(.97)}.hairline-thumb img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:8px}.comparison-preview{margin:10px 0}.zone-thumb-row{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}.zone-thumb{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;color:#374151}.zone-thumb img{width:90px;height:90px;object-fit:cover;border-radius:8px;border:1px solid #e5e7eb;cursor:pointer}.zone-upload-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.zone-upload-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:6px 0;border-bottom:1px solid #f1f5f9}.zone-upload-row:last-child{border-bottom:none}.case-card-alert{border:2px solid #ef4444;box-shadow:0 2px 10px #ef44442e}.badge-new{display:inline-block;margin-left:8px;padding:2px 8px;background:#ef4444;color:#fff;font-size:11px;font-weight:700;border-radius:999px;vertical-align:middle}.status-badge-alert{box-shadow:0 0 0 3px #dc262633}.image-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.image-modal-content{background:#111827;border-radius:14px;max-width:95vw;max-height:95vh;display:flex;flex-direction:column;overflow:hidden}.image-modal-toolbar{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#1f2937;color:#fff;gap:12px;flex-wrap:wrap}.image-modal-title{font-size:14px;font-weight:700;white-space:nowrap}.image-modal-actions{display:flex;gap:8px}.image-modal-body{position:relative;display:flex;align-items:center;justify-content:center;overflow:auto;background:#000}.image-modal-body img{max-width:100%;max-height:80vh;object-fit:contain}.image-modal-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff26;color:#fff;border:none;font-size:28px;width:44px;height:44px;border-radius:50%;cursor:pointer;z-index:2}.image-modal-nav-prev{left:10px}.image-modal-nav-next{right:10px}.density-form{display:flex;flex-direction:column;gap:10px}.density-row{display:flex;flex-direction:column;gap:8px;padding:12px;background:#f9fafb;border-radius:10px;border:1px solid #e5e7eb}.density-row-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}.density-zone{font-weight:700;color:#2563eb;background:#eef2ff;padding:2px 8px;border-radius:6px}.density-view{color:#6b7280}.density-name{font-weight:600;color:#1f2430}.density-row-input{display:flex;align-items:center;justify-content:space-between;gap:10px}.density-row-input label{font-size:13px;color:#4b5563;white-space:nowrap}.density-row-input input{flex:1;max-width:140px;padding:10px 12px;border-radius:8px;border:1px solid #d1d5db;outline:none;text-align:right}.density-row-input input:focus{border-color:#2563eb}.btn-block{display:flex;width:100%;margin-top:14px}.filter-tabs{display:flex;gap:8px;margin-bottom:16px}.archive-actions{margin-top:12px}.badge-archived{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;background:#e5e7eb;color:#4b5563;font-size:12px;font-weight:700}.auth-multiwindow-hint{margin-top:16px;text-align:center;font-size:12px;line-height:1.5}.area-table-wrap{display:flex;flex-direction:column;gap:12px}.area-import-box{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px;background:#f9fafb;border-radius:10px;border:1px dashed #d1d5db}.checkbox-line{display:flex;align-items:center;gap:8px;font-size:13px;color:#4b5563}.checkbox-line input{width:16px;height:16px}.area-table-scroll{overflow-x:auto;border-radius:10px;border:1px solid #e5e7eb}.area-table{width:100%;border-collapse:collapse;font-size:13px;min-width:760px}.area-table-simple{min-width:0}.area-table-simple input{width:64px}.area-table th,.area-table td{padding:8px 10px;text-align:center;border-bottom:1px solid #f1f5f9;white-space:nowrap}.area-table thead th{background:#f9fafb;color:#374151;font-weight:700}.area-table input{width:80px;padding:6px 8px;border-radius:6px;border:1px solid #d1d5db;text-align:right;outline:none}.area-table input:focus{border-color:#2563eb}.area-table .readonly-cell{color:#4b5563;font-weight:600}.area-table tfoot td{font-weight:700;background:#f9fafb;border-bottom:none;border-top:2px solid #e5e7eb}.total-highlight{color:#2563eb;font-size:14px}.pending-value{color:#9ca3af;font-style:italic}.card-request-box{margin-top:16px}.generate-card-box{margin-bottom:16px;padding-bottom:16px;border-bottom:1px dashed #e5e7eb}.generate-card-box .banner{margin-top:10px}.area-summary-box{display:flex;flex-wrap:wrap;gap:16px;margin:12px 0;padding:12px 14px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;font-size:14px;color:#0c4a6e}.area-summary-box strong{font-size:16px}.btn-small{padding:6px 12px;font-size:12px}.area-draft-row{display:flex;align-items:center;gap:10px}.draft-saved-hint{font-size:12px;color:#15803d;font-weight:600}.review-section{margin-top:20px;padding-top:16px;border-top:1px dashed #e5e7eb}.review-section h3{margin:0 0 12px;font-size:15px;color:#111827}.review-form,.review-view{display:flex;flex-direction:column;gap:16px}.review-field{display:flex;flex-direction:column;gap:8px}.review-field-label{font-weight:700;color:#111827;font-size:14px}.review-options{display:flex;flex-wrap:wrap;gap:10px 16px}.review-option{font-size:13px}.review-textarea{width:100%;resize:vertical;padding:8px 10px;border-radius:8px;border:1px solid #d1d5db;font-size:14px;font-family:inherit;outline:none;box-sizing:border-box}.review-textarea:focus{border-color:#2563eb}.review-view .review-field-label{font-size:13px;color:#6b7280;font-weight:600}.image-modal-lowres-hint{padding:8px 14px;background:#fef3c7;color:#92400e;font-size:13px;font-weight:600}@media (max-width: 480px){.page{padding:16px 12px 50px}.page-header{flex-direction:column}.btn{padding:12px 16px}.upload-row-label{min-width:100%}.hairline-grid{grid-template-columns:repeat(2,1fr)}.image-modal-toolbar{flex-wrap:wrap}.image-modal-nav{width:38px;height:38px;font-size:22px}.area-import-box{flex-direction:column;align-items:stretch}.density-row-input input{max-width:none}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;background:#11182773;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-panel{width:min(480px,100%);background:#fff;border-radius:14px;padding:20px 18px 16px;box-shadow:0 16px 40px #0000002e}.dialog-title{margin:0 0 10px;font-size:18px;font-weight:700;color:#111827}.dialog-body{margin:0 0 14px;font-size:14px;line-height:1.55;color:#4b5563}.dialog-label{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:#374151}.dialog-textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;font-size:14px;line-height:1.45;resize:vertical;min-height:96px;outline:none;font-family:inherit}.dialog-textarea:focus{border-color:#2563eb}.dialog-summary{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;margin-bottom:14px;font-size:14px;color:#374151;display:grid;gap:6px}.dialog-check{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;font-size:14px;color:#374151;cursor:pointer}.dialog-check input{margin-top:3px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.analytics-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.analytics-filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#4b5563}.analytics-filters input,.analytics-filters select{min-width:140px;padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font-size:14px}.analytics-summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.analytics-stat{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.analytics-stat span{font-size:12px;color:#6b7280}.analytics-stat strong{font-size:22px;color:#111827}.usage-timeline{display:flex;flex-direction:column;gap:10px}.usage-timeline-row{display:grid;grid-template-columns:150px 100px 1fr 80px 60px;gap:8px;font-size:13px;padding:8px 0;border-bottom:1px solid #f3f4f6}@media (max-width: 720px){.usage-timeline-row{grid-template-columns:1fr;gap:2px}}
