:root{--c-primary:#1677ff;--c-primary-dark:#0958d9;--c-bg:#f2f4f7;--c-card:#fff;--c-text:#1f2329;--c-text2:#646a73;--c-text3:#8f959e;--c-line:#e8eaed;--c-ok:#00b578;--c-warn:#ff8f1f;--c-err:#f5222d;--radius:14px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;background:var(--c-bg);color:var(--c-text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}#app{height:100%}input,button,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0}a{color:var(--c-primary);text-decoration:none}.page{min-height:100%;padding-bottom:calc(64px + var(--safe-b));display:flex;flex-direction:column}.page--plain{padding-bottom:0}.appbar{position:sticky;top:0;z-index:20;background:#fff;padding:calc(10px + var(--safe-t)) 14px 10px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--c-line)}.appbar__title{font-size:17px;font-weight:600;flex:1;text-align:center;margin-right:24px}.appbar__title--left{text-align:left;margin-right:0}.appbar__back{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--c-text)}.appbar__action{font-size:14px;color:var(--c-primary);font-weight:500}.body{flex:1;padding:12px}.card{background:var(--c-card);border-radius:var(--radius);padding:14px;margin-bottom:12px}.card--flat{margin-bottom:10px;padding:12px}.card__title{font-size:15px;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:6px}.card__title small{font-weight:400;color:var(--c-text3);font-size:12px}.row{display:flex;align-items:center;gap:10px}.row--between{justify-content:space-between}.grow{flex:1;min-width:0}.muted{color:var(--c-text2)}.dim{color:var(--c-text3);font-size:13px}.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.stat{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat__item{background:#fff;border-radius:var(--radius);padding:14px 10px;text-align:center;position:relative;overflow:hidden}.stat__num{font-size:26px;font-weight:700;line-height:1.2;font-variant-numeric:tabular-nums}.stat__label{font-size:12px;color:var(--c-text2);margin-top:2px}.stat__sub{font-size:11px;color:var(--c-text3);margin-top:4px}.stat--warn .stat__num{color:var(--c-warn)}.stat--ok .stat__num{color:var(--c-ok)}.list{background:#fff;border-radius:var(--radius);overflow:hidden}.item{display:flex;align-items:center;gap:12px;padding:13px 14px;border-bottom:1px solid var(--c-line)}.item:last-child{border-bottom:none}.item__main{flex:1;min-width:0}.item__title{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item__desc{font-size:12.5px;color:var(--c-text3);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item__right{text-align:right;flex-shrink:0}.tag{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:20px;line-height:1.6;white-space:nowrap}.tag--wait{background:#fff4e6;color:#d46b08}.tag--done{background:#e8f8f0;color:#00875a}.tag--err{background:#fff1f0;color:#cf1322}.tag--info{background:#e6f0ff;color:#0958d9}.tag--gray{background:#f2f3f5;color:#646a73}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.room{background:#fff;border:1.5px solid transparent;border-radius:10px;padding:9px 4px;text-align:center;position:relative;transition:.12s}.room:active{transform:scale(.96)}.room__no{font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums}.room__sub{font-size:10.5px;color:var(--c-text3);margin-top:2px}.room--done{background:#f0f9f4;border-color:#b7ebd4}.room--done .room__no{color:#00875a}.room--pending{background:#fff}.room--moveout{border-color:#ffd591;background:#fffbf2}.room--pending:after{content:"";position:absolute;top:6px;right:6px;width:6px;height:6px;border-radius:50%;background:var(--c-warn)}.room--done:after{content:"";position:absolute;top:6px;right:6px;width:6px;height:6px;border-radius:50%;background:var(--c-ok)}.field{margin-bottom:14px}.field__label{font-size:13px;color:var(--c-text2);margin-bottom:6px;display:flex;justify-content:space-between}.input{width:100%;height:48px;padding:0 14px;border:1px solid var(--c-line);border-radius:11px;background:#fff;outline:none;transition:.15s;font-size:16px}.input:focus{border-color:var(--c-primary);box-shadow:0 0 0 3px #1677ff17}.input--big{height:60px;font-size:26px;font-weight:600;text-align:center;letter-spacing:1px;font-variant-numeric:tabular-nums}textarea.input{height:auto;min-height:70px;padding:12px 14px;resize:none;font-size:15px}.btn{height:46px;border-radius:11px;background:var(--c-primary);color:#fff;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;width:100%;transition:.12s}.btn:active{background:var(--c-primary-dark)}.btn:disabled{background:#c9cdd4;color:#fff}.btn--ghost{background:#fff;color:var(--c-primary);border:1px solid var(--c-primary)}.btn--ghost:active{background:#f0f6ff}.btn--danger{background:var(--c-err)}.btn--sm{height:34px;font-size:13.5px;border-radius:9px;width:auto;padding:0 14px;font-weight:500}.btn-row{display:flex;gap:10px}.btn-row .btn{flex:1}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:#fff;display:flex;border-top:1px solid var(--c-line);padding-bottom:var(--safe-b)}.tabbar__item{flex:1;padding:7px 0 6px;text-align:center;color:var(--c-text3);font-size:11px;position:relative}.tabbar__item.active{color:var(--c-primary)}.tabbar__icon{font-size:19px;line-height:1.2;display:block}.tabbar__dot{position:absolute;top:5px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--c-err);color:#fff;font-size:10px;line-height:16px;font-weight:600}.seg{display:flex;background:#e9ecf0;border-radius:10px;padding:3px;margin-bottom:12px}.seg__item{flex:1;text-align:center;padding:8px 4px;font-size:13.5px;border-radius:8px;color:var(--c-text2);transition:.15s}.seg__item.active{background:#fff;color:var(--c-text);font-weight:600;box-shadow:0 1px 3px #0000000f}.empty{text-align:center;padding:48px 20px;color:var(--c-text3)}.empty__icon{font-size:40px;opacity:.35;margin-bottom:10px}.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:100;background:#20242be0;color:#fff;padding:11px 18px;border-radius:10px;font-size:14px;max-width:80vw;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.fade-enter-active,.fade-leave-active{transition:opacity .18s}.fade-enter-from,.fade-leave-to{opacity:0}.sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:50;display:flex;align-items:flex-end}.sheet{background:#fff;width:100%;border-radius:18px 18px 0 0;padding:18px 16px calc(16px + var(--safe-b));max-height:88vh;overflow-y:auto;animation:up .22s ease}@keyframes up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet__title{font-size:16px;font-weight:600;margin-bottom:14px;text-align:center}.divider{height:1px;background:var(--c-line);margin:12px 0}.kv{display:flex;justify-content:space-between;padding:7px 0;font-size:14px}.kv__k{color:var(--c-text2)}.kv__v{font-weight:500;font-variant-numeric:tabular-nums}.big-num{font-size:34px;font-weight:700;color:var(--c-primary);line-height:1.1;font-variant-numeric:tabular-nums}.chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;overflow-x:auto}.chip{padding:6px 13px;border-radius:20px;background:#fff;font-size:13.5px;color:var(--c-text2);border:1px solid var(--c-line);white-space:nowrap}.chip.active{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}.photo-thumb{width:100%;height:150px;object-fit:cover;border-radius:10px;background:#f2f3f5}.upload-box{width:100%;height:110px;border:1.5px dashed #d0d5dd;border-radius:11px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--c-text3);font-size:13px;gap:4px}.upload-box__icon{font-size:24px}.warn-box{background:#fff7e6;border:1px solid #ffd591;color:#ad6800;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:12px}.info-box{background:#eef4ff;border:1px solid #c7dcff;color:#0958d9;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:12px}
