:root{--blue: #4385BE;--blue-hover: #3A75A8;--blue-pressed: #2F6693;--blue-light: #E8F1F8;--success: #7A8B3D;--success-light: #EEF2E5;--warning: #C9A035;--warning-light: #FBF6E9;--error: #C45C5C;--error-light: #FAEAEA;--canvas: #F4F4F1;--card: #FFFFFF;--card-hover: #FBFBFA;--border: #E9E7E2;--border-strong: #D7D4CC;--divider: #F0EEE8;--text-primary: #1A1A1A;--text-secondary: #6E6B66;--text-tertiary: #9C9893;--shadow-card: 0 1px 2px rgba(23, 22, 20, .04), 0 4px 14px rgba(23, 22, 20, .05);--shadow-card-pressed: 0 1px 2px rgba(23, 22, 20, .06);--shadow-header: 0 1px 0 rgba(23, 22, 20, .06);--frame-bg: radial-gradient(ellipse at top, #1c1c1b 0%, #0a0a09 100%);--frame-ring: #17171605;--shadow-frame: 0 50px 120px rgba(0, 0, 0, .55), 0 20px 40px rgba(0, 0, 0, .35), 0 0 0 1px rgba(255, 255, 255, .04) inset;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 28px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--font: "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif;--text-xs: 11px;--text-sm: 13px;--text-md: 15px;--text-lg: 17px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 28px;--lh-tight: 1.25;--lh-body: 1.5;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--header-h: 56px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{font-family:var(--font);font-size:var(--text-md);line-height:var(--lh-body);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{background:none;border:none;cursor:pointer}a{color:var(--blue);text-decoration:none}body{background:var(--frame-bg);min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--sp-6)}#root{width:100%;max-width:420px;height:min(92dvh,900px);display:flex}.app-shell{position:relative;flex:1;display:flex;flex-direction:column;background:var(--canvas);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-frame);isolation:isolate}.app-shell:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;border:1px solid rgba(255,255,255,.5);pointer-events:none;z-index:1}@media(max-width:640px){body{background:var(--canvas);padding:0;display:block}#root{max-width:none;height:100dvh}.app-shell{border-radius:0;box-shadow:none}.app-shell:before{display:none}}@media(min-width:641px)and (max-width:1280px){#root{max-width:720px;height:min(94dvh,1024px)}}.app-header{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:64px 1fr 64px;align-items:center;height:var(--header-h);padding:0 var(--sp-2);background:#f4f4f1d1;backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid transparent;transition:border-color .2s var(--ease-out)}.app-header.scrolled{border-bottom-color:var(--border)}.nav-slot{display:flex;align-items:center;min-width:0}.nav-slot-left{justify-content:flex-start;padding-left:var(--sp-2)}.nav-slot-right{justify-content:flex-end;gap:var(--sp-1);padding-right:var(--sp-2)}.nav-title{font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em;text-align:center;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-back{display:inline-flex;align-items:center;gap:2px;height:40px;padding:0 var(--sp-2) 0 4px;border-radius:var(--r-sm);color:var(--blue);font-size:var(--text-md);font-weight:500;transition:opacity .12s var(--ease-out)}.nav-back:active{opacity:.55}.nav-icon-btn{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--text-secondary);transition:background .15s var(--ease-out),color .12s var(--ease-out)}.nav-icon-btn:hover{background:#1716140b;color:var(--text-primary)}.nav-icon-btn:active{background:#17161417}.app-main{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scroll-padding-top:var(--header-h)}.app-main::-webkit-scrollbar{width:0}.page{padding:var(--sp-4) var(--sp-5) calc(var(--sp-10) + env(safe-area-inset-bottom));animation:page-in .32s var(--ease-out) both}.page-tight{padding:0 0 calc(var(--sp-10) + env(safe-area-inset-bottom))}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-title{font-size:var(--text-2xl);font-weight:600;letter-spacing:-.02em;margin:var(--sp-2) 0 var(--sp-5)}.section-heading{display:block;font-size:var(--text-xs);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;padding:0 var(--sp-1);margin:var(--sp-5) 0 var(--sp-2)}.section-heading:first-child{margin-top:0}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-error{color:var(--error)}.tabnum{font-variant-numeric:tabular-nums}.loading-text,.empty-text{padding:var(--sp-8) 0;text-align:center;font-size:var(--text-sm);color:var(--text-tertiary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:44px;padding:0 var(--sp-5);border-radius:var(--r-md);font-size:var(--text-md);font-weight:600;line-height:1;border:1.5px solid transparent;background:transparent;color:var(--text-primary);transition:transform 90ms var(--ease-out),background .14s var(--ease-out),border-color .14s var(--ease-out),color .14s var(--ease-out),opacity .14s var(--ease-out);user-select:none;-webkit-user-select:none}.btn:disabled{opacity:.38;cursor:not-allowed}.btn:not(:disabled):active{transform:scale(.97)}.btn-outline{border-color:var(--border-strong);background:var(--card);color:var(--text-primary)}.btn-outline:hover:not(:disabled){border-color:var(--text-secondary)}.btn-outline-primary{border-color:var(--blue);background:var(--card);color:var(--blue)}.btn-outline-primary:hover:not(:disabled){background:var(--blue-light)}.btn-outline-destructive{border-color:var(--error);background:var(--card);color:var(--error)}.btn-outline-destructive:hover:not(:disabled){background:var(--error-light)}.btn-outline-warning{border-color:var(--warning);background:var(--card);color:var(--warning)}.btn-outline-warning:hover:not(:disabled){background:var(--warning-light)}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 2px 6px #4385be40}.btn-primary:hover:not(:disabled){background:var(--blue-hover);border-color:var(--blue-hover)}.btn-primary:not(:disabled):active{background:var(--blue-pressed);border-color:var(--blue-pressed);box-shadow:0 1px 2px #4385be33}.btn-destructive{background:var(--error);border-color:var(--error);color:#fff}.btn-destructive:hover:not(:disabled){background:#b04e4e;border-color:#b04e4e}.btn-ghost{min-height:40px;padding:0 var(--sp-3);color:var(--text-secondary);font-weight:500}.btn-ghost:hover:not(:disabled){color:var(--text-primary);background:#1716140a}.btn-ghost:active:not(:disabled){background:#17161414}.btn-sm{min-height:36px;padding:0 var(--sp-3);font-size:var(--text-sm)}.btn-block{width:100%}.btn-lg{min-height:52px;font-size:var(--text-md)}.banner{display:flex;align-items:center;gap:var(--sp-2);padding:10px var(--sp-5);font-size:var(--text-sm);font-weight:500;animation:banner-in .26s var(--ease-out)}@keyframes banner-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.banner-warning{background:var(--warning-light);color:#8a6c1f;border-bottom:1px solid rgba(201,160,53,.2)}.banner-demo{background:var(--blue-light);color:var(--blue);justify-content:space-between;border-bottom:1px solid rgba(67,133,190,.2)}.pill{display:inline-flex;align-items:center;font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:var(--r-pill);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;line-height:1.4}.pill-blue{background:var(--blue-light);color:var(--blue)}.pill-warning{background:var(--warning-light);color:#9a7a1f}.pill-success{background:var(--success-light);color:#5c6b2a}.pill-error{background:var(--error-light);color:#9e4747}.pill-neutral{background:var(--divider);color:var(--text-secondary)}.date-nav{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;padding:var(--sp-4) var(--sp-5);background:var(--card);border-bottom:1px solid var(--border)}.date-nav-btn{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-md);color:var(--text-secondary);transition:background .14s var(--ease-out),color .12s}.date-nav-btn:hover:not(:disabled){background:var(--canvas);color:var(--text-primary)}.date-nav-btn:active:not(:disabled){background:var(--divider);transform:scale(.94)}.date-nav-btn:disabled{opacity:.3}.date-nav-label{text-align:center;display:flex;flex-direction:column;align-items:center;gap:1px}.date-label{font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em;color:var(--text-primary);line-height:1.2}.date-sublabel{font-size:var(--text-xs);color:var(--text-tertiary);letter-spacing:.01em;font-variant-numeric:tabular-nums}.trip-count{display:block;font-size:var(--text-xs);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;padding:var(--sp-4) var(--sp-5) var(--sp-2)}.trip-list{padding:0 var(--sp-5);display:flex;flex-direction:column;gap:10px}.trip-card{display:flex;align-items:center;gap:var(--sp-4);width:100%;padding:var(--sp-4) var(--sp-5);background:var(--card);border:none;border-radius:var(--r-lg);box-shadow:var(--shadow-card);text-align:left;cursor:pointer;transition:transform .14s var(--ease-out),box-shadow .18s var(--ease-out),background .12s;animation:card-in .4s var(--ease-out) both}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.trip-card:nth-child(1){animation-delay:0ms}.trip-card:nth-child(2){animation-delay:40ms}.trip-card:nth-child(3){animation-delay:80ms}.trip-card:nth-child(4){animation-delay:.12s}.trip-card:nth-child(5){animation-delay:.16s}.trip-card:nth-child(6){animation-delay:.2s}.trip-card:hover{background:var(--card-hover)}.trip-card:active{transform:scale(.985);box-shadow:var(--shadow-card-pressed)}.trip-card__leading{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.trip-card__time{font-size:var(--text-xl);font-weight:600;letter-spacing:-.02em;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1.15}.trip-card__type{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.trip-card__facility{font-size:var(--text-xs);color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trip-card__trailing{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-2);color:var(--text-tertiary)}.hub-strip{margin:var(--sp-6) var(--sp-5) 0;padding-top:var(--sp-5);border-top:1px solid var(--border)}.hub-strip-list{display:flex;flex-direction:column}.hub-strip-row{display:grid;grid-template-columns:60px 1fr auto;gap:var(--sp-3);align-items:center;padding:10px 0;border-bottom:1px solid var(--divider);font-size:var(--text-sm)}.hub-strip-row:last-child{border-bottom:none}.hub-strip-time{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.hub-strip-facility{color:var(--text-secondary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hub-strip-driver{color:var(--text-tertiary);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px}.detail-header{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-5) var(--sp-5) var(--sp-4)}.detail-header__title{font-size:var(--text-2xl);font-weight:600;letter-spacing:-.02em;color:var(--text-primary);line-height:1.15}.detail-group{margin:0 var(--sp-5) var(--sp-4)}.detail-card{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-card);overflow:hidden}.detail-card__heading{font-size:var(--text-xs);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;padding:var(--sp-4) var(--sp-5) var(--sp-2)}.detail-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:14px var(--sp-5);border-top:1px solid var(--divider);min-height:52px}.detail-card>.detail-row:first-child,.detail-card__heading+.detail-row{border-top:none}.detail-row__label{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);flex-shrink:0}.detail-row__value{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);text-align:right;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-row__value-block{max-width:62%;text-align:right;white-space:normal;word-break:break-word;font-size:var(--text-sm);font-weight:500;color:var(--text-primary)}.detail-row-link{color:var(--blue);font-weight:600;display:inline-flex;align-items:center;gap:6px;padding:14px var(--sp-5);border-top:1px solid var(--divider);width:100%;justify-content:center;transition:background .14s var(--ease-out)}.detail-row-link:hover{background:var(--blue-light)}.detail-row-link:active{background:#4385be2e}.reveal-row{flex-direction:column;align-items:stretch;gap:6px;padding:14px var(--sp-5)}.reveal-top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3)}.reveal-hint{font-size:var(--text-xs);color:var(--blue);text-align:right;font-weight:500;letter-spacing:.01em}.timeline{display:flex;flex-direction:column;padding:var(--sp-2) 0 var(--sp-3)}.timeline-row{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:var(--sp-2);padding:10px var(--sp-5);font-size:var(--text-sm)}.timeline-dot{position:relative;width:10px;height:10px;border-radius:50%;background:var(--border-strong);margin-left:6px;box-shadow:0 0 0 3px var(--card)}.timeline-dot-done{background:var(--success);box-shadow:0 0 0 3px var(--card),0 0 0 4px var(--success-light)}.timeline-label{font-weight:500;color:var(--text-primary)}.timeline-time{color:var(--text-tertiary);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.timeline-empty{padding:var(--sp-4) var(--sp-5) var(--sp-5);font-size:var(--text-sm);color:var(--text-tertiary)}.cancel-card{background:var(--error-light);border:1px solid rgba(196,92,92,.18)}.cancel-card__label{font-size:var(--text-xs);font-weight:600;color:var(--error);text-transform:uppercase;letter-spacing:.08em;padding:14px var(--sp-5) 4px}.cancel-card__reason{font-size:var(--text-sm);color:var(--error);padding:0 var(--sp-5) 14px;line-height:1.5}.detail-actions{display:flex;flex-direction:column;gap:10px;margin:var(--sp-5) var(--sp-5) 0}.action-error{font-size:var(--text-sm);color:var(--error);background:var(--error-light);border-radius:var(--r-md);padding:10px var(--sp-4);margin:0 var(--sp-5) var(--sp-2)}.offline-note{font-size:var(--text-xs);color:var(--text-tertiary);text-align:center;padding:var(--sp-2) 0 0}.login-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:var(--sp-6);text-align:center;position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;top:-40%;left:-20%;right:-20%;height:70%;background:radial-gradient(ellipse at center,rgba(67,133,190,.18) 0%,transparent 60%);pointer-events:none;z-index:0}.login-card{position:relative;z-index:1;max-width:320px;width:100%;animation:splash-in .52s var(--ease-out) both}@keyframes splash-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.login-icon{display:block;width:92px;height:92px;border-radius:22px;margin:0 auto var(--sp-6);box-shadow:0 20px 48px #1b356959,0 4px 10px #1b356940,0 0 0 1px #ffffff0f inset}.login-title{font-size:var(--text-3xl);font-weight:600;letter-spacing:-.03em;line-height:1.1;margin-bottom:var(--sp-1)}.login-kicker{font-size:var(--text-xs);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.18em;margin-bottom:var(--sp-8)}.login-btn{width:100%;margin-bottom:var(--sp-3)}.login-footer{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--sp-5)}.fatal-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:var(--sp-6);text-align:center}.fatal-card{max-width:320px;width:100%;background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:var(--sp-6);animation:splash-in .52s var(--ease-out) both}.fatal-title{font-size:var(--text-xl);font-weight:600;letter-spacing:-.02em;margin-bottom:var(--sp-3);color:var(--text-primary)}.fatal-body{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.5;margin-bottom:var(--sp-5)}.fatal-detail{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--sp-4);word-break:break-word;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)}.pwa-update-toast{position:fixed;left:50%;bottom:calc(var(--sp-6) + env(safe-area-inset-bottom));transform:translate(-50%);z-index:1000;background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-card),0 0 0 1px #0000000a;padding:var(--sp-3) var(--sp-4);display:flex;align-items:center;gap:var(--sp-3);max-width:calc(100% - var(--sp-8));font-size:var(--text-sm);animation:toast-in .28s var(--ease-out) both}.pwa-update-toast__text{color:var(--text-primary);font-weight:500}.pwa-update-toast__btn{background:var(--blue);color:#fff;border:none;border-radius:var(--r-md);padding:6px 14px;font-size:var(--text-sm);font-weight:600;cursor:pointer;white-space:nowrap}.pwa-update-toast__btn:active{transform:scale(.97)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}.demo-active{margin:0 var(--sp-5) var(--sp-4);padding:var(--sp-5);background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--sp-4)}.demo-active p{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.5}.demo-active strong{color:var(--text-primary);font-weight:600}.demo-form{margin:0 var(--sp-5) var(--sp-4);padding:var(--sp-5);background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--sp-4)}.demo-activate-btn{margin-top:var(--sp-2)}.field-group{display:flex;flex-direction:column;gap:6px}.field-label{display:block;font-size:var(--text-xs);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em}.field-input{display:block;width:100%;min-height:44px;padding:10px var(--sp-3);font-size:var(--text-md);border:1.5px solid var(--border);border-radius:var(--r-md);background:var(--card);color:var(--text-primary);outline:none;transition:border-color .15s var(--ease-out),box-shadow .15s var(--ease-out)}.field-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4385be26}textarea.field-input{min-height:96px;resize:vertical;font-family:inherit;line-height:var(--lh-body)}select.field-input{cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%239C9893' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:var(--sp-8)}.modal{border:none;border-radius:var(--r-xl) var(--r-xl) 0 0;padding:var(--sp-6) var(--sp-5) calc(var(--sp-5) + env(safe-area-inset-bottom));max-width:420px;width:100%;margin:auto auto 0;background:var(--card);color:var(--text-primary);box-shadow:0 -12px 40px #0003;animation:sheet-up .34s var(--ease-out)}@media(min-width:641px){.modal{border-radius:var(--r-xl);margin:auto;animation:sheet-pop .28s var(--ease-out);max-width:360px}}@keyframes sheet-up{0%{transform:translateY(100%);opacity:.9}to{transform:none;opacity:1}}@keyframes sheet-pop{0%{transform:scale(.96);opacity:0}to{transform:none;opacity:1}}.modal::backdrop{background:#0a0a0973;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade-in .26s var(--ease-out)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-title{font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em;margin-bottom:var(--sp-5)}.modal-form{display:flex;flex-direction:column;gap:var(--sp-4)}.modal-actions{display:flex;gap:var(--sp-3);justify-content:stretch;margin-top:var(--sp-5)}.modal-actions .btn{flex:1}@supports (padding-top: env(safe-area-inset-top)){@media(max-width:640px){.app-header{padding-top:env(safe-area-inset-top);height:calc(var(--header-h) + env(safe-area-inset-top))}}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;transition-duration:1ms!important}}
