:root{--deep:#0b1c3f;--deep-2:#123a7c;--primary:#2563eb;--primary-dark:#1d4ed8;--primary-soft:#dbeafe;--success:#22c55e;--success-soft:#dcfce7;--sold:#f97316;--sold-soft:#ffedd5;--accent:#f5b942;--brand:#e74c3c;--ink:#1f2937;--ink-soft:#64748b;--line:#e7ecf5;--bg-soft:#f3f4f6;--card:#fff;--radius:18px;--shadow-sm:0 4px 16px #0b1c3f12;--shadow-md:0 14px 40px #0b1c3f24;--font:"PingFang SC", "HarmonyOS Sans SC", "MiSans", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;background:#e8edf6;line-height:1.7;overflow-x:hidden}img{max-width:100%;display:block}a{color:var(--primary);text-decoration:none}ul{list-style:none}button{font-family:inherit}.ph[data-svg-icon=true]:before{content:none!important;display:none!important}.ph[data-svg-icon=true]{vertical-align:-.125em;justify-content:center;align-items:center;width:1em;height:1em;line-height:1;display:inline-flex}.ph[data-svg-icon=true]>svg{width:1em;height:1em;display:block;overflow:visible}button,.spot,.tab,.filter-chip,.fab,.result-item,.menu-tab,.nav-btn,.drop-zone,.header-btn,.header-login,.mine-menu button,.logout-btn,.auth-tab,.search-close,.modal-close{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.container{width:min(1080px,92%);margin-inline:auto}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 26px;font-size:15px;font-weight:600;transition:transform .2s,box-shadow .2s,background .2s;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;box-shadow:0 10px 26px #2f6bff61}.btn-primary:hover{color:#fff;transform:translateY(-2px);box-shadow:0 14px 32px #2f6bff75}.btn-ghost{color:#fff;background:#ffffff14;border:1.5px solid #ffffffbf}.btn-block{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important}.btn-sm{padding:7px 20px;font-size:13px}.splash{z-index:500;color:#fff;cursor:pointer;background:linear-gradient(160deg,#071430 0%,#0d2452 48%,#163a82 100%);flex-direction:column;justify-content:center;align-items:center;gap:8px;transition:opacity .7s,visibility .7s;animation:.85s cubic-bezier(.4,0,.2,1) 2.45s forwards splashZoom,0s 3.5s forwards splashGone;display:flex;position:fixed;inset:0;overflow:hidden}.splash.hide{opacity:0;visibility:hidden;pointer-events:none}.splash-grid{background-image:linear-gradient(#ffffff0b 1px,#0000 1px),linear-gradient(90deg,#ffffff0b 1px,#0000 1px);background-size:54px 54px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 50% 42%,#000 0%,#0000 72%);mask-image:radial-gradient(circle at 50% 42%,#000 0%,#0000 72%)}.splash-stage{flex-direction:column;align-items:center;gap:10px;animation:.55s 1.5s forwards textOut;display:flex;position:relative}.splash-eyebrow{letter-spacing:7px;color:#ffffffb8;font-size:13px;animation:.6s 50ms both fadeUp}.splash-name{letter-spacing:8px;font-size:25px;font-weight:800;animation:.85s cubic-bezier(.22,1,.36,1) .22s both nameIn}.splash-sub{letter-spacing:5px;color:#ffffffd1;font-size:14px;animation:.8s .48s both fadeUp}.splash-loading{background:#ffffff24;border-radius:999px;width:150px;height:4px;margin-top:16px;animation:.5s .7s both fadeUp;overflow:hidden}.splash-loading span{background:linear-gradient(90deg,#2f6bff,#7aa3ff,#f5b942);border-radius:999px;width:0;height:100%;animation:1.15s .8s forwards loadFill;display:block}.splash-gate{opacity:0;filter:drop-shadow(0 16px 34px #00000073);width:min(250px,62vw);animation:.7s cubic-bezier(.22,1,.36,1) 1.58s both gatePop;position:absolute}.splash.hide .splash-gate{transform:scale(1.18)}.splash-tip{color:#ffffffad;font-size:13px;animation:.8s .95s both fadeUp;position:absolute;bottom:42px}.splash.quick{animation:none}.splash.quick .splash-stage{opacity:0;animation:none}.splash.quick .splash-gate{opacity:1;animation:none}.splash.quick .splash-tip{display:none}@keyframes nameIn{0%{opacity:0;letter-spacing:.5em;transform:translateY(18px)}to{opacity:1;letter-spacing:8px;transform:none}}@keyframes textOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-20px)scale(1.08)}}@keyframes gatePop{0%{opacity:0;transform:translateY(36px)scale(.5)}to{opacity:1;transform:none}}@keyframes loadFill{0%{width:0}to{width:100%}}@keyframes splashZoom{0%{opacity:1;filter:blur();transform:none}to{opacity:0;filter:blur(9px);transform:scale(1.16)}}@keyframes splashGone{to{visibility:hidden;pointer-events:none}}.splash-orb{filter:blur(64px);opacity:.5;border-radius:50%;animation:9s ease-in-out infinite orbFloat;position:absolute}.orb-a{background:radial-gradient(circle,#2f6bffe6,#0000 70%);width:340px;height:340px;top:-110px;left:-80px}.orb-b{background:radial-gradient(circle,#f5b94273,#0000 70%);width:300px;height:300px;animation-delay:-4.5s;bottom:-100px;right:-70px}@keyframes orbFloat{0%,to{transform:translate(0)scale(1)}50%{transform:translate(18px,-22px)scale(1.08)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.splash{display:none}}.app{background:var(--bg-soft);max-width:560px;min-height:100vh;margin:0 auto;position:relative;box-shadow:0 0 60px #0b1c3f38}.app-header{z-index:120;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffdb;border-bottom:1px solid #e7ecf5e6;position:sticky;top:0}.app-header-inner{align-items:center;gap:10px;height:56px;padding:0 14px;display:flex}.app-logo{color:#fff;background:linear-gradient(135deg,#ff5f4a,#c0392b);border-radius:11px;flex:none;place-items:center;width:34px;height:34px;font-size:17px;font-weight:800;display:grid;box-shadow:0 5px 14px #e74c3c59}.app-header-text{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.app-header-text strong{letter-spacing:1px;color:var(--deep);font-size:15px}.app-header-text small{color:var(--ink-soft);font-size:11px}.header-btn{background:var(--bg-soft);cursor:pointer;border:none;border-radius:12px;width:38px;height:38px;font-size:16px;transition:transform .2s,background .2s}.header-btn:hover{background:#e9effb;transform:translateY(-1px)}.bell-btn{position:relative}.notify-dot{background:#ef4444;border:2px solid #fff;border-radius:50%;width:9px;height:9px;animation:1.6s ease-in-out infinite dotPulse;position:absolute;top:7px;right:7px}.notify-dot[hidden]{display:none}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.75;transform:scale(1.25)}}.notices-bar{color:#8a6116;white-space:nowrap;text-overflow:ellipsis;background:linear-gradient(135deg,#f5b94224,#e74c3c1a);border:1px solid #f5b94259;border-radius:12px;margin:8px 14px 0;padding:8px 14px;font-size:12.5px;font-weight:600;animation:.5s both fadeUp;position:relative;overflow:hidden}.notices-bar[hidden]{display:none}.header-login{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;cursor:pointer;border:none;border-radius:999px;height:34px;padding:0 16px;font-size:13px;font-weight:600;box-shadow:0 6px 16px #2f6bff59}.header-login.logged{background:var(--deep);box-shadow:0 6px 16px #0b1c3f4d}.page{display:none}.page.active{animation:.4s both pageIn;display:block}@keyframes pageIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.home-hero{background:linear-gradient(135deg, #081631 0%, var(--deep-2) 55%, #1d56b8 130%);color:#fff;border-radius:22px;margin:12px 14px 4px;padding:24px 20px 22px;position:relative;overflow:hidden;box-shadow:0 18px 42px #0b1c3f59}.home-hero:after{content:"";pointer-events:none;background-image:linear-gradient(#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-size:44px 44px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 82% 10%,#000 0%,#0000 62%);mask-image:radial-gradient(circle at 82% 10%,#000 0%,#0000 62%)}.home-hero .hero-orb{filter:blur(50px);pointer-events:none;border-radius:50%;position:absolute}.home-hero .orb-a{background:radial-gradient(circle,#2f6bfff2,#0000 70%);width:210px;height:210px;animation:8s ease-in-out infinite orbFloat;top:-90px;right:-60px}.home-hero .orb-b{background:radial-gradient(circle,#f5b94280,#0000 70%);width:180px;height:180px;animation:10s ease-in-out -4s infinite orbFloat;bottom:-80px;left:-50px}.hero-eyebrow{letter-spacing:4px;background:#ffffff14;border:1px solid #ffffff4d;border-radius:999px;padding:4px 14px;font-size:12px;display:inline-block;position:relative}.hero-title{letter-spacing:1px;background:linear-gradient(90deg,#fff,#cfe0ff);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-top:12px;font-size:25px;font-weight:800;position:relative}.hero-title span{color:var(--accent);-webkit-text-fill-color:var(--accent)}.hero-sub{color:#ffffffd1;margin-top:6px;font-size:13px;position:relative}.hero-search{color:#ffffffe0;text-align:left;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff1f;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:8px;width:100%;margin-top:16px;padding:11px 16px;font-size:13.5px;transition:background .25s,border-color .25s;display:flex;position:relative}.hero-search:hover{background:#fff3;border-color:#fff6}body.entered .home-hero .hero-eyebrow{animation:.65s 50ms both fadeUp}body.entered .home-hero .hero-title{animation:.65s .18s both fadeUp}body.entered .home-hero .hero-sub{animation:.65s .3s both fadeUp}body.entered .home-hero .hero-search{animation:.65s .42s both fadeUp}.home-hero:before{content:"";filter:blur(12px);pointer-events:none;z-index:1;background:radial-gradient(closest-side,#1e56b857,#0000 72%);width:86%;height:70px;position:absolute;bottom:-34px;left:50%;transform:translate(-50%)}.map-section{flex:1;min-height:0;padding:8px 0 0;position:relative}.map-section:before{content:"";filter:blur(10px);pointer-events:none;z-index:1;background:radial-gradient(closest-side,#123a7c2e,#0000 72%);width:82%;height:56px;position:absolute;top:-16px;left:50%;transform:translate(-50%)}.map-frame{z-index:0;background:linear-gradient(165deg,#fff,#eaf1fc 50%,#d5e4fa);border-radius:22px;flex-direction:column;height:calc(100% - 28px);min-height:420px;margin:14px;padding:12px;transition:box-shadow .4s,transform .4s;display:flex;position:relative;box-shadow:0 18px 40px #0b1c3f29,inset 0 0 0 1px #2f6bff29}body.entered .map-frame{animation:.75s cubic-bezier(.22,1,.36,1) .15s backwards frameIn}.map-frame:hover{transform:translateY(-4px);box-shadow:0 26px 54px #0b1c3f38,inset 0 0 0 1px #2f6bff3d}.map-frame:before{content:"";z-index:-2;background:linear-gradient(#f4f8ff,#dbe7f8);border-radius:28px;position:absolute;inset:-10px -8px -18px;box-shadow:0 10px 22px #0b1c3f1f}.map-frame:after{content:"";z-index:-1;background:#fff;border-radius:25px;position:absolute;inset:-4px -3px -10px;box-shadow:0 5px 12px #0b1c3f17}.map-toolbar{justify-content:space-between;align-items:center;gap:10px;padding:2px 6px 12px;display:flex}.map-toolbar-title{color:var(--deep);letter-spacing:1px;font-size:15px;font-weight:700}.map-toolbar-hint{color:var(--ink-soft);font-size:11.5px}.map-corner-hint{z-index:15;background:linear-gradient(135deg, var(--deep), var(--deep-2));color:#fff;cursor:pointer;border:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12.5px;font-weight:700;transition:transform .2s;display:flex;position:absolute;box-shadow:0 8px 20px #0b1c3f59}.map-corner-hint:hover{transform:translateY(-2px)}.map-corner-hint[hidden]{display:none}#map-corner-out{bottom:12px;right:12px}#map-corner-back{top:12px;left:12px}.map-clouds{z-index:20;pointer-events:none;border-radius:14px;position:absolute;inset:0;overflow:hidden}.cloud-shape{opacity:0;filter:blur(2px);width:220px;height:78px;position:absolute}.cs-1{top:14%;left:-240px}.cs-2{animation-delay:80ms;top:44%;left:-300px}.cs-3{animation-delay:.16s;top:70%;left:-260px}.map-frame.clouding .cloud-shape{animation:1.05s cubic-bezier(.4,0,.2,1) forwards cloudCover}@keyframes cloudCover{0%{opacity:0;transform:translate(0)}22%{opacity:1}to{opacity:1;transform:translate(760px)}}@keyframes frameIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.map-wrap{transform-origin:50%;-webkit-overflow-scrolling:touch;scrollbar-width:none;touch-action:pan-x pan-y;overscroll-behavior-x:contain;cursor:grab;border-radius:14px;flex:1;min-height:0;position:relative;overflow:auto hidden}.map-wrap:before{content:"";z-index:4;pointer-events:none;background:radial-gradient(120% 95% at 50% 42%,#0000 55%,#0b1c3f1f 100%);border-radius:14px;position:absolute;inset:0}.map-wrap::-webkit-scrollbar{display:none}.map-wrap.dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.map-section.map-enter .map-wrap{animation:1s cubic-bezier(.22,1,.36,1) 50ms both mapIn}@keyframes mapIn{0%{opacity:0;transform:scale(1.09)}to{opacity:1;transform:scale(1)}}.campus-map{width:auto;min-width:100%;max-width:none;height:100%;display:block}.spot{cursor:pointer;transition:transform .25s,filter .25s}.spot:hover,.spot:focus-visible{filter:drop-shadow(0 14px 16px #0b1c3f4d)brightness(1.04);outline:none;transform:translateY(-5px)}.notices-bar:after{content:"";pointer-events:none;background:linear-gradient(#f5b9422e,#0000);height:8px;position:absolute;bottom:-8px;left:0;right:0}.spot-name{text-anchor:middle;fill:var(--deep);paint-order:stroke;stroke:#f9fdf5;stroke-width:5px;stroke-linejoin:round;font-size:16px;font-weight:700}.spot-emoji{text-anchor:middle;font-size:22px}.speed-chip{cursor:pointer}.speed-chip rect{transition:filter .2s,transform .2s}.speed-chip:hover rect{filter:brightness(1.14);transform:translateY(-2px)}.speed-chip-text{fill:#fff;text-anchor:middle;font-size:15px;font-weight:700}.map-hint{text-anchor:middle;fill:#8aa88f;letter-spacing:2px;font-size:13px;font-weight:600}.map-wrap:after{content:"";z-index:5;pointer-events:none;background:linear-gradient(105deg,#0000 42%,#ffffff80 50%,#0000 58%);position:absolute;inset:0;transform:translate(-130%)}.map-wrap.map-sweep .spot-name{animation:.55s both nameSpotIn}@keyframes mapSweep{to{transform:translate(130%)}}@keyframes nameSpotIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.cloud{animation:26s linear infinite cloudDrift}.cloud-2{animation-duration:34s;animation-delay:-14s}@keyframes cloudDrift{0%{transform:translate(-80px)}to{transform:translate(80px)}}#page-home.active{flex-direction:column;height:calc(100vh - 62px);padding-bottom:0;display:flex}.map-section{height:auto}#app[data-page=home] .app-header{display:none}.tabbar{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:130;width:min(560px,100%);height:62px;padding-bottom:env(safe-area-inset-bottom);background:#fffffff0;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{color:#8a94a6;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;transition:color .2s;display:flex;position:relative}.tab .tab-icon{font-size:21px;line-height:1;transition:transform .2s}.tab.active{color:var(--primary);font-weight:700}.tab.active .tab-icon{transform:translateY(-2px)}.tab.active:before{content:"";background:linear-gradient(90deg, var(--primary), #7aa3ff);border-radius:0 0 4px 4px;width:26px;height:3px;position:absolute;top:0}.help-head{padding:20px 0 12px}.help-head h2{color:var(--deep);letter-spacing:1px;font-size:21px}.help-head p{color:var(--ink-soft);margin-top:4px;font-size:13px}.help-filters{scrollbar-width:none;gap:8px;padding:4px 0 14px;display:flex;overflow-x:auto}.help-filters::-webkit-scrollbar{display:none}.filter-chip{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;background:#fff;border-radius:999px;flex:none;padding:7px 16px;font-size:13px;transition:all .2s}.filter-chip.active{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;border-color:#0000;font-weight:600;box-shadow:0 6px 16px #2f6bff4d}.help-list{flex-direction:column;gap:12px;padding-bottom:24px;display:flex}.help-card{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:18px;padding:15px 15px 13px;transition:transform .22s,box-shadow .22s;animation:.35s both cardIn}.help-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}@keyframes cardIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.help-card-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.help-type{color:var(--primary-dark);font-size:12.5px;font-weight:700}.help-status{border-radius:999px;padding:2px 10px;font-size:11.5px}.help-card h3{color:var(--deep);font-size:15.5px}.help-desc{color:var(--ink-soft);margin-top:4px;font-size:13px}.help-meta{color:var(--ink-soft);flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:12px;display:flex}.help-foot{justify-content:space-between;align-items:center;margin-top:10px;display:flex}.help-reward{color:#e74c3c;font-size:14px;font-weight:800}.help-done{color:#15803d;font-size:12.5px;font-weight:600}.help-empty{text-align:center;color:var(--ink-soft);padding:48px 0;font-size:14px}.fab{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;cursor:pointer;z-index:110;border:none;border-radius:50%;width:54px;height:54px;font-size:28px;font-weight:600;transition:transform .2s;position:fixed;bottom:82px;right:max(18px,50% - 262px);box-shadow:0 12px 28px #2f6bff73}.fab:hover{transform:translateY(-3px)scale(1.04)}.market-container{width:auto;margin:0;padding:0 10px 24px}.market-head{z-index:8;background:var(--bg-soft);gap:8px;padding:10px 0 8px;display:flex;position:sticky;top:56px}.market-tab{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;background:#fff;border-radius:999px;flex:1;padding:9px 0;font-size:13px;font-weight:600;transition:all .2s}.market-tab.active{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;border-color:#0000;box-shadow:0 6px 16px #2f6bff4d}.market-body{align-items:flex-start;display:flex}.market-body .col-help,.market-body .col-market{flex:1;min-width:0;transition:flex .38s cubic-bezier(.22,1,.36,1)}.market-body .col-help.collapsed,.market-body .col-market.collapsed{flex:0 0 46px;justify-content:center;align-items:center;min-width:46px;padding:8px 0;display:flex;overflow:hidden}.market-body .col-help.collapsed>:not(.collapse-tag),.market-body .col-market.collapsed>:not(.collapse-tag){display:none}.collapse-tag{writing-mode:vertical-rl;text-orientation:mixed;border:1px solid var(--line);box-shadow:var(--shadow-sm);color:var(--primary-dark);cursor:pointer;white-space:nowrap;background:#fff;border-radius:999px;margin:0 auto;padding:10px 5px;font-size:12px;font-weight:700}.collapse-tag[hidden]{display:none}.col-market{z-index:2;border:1px solid var(--line);background:linear-gradient(#fff,#eef3fc);border-radius:18px;margin-left:-14px;padding:0 12px 14px 20px;position:relative;box-shadow:-10px 8px 26px #0b1c3f24}.col-help{padding:0 6px 14px 0}.col-head{justify-content:space-between;align-items:center;gap:6px;padding:10px 2px 6px;display:flex}.col-head span{color:var(--deep);white-space:nowrap;font-size:14px;font-weight:700}.col-add{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;padding:6px 12px;font-size:12px;font-weight:600;box-shadow:0 5px 14px #2f6bff4d}.market-filters{scrollbar-width:none;gap:6px;padding:4px 0 10px;display:flex;overflow-x:auto}.market-filters::-webkit-scrollbar{display:none}.market-filters .filter-chip{padding:5px 11px;font-size:12px}.market-list{flex-direction:column;gap:0;display:flex}.market-card{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:14px;margin-bottom:10px;padding:11px 11px 9px}.m-head{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.m-cat{color:var(--primary-dark);font-size:11.5px;font-weight:700}.m-status{border-radius:999px;padding:1px 8px;font-size:10.5px}.market-card h4{color:var(--deep);font-size:14px;line-height:1.45}.m-desc{color:var(--ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:3px;font-size:12px;display:-webkit-box;overflow:hidden}.m-meta{color:var(--ink-soft);flex-wrap:wrap;gap:8px;margin-top:7px;font-size:11px;display:flex}.m-foot{justify-content:space-between;align-items:center;gap:6px;margin-top:8px;display:flex}.m-price{color:#e74c3c;font-size:14px;font-weight:800}.m-own{color:var(--ink-soft);align-items:center;gap:6px;font-size:12px;display:flex}.btn-xs{padding:5px 10px;font-size:11.5px}.btn-ghost-red{color:#dc2626;background:#fff;border:1px solid #fecaca}.btn-ghost-red:hover{color:#dc2626;background:#fef2f2}.forum-head{padding:18px 0 12px}.forum-head h2{color:var(--deep);font-size:20px}.forum-head p{color:var(--ink-soft);margin-top:4px;font-size:13px}.forum-filters{scrollbar-width:none;gap:8px;padding:4px 0 14px;display:flex;overflow-x:auto}.forum-filters::-webkit-scrollbar{display:none}.forum-list{flex-direction:column;gap:12px;padding-bottom:70px;display:flex}.forum-card{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:16px;padding:14px 14px 12px}.forum-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;padding:0;display:flex}.forum-topic{border-radius:999px;padding:2px 10px;font-size:11.5px;font-weight:700}.forum-topic.t-friend{color:#be185d;background:#fce7f3}.forum-topic.t-confess{color:#be123c;background:#ffe4e6}.forum-topic.t-vent{color:#1d4ed8;background:#dbeafe}.forum-topic.t-tree{color:#047857;background:#d1fae5}.forum-time{color:var(--ink-soft);font-size:11.5px}.forum-content{color:var(--ink);white-space:pre-wrap;word-break:break-word;font-size:14.5px;line-height:1.65}.forum-meta{color:var(--ink-soft);margin-top:8px;font-size:12px}.forum-actions{border-top:1px solid var(--line);gap:10px;margin-top:10px;padding-top:10px;display:flex}.forum-like,.forum-cmt-btn{background:var(--bg-soft);color:var(--ink-soft);cursor:pointer;border:none;border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:600;transition:all .2s}.forum-like.liked{color:#dc2626;background:#fef2f2}.forum-comments{background:var(--bg-soft);border-radius:12px;margin-top:12px;padding:10px 12px}.comment-list{flex-direction:column;gap:8px;display:flex}.comment-item{color:var(--ink-soft);gap:8px;font-size:12.5px;display:flex}.comment-item strong{color:var(--primary-dark);flex:none}.comment-empty{color:var(--ink-soft);font-size:12px}.comment-input-row{gap:8px;margin-top:10px;display:flex}.comment-input-row input{border:1px solid var(--line);min-width:0;color:var(--ink);background:#fff;border-radius:999px;flex:1;padding:8px 12px;font-family:inherit;font-size:13px}.comment-input-row input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #2f6bff21}.load-more{border:1px dashed var(--line);width:100%;color:var(--primary-dark);cursor:pointer;background:#fff;border-radius:999px;margin:4px auto 10px;padding:10px 0;font-size:13px;font-weight:600;transition:background .2s;display:block}.load-more:hover{background:var(--bg-soft)}.card-img{object-fit:cover;border:1px solid var(--line);border-radius:10px;width:100%;height:150px;margin-bottom:8px}.forum-img{height:180px;margin-top:8px}.forum-report{cursor:pointer;opacity:.65;background:0 0;border:none;margin-left:auto;font-size:15px;transition:opacity .2s}.forum-report:hover{opacity:1}.notify-list{flex-direction:column;gap:8px;display:flex}.notify-item{border:1px solid var(--line);background:var(--bg-soft);cursor:pointer;border-radius:12px;padding:12px 14px;transition:background .2s}.notify-item.unread{background:#2f6bff12;border-color:#2f6bff4d}.notify-item strong{color:var(--deep);font-size:13.5px}.notify-item p{color:var(--ink-soft);margin-top:2px;font-size:12.5px}.notify-item span{color:#a4adbd;font-size:11px}.star-row{letter-spacing:6px;color:#f5b942;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;margin:8px 0 16px;font-size:30px}.admin-list{flex-direction:column;gap:10px;display:flex}.admin-item{border:1px solid var(--line);background:var(--bg-soft);border-radius:12px;align-items:center;gap:10px;padding:12px;display:flex}.admin-item-main{flex:1;min-width:0}.admin-item-main strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.admin-item-main span{color:var(--ink-soft);font-size:11.5px}.admin-item-actions{flex:none;gap:6px;display:flex}.divider{border:none;border-top:1px dashed var(--line);margin:18px 0 14px}.mine-avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.mine-balance{color:#f5b942;font-weight:700}.wallet-balance{text-align:center;color:var(--deep);background:linear-gradient(135deg,#fff8e6,#fef3c7);border:1px solid #f3dd9a;border-radius:16px;margin-bottom:4px;padding:18px 0;font-size:34px;font-weight:800}.wallet-tx{flex-direction:column;gap:6px;display:flex}.tx-item{border:1px solid var(--line);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:12.5px;display:flex}.tx-type{color:var(--ink);flex:1}.tx-amt{color:var(--deep);font-weight:700}.tx-status{color:var(--ink-soft);font-size:11.5px}.amount-chips{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.amount-chips button{border:1.5px solid var(--line);min-width:60px;color:var(--deep);cursor:pointer;background:#fff;border-radius:999px;flex:1;padding:9px 0;font-size:13px;font-weight:600;transition:all .2s}.amount-chips button:hover,.amount-chips button.on{border-color:var(--primary);color:var(--primary);background:#2f6bff0f}.pay-box{background:var(--bg-soft);border:1px solid var(--line);text-align:center;color:var(--ink-soft);border-radius:12px;margin-top:14px;padding:14px;font-size:13px}.pay-link{color:#fff;background:#07c160;border-radius:999px;margin:10px 0;padding:10px 22px;font-weight:700;display:inline-block}.pay-done{color:#15803d;font-weight:700}.pay-tip{color:var(--ink-soft);font-size:12px}.file-name{color:var(--primary-dark);text-overflow:ellipsis;white-space:nowrap;background:#2f6bff12;border-radius:10px;margin:10px 0 4px;padding:9px 12px;font-size:13px;overflow:hidden}.print-price{color:#e74c3c;text-align:right;margin-top:4px;font-size:15px;font-weight:800}.print-order-list{flex-direction:column;gap:10px;display:flex}.print-order-item{border:1px solid var(--line);background:var(--bg-soft);border-radius:12px;align-items:center;gap:10px;padding:12px 14px;display:flex}.print-order-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.print-order-main strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.print-order-main span{color:var(--ink-soft);font-size:12px}.print-order-right{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.print-code{color:var(--deep);font-size:12px;font-weight:700}.badge-status{border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:600}.badge-status.unpaid{color:#92400e;background:#fef3c7}.badge-status.paid{color:#0369a1;background:#e0f2fe}.badge-status.printing{color:#6d28d9;background:#ede9fe}.badge-status.ready{color:#15803d;background:#dcfce7}.badge-status.picked{color:#475569;background:#e2e8f0}.help-card,.market-card,.forum-card{cursor:pointer;transition:transform .22s,box-shadow .22s}.help-card:hover,.market-card:hover,.forum-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.img-picker{background:var(--bg-soft);color:var(--ink-soft);cursor:pointer;border:2px dashed #b9c8e4;border-radius:14px;place-items:center;padding:22px 12px;font-size:13.5px;transition:border-color .2s,background .2s;display:grid}.img-picker:hover{border-color:var(--primary);background:#2f6bff0f}.img-preview{object-fit:cover;border:1px solid var(--line);border-radius:14px;width:100%;max-height:180px}.mine-my{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:16px;margin-top:12px;overflow:hidden}.mine-my-tabs{border-bottom:1px solid var(--line);display:flex}.my-tab{color:var(--ink-soft);cursor:pointer;background:#fff;border:none;flex:1;padding:11px 0;font-size:13px;font-weight:600;transition:color .2s,background .2s}.my-tab.active{color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary);background:#2f6bff0f}.mine-my-list{max-height:320px;overflow-y:auto}.my-item{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:11px 14px;display:flex}.my-item:last-child{border-bottom:none}.my-item-main{flex-direction:column;flex:1;min-width:0;display:flex}.my-item-main strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.my-item-main span{color:var(--ink-soft);font-size:12px}.terms-check{color:var(--ink-soft);cursor:pointer;align-items:center;gap:8px;font-size:13px;font-weight:400;display:flex}.terms-check input{width:16px;height:16px;accent-color:var(--primary)}.terms-body p{color:var(--ink-soft);margin-bottom:8px;font-size:13.5px;line-height:1.8}[data-theme=dark] body{background:#0a1020}[data-theme=dark] .app{background:#0f1729;box-shadow:0 0 60px #0000008c}[data-theme=dark] .app-header,[data-theme=dark] .tabbar{background:#121a2ef0;border-color:#26324a}[data-theme=dark] .app-header-text strong,[data-theme=dark] .col-head span,[data-theme=dark] .forum-head h2,[data-theme=dark] .help-head h2{color:#e6ecf5}[data-theme=dark] .app-header-text small,[data-theme=dark] .col-head span,[data-theme=dark] .help-head p,[data-theme=dark] .forum-head p{color:#9aa8c0}[data-theme=dark] .help-card,[data-theme=dark] .market-card,[data-theme=dark] .forum-card,[data-theme=dark] .mine-menu,[data-theme=dark] .mine-stats,[data-theme=dark] .mine-contact,[data-theme=dark] .mine-my,[data-theme=dark] .filter-chip,[data-theme=dark] .menu-tab,[data-theme=dark] .result-group,[data-theme=dark] .result-item,[data-theme=dark] .speed-card,[data-theme=dark] .file-item,[data-theme=dark] .coach-card,[data-theme=dark] .modal-panel,[data-theme=dark] .search-box,[data-theme=dark] .collapse-tag,[data-theme=dark] .load-more,[data-theme=dark] .img-picker,[data-theme=dark] .my-tab{color:#e6ecf5;background:#16203a;border-color:#26324a}[data-theme=dark] .help-card h3,[data-theme=dark] .market-card h4,[data-theme=dark] .forum-content,[data-theme=dark] .my-item-main strong,[data-theme=dark] .m-cat,[data-theme=dark] .mine-stats strong{color:#e6ecf5}[data-theme=dark] .help-desc,[data-theme=dark] .m-desc,[data-theme=dark] .help-meta,[data-theme=dark] .m-meta,[data-theme=dark] .forum-meta,[data-theme=dark] .my-item-main span,[data-theme=dark] .comment-item,[data-theme=dark] .forum-time,[data-theme=dark] .mine-stats span{color:#9aa8c0}[data-theme=dark] .form-group input,[data-theme=dark] .form-group select,[data-theme=dark] .form-group textarea,[data-theme=dark] .comment-input-row input{color:#e6ecf5;background:#0f1729;border-color:#26324a}[data-theme=dark] .forum-comments,[data-theme=dark] .coach-card,[data-theme=dark] .service-card,[data-theme=dark] .drop-zone,[data-theme=dark] .info-item,[data-theme=dark] .menu-item,[data-theme=dark] .schedule th,[data-theme=dark] .speed-result{background:#0f1729;border-color:#26324a}[data-theme=dark] .info-item p,[data-theme=dark] .menu-item,[data-theme=dark] .schedule td,[data-theme=dark] .speed-result .value{color:#cbd6ea}[data-theme=dark] .info-item strong,[data-theme=dark] .schedule th,[data-theme=dark] .menu-item .mname{color:#e6ecf5}[data-theme=dark] .modal-overlay{background:#030812b8}[data-theme=dark] .auth-tab.active{background:#16203a}[data-theme=dark] .market-tab,[data-theme=dark] .forum-like,[data-theme=dark] .forum-cmt-btn{color:#9aa8c0;background:#0f1729;border-color:#26324a}[data-theme=dark] .market-tab.active{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff}[data-theme=dark] .map-frame{background:linear-gradient(165deg,#1b2743,#14203a 55%,#101a30);box-shadow:0 18px 40px #0006}[data-theme=dark] .map-frame:before{background:linear-gradient(#182238,#101a30)}[data-theme=dark] .map-frame:after{background:#14203a}[data-theme=dark] .map-toolbar-title{color:#e6ecf5}[data-theme=dark] .map-toolbar-hint{color:#9aa8c0}[data-theme=dark] .col-market{background:linear-gradient(#182440,#101a30)}[data-theme=dark] .mine-card{background:linear-gradient(135deg,#0b1c3f,#16325f)}[data-theme=dark] .toast{background:#0f1729f5}.mine-guest{border:1px solid var(--line);text-align:center;box-shadow:var(--shadow-sm);background:#fff;border-radius:22px;margin-top:22px;padding:44px 24px}.mine-guest-icon{font-size:46px}.mine-guest strong{color:var(--deep);margin-top:10px;font-size:18px;display:block}.mine-guest p{color:var(--ink-soft);margin:8px 0 20px;font-size:13px}.mine-card{background:linear-gradient(135deg, #081631, var(--deep-2) 55%, #1d56b8);color:#fff;border-radius:20px;align-items:center;gap:14px;margin-top:18px;padding:20px;display:flex;position:relative;overflow:hidden;box-shadow:0 16px 34px #0b1c3f4d}.mine-card:after{content:"";pointer-events:none;background-image:linear-gradient(#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-size:36px 36px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 90% 0,#000,#0000 60%);mask-image:radial-gradient(circle at 90% 0,#000,#0000 60%)}.mine-avatar{background:linear-gradient(135deg, var(--accent), var(--brand));border-radius:50%;flex:none;place-items:center;width:60px;height:60px;font-size:24px;font-weight:800;display:grid;position:relative;box-shadow:0 8px 20px #00000040}.mine-info{position:relative}.mine-info strong{letter-spacing:1px;font-size:18px}.mine-info p{color:#fffc;font-size:12.5px}.mine-stats{border:1px solid var(--line);text-align:center;box-shadow:var(--shadow-sm);background:#fff;border-radius:18px;grid-template-columns:repeat(3,1fr);margin-top:12px;padding:16px 0;display:grid}.mine-stats div+div{border-left:1px solid var(--line)}.mine-stats strong{color:var(--deep);font-size:22px;display:block}.mine-stats span{color:var(--ink-soft);font-size:12px}.mine-menu{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:18px;flex-direction:column;margin-top:12px;display:flex;overflow:hidden}.mine-menu button{border:none;border-bottom:1px solid var(--line);color:var(--ink);text-align:left;cursor:pointer;background:#fff;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;font-size:14.5px;transition:background .18s,padding-left .18s;display:flex}.mine-menu button:last-child{border-bottom:none}.mine-menu button span{color:#c0c7d4;font-size:16px}.mine-menu button:hover{background:#f7faff;padding-left:20px}.mine-menu button:active{background:var(--bg-soft)}.logout-btn{color:#dc2626;cursor:pointer;background:#fff;border:1px solid #fecaca;border-radius:999px;width:100%;margin-top:12px;padding:12px;font-size:14px;font-weight:600;transition:background .2s}.logout-btn:hover{background:#fef2f2}.mine-contact{border:1px solid var(--line);color:var(--ink-soft);box-shadow:var(--shadow-sm);background:#fff;border-radius:15px;margin-top:14px;padding:13px 15px;font-size:12.5px}.mine-version{text-align:center;color:#a4adbd;padding:16px 0;font-size:12px}.modal{z-index:200;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal[hidden]{display:none}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07143099;animation:.22s fadeIn;position:absolute;inset:0}.modal-panel{background:#fff;border-radius:24px;width:min(620px,100%);max-height:86vh;padding:30px 28px 26px;animation:.28s cubic-bezier(.22,1,.36,1) popIn;position:relative;overflow-y:auto;box-shadow:0 28px 80px #00000059}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(20px)scale(.96)}to{opacity:1;transform:none}}.modal-close{background:var(--bg-soft);width:36px;height:36px;color:var(--ink-soft);cursor:pointer;z-index:2;border:none;border-radius:50%;font-size:15px;transition:background .2s,color .2s;position:absolute;top:14px;right:14px}.modal-close:hover{color:#dc2626;background:#fee2e2}.modal-title{color:var(--deep);align-items:center;gap:10px;margin-bottom:4px;font-size:23px;display:flex}.modal-sub{color:var(--ink-soft);margin-bottom:18px;font-size:13px}.modal-desc{color:var(--ink-soft);margin-bottom:18px;font-size:14.5px}.modal-actions{flex-wrap:wrap;gap:12px;margin-top:18px;display:flex}.modal-actions .btn{flex:1;min-width:140px}.nav-actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.nav-btn{color:#fff;border-radius:999px;align-items:center;gap:6px;padding:10px 18px;font-size:13px;font-weight:700;transition:transform .2s,box-shadow .2s;display:inline-flex;box-shadow:0 8px 20px #2f6bff4d}.nav-btn:hover{color:#fff;transform:translateY(-2px)}.nav-btn.amap{background:linear-gradient(135deg,#2f6bff,#1e4fd6)}.nav-btn.baidu{background:linear-gradient(135deg,#3b82f6,#2563eb)}.note{color:#8a6116;background:#fff8e6;border:1px solid #f3dd9a;border-radius:12px;margin-top:14px;padding:10px 14px;font-size:13px}.info-list{border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:0;display:flex;overflow:hidden}.info-item{border-bottom:1px solid var(--line);gap:12px;padding:12px 16px;font-size:14px;display:flex}.info-item:last-child{border-bottom:none}.info-item .icon{flex:none;font-size:18px}.info-item strong{color:var(--deep)}.info-item p{color:var(--ink-soft);font-size:13px}.map-link{color:var(--primary);text-underline-offset:3px;font-weight:600;text-decoration:underline}.gallery{grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;display:grid}.gallery figure{border:1px solid var(--line);border-radius:14px;overflow:hidden}.gallery img{object-fit:cover;width:100%;height:150px}.gallery figcaption{color:var(--ink-soft);background:#fff;padding:8px 10px;font-size:12.5px}.chip-row{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.chip{color:var(--primary-dark);background:#2f6bff17;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600}.service-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.service-card{border:1px solid var(--line);background:var(--bg-soft);border-radius:16px;flex-direction:column;align-items:flex-start;gap:6px;padding:18px 16px;display:flex}.service-card .icon{font-size:26px}.service-card strong{color:var(--deep);font-size:15.5px}.service-card span{color:var(--ink-soft);font-size:13px}.speed-link{color:#fff;background:linear-gradient(135deg,#ff7675,#e74c3c);border-radius:999px;align-items:center;gap:6px;margin-top:14px;padding:10px 18px;font-size:14px;font-weight:700;display:inline-flex;box-shadow:0 8px 20px #e74c3c4d}.speed-link:hover{color:#fff;transform:translateY(-2px)}.coach-list{flex-direction:column;gap:12px;display:flex}.coach-card{border:1px solid var(--line);background:var(--bg-soft);border-radius:16px;align-items:center;gap:12px;padding:14px;display:flex}.coach-avatar{background:linear-gradient(135deg,#f6c177,#f39c12);border-radius:14px;flex:none;place-items:center;width:48px;height:48px;font-size:22px;display:grid;box-shadow:0 6px 14px #f39c124d}.coach-info{flex:1;min-width:0}.coach-info strong{color:var(--deep);font-size:15px}.coach-info p{color:var(--ink-soft);margin-top:2px;font-size:12.5px}.coach-info .coach-price{color:#e74c3c;font-weight:700}.coach-info .coach-desc{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.coach-btn{flex:none}.coach-contact{background:var(--bg-soft);border:1px solid var(--line);color:var(--deep);text-align:left;border-radius:14px;margin:14px auto;padding:14px 18px;font-size:14px}.coach-contact p{margin:4px 0}.menu-tabs{gap:10px;margin-bottom:16px;display:flex}.menu-tab{border:1.5px solid var(--line);color:var(--ink-soft);cursor:pointer;background:#fff;border-radius:999px;padding:9px 20px;font-size:14px;font-weight:600;transition:all .2s}.menu-tab.active{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;border-color:#0000}.menu-list{border:1px solid var(--line);border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.menu-item{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 16px;font-size:14.5px;display:flex}.menu-item:last-child{border-bottom:none}.menu-item .mname{flex:1}.menu-item .tag{color:#92400e;background:#fde68a;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700}.menu-item .price{color:#e74c3c;text-align:right;min-width:64px;font-weight:800}.menu-note{color:var(--ink-soft);margin-top:10px;font-size:12.5px}.schedule-card{border:1px solid var(--line);border-radius:16px;margin-top:4px;overflow:hidden}.schedule-head{background:linear-gradient(135deg, var(--deep), var(--deep-2));color:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.schedule-head strong{font-size:14.5px}.schedule-head span{color:#ffffffbf;font-size:12px}.table-wrap{overflow-x:auto}.schedule{border-collapse:collapse;width:100%;min-width:520px;font-size:12.5px}.schedule th{background:var(--bg-soft);color:var(--deep);border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 6px}.schedule td{text-align:center;border-bottom:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;padding:8px 6px}.schedule td:first-child{color:var(--deep);font-weight:600}.schedule tbody tr:hover td{background:#f0f6ff}.schedule .rest-row td{color:#8a6116;text-align:center;background:#fff8e6;font-weight:600}.drop-zone{text-align:center;background:var(--bg-soft);cursor:pointer;border:2px dashed #b9c8e4;border-radius:16px;place-items:center;gap:6px;padding:30px 16px;transition:border-color .2s,background .2s;display:grid}.drop-zone.dragover{border-color:var(--primary);background:#2f6bff0f}.drop-zone .icon{font-size:34px}.drop-zone strong{color:var(--deep);font-size:15px}.drop-zone em{color:var(--ink-soft);font-size:12.5px;font-style:normal}.file-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.file-item{border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-size:13.5px;display:flex}.file-item .fname{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.file-item .fsize{color:var(--ink-soft);flex:none}.file-item .fdel{color:#dc2626;cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:15px}.print-success{text-align:center;padding:26px 10px 10px}.print-success .icon{font-size:52px}.print-success h3{color:var(--deep);margin:8px 0;font-size:20px}.print-success p{color:var(--ink-soft);font-size:14px}.print-success .code{background:var(--deep);color:#fff;letter-spacing:6px;border-radius:12px;margin:12px 0;padding:8px 22px;font-size:22px;font-weight:800;display:inline-block}.form-group{margin-bottom:13px}.form-group label{color:var(--deep);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:12px;padding:11px 13px;font-family:inherit;font-size:14px;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #2f6bff21}.auth-panel{width:min(420px,100%)}.auth-tabs{background:var(--bg-soft);border-radius:999px;gap:8px;margin-bottom:20px;padding:4px;display:flex}.auth-tab{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;padding:9px 0;font-size:14px;font-weight:600;transition:all .22s}.auth-tab.active{color:var(--primary);background:#fff;box-shadow:0 4px 12px #0b1c3f1a}.auth-tip{text-align:center;color:var(--ink-soft);margin-top:14px;font-size:13px}.auth-tip a{font-weight:600}.search-overlay{z-index:300;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#071430ad;flex-direction:column;align-items:center;padding:64px 16px 24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.search-overlay[hidden]{display:none}.search-box{background:#fff;border-radius:999px;align-items:center;gap:8px;width:min(640px,100%);padding:12px 16px;animation:.25s popIn;display:flex;box-shadow:0 18px 50px #0000004d}.search-icon{font-size:17px}.search-box input{color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:15px}.search-close{background:var(--bg-soft);width:32px;height:32px;color:var(--ink-soft);cursor:pointer;border:none;border-radius:50%;font-size:13px}.search-results{width:min(640px,100%);max-height:calc(100vh - 150px);margin-top:16px;overflow-y:auto}.search-empty{color:#ffffffd9;text-align:center;padding:34px 0;font-size:14px}.result-group{box-shadow:var(--shadow-md);background:#fff;border-radius:16px;margin-bottom:14px;animation:.3s both cardIn;overflow:hidden}.result-group-head{background:linear-gradient(135deg, var(--deep), var(--deep-2));color:#ffffffe6;letter-spacing:2px;padding:9px 14px;font-size:12px;font-weight:700}.result-item{border:none;border-bottom:1px solid var(--line);width:100%;color:var(--ink);text-align:left;cursor:pointer;background:#fff;align-items:center;gap:10px;padding:12px 14px;font-size:14px;transition:background .16s;display:flex}.result-item:last-child{border-bottom:none}.result-item:hover{background:#f2f7ff}.result-item .r-icon{flex:none;font-size:18px}.result-item .r-main{flex:1;min-width:0}.result-item .r-title{color:var(--deep);font-weight:600}.result-item .r-sub{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.result-item .r-go{color:#c0c7d4;flex:none}.toast{z-index:400;color:#fff;white-space:nowrap;background:#0b1c3ff0;border-radius:999px;padding:12px 24px;font-size:14px;font-weight:600;animation:.25s popIn;position:fixed;bottom:82px;left:50%;transform:translate(-50%);box-shadow:0 14px 34px #0000004d}.toast[hidden]{display:none}.speed-page{padding:22px 0 36px}.speed-card{border:1px solid var(--line);max-width:620px;box-shadow:var(--shadow-md);text-align:center;background:#fff;border-radius:24px;margin:0 auto;padding:36px 30px}.speed-card h1{color:var(--deep);font-size:25px}.speed-card .sub{color:var(--ink-soft);margin:6px 0 26px;font-size:14px}.speed-start{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff7675,#e74c3c);border:none;border-radius:50%;width:150px;height:150px;margin-bottom:22px;font-size:20px;font-weight:800;transition:transform .2s,box-shadow .2s;box-shadow:0 16px 38px #e74c3c6b}.speed-start:hover{transform:scale(1.05)}.speed-start:disabled{cursor:wait;opacity:.8;transform:none}.speed-status{min-height:24px;color:var(--ink-soft);margin-bottom:12px;font-size:14px}.progress{background:var(--bg-soft);border-radius:999px;height:10px;margin-bottom:26px;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--primary), #06b6d4, #10b981);border-radius:999px;width:0;height:100%;transition:width .3s}.speed-results{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.speed-result{background:var(--bg-soft);border:1px solid var(--line);border-radius:16px;padding:18px 10px}.speed-result .label{color:var(--ink-soft);font-size:13px}.speed-result .value{color:var(--deep);margin-top:4px;font-size:26px;font-weight:800}.speed-result .unit{color:var(--ink-soft);font-size:13px;font-weight:500}.speed-grade{border-radius:16px;margin-top:20px;padding:14px;font-size:15px;font-weight:700}.speed-grade.good{color:#065f46;background:#d1fae5}.speed-grade.mid{color:#92400e;background:#fef3c7}.speed-grade.bad{color:#991b1b;background:#fee2e2}.speed-tips{text-align:left;color:var(--ink-soft);border-top:1px dashed var(--line);margin-top:26px;padding-top:16px;font-size:13px}.speed-tips li{margin:6px 0;padding-left:18px;position:relative}.speed-tips li:before{content:"•";color:var(--primary);font-weight:800;position:absolute;left:4px}@media (width<=560px){.app{box-shadow:none}.tabbar{width:100%}.fab{right:18px}.gallery,.service-grid{grid-template-columns:1fr}.speed-results{grid-template-columns:1fr 1fr}.speed-result:last-child{grid-column:1/-1}.modal-panel{padding:26px 18px 22px}.map-frame{margin:10px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.tab-icon .ph,.header-btn .ph,.search-icon .ph,.fab-main .ph,.fab-menu-item .ph{font-size:20px;line-height:1}.fab-wrap{z-index:30;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:88px;right:18px}.fab-main{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;font-size:24px;display:flex;box-shadow:0 8px 20px #2563eb59}.fab-main .ph{transition:transform .2s}.fab-wrap.open .fab-main .ph{transform:rotate(45deg)}.fab-menu-item{border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow-sm);cursor:pointer;opacity:0;pointer-events:none;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s;display:flex;transform:translateY(8px)}.fab-wrap.open .fab-menu-item{opacity:1;pointer-events:auto;transform:none}.fab-menu-item .ph{color:var(--primary)}.map-locate{border:1px solid var(--line);width:34px;height:34px;color:var(--primary);cursor:pointer;background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex}.map-locate .ph{font-size:18px}.map-locate:hover{background:var(--primary-soft)}.empty-state{text-align:center;padding:46px 20px}.empty-illu{background:var(--primary-soft);width:76px;height:76px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 14px;display:flex}.empty-illu .ph{font-size:34px}.empty-title{color:var(--ink);font-size:15px;font-weight:600}.empty-sub{color:var(--ink-soft);margin-top:4px;font-size:13px}.help-status.open{color:var(--primary);background:var(--primary-soft)}.help-status.done{color:var(--success);background:var(--success-soft)}.m-status.on{color:var(--primary);background:var(--primary-soft)}.m-status.sold{color:var(--sold);background:var(--sold-soft)}.splash{background:var(--bg-soft);justify-content:center;align-items:center;display:flex}.skeleton-app{flex-direction:column;gap:14px;width:min(480px,92vw);padding:32px 20px;display:flex}.sk{background:#e2e8f0;border-radius:12px;position:relative;overflow:hidden}.sk:after{content:"";background:linear-gradient(90deg,#0000,#ffffffa6,#0000);animation:1.2s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes shimmer{to{transform:translate(100%)}}.sk-brand{border-radius:8px;width:130px;height:28px}.sk-hero{border-radius:16px;height:180px}.sk-title{width:62%;height:22px}.sk-card{border-radius:14px;height:110px}.pay-amount{text-align:center;margin-bottom:12px;font-size:16px;font-weight:700}.qr-box{border:1px solid var(--line);background:#fff;border-radius:12px;justify-content:center;align-items:center;width:fit-content;margin:0 auto 12px;padding:12px;display:flex}.qr-box canvas,.qr-box img{display:block}.pay-tip{text-align:center;color:var(--ink-soft);font-size:13px;line-height:1.5}.service-error{z-index:100000;color:#991b1b;text-align:center;background:#fff1f2;border:1px solid #fecaca;border-radius:12px;max-width:min(92vw,560px);padding:12px 18px;font-weight:600;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #7f1d1d29}.vr-tour-strip{scrollbar-width:none;background:linear-gradient(100deg,#eef5fff5,#f6f1fff0);border:1px solid #2f6bff24;border-radius:14px;align-items:center;gap:8px;margin:-2px 4px 10px;padding:8px 10px;display:flex;overflow-x:auto}.vr-tour-strip::-webkit-scrollbar{display:none}.vr-tour-label{color:var(--deep);white-space:nowrap;align-items:center;gap:5px;font-size:12.5px;font-weight:800;display:inline-flex}.vr-tour-label .ph{color:var(--primary);font-size:17px}.vr-tour-scenes{align-items:center;gap:6px;display:flex}.vr-tour-scenes button,.vr-official-link{color:#334155;white-space:nowrap;cursor:pointer;background:#ffffffe6;border:1px solid #2f6bff29;border-radius:999px;align-items:center;gap:4px;min-height:30px;padding:6px 10px;font-size:11.5px;font-weight:700;text-decoration:none;transition:transform .2s,border-color .2s,color .2s,box-shadow .2s;display:inline-flex}.vr-tour-scenes button:hover,.vr-tour-scenes button:focus-visible,.vr-official-link:hover,.vr-official-link:focus-visible{color:var(--primary);border-color:#2f6bff6b;transform:translateY(-1px);box-shadow:0 5px 14px #2f6bff1f}.vr-official-link{color:#6842c2;margin-left:auto}.vr-detail-cta{width:100%;color:var(--deep);text-align:left;cursor:pointer;background:linear-gradient(120deg,#edf4ff,#f3edff);border:1px solid #2f6bff2e;border-radius:16px;grid-template-columns:42px 1fr auto;align-items:center;gap:12px;margin-top:18px;padding:12px 14px;transition:transform .2s,box-shadow .2s;display:grid}.vr-detail-cta:hover{transform:translateY(-2px);box-shadow:0 10px 24px #2f6bff24}.vr-detail-cta .vr-detail-icon{color:#fff;background:linear-gradient(135deg,#2f6bff,#7c4dff);border-radius:13px;place-items:center;width:42px;height:42px;font-size:21px;display:grid}.vr-detail-cta strong,.vr-detail-cta small{display:block}.vr-detail-cta strong{font-size:14px}.vr-detail-cta small{color:var(--ink-soft);margin-top:3px;font-size:11.5px}.vr-modal{z-index:650;justify-content:center;align-items:center;padding:clamp(10px,2.4vw,28px);display:flex;position:fixed;inset:0}.vr-modal[hidden]{display:none}.vr-backdrop{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#040b1bd1;animation:.25s fadeIn;position:absolute;inset:0}.vr-panel{color:#fff;background:#071127;border:1px solid #ffffff24;border-radius:24px;flex-direction:column;width:min(1220px,100%);max-height:calc(100vh - 28px);animation:.35s cubic-bezier(.22,1,.36,1) vrPanelIn;display:flex;position:relative;overflow:hidden;box-shadow:0 35px 100px #0000008c}.vr-panel:fullscreen{border-radius:0;width:100vw;height:100vh;max-height:none}@keyframes vrPanelIn{0%{opacity:0;transform:scale(.97)translateY(16px)}to{opacity:1;transform:none}}.vr-header{background:linear-gradient(90deg,#0a1732,#111b36);justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex}.vr-kicker{color:#90adff;letter-spacing:1.8px;margin:0 0 2px;font-size:9.5px;font-weight:800}.vr-header h2{color:#fff;margin:0;font-size:clamp(17px,2.2vw,23px)}.vr-header-actions{gap:7px;display:flex}.vr-header-actions button,.vr-zoom-controls button{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff24;border-radius:10px;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:7px 11px;font-size:11.5px;display:inline-flex}.vr-header-actions button:hover,.vr-zoom-controls button:hover{background:#ffffff29}.vr-header-actions .vr-close{border-radius:50%;width:36px;padding:0}.vr-stage{--vr-x:50%;--vr-size:190%;--vr-image:linear-gradient(135deg, #14284b, #09162f);background-image:linear-gradient(180deg, #050e2008, #050e2021), var(--vr-image);background-position:center, var(--vr-x) center;background-size:cover, auto var(--vr-size);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background-repeat:no-repeat,repeat-x;outline:none;flex:auto;height:clamp(330px,64vh,690px);min-height:280px;transition:filter .25s;position:relative;overflow:hidden}.vr-stage.is-dragging{cursor:grabbing}.vr-stage.is-loading{filter:saturate(.6)brightness(.7)}.vr-stage:after{content:"";pointer-events:none;background:linear-gradient(90deg,#030a191f,#0000 13% 87%,#030a191f);position:absolute;inset:0}.vr-loading{z-index:5;color:#fff;background:#07112773;justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex;position:absolute;inset:0}.vr-loading[hidden]{display:none}.vr-loading span{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:19px;height:19px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.vr-compass,.vr-drag-tip,.vr-zoom-controls{z-index:3;position:absolute}.vr-compass{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#040c1c94;border:1px solid #ffffff2e;border-radius:999px;align-items:center;gap:6px;padding:7px 10px;font-size:11px;display:inline-flex;top:14px;left:14px}.vr-compass .ph{color:#90adff;font-size:17px}.vr-drag-tip{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#040c1c9e;border-radius:999px;align-items:center;gap:6px;padding:8px 12px;font-size:11.5px;transition:opacity .3s;display:flex;bottom:17px;left:50%;transform:translate(-50%)}.vr-drag-tip.is-hidden{opacity:0;pointer-events:none}.vr-zoom-controls{flex-direction:column;gap:5px;display:flex;bottom:14px;right:14px}.vr-zoom-controls button{width:36px;padding:0;font-size:15px}.vr-footer{background:linear-gradient(90deg,#0a1732,#111b36);justify-content:space-between;align-items:center;gap:14px;padding:12px 16px;display:flex}.vr-scene-tabs{scrollbar-width:none;gap:7px;display:flex;overflow-x:auto}.vr-scene-tabs::-webkit-scrollbar{display:none}.vr-scene-tabs button{color:#cbd5e1;white-space:nowrap;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff21;border-radius:11px;align-items:center;gap:6px;min-height:36px;padding:7px 12px;font-size:11.5px;font-weight:700;display:inline-flex}.vr-scene-tabs button.active{color:#fff;background:#2f6bff38;border-color:#7194ff}.vr-disclosure{text-align:right;flex:none;font-size:9.5px;line-height:1.55}.vr-disclosure span,.vr-disclosure a{display:block}.vr-disclosure span{color:#aebbd0}.vr-disclosure a{color:#8eb0ff;text-decoration:none}[data-theme=dark] .vr-tour-strip{background:linear-gradient(100deg,#1c2b48f5,#272247f0);border-color:#90adff29}[data-theme=dark] .vr-tour-scenes button,[data-theme=dark] .vr-official-link{color:#dbe6f6;background:#ffffff12;border-color:#ffffff1a}[data-theme=dark] .vr-detail-cta{color:#fff;background:linear-gradient(120deg,#1c2b48,#292343);border-color:#90adff2e}@media (width<=720px){.vr-tour-strip{margin:-3px 0 8px;padding:7px 8px}.vr-tour-label{z-index:1;background:inherit;padding-right:5px;position:sticky;left:0}.vr-official-link{margin-left:0}.vr-modal{padding:0}.vr-panel{border:none;border-radius:0;width:100%;height:100%;max-height:none}.vr-header{padding:max(12px, env(safe-area-inset-top)) 12px 10px}.vr-header-actions button span{display:none}.vr-header-actions button{width:36px;padding:0}.vr-stage{height:auto;min-height:0}.vr-footer{padding:10px 10px max(12px, env(safe-area-inset-bottom));display:block}.vr-scene-tabs button{flex:1 0 auto}.vr-disclosure{text-align:left;justify-content:space-between;gap:10px;margin-top:8px;display:flex}}@media (prefers-reduced-motion:reduce){.vr-panel{animation:none}}:root{--app-max:1120px;--tabbar-height:64px;--radius-sm:12px;--radius-md:16px;--radius-lg:22px;--space-1:6px;--space-2:10px;--space-3:14px;--space-4:20px;--control-min:44px;--focus-ring:0 0 0 3px #2563eb47}html,body{width:100%;max-width:100%}body{overflow-x:visible}[hidden]{display:none!important}.app{width:100%;max-width:var(--app-max);min-height:100dvh}.app-main,.page{padding-bottom:calc(var(--tabbar-height) + 28px + env(safe-area-inset-bottom))}.container{width:min(1040px,100% - 32px)}.tabbar{width:min(var(--app-max), 100%);min-height:var(--tabbar-height);height:calc(var(--tabbar-height) + env(safe-area-inset-bottom))}#page-home.active{height:auto;min-height:calc(100dvh - var(--tabbar-height) - env(safe-area-inset-bottom));padding-bottom:calc(var(--tabbar-height) + 18px + env(safe-area-inset-bottom))}.map-section{min-height:clamp(500px,68dvh,720px)}.map-frame{height:auto;min-height:clamp(460px,64dvh,680px)}.market-body{display:block}.market-body .market-col{width:100%;min-width:0}.market-body .market-col[hidden]{display:none!important}.market-head{isolation:isolate}.market-head:before{content:"";z-index:0;background:linear-gradient(135deg, var(--primary), var(--primary-dark));border-radius:999px;width:calc(50% - 4px);transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .24s;position:absolute;top:10px;bottom:8px;left:0;transform:translate(0)scaleX(1);box-shadow:0 7px 18px #2563eb4d}.market-head.show-market:before{transform:translate(calc(100% + 8px))scaleX(1)}.market-head .market-tab{z-index:1;background:#ffffffeb;transition:color .22s,border-color .22s,transform .22s;position:relative}.market-head .market-tab.active{color:#fff;box-shadow:none;background:0 0;border-color:#0000}.market-head.is-switching:before{box-shadow:0 9px 24px #2563eb61}.market-head.is-switching .market-tab{pointer-events:none}.market-body.is-switching{transition:height .3s cubic-bezier(.2,.8,.2,1);position:relative;overflow:hidden}.market-col.panel-fold-out,.market-col.panel-fold-in{will-change:transform, opacity;transform:translateZ(0)}.market-col.panel-fold-out{z-index:2;pointer-events:none;width:100%;position:absolute;inset:0}.market-col.panel-fold-out.to-market{transform-origin:100%;animation:.28s cubic-bezier(.4,0,.2,1) both marketFoldOutRight}.market-col.panel-fold-out.to-help{transform-origin:0;animation:.28s cubic-bezier(.4,0,.2,1) both marketFoldOutLeft}.market-col.panel-fold-in.to-market{transform-origin:0;animation:.3s cubic-bezier(.2,.8,.2,1) both marketFoldInRight}.market-col.panel-fold-in.to-help{transform-origin:100%;animation:.3s cubic-bezier(.2,.8,.2,1) both marketFoldInLeft}@keyframes marketFoldOutRight{0%{opacity:1;transform:translate(0,0)scaleX(1)}to{opacity:0;transform:translate(4.5%)scaleX(.84)}}@keyframes marketFoldOutLeft{0%{opacity:1;transform:translate(0,0)scaleX(1)}to{opacity:0;transform:translate(-4.5%)scaleX(.84)}}@keyframes marketFoldInRight{0%{opacity:0;transform:translate(-4.5%)scaleX(.84)}to{opacity:1;transform:translate(0,0)scaleX(1)}}@keyframes marketFoldInLeft{0%{opacity:0;transform:translate(4.5%)scaleX(.84)}to{opacity:1;transform:translate(0,0)scaleX(1)}}.col-market{box-shadow:none;background:0 0;border-radius:0;margin-left:0;padding:0 0 14px}.market-card,.help-card,.forum-card,.mine-card,.mine-stats,.mine-menu,.mine-my{border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid #cbd5e1b8}.scrollable-filters{scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;width:100%;max-width:100%;padding-right:24px;display:flex;position:relative;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 12px calc(100% - 28px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 12px calc(100% - 28px),#0000 100%)}.scrollable-filters:not(.has-before){-webkit-mask-image:linear-gradient(90deg,#000 0 calc(100% - 28px),#0000 100%);mask-image:linear-gradient(90deg,#000 0 calc(100% - 28px),#0000 100%)}.scrollable-filters:not(.has-more){padding-right:0;-webkit-mask-image:none;mask-image:none}.scrollable-filters::-webkit-scrollbar{display:none}.scrollable-filters .filter-chip{flex:none;min-height:36px}.fab-wrap{right:max(18px, calc((100vw - var(--app-max)) / 2 + 20px));bottom:calc(var(--tabbar-height) + 18px + env(safe-area-inset-bottom));z-index:125}.fab-wrap[hidden],body.has-overlay .fab-wrap{display:none!important}body:has(.vr-modal:not([hidden])) .fab-wrap{display:none!important}.fab-main{min-width:52px;min-height:52px}.map-toolbar{flex-wrap:wrap}.map-toolbar-hint{text-align:center;flex:1}.map-view-controls{align-items:center;gap:6px;margin-left:auto;display:flex}.map-control{width:var(--control-min);height:var(--control-min);min-width:var(--control-min);border:1px solid var(--line);background:var(--card);color:var(--primary);cursor:pointer;border-radius:50%;place-items:center;display:inline-grid}.map-locate{width:var(--control-min);height:var(--control-min);margin-left:0}.map-wrap{overscroll-behavior:contain;isolation:isolate;background:#dfead9;flex:none;width:100%;height:clamp(320px,52dvh,540px);overflow:auto}.map-canvas{min-width:100%;min-height:100%;position:relative;overflow:hidden}.map-canvas .campus-map{width:100%;min-width:0;max-width:none;height:100%}.campus-map-legacy{display:none!important}.campus-map-reference .map-label-light{fill:#fff;stroke:#142d4333;stroke-width:2px}.campus-map-reference .map-sub-label{fill:#fff;text-anchor:middle;paint-order:stroke;stroke:#142d432e;stroke-width:2px;font-size:12px;font-weight:700}.campus-map-reference .map-mini-label{fill:#253849;text-anchor:middle;font-size:12px;font-weight:800}.campus-map-reference .map-pin-label{fill:#263c4d;text-anchor:middle;paint-order:stroke;stroke:#f7f8d8;stroke-width:4px;font-size:11px;font-weight:800}.campus-map-reference .map-service-pin{transform-box:fill-box;transform-origin:50%}.campus-map-reference .place-study>rect,.campus-map-reference .place-dorm>rect{stroke:#ffffffc7;stroke-width:2px}.campus-map-reference .map-building-badge{color:#fff;pointer-events:none;filter:drop-shadow(0 2px 3px #0f264038)}.campus-map-reference .map-building-badge circle{fill:#193e62d1;stroke:#ffffffe6;stroke-width:1.5px}.campus-map-reference .map-building-badge use{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.campus-map-reference .map-building-badge-sport circle{fill:#207743e0}.campus-map-reference .map-building-badge-plan circle{fill:#da8523e6}.campus-map-reference .map-landscape{pointer-events:none}.campus-map-reference .map-roof-cap{color:#b95f12;fill:#b95f12;pointer-events:none;filter:drop-shadow(0 2px 2px #1f334529)}.campus-map-reference .place-study .map-roof-cap,.campus-map-reference .map-roof-blue{color:#326fa9;fill:#326fa9}.campus-map-reference .place-study .map-roof-green,.campus-map-reference .map-roof-green{color:#3b9438;fill:#3b9438}.campus-map-reference .map-roof-cyan{color:#177f9b;fill:#177f9b}.campus-map-reference .map-facade-windows{fill:#ecf9ffd1;stroke:#ffffffdb;stroke-width:1px;pointer-events:none;filter:drop-shadow(0 1px 1px #18344e29)}.campus-map-reference .map-people{filter:drop-shadow(0 1px 1px #173f3040)}.map-load-state{z-index:18;color:var(--deep);text-align:center;background:#f7fafcf0;place-content:center;justify-items:center;gap:10px;padding:24px;display:grid;position:absolute;inset:0}.map-load-state.is-error{color:#991b1b}.map-spinner{border:3px solid #cbd5e1;border-top-color:var(--primary);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}.map-wrap:after{opacity:0;transform:none}.map-wrap.map-sweep:after{animation:1.15s .15s both stableMapSweep}@keyframes stableMapSweep{0%,to{opacity:0}45%{opacity:.78}}.vr-tour-label,.vr-tour-scenes button{min-height:36px}.vr-tour-label.active,.vr-tour-scenes button.active{color:#fff;background:var(--primary);border-color:var(--primary)}.vr-official-link small{opacity:.72;margin-left:3px;font-size:9px}.notice-button{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;display:grid}.notice-button span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.notice-button span i{margin-right:6px}.notice-button time,.notice-button b{white-space:nowrap;opacity:.78;font-size:11px}.market-cover{object-fit:cover;border-radius:12px;width:100%;height:168px;margin-bottom:10px}.btn-secondary{color:var(--primary-dark);background:#eff6ff;border:1px solid #bfdbfe}.btn-secondary:hover{background:#dbeafe}.market-placeholder{color:#64748b;text-align:center;background:linear-gradient(135deg,#eef4ff,#e2e8f0);place-content:center;gap:4px;display:grid}.market-placeholder i{font-size:30px}.detail-placeholder{height:210px}.demo-badge{vertical-align:middle;color:#9a3412;background:#fff7ed;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:700;display:inline-flex}.m-meta{flex-wrap:wrap;gap:5px 12px;display:flex}.m-own{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.contact-summary{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-soft);flex-direction:column;gap:4px;margin:14px 0;padding:14px;display:flex}.forum-content.is-clamped{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.forum-expand{color:var(--primary);cursor:pointer;background:0 0;border:0;margin:-4px 0 8px;font-size:12px;font-weight:700}.forum-report{min-width:66px}.content-skeleton{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card);gap:10px;margin-bottom:12px;padding:18px;display:grid}.content-skeleton span{background:linear-gradient(90deg,#e7ecf5 25%,#f5f7fb 45%,#e7ecf5 65%) 0 0/200% 100%;border-radius:999px;height:12px;animation:1.2s linear infinite skeletonMove}.content-skeleton span:nth-child(2){width:72%}.content-skeleton span:nth-child(3){width:44%}@keyframes skeletonMove{to{background-position:-200% 0}}.search-panel{flex-direction:column;width:min(680px,100%);max-height:calc(100dvh - 96px);display:flex}.search-box,.search-results{width:100%}.search-results{color:var(--ink)}.search-clear{width:32px;height:32px;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.search-suggest-head{color:#fff;justify-content:space-between;align-items:center;margin:10px 2px 8px;display:flex}.search-suggest-head button{color:#ffffffc7;cursor:pointer;background:0 0;border:0}.search-chip-row{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.search-chip{color:#fff;cursor:pointer;background:#ffffff21;border:1px solid #ffffff59;border-radius:999px;min-height:36px;padding:6px 13px}.mine-guest-actions{justify-content:center;gap:10px;margin-top:14px;display:flex}.mine-contact a{align-items:center;gap:4px;display:inline-flex}.contact-phone{white-space:nowrap}.contact-sep{color:var(--ink-soft);margin:0 6px}button:disabled,.btn:disabled{cursor:not-allowed;opacity:.55;box-shadow:none!important;transform:none!important}:where(button,a,input,select,textarea,[tabindex]):focus-visible{box-shadow:var(--focus-ring);outline:none}:where(button,.result-item,.market-card,.help-card,.forum-card):active{transform:translateY(1px)}@media (width<=767px){.app{box-shadow:none}.container{width:calc(100% - 24px)}.map-frame{min-height:480px;margin:10px;padding:9px}.map-section{min-height:520px}.map-wrap{height:clamp(320px,42dvh,390px)}.map-toolbar-hint{text-align:left;flex-basis:100%;order:3}.vr-tour-strip{scrollbar-width:none;overscroll-behavior-x:contain;overflow:auto hidden}.vr-tour-strip::-webkit-scrollbar{display:none}.vr-tour-strip>*{flex:none}.notice-button{grid-template-columns:minmax(0,1fr) auto}.notice-button time{display:none}.home-hero{margin-inline:10px}.search-overlay{padding:max(24px, env(safe-area-inset-top)) 10px 14px}.search-panel{max-height:calc(100dvh - 38px)}.modal{align-items:flex-end;padding:10px}.modal-panel{border-radius:22px 22px 14px 14px;width:100%;max-height:min(88dvh,760px)}.mine-contact p:last-child{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.contact-sep{display:none}}@media (width>=768px) and (width<=1023px){.app{max-width:960px}.tabbar{width:min(960px,100%)}.container{width:min(900px,100% - 36px)}.forum-list{max-width:820px;margin-inline:auto}}@media (width>=1024px){.app-header-inner{max-width:1060px;margin-inline:auto}.home-hero{width:calc(100% - 32px);max-width:1040px;margin-inline:auto}.map-section{width:calc(100% - 20px);max-width:1070px;margin-inline:auto}.forum-list{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;display:grid}.forum-list>.load-more,.forum-list>.empty-state,.forum-list>.list-loading{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
