*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #2563eb;--primary-hover: #1d4ed8;--secondary: #6b7280;--success: #16a34a;--warning: #d97706;--danger: #dc2626;--bg: #f9fafb;--card-bg: #ffffff;--text: #111827;--text-light: #6b7280;--border: #e5e7eb;--radius: 8px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}.header{background:var(--card-bg);border-bottom:1px solid var(--border);padding:12px 16px;position:sticky;top:0;z-index:100}.header-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.header-title{font-size:1.25rem;font-weight:700;color:var(--primary);display:flex;align-items:center;gap:8px}.header-logo{width:36px;height:36px;object-fit:contain}.header-info{display:flex;align-items:center;gap:8px}.year-select{padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem}.role-badge{background:var(--primary);color:#fff;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:500}.nav{display:flex;gap:4px;margin-top:8px;overflow-x:auto}.nav-link{padding:8px 16px;text-decoration:none;color:var(--text-light);border-radius:var(--radius);font-weight:500;white-space:nowrap}.nav-link.active{background:var(--primary);color:#fff}.main-content{padding:16px;max-width:1200px;margin:0 auto}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 20px;border:none;border-radius:var(--radius);font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-large{padding:16px 32px;font-size:1.125rem;min-height:56px;width:100%}.btn-small{padding:6px 12px;font-size:.8rem;margin:2px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--secondary);color:#fff}.btn-secondary:hover:not(:disabled){background:#4b5563}.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover:not(:disabled){background:#b45309}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:4px;font-weight:500;font-size:.875rem}.form-input,.form-select{width:100%;padding:12px;border:1px solid var(--border);border-radius:var(--radius);font-size:1rem}.form-select-large{font-size:1.125rem;padding:16px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 600px){.form-row{grid-template-columns:1fr}}.button-group{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}.button-group .btn-large{flex:1;min-width:140px}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px;background:var(--bg)}.login-card{background:var(--card-bg);padding:32px;border-radius:12px;box-shadow:0 4px 12px #0000001a;width:100%;max-width:400px}.login-logo{display:block;width:180px;height:auto;margin:0 auto 16px;object-fit:contain}.login-title{text-align:center;color:var(--primary);font-size:1.75rem;margin-bottom:4px}.login-subtitle{text-align:center;color:var(--text-light);font-size:1rem;font-weight:400;margin-bottom:24px}.message,.error-message{padding:12px 16px;border-radius:var(--radius);margin-bottom:16px;font-weight:500}.message.success{background:#dcfce7;color:#166534}.message.error,.error-message{background:#fef2f2;color:#991b1b}.table-container{overflow-x:auto;overflow-y:auto;max-height:500px;margin-top:16px;border:1px solid var(--border);border-radius:var(--radius)}.table{width:100%;border-collapse:collapse;font-size:.875rem}.table th,.table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}.table th{background:var(--bg);font-weight:600;position:sticky;top:0;z-index:10}.table tr:hover{background:#f3f4f6}.status-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:600}.status-on-route{background:#dbeafe;color:#1e40af}.status-finished{background:#dcfce7;color:#166534}.status-retired{background:#fef2f2;color:#991b1b}.status-not-started{background:#f3f4f6;color:#4b5563}.status-non-starter{background:#fef3c7;color:#92400e}.ineligible{opacity:.7}.ineligible-flag{color:var(--danger);font-weight:600;font-size:.75rem}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}.metric-card{background:var(--card-bg);padding:16px;border-radius:var(--radius);text-align:center;border:1px solid var(--border)}.metric-value{font-size:2rem;font-weight:700}.metric-label{font-size:.8rem;color:var(--text-light);margin-top:4px}.metric-onroute .metric-value{color:var(--primary)}.metric-finished .metric-value{color:var(--success)}.metric-retired .metric-value{color:var(--danger)}.dashboard-controls{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:16px}.filter-group{display:flex;flex-direction:column;gap:4px}.filter-group label{font-size:.75rem;font-weight:500}.checkpoint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:12px}.checkpoint-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px;text-align:center;overflow:hidden}.checkpoint-name{font-weight:600;margin-bottom:4px}.checkpoint-stats{display:flex;flex-direction:column;gap:2px;font-size:.75rem}.passed{color:var(--success)}.remaining{color:var(--text-light)}.rankings-tabs{display:flex;gap:4px;margin-bottom:16px;overflow-x:auto;padding-bottom:4px}.tab{padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card-bg);cursor:pointer;white-space:nowrap;font-size:.875rem}.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.checkpoint-page{max-width:600px;margin:0 auto}.checkpoint-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.event-year-badge{background:var(--bg);padding:4px 12px;border-radius:var(--radius);font-weight:500}.checkpoint-form{background:var(--card-bg);padding:20px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:24px}.recent-logs{margin-top:24px}.admin-sections{display:flex;flex-direction:column;gap:24px}.admin-section{background:var(--card-bg);padding:20px;border-radius:var(--radius);border:1px solid var(--border)}.admin-section h3{margin-bottom:12px}.events-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.event-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius)}.event-item.active{border-color:var(--success);background:#f0fdf4}.active-badge{background:var(--success);color:#fff;padding:2px 8px;border-radius:12px;font-size:.75rem}.inline-form{display:flex;gap:8px;align-items:flex-end}.inline-form .form-input{max-width:200px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.csv-upload{background:var(--card-bg);padding:16px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:16px}.csv-upload h3{margin-bottom:4px}.upload-row{display:flex;gap:8px;align-items:center;margin-top:8px}.form-card{background:var(--card-bg);padding:20px;border-radius:var(--radius);border:1px solid var(--primary);margin-bottom:16px}.help-text{font-size:.8rem;color:var(--text-light);margin-bottom:8px}.retirement-summary{background:var(--card-bg);padding:16px;border-radius:var(--radius);border:1px solid var(--border);margin-top:20px}.retirement-details{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px}.retirement-details ul{list-style:none;padding:0}.retirement-details li{padding:4px 0;font-size:.875rem}.loading{text-align:center;padding:40px;color:var(--text-light)}.no-data{text-align:center;padding:20px;color:var(--text-light)}.checkpoint-stats-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin-bottom:16px;background:var(--card-bg);padding:12px;border-radius:var(--radius);border:1px solid var(--border)}.stat-item{text-align:center}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:var(--primary)}.stat-label{font-size:.7rem;color:var(--text-light)}.info-section{margin-top:20px;background:var(--card-bg);padding:16px;border-radius:var(--radius);border:1px solid var(--border)}.info-section h3{margin-bottom:8px;font-size:.95rem}.metric-sub{font-size:.7rem;color:var(--text-light);margin-top:2px}.cp-time-cell{font-size:.75rem;padding:4px 6px!important}.editable-time{cursor:pointer;padding:2px 4px;border-radius:4px;transition:background .2s}.editable-time:hover{background:#dbeafe}.podium-row{background:#fefce8!important}.podium-cell{font-size:.75rem;white-space:nowrap}.podium-confirmed{color:#166534;font-weight:600}.podium-provisional{color:#92400e;font-weight:500}.rankings-legend{margin-top:20px;padding:12px 16px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);font-size:.8rem}.rankings-legend h4{margin-bottom:4px}.rankings-legend p{margin:4px 0}.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-form .form-input{max-width:250px}.bulk-upload-section{background:var(--card-bg);padding:16px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:24px}.bulk-upload-section h3{margin-bottom:4px;font-size:.95rem}.bulk-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}.bulk-actions input[type=file]{flex:1;min-width:150px}.certificate-prompt{background:#f0fdf4;border:1px solid var(--success);border-radius:var(--radius);padding:16px;margin-bottom:16px}.certificate-prompt p{margin-bottom:8px}.cert-actions{display:flex;gap:8px;align-items:center}.btn-success{background:var(--success);color:#fff;padding:10px 20px;border:none;border-radius:var(--radius);font-size:1rem;font-weight:500;cursor:pointer}.btn-success:hover{background:#15803d}.retirements-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;margin-bottom:16px}.retirements-panel summary{cursor:pointer;font-weight:500;font-size:.9rem}.retirements-panel[open] summary{margin-bottom:8px}.active-action{box-shadow:0 0 0 3px #0003;transform:scale(1.02)}.action-form{background:var(--bg);padding:16px;border-radius:var(--radius);border:1px solid var(--border)}.team-status-list{margin-top:20px}.team-status-list h3{margin-bottom:8px}.team-status-scroll{max-height:300px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius)}.team-status-scroll .table th{position:sticky;top:0;z-index:5}.row-arrived{background:#f0fdf4!important}.row-non-starter{opacity:.5}.entry-form-container{min-height:100vh;background:var(--bg);padding:24px 16px;display:flex;justify-content:center;align-items:flex-start}.entry-form-card{background:var(--card-bg);padding:32px;border-radius:12px;box-shadow:0 4px 12px #0000001a;width:100%;max-width:640px}.entry-form-logo{display:block;width:200px;height:auto;margin:0 auto 16px;object-fit:contain}.entry-form-title{text-align:center;color:var(--primary);font-size:1.75rem;margin-bottom:4px}.entry-form-subtitle{text-align:center;color:var(--text-light);margin-bottom:24px}.entry-form-card .form-group{margin-bottom:20px}.entry-form-card textarea.form-input{resize:vertical;min-height:80px}.declaration-text{background:#f9fafb;border:1px solid var(--border);border-radius:var(--radius);padding:12px;margin-bottom:8px;font-size:.85rem;color:var(--text-light);line-height:1.6}.payment-info{background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);padding:16px;margin-bottom:24px}.payment-info h3{margin-bottom:8px;color:var(--primary)}.payment-info ul{list-style:none;padding:0;margin-top:8px}.payment-info li{padding:4px 0;font-size:.9rem}.entry-success{text-align:center}.entry-success p{margin-bottom:12px}.entry-ref{font-size:1.25rem;background:#f0fdf4;border:1px solid var(--success);border-radius:var(--radius);padding:12px;display:inline-block}.entry-success .payment-info{text-align:left;margin-top:24px}.entries-page .page-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.entry-stats{display:flex;gap:8px}
