*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.6}:root{--bg:#0d1b2e;--surface:#152035;--surface-2:#1c2d42;--surface-3:#243650;--border:#1e3a5f;--border-light:#162d4a;--green:#34d399;--green-dark:#10b981;--green-dim:#34d3991f;--green-glow:0 0 20px #34d3992e;--gold:#fbbf24;--gold-dark:#f59e0b;--gold-dim:#fbbf241f;--red:#f87171;--red-dim:#f871711a;--text:#e2e8f0;--text-strong:#f1f5f9;--muted:#64748b;--subtle:#94a3b8;--radius:10px;--radius-lg:14px;--radius-sm:6px;--shadow:0 4px 24px #0006;--shadow-sm:0 2px 8px #0000004d;--t:.15s ease;--max-width:920px}body{background:var(--bg);color:var(--text)}a{color:var(--green);transition:color var(--t);text-decoration:none}a:hover{color:#6ee7b7}.login-page,.accept-invite-page,.forgot-password-page,.reset-password-page{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.coach-dashboard,.player-list-page,.player-detail-page,.cycle-list-page,.cycle-detail-page,.evaluation-editor-page,.coach-log-page,.parent-dashboard,.parent-cycle-history,.parent-cycle-detail,.season-manage-page{max-width:var(--max-width);margin:0 auto;padding:1.75rem 1.25rem}.login-page h1{color:var(--text-strong);letter-spacing:-.02em;text-align:center;width:100%;max-width:420px;margin-bottom:1.5rem;font-size:1.75rem;font-weight:700}.login-page form,.accept-invite-page form,.forgot-password-page form,.reset-password-page form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow);flex-direction:column;gap:1rem;padding:2rem;display:flex}.login-page .tabs{width:100%;max-width:420px}label{color:var(--subtle);flex-direction:column;gap:.35rem;font-size:.875rem;font-weight:500;display:flex}input[type=text],input[type=email],input[type=password],input[type=date],textarea,select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);transition:border-color var(--t), box-shadow var(--t);padding:.6rem .875rem;font-size:.9375rem}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,textarea:focus,select:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px #34d39926}textarea{resize:vertical;min-height:80px}select option{background:var(--surface-2)}.field-group{flex-direction:column;gap:.35rem;display:flex}.field-label{color:var(--subtle);font-size:.875rem;font-weight:500}.field-hint{color:var(--muted);margin-left:.3rem;font-size:.75rem;font-weight:400}.positions-pills{flex-wrap:wrap;gap:.5rem;margin-top:.25rem;display:flex}.position-pill{background:var(--surface-2);color:var(--muted);border:1px solid var(--border);cursor:pointer;transition:background var(--t), color var(--t), border-color var(--t), box-shadow var(--t);box-shadow:none;letter-spacing:.01em;border-radius:999px;padding:.35rem .9rem;font-size:.875rem;font-weight:500}.position-pill:hover:not(.disabled){background:var(--surface-3);color:var(--subtle);box-shadow:none}.position-pill.active{background:var(--green-dim);color:var(--green);border-color:#34d39966;box-shadow:0 0 10px #34d3991f}.position-pill.disabled{opacity:.35;cursor:not-allowed}.filter-pill{background:var(--surface);color:var(--muted);border:1px solid var(--border);cursor:pointer;transition:background var(--t), color var(--t), border-color var(--t);box-shadow:none;border-radius:999px;padding:.3rem .875rem;font-size:.8125rem;font-weight:500}.filter-pill:hover:not(.disabled){background:var(--surface-2);color:var(--subtle);box-shadow:none}.filter-pill.active{background:var(--green-dim);color:var(--green);border-color:#34d39966}button{cursor:pointer;border-radius:var(--radius);background:var(--green);color:#0a1f14;transition:background var(--t), box-shadow var(--t), transform var(--t);letter-spacing:.01em;border:none;padding:.55rem 1.25rem;font-size:.9375rem;font-weight:600}button:hover:not(:disabled){box-shadow:var(--green-glow);background:#6ee7b7}button:active:not(:disabled){transform:scale(.98)}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{background:var(--surface-2);color:var(--subtle);border:1px solid var(--border)}button.secondary:hover:not(:disabled){background:var(--surface-3);color:var(--text);box-shadow:none}button.logout-btn{color:var(--red);border:1px solid var(--border);background:0 0;flex-shrink:0;margin-left:auto;padding:.4rem .9rem;font-size:.875rem;font-weight:500}button.logout-btn:hover:not(:disabled){background:var(--red-dim);border-color:var(--red);box-shadow:none}button.publish-btn{background:var(--gold);color:#1a0f00;font-weight:700}button.publish-btn:hover:not(:disabled){background:#fcd34d;box-shadow:0 0 20px #fbbf2440}button.delete-btn{background:var(--red-dim);color:var(--red);border:1px solid #f8717140;padding:.3rem .7rem;font-size:.8125rem;font-weight:500}button.delete-btn:hover:not(:disabled){box-shadow:none;background:#f8717133}.tabs{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);gap:.375rem;margin-bottom:1.5rem;padding:.25rem;display:flex}.tabs button{color:var(--muted);border-radius:var(--radius-sm);box-shadow:none;background:0 0;border:none;flex:1;padding:.45rem .75rem;font-size:.875rem}.tabs button:hover:not(:disabled){background:var(--surface-2);color:var(--subtle);box-shadow:none}.tabs button.active{background:var(--green-dim);color:var(--green);border:1px solid #34d39933}.badge{text-transform:uppercase;letter-spacing:.07em;background:var(--surface-3);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:.2rem .6rem;font-size:.7rem;font-weight:700;display:inline-block}.badge--draft{color:var(--gold);background:#fbbf241f;border-color:#fbbf2440}.badge--published{background:var(--green-dim);color:var(--green);border-color:#34d39940}.badge--archived{background:var(--surface-3);color:var(--muted)}.badge--pending{color:var(--gold);background:#fbbf241a;border-color:#fbbf2433}.badge--accepted{background:var(--green-dim);color:var(--green);border-color:#34d39933}.badge--revoked{background:var(--red-dim);color:var(--red);border-color:#f8717133}table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-sm);overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--border-light);padding:.75rem 1.125rem}th{background:var(--surface-2);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.75rem;font-weight:700}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.25rem}.dashboard-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.75rem;display:flex}.dashboard-header h1{color:var(--text-strong);letter-spacing:-.02em;flex:1;margin:0;font-size:1.625rem;font-weight:700}h1{color:var(--text-strong);letter-spacing:-.02em;margin-bottom:1.25rem;font-size:1.625rem;font-weight:700}h2{color:var(--subtle);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.875rem;font-size:1rem;font-weight:600}section{margin-top:2rem}section h2{font-size:.8125rem}.player-list-page>a,.player-detail-page>a,.cycle-list-page>a,.cycle-detail-page>a,.evaluation-editor-page>a,.coach-log-page>a,.parent-cycle-history>a,.parent-cycle-detail>a,.season-manage-page>a{color:var(--muted);transition:color var(--t);align-items:center;gap:.35rem;margin-bottom:1.25rem;font-size:.875rem;display:inline-flex}.player-list-page>a:hover,.player-detail-page>a:hover,.cycle-list-page>a:hover,.cycle-detail-page>a:hover,.evaluation-editor-page>a:hover,.coach-log-page>a:hover,.parent-cycle-history>a:hover,.parent-cycle-detail>a:hover,.season-manage-page>a:hover{color:var(--text)}.quick-links,.parent-nav{flex-wrap:wrap;gap:.625rem;margin:1rem 0;display:flex}.quick-links a,.parent-nav a{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--subtle);transition:background var(--t), color var(--t), border-color var(--t);align-items:center;padding:.5rem 1.125rem;font-size:.9rem;font-weight:500;display:inline-flex}.quick-links a:hover,.parent-nav a:hover{background:var(--surface-2);color:var(--text);border-color:var(--green)}.photo-upload{flex-direction:column;align-items:flex-start;gap:.625rem;display:flex}.player-photo{object-fit:cover;border:2px solid var(--green);border-radius:50%;width:88px;height:88px;display:block;box-shadow:0 0 16px #34d39933}.no-photo{background:var(--surface-2);border:2px dashed var(--border);width:88px;height:88px;color:var(--muted);text-align:center;border-radius:50%;justify-content:center;align-items:center;padding:.5rem;font-size:.7rem;display:flex}.upload-label{cursor:pointer;background:var(--surface-2);border:1px dashed var(--green);border-radius:var(--radius-sm);color:var(--green);transition:background var(--t);align-items:center;padding:.35rem .875rem;font-size:.8125rem;font-weight:500;display:inline-flex}.upload-label:hover{background:var(--green-dim)}.player-header{align-items:flex-start;gap:1.5rem;margin-bottom:2rem;display:flex}.player-actions{flex-wrap:wrap;align-items:center;gap:.625rem;margin-top:.875rem;display:flex}.player-actions a{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--subtle);transition:background var(--t), color var(--t), border-color var(--t);align-items:center;padding:.45rem 1rem;font-size:.875rem;font-weight:500;display:inline-flex}.player-actions a:hover{background:var(--surface-3);color:var(--text);border-color:var(--green)}.score-row{border-bottom:1px solid var(--border-light);align-items:center;gap:1rem;padding:.625rem 0;display:flex}.score-row label{width:160px;color:var(--subtle);flex-shrink:0;margin:0;font-size:.9rem;font-weight:500}.score-inputs{gap:.375rem;display:flex}.score-btn{border-radius:var(--radius-sm);background:var(--surface-2);width:38px;height:38px;color:var(--muted);border:1px solid var(--border);transition:background var(--t), color var(--t), border-color var(--t), box-shadow var(--t);padding:0;font-size:.9375rem;font-weight:600}.score-btn:hover:not(:disabled){background:var(--surface-3);color:var(--subtle);box-shadow:none}.score-btn.active{background:var(--green-dim);color:var(--green);border-color:#34d39966;box-shadow:0 0 10px #34d3991a}.eval-readonly{margin-top:1rem}.score-readonly-value{color:var(--green);text-align:center;min-width:30px;font-size:1.25rem;font-weight:700}.scores-table{margin-bottom:1.75rem}.scores-table .cat-label{color:var(--text);font-weight:500}.scores-table .cat-score{color:var(--green);width:60px;font-size:1.25rem;font-weight:700}.scores-table .cat-bar{width:180px}.bar{background:var(--green);border-radius:4px;height:8px;transition:width .4s;box-shadow:0 0 8px #34d3994d}.note-row{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.note-row input{flex:1}.log-entries{flex-direction:column;gap:.75rem;margin-top:1.5rem;list-style:none;display:flex}.log-entry{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--green);border-radius:var(--radius);padding:.875rem 1.125rem}.log-entry p{color:var(--text);margin-bottom:.25rem;line-height:1.6}.log-entry small{color:var(--muted);font-size:.8rem}.cycle-list{flex-direction:column;gap:.5rem;list-style:none;display:flex}.cycle-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--t), background var(--t);align-items:center;gap:.875rem;padding:.875rem 1.125rem;display:flex}.cycle-item:hover{border-color:var(--green);background:var(--surface-2)}.attachment-list ul{flex-direction:column;gap:.5rem;list-style:none;display:flex}.attachment-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:.875rem;padding:.75rem 1rem;display:flex}.attachment-icon{font-size:1.25rem}.attachment-item .delete-btn{margin-left:auto}.filters{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.25rem;display:flex}.edit-player-form{flex-direction:column;gap:.875rem;max-width:360px;margin-top:.5rem;display:flex}.form-actions{flex-wrap:wrap;gap:.5rem;display:flex}.add-player-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-top:2.5rem;padding:1.5rem}.add-player-section h2{margin-bottom:1.25rem;font-size:.8125rem}.add-player-form{flex-direction:column;gap:1rem;display:flex}.add-player-names{grid-template-columns:1fr 1fr;gap:.625rem;display:grid}.add-player-footer{justify-content:flex-end;display:flex}.parent-list{flex-direction:column;gap:.5rem;margin-bottom:1.25rem;list-style:none;display:flex}.parent-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.parent-item div{color:var(--text);flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.resend-btn{padding:.3rem .75rem;font-size:.8125rem}.invite-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:.875rem;max-width:360px;margin-top:1.25rem;padding:1.25rem;display:flex}.invite-form h3{color:var(--subtle);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:.9rem;font-weight:600}.publish-section{margin-top:1.75rem}.published-note{color:var(--green);margin-top:1rem;font-weight:500}.evaluation-editor-page form>button[type=submit]{margin-top:1.75rem}.create-cycle-form{flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;display:flex}.create-cycle-form input{flex:1;min-width:200px}.create-season-form{flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-bottom:1.25rem;display:flex}.create-season-form input{flex:1;min-width:140px}.season-list{flex-direction:column;gap:.5rem;list-style:none;display:flex}.season-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.875rem 1.125rem;display:flex}.season-info{flex-wrap:wrap;align-items:center;gap:.875rem;display:flex}.season-dates{color:var(--muted);font-size:.875rem}.season-actions{gap:.5rem;display:flex}.cycle-label{color:var(--muted);margin-bottom:1rem;font-size:.9rem}.published-date{color:var(--muted);margin-bottom:1.5rem;font-size:.875rem}.error{color:var(--red);font-size:.875rem}.success{color:var(--green);font-size:.875rem}.hint{color:var(--muted);font-size:.8125rem}.empty{color:var(--muted);font-style:italic}.forgot-link{text-align:right;margin-top:-.25rem;font-size:.8125rem}.welcome-sub{color:var(--muted);margin-top:.125rem;font-size:.9375rem}.active-season-bar{align-items:center;gap:.625rem;margin-bottom:1.5rem;display:flex}.active-season-name{color:var(--text);font-weight:600}.stats-row{grid-template-columns:repeat(3,1fr);gap:.875rem;margin-bottom:2rem;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;flex-direction:column;align-items:center;gap:.3rem;padding:1.25rem 1rem;display:flex}.stat-value{color:var(--green);font-size:2rem;font-weight:700;line-height:1}.stat-label{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.75rem;font-weight:600}.cycle-item-title{color:var(--text);flex:1;font-weight:500}.cycle-item-date{color:var(--muted);font-size:.8125rem}.cycle-item-action{color:var(--green);white-space:nowrap;font-size:.875rem;font-weight:600}.cycle-item-action:hover{color:#6ee7b7}.cycle-detail-header{align-items:center;gap:.875rem;margin-bottom:.75rem;display:flex}.cycle-detail-header h1{margin-bottom:0}.completion-summary{flex-wrap:wrap;gap:.625rem;margin-bottom:1.5rem;display:flex}.completion-stat{border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .75rem;font-size:.8125rem;font-weight:600;display:inline-flex}.completion-stat--done{background:var(--green-dim);color:var(--green);border:1px solid #34d39940}.completion-stat--partial{background:var(--gold-dim);color:var(--gold);border:1px solid #fbbf2440}.completion-stat--none{background:var(--red-dim);color:var(--red);border:1px solid #f8717140}.eval-count{text-align:center;min-width:28px;font-size:.9375rem;font-weight:700;display:inline-block}.eval-count--done{color:var(--green)}.eval-count--partial{color:var(--gold)}.eval-count--none{color:var(--red)}.my-eval-check{color:var(--green);font-weight:700}.my-eval-missing{color:var(--muted)}.player-name{color:var(--text-strong);margin-bottom:.5rem;font-size:1.25rem;font-weight:700}.player-positions{flex-wrap:wrap;gap:.4rem;margin-top:.375rem;display:flex}.latest-cycle-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.25rem 1.5rem}.latest-cycle-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:1rem;display:flex}.latest-cycle-title{color:var(--text-strong);font-size:1rem;font-weight:700}.latest-cycle-date{color:var(--muted);font-size:.8125rem}.latest-scores{flex-direction:column;gap:.5rem;margin-bottom:1.25rem;display:flex}.latest-score-row{align-items:center;gap:.875rem;display:flex}.latest-score-label{width:130px;color:var(--subtle);flex-shrink:0;font-size:.875rem}.latest-score-bar-wrap{background:var(--surface-3);border-radius:4px;flex:1;height:8px;overflow:hidden}.latest-score-bar-wrap .bar{height:100%}.latest-score-value{text-align:right;width:32px;color:var(--green);font-size:.9375rem;font-weight:700}.latest-cycle-link{color:var(--green);font-size:.875rem;font-weight:600}.latest-cycle-link:hover{color:#6ee7b7}.parent-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.parent-edit-form{flex-direction:column;gap:.625rem;width:100%;padding-top:.25rem;display:flex}@media (width<=640px){.player-header{flex-direction:column}.score-row{flex-wrap:wrap}.score-row label{width:100%}table{font-size:.8125rem}th,td{padding:.6rem .75rem}.player-list-page table th:nth-child(2),.player-list-page table td:nth-child(2),.cycle-detail-page table th:nth-child(3),.cycle-detail-page table td:nth-child(3),.scores-table .cat-bar,.latest-score-bar-wrap{display:none}.latest-score-label{flex:1;width:auto}.dashboard-header{flex-direction:column;align-items:flex-start;gap:.75rem}.dashboard-header .logout-btn{margin-left:0}.stats-row{grid-template-columns:repeat(3,1fr);gap:.5rem}.stat-value{font-size:1.5rem}.quick-links,.parent-nav{flex-direction:column}.quick-links a,.parent-nav a{text-align:center;justify-content:center}.create-cycle-form,.add-player-form{flex-direction:column}.add-player-names{grid-template-columns:1fr}.cycle-item{flex-wrap:wrap;gap:.5rem}.cycle-item-title{order:-1;width:100%}.parent-item{flex-direction:column;align-items:flex-start}.latest-cycle-header{flex-direction:column;gap:.25rem}.completion-summary{gap:.375rem}h1{font-size:1.375rem}h2{font-size:.75rem}}#app{min-height:100vh}
