*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","Segoe UI",sans-serif;background:#F5F5F2;color:#1C1C1C;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit}a{color:inherit}.app-shell{max-width:448px;margin:0 auto;min-height:100vh;position:relative;padding-bottom:100px}.app-header{padding:24px 20px 16px;position:sticky;top:0;background:#F5F5F2;z-index:20;border-bottom:1px solid #E2E0D8}.app-eyebrow{font-size:11px;letter-spacing:.15em;font-weight:600;text-transform:uppercase;color:#8A8577;margin-bottom:4px}.app-title{font-size:22px;font-weight:700;letter-spacing:-.01em}.top-actions{display:flex;gap:8px;margin-top:12px}.mini-btn{font-size:12px;font-weight:700;border:1px solid #E2E0D8;background:#fff;border-radius:8px;padding:8px 10px}.mini-btn.danger{color:#B5590A}.user-line{font-size:12px;color:#8A8577;margin-top:8px}.vehicle-cards{display:flex;gap:8px;padding:16px 20px 0}.vehicle-card{flex:1;border-radius:14px;padding:12px;border:1px solid #E2E0D8;background:#fff;text-align:left}.vehicle-card.active{color:#fff}.vehicle-sub{font-size:10px;font-weight:700;opacity:.75;margin-bottom:4px}.vehicle-name{font-size:17px;font-weight:800}.vehicle-km{font-size:12px;margin-top:6px;font-weight:700}.charge-warn{font-size:10px;margin-top:4px;border-radius:999px;padding:2px 6px;display:inline-block;background:#FBEEE1;color:#B5590A}.date-section,.timeline-section{margin-top:20px;padding:0 20px}.section-label{font-size:12px;font-weight:600;color:#8A8577;margin-bottom:8px}.date-scroll{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;margin:0 -20px;padding-left:20px;padding-right:20px}.date-pill{flex:0 0 auto;width:52px;border-radius:12px;padding:10px 0;display:flex;flex-direction:column;align-items:center;gap:2px;position:relative;border:1px solid #E2E0D8;background:#fff}.date-weekday{font-size:10px;font-weight:500;color:#A6A296}.date-day{font-size:15px;font-weight:700}.date-badge{font-size:9px;font-weight:700;border-radius:999px;padding:1px 6px;margin-top:2px}.timeline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.timeline-hint{font-size:11px;color:#A6A296}.timeline-card{background:#fff;border-radius:12px;border:1px solid #E2E0D8;padding:16px}.timeline-loading{font-size:13px;color:#A6A296;padding:24px 0;text-align:center}.timeline-track{position:relative;height:56px}.timeline-grid{position:absolute;inset:0;display:flex}.timeline-grid-cell{flex:1;border-right:1px solid #EDEBE3}.timeline-grid-cell:last-child{border-right:none}.timeline-blocks{position:absolute;inset:0}.timeline-block{position:absolute;top:4px;bottom:4px;border-radius:6px;display:flex;align-items:center;padding:0 6px;overflow:hidden;min-width:3%}.timeline-block-time{font-size:9px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-axis{display:flex;justify-content:space-between;margin-top:6px}.timeline-axis-label{font-size:9px;color:#A6A296;font-weight:500}.res-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}.res-empty{text-align:center;padding:32px 0;font-size:13px;color:#A6A296}.res-item{background:#fff;border-radius:12px;border:1px solid #E2E0D8;padding:12px 16px}.res-top{display:flex;justify-content:space-between;gap:8px}.res-time{font-size:13px;font-weight:800}.res-name{font-size:12px;color:#8A8577;margin-top:3px;line-height:1.5}.res-actions{display:flex;gap:6px;margin-top:10px}.res-action{font-size:11px;font-weight:700;padding:7px 10px;border-radius:8px;border:1px solid #E2E0D8;background:#fff}.res-action.danger{color:#B5590A}.res-action.primary{color:#2454A6}.floating-bar{position:fixed;bottom:0;left:0;right:0;z-index:30}.floating-bar-inner{max-width:448px;margin:0 auto;padding:32px 20px 20px;background:linear-gradient(to top,#F5F5F2 60%,transparent)}.reserve-btn{width:100%;border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:15px;color:#fff;box-shadow:0 8px 20px rgba(0,0,0,.12)}.overlay{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.4);display:flex}.overlay-bottom{align-items:flex-end;justify-content:center}.overlay-center{align-items:center;justify-content:center;padding:0 24px}.sheet{max-width:448px;width:100%;background:#fff;border-radius:20px 20px 0 0;max-height:88vh;overflow-y:auto}.sheet-header{position:sticky;top:0;background:#fff;padding:16px 20px 12px;border-bottom:1px solid #EDEBE3;display:flex;align-items:center;justify-content:space-between}.sheet-header-btn{font-size:18px;padding:4px}.sheet-title{font-size:14px;font-weight:700}.sheet-body{padding:20px;display:flex;flex-direction:column;gap:16px}.field-label{font-size:11px;font-weight:600;color:#8A8577;margin-bottom:6px}.field-control{width:100%;background:#F5F5F2;border:none;border-radius:8px;padding:12px;font-size:14px;outline:none}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-error{font-size:12px;font-weight:600;color:#B5590A;min-height:16px}.submit-btn{width:100%;border-radius:8px;padding:14px;font-weight:700;font-size:14px;color:#fff;background:#1C1C1C}.card{max-width:384px;width:100%;background:#fff;border-radius:16px;padding:20px}.card-title{font-size:15px;font-weight:700;margin-bottom:4px}.card-sub{font-size:13px;color:#8A8577;margin-bottom:16px}.card-actions{display:flex;gap:8px}.btn-secondary{flex:1;border-radius:8px;padding:12px;font-weight:600;font-size:13px;border:1px solid #E2E0D8;background:#fff}.btn-danger{flex:1;border-radius:8px;padding:12px;font-weight:700;font-size:13px;color:#fff;background:#B5590A}.toast-wrap{position:fixed;top:16px;left:0;right:0;z-index:50;display:flex;justify-content:center;padding:0 20px}.toast{max-width:448px;width:100%;padding:12px 16px;border-radius:12px;box-shadow:0 8px 20px rgba(0,0,0,.18);font-size:13px;font-weight:600;color:#fff}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:0 24px}.auth-box{width:100%;max-width:340px;background:#fff;border-radius:16px;border:1px solid #E2E0D8;padding:22px}.auth-org{font-size:13px;font-weight:600;color:#8A8577;margin-bottom:4px;text-align:center}.auth-title{font-size:20px;font-weight:800;margin-bottom:20px;text-align:center}.auth-tabs{display:flex;gap:8px;margin-bottom:16px}.auth-tab{flex:1;border-radius:8px;padding:10px;font-size:13px;font-weight:800;background:#F5F5F2}.auth-tab.active{background:#1C1C1C;color:#fff}.hidden{display:none!important}.admin-panel{padding:20px}.admin-card{background:#fff;border:1px solid #E2E0D8;border-radius:12px;padding:14px;margin-bottom:10px}.admin-title{font-weight:800;font-size:14px;margin-bottom:8px}
.consent-sub{font-size:12px;color:#8A8577;line-height:1.5;margin-bottom:14px}.consent-table{background:#F5F5F2;border-radius:10px;padding:12px;margin-bottom:14px;display:flex;flex-direction:column;gap:9px}.consent-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;line-height:1.4}.consent-row span{color:#8A8577;flex:none}.consent-row strong{text-align:right;font-weight:700}.consent-note{font-size:11px;color:#A6A296;line-height:1.5;margin-bottom:14px}.consent-box .btn-secondary{display:block;text-align:center}

/* v0.4 vehicle status / return polish */
.vehicle-status{font-size:11px;font-weight:800;margin-top:8px;border-radius:999px;padding:3px 7px;display:inline-block;background:rgba(255,255,255,.18)}
.vehicle-card:not(.active) .vehicle-status{background:#F5F5F2;color:#1C1C1C}
.vehicle-status.running{background:#B5590A;color:#fff}.vehicle-card.active .vehicle-status.running{background:rgba(255,255,255,.26);color:#fff}
.vehicle-status.available{background:#E8F4EA;color:#2E7D32}.vehicle-card.active .vehicle-status.available{background:rgba(255,255,255,.26);color:#fff}
.vehicle-next{font-size:10px;font-weight:600;margin-top:4px;opacity:.8;line-height:1.35}.readonly{color:#8A8577;font-weight:700}.auth-box{width:100%;max-width:340px;background:#fff;border:1px solid #E2E0D8;border-radius:16px;padding:20px}.auth-org{font-size:13px;font-weight:700;color:#8A8577;margin-bottom:4px;text-align:center}.auth-title{font-size:19px;font-weight:800;margin-bottom:18px;text-align:center}.auth-tabs{display:flex;gap:8px;margin-bottom:16px}.auth-tab{flex:1;border-radius:10px;border:1px solid #E2E0D8;padding:10px;font-size:13px;font-weight:800;background:#fff}.auth-tab.active{background:#1C1C1C;color:#fff;border-color:#1C1C1C}.hidden{display:none!important}.admin-panel{padding:12px 20px 0}.admin-card{background:#fff;border:1px solid #E2E0D8;border-radius:12px;padding:12px;margin-bottom:8px}.admin-title{font-size:13px;font-weight:800;margin-bottom:6px}

/* v0.5 carnival open-date controls */
.open-badge{display:inline-block;margin-top:6px;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:800;background:#FBEEE1;color:#B5590A}
.date-pill.blocked{opacity:.38}
.date-pill.blocked .date-badge{background:#F5F5F2;color:#B5590A}
.open-note{font-size:12px;font-weight:700;line-height:1.45;color:#B5590A;background:#FBEEE1;border-radius:10px;padding:10px 12px}


/* v0.6 admin management */
.admin-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.admin-help{font-size:11px;line-height:1.45;color:#8A8577;margin-top:4px}
.admin-tabs2{display:flex;gap:6px;overflow-x:auto;margin-bottom:10px;padding-bottom:2px}
.admin-tab2{flex:1;min-width:68px;border:1px solid #E2E0D8;background:#fff;border-radius:9px;padding:8px 6px;font-size:12px;font-weight:800;color:#8A8577}
.admin-tab2.active{background:#1C1C1C;border-color:#1C1C1C;color:#fff}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.admin-stat{background:#fff;border:1px solid #E2E0D8;border-radius:12px;padding:12px}
.admin-stat span{display:block;font-size:11px;color:#8A8577;margin-bottom:5px;font-weight:700}
.admin-stat strong{font-size:18px;font-weight:900}
.admin-row{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #EDEBE3;align-items:flex-start}
.admin-row:first-of-type{border-top:none}
.admin-user-row strong{font-size:13px}
.admin-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.admin-badge{font-size:10px;font-weight:800;border-radius:999px;padding:3px 7px;background:#F5F5F2;color:#8A8577}
.admin-badge.good{background:#E8F4EA;color:#2E7D32}
.admin-badge.off{background:#FBEEE1;color:#B5590A}
.admin-badge.admin{background:#E8EEF8;color:#2454A6}
.admin-row-actions{display:flex;flex-direction:column;gap:6px;min-width:82px}
.small-action{border:1px solid #E2E0D8;background:#fff;border-radius:8px;padding:7px 8px;font-size:11px;font-weight:800;white-space:nowrap}
.admin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.admin-form-grid .field-control{font-size:13px;padding:10px}
.check-line{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:#1C1C1C;background:#F5F5F2;border-radius:8px;padding:10px}
.admin-submit{margin-top:10px;padding:12px;font-size:13px;background:#1C1C1C}
.vehicle-edit-card{border-top:1px solid #EDEBE3;padding:12px 0}
.vehicle-edit-card:first-of-type{border-top:none}
.vehicle-edit-title{font-size:13px;font-weight:900;margin-bottom:4px}
.vehicle-active{margin-top:10px;background:#fff;border:1px solid #E2E0D8}
@media(max-width:360px){.admin-form-grid{grid-template-columns:1fr}.admin-grid{grid-template-columns:1fr}.admin-row{flex-direction:column}.admin-row-actions{flex-direction:row}.admin-tab2{min-width:64px}}


/* v0.8 history / statistics */
.admin-filter-bar{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.history-search{margin-bottom:4px}
.history-row{padding:12px 0;border-top:1px solid #EDEBE3}
.history-row:first-of-type{border-top:none}
.history-main{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:4px}
.history-main strong{font-size:13px;font-weight:900}
.history-main span{font-size:12px;font-weight:800;color:#8A8577;white-space:nowrap}
.history-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.history-meta span{font-size:10px;font-weight:800;border-radius:999px;padding:3px 7px;background:#F5F5F2;color:#8A8577}
.history-note{font-size:11px;line-height:1.45;color:#8A8577;background:#F5F5F2;border-radius:8px;padding:8px;margin-top:8px}
.stat-row{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-top:1px solid #EDEBE3;align-items:center}
.stat-row:first-of-type{border-top:none}
.stat-row strong{font-size:13px;font-weight:900}
.stat-percent{font-size:14px;font-weight:900;color:#2454A6}
@media(max-width:360px){.admin-filter-bar{grid-template-columns:1fr}.history-main{flex-direction:column}.history-main span{white-space:normal}}


/* v0.9 deployment polish */
.version-badge{display:inline-block;margin-left:6px;letter-spacing:0;text-transform:none;border-radius:999px;padding:2px 6px;background:#1C1C1C;color:#fff;font-size:9px;vertical-align:1px}
.submit-btn:disabled,.reserve-btn:disabled,.mini-btn:disabled,.small-action:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:380px){.top-actions{display:grid;grid-template-columns:1fr 1fr}.top-actions .mini-btn{padding:8px 6px}.app-title{font-size:20px}.vehicle-cards{gap:6px}.vehicle-card{padding:10px}.field-row{grid-template-columns:1fr}.sheet{max-height:92vh}}

/* v1.0 log tab */
.history-note{word-break:break-word;}
.version-badge{white-space:nowrap;}

/* v1.1 return location */
.required-mark{display:inline-block;margin-left:4px;font-size:10px;font-weight:800;color:#B5590A}

.admin-badge.warn{background:#fff3cd;color:#8a5a00;border-color:#ffe08a;}
