*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f0f4f8;color:#2c3e50;line-height:1.5}.app{min-height:100vh;max-width:1200px;margin:0 auto;padding:1.5rem}.site-header{text-align:center;padding:1.5rem 0 1rem}.site-title{font-size:1.75rem;font-weight:700;color:#2c3e50;letter-spacing:-.02em;margin-bottom:.25rem}.site-tagline{font-size:.8rem;color:#9aa5b4;font-weight:400}.view-toggle{display:flex;gap:.25rem;margin:0 auto 1.25rem;padding:.25rem;width:fit-content;background:#fff;border:1px solid #e0e0e0;border-radius:999px;box-shadow:0 1px 4px #0000000f}.view-toggle-btn{min-width:96px;height:34px;padding:0 1.25rem;border:none;border-radius:999px;background:transparent;color:#5a6c7d;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.view-toggle-btn:hover:not(.view-toggle-btn--active){background:#f0f4f8}.view-toggle-btn--active{background:#3dba6e;color:#fff}.view-toggle-btn:focus-visible{outline:2px solid #3dba6e;outline-offset:2px}.club-failure{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem;padding:.5rem .75rem;background:#fdecea;border:1px solid #f5b7b1;border-radius:10px;font-size:.875rem;color:#a93226}.club-failure-text{flex:1;min-width:0}.club-failure-retry{flex-shrink:0;height:28px;padding:0 .7rem;border:1px solid #e3a29b;border-radius:6px;background:#fff;color:#a93226;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.club-failure-retry:hover:not(:disabled){background:#fbdcd8}.club-failure-retry:disabled{opacity:.6;cursor:progress}.club-failure-dismiss{flex-shrink:0;width:28px;height:28px;border:none;border-radius:6px;background:none;color:#a93226;font-size:.9rem;line-height:1;cursor:pointer}.club-failure-dismiss:hover{background:#fbdcd8}.club-failure-retry:focus-visible,.club-failure-dismiss:focus-visible,.club-failure-note:focus-visible{outline:2px solid #a93226;outline-offset:2px}.club-failure-note{display:block;width:100%;margin-bottom:.5rem;padding:.35rem .75rem;border:1px dashed #e3a29b;border-radius:8px;background:none;color:#b06a62;font-size:.8rem;text-align:left;cursor:pointer}.club-failure-note:hover{background:#fdecea;color:#a93226}.week-nav{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:.75rem}.week-nav-label{min-width:9rem;text-align:center;font-size:.85rem;font-weight:600;color:#5a6c7d}.eventy{overflow-x:auto}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;align-items:start;min-width:700px}.day-column{background:#fff;border:1px solid #e0e0e0;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #0000000d}.day-column--today{border-color:#3dba6e;box-shadow:0 0 0 1px #3dba6e,0 1px 3px #0000000d}.day-column-header{display:flex;flex-direction:column;align-items:center;padding:.55rem .5rem;border-bottom:1px solid #e8e8e8;background:#f7fafc}.day-column--today .day-column-header{background:#e6f7ed}.day-column-weekday{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#2c3e50;line-height:1.3}.day-column-date{font-size:.75rem;color:#9aa5b4;line-height:1.3}.day-column-events{display:flex;flex-direction:column;gap:.4rem;padding:.5rem}.day-column-reveal{display:block;width:100%;background:none;border:none;border-radius:4px;font:inherit;line-height:1.35;cursor:pointer}.day-column-empty{font-size:.78rem;color:#b0bec5;text-align:center;padding:.6rem 0}.day-column-hidden{font-size:.72rem;color:#9aa5b4;text-align:center;padding-top:.4rem;border-top:1px dashed #e3e8ee}.day-column-reveal:hover,.day-column-reveal:focus-visible{color:#2c8c5a;background:#f2f8f5}.event-card{display:flex;flex-direction:column;padding:.5rem .6rem;background:#fff;border:1px solid #d0d8e0;border-radius:6px;text-decoration:none;color:#2c3e50;transition:background .15s,border-color .15s,transform .1s}.event-card:hover{background:#e6f7ed;border-color:#3dba6e;transform:translateY(-1px)}.event-card:focus-visible{outline:2px solid #3dba6e;outline-offset:2px}.event-card-time{font-size:.8rem;font-weight:700;line-height:1.35}.event-card-title{font-size:.8rem;font-weight:500;line-height:1.25}.event-card-club{font-size:.68rem;color:#9aa5b4;line-height:1.4}.event-card-spots{font-size:.68rem;font-weight:600;color:#3dba6e;line-height:1.4}.turnieje-loading{font-size:.85rem;color:#9aa5b4;text-align:center;padding:1.5rem 0}.turnieje-failure{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem;padding:.5rem .75rem;background:#fdecea;border:1px solid #f5b7b1;border-radius:10px;font-size:.875rem;color:#a93226}.turnieje-failure-text{flex:1;min-width:0}.turnieje-failure-retry{padding:.3rem .7rem;border:1px solid #a93226;border-radius:6px;background:transparent;color:#a93226;font-size:.8rem;font-weight:600;cursor:pointer}.turnieje-failure-retry:hover:not(:disabled){background:#a93226;color:#fff}.turnieje-failure-retry:disabled{opacity:.6;cursor:default}.turnieje-failure-retry:focus-visible{outline:2px solid #a93226;outline-offset:2px}.month-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;align-items:start}.month-column{background:#fff;border:1px solid #e0e0e0;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #0000000d}.month-column--current{border-color:#3dba6e;box-shadow:0 0 0 1px #3dba6e,0 1px 3px #0000000d}.month-column-header{padding:.6rem .75rem;border-bottom:1px solid #e8e8e8;background:#f7fafc;text-align:center}.month-column--current .month-column-header{background:#e6f7ed}.month-column-name{font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#2c3e50}.month-column-tournaments{display:flex;flex-direction:column;gap:.5rem;padding:.6rem}.month-column-empty{font-size:.78rem;color:#b0bec5;text-align:center;padding:.6rem 0}.month-column-failed{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;padding:.5rem .6rem;background:#fdecea;border:1px solid #f5b7b1;border-radius:6px;font-size:.78rem;color:#a93226}.month-column-retry{padding:.25rem .6rem;border:1px solid #a93226;border-radius:6px;background:transparent;color:#a93226;font-size:.75rem;font-weight:600;cursor:pointer}.month-column-retry:hover:not(:disabled){background:#a93226;color:#fff}.month-column-retry:disabled{opacity:.6;cursor:default}.month-column-retry:focus-visible{outline:2px solid #a93226;outline-offset:2px}.tournament-card{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .65rem;background:#fff;border:1px solid #d0d8e0;border-radius:6px;text-decoration:none;color:#2c3e50;transition:background .15s,border-color .15s,transform .1s}.tournament-card:hover{background:#e6f7ed;border-color:#3dba6e;transform:translateY(-1px)}.tournament-card:focus-visible{outline:2px solid #3dba6e;outline-offset:2px}.tournament-card-date{font-size:.8rem;font-weight:700;line-height:1.35}.tournament-card-title{font-size:.8rem;font-weight:500;line-height:1.25}.tournament-card-venue{font-size:.68rem;color:#9aa5b4;line-height:1.4}.tournament-card-categories{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.15rem}.tournament-card-category{padding:.1rem .35rem;background:#f0f4f8;border-radius:4px;font-size:.62rem;color:#5a6c7d;line-height:1.5}.tournament-card-signup{margin-top:.15rem;font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#3dba6e;line-height:1.4}.filter-bar{background:#fff;border:1px solid #e0e0e0;border-radius:10px;padding:1rem 1.25rem;display:flex;flex-wrap:wrap;gap:1.25rem;align-items:flex-end;margin-bottom:1.25rem;box-shadow:0 1px 4px #0000000f}.filter-group{display:flex;flex-direction:column;gap:.4rem}.filter-label{font-size:.65rem;font-weight:600;letter-spacing:.08em;color:#9aa5b4;text-transform:uppercase}.date-nav{display:flex;align-items:center;gap:.35rem}.date-nav-btn,.week-nav-btn{width:32px;height:32px;border:1px solid #d0d8e0;border-radius:6px;background:#fff;color:#2c3e50;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s;line-height:1}.date-nav-btn:hover:not(:disabled),.week-nav-btn:hover:not(:disabled){background:#f0f4f8;border-color:#b0bec5}.date-nav-btn:disabled,.week-nav-btn:disabled{opacity:.35;cursor:not-allowed}.date-nav-btn:focus-visible,.week-nav-btn:focus-visible,.filter-btn:focus-visible,.today-btn:focus-visible{outline:2px solid #3dba6e;outline-offset:2px}.date-pill-wrapper{position:relative;display:inline-flex}.date-pill{min-width:108px;text-align:center;height:32px;padding:0 .75rem;border:1px solid #d0d8e0;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:500;color:#2c3e50;background:#fff;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.date-pill:hover{background:#f0f4f8;border-color:#b0bec5}.date-input-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0;top:100%;left:0}.today-btn{height:32px;padding:0 .9rem;background:#3dba6e;border:none;border-radius:6px;color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s;white-space:nowrap}.today-btn:hover{background:#36a862}.filter-btns{display:flex;gap:.35rem}.filter-btns--wrap{flex-wrap:wrap}.filter-btn{height:32px;padding:0 .85rem;border:1px solid #d0d8e0;border-radius:6px;background:#fff;color:#5a6c7d;font-size:.875rem;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.35rem;transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.filter-btn:hover:not(.filter-btn--active){background:#f0f4f8;border-color:#b0bec5}.filter-btn--active{background:#3dba6e;border-color:#3dba6e;color:#fff}.filter-btn--disabled,.filter-btn:disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.filter-btn-dot{width:7px;height:7px;border-radius:50%;background:#fff;flex-shrink:0}.time-window{display:flex;align-items:center;gap:.35rem}.time-select{height:32px;padding:0 1.6rem 0 .5rem;border:1px solid #d0d8e0;border-radius:6px;background:#fff;color:#2c3e50;font-size:.875rem;font-weight:500;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239aa5b4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;transition:border-color .15s}.time-select:hover{border-color:#b0bec5}.time-select:focus{outline:2px solid #3dba6e;outline-offset:2px}.time-separator{color:#9aa5b4;font-size:.875rem;line-height:1}.clubs-rows{display:flex;flex-direction:column;gap:.75rem}.club-row{background:#fff;border:1px solid #e0e0e0;border-radius:10px;display:flex;align-items:center;min-height:64px;overflow:hidden;box-shadow:0 1px 3px #0000000d}.club-row-label{width:190px;min-width:190px;padding:1rem 1.25rem;font-size:.9rem;font-weight:600;color:#2c3e50;border-right:1px solid #e8e8e8;line-height:1.3}.club-row-slots{display:flex;flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem;flex:1;align-items:center}.club-row-status{font-size:.875rem;color:#9aa5b4;padding:.25rem 0}.club-row-error{color:#e74c3c}.retry-btn{background:none;border:none;color:#4a90a4;cursor:pointer;font-size:1rem;padding:0 .25rem}.slot-button{padding:.45rem .75rem;background:#fff;border:1px solid #d0d8e0;border-radius:6px;color:#2c3e50;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,transform .1s;text-decoration:none;display:flex;align-items:center;gap:.35rem;white-space:nowrap}.slot-button:hover{background:#e6f7ed;border-color:#3dba6e;color:#2c3e50;transform:translateY(-1px)}.slot-button:active{transform:translateY(0)}.slot-time{font-weight:700;color:#2c3e50}.slot-duration{color:#9aa5b4;font-size:.8rem}.slot-court{color:#b0bec5;font-size:.75rem;font-weight:400;max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slot-outdoor-badge{font-size:.65rem;color:#f39c12;letter-spacing:.04em;font-weight:600;flex-shrink:0}.empty-banner{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:.75rem;padding:.9rem 1.25rem;background:#fffbea;border:1px solid #f0d060;border-radius:10px;font-size:.875rem;color:#7a6000}.empty-banner--incomplete{background:#fdecea;border-color:#f5b7b1;color:#922b21}.empty-banner-btn{background:#3dba6e;border:none;border-radius:6px;color:#fff;font-size:.875rem;font-weight:600;padding:.35rem .85rem;cursor:pointer;white-space:nowrap;transition:background .15s}.empty-banner-btn:hover:not(:disabled){background:#36a862}.empty-banner-btn:disabled{opacity:.35;cursor:not-allowed}.toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);background:#2c3e50;color:#fff;font-size:.875rem;padding:.65rem 1.25rem;border-radius:8px;box-shadow:0 4px 16px #0000002e;white-space:nowrap;z-index:1000;animation:toast-in .2s ease,toast-out .3s ease 1.9s forwards;pointer-events:none}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toast-out{0%{opacity:1}to{opacity:0}}.site-footer{margin-top:2rem;padding:1rem 0;border-top:1px solid #e0e0e0;text-align:center;font-size:.75rem;color:#9aa5b4}.site-footer a{color:#7fa8b8;text-decoration:none}.site-footer a:hover{text-decoration:underline}@media (max-width: 768px){.app{padding:.75rem}.filter-bar{gap:.9rem;padding:.9rem 1rem}.club-row{flex-direction:column;align-items:flex-start}.club-row-label{width:100%;min-width:unset;border-right:none;border-bottom:1px solid #e8e8e8;padding:.75rem 1rem}.club-row-slots{padding:.75rem 1rem}.eventy{overflow-x:visible}.club-failure{flex-wrap:wrap}.club-failure-text{flex:1 0 100%}.week-nav-btn{width:44px;height:44px}.week-grid{grid-template-columns:minmax(0,1fr);gap:.6rem;min-width:0}.day-column-header{flex-direction:row;align-items:baseline;justify-content:flex-start;gap:.45rem;padding:.6rem .75rem}.day-column-weekday,.day-column-date{font-size:.8rem}.day-column-events{padding:.6rem .75rem}.day-column-empty{text-align:left;padding:0}.day-column-hidden{text-align:left}.month-grid{grid-template-columns:minmax(0,1fr);gap:.6rem}.month-column-header{text-align:left}.month-column-empty{text-align:left;padding:0}.turnieje-failure{flex-wrap:wrap}.turnieje-failure-text{flex:1 0 100%}}
