*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;color:#1a1a2e;background:#f5f6fa;min-height:100vh}#login-view{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:24px}#login-view h1{font-size:24px;color:#1a1a2e}#login-view p{color:#666}.btn-google{display:flex;align-items:center;gap:10px;padding:12px 24px;background:#fff;border:1px solid #ddd;border-radius:6px;font-size:15px;cursor:pointer;box-shadow:0 1px 3px #0000001a;transition:box-shadow .15s}.btn-google:hover{box-shadow:0 2px 6px #00000026}.btn-google svg{width:20px;height:20px}#app-view{display:none}header{background:#1a1a2e;color:#fff;padding:0 24px;height:56px;display:flex;align-items:center;gap:16px}header h1{font-size:16px;font-weight:600;flex:1}.btn{padding:7px 14px;border-radius:5px;border:none;font-size:13px;cursor:pointer;font-weight:500;transition:opacity .15s}.btn:hover{opacity:.85}.btn-primary{background:#4f8ef7;color:#fff}.btn-secondary{background:#ffffff26;color:#fff}.btn-danger{background:#e55;color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.btn-ghost{background:transparent;border:1px solid #ddd;color:#444}main{padding:24px;max-width:1000px;margin:0 auto}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.toolbar h2{font-size:18px}.card{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;overflow:hidden}table{width:100%;border-collapse:collapse}th{text-align:left;padding:10px 16px;font-size:12px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.05em;background:#fafafa;border-bottom:1px solid #eee}td{padding:12px 16px;border-bottom:1px solid #f0f0f0;vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:#fafbff}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}.badge-active{background:#e6f9f0;color:#1a7f4f}.badge-inactive{background:#f5f5f5;color:#999}.billing-label{color:#555}.actions{display:flex;gap:6px}#empty-row td{text-align:center;color:#aaa;padding:32px}dialog{border:none;border-radius:10px;box-shadow:0 8px 40px #0003;padding:0;width:680px;max-width:95vw;max-height:90vh;overflow-y:auto}dialog::backdrop{background:#0006}.dialog-header{padding:20px 24px 16px;border-bottom:1px solid #eee;display:flex;align-items:center;justify-content:space-between}.dialog-header h3{font-size:16px}.dialog-close{background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0 4px}.dialog-body{padding:20px 24px;display:flex;flex-direction:column;gap:14px}.dialog-footer{padding:16px 24px;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:10px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;font-weight:600;color:#555}.field input,.field select,.field textarea{padding:8px 10px;border:1px solid #ddd;border-radius:5px;font-size:14px;color:#1a1a2e;background:#fff;width:100%;transition:border-color .15s}.field input:focus,.field select:focus{outline:none;border-color:#4f8ef7}.field .hint{font-size:11px;color:#999}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.section-divider{border-top:1px solid #eee;padding-top:14px}.section-label{font-size:11px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.checkbox-field{display:flex;align-items:center;gap:8px}.checkbox-field input{width:auto}.checkbox-field label{font-size:14px;font-weight:400;color:#333}.billing-hint{font-size:11px;color:#999;margin-top:2px;display:block}.kv-editor{display:flex;flex-direction:column;gap:6px}.kv-row{display:flex;gap:6px;align-items:center}.kv-row input{flex:1}.kv-row .kv-type{width:90px}.kv-row .kv-rate{width:70px}.kv-remove{background:none;border:none;color:#c00;font-size:16px;cursor:pointer;padding:0 4px;flex-shrink:0}.btn-add-row{font-size:12px;color:#4f8ef7;background:none;border:none;cursor:pointer;text-align:left;padding:2px 0;margin-top:4px}.btn-add-row:hover{text-decoration:underline}.invoice-bar{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;padding:16px 20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.invoice-bar label{font-size:13px;font-weight:600;color:#555}.invoice-bar select{padding:6px 10px;border:1px solid #ddd;border-radius:5px;font-size:13px}.invoice-result{margin-left:auto;font-size:12px;color:#888}.invoice-result.running{color:#4f8ef7}.invoice-result.done{color:#1a7f4f}.uploads-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.upload-card{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;padding:20px 24px;display:flex;flex-direction:column;gap:12px}.upload-card h3{font-size:14px;font-weight:600}.upload-status{display:flex;align-items:center;gap:8px;font-size:13px}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-dot.present{background:#1a7f4f}.status-dot.absent{background:#ccc}.upload-row{display:flex;align-items:center;gap:10px}.upload-row input[type=file]{flex:1;font-size:13px}.upload-progress{font-size:12px;color:#888;min-height:16px}.month-selector-row{display:flex;align-items:center;gap:12px;margin-bottom:4px}.month-selector-row label{font-size:13px;font-weight:600;color:#555}.month-selector-row select{padding:6px 10px;border:1px solid #ddd;border-radius:5px;font-size:13px}.tab-bar{display:flex;border-bottom:2px solid #eee;margin-bottom:24px}.tab-btn{padding:10px 20px;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:14px;font-weight:500;color:#888;transition:color .15s,border-color .15s}.tab-btn.active{color:#1a1a2e;border-bottom-color:#4f8ef7}.tab-btn:hover:not(.active){color:#444}.tab-panel{display:none}.tab-panel.active{display:block}.ir-header{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 36px 32px;gap:8px;font-size:11px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.05em;padding-bottom:8px;border-bottom:1px solid #eee;margin-bottom:8px}.ir-item{margin-bottom:4px}.ir-row{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 36px 32px;gap:8px;align-items:center;margin-bottom:2px}.ir-row input{padding:7px 9px;border:1px solid #ddd;border-radius:5px;font-size:13px;color:#1a1a2e;background:#fff;width:100%}.ir-row input:focus{outline:none;border-color:#4f8ef7}.ir-legacy{background:#f9f9fb;border:1px solid #eee;border-radius:5px;padding:10px 12px;margin-bottom:8px}.ir-legacy-row{display:grid;grid-template-columns:160px 1fr 1fr 1fr;gap:10px;align-items:end}.ir-legacy-field{display:flex;flex-direction:column;gap:3px}.ir-legacy-field label{font-size:11px;font-weight:600;color:#888}.ir-legacy-field input{padding:6px 8px;border:1px solid #ddd;border-radius:4px;font-size:12px;width:100%}.sa-header{display:grid;grid-template-columns:1fr 1.4fr 60px 100px 60px 26px;gap:6px;font-size:11px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.05em;padding-bottom:6px;border-bottom:1px solid #eee;margin-bottom:6px}.sa-row{display:grid;grid-template-columns:1fr 1.4fr 60px 100px 60px 26px;gap:6px;align-items:center;margin-bottom:5px}.sa-row input{padding:6px 7px;border:1px solid #ddd;border-radius:5px;font-size:12px;color:#1a1a2e;background:#fff;width:100%}.sa-row input:focus{outline:none;border-color:#4f8ef7}.sa-row.sa-expired{opacity:.45}.sa-expired-label{font-size:10px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.04em;grid-column:4;margin-top:-2px}.btn-legacy-toggle{padding:4px 6px;background:none;border:1px solid #ddd;border-radius:4px;font-size:12px;cursor:pointer;color:#aaa;line-height:1}.btn-legacy-toggle.active{border-color:#f0a030;color:#f0a030;background:#fff8ee}.rates-table-wrap{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;padding:20px 24px}.rates-header-row{display:grid;grid-template-columns:2fr 110px 90px 32px;gap:8px;font-size:11px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.05em;padding-bottom:8px;border-bottom:1px solid #eee;margin-bottom:8px}.gr-row{display:grid;grid-template-columns:2fr 110px 90px 32px;gap:8px;align-items:center;margin-bottom:6px}.gr-row input,.gr-row select{padding:7px 9px;border:1px solid #ddd;border-radius:5px;font-size:13px;color:#1a1a2e;background:#fff;width:100%}.gr-row input:focus,.gr-row select:focus{outline:none;border-color:#4f8ef7}.pa-section{margin-bottom:20px}.pa-section h3{font-size:14px;font-weight:600;margin-bottom:4px}.pa-section .hint{font-size:12px;color:#888;margin-bottom:12px}.pa-divider{border-top:1px solid #eee;margin:20px 0}.pa-field-row{display:grid;grid-template-columns:1fr 140px;gap:16px;max-width:560px;margin-bottom:4px}.pa-inline-field{display:flex;flex-direction:column;gap:5px}.pa-inline-field label{font-size:12px;font-weight:600;color:#555}.pa-inline-field input,.pa-inline-field select{padding:8px 10px;border:1px solid #ddd;border-radius:5px;font-size:14px;color:#1a1a2e;background:#fff;width:100%}.pa-inline-field input:focus,.pa-inline-field select:focus{outline:none;border-color:#4f8ef7}.pa-tr-header{display:grid;grid-template-columns:2fr 100px 140px 2fr 32px;gap:8px;font-size:11px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.05em;padding-bottom:8px;border-bottom:1px solid #eee;margin-bottom:8px}.pa-tr-row{display:grid;grid-template-columns:2fr 100px 140px 2fr 32px;gap:8px;align-items:center;margin-bottom:6px}.pa-tr-row input,.pa-tr-row select{padding:7px 9px;border:1px solid #ddd;border-radius:5px;font-size:13px;color:#1a1a2e;background:#fff;width:100%}.pa-tr-row input:focus,.pa-tr-row select:focus{outline:none;border-color:#4f8ef7}.excl-list{display:flex;flex-direction:column;gap:8px}.excl-item{display:flex;align-items:center;gap:8px}.excl-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;flex-shrink:0}.excl-item label{font-size:14px;cursor:pointer}#toast{position:fixed;bottom:24px;right:24px;background:#1a1a2e;color:#fff;padding:10px 18px;border-radius:6px;font-size:13px;opacity:0;transition:opacity .25s;pointer-events:none}#toast.show{opacity:1}#toast.error{background:#c00}
