:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#1f2937;background-color:#f0fdf4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#22543d;text-decoration:inherit}a:hover{color:#166534}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(135deg,#f0fdf4,#dcfce7);position:relative}@media (max-width: 768px){html,body{height:100vh;width:100%}}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#22543d;color:#fff;cursor:pointer;transition:all .25s}button:hover{background-color:#166534;transform:translateY(-2px)}button:focus,button:focus-visible{outline:4px auto rgba(22,101,52,.5)}#root{display:flex;justify-content:center;width:100%;margin:0;padding:0;box-sizing:border-box}@media (max-width: 768px){#root{height:auto;min-height:100vh}}.form-input,input[type=text],input[type=number],input[type=email],input[type=password],input[type=date],select,textarea{padding:.75rem;border:1px solid #d1d5db;border-radius:8px;background-color:#fff;color:#1f2937;transition:all .2s ease}.form-input:focus,input:focus,select:focus,textarea:focus{outline:none;border-color:#22543d;box-shadow:0 0 0 3px #22543d1a}select option:disabled{color:#9ca3af;font-style:italic}.checkbox-label span[style*="text-decoration: line-through"]{color:#9ca3af!important}.layout{display:flex;flex-direction:column;height:100vh;width:100%;background-color:#fff;overflow:hidden}.page-title{color:#22543d}@media (min-width: 769px){.layout{max-width:1400px;width:1400px;margin:2rem auto;box-shadow:0 0 30px #0003;border-radius:16px;overflow:hidden;border:3px solid #22543d}}@media (max-width: 768px){.layout{max-width:100vw;margin:0;box-shadow:none;border-radius:0;border:none;height:100vh;overflow:hidden}}.header{background:linear-gradient(135deg,#22543d,#2d5016);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px #0000001a;position:relative;z-index:100}.header h1{font-size:1.5rem;margin:0}.logout-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem;border-radius:8px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center}.logout-btn:hover{background:#ffffff4d}.navigation{background:#fff;box-shadow:0 2px 10px #0000000d;display:flex;justify-content:space-around;padding:1rem 0;border-bottom:1px solid #e5e7eb;position:relative;z-index:100}.nav-link{display:flex;flex-direction:column;align-items:center;gap:.25rem;color:#6b7280;text-decoration:none;padding:.5rem 1rem;border-radius:8px;transition:all .3s ease}.nav-link:hover{background:#f0fdf4;color:#166534}.nav-link.active{color:#166534;background:#dcfce7}.nav-link span{font-size:.875rem}.main-content{flex:1;padding:1.5rem 1.5rem 3rem;overflow-y:auto;min-height:0}@media (min-width: 769px){.main-content{padding:2rem 3rem;max-width:none}.events-page,.dogs-page,.overview-page{max-width:none!important}}@media (max-width: 768px){.main-content{padding:1rem;width:100vw;box-sizing:border-box}}@media (max-width: 768px){.header{padding:1rem;flex-shrink:0;z-index:100}.header h1{font-size:1.25rem}.navigation{padding:.75rem 0;flex-shrink:0;z-index:100}.nav-link{padding:.75rem .5rem}.nav-link span{font-size:.75rem}.main-content{padding:1rem 1rem 3rem;flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;min-height:0;height:100%}}body.modal-open .header,body.modal-open .navigation{display:none!important}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#22543d,#2d5016);padding:1rem}@media (max-width: 768px){.login-container{min-height:100vh;height:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;align-items:flex-start;padding:2rem 1rem}}.login-card{background:#fff;border-radius:16px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;padding:2rem;width:100%;max-width:400px}.login-header{text-align:center;margin-bottom:2rem}.login-icon{display:inline-flex;padding:1rem;background:linear-gradient(135deg,#22543d,#2d5016);border-radius:12px;color:#fff;margin-bottom:1rem}.login-header h2{margin:0 0 .5rem;color:#1f2937;font-size:1.5rem}.login-header p{color:#6b7280;margin:0}.login-form{display:flex;flex-direction:column;gap:1.5rem}.form-group label{color:#374151;font-weight:500;font-size:.875rem}.form-input{padding:.75rem 1rem;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;transition:all .3s ease}.error-message{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:.75rem;border-radius:8px;font-size:.875rem}.submit-button{background:linear-gradient(135deg,#22543d,#2d5016);color:#fff;padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.submit-button:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a}.submit-button:active{transform:translateY(0)}.login-stack{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center}.login-image{width:100%;height:auto;margin-bottom:1rem;display:block;border-radius:12px;object-fit:cover}@media (max-width: 768px){.login-image{max-height:200px;object-fit:cover}.login-stack{margin-top:1rem}.login-card{padding:1.5rem}}.modal-content.large{max-width:900px}@media (max-width: 768px){.modal-content.large{max-width:100%;height:100%;border-radius:0;margin:0}}.attendees-content{padding:1.5rem;display:flex;flex-direction:column;gap:2rem}.add-attendance-section{background:#ecfdf5;padding:1.5rem;border-radius:12px;border:1px solid #d1fae5}.add-attendance-section h4{margin:0 0 1rem;color:#065f46}.person-selector{display:flex;gap:.5rem;align-items:stretch}.person-selector select{flex:1;min-width:0}.person-selector .btn{flex-shrink:0;white-space:nowrap}.dog-checkbox-list{display:flex;flex-direction:column;gap:.5rem;max-height:200px;overflow-y:auto;padding:.5rem;background:#fff;border:1px solid #a7f3d0;border-radius:8px}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.25rem;border-radius:4px;transition:background .2s ease}.checkbox-label:hover{background:#ecfdf5}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.attendances-list h4{margin:0 0 1rem;color:#065f46}.attendance-cards{display:flex;flex-direction:column;gap:1rem}.attendance-card{background:#fff;border:1px solid #a7f3d0;border-radius:8px;padding:1rem;display:flex;justify-content:space-between;align-items:center;transition:all .2s ease}.attendance-card:hover{box-shadow:0 2px 4px #0000001a}.attendance-info h5{margin:0 0 .5rem;color:#065f46}.attendance-details{display:flex;gap:1rem;margin-bottom:.5rem}.detail{display:flex;align-items:center;gap:.25rem;color:#6b7280;font-size:.875rem}.signed-badge{display:inline-flex;align-items:center;gap:.25rem;background:#10b981;color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500}.attendance-actions{display:flex;gap:.5rem}.btn.small{padding:.5rem 1rem;font-size:.75rem}.btn-icon{background:none;border:none;padding:.5rem;border-radius:4px;cursor:pointer;transition:all .2s ease}.btn-icon.delete:hover{background:#fee2e2;color:#dc2626}.person-form{padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.signature-content{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.disclaimer{background:#fef3c7;border:1px solid #fbbf24;border-radius:8px;padding:1rem}.disclaimer h4{margin:0 0 .5rem;color:#92400e;font-size:1rem}.disclaimer p{color:#78350f;margin:.5rem 0;font-size:.875rem}.disclaimer-note{font-style:italic;font-size:.75rem!important;margin-top:.5rem!important}.signature-pad-wrapper{display:flex;flex-direction:column;gap:.5rem}.signature-pad-wrapper label{font-weight:500;color:#374151;font-size:.875rem}.signature-canvas{border:2px solid #d1d5db;border-radius:8px;background:#fff;cursor:crosshair;width:100%;height:200px;display:block;touch-action:none}.signature-layout{display:flex;flex-direction:column;gap:1rem}.signature-actions{display:flex;gap:.75rem;flex-wrap:wrap}.signature-actions .btn{flex:1;min-width:100px;justify-content:center}@media (max-width: 768px){.signature-canvas{height:300px;border-radius:4px}.signature-content{padding:1rem;display:flex;flex-direction:column;gap:1rem;height:calc(100vh - 70px);overflow-y:auto}.modal-content{max-width:100%;height:100vh;max-height:100vh;border-radius:0;margin:0;display:flex;flex-direction:column}.signature-layout{flex-direction:column-reverse}.signature-pad-wrapper{flex:1;display:flex;flex-direction:column}.signature-canvas{flex:1;min-height:200px}.person-selector{flex-direction:column;align-items:flex-start}.person-selector select{width:100%}.person-selector .btn{align-self:flex-start}.attendees-content,.add-attendance-section{padding:1rem}}@media (max-width: 640px){.attendees-content{padding:1rem}.attendance-card{flex-direction:column;align-items:flex-start;gap:1rem}.attendance-actions{width:100%}.btn.small{flex:1}}.cancellations-section{background-color:#fff1f2;border:1px solid #fecdd3;border-radius:8px;padding:1rem;margin-bottom:2rem}.cancellations-section h4{color:#be123c;margin-top:0}.cancellation-cards{display:flex;flex-direction:column;gap:.75rem}.cancellation-card{background:#fff;border:1px solid #fecdd3;border-radius:6px;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.cancellation-info h5{margin:0 0 .25rem;color:#9f1239;font-size:.95rem}.cancellation-details{display:flex;gap:.75rem;align-items:center;font-size:.85rem;flex-wrap:wrap}.fee-badge{background-color:#fce7f3;color:#be185d;padding:.125rem .5rem;border-radius:9999px;font-weight:500;font-size:.75rem}.cancellation-actions{display:flex;gap:.5rem;width:100%}.person-select-small{padding:.375rem;border:1px solid #d1d5db;border-radius:4px;font-size:.875rem;width:100%}.cancellation-badge{display:inline-flex;background:#fee2e2;color:#991b1b;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500}.public-bookings-content{padding:1rem}.event-info{display:flex;gap:1.5rem;padding:1rem;background:var(--card-bg, #f8f9fa);border-radius:8px;margin-bottom:1.5rem;flex-wrap:wrap}.event-info .info-item{display:flex;align-items:center;gap:.5rem;color:var(--text-secondary, #666)}.event-info .info-item svg{flex-shrink:0}.loading-state,.error-state{text-align:center;padding:3rem 1rem}.error-state p{color:var(--error-color, #dc3545);margin-bottom:1rem}.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-secondary, #666)}.empty-state svg{margin-bottom:1rem;opacity:.3}.empty-state h3{margin-bottom:.5rem;color:var(--text-primary, #333)}.bookings-list{display:flex;flex-direction:column;gap:1rem}.bookings-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;border-bottom:1px solid var(--border-color, #e0e0e0)}.bookings-header h4{margin:0;font-size:1rem;color:var(--text-secondary, #666)}.booking-cards{display:flex;flex-direction:column;gap:.75rem}.booking-card{padding:1rem;background:var(--card-bg, #fff);border:1px solid var(--border-color, #e0e0e0);border-radius:8px;transition:all .2s ease}.booking-card:hover{box-shadow:0 2px 8px #0000001a;border-color:var(--primary-color, #007bff)}.booking-info{display:flex;flex-direction:column;gap:.75rem}.booking-person{display:flex;justify-content:space-between;align-items:center;gap:1rem}.booking-person h5{margin:0;font-size:1.125rem;color:var(--text-primary, #333)}.status-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500;white-space:nowrap}.status-badge.active{background:#d4edda;color:#155724}.status-badge.cancelled{background:#f8d7da;color:#721c24}.booking-details{display:flex;flex-direction:column;gap:.5rem}.booking-details .detail-item{display:flex;align-items:center;gap:.5rem;color:var(--text-secondary, #666);font-size:.9375rem}.booking-details .detail-item svg{flex-shrink:0;opacity:.7}.booking-date{font-size:.875rem;font-style:italic}.cancellation-fee{margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--border-color, #e0e0e0);font-weight:600;color:var(--error-color, #dc3545);display:flex;justify-content:space-between;align-items:center}.cancellation-fee .fee-label{font-size:.875rem;font-weight:500}.cancellation-fee .fee-amount{font-size:1rem;font-weight:700}.modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--border-color, #e0e0e0);display:flex;justify-content:flex-end;gap:.75rem}@media (max-width: 768px){.event-info{flex-direction:column;gap:.75rem}.booking-person{flex-direction:column;align-items:flex-start}}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.loading-container.small{padding:1rem}.loading-container.large{padding:4rem;min-height:200px}.loading-spinner{position:relative;margin-bottom:1rem}.spinner-ring{display:inline-block;position:relative}.loading-container.small .spinner-ring{width:20px;height:20px}.loading-container.medium .spinner-ring{width:40px;height:40px}.loading-container.large .spinner-ring{width:60px;height:60px}.spinner-ring:after{content:" ";display:block;width:100%;height:100%;border-radius:50%;border:3px solid #22543d;border-color:#22543d transparent #22543d transparent;animation:spinner-rotate 1.2s linear infinite}@keyframes spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-message{color:#6b7280;font-size:.875rem;font-weight:500;margin:0}.loading-container.small .loading-message{font-size:.75rem}.loading-container.large .loading-message{font-size:1rem}.error-message{display:flex;align-items:flex-start;gap:1rem;padding:1rem;margin:1rem 0;border-radius:8px;background:#fef2f2;border:1px solid #fca5a5;color:#dc2626}.error-message.offline{background:#fef3c7;border-color:#fcd34d;color:#d97706}.error-icon{flex-shrink:0;margin-top:.25rem}.error-content{flex:1}.error-title{font-size:1rem;font-weight:600;margin:0 0 .5rem}.error-text{font-size:.875rem;line-height:1.5;margin:0 0 1rem;opacity:.8}.retry-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#dc2626;color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.retry-button:hover{background:#b91c1c;transform:translateY(-1px)}.offline-indicator{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;color:#d97706}.offline-indicator svg{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.events-page{max-width:1200px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.page-header h2{margin:0;color:#065f46;font-size:1.75rem}.full-width{width:100%;justify-content:center}.modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:1.5rem;overflow:hidden;touch-action:none}.modal-content{background:#fff;border-radius:16px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;animation:slideIn .3s ease;border:1px solid #a7f3d0;box-sizing:border-box}@media (max-width: 768px){.modal{padding:0;align-items:stretch;justify-content:stretch}.modal-content{max-width:100%;max-height:100vh;height:100vh;width:100vw;border-radius:0;border:none;overflow-y:auto;-webkit-overflow-scrolling:touch}}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{padding:1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0;color:#065f46}.close-btn{background:none;border:none;color:#6b7280;cursor:pointer;padding:.25rem;border-radius:4px;transition:all .2s ease}.close-btn:hover{background:#f3f4f6;color:#1f2937}.event-form{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.form-group label{font-weight:500;color:#065f46;font-size:.875rem;display:flex;align-items:center;gap:.5rem}.suggestion-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.suggestion-btn{padding:.75rem 1rem;border:1px solid #d1d5db;background:#fff;border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:.875rem}.suggestion-btn.event-type-mantrailing{background:#fef3c7;border-color:#fcd34d;color:#92400e}.suggestion-btn.event-type-mantrailing:hover{background:#fde68a}.suggestion-btn.event-type-freilaufgruppe{background:#d1fae5;border-color:#6ee7b7;color:#047857}.suggestion-btn.event-type-freilaufgruppe:hover{background:#a7f3d0}.suggestion-btn.event-type-social-walk{background:#dbeafe;border-color:#93c5fd;color:#1d4ed8}.suggestion-btn.event-type-social-walk:hover{background:#bfdbfe}.suggestion-btn.event-type-einzelstunde{background:#f3e8ff;border-color:#c4b5fd;color:#6d28d9}.suggestion-btn.event-type-einzelstunde:hover{background:#e9d5ff}.suggestion-btn:hover{background:#f3f4f6;border-color:#9ca3af}.suggestion-btn.selected{background:linear-gradient(135deg,#22543d,#2d5016);color:#fff;border-color:transparent}.suggestion-btn.custom{background:#f3f4f6;color:#4b5563;font-weight:500}.custom-input-wrapper{display:flex;gap:.75rem}.custom-input-wrapper .form-input{flex:1}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.events-sections{display:flex;flex-direction:column;gap:2rem}.events-section h3{color:#374151;margin-bottom:1rem}.events-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.event-card{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.event-card:hover{box-shadow:0 4px 6px #0000001a}.event-card.past{opacity:.7}.event-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.event-header h4{margin:0;color:#1f2937;font-size:1.125rem}.delete-btn{background:none;border:none;color:#ef4444;cursor:pointer;padding:.25rem;border-radius:4px;transition:all .2s ease}.delete-btn:hover{background:#fee2e2}.event-details{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.event-detail{display:flex;align-items:center;gap:.5rem;color:#6b7280;font-size:.875rem}.empty-state{text-align:center;padding:3rem;color:#9ca3af}@media (max-width: 768px){.form-row{grid-template-columns:1fr}.events-list{grid-template-columns:1fr;gap:1rem}.events-section{margin-bottom:2rem}.events-sections{padding-bottom:2rem}.page-header{flex-direction:column;gap:1rem;align-items:stretch}.modal{padding:.5rem;align-items:flex-start}.modal-content{max-width:100%;margin-top:1rem;border-radius:12px 12px 0 0;max-height:calc(100vh - 1rem)}}@media (min-width: 769px){.events-list{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}}.event-buttons{display:flex;gap:.5rem;width:100%}.event-buttons .btn{flex:1;justify-content:center}.detail-item{display:flex;align-items:center;gap:.5rem;color:#6b7280;font-size:.875rem}.detail-item svg{flex-shrink:0}.price-tag{font-weight:600;color:#065f46}.location-link{color:#2563eb;text-decoration:underline}.location-link:hover{color:#1d4ed8}.location-text{word-break:break-word}.event-actions{display:flex;gap:.5rem}.edit-btn{background:none;border:none;color:#6b7280;cursor:pointer;padding:.25rem;border-radius:4px;transition:all .2s ease}.edit-btn:hover{background:#f3f4f6;color:#1f2937}.published-badge{background-color:#dcfce7;color:#166534;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500;display:inline-flex;align-items:center;gap:.25rem}.unpublished-badge{background-color:#fee2e2;color:#991b1b;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500;display:inline-flex;align-items:center;gap:.25rem}.checkbox-group{margin-top:1rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{width:1.25rem;height:1.25rem;border-radius:4px;border:1px solid #d1d5db;cursor:pointer}.checkbox-label span{font-size:.875rem;color:#374151}.header-actions{display:flex;align-items:center;gap:1rem}.bulk-actions{display:flex;align-items:center;gap:.5rem;background-color:#f3f4f6;padding:.25rem .5rem;border-radius:8px;border:1px solid #e5e7eb;animation:slideIn .2s ease-out}.selection-count{font-size:.875rem;color:#4b5563;margin-right:.5rem;font-weight:500}.event-card.selected{border-color:#059669;background-color:#ecfdf5;box-shadow:0 0 0 2px #059669}.header-left{display:flex;align-items:center;gap:.75rem}.event-checkbox{width:1.25rem;height:1.25rem;border-radius:4px;border:2px solid #d1d5db;cursor:pointer;accent-color:#059669;transition:all .2s}.event-checkbox:hover{border-color:#059669}.overview-page{max-width:1200px;margin:0 auto}.page-header{margin-bottom:2rem}.page-title{margin:0;color:#065f46;font-size:1.75rem}.filter-section{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 1px 3px #0000001a;margin-bottom:2rem}.filter-row{display:flex;gap:1.5rem;align-items:flex-end;flex-wrap:wrap}.form-group label{font-weight:500;color:#374151;font-size:.875rem;display:flex;align-items:center;gap:.5rem}.form-input{padding:.75rem;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;min-width:200px}.export-buttons{display:flex;gap:1rem;margin-left:auto}.overview-content{display:flex;flex-direction:column;gap:2rem}.overview-summary{margin-bottom:1rem}.summary-card{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 1px 3px #0000001a}.summary-card h4{margin:0 0 1rem;color:#1f2937;font-size:1.125rem}.summary-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}.summary-item{display:flex;flex-direction:column;gap:.25rem}.summary-item span{font-size:.875rem;color:#6b7280}.summary-item strong{font-size:1.125rem;color:#1f2937}.summary-item.total strong{color:#166534;font-size:1.5rem}.overview-table-wrapper{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow-x:auto}.overview-table{width:100%;border-collapse:collapse;min-width:800px}.overview-table th,.overview-table td{padding:1rem;text-align:left;border-bottom:1px solid #e5e7eb}.overview-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:.875rem}.overview-table td{color:#4b5563}.dog-list{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.dog-tag-wrapper{display:flex;align-items:center;gap:.25rem;background:#f3f4f6;padding:.125rem .75rem .125rem .25rem;border-radius:9999px}.dog-tag-avatar{border-radius:50%;object-fit:cover}.dog-tag{font-size:.75rem;font-weight:500;color:#374151}.price-cell{font-weight:600;color:#166534}.status-badge{display:inline-flex;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600;border:none;cursor:pointer;transition:all .2s ease}.status-badge.signed{background:#dbeafe;color:#1e40af;cursor:default}.status-badge.unsigned{background:#f3f4f6;color:#6b7280;cursor:default}.overview-table tfoot td{background:#f9fafb;border-top:2px solid #e5e7eb;border-bottom:none}.total-label{text-align:right;font-weight:600;color:#374151}.total-price{color:#166534;font-size:1.125rem}.empty-state{text-align:center;padding:4rem 2rem;color:#9ca3af}.person-overview-section{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #0000001a}.person-section-title{margin:0 0 1rem;color:#1f2937;font-size:1.25rem;display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #f3f4f6;padding-bottom:.5rem}.person-section-total{color:#166534;font-weight:600}.grand-total-section{background:#166534;color:#fff;padding:1.5rem;border-radius:12px;text-align:right;box-shadow:0 4px 6px #0000001a}.grand-total-section h3{margin:0;font-size:1.5rem}.signature-modal{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem}.signature-modal-content{background:#fff;border-radius:12px;max-width:800px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.signature-modal-header{padding:1rem 1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.signature-modal-header h3{margin:0;color:#1f2937}.close-button{background:none;border:none;font-size:1.5rem;color:#6b7280;cursor:pointer;padding:.5rem;line-height:1}.signature-modal-body{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;align-items:center;overflow-y:auto}.signature-full{max-width:100%;height:auto;border:1px solid #e5e7eb;border-radius:8px}.signature-details{width:100%;background:#f9fafb;padding:1rem;border-radius:8px}.signature-details p{margin:.5rem 0;color:#4b5563}@media (max-width: 768px){.filter-row{flex-direction:column;align-items:stretch;gap:1rem}.form-input{min-width:100%}.export-buttons{margin-left:0;justify-content:stretch}.export-buttons .btn{flex:1;justify-content:center}}.booking-page{max-width:800px;margin:0 auto;padding:2rem 1rem;font-family:Inter,sans-serif}.booking-header{text-align:center;margin-bottom:3rem}.booking-header h1{color:#065f46;margin-bottom:.5rem}.booking-header p{color:#6b7280}.booking-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:50vh;color:#ef4444;text-align:center;gap:1rem}.filter-bar{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:1rem;margin-bottom:2rem;scrollbar-width:none}.filter-btn{padding:.5rem 1rem;border-radius:9999px;border:1px solid #e5e7eb;background:#fff;color:#374151;white-space:nowrap;cursor:pointer;transition:all .2s}.filter-btn.active{background:#065f46;color:#fff;border-color:#065f46}.events-grid{display:grid;gap:1rem}.event-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:1.5rem;cursor:pointer;transition:all .2s}.event-card:hover{border-color:#065f46;transform:translateY(-2px);box-shadow:0 4px 6px -1px #0000001a}.event-card.full{opacity:.7;cursor:not-allowed;background:#f9fafb}.event-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.event-type{font-weight:600;color:#1f2937;font-size:1.125rem}.badges{display:flex;gap:.5rem}.booked-badge{background:#dcfce7;color:#166534;font-size:.75rem;padding:.25rem .5rem;border-radius:4px;font-weight:500}.full-badge{background:#fee2e2;color:#991b1b;font-size:.75rem;padding:.25rem .5rem;border-radius:4px;font-weight:500}.event-body{display:grid;gap:.75rem}.event-info{display:flex;align-items:center;gap:.75rem;color:#4b5563}.event-slots{display:flex;align-items:center;gap:.75rem;color:#065f46;font-weight:500}.event-price{margin-top:.5rem;font-weight:600;color:#1f2937}.booking-modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}.booking-modal-content{background:#fff;border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;padding:2rem;box-shadow:0 20px 25px -5px #0000001a}.booking-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;border-bottom:1px solid #e5e7eb;padding-bottom:1rem}.timer{display:flex;align-items:center;gap:.5rem;color:#b91c1c;font-weight:500;font-size:.875rem;background:#fef2f2;padding:.25rem .75rem;border-radius:9999px}.event-summary{background:#f3f4f6;padding:1rem;border-radius:8px;margin-bottom:2rem}.event-summary h3{margin:0 0 .5rem;color:#1f2937}.event-summary p{display:flex;align-items:center;gap:.5rem;margin:.25rem 0;color:#4b5563;font-size:.875rem}.booking-form{display:flex;flex-direction:column;gap:1.5rem}.form-group input{padding:.75rem;border:1px solid #d1d5db;border-radius:8px;font-size:1rem}.dogs-section{display:flex;flex-direction:column;gap:.75rem}.dog-input-row{display:flex;gap:.5rem}.dog-input-row input{flex:1;padding:.75rem;border:1px solid #d1d5db;border-radius:8px}.btn-icon.remove{background:#fee2e2;color:#991b1b;width:42px;height:42px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;border:none;cursor:pointer}.add-dog-btn{align-self:flex-start;font-size:.875rem;padding:.5rem 1rem}.warning-text{color:#b91c1c;font-size:.75rem}.form-actions{display:flex;gap:1rem;margin-top:1rem}.form-actions button{flex:1;padding:.75rem;border-radius:8px;font-weight:500;cursor:pointer;border:none}.btn-primary{background:#065f46;color:#fff}.btn-secondary{background:#f3f4f6;color:#374151}.btn-primary:disabled{opacity:.7;cursor:not-allowed}.bookings-list>.event-card{margin-bottom:1rem}.event-description{margin:.5rem 0;font-size:.9rem;color:#4b5563;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.modal-description{margin:.5rem 0;padding:.75rem;background-color:#f3f4f6;border-radius:8px;font-size:.95rem;color:#374151;line-height:1.5}.privacy-notice-compact{margin:1rem 0}.privacy-checkbox{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer}.privacy-checkbox input[type=checkbox]{margin-top:.25rem;width:18px;height:18px;cursor:pointer;flex-shrink:0;accent-color:#065f46}.privacy-checkbox span{font-size:.875rem;color:#374151;line-height:1.6}.privacy-link{background:none;border:none;color:#065f46;text-decoration:underline;cursor:pointer;padding:0;font-size:inherit;font-family:inherit;transition:color .2s}.privacy-link:hover{color:#047857}.privacy-modal{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.privacy-modal-content{background:#fff;border-radius:12px;width:100%;max-width:600px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0003}.privacy-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e5e7eb}.privacy-modal-header h3{margin:0;color:#1f2937;font-size:1.25rem}.close-modal-btn{background:none;border:none;font-size:2rem;line-height:1;color:#6b7280;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.close-modal-btn:hover{background:#f3f4f6;color:#1f2937}.privacy-modal-body{padding:1.5rem}.privacy-modal-body p{color:#4b5563;font-size:.9rem;line-height:1.7;margin:0 0 1rem}.privacy-modal-body p:last-child{margin-bottom:0}.privacy-modal-footer{padding:1rem 1.5rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end}.privacy-modal-footer .btn-primary{padding:.65rem 1.5rem;border-radius:6px;font-size:.9rem}.people-page{max-width:1200px;margin:0 auto}.people-grid{margin-top:2rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.person-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #0000001a;display:flex;gap:1rem;align-items:center;transition:all .3s ease}.person-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.person-card.clickable{cursor:pointer;position:relative}.person-card .chevron{color:#9ca3af;opacity:0;transition:all .2s ease}.person-card:hover .chevron{opacity:1;transform:translate(4px)}.person-icon{background:linear-gradient(135deg,#166534,#0f4a2d);color:#fff;padding:1rem;border-radius:50%;display:flex;align-items:center;justify-content:center}.person-info{flex:1}.person-info h3{margin:0 0 .75rem;color:#1f2937;font-size:1.125rem}.person-stats{display:flex;gap:1.5rem;flex-wrap:wrap}.stat-item{display:flex;flex-direction:column;gap:.25rem}.stat-item .label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#6b7280}.stat-item .value{font-size:1.25rem;font-weight:600;color:#166534}.people-form{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}@media (max-width: 768px){.people-grid{grid-template-columns:1fr;gap:1rem;padding-bottom:4rem}.people-page{padding-bottom:2rem}.people-form{padding:1rem}.modal{padding:0;align-items:stretch;justify-content:stretch}.modal-content{max-width:100%;max-height:100vh;height:100vh;width:100vw;border-radius:0;border:none;margin:0}}.detail-view .page-header{display:flex;flex-direction:column;gap:1rem;align-items:flex-start}.back-btn{display:flex;align-items:center;gap:.5rem;background:none;border:none;color:#4b5563;font-size:.875rem;font-weight:500;cursor:pointer;padding:0;transition:color .2s}.back-btn:hover{color:#166534}.person-detail-content{display:grid;gap:2rem;margin-top:2rem}.detail-section{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #0000001a}.detail-section h3{display:flex;align-items:center;gap:.75rem;margin:0 0 1.5rem;color:#1f2937;font-size:1.25rem}.dogs-list{display:flex;flex-wrap:wrap;gap:1rem}.dog-chip{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background:#f3f4f6;border-radius:9999px;font-weight:500;color:#374151}.dog-avatar-small{width:32px;height:32px;border-radius:50%;object-fit:cover}.dog-avatar-placeholder-small{width:32px;height:32px;border-radius:50%;background:#e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:600;color:#6b7280;font-size:.875rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-header h3{margin:0}.month-filter .month-input{padding:.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;color:#374151}.stats-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:2rem}.stat-box{background:#f9fafb;padding:1rem;border-radius:8px;display:flex;flex-direction:column;gap:.25rem}.attendance-list{display:flex;flex-direction:column;gap:1rem}.attendance-item{display:grid;grid-template-columns:auto 1fr auto;gap:1.5rem;padding:1rem;border:1px solid #e5e7eb;border-radius:8px;align-items:center}.attendance-date{display:flex;flex-direction:column;align-items:center;background:#f3f4f6;padding:.5rem .75rem;border-radius:6px;min-width:60px}.attendance-date .day{font-size:1.25rem;font-weight:700;color:#1f2937;line-height:1}.attendance-date .month{font-size:.75rem;text-transform:uppercase;color:#6b7280;font-weight:600}.attendance-info{display:flex;flex-direction:column;gap:.25rem}.attendance-header{display:flex;align-items:center;gap:1rem}.attendance-header h4{margin:0;color:#1f2937;font-size:1rem}.attendance-header .price{font-weight:600;color:#166534}.attendance-meta{font-size:.875rem;color:#6b7280}.attendance-dogs{font-size:.875rem;color:#4b5563;margin-top:.25rem}.status-badge{padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600}.status-badge.paid{background:#dcfce7;color:#166534}.status-badge.unpaid{background:#fee2e2;color:#991b1b}.empty-month{text-align:center;padding:3rem;color:#9ca3af;background:#f9fafb;border-radius:8px}@media (max-width: 640px){.attendance-item{grid-template-columns:1fr;gap:1rem}.attendance-date{flex-direction:row;justify-content:center;gap:.5rem;align-items:baseline}}.stat-item.warning .value{color:#dc2626;font-weight:600}.stat-item.warning .label{color:#ef4444}.cancellation-fee-badge{display:inline-block;background-color:#fee2e2;color:#991b1b;padding:.125rem .375rem;border-radius:4px;font-size:.675rem;font-weight:600;margin-left:.5rem;vertical-align:middle}.dogs-page{max-width:1200px;margin:0 auto}.dogs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem;margin-top:2rem}.dog-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #0000001a;display:flex;gap:1rem;align-items:flex-start;transition:all .3s ease;position:relative}.dog-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.dog-image-container{flex-shrink:0}.dog-avatar{width:80px;height:80px;border-radius:12px;object-fit:cover;box-shadow:0 2px 4px #0000001a}.dog-avatar-placeholder{width:80px;height:80px;background:linear-gradient(135deg,#22543d,#2d5016);color:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0000001a}.dog-info{flex:1}.dog-info h3{margin:0 0 .75rem;color:#1f2937;font-size:1.25rem}.dog-details{display:flex;flex-direction:column;gap:.5rem}.detail-item{display:flex;gap:.5rem;font-size:.875rem}.detail-item .label{color:#6b7280;font-weight:500}.detail-item .value{color:#374151}.dog-actions{display:flex;gap:.5rem;position:absolute;top:1rem;right:1rem}.btn-icon{background:none;border:none;padding:.5rem;border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.btn-icon.edit{color:#3b82f6}.btn-icon.edit:hover{background:#dbeafe}.btn-icon.delete{color:#ef4444}.btn-icon.delete:hover{background:#fee2e2}.dog-form{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.image-upload-section{display:flex;justify-content:center;margin-bottom:1rem}.image-preview{width:120px;height:120px;border-radius:50%;overflow:hidden;position:relative;cursor:pointer;border:3px solid #e5e7eb;transition:all .2s ease}.image-preview:hover{border-color:#166534}.image-preview img{width:100%;height:100%;object-fit:cover}.image-placeholder{width:100%;height:100%;background:#f3f4f6;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af;gap:.5rem}.image-placeholder span{font-size:.75rem;font-weight:500}.image-overlay{position:absolute;inset:0;background:#0000004d;display:flex;align-items:center;justify-content:center;color:#fff;opacity:0;transition:opacity .2s ease}.image-preview:hover .image-overlay{opacity:1}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;color:#374151;font-size:.875rem}.form-input{padding:.75rem;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;transition:all .2s ease}.form-input:focus{outline:none;border-color:#166534;box-shadow:0 0 0 3px #1665341a}.form-actions{display:flex;gap:1rem;justify-content:flex-end;padding-top:1rem;border-top:1px solid #e5e7eb}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.btn-primary{background:linear-gradient(135deg,#22543d,#2d5016);color:#fff}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a}.btn-secondary{background:#f3f4f6;color:#4b5563}.btn-secondary:hover{background:#e5e7eb}.empty-state{text-align:center;padding:4rem 2rem;color:#9ca3af;grid-column:1 / -1}.empty-state h3{color:#6b7280;margin:1rem 0 .5rem}.empty-state p{margin:0}.age-display{color:#22543d;font-weight:500;margin-top:.25rem;display:block}@media (max-width: 768px){.dogs-grid{grid-template-columns:1fr;gap:1rem}.dog-card{flex-direction:column;padding:1rem}.dog-actions{position:static;justify-content:flex-end;width:100%;padding-top:1rem;border-top:1px solid #e5e7eb}.dog-form{padding:1rem}.dogs-grid{padding-bottom:4rem}.dogs-page{padding-bottom:2rem}.modal{padding:0;align-items:stretch;justify-content:stretch}.modal-content{max-width:100%;max-height:100vh;height:100vh;width:100vw;border-radius:0;border:none;margin:0}}@media (min-width: 769px){.dogs-grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:1.5rem}}.crop-modal-content{max-width:90vw;max-height:90vh;width:600px}.crop-container{position:relative;width:100%;height:400px;background:#000;border-radius:8px;overflow:hidden}.crop-controls{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.zoom-control{display:flex;flex-direction:column;gap:.5rem}.zoom-control label{font-weight:500;color:#374151;font-size:.875rem}.zoom-slider{width:100%;height:6px;border-radius:3px;background:#e5e7eb;outline:none;-webkit-appearance:none;appearance:none}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#22543d;cursor:pointer;transition:all .2s ease}.zoom-slider::-webkit-slider-thumb:hover{background:#1e4a33;transform:scale(1.1)}.zoom-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#22543d;cursor:pointer;border:none;transition:all .2s ease}.zoom-slider::-moz-range-thumb:hover{background:#1e4a33;transform:scale(1.1)}.crop-actions{display:flex;gap:1rem;justify-content:flex-end}@media (max-width: 768px){.crop-container{height:300px}.crop-modal-content{width:95vw}.crop-actions{flex-direction:column-reverse}.crop-actions .btn{width:100%}}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;background:linear-gradient(135deg,#f0fdf4,#dcfce7)}#root{min-height:100vh}@media (max-width: 768px){#root{background:#f5f5f5}}button{font-family:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.container{max-width:1200px;margin:0 auto;padding:0 1rem}.spinner{display:inline-block;width:20px;height:20px;border:3px solid rgba(0,0,0,.1);border-radius:50%;border-top-color:#667eea;animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 640px){.hide-mobile{display:none!important}}@media (min-width: 641px){.show-mobile{display:none!important}}
