:root{--color-who:#ffb3c1;--color-what:#a8d8ea;--color-where:#b5ead7;--color-when:#ffd6a5;--color-bg:#f7f3ee;--color-surface:#fff;--color-border:#e8e2db;--color-text:#1a1814;--color-text-muted:#6b6560;--badge-size:2.25rem;--max-content:640px;--spacing-page:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;color:var(--color-text);background-color:var(--color-bg);-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:border-box;margin:0;padding:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:none;background:none}ol,ul{list-style:none}img{display:block;max-width:100%}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.layout-default{min-height:100dvh;display:flex;flex-direction:column}.page-content{flex:1;max-width:var(--max-content);margin-inline:auto;width:100%;padding:0 var(--spacing-page) 4rem}.site-header{position:sticky;top:0;z-index:100;background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:.75rem var(--spacing-page)}.site-header__inner{max-width:var(--max-content);margin-inline:auto}.wordmark{display:flex;align-items:baseline;gap:.35em;font-weight:700;font-size:2rem;letter-spacing:-.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wordmark__who{color:#c7426a;font-size:1em}.wordmark__what{color:#1a7fa8;font-size:.88em}.wordmark__where{color:#2a8c6a;font-size:1.05em;font-weight:800}.wordmark__when{color:#b06a00;font-size:.92em}.category-filters{position:sticky;top:57px;z-index:90;background:var(--color-bg);padding:.6rem var(--spacing-page);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.category-filters::-webkit-scrollbar{display:none}.category-filters__list{display:flex;gap:.5rem;width:-moz-max-content;width:max-content}.chip{display:inline-flex;align-items:center;gap:.3em;padding:.3rem .75rem;border-radius:999px;font-size:.85rem;font-weight:500;border:1.5px solid transparent;border-color:var(--color-border);color:var(--color-text-muted);transition:all .15s;white-space:nowrap}.chip,.chip--active{background:var(--color-surface)}.chip--active{border-color:var(--color-text);color:var(--color-text)}.schedule{padding-top:1rem}.day-group{margin-bottom:1.5rem}.day-group__heading{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);padding:.5rem 0;border-bottom:1px solid var(--color-border);margin-bottom:0}.day-group__heading--today{color:var(--color-text)}.event-row{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--color-border);text-decoration:none;color:inherit;-webkit-tap-highlight-color:transparent}.event-row:active{background:var(--color-border)}.event-row__badge{flex-shrink:0;width:var(--badge-size);height:var(--badge-size);border-radius:.5rem;display:flex;align-items:center;justify-content:center;font-size:1.1rem;margin-top:.1rem}.event-row__body{flex:1;min-width:0}.event-row__title{font-size:.95rem;font-weight:600;line-height:1.3}.event-row__meta{margin-top:.15rem}.event-row__meta,.event-row__time{font-size:.8rem;color:var(--color-text-muted)}.event-row__time{flex-shrink:0;text-align:right;white-space:nowrap;min-width:3.5rem}.event-detail{padding-top:1.25rem}.event-detail__back{font-size:.85rem;color:var(--color-text-muted);display:flex;align-items:center;gap:.3em;margin-bottom:1.25rem}.event-detail__badge{width:3.5rem;height:3.5rem;border-radius:.875rem;display:flex;align-items:center;justify-content:center;font-size:1.75rem;margin-bottom:1rem}.event-detail__title{font-size:1.5rem;font-weight:700;line-height:1.25;margin-bottom:.25rem}.event-detail__club{font-size:.9rem;color:var(--color-text-muted);margin-bottom:1.5rem}.event-detail__info-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.info-row{display:flex;gap:.75rem;font-size:.9rem}.info-row__icon{flex-shrink:0}.info-row__label{font-weight:600;width:3.5rem;flex-shrink:0}.info-row__value{color:var(--color-text-muted)}.event-detail__description{font-size:.95rem;line-height:1.6;color:var(--color-text);padding-top:1rem;border-top:1px solid var(--color-border);margin-bottom:1.5rem}.event-detail__links{display:flex;flex-direction:column;gap:.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4em;padding:.75rem 1.25rem;border-radius:.625rem;font-size:.9rem;font-weight:600;transition:opacity .15s}.btn:active{opacity:.75}.btn--primary{background:var(--color-text);color:var(--color-bg)}.btn--outline{border:1.5px solid var(--color-border);color:var(--color-text)}.layout-admin{min-height:100dvh;display:flex;flex-direction:column}.admin-header{background:var(--color-text);color:var(--color-bg);padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between;font-size:.9rem;font-weight:600}.admin-header a{color:inherit}.admin-header button{color:var(--color-bg);opacity:.7;font-size:.85rem}.admin-header button:hover{opacity:1}.admin-content{flex:1;padding:1.5rem 1rem;max-width:860px;margin-inline:auto;width:100%}.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--color-bg)}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:1rem;padding:2rem;width:100%;max-width:380px}.login-card h1{font-size:1.2rem;font-weight:700;margin-bottom:1.5rem}.form-group{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}.form-group label{font-size:.85rem;font-weight:600;color:var(--color-text-muted)}.form-group input{padding:.625rem .75rem;border:1.5px solid var(--color-border);border-radius:.5rem;font:inherit;font-size:.95rem;background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s}.form-group input:focus{border-color:var(--color-text)}.error-message{font-size:.85rem;color:#c7426a;margin-bottom:1rem}.empty-state{text-align:center;padding:3rem 1rem;color:var(--color-text-muted)}.empty-state__icon{font-size:2.5rem;margin-bottom:.75rem}.empty-state p{font-size:.9rem}.skeleton{background:linear-gradient(90deg,var(--color-border) 25%,var(--color-surface) 50%,var(--color-border) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:.375rem}@keyframes shimmer{to{background-position:-200% 0}}
