:root{--ink:#182b46;--ink-soft:#3a4654;--muted:#7a8694;--paper:#f4f6fa;--paper-deep:#e9eef2;--surface:#ffffff;--line:#dfe6ec;--amber:#2563a6;--amber-deep:#1d518b;--amber-soft:#edf4fc;--red:#e03a2f;--red-soft:#fbeae8;--green:#1f9d55;--green-soft:#e6f5ed;--blue:#2563a6;--blue-soft:#edf4fc;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;--font-num:"SF Mono",ui-monospace,"Roboto Mono",Menlo,Consolas,monospace;--radius:10px;--radius-sm:6px;--shadow:0 1px 2px rgba(24,43,70,0.025);--shadow-lg:0 6px 24px rgba(22,34,46,0.12);--header-h:52px;--nav-h:58px}*{box-sizing:border-box}.screen-watermark{position:fixed;inset:0;z-index:2147483647;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-repeat:repeat}body,html{padding:0;margin:0}body{font-family:var(--font-sans);background:var(--paper);color:var(--ink);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:var(--blue);text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:16px;color:var(--ink)}::placeholder{color:var(--muted)}.num{font-family:var(--font-num);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.01em}.delta{color:var(--red);font-family:var(--font-num);font-weight:600;margin-left:2px;white-space:nowrap}.app-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;height:var(--header-h);justify-content:space-between;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--line)}.app-header,.app-header__brand{display:flex;align-items:center}.app-header__brand{gap:10px}.app-header__brand-text{display:flex;flex-direction:row;align-items:baseline;gap:8px}.app-header__brand-title{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:.02em}.app-header__brand-sub{font-size:12px;color:var(--muted)}.app-header__brand-logo{display:block;height:32px;width:auto}.app-header__logo{width:22px;height:22px;border-radius:6px;background:var(--blue);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:800}.app-header__user{color:var(--ink-soft);gap:8px}.app-header__right,.app-header__user{font-size:13px;display:flex;align-items:center}.app-header__right{gap:10px}.app-header__nav{display:none}.app-main{padding-bottom:calc(var(--nav-h) + 24px);max-width:720px;margin:0 auto;padding-left:16px;padding-right:16px;padding-top:16px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;height:calc(var(--nav-h) + env(safe-area-inset-bottom, 0px));background:var(--surface);border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom,0)}.nav-item{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;color:var(--muted);border:none;background:none;min-height:48px;padding:4px 0;touch-action:manipulation}.nav-item svg{width:22px;height:22px}.nav-item.is-active{color:var(--blue);font-weight:600}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);margin-bottom:10px}.card__title{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:700;margin:0 0 10px}.card__hint{font-weight:400}.card__hint,.section-label{font-size:12px;color:var(--muted)}.section-label{font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin:0 0 10px}.field{margin-bottom:11px}.field:last-child{margin-bottom:0}.label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:7px}.label .req{color:var(--red);margin-left:2px}.input,.select,.textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);padding:9px 11px;outline:none;transition:border-color .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-soft)}.input-row{display:flex;gap:10px}.amount-input{display:flex;align-items:center;gap:8px;width:100%;min-width:0;padding:9px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}.amount-input:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}.amount-input.is-readonly{background:var(--paper-deep)}.amount-input__prefix{color:var(--muted);font-size:14px}.amount-input input{flex:1 1;min-width:0;width:0;border:0;padding:0;outline:none;background:transparent;line-height:24px}.amount-input__hint{flex:0 1 auto;max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--blue);font-size:12px;font-weight:500}.input-affix,.input-row>*{flex:1 1;min-width:0}.input-affix{position:relative}.input-affix .prefix{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:14px;pointer-events:none}.input-affix .input{padding-left:30px}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237a8694' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.textarea{min-height:64px;resize:vertical}.vehicle-select{position:relative}.vehicle-select__trigger{text-align:left;font:inherit;min-height:42px;color:var(--ink)}.vehicle-select__menu{position:absolute;inset:calc(100% + 4px) 0 auto;z-index:30;max-height:min(280px,40dvh);overflow-y:auto;overscroll-behavior:contain;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px rgba(24,43,70,.12)}.vehicle-select__group{padding:8px 9px 3px;font-size:11px;color:var(--muted)}.vehicle-select__option{display:flex;width:100%;border:0;background:transparent;color:var(--ink);text-align:left;align-items:center;gap:8px;min-height:38px;padding:7px 9px;border-radius:4px;font-size:14px;cursor:pointer}.vehicle-select__indicator{width:14px;height:14px;border:1px solid var(--muted);border-radius:50%;flex-shrink:0}.vehicle-select__option.is-selected .vehicle-select__indicator{border:4px solid var(--blue)}.vehicle-select__option.is-selected,.vehicle-select__option:hover{background:var(--blue-soft);color:var(--blue)}.vehicle-select__option:focus-within{outline:2px solid var(--blue);outline-offset:-2px}.seg{display:flex;background:var(--paper-deep);border-radius:var(--radius-sm);padding:3px;gap:3px}.seg__btn{flex:1 1;border:none;background:none;padding:9px 8px;border-radius:8px;font-size:14px;font-weight:600;color:var(--ink-soft);transition:background .15s,color .15s}.seg__btn.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:7px 13px;font-size:14px;color:var(--ink-soft);transition:background-color .12s,border-color .12s,color .12s}.chip.is-active{border-color:var(--amber);background:var(--amber-soft);color:var(--amber-deep);font-weight:600}.chip:disabled{opacity:.45;cursor:not-allowed}.price-board{background:linear-gradient(150deg,#16222e,#1e2c3a);border-radius:var(--radius);padding:20px 18px 18px;color:#fff;box-shadow:var(--shadow-lg);margin-bottom:14px}.price-board__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.price-board__label{font-size:13px;color:rgba(255,255,255,.72)}.price-board__seg{display:flex;background:rgba(255,255,255,.1);border-radius:8px;padding:2px;gap:2px}.price-board__seg-btn{border:none;background:none;color:rgba(255,255,255,.7);font-size:12px;padding:5px 11px;border-radius:7px;font-weight:600}.price-board__seg-btn.is-active{background:var(--amber);color:#fff}.price-board__amount{font-family:var(--font-num);font-size:42px;font-weight:700;line-height:1.15;color:#c6e0ff;letter-spacing:-.02em}.price-board__amount .unit{font-size:16px;font-weight:600;color:rgba(255,255,255,.6);margin-left:4px}.price-board__sub{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12px;color:rgba(255,255,255,.78);border-top:1px solid rgba(255,255,255,.12);padding-top:10px}.price-board__sub b{color:#fff;font-weight:600}.price-board__sub .num{color:#fff}.metric-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.metric{background:var(--paper);border-radius:var(--radius-sm);padding:11px 12px}.metric__label{font-size:12px;color:var(--muted);margin-bottom:4px}.metric__value{font-family:var(--font-num);font-size:17px;font-weight:700;color:var(--ink)}.metric__value.is-amber{color:var(--amber-deep)}.metric__value.is-green{color:var(--green)}.metric__value.is-red{color:var(--red)}.cmp-table{width:100%;border-collapse:collapse;font-size:13px}.cmp-table td,.cmp-table th{padding:9px 8px;text-align:center;border-bottom:1px solid var(--line)}.cmp-table th{color:var(--muted);font-weight:600;font-size:12px}.cmp-table td:first-child,.cmp-table th:first-child{text-align:left;color:var(--ink-soft);font-weight:500}.cmp-table .hl{color:var(--amber-deep);font-weight:700;font-family:var(--font-num)}.compare-table{width:100%;border-collapse:collapse;font-size:12px}.compare-table td,.compare-table th{padding:8px 6px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}.compare-table th{color:var(--muted);font-weight:600;font-size:11px;position:-webkit-sticky;position:sticky;top:0;background:var(--surface)}.compare-table td:first-child,.compare-table th:first-child{text-align:left;position:-webkit-sticky;position:sticky;left:0;background:var(--surface)}.compare-table .hl{background:var(--amber-soft);color:var(--amber-deep);font-weight:700;font-family:var(--font-num)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:var(--radius-sm);padding:12px 18px;font-size:15px;font-weight:600;transition:opacity .15s,background .15s;min-height:44px}.btn,.chip,a,button{touch-action:manipulation}.btn:active{opacity:.82}:where(button,a,input,select,textarea):focus-visible{outline:2px solid var(--blue);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.5}.route-loading{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);font-size:13px}@media (hover:hover){.btn-amber:hover,.btn-primary:hover{background:#1d518b}.btn-ghost:hover,.chip:hover{background:#e5eef9}.btn-danger:hover{background:#f6d6d3}.nav-item:hover{background:var(--blue-soft)}}.btn-amber,.btn-primary{background:var(--blue);color:#fff}.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--blue)}.btn-danger{background:var(--red-soft);border-color:#f3c9c5;color:var(--red)}.btn-block{width:100%}.btn-sm{padding:7px 12px;font-size:13px;min-height:34px}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px}.badge-green{background:var(--green-soft);color:var(--green)}.badge-red{background:var(--red-soft);color:var(--red)}.badge-amber{background:var(--amber-soft);color:var(--amber-deep)}.alert{border-radius:var(--radius-sm);padding:11px 13px;font-size:13px;line-height:1.5;margin-bottom:14px}.alert-warn{background:var(--amber-soft);color:#8a5a00;border:1px solid #f0d9a0}.alert-error{background:var(--red-soft);color:var(--red);border:1px solid #f3c9c5}.alert-info{background:var(--blue-soft);color:var(--blue);border:1px solid #cfe1f4}.tabs{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:14px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:0 0 auto;border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:9px 16px;font-size:14px;font-weight:600;color:var(--ink-soft);white-space:nowrap}.tab.is-active{border-color:var(--blue);background:var(--blue);color:#fff}.list-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border-bottom:none}.list-item__main{flex:1 1;min-width:0}.list-item__title{font-weight:600;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item__meta{font-size:12px;color:var(--muted);margin-top:2px;display:flex;gap:8px;flex-wrap:wrap}.empty{text-align:center;color:var(--muted);padding:36px 16px;font-size:14px}.empty__title{font-size:16px;color:var(--ink-soft);font-weight:600;margin-bottom:6px}.login-only{min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:24px 16px}.login-only .auth-wrap{width:100%;max-width:400px;padding:28px 24px;margin:auto 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.site-footer{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 8px;font-size:12px;line-height:1.8;color:var(--muted)}.site-footer a{color:inherit;text-decoration:none;display:inline-flex;align-items:center}.site-footer a:hover{text-decoration:underline}.site-footer img{display:inline-block;height:16px;width:auto;vertical-align:middle;margin-right:4px}.site-footer .sep{opacity:.55}.auth-wrap{max-width:400px;margin:0 auto;padding:32px 20px}.auth-title{font-size:22px;font-weight:700;margin:0 0 4px}.auth-sub{color:var(--muted);margin:0 0 22px}.auth-sub,.kv{font-size:14px}.kv{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dashed var(--line)}.kv:last-child{border-bottom:none}.kv__k{color:var(--muted)}.kv__v{font-weight:600;font-family:var(--font-num)}@media (min-width:768px){body{font-size:15px}.app-main{padding-top:18px;padding-bottom:40px}.bottom-nav{display:none}.app-header{padding:0 28px}.app-header__nav{display:flex;gap:4px}.app-header__nav a{color:var(--ink-soft);font-size:14px;font-weight:600;padding:8px 14px;border-radius:8px}.app-header__nav a.is-active{background:var(--blue-soft);color:var(--blue)}.metric-grid{grid-template-columns:repeat(3,1fr)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.admin{min-height:100vh;background:var(--paper)}.admin-top{height:52px;background:var(--surface);border-bottom:1px solid var(--line);color:var(--ink);justify-content:space-between;padding:0 20px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.admin-top,.admin-top__brand{display:flex;align-items:center}.admin-top__brand{font-weight:700;font-size:15px;gap:9px}.admin-top__right{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--muted)}.admin-top__right a{color:var(--blue);font-weight:600}.admin-layout{display:flex;max-width:1240px;margin:0 auto}.admin-side{width:176px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--line);padding:16px 10px;min-height:calc(100vh - 52px);position:-webkit-sticky;position:sticky;top:52px;align-self:flex-start}.admin-side a{display:block;padding:10px 14px;border-radius:8px;color:var(--ink-soft);font-weight:600;font-size:14px;margin-bottom:4px}.admin-side a:hover{background:var(--paper)}.admin-side a.is-active{background:var(--blue-soft);color:var(--blue);box-shadow:inset 3px 0 var(--blue)}.admin-main{flex:1 1;min-width:0;padding:20px}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.admin-toolbar h1{font-size:20px;font-weight:700;margin:0}.admin-table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table{width:100%;border-collapse:collapse;font-size:13px;min-width:640px}.admin-table td,.admin-table th{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}.admin-table th{color:var(--muted);font-weight:600;font-size:12px;background:var(--paper);white-space:nowrap}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover td{background:#fafcfd}.mobile-list{display:none}.mobile-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-bottom:10px}.mobile-item__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}.mobile-item__title{font-weight:600;font-size:15px;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-item__meta{font-size:12px;color:var(--muted);margin-bottom:4px;line-height:1.6}.mobile-item__actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.detail-kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:14px}.detail-kv:last-child{border-bottom:none}.detail-kv__k{color:var(--muted);flex-shrink:0}.detail-kv__v{font-weight:600;text-align:right;word-break:break-all}.detail-pre{margin:6px 0 0;white-space:pre-wrap;overflow-x:auto;color:var(--ink-soft);font-size:12px;line-height:1.6;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px}.row-actions{display:flex;gap:6px;white-space:nowrap}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.form-grid .span-2{grid-column:1/-1}.modal-overlay{position:fixed;inset:0;background:rgba(22,34,46,.45);z-index:100;display:flex;align-items:flex-end;justify-content:center}.modal{width:100%;max-width:540px;border-radius:16px 16px 0 0;max-height:88vh;overflow-y:auto}.modal,.modal__head{background:var(--surface)}.modal__head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:1}.modal__head h3{margin:0;font-size:16px;font-weight:700}.modal__close{border:none;background:none;font-size:26px;line-height:1;color:var(--muted);padding:0 4px}.modal__body{padding:16px 18px 22px}@media (max-width:767px){.admin-top{padding:0 14px}.admin-top__back{display:none}.admin-layout{flex-direction:column}.admin-side{display:none}.admin-main{padding:14px;padding-bottom:calc(var(--nav-h) + 24px)}.admin-table-wrap{display:none}.mobile-list{display:block}.form-grid{grid-template-columns:1fr}}@media (min-width:768px){.modal-overlay{align-items:center}.modal{border-radius:16px}}