*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;background:#0f1117;color:#e8ecf0;min-height:100vh;line-height:1.4}a{color:#4ade80;text-decoration:none}.container{max-width:860px;margin:0 auto;padding:24px 16px}.header{display:flex;align-items:center;gap:12px;padding:16px 24px;background:#161b22;border-bottom:1px solid #21262d;margin-bottom:32px;position:sticky;top:0;z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.header-title{font-size:1.25rem;font-weight:700;color:#4ade80;margin:0}.header-logo{font-size:1.25rem;line-height:1}.header-divider,.header-context{font-size:.875rem;color:#8b949e}.card{background:#161b22;border:1px solid #21262d;border-radius:12px;padding:24px;margin-bottom:20px}.card h2{font-size:1rem;font-weight:600;color:#c9d1d9;margin-bottom:16px}.card h3{font-size:.875rem;font-weight:600;color:#8b949e;margin-bottom:12px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;border:none;transition:opacity .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:hover:not(:disabled){opacity:.85}.btn-primary{background:#238636;color:#fff}.btn-secondary{background:#21262d;color:#c9d1d9;border:1px solid #30363d}.btn-danger{background:#b91c1c;color:#fff}.btn-sm{padding:5px 10px;font-size:.8rem}.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.badge-available{background:#14532d;color:#4ade80}.badge-unavailable{background:#450a0a;color:#f87171}.badge-maybe{background:#422006;color:#fb923c}.badge-none{background:#1f2937;color:#6b7280}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.8rem;color:#8b949e;margin-bottom:6px;font-weight:500}.form-group input,.form-group textarea,.form-group select{width:100%;background:#0d1117;border:1px solid #30363d;border-radius:8px;color:#c9d1d9;padding:8px 12px;font-size:.875rem;font-family:inherit}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:#4ade80}.form-group textarea{resize:vertical;min-height:64px}.avail-group{display:flex;gap:10px;flex-wrap:wrap}.avail-option{flex:1;min-width:100px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px;border-radius:10px;border:2px solid #21262d;cursor:pointer;transition:border-color .15s,background .15s;font-size:.875rem;font-weight:500}.avail-option input{display:none}.avail-option.selected-available{border-color:#4ade80;background:#14532d22;color:#4ade80}.avail-option.selected-unavailable{border-color:#f87171;background:#450a0a22;color:#f87171}.avail-option.selected-maybe{border-color:#fb923c;background:#42200622;color:#fb923c}table{width:100%;border-collapse:collapse;font-size:.875rem}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:640px}.is-highlight td{background:#1f3a5f}.font-semibold{font-weight:600}th{text-align:left;padding:8px 12px;font-weight:600;color:#6b7280;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #21262d}td{padding:10px 12px;border-bottom:1px solid #161b22;color:#c9d1d9}tr:last-child td{border-bottom:none}tr:hover td{background:#161b2233}.tee-group{display:flex;align-items:flex-start;gap:16px;padding:14px 0;border-bottom:1px solid #21262d}.tee-group:last-child{border-bottom:none}.tee-time{font-size:1rem;font-weight:700;color:#4ade80;min-width:72px}.tee-players{display:flex;flex-wrap:wrap;gap:8px}.player-chip{background:#21262d;border-radius:99px;padding:4px 12px;font-size:.8rem;color:#c9d1d9}.week-pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.week-pill{padding:5px 12px;border-radius:99px;font-size:.8rem;font-weight:600;cursor:pointer;border:2px solid #21262d;background:transparent;color:#6b7280;transition:all .15s}.week-pill:hover{border-color:#4ade80;color:#4ade80}.week-pill.active{background:#4ade80;border-color:#4ade80;color:#0d1117}.alert{padding:12px 16px;border-radius:8px;font-size:.875rem;margin-bottom:16px}.alert-success{background:#14532d33;border:1px solid #4ade80;color:#4ade80}.alert-error{background:#450a0a33;border:1px solid #f87171;color:#f87171}.alert-info{background:#1e3a5f33;border:1px solid #60a5fa;color:#60a5fa}.spinner{display:inline-block;width:20px;height:20px;border:2px solid #21262d;border-top-color:#4ade80;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center{display:flex;justify-content:center;align-items:center;padding:48px}.text-muted{color:#6b7280;font-size:.875rem}.flex-row{display:flex;align-items:center;gap:10px}.flex-between{display:flex;align-items:center;justify-content:space-between}.center-card{text-align:center}.section-note{margin-bottom:16px;font-size:.875rem}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.landing-wrap{flex-direction:column;gap:12px;text-align:center}.landing-icon{font-size:2rem}.landing-title{color:#4ade80}.landing-example{font-size:.75rem}.landing-code{color:#fb923c}.week-nav{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center}.week-nav-center{text-align:center}.week-nav-title{margin:0}.week-nav-date{font-size:.875rem;display:block}.week-nav-actions{margin-top:8px;display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.badge-active{margin-top:4px;display:inline-block;background:#4a3000;color:#f0b429;border:1px solid #f0b429}.tab-row{display:flex;gap:4px;margin-bottom:20px}.tab-btn{min-width:110px;justify-content:center}.day-grid{display:grid;gap:14px;margin-top:8px}.day-row{display:grid;gap:8px;padding:10px 0;border-top:1px solid #21262d}.day-grid .day-row:first-child{border-top:none;padding-top:0}.day-row-top{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:8px;align-items:center}.day-label{font-size:.875rem;color:#8b949e}.day-options{display:flex;gap:8px;flex-wrap:wrap}.day-option{padding:5px 10px;font-size:.8rem;border-radius:8px;border:1px solid #30363d;cursor:pointer;background:#161b22;color:#8b949e;transition:border-color .15s,background .15s,color .15s;min-height:38px}.day-option.is-preferred,.day-option.is-possible,.day-option.is-unavailable{border-color:#58a6ff;background:#1f3a5f;color:#58a6ff;font-weight:600}.day-start-time{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:.75rem;color:#8b949e;white-space:nowrap}.day-select{background:#0d1117;border:1px solid #30363d;border-radius:8px;color:#c9d1d9;padding:5px 8px;font-size:.8rem}.player-save-wrap{display:flex;margin-top:6px}.player-save-btn{min-width:160px}.summary-grid{display:grid;gap:8px}.summary-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.summary-day-label{width:90px;font-size:.875rem;color:#8b949e}.summary-value{font-size:.875rem;color:#c9d1d9}.summary-start-time{font-size:.8rem;color:#8b949e}.summary-note{font-size:.875rem;color:#8b949e;margin-top:4px}.summary-note-value{color:#c9d1d9}.add-player-form{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.add-player-field{flex:1;min-width:180px;margin-bottom:0}.copy-link-wrap{display:flex;align-items:center;gap:6px}.token-preview{font-size:.7rem;color:#fb923c;background:#0d1117;padding:2px 6px;border-radius:4px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.editor-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.editor-title{margin:0}.editor-meta{font-size:.8rem}.editor-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.dashboard-title{margin:0}.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.note-cell{font-size:.8rem}.season-grid{display:grid;gap:10px}.season-row-main{display:flex;align-items:center;gap:12px}.season-week-label{width:60px;font-size:.875rem;color:#8b949e;flex-shrink:0}.season-date-input{background:#0d1117;border:1px solid #30363d;border-radius:8px;color:#c9d1d9;padding:6px 10px;font-size:.875rem;width:170px}.season-date-input.has-error{border-color:#f85149}.season-error-text{font-size:.8rem;color:#f85149}@media (max-width: 840px){.container{padding:18px 12px;padding-bottom:calc(72px + env(safe-area-inset-bottom))}.header{padding:14px 16px;gap:8px;margin-bottom:18px;flex-wrap:wrap}.header-title{font-size:1.1rem;flex:1;min-width:160px}.header-divider{display:none}.header-context{width:100%;margin-left:28px;font-size:.82rem}.card{padding:16px;margin-bottom:14px}.week-nav{grid-template-columns:1fr 1fr;grid-template-areas:"center center" "prev next"}.week-nav>button:first-child{grid-area:prev;justify-content:center}.week-nav>button:last-child{grid-area:next;justify-content:center}.week-nav-center{grid-area:center}.tab-row{width:100%;overflow-x:auto;padding-bottom:2px}.tab-btn{min-width:96px;flex:1}.day-row-top{grid-template-columns:1fr;gap:8px}.day-label{font-weight:600}.day-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.day-start-time{margin-left:0;justify-content:flex-start}.player-save-wrap{position:sticky;bottom:calc(8px + env(safe-area-inset-bottom));z-index:20;padding:8px;border-radius:12px;background:linear-gradient(180deg,#0f1117b3,#0f1117f2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.player-save-btn{width:100%;justify-content:center;min-height:46px;font-weight:600}.editor-header,.dashboard-header{flex-direction:column;align-items:stretch;gap:10px}.editor-actions{justify-content:stretch}.editor-actions .btn{flex:1;justify-content:center}.add-player-form .btn{width:100%;justify-content:center}.season-row-main{display:grid;grid-template-columns:1fr;gap:8px;align-items:start}.season-week-label{width:auto}.season-date-input,.season-row-main .btn{width:100%}}@media (max-width: 560px){.center{padding:28px 12px}.landing-icon{font-size:1.8rem}.landing-title{font-size:1.45rem}.btn{min-height:42px}.header{padding:12px}.day-options{grid-template-columns:1fr}.day-option{justify-content:flex-start;text-align:left}.summary-day-label{width:100%;font-weight:600}.copy-link-wrap{flex-direction:column;align-items:flex-start}.token-preview{max-width:100%}.row-actions{flex-direction:column}.row-actions .btn{width:100%;justify-content:center}}
