*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f9fafb;color:#374151;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.loading{display:flex;align-items:center;justify-content:center;height:100vh;font-size:1.1rem;color:#6b7280}.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#000d27,#001640);gap:2rem}.login-box{background:#fff;padding:2.5rem;border-radius:12px;box-shadow:0 4px 24px #00000026;width:380px}.login-branding{display:flex;flex-direction:column;align-items:center;gap:.5rem}.login-logo{display:block;width:280px}.login-subtitle{color:#ffffffb3;font-size:1.1rem;letter-spacing:.1em}.login-heading{font-size:1rem;font-weight:500;color:#475569;margin-bottom:1rem;text-align:center}.login-box form{display:flex;flex-direction:column;gap:.75rem}.login-box input{padding:.6rem .75rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem}.login-box input:focus{outline:none;border-color:#0693e3}.login-box button{padding:.65rem;background:#0693e3;color:#fff;border:none;border-radius:6px;font-size:.95rem;cursor:pointer;margin-top:.25rem}.login-box button:hover{background:#0574b8}.login-box button:disabled{opacity:.6;cursor:not-allowed}.error-msg{color:#d0021b;font-size:.85rem}.app-layout{display:flex;min-height:100vh}.sidebar{width:240px;background:#000d27;color:#b3b9c4;position:fixed;top:0;left:0;height:100vh;display:flex;flex-direction:column;z-index:100}.sidebar-logo{padding:1.25rem;border-bottom:1px solid #1a2c4c}.sidebar-logo img{display:block;width:100%;max-width:180px}.sidebar-nav{flex:1;display:flex;flex-direction:column;padding:.5rem 0;overflow-y:auto}.sidebar-nav button{display:block;width:100%;text-align:left;padding:.75rem 1.25rem;background:none;border:none;border-right:2px solid transparent;color:#b3b9c4;font-size:.85rem;font-family:inherit;cursor:pointer;transition:background-color .15s,color .15s}.sidebar-nav button:hover{background:#1a2c4c4d;color:#fff}.sidebar-nav button.active{background:#0693e333;color:#0693e3;border-right-color:#0693e3}.sidebar-external-link{display:block;width:100%;box-sizing:border-box;text-align:left;padding:1rem 1.25rem .75rem;background:none;border:none;border-right:2px solid transparent;color:#b3b9c4;font-size:.85rem;font-family:inherit;cursor:pointer;transition:background-color .15s,color .15s;margin-top:.5rem;border-top:1px solid #1a2c4c}.sidebar-external-link:hover{background:#1a2c4c4d;color:#fff}.sidebar-footer{border-top:1px solid #1a2c4c;padding:1rem 1.25rem;margin-top:auto}.sidebar-email{display:block;font-size:.75rem;color:#808a9c;margin-bottom:.5rem;word-break:break-all}.btn-signout{padding:.35rem .75rem;background:transparent;color:#b3b9c4;border:1px solid #1a2c4c;border-radius:4px;cursor:pointer;font-size:.8rem;font-family:inherit;width:100%;transition:background-color .15s,color .15s}.btn-signout:hover{background:#1a2c4c4d;color:#fff}.main-content{margin-left:240px;flex:1;padding:1.5rem;background:#f9fafb;min-height:100vh}.lookup-layout{display:flex;gap:1.5rem;align-items:flex-start}.lookup-left{flex:0 0 auto;width:200px}.lookup-right{flex:1;min-width:0}.bond-input{display:flex;flex-direction:column;gap:.4rem;height:calc(100vh - 200px)}.bond-input-buttons{display:flex;gap:.4rem}.bond-input-buttons button{padding:.55rem 1rem;background:#0693e3;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer;flex:1}.bond-input-buttons button:hover{background:#0574b8}.bond-input-buttons button:disabled{opacity:.6;cursor:not-allowed}.bond-input-buttons .btn-clear{background:#fff;color:#6b7280;border:1px solid #d1d5db;flex:0 0 auto}.bond-input-buttons .btn-clear:hover{background:#f3f4f6}.bond-input .count{font-size:.8rem;color:#6b7280}.bond-input textarea{flex:1;width:100%;padding:.5rem;border:1px solid #d1d5db;border-radius:8px;font-family:SF Mono,Fira Code,monospace;font-size:.85rem;resize:none;background:#fff}.bond-input textarea:focus{outline:none;border-color:#0693e3}.error-banner{background:#fef2f2;border:1px solid #fca5a5;color:#991b1b;padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.export-buttons{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.export-buttons .result-count{font-size:.9rem;color:#6b7280;margin-right:auto}.export-buttons button{padding:.4rem 1rem;background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem;cursor:pointer}.export-buttons button:hover{background:#f3f4f6}.results-table-outer{max-width:100%}.results-table-top-scroll{overflow-x:auto;overflow-y:hidden;max-width:100%}.results-table-wrapper{overflow-x:auto;overflow-y:auto;max-width:100%;max-height:75vh;border-radius:8px;border:1px solid #f3f4f6;background:#fff;box-shadow:0 1px 2px #0000000d}.results-table{border-collapse:collapse;font-size:.72rem;white-space:nowrap}.forensics-table{width:auto;table-layout:auto}.forensics-table th,.forensics-table td{padding:.15rem .3rem}.results-table th,.results-table td{padding:.15rem .35rem;border-bottom:1px solid #f3f4f6;text-align:center}.results-table th{background:#f9fafb;font-weight:600;position:sticky;top:0;z-index:2;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.7rem;color:#475569}.results-table thead tr.filter-row th{top:1.4rem;z-index:1;padding:.1rem .15rem;cursor:default}.results-table th:hover{background:#f3f4f6}.results-table th.sorted{color:#000d27}.column-filter{width:100%;min-width:0;max-width:5rem;padding:.15rem .25rem;border:1px solid #e5e7eb;border-radius:3px;font-size:.6rem;background:#fff;color:#334155;box-sizing:border-box}.forensics-table .filter-row th:first-child .column-filter{max-width:7rem}.column-filter:focus{outline:none;border-color:#0693e3}.column-filter::placeholder{color:#c0c5cc}.results-table td.numeric,.results-table th.numeric{text-align:center}.results-table tbody tr:hover{background:#f9fafb}.pagination{display:flex;align-items:center;justify-content:space-between;padding:.4rem .2rem;font-size:.78rem;color:#475569}.pagination-bottom{border-top:1px solid #f3f4f6}.pagination-info{font-weight:500}.pagination-buttons{display:flex;gap:.3rem}.pagination-buttons button{padding:.2rem .5rem;font-size:.75rem;border:1px solid #d1d5db;border-radius:4px;background:#fff;cursor:pointer;color:#374151}.pagination-buttons button:hover:not(:disabled){background:#f3f4f6}.pagination-buttons button:disabled{opacity:.4;cursor:default}.no-results{text-align:center;padding:2rem;color:#6b7280;font-size:.95rem}.unmatched-section{margin-top:1.5rem;padding:1rem;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px}.unmatched-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.unmatched-section h3{font-size:.9rem;color:#92400e}.btn-copy-unmatched{padding:.25rem .6rem;font-size:.75rem;background:#fef3c7;border:1px solid #fbbf24;border-radius:4px;color:#92400e;cursor:pointer}.btn-copy-unmatched:hover{background:#fde68a}.unmatched-list{display:flex;flex-wrap:wrap;gap:.4rem}.unmatched-tag{display:inline-block;padding:.2rem .5rem;background:#fef3c7;border:1px solid #fbbf24;border-radius:4px;font-size:.8rem;font-family:monospace;color:#78350f}.admin-panel h2{font-size:1.2rem;margin-bottom:1rem}.admin-toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.admin-toolbar button{padding:.4rem 1rem;background:#0693e3;color:#fff;border:none;border-radius:6px;font-size:.85rem;cursor:pointer}.admin-toolbar button:hover{background:#0574b8}.admin-table-wrapper{overflow-x:auto;border-radius:8px;border:1px solid #f3f4f6;background:#fff;box-shadow:0 1px 2px #0000000d}.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}.admin-table th,.admin-table td{padding:.5rem .75rem;border-bottom:1px solid #f3f4f6;text-align:left}.admin-table th{background:#f9fafb;font-weight:600;font-size:.8rem;color:#475569}.admin-table tbody tr:hover{background:#f9fafb}.admin-table .actions{display:flex;gap:.4rem;flex-wrap:wrap}.admin-table .actions button{padding:.2rem .5rem;font-size:.75rem;border:1px solid #d1d5db;border-radius:4px;background:#fff;cursor:pointer}.admin-table .actions button:hover{background:#f3f4f6}.admin-table .actions button.danger{color:#d0021b;border-color:#fca5a5}.admin-table .actions button.danger:hover{background:#fef2f2}.badge{display:inline-block;padding:.1rem .4rem;border-radius:4px;font-size:.75rem;font-weight:600}.badge-admin{background:#dbeafe;color:#1e40af}.badge-user,.badge-active{background:#f0fdf4;color:#166534}.badge-disabled{background:#fef2f2;color:#991b1b}.create-user-form{background:#fff;border:1px solid #f3f4f6;border-radius:8px;padding:1.25rem;margin-bottom:1rem;display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap;box-shadow:0 1px 2px #0000000d}.create-user-form .field{display:flex;flex-direction:column;gap:.25rem}.create-user-form label{font-size:.8rem;font-weight:500;color:#475569}.create-user-form input,.create-user-form select{padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem}.create-user-form button{padding:.45rem 1rem;background:#0693e3;color:#fff;border:none;border-radius:6px;font-size:.85rem;cursor:pointer}.create-user-form button:hover{background:#0574b8}.success-msg{color:#166534;font-size:.85rem;margin-bottom:.5rem}.history-panel{margin-top:.75rem;border-top:1px solid #e5e7eb;padding-top:.5rem}.history-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.history-title{font-size:.8rem;font-weight:600;color:#475569}.history-clear-all{font-size:.7rem;color:#9ca3af;background:none;border:none;cursor:pointer;text-decoration:underline}.history-clear-all:hover{color:#d0021b}.history-empty{font-size:.75rem;color:#9ca3af}.history-list{display:flex;flex-direction:column;gap:.25rem;max-height:200px;overflow-y:auto}.history-entry{border:1px solid #e5e7eb;border-radius:4px;background:#fff}.history-entry-header{display:flex;justify-content:space-between;padding:.3rem .5rem;cursor:pointer;font-size:.72rem}.history-entry-header:hover{background:#f9fafb}.history-time{color:#475569}.history-count{color:#9ca3af}.history-entry-detail{padding:.3rem .5rem;border-top:1px solid #f3f4f6}.history-preview{font-size:.7rem;color:#6b7280;font-family:monospace;margin-bottom:.3rem;word-break:break-all}.history-actions{display:flex;gap:.3rem}.history-actions button{padding:.15rem .5rem;font-size:.7rem;border:1px solid #d1d5db;border-radius:3px;background:#fff;cursor:pointer}.history-actions button:hover{background:#f3f4f6}.history-actions button.danger{color:#d0021b;border-color:#fca5a5}.history-actions button.danger:hover{background:#fef2f2}.download-panel{background:#fff;border-radius:8px;padding:2rem;max-width:600px;border:1px solid #f3f4f6;box-shadow:0 1px 2px #0000000d}.download-panel h2{font-size:1.2rem;margin-bottom:.25rem}.download-description{font-size:.9rem;color:#6b7280;margin-bottom:1.5rem}.download-options{display:flex;gap:2rem;margin-bottom:1.5rem}.download-option-group{flex:1}.download-option-group h3{font-size:.85rem;font-weight:600;color:#475569;margin-bottom:.5rem}.download-option-group label{display:flex;align-items:baseline;gap:.4rem;padding:.4rem 0;cursor:pointer;font-size:.9rem;flex-wrap:wrap}.download-option-group label input[type=radio]{margin:0;flex-shrink:0;accent-color:#0693e3}.option-hint{display:block;width:100%;font-size:.75rem;color:#9ca3af;margin-left:1.2rem}.custom-datetime{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.custom-datetime input{padding:.35rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem}.custom-datetime input:focus{outline:none;border-color:#0693e3}.custom-section{margin-left:1.2rem;margin-top:.25rem}.custom-lookback{display:flex;align-items:baseline;gap:.75rem;margin-top:.5rem;font-size:.85rem}.lookback-label{font-size:.8rem;color:#6b7280;font-weight:500}.custom-lookback label{display:inline-flex;align-items:baseline;gap:.3rem;cursor:pointer;font-size:.85rem}.custom-lookback input[type=radio]{accent-color:#0693e3}.download-warning{background:#fffbeb;border:1px solid #fcd34d;color:#92400e;padding:.6rem 1rem;border-radius:6px;font-size:.85rem;margin-bottom:1rem}.download-actions{display:flex;gap:.75rem}.btn-download{padding:.65rem 1.5rem;background:#0693e3;color:#fff;border:none;border-radius:6px;font-size:.95rem;cursor:pointer}.btn-download:hover{background:#0574b8}.btn-download:disabled{opacity:.6;cursor:not-allowed}.loading-overlay{position:fixed;inset:0;background:#000d2799;display:flex;align-items:center;justify-content:center;z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loading-card{background:#fff;border-radius:12px;padding:2.5rem 3rem;text-align:center;box-shadow:0 20px 60px #0000004d;min-width:320px;max-width:440px}.loading-message{font-size:.95rem;color:#374151;font-weight:500;margin-bottom:.5rem;min-height:2.8em;line-height:1.4}.loading-elapsed{font-size:.8rem;color:#9ca3af;font-variant-numeric:tabular-nums}.stick-stage{height:100px;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;overflow:hidden}.stick-svg{width:160px;height:100px}.pushup-body{transform-origin:80px 65px;animation:pushup 1s ease-in-out infinite alternate}.sweat-drops{animation:sweatDrip 1s ease-in-out infinite}@keyframes pushup{0%{transform:rotate(0)}to{transform:rotate(-8deg)}}@keyframes sweatDrip{0%,to{opacity:0;transform:translateY(0)}50%{opacity:1;transform:translateY(4px)}}.runner{animation:runBounce .4s ease-in-out infinite alternate}.run-arm-front{animation:runArmF .4s ease-in-out infinite alternate}.run-arm-back{animation:runArmB .4s ease-in-out infinite alternate}.run-leg-front{animation:runLegF .4s ease-in-out infinite alternate}.run-leg-back{animation:runLegB .4s ease-in-out infinite alternate}.ground-dashes{animation:groundScroll .6s linear infinite}@keyframes runBounce{0%{transform:translateY(0)}to{transform:translateY(-3px)}}@keyframes runArmF{0%{transform:rotate(-25deg);transform-origin:58px 33px}to{transform:rotate(25deg);transform-origin:58px 33px}}@keyframes runArmB{0%{transform:rotate(25deg);transform-origin:58px 33px}to{transform:rotate(-25deg);transform-origin:58px 33px}}@keyframes runLegF{0%{transform:rotate(-20deg);transform-origin:58px 48px}to{transform:rotate(20deg);transform-origin:58px 48px}}@keyframes runLegB{0%{transform:rotate(20deg);transform-origin:58px 48px}to{transform:rotate(-20deg);transform-origin:58px 48px}}@keyframes groundScroll{0%{transform:translate(0)}to{transform:translate(-30px)}}.jj-body{animation:jjBounce .6s ease-in-out infinite}.jj-arm-l{animation:jjArmL .6s ease-in-out infinite}.jj-arm-r{animation:jjArmR .6s ease-in-out infinite}.jj-leg-l{animation:jjLegL .6s ease-in-out infinite}.jj-leg-r{animation:jjLegR .6s ease-in-out infinite}@keyframes jjBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes jjArmL{0%,to{transform:rotate(0);transform-origin:60px 30px}50%{transform:rotate(-40deg);transform-origin:60px 30px}}@keyframes jjArmR{0%,to{transform:rotate(0);transform-origin:60px 30px}50%{transform:rotate(40deg);transform-origin:60px 30px}}@keyframes jjLegL{0%,to{transform:rotate(8deg);transform-origin:60px 48px}50%{transform:rotate(-15deg);transform-origin:60px 48px}}@keyframes jjLegR{0%,to{transform:rotate(-8deg);transform-origin:60px 48px}50%{transform:rotate(15deg);transform-origin:60px 48px}}.squat-body,.squat-bar{animation:squatDown 1.2s ease-in-out infinite}.squat-leg-l,.squat-leg-r{animation:squatLegs 1.2s ease-in-out infinite}@keyframes squatDown{0%,to{transform:translateY(0)}50%{transform:translateY(12px)}}@keyframes squatLegs{0%,to{transform:rotate(0);transform-origin:60px 45px}50%{transform:rotate(8deg);transform-origin:60px 45px}}.burpee-body{animation:burpeeMove 1.4s ease-in-out infinite}.burpee-lines{animation:burpeeLines 1.4s ease-in-out infinite}@keyframes burpeeMove{0%,to{transform:translateY(0) scaleY(1)}25%{transform:translateY(18px) scaleY(.7)}50%{transform:translateY(20px) scaleY(.5) rotate(5deg)}75%{transform:translateY(-10px) scaleY(1.05)}}@keyframes burpeeLines{0%,60%{opacity:0}75%{opacity:1}to{opacity:0}}.rope-body{animation:ropeJump .6s ease-in-out infinite}.rope-arc{animation:ropeSpin .6s linear infinite}.rope-leg-l,.rope-leg-r{animation:ropeTuck .6s ease-in-out infinite}@keyframes ropeJump{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes ropeSpin{0%{transform:rotateX(0);transform-origin:60px 40px}to{transform:rotateX(360deg);transform-origin:60px 40px}}@keyframes ropeTuck{0%,to{transform:rotate(0);transform-origin:60px 46px}50%{transform:rotate(5deg);transform-origin:60px 46px}}.forensics-panel{padding:0}.forensics-panel h2{font-size:1.2rem;margin-bottom:1rem}.forensics-inputs{background:#fff;border-radius:8px;border:1px solid #f3f4f6;padding:1rem 1.25rem;margin-bottom:1rem;box-shadow:0 1px 2px #0000000d}.forensics-row{display:flex;gap:1rem;margin-bottom:.75rem;flex-wrap:wrap}.forensics-field{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:140px}.forensics-field label{font-size:.8rem;font-weight:500;color:#475569}.forensics-field label .optional{font-weight:400;color:#9ca3af}.forensics-field input{padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem}.forensics-field input:focus{outline:none;border-color:#0693e3}.datetime-pair{display:flex;gap:.4rem}.datetime-pair input{flex:1}.forensics-presets{display:flex;align-items:center;gap:.4rem;margin-bottom:.75rem}.preset-label{font-size:.8rem;color:#6b7280;margin-right:.25rem}.forensics-presets button{padding:.25rem .6rem;font-size:.8rem;border:1px solid #d1d5db;border-radius:4px;background:#fff;cursor:pointer;color:#475569}.forensics-presets button:hover{background:#f3f4f6}.forensics-actions{display:flex}.btn-search{padding:.5rem 1.5rem;background:#0693e3;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer}.btn-search:hover{background:#0574b8}.btn-search:disabled{opacity:.6;cursor:not-allowed}.bond-info-bar{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;padding:.6rem 1rem;background:#f9fafb;border:1px solid #f3f4f6;border-radius:6px;font-size:.8rem;color:#475569;margin-bottom:.5rem}.forensics-result-count{font-size:.85rem;color:#6b7280;margin-bottom:.5rem}.forensics-table tbody tr.row-cancelled{background:#fef2f2}.forensics-table tbody tr.row-cancelled td{text-decoration:line-through;color:#991b1b}
