*,*:before,*:after{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}#root{min-height:100vh;min-height:100dvh}.layout{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(135deg,#0f172a,#1e293b);padding-bottom:env(safe-area-inset-bottom)}.header{background:#0f172af2;border-bottom:1px solid rgba(148,163,184,.2);padding:.5rem 1rem;padding-top:calc(.5rem + env(safe-area-inset-top));position:sticky;top:0;z-index:10}.logo{font-size:1.2rem;font-weight:700;color:#38bdf8;margin:0 0 .5rem}.nav{display:flex;gap:.5rem;flex-wrap:wrap}.nav-link{color:#94a3b8;text-decoration:none;padding:.5rem .85rem;border-radius:.5rem;font-size:.95rem;transition:all .2s;min-height:44px;display:inline-flex;align-items:center}.nav-link:hover{color:#e2e8f0;background:#38bdf81a}.nav-link.active{color:#38bdf8;background:#38bdf826}.main{flex:1;padding:.75rem 1rem;max-width:800px;margin:0 auto;width:100%}.nav-bottom{display:none;position:fixed;bottom:0;left:0;right:0;background:#0f172afa;border-top:1px solid rgba(148,163,184,.2);padding:.5rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom));z-index:100;justify-content:space-around;align-items:center}.nav-bottom .nav-link{flex:1;flex-direction:column;justify-content:center;gap:.2rem;font-size:.75rem;padding:.5rem .25rem;min-height:52px}.nav-top{display:flex}@media(max-width:768px){.nav-top{display:none}.nav-bottom{display:flex}.main{padding-bottom:calc(5rem + env(safe-area-inset-bottom))}.header{padding-bottom:.5rem}.logo{margin-bottom:0;font-size:1.1rem}.card{padding:.85rem}.form-row-inputs{flex-direction:column}.form-row-inputs .plate-input-wrap,.form-row-inputs .input-tonnage,.form-row-inputs .group-input-wrap{width:100%;min-width:100%}.form-card .plate-input-wrap .input,.form-card .group-input-wrap .input,.form-card .input-tonnage{width:100%;box-sizing:border-box}.form-row-submit .btn-primary{width:100%}.page h2{font-size:1.35rem}.shift-date{font-size:.95rem}}.page h2{color:#f1f5f9;font-size:1.5rem;margin:0 0 .25rem}.shift-date{color:#94a3b8;font-size:1rem;margin:0 0 1rem;text-transform:capitalize}.page h3{color:#e2e8f0;font-size:1rem;margin:0 0 .75rem}.card{background:#1e293bcc;border:1px solid rgba(148,163,184,.15);border-radius:.75rem;padding:1rem;margin-bottom:1rem}.form-card .form-row{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.form-card .form-row:last-of-type{margin-bottom:0}.form-row-inputs{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.form-row-submit{margin-bottom:0}.plate-input-wrap,.group-input-wrap{position:relative;flex:1 1 0;min-width:120px}.input-tonnage{flex:1 1 0;min-width:120px}.suggestions-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:#1e293bfa;border:1px solid rgba(148,163,184,.3);border-radius:.5rem;max-height:240px;overflow-y:auto;z-index:20;box-shadow:0 4px 12px #0000004d}.suggestion-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.75rem .85rem;min-height:48px;background:none;border:none;color:#e2e8f0;font-size:1rem;text-align:left;cursor:pointer;transition:background .15s;-webkit-tap-highlight-color:transparent}.suggestion-item:hover,.suggestion-item.highlighted{background:#38bdf826}.suggestion-item .plate{font-weight:500}.input{padding:.6rem .85rem;border-radius:.5rem;border:1px solid rgba(148,163,184,.3);background:#0f172a80;color:#e2e8f0;font-size:16px;flex:1;min-width:120px;min-height:44px}.input:focus{outline:none;border-color:#38bdf8;box-shadow:0 0 0 2px #38bdf833}.btn{padding:.6rem 1rem;border-radius:.5rem;font-size:.95rem;font-weight:500;cursor:pointer;border:none;transition:all .2s;min-height:44px;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation}.btn-primary{background:#38bdf8;color:#0f172a}.btn-primary:hover{background:#7dd3fc}.btn-primary:active{transform:scale(.98)}.btn-secondary{background:#94a3b833;color:#e2e8f0}.btn-secondary:hover{background:#94a3b84d}.btn-secondary:active{transform:scale(.98)}.btn-danger{background:#ef44444d;color:#fca5a5}.btn-danger:hover{background:#ef444480}.btn-exit{background:#22c55e;color:#0f172a}.btn-exit:active{transform:scale(.98)}.btn-sm{padding:.45rem .75rem;font-size:.9rem;min-height:40px}.btn-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.vehicles-on-territory-card{border-color:#22c55e66;background:#22c55e14}.vehicles-on-territory-card h3{color:#22c55e}.vehicles-on-territory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-top:.5rem}.vehicle-on-territory-header{display:flex;justify-content:space-between;align-items:center;width:100%;gap:.5rem}.vehicle-on-territory-trip-count{font-size:.85rem;color:#38bdf8;font-weight:500;white-space:nowrap}.vehicle-on-territory-card{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.85rem 1rem;background:#1e293be6;border:2px solid #22c55e;border-radius:.75rem;color:#e2e8f0;text-align:left;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.vehicle-on-territory-card:hover{background:#22c55e33;box-shadow:0 0 12px #22c55e59}.vehicle-on-territory-card:active{transform:scale(.98)}.vehicle-on-territory-group{min-height:1.5rem;display:flex;align-items:center}.vehicle-on-territory-card .entry-time{font-size:.85rem}.vehicle-on-territory-action{margin-top:.35rem;font-size:.9rem;font-weight:600;color:#22c55e}@media(max-width:480px){.vehicles-on-territory-grid{grid-template-columns:repeat(2,1fr);gap:.6rem}.vehicle-on-territory-card{padding:.75rem .85rem}}.vehicle-group{margin-bottom:1.25rem}.vehicle-group:last-child{margin-bottom:0}.group-title{font-size:.95rem;color:#38bdf8;margin:0 0 .5rem;font-weight:600}.trip-group{margin-bottom:1.25rem}.trip-group:last-child{margin-bottom:0}.trip-group .group-title{margin-bottom:.35rem}.vehicle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.vehicle-card{position:relative;background:#1e293be6;border:1px solid rgba(148,163,184,.2);border-radius:.75rem;padding:1rem;min-height:80px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;cursor:pointer;color:#e2e8f0;transition:all .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.vehicle-card-on-territory{border:2px solid #22c55e;background:#22c55e33;box-shadow:0 0 12px #22c55e59}.vehicle-card-on-territory:before{content:"";position:absolute;top:.4rem;right:.4rem;width:10px;height:10px;background:#22c55e;border-radius:50%;animation:pulse-dot 1.5s ease-in-out infinite;box-shadow:0 0 6px #22c55e}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.9)}}.vehicle-card:hover{border-color:#38bdf8;background:#38bdf81a}.vehicle-card-on-territory:hover{border-color:#22c55e;background:#22c55e4d;box-shadow:0 0 16px #22c55e73}.vehicle-card-territory-badge{display:inline-block;margin-top:.25rem;padding:.2rem .5rem;font-size:.75rem;font-weight:600;color:#22c55e;background:#22c55e40;border-radius:.35rem}.vehicle-card:active{transform:scale(.97)}@media(max-width:480px){.vehicle-grid{grid-template-columns:repeat(2,1fr);gap:.6rem}.vehicle-card{min-height:72px;padding:.85rem}}.plate{font-weight:600;font-size:1.1rem;letter-spacing:.05em}.tonnage{font-size:.9rem;color:#94a3b8}.vehicle-card .trip-count{font-size:.85rem;color:#38bdf8;font-weight:500}.vehicle-card-payment-status{font-size:.8rem;font-weight:500}.vehicle-card-payment-full{color:#86efac}.vehicle-card-payment-partial{color:#fcd34d}.vehicle-card-actions{display:flex;gap:.5rem;margin-top:.5rem;flex-wrap:wrap;justify-content:center}.vehicle-card-edit-btn,.vehicle-card-payment-btn{padding:.4rem .75rem;min-height:44px;min-width:44px;border-radius:.5rem;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent;border:1px solid}.vehicle-card-edit-btn{background:#38bdf840;border-color:#38bdf866;color:#38bdf8}.vehicle-card-edit-btn:hover{background:#38bdf859}.vehicle-card-payment-btn{background:#22c55e40;border-color:#22c55e66;color:#86efac}.vehicle-card-payment-btn:hover{background:#22c55e59}.vehicle-card-payment{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:#1e293bf2;border:1px solid rgba(34,197,94,.4)}.vehicle-card-payment .input{width:100%}.vehicle-card-payment-actions{display:flex;gap:.5rem;margin-top:.25rem}.vehicle-card-edit{grid-column:span 2;display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:#1e293bf2;border:1px solid rgba(56,189,248,.4);border-radius:.75rem}.vehicle-card-edit .input,.vehicle-card-edit .group-input-wrap{width:100%}.vehicle-card-edit .group-input-wrap .input{width:100%;box-sizing:border-box}.vehicle-card-edit-actions{display:flex;gap:.5rem;margin-top:.25rem}.total-trips{margin-top:1.5rem;padding:.75rem 1rem;background:#1e293bcc;border-radius:.5rem;color:#e2e8f0;font-size:1.1rem}.total-trips strong{color:#38bdf8}.confirm-card{max-width:400px}.active-trips{margin-top:1.5rem}.active-trips h3{color:#e2e8f0;font-size:1rem;margin-bottom:.5rem}.trip-list{list-style:none;padding:0;margin:0}.trip-item{display:flex;align-items:center;gap:.75rem;padding:.65rem 0;border-bottom:1px solid rgba(148,163,184,.1);flex-wrap:wrap}.trip-item .plate{color:#e2e8f0}.trip-item .muted{flex:1;font-size:.9rem;color:#94a3b8;min-width:0}.trip-item-actions{display:flex;gap:.4rem;flex-wrap:wrap;margin-left:auto}@media(max-width:480px){.trip-item{padding:.75rem 0;gap:.5rem}.trip-item-actions{width:100%;margin-left:0;margin-top:.35rem;padding-top:.35rem;border-top:1px solid rgba(148,163,184,.1)}.trip-item-actions .btn-sm{flex:1;min-width:0}}.trip-item-edit{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.trip-item-edit .input{min-width:120px}@media(max-width:480px){.trip-item-edit{flex-direction:column;align-items:stretch}.trip-item-edit .input{min-width:0}.trip-item-edit .btn{flex:1}}.shift-trips{margin-top:1.5rem}.shift-trips h3 .muted{font-weight:400;font-size:.95rem}.list{list-style:none;padding:0;margin:0}.list-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#1e293b99;border-radius:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.item-actions{margin-left:auto;display:flex;gap:.5rem}.edit-row{display:flex;gap:.5rem;flex-wrap:wrap;width:100%}.badge{font-size:.75rem;padding:.2rem .5rem;background:#38bdf833;color:#38bdf8;border-radius:.25rem}.payment-badge{font-size:.75rem;padding:.2rem .5rem;border-radius:.25rem}.payment-badge-cash{background:#22c55e40;color:#86efac}.trip-item-payment-edit{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;width:100%;margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(148,163,184,.15)}.trip-item-payment-edit .input{min-width:100px}.trip-item-payment-edit .input-amount{min-width:90px}.trip-item-payment-edit .payment-edit-for{color:#94a3b8;font-size:.9rem}.trip-item-payment-edit .input-trips{min-width:110px}.payment-summary{margin-top:1rem;padding:.75rem 1rem;background:#1e293bcc;border-radius:.5rem;color:#e2e8f0;font-size:1rem}.payment-summary-item{margin:0 0 .35rem}.payment-summary-item:last-child{margin-bottom:0}.payment-summary-cash strong{color:#86efac}.muted{color:#94a3b8}.small{font-size:.85rem}.hint{color:#94a3b8;font-style:italic}.group-item{flex-direction:column;align-items:stretch}.group-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.group-name{font-weight:600}.group-vehicles{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(148,163,184,.15)}.sublist{list-style:none;padding:0;margin:.5rem 0 0}.sublist-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem 0}.stats-grid{display:flex;flex-direction:column;gap:1rem}.stats-card{padding:1rem;color:#e2e8f0}.stats-card .plate{color:#f1f5f9}.stats-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.stats-total{color:#94a3b8;margin:0 0 .5rem;font-size:.9rem}.trip-timeline{list-style:none;padding:0;margin:0}.trip-timeline-item{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;font-size:.9rem}.trip-timeline-item .time{color:#e2e8f0}.trip-timeline-item .arrow{color:#38bdf8}.report-box{margin-top:1rem;padding:1rem;background:#0f172a99;border-radius:.5rem}.report-box pre{margin:0 0 1rem;white-space:pre-wrap;word-wrap:break-word;color:#e2e8f0;font-size:.9rem}.status-msg{padding:.5rem 1rem;background:#38bdf826;color:#38bdf8;border-radius:.5rem;margin-bottom:1rem}.sync-card{margin-bottom:1rem}.chart-card{overflow:hidden}.chart-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.chart-header h3{margin:0}.chart-subtitle{margin:-.25rem 0 .5rem}.chart-period-toggle,.unique-period-toggle{display:flex;gap:.25rem}.chart-period-toggle button,.unique-period-toggle button{padding:.35rem .65rem;font-size:.85rem;border:1px solid rgba(148,163,184,.3);background:#1e293bcc;color:#94a3b8;border-radius:.5rem;cursor:pointer;transition:color .2s,background .2s,border-color .2s}.chart-period-toggle button:hover,.unique-period-toggle button:hover{color:#e2e8f0;background:#38bdf81a;border-color:#38bdf84d}.chart-period-toggle button.active,.unique-period-toggle button.active{color:#38bdf8;background:#38bdf826;border-color:#38bdf866}.unique-machines-card .unique-stats{margin-top:.5rem;font-size:1.1rem}.unique-machines-card .unique-number{color:#38bdf8;font-weight:700}.unique-machines-card .unique-trips{color:#94a3b8;font-size:.95rem}.chart-wrap{min-height:220px}select.input{cursor:pointer;min-width:180px}
