:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;align-items:center;justify-content:center;min-width:320px;min-height:100vh}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:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.mileage-graph{padding:2px;position:relative;background-color:#338b9b;border-radius:3px;box-shadow:0 1px 3px #0000001a;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.mileage-graph h4{margin:0 0 6px;color:#333}.graph-container{margin-left:100px;margin-right:20px;margin-bottom:40px;border-left:1px solid #ccc;border-bottom:1px solid #ccc;height:300px;position:relative;background-color:#fff}.grid-lines{position:absolute;inset:0;background:repeating-linear-gradient(to bottom,#f5f5f5 0px,#f5f5f5 1px,transparent 1px,transparent 60px);pointer-events:none}.y-axis{position:absolute;left:-100px;top:0;bottom:0;width:90px;display:flex;flex-direction:column;justify-content:space-between}.y-axis-label{font-size:12px;color:#666;text-align:right;padding-right:10px}.x-axis{position:absolute;left:0;right:0;bottom:-30px}.x-axis-label{position:absolute;transform:translate(-50%) rotate(-45deg);font-size:12px;color:#666;white-space:nowrap;transform-origin:top center}.mileage-line{position:absolute;height:2px;background-color:#4a90e2;transform-origin:left center}.mileage-point{position:absolute;width:8px;height:8px;background-color:#4a90e2;border-radius:50%;transform:translate(-50%,-50%);cursor:pointer;z-index:1}.point-label{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#fffffff2;padding:4px 8px;border-radius:4px;font-size:12px;white-space:nowrap;box-shadow:0 2px 4px #0000001a;pointer-events:none;z-index:2;margin-bottom:8px;text-align:center;line-height:1.4;opacity:0}.mileage-point:hover .point-label{opacity:1}.mileage-graph>div{min-width:600px}@media(max-width:768px){.mileage-graph>div{min-width:500px}}.car-card{border-radius:12px;box-shadow:0 2px 8px #00000014;transition:transform .2s ease,box-shadow .2s ease;display:flex;flex-direction:column;height:100%}.car-card:hover{box-shadow:0 8px 16px #0000001f}.car-image{width:100%;height:200px;object-fit:contain}.car-info{padding-left:2%;padding-right:2%;flex:1;display:flex;flex-direction:column}.car-info h3,.registration-info,.registration,.vignette{margin-top:1%}.car-title{font-size:18px;font-weight:600;margin:0;color:#1a1a1a}.car-details{display:flex;flex-direction:column;gap:8px;font-size:14px;color:#666}.car-detail-row{display:flex;justify-content:space-between;align-items:center}.car-detail-label{font-weight:500;color:#444}@media(max-width:768px){.car-image{height:180px}.car-title{font-size:16px}.car-details{font-size:13px}}.expiry-warning{color:#d32f2f;font-weight:700}.toggle-services{background-color:#1976d2;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;margin:16px 0}.toggle-services:hover{background-color:#1565c0}.services-list{margin-top:16px;border-top:1px solid #eee;padding-top:16px}.service-item{background-color:#f5f5f5;padding:16px;margin:16px 0;border-radius:8px;box-shadow:0 2px 4px #0000000d}.service-header{border-bottom:1px solid #e0e0e0;padding-bottom:8px;margin-bottom:12px}.service-header h4{margin:0 0 8px;color:#1976d2}.service-header p{margin:0;color:#666}.service-details{margin:12px 0}.service-detail-item{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px dashed #e0e0e0}.service-detail-item:last-child{border-bottom:none}.service-total{margin-top:12px;padding-top:12px;border-top:2px solid #e0e0e0;display:flex;flex-direction:column;align-items:flex-end;gap:6px;font-size:1.1em;color:#000}.service-total .total-line{color:#000;font-weight:400;font-style:italic;font-size:.8em}.service-total .total-value{margin-left:6px;font-style:italic}.service-total .paid-line{color:#1976d2;font-weight:700}.service-total .paid-value{margin-left:6px}.service-attachments{margin-top:16px;padding-top:16px;border-top:1px solid #e0e0e0}.service-attachments h5{margin:0 0 8px;color:#666}.attachment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:12px;margin-top:8px}.attachment-item{display:flex;flex-direction:column;align-items:center;text-decoration:none;color:#666;padding:8px;border:1px solid #e0e0e0;border-radius:4px;transition:all .2s ease}.attachment-item:hover{background-color:#f5f5f5;border-color:#1976d2;color:#1976d2}.pdf-icon{margin-bottom:4px;color:#e53935}.attachment-item span{font-size:.8em;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.progress-container{width:100%;height:10px;background-color:#e0e0e0;border-radius:5px;margin:8px 0;overflow:hidden}.progress-bar{height:100%;transition:width .3s ease}.progress-bar.good{background-color:#4caf50}.progress-bar.warning{background-color:#ff9800}.progress-bar.danger{background-color:#f44336}.days-left{font-size:.9em;color:#666;margin-top:1px}.traffic-permit{margin-top:8px}.registration-thumb-button{padding:0;border:none;background:transparent;cursor:pointer;display:inline-block;border-radius:6px}.traffic-permit-thumb{width:48px;height:48px;object-fit:cover;border-radius:6px;box-shadow:0 1px 4px #0003;display:block}.registration-modal{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.registration-modal__content{position:relative;max-width:95%;max-height:95%;background:#fff;border-radius:8px;padding:12px;box-shadow:0 8px 30px #0006;display:flex;align-items:center;justify-content:center}.registration-modal__image{max-width:100%;max-height:80vh;object-fit:contain;border-radius:4px}.registration-modal__close{position:absolute;top:8px;right:8px;background:transparent;border:none;font-size:24px;line-height:1;cursor:pointer}.registration-pdfs{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}.pdf-link{display:inline-flex;align-items:center;gap:6px;padding:6px 8px;background:#f7f7f8;border-radius:8px;text-decoration:none;color:inherit;font-size:.95rem;box-shadow:0 1px 3px #0000000f}.pdf-link svg{flex:none;width:18px;height:18px}.pdf-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px;display:inline-block;vertical-align:middle}.mileage-display{margin:12px 0;display:flex;flex-direction:column;gap:8px}.mileage-value{display:flex;gap:12px;align-items:center}.edit-mileage-btn,.save-mileage-btn,.cancel-mileage-btn{background:#1976d2;color:#fff;border:none;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:.9rem}.cancel-mileage-btn{background:#9e9e9e}.mileage-edit{display:flex;gap:8px;align-items:center}.mileage-input{width:120px;padding:6px 8px;border-radius:6px;border:1px solid #ccc}.service-due{margin-top:12px;padding:8px 0}.service-info{font-size:.9rem;color:#666;margin-top:6px}.service-due-warning{color:#d32f2f;font-weight:700;margin-top:6px}.cars-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;padding:20px;width:100%}.cars-grid-loading,.cars-grid-error,.cars-grid-empty{text-align:center;padding:40px 20px;color:#666;font-size:16px;width:100%}.cars-grid-error{color:#d32f2f}@media(max-width:768px){.cars-grid{grid-template-columns:repeat(2,1fr);padding:12px;gap:12px}}.parking-container{border-top:1px solid #e6e6e9;padding:12px;background:#fafafa;margin-top:18px}.parking-map-wrapper{margin-top:18px;width:100vw;margin-left:calc(-50vw + 50%);overflow-x:auto;-webkit-overflow-scrolling:touch}.parking-top{display:flex;flex-direction:column;gap:12px;padding:0 12px;max-width:1400px;margin:0 auto}.cars-list{width:100%}.cars-list-title{font-weight:600;margin-bottom:8px;font-size:14px}.cars-list-items{display:flex;gap:8px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}.car-select{display:flex;flex-direction:column;align-items:center;min-width:80px;padding:8px;border:2px solid transparent;background:#fff;border-radius:8px;cursor:pointer;flex-shrink:0}.car-select.selected{border-color:#2a6ef2;box-shadow:0 2px 8px #2a6ef24d}.car-select img{width:48px;height:48px;object-fit:contain;border-radius:6px;margin-bottom:6px}.car-label{font-size:11px;text-align:center;font-weight:600}.car-parked{font-size:10px;color:#666;margin-top:4px;text-align:center}.parking-map{position:relative;width:100%;max-width:1400px;height:800px;background-image:url(/parking-map.png);background-size:contain;background-position:center;background-repeat:no-repeat;border-radius:8px;border:1px solid #e6e6e9;box-shadow:0 6px 18px #0000000f;margin:0 auto}.map-slot{position:absolute;display:flex;align-items:center;justify-content:center;gap:2px;padding:2px;border-radius:4px;background:#fffffff2;border:1px solid rgba(0,0,0,.12);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;-webkit-user-select:none;user-select:none}.map-slot-horizontal{width:24px;height:18px;font-size:8px}.map-slot-vertical{width:18px;height:24px;flex-direction:column;font-size:8px}.map-slot-central{width:80px;height:450px;flex-direction:column;font-size:8px;background-color:#585f58;pointer-events:none}.map-slot:hover{transform:translate(-50%,-50%) scale(1.15);box-shadow:0 4px 12px #0003;z-index:10}.map-slot.occupied{background:#2a6ef233;border-color:#2a6ef280}.map-slot.highlight{box-shadow:0 0 0 2px #2a6ef266;z-index:11}.slot-badge{font-weight:700;font-size:7px;color:#222;line-height:1}.slot-logo{width:14px;height:14px;object-fit:contain;border-radius:2px}@media(max-width:768px){.parking-map-wrapper{padding:0;width:100vw;margin-left:calc(-50vw + 50%)}.parking-top{padding:0 8px;max-width:100%}.parking-map{min-width:1200px;width:1200px;height:1000px;max-width:none}.map-slot-horizontal{width:32px;height:24px;font-size:9px;gap:3px;padding:3px}.map-slot-vertical{width:24px;height:32px;font-size:9px;gap:3px;padding:3px}.map-slot-central{width:100px;height:600px}.slot-badge{font-size:8px}.slot-logo{width:20px;height:20px}}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.auth-card{background:#fff;padding:40px;border-radius:16px;box-shadow:0 10px 40px #0003;width:100%;max-width:400px}.auth-card h2{margin:0 0 32px;text-align:center;color:#1a1a1a;font-size:28px}.auth-card form{display:flex;flex-direction:column;gap:16px}.auth-card input{padding:14px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:15px;transition:border-color .2s}.auth-card input:focus{outline:none;border-color:#667eea}.auth-card input:disabled{background:#f5f5f5;cursor:not-allowed}.auth-card button[type=submit]{padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-weight:600;font-size:16px;cursor:pointer;transition:transform .2s,box-shadow .2s}.auth-card button[type=submit]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.auth-card button[type=submit]:disabled{opacity:.6;cursor:not-allowed;transform:none}.auth-card .error{color:#d32f2f;font-size:14px;text-align:center;padding:12px;background:#ffebee;border-radius:6px;border-left:4px solid #d32f2f}.auth-card .message{color:#2e7d32;font-size:14px;text-align:center;padding:12px;background:#e8f5e9;border-radius:6px;border-left:4px solid #2e7d32}.toggle-mode{margin-top:20px;background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;text-align:center;width:100%;padding:10px;transition:color .2s}.toggle-mode:hover:not(:disabled){color:#764ba2;text-decoration:underline}.toggle-mode:disabled{opacity:.5;cursor:not-allowed}@media(max-width:480px){.auth-card{padding:30px 20px}.auth-card h2{font-size:24px;margin-bottom:24px}}body{margin:0;padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch}#root{min-width:100vw;overflow-x:auto}.app-container{width:100%;min-width:100vw;overflow-x:auto}.app{min-height:100vh;background-color:#f5f5f5}.app-header{background:linear-gradient(135deg,#1976d2,#1565c0);color:#fff;padding:24px 40px;display:flex;align-items:center;box-shadow:0 4px 12px #00000026}.app-header h1{margin:0;font-size:2.2rem;font-weight:700;letter-spacing:.5px;text-shadow:0 2px 4px rgba(0,0,0,.1)}.logout-button{margin-left:auto;background-color:#fffffff2;color:#1976d2;border:2px solid rgba(255,255,255,.3);padding:10px 24px;border-radius:8px;cursor:pointer;font-weight:600;font-size:15px;transition:all .3s ease;box-shadow:0 2px 8px #0000001a}.logout-button:hover{background-color:#fff;color:#1565c0;border-color:#fff;transform:translateY(-2px);box-shadow:0 4px 16px #0003}main{padding:20px}
