*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--color-bg: #FAFAF7;--color-surface: #FFFFFF;--color-text: #1B1B18;--color-text-secondary: #5C5C56;--color-text-muted: #9A9A93;--color-accent: #2B5F44;--color-accent-light: #EBF3EE;--color-accent-hover: #224B36;--color-accent-pale: #F3F8F5;--color-border: #E6E6E1;--color-border-light: #F0F0EB;--color-danger: #B91C1C;--color-danger-light: #FEF2F2;--font-display: "Instrument Serif", Georgia, serif;--font-body: "Plus Jakarta Sans", -apple-system, sans-serif;--max-width: 1400px;--color-event-bg: #E8F1FD;--color-event-label: #D0E2F9;--color-event-text: #1E5A9E;--header-height: 64px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(27,27,24,.04);--shadow-sm: 0 1px 3px rgba(27,27,24,.06), 0 1px 2px rgba(27,27,24,.04);--shadow-md: 0 4px 12px rgba(27,27,24,.08)}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);line-height:1.6}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}.container{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem}.header{height:var(--header-height);border-bottom:1px solid var(--color-border);background:var(--color-surface);position:sticky;top:0;z-index:100}.header-inner{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;height:100%;display:flex;align-items:center;justify-content:space-between}.header-logo{font-family:var(--font-display);font-size:1.25rem;color:var(--color-text);font-style:italic;letter-spacing:-.01em;display:flex;align-items:baseline;gap:.625rem}.header-logo span{color:var(--color-accent)}.header-subtitle{font-family:var(--font-body);font-size:.75rem;font-style:normal;font-weight:400;color:var(--color-text-muted);letter-spacing:0}.header-nav{display:flex;align-items:center;gap:1.5rem}.header-nav a{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);transition:color .15s}.header-nav a:hover{color:var(--color-text)}.main{min-height:calc(100vh - var(--header-height) - 80px);padding:1.5rem 0}.home-layout{display:flex;gap:2.5rem;align-items:flex-start}.calendar-section{flex:1;min-width:0}.calendar-header{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:1rem}.calendar-title{font-family:var(--font-display);font-size:1.75rem;font-weight:400;min-width:240px;text-align:center;letter-spacing:-.01em}.calendar-nav-btn{background:none;border:1px solid var(--color-border);width:36px;height:36px;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);transition:all .15s;font-size:1.125rem;line-height:1}.calendar-nav-btn:hover{border-color:var(--color-text-secondary);color:var(--color-text)}.calendar-today-btn{font-size:.8125rem;font-weight:500;font-family:var(--font-body);color:var(--color-accent);background:none;border:none;cursor:pointer;padding:.25rem 0;border-bottom:1px solid transparent;transition:border-color .15s}.calendar-today-btn:hover{border-bottom-color:var(--color-accent)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-surface)}.calendar-day-header{padding:.75rem 0;text-align:center;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.calendar-cell{display:flex;flex-direction:column;align-items:flex-start;padding:4px 5px;gap:2px;cursor:pointer;position:relative;border-right:1px solid var(--color-border-light);border-bottom:1px solid var(--color-border-light);transition:background .15s;min-height:70px}.calendar-cell:nth-child(7n){border-right:none}.calendar-cell:hover{background:var(--color-accent-pale)}.calendar-cell--empty{cursor:default}.calendar-cell--empty:hover{background:transparent}.calendar-cell--today .calendar-day-number{font-weight:700}.calendar-cell--today .calendar-day-number{background:var(--color-accent);color:#fff!important;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%}.calendar-cell--selected{background:var(--color-accent-light)}.calendar-cell--selected .calendar-day-number{color:var(--color-accent);font-weight:700}.calendar-cell--has-events{background:var(--color-event-bg)}.calendar-cell--has-events:hover{background:var(--color-event-label)}.calendar-cell--has-events .calendar-day-number{font-weight:600;color:var(--color-event-text)}.calendar-cell--past .calendar-day-number{color:var(--color-text-muted)}.calendar-cell--past.calendar-cell--has-events{background:#f0f4f9}.calendar-cell--past.calendar-cell--has-events .calendar-day-number{color:#7da2c9}.calendar-day-number{font-size:.8125rem;font-weight:500;line-height:1;color:var(--color-text)}.calendar-event-labels{display:flex;flex-direction:column;gap:1px;width:100%;min-width:0}.calendar-event-label{font-size:.5625rem;line-height:1.3;font-weight:600;color:var(--color-event-text);background:var(--color-event-label);padding:1px 4px;border-radius:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-more{font-size:.5rem;color:var(--color-event-text);padding:0 4px;font-weight:600}.events-section{flex:0 0 380px;max-height:calc(100vh - var(--header-height) - 3rem);display:flex;flex-direction:column}.events-scroll{flex:1;overflow-y:auto;min-height:0}.events-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--color-border)}.events-title{font-family:var(--font-display);font-size:1.25rem;font-weight:400}.events-count{font-size:.8125rem;color:var(--color-text-muted)}.events-header-actions{display:flex;align-items:center;gap:1rem}.events-clear-filter{font-size:.8125rem;color:var(--color-accent);background:none;border:none;cursor:pointer;font-family:var(--font-body);font-weight:500}.events-clear-filter:hover{text-decoration:underline}.events-list{display:flex;flex-direction:column}.event-card{display:flex;gap:1.5rem;padding:1.25rem 0;border-bottom:1px solid var(--color-border-light);animation:fadeInUp .3s ease both}.event-card:last-child{border-bottom:none}.event-date-block{flex-shrink:0;width:56px;text-align:center}.event-date-day{font-size:1.5rem;font-weight:700;line-height:1.1;color:var(--color-accent)}.event-date-month{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-top:2px}.event-date-weekday{font-size:.6875rem;color:var(--color-text-muted);margin-top:1px}.event-details{flex:1;min-width:0}.event-title{font-size:1rem;font-weight:600;color:var(--color-text);margin-bottom:.375rem;line-height:1.3}.event-meta{display:flex;flex-wrap:wrap;gap:.25rem .75rem;font-size:.8125rem;color:var(--color-text-secondary);margin-bottom:.5rem}.event-meta-item{display:flex;align-items:center;gap:.3rem}.event-description{font-size:.8125rem;color:var(--color-text-secondary);line-height:1.5;margin-bottom:.75rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.event-footer{display:flex;align-items:center;gap:1rem}.event-cpd-badge{font-size:.75rem;font-weight:600;color:var(--color-accent);background:var(--color-accent-light);padding:.2rem .6rem;border-radius:var(--radius-full)}.event-book-link{font-size:.8125rem;font-weight:600;color:var(--color-accent);display:inline-flex;align-items:center;gap:.3rem;transition:gap .15s}.event-book-link:hover{gap:.5rem}.events-empty{text-align:center;padding:3rem 1rem;color:var(--color-text-muted);font-size:.9375rem}.admin-login{max-width:360px;margin:4rem auto;text-align:center}.admin-login h1{font-family:var(--font-display);font-size:1.5rem;margin-bottom:.5rem}.admin-login p{color:var(--color-text-secondary);font-size:.875rem;margin-bottom:2rem}.admin-login-form{display:flex;flex-direction:column;gap:.75rem}.admin-login-error{font-size:.8125rem;color:var(--color-danger);margin-top:.25rem}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.admin-header h1{font-family:var(--font-display);font-size:1.5rem}.admin-actions{display:flex;gap:.5rem}.admin-table-wrapper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table th{text-align:left;padding:.75rem 1rem;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);background:var(--color-bg);border-bottom:1px solid var(--color-border)}.admin-table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border-light);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.admin-table-actions{display:flex;gap:.5rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1b1b1866;display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .15s ease;padding:1rem}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:slideUp .2s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-header h2{font-family:var(--font-display);font-size:1.25rem;font-weight:400}.modal-close{background:none;border:none;font-size:1.25rem;cursor:pointer;color:var(--color-text-muted);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .15s}.modal-close:hover{background:var(--color-bg);color:var(--color-text)}.modal-body{padding:1.5rem}.form-group{margin-bottom:1rem}.form-label{display:block;font-size:.8125rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:.375rem}.form-input,.form-textarea,.form-select{width:100%;padding:.625rem .75rem;font-size:.875rem;font-family:var(--font-body);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);transition:border-color .15s;outline:none}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light)}.form-textarea{min-height:80px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.form-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border-light)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5625rem 1rem;font-size:.8125rem;font-weight:600;font-family:var(--font-body);border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all .15s;white-space:nowrap}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-bg);border-color:var(--color-text-muted)}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:transparent;padding:.375rem .5rem}.btn-ghost:hover{background:var(--color-bg);color:var(--color-text)}.btn-danger{background:transparent;color:var(--color-danger);border-color:transparent;padding:.375rem .5rem}.btn-danger:hover{background:var(--color-danger-light)}.btn-sm{padding:.375rem .625rem;font-size:.75rem}.footer{border-top:1px solid var(--color-border);padding:1.5rem 0;text-align:center;font-size:.8125rem;color:var(--color-text-muted)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 1024px){.home-layout{flex-direction:column}.calendar-section{width:100%}.events-section{flex:none;width:100%;max-height:none}.events-scroll{overflow-y:visible}}@media (max-width: 768px){.main{padding:1.5rem 0}.calendar-title{font-size:1.375rem;min-width:auto}.calendar-cell{min-height:44px;padding:3px}.calendar-event-labels{display:none}.calendar-cell--has-events:after{content:"";width:5px;height:5px;border-radius:50%;background:var(--color-event-text);margin-top:2px}.event-card{gap:1rem}.event-date-block{width:44px}.event-date-day{font-size:1.25rem}.form-row{grid-template-columns:1fr}.admin-table{font-size:.8125rem}.admin-table th:nth-child(n+4),.admin-table td:nth-child(n+4){display:none}.admin-header{flex-direction:column;align-items:flex-start;gap:1rem}.admin-actions{flex-wrap:wrap}}@media (max-width: 480px){.header-logo{font-size:1rem}.header-subtitle{display:none}.calendar-header{gap:.75rem}.event-card{flex-direction:column;gap:.5rem}.event-date-block{display:flex;gap:.5rem;align-items:baseline;width:auto}}
