*{margin:0;padding:0;box-sizing:border-box;-webkit-font-smoothing:antialiased}:root{color-scheme:light dark;--primary: #3964fe;--primary-bg: #edf1ff;--primary-border: #c7d2fe;--text: #1d1d1f;--text-sub: #81858c;--text-muted: #adb2b8;--bg: #f5f5f7;--card: #ffffff;--border: #e8e8ea;--border-strong: #d1d5db;--fill: #f3f4f6;--good: #0f7b4f;--good-bg: #eaf9f0;--good-border: #a7e3c2;--warn: #a96407;--warn-bg: #fff9f0;--warn-border: #fbe3b3;--bad: #b42318;--bad-bg: #fef0ef;--bad-border: #f6c9c5;--info: #1e40af;--info-bg: #eef4ff;--info-border: #c7dbff;--up: #0f7b4f;--down: #b42318;--chart-1: #f472b6;--chart-2: #fbbf24;--chart-3: #38bdf8;--chart-4: #60a5fa;--chart-5: #34d399;--chart-6: #fb923c;--chart-7: #a78bfa;--chart-fallback: #94a3b8;--blue-bg: var(--primary-bg);--green-bg: var(--good-bg);--red-bg: var(--bad-bg);--primary-dark: var(--primary)}@media (prefers-color-scheme: dark){:root{--primary: #5686fe;--primary-bg: #141a2e;--primary-border: #2a3660;--text: #e7e8ea;--text-sub: #adb2b8;--text-muted: #6b7076;--bg: #101114;--card: #191a1d;--border: #2c2d31;--border-strong: #45474c;--fill: #222327;--good: #4ade80;--good-bg: #0e1a14;--good-border: #1e3a2b;--warn: #e0a33c;--warn-bg: #1d1810;--warn-border: #3d3218;--bad: #f87171;--bad-bg: #1d1111;--bad-border: #3d1f1f;--info: #93b4ff;--info-bg: #111a2e;--info-border: #26324d;--up: #4ade80;--down: #f87171;--chart-1: #f472b6;--chart-2: #fbbf24;--chart-3: #38bdf8;--chart-4: #60a5fa;--chart-5: #34d399;--chart-6: #fb923c;--chart-7: #a78bfa;--chart-fallback: #94a3b8}}input,select,textarea{background:var(--card);color:var(--text);border:1px solid var(--border);font-family:inherit}input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}button{font-family:inherit}html,body,#root{height:100%;width:100%;overscroll-behavior-x:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);overflow:hidden;-webkit-tap-highlight-color:transparent}.app{max-width:480px;margin:0 auto;height:100vh;height:100dvh;background:var(--bg);display:flex;flex-direction:column;position:relative;overflow:hidden}@media (min-width: 481px) and (max-width: 1024px){.app{max-width:820px}}@media (min-width: 1025px){.app[data-role=teacher]{max-width:none}.app[data-role=teacher] .tabbar{display:none}.app[data-role=teacher] .content{padding-bottom:0}}.statusbar{height:44px;flex-shrink:0;padding-top:env(safe-area-inset-top);background:transparent}.statusbar .time,.statusbar .icons{display:none}.header{padding:8px 20px 16px;flex-shrink:0;background:transparent}.header .row1{display:flex;align-items:center;justify-content:space-between}.hotel-name{font-size:24px;font-weight:700;letter-spacing:-.3px}.day-tag{display:inline-flex;align-items:center;gap:5px;background:var(--primary-bg);color:var(--primary);font-size:12px;font-weight:600;padding:5px 12px;border-radius:9999px}.header .sub{font-size:13px;color:var(--text-sub);margin-top:5px}.content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:24px;animation:pageIn .3s cubic-bezier(.22,1,.36,1)}@keyframes pageIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.card{margin:0 20px 12px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px}.card-title{font-size:15px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:7px}.tabbar{flex-shrink:0;display:flex;padding:7px 16px calc(9px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--border)}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;position:relative;background:none;border:none;font-family:inherit;padding:5px 0 3px;transition:transform .12s}.tab:active{transform:scale(.96)}.tab:before{content:"";position:absolute;top:-8px;left:50%;transform:translate(-50%) scaleX(0);width:28px;height:3px;border-radius:0 0 4px 4px;background:var(--primary);transition:transform .25s cubic-bezier(.22,1,.36,1)}.tab.active:before{transform:translate(-50%) scaleX(1)}.tab .tab-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;transition:background .25s,color .25s;color:var(--text-muted)}.tab.active .tab-icon{background:var(--primary-bg);color:var(--primary);transform:translateY(-2px)}.tab .tab-label{font-size:11px;color:var(--text-muted);font-weight:500;transition:color .2s}.tab.active .tab-label{color:var(--primary);font-weight:600}.tab .badge-dot{position:absolute;top:4px;right:50%;transform:translate(22px);width:9px;height:9px;background:var(--bad);border-radius:50%;border:2px solid var(--card)}.tab .badge-num{position:absolute;top:2px;right:50%;transform:translate(22px);min-width:18px;height:18px;border-radius:9999px;background:var(--bad);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid var(--card);box-sizing:border-box}.settle-grid{display:flex}.metric{flex:1;text-align:center}.metric+.metric{border-left:1px solid var(--border)}.metric .label{font-size:12px;color:var(--text-muted);margin-bottom:6px}.metric .value{font-size:20px;font-weight:700}.metric .value .unit{font-size:11px;color:var(--text-sub);font-weight:400}.metric .delta{font-size:11px;font-weight:600;margin-top:3px}.delta.up{color:var(--up)}.delta.down{color:var(--down)}.section-title{padding:6px 20px 12px;display:flex;align-items:center;justify-content:space-between}.section-title .left{font-size:16px;font-weight:700}.section-title .hint{font-size:12px;color:var(--text-muted)}.task-list{padding:0 20px}.task-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:10px;cursor:pointer;transition:background .15s,border-color .15s}.task-card:active{background:var(--fill)}.task-card.done{border-color:transparent}.task-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.task-icon.amber{background:var(--warn-bg);color:var(--warn)}.task-icon.blue{background:var(--primary-bg);color:var(--primary)}.task-icon.green{background:var(--good-bg);color:var(--good)}.task-icon.red{background:var(--bad-bg);color:var(--bad)}.task-body{flex:1;min-width:0}.task-body .name{font-size:15px;font-weight:600}.task-body .name>span{flex-shrink:0;white-space:nowrap}.task-body .name{row-gap:3px}.task-body .desc{font-size:12px;color:var(--text-muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-badge{font-size:11px;font-weight:600;padding:5px 10px;border-radius:9999px;flex-shrink:0}.badge-urgent{background:var(--bad-bg);color:var(--bad)}.badge-new{background:var(--primary-bg);color:var(--primary)}.badge-done{background:var(--fill);color:var(--text-sub)}.btn{flex:1;text-align:center;padding:10px 0;border-radius:9999px;font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:inherit;transition:opacity .15s}.btn:active{opacity:.7}.btn-primary{background:var(--primary-bg);color:var(--primary)}.btn-ghost{background:transparent;color:var(--text-sub);border:1px solid var(--border)}.btn-confirm{width:100%;padding:15px 0;border-radius:9999px;border:none;background:var(--primary);color:#fff;font-size:16px;font-weight:600;text-align:center;cursor:pointer;font-family:inherit;transition:opacity .15s}.btn-confirm:active{opacity:.85}.btn-confirm:disabled{background:var(--fill);color:var(--text-muted)}.step-tag{display:inline-flex;align-items:center;gap:5px;background:var(--primary-bg);color:var(--primary);font-size:12px;font-weight:600;padding:5px 12px;border-radius:9999px}.city-row{display:flex;gap:8px;padding:0 20px;margin-bottom:14px}.city-tab{flex:1;text-align:center;padding:11px 0;border-radius:9999px;background:var(--card);border:1px solid var(--border);font-size:14px;font-weight:600;color:var(--text-sub);cursor:pointer;font-family:inherit;transition:all .2s}.city-tab.active{background:var(--primary-bg);border-color:var(--primary);color:var(--primary)}.district-list{padding:0 20px;display:grid;grid-template-columns:1fr;gap:10px}@media (min-width: 481px){.district-list{grid-template-columns:repeat(2,1fr)}}.district-card{border:1px solid var(--border);border-radius:14px;padding:16px;cursor:pointer;background:var(--card);transition:border-color .2s,background .2s}.district-card.selected{border-color:var(--primary);background:var(--primary-bg)}.district-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.district-name{font-size:16px;font-weight:700}.district-tag{font-size:11px;font-weight:600;padding:4px 9px;border-radius:9999px}.tag-core{background:var(--bad-bg);color:var(--bad)}.tag-tour{background:var(--info-bg);color:var(--info)}.tag-ind{background:var(--good-bg);color:var(--good)}.tag-county{background:var(--fill);color:var(--text-sub)}.attr-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.attr-label{width:46px;font-size:11px;color:var(--text-sub);text-align:right;flex-shrink:0}.attr-bar-bg{flex:1;height:8px;background:var(--fill);border-radius:9999px;overflow:hidden}.attr-bar{height:100%;border-radius:9999px;transition:width .4s cubic-bezier(.22,1,.36,1)}.bar-high{background:var(--primary)}.bar-mid{background:var(--primary-border)}.bar-low{background:var(--fill)}.attr-val{width:22px;font-size:11px;font-weight:600;text-align:left;flex-shrink:0}.cost-box{margin-top:10px;border-radius:12px;padding:12px;font-size:12px;line-height:1.6}.cost-box.good{background:var(--good-bg);color:var(--good)}.cost-box.warn{background:var(--bad-bg);color:var(--bad)}.cost-box .cost-title{font-weight:700;margin-bottom:3px}.edge-guard{position:fixed;left:0;top:0;bottom:0;width:24px;z-index:400;background:transparent;touch-action:none}input[type=range],.content{touch-action:pan-y}.modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000073;z-index:100;display:flex;align-items:center;justify-content:center;padding:0 32px;overflow-x:hidden;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes floatUp{0%{opacity:0;transform:translateY(8px) scale(.8)}25%{opacity:1;transform:translateY(0) scale(1.1)}75%{opacity:1;transform:translateY(-4px) scale(1)}to{opacity:0;transform:translateY(-16px) scale(.9)}}.float-num{display:inline-block;animation:floatUp 1.4s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--delay, .4s);opacity:0}@keyframes shrinkBar{0%{width:100%}to{width:0%}}.stars-big{transition:transform .2s cubic-bezier(.22,1,.36,1)}.stars-big:hover{transform:scale(1.12)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton{background:linear-gradient(90deg,var(--fill) 25%,var(--border) 37%,var(--fill) 63%);background-size:400% 100%;animation:shimmer 1.2s ease-in-out infinite;border-radius:8px}@keyframes starPop{0%{transform:scale(1)}40%{transform:scale(1.35)}to{transform:scale(1)}}.stars-pop{animation:starPop .6s cubic-bezier(.22,1,.36,1)}.tabular-nums,.metric .value,.card td,.card b{font-variant-numeric:tabular-nums}@keyframes cardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-card{animation:cardIn .35s cubic-bezier(.22,1,.36,1) both}.task-list .task-card:nth-child(1){animation-delay:.02s}.task-list .task-card:nth-child(2){animation-delay:.06s}.task-list .task-card:nth-child(3){animation-delay:.1s}.task-list .task-card:nth-child(4){animation-delay:.14s}.task-list .task-card:nth-child(5){animation-delay:.18s}.task-list .task-card:nth-child(6){animation-delay:.22s}input[type=range]{height:28px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:9999px;background:var(--fill)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-9px;border-radius:50%;background:var(--primary);border:3px solid var(--card);cursor:pointer}@keyframes pulseBorder{0%,to{border-color:var(--primary)}50%{border-color:var(--primary-border)}}@keyframes newChip{0%{background:var(--primary-bg);border-color:var(--primary);transform:scale(1.06)}to{background:var(--card);border-color:var(--border);transform:scale(1)}}.t-top,.t-nav,.t-side{display:none}.t-body3{display:flex;flex-direction:column;flex:1 1 0;min-height:0}.t-main{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column}@media (min-width: 1025px){.app[data-role=teacher] .t-top{display:flex;align-items:center;gap:14px;padding:0 16px;height:52px;flex-shrink:0;background:var(--card);border-bottom:1px solid var(--border);font-size:12.5px;color:var(--text-sub)}.app[data-role=teacher] .t-top b{color:var(--text);font-weight:600;font-size:13.5px}.app[data-role=teacher] .t-body3{display:flex;flex-direction:row;align-items:stretch}.app[data-role=teacher] .t-nav{display:flex;flex-direction:column;width:168px;flex:none;background:var(--card);border-right:1px solid var(--border);padding:10px 8px}.app[data-role=teacher] .t-nav a{display:flex;align-items:center;gap:9px;padding:9px 10px;margin-bottom:2px;border-radius:9999px;color:var(--text-sub);font-size:13px;cursor:pointer}.app[data-role=teacher] .t-nav a.on{background:var(--primary-bg);color:var(--primary);font-weight:600}.app[data-role=teacher] .t-nav a:hover{color:var(--text)}.app[data-role=teacher] .t-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.app[data-role=teacher] .t-main .content{max-width:1080px;width:100%;margin:0 auto;padding-bottom:24px}.app[data-role=teacher] .t-side{display:block;width:250px;flex:none;background:var(--card);border-left:1px solid var(--border);padding:12px;overflow-y:auto}}@media print{.tabbar,.statusbar,.edge-guard,.modal-mask,button{display:none!important}html,body,#root,.app{height:auto!important;overflow:visible!important;max-width:none!important;background:#fff!important}.content{overflow:visible!important;height:auto!important;padding:0 8mm!important;animation:none!important}.card{break-inside:avoid;page-break-inside:avoid;margin:0 0 6mm!important;max-width:none!important}:root{--bg: #fff !important;--card: #fff !important;--text: #1d1d1f !important;--text-sub: #555 !important;--text-muted: #888 !important}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (min-width: 1025px){.t-flow{font-size:16px}.t-flow [style*="font-size: 9px"]{font-size:13px!important}.t-flow [style*="font-size: 10px"]{font-size:15px!important}.t-flow [style*="font-size: 11px"],.t-flow [style*="font-size: 12px"]{font-size:16px!important}.t-flow [style*="font-size: 13px"]{font-size:18px!important}}
