:root{--yellow: #FFD700;--yellow-light: #FFF8DC;--green: #00A651;--green-dark: #007A3D;--red-polka: #E30613;--bg: #FAFAFA;--text: #1a1a1a;--text-muted: #666;--border: #e0e0e0;--card-bg: #ffffff;--shadow: 0 2px 8px rgba(0,0,0,.08)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app-header{background:var(--green-dark);color:#fff;padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 4px #0003}.app-header h1{font-size:1.5rem;font-weight:700}.app-nav{display:flex;gap:1rem}.app-nav a{color:#fffc;text-decoration:none;padding:.5rem 1rem;border-radius:4px;font-weight:500;transition:all .2s}.app-nav a:hover{background:#ffffff1a;color:#fff}.app-nav a.active{background:var(--yellow);color:var(--text);font-weight:700}.app-main{max-width:1100px;margin:2rem auto;padding:0 1rem}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.calendar-header{font-weight:700;text-align:center;padding:.5rem;color:var(--text-muted);font-size:.8rem;text-transform:uppercase}.calendar-day{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:.5rem;min-height:90px;display:flex;flex-direction:column;transition:transform .1s}.calendar-day:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.calendar-day.clickable{cursor:pointer}.calendar-day.stage-day{border-left:4px solid var(--green)}.calendar-day.stage-day.mountain{border-left-color:var(--red-polka)}.calendar-day.stage-day.time-trial{border-left-color:var(--yellow)}.calendar-day.rest-day{background:#f5f5f5;opacity:.7}.calendar-day.empty{border:none;background:transparent}.day-number{font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem}.day-stage-name{font-size:.8rem;font-weight:600;color:var(--text);line-height:1.2}.day-stage-type{font-size:.65rem;text-transform:uppercase;margin-top:auto;padding-top:.25rem}.day-stage-type.flat{color:var(--green)}.day-stage-type.mountain{color:var(--red-polka)}.day-stage-type.time-trial{color:#b8860b}.leaderboard{background:var(--card-bg);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.leaderboard-title{padding:1.5rem;font-size:1.3rem;font-weight:700;border-bottom:2px solid var(--border)}.leaderboard-title.gc{border-bottom-color:var(--yellow)}.leaderboard-title.kom{border-bottom-color:var(--red-polka)}.leaderboard-row{display:flex;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--border);transition:background .1s}.leaderboard-row:hover{background:var(--yellow-light)}.leaderboard-row:last-child{border-bottom:none}.leaderboard-rank{width:40px;font-weight:700;font-size:1.1rem;color:var(--text-muted)}.leaderboard-rank.first{color:var(--yellow);font-size:1.3rem}.leaderboard-rank.second{color:silver}.leaderboard-rank.third{color:#cd7f32}.leaderboard-avatar{width:40px;height:40px;border-radius:50%;margin-right:1rem;object-fit:cover}.leaderboard-name{flex:1;font-weight:500}.leaderboard-points{font-weight:700;font-size:1.1rem}.leaderboard-gap{color:var(--text-muted);font-size:.85rem;margin-left:1rem;min-width:60px;text-align:right}.section-title{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem}.join-btn{display:inline-block;background:#fc4c02;color:#fff;padding:.75rem 1.5rem;border-radius:8px;text-decoration:none;font-weight:600;margin-top:1rem;transition:background .2s}.join-btn:hover{background:#e0440a}.classification-scroll{overflow-x:auto;border-radius:12px;box-shadow:var(--shadow)}.classification-table{width:100%;border-collapse:collapse;background:var(--card-bg);font-size:.85rem;min-width:600px}.classification-table th,.classification-table td{padding:.5rem .6rem;border:1px solid var(--border);text-align:center;white-space:nowrap}.classification-table thead th{background:var(--green-dark);color:#fff;font-weight:600;position:sticky;top:0;z-index:2}.classification-table .sub-header th{background:#f5f5f5;color:var(--text-muted);font-size:.7rem;text-transform:uppercase;font-weight:600;padding:.3rem .4rem}.gc-col-header{color:#b8860b!important}.kom-col-header{color:var(--red-polka)!important}.bonus-col-header{color:var(--green-dark)!important}.athlete-header{display:flex;align-items:center;justify-content:center;gap:.4rem}.avatar-small{width:24px;height:24px;border-radius:50%;object-fit:cover}.sticky-col{position:sticky;left:0;background:var(--card-bg);z-index:1}.stage-col{text-align:left;max-width:180px;min-width:120px;padding-left:.75rem}.date-col{text-align:center;white-space:nowrap;font-size:.8rem;min-width:80px;max-width:90px}.sticky-col-2{position:sticky;left:90px;background:inherit;z-index:2}.stage-num{font-weight:700;color:var(--green-dark);margin-right:.3rem}.stage-label{color:var(--text);font-size:.8rem}.pts-cell{font-size:.9rem;color:var(--text-muted);padding:.5rem .6rem;min-width:48px;text-align:center}.pts-cell.gc-cell{color:#b8860b}.pts-cell.kom-cell{color:var(--red-polka)}.pts-cell.bonus-cell{color:var(--green-dark)}.pts-cell.has-bonus{font-weight:600;font-style:italic}.link-cell a{text-decoration:none;display:inline-flex;align-items:center}.link-cell a:hover{opacity:.7}.editable-cell{cursor:pointer;position:relative}.editable-cell:hover{background:#0000000f!important;outline:2px solid var(--green-dark);outline-offset:-2px}.editing-cell{padding:0!important}.cell-input{width:100%;height:100%;border:2px solid var(--green-dark);background:#fff;text-align:center;font-size:.85rem;font-weight:600;padding:.3rem;box-sizing:border-box;outline:none}.cell-input:focus{box-shadow:0 0 0 2px #228b224d}.classification-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.classification-header .section-title{margin-bottom:0}.sync-area{display:flex;align-items:center;gap:.75rem}.sync-message{font-size:.8rem;color:var(--text-muted)}.admin-hint{font-size:.8rem;color:var(--text-muted);margin:-.5rem 0 .75rem;font-style:italic}.classification-table tbody tr:hover td,.classification-table tbody tr:hover .sticky-col{background:var(--yellow-light)}.totals-row td,.grand-total-row td{background:#f9f9f9;font-weight:600}.totals-row .sticky-col,.grand-total-row .sticky-col{background:#f9f9f9}.total-cell{font-size:.9rem;color:var(--text)}.gc-leader{background:var(--yellow)!important;color:var(--text)!important;font-weight:700}.kom-leader{background:#fdecea!important;color:var(--red-polka)!important;font-weight:700}.grand-total-cell{font-size:1rem}.athlete-col{min-width:120px}.pts-col{width:48px;min-width:48px}.leaderboard-table{width:100%;border-collapse:collapse;background:var(--card-bg);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.leaderboard-table thead{background:var(--green-dark);color:#fff}.gc-table thead{background:linear-gradient(135deg,#b8860b,gold);color:var(--text)}.kom-table thead{background:linear-gradient(135deg,#8B0000,var(--red-polka));color:#fff}.leaderboard-table th{padding:.75rem 1rem;text-align:left;font-weight:600;font-size:.85rem;text-transform:uppercase}.leaderboard-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border)}.leaderboard-table tbody tr:hover{background:var(--yellow-light)}.leaderboard-table .leader-row{background:#ffd7001a;font-weight:600}.kom-table .leader-row{background:#e306130d}.leaderboard-table .rank{font-weight:700;font-size:1.1rem;width:50px}.leaderboard-table .points{font-weight:700;font-size:1.1rem}.leaderboard-table .gap{color:var(--text-muted);font-size:.9rem}.athlete-cell{display:flex;align-items:center;gap:.5rem}.avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.empty-state{text-align:center;padding:3rem;color:var(--text-muted);font-size:1.1rem}.loading{text-align:center;padding:3rem;color:var(--text-muted)}.btn{padding:.5rem 1rem;border:1px solid var(--border);border-radius:6px;background:var(--card-bg);color:var(--text);cursor:pointer;font-size:.9rem;font-weight:500;transition:all .15s}.btn:hover{background:#f0f0f0}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--green-dark);color:#fff;border-color:var(--green-dark)}.btn-primary:hover{background:var(--green)}.btn-danger{color:#c0392b;border-color:#c0392b}.btn-danger:hover{background:#fdecea}.btn-small{padding:.3rem .6rem;font-size:.8rem}.admin-login{max-width:360px;margin:4rem auto;text-align:center}.login-form{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.login-form input{padding:.75rem;border:1px solid var(--border);border-radius:6px;font-size:1rem}.error{color:#c0392b;font-size:.9rem;margin-top:.5rem}.admin-header-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.admin-table .actions{display:flex;gap:.5rem}.stage-form-wrapper{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:var(--shadow)}.stage-form h3{margin-bottom:1rem;font-size:1.2rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;margin-bottom:1rem}.form-grid label,.full-width{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:500;color:var(--text-muted)}.full-width{margin-bottom:1rem}.form-grid input,.form-grid select,.full-width textarea{padding:.5rem;border:1px solid var(--border);border-radius:4px;font-size:.95rem;color:var(--text)}.full-width textarea{resize:vertical}.segments-section{margin-top:1rem;border-top:1px solid var(--border);padding-top:1rem}.segments-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.segments-header h4{font-size:1rem;margin:0}.segment-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.segment-row input[type=number]{width:140px;padding:.4rem;border:1px solid var(--border);border-radius:4px}.segment-row input[type=text]{flex:1;min-width:150px;padding:.4rem;border:1px solid var(--border);border-radius:4px}.segment-row select{padding:.4rem;border:1px solid var(--border);border-radius:4px}.checkbox-label{display:flex;align-items:center;gap:.3rem;font-size:.85rem;white-space:nowrap}.form-actions{display:flex;gap:.75rem;margin-top:1.5rem}.stage-detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.stage-detail-modal{background:var(--card-bg);border-radius:12px;padding:2rem;max-width:600px;width:100%;max-height:80vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #0000004d}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text-muted);line-height:1}.modal-close:hover{color:var(--text)}.stage-detail-modal h3{font-size:1.3rem;margin-bottom:1rem;padding-right:2rem}.stage-detail-meta{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem;font-size:.9rem;color:var(--text-muted)}.stage-badge{padding:.2rem .6rem;border-radius:4px;font-size:.8rem;font-weight:600}.stage-badge.flat{background:#e8f5e9;color:var(--green-dark)}.stage-badge.mountain{background:#fdecea;color:var(--red-polka)}.stage-badge.time-trial{background:#fff8e1;color:#b8860b}.stage-detail-points{display:flex;gap:1.5rem;margin-bottom:1rem;font-size:.9rem}.stage-detail-desc{color:var(--text-muted);font-size:.9rem;margin-bottom:1.5rem;line-height:1.5}.stage-segments h4{font-size:1rem;margin-bottom:.75rem}.segment-list{list-style:none;padding:0;margin:0}.segment-list li{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;border:1px solid var(--border);border-radius:6px;margin-bottom:.5rem;transition:background .1s}.segment-list li:hover{background:#f8f8f8}.segment-list li.kom-segment{border-left:3px solid var(--red-polka)}.segment-link{color:var(--green-dark);text-decoration:none;font-weight:500;display:flex;align-items:center;gap:.3rem}.segment-link:hover{text-decoration:underline}.segment-link-icon{font-size:.8rem;opacity:.6}.kom-badge{font-size:.75rem;background:#fdecea;color:var(--red-polka);padding:.2rem .5rem;border-radius:4px;font-weight:600}@media (max-width: 768px){.app-header{flex-direction:column;padding:.75rem 1rem;gap:.5rem}.app-header h1{font-size:1.2rem}.app-nav{gap:.25rem;width:100%;justify-content:center}.app-nav a{padding:.4rem .6rem;font-size:.8rem}.app-main{margin:1rem auto;padding:0 .5rem}.section-title{font-size:1.2rem;margin-bottom:1rem}.calendar-grid{grid-template-columns:repeat(2,1fr);gap:.4rem}.calendar-header{display:none}.calendar-day{min-height:70px;padding:.4rem}.day-stage-name{font-size:.7rem}.day-stage-type{font-size:.6rem}.calendar-day.empty{display:none}.classification-header{flex-direction:column;align-items:flex-start}.sync-area{width:100%}.sync-area .btn{flex:1}.classification-table{font-size:.75rem}.classification-table th,.classification-table td{padding:.35rem .4rem}.pts-cell{font-size:.75rem;padding:.35rem .3rem;min-width:36px}.pts-col{width:36px;min-width:36px}.stage-col{max-width:100px;min-width:80px;font-size:.7rem}.date-col{font-size:.65rem;min-width:60px;max-width:65px}.avatar-small{width:18px;height:18px}.athlete-col{min-width:80px}.athlete-header span{font-size:.7rem}.stage-detail-modal{padding:1.25rem;max-height:90vh;margin:.5rem}.stage-detail-modal h3{font-size:1.1rem}.stage-detail-meta{gap:.5rem;font-size:.8rem}.stage-detail-points{flex-direction:column;gap:.5rem}.admin-header-bar{flex-direction:column;gap:.75rem;align-items:flex-start}.admin-table{font-size:.8rem}.admin-table th,.admin-table td{padding:.5rem .4rem}.admin-table .actions{flex-direction:column;gap:.3rem}.form-grid{grid-template-columns:1fr 1fr;gap:.75rem}.segment-row{flex-direction:column;align-items:stretch;gap:.4rem;padding:.5rem;background:#f9f9f9;border-radius:6px;margin-bottom:.75rem}.segment-row input[type=number]{width:100%}.segment-row input[type=text]{min-width:auto}.join-btn{display:block;text-align:center}}@media (max-width: 480px){.calendar-grid,.form-grid{grid-template-columns:1fr}.app-nav a{padding:.3rem .5rem;font-size:.75rem}}
