/* ============================================
   Service Center v2.1 — 共享样式表
   统一所有页面的基础样式、动画、组件
   ============================================ */

/* ---- CSS Reset ---- */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0;width:100%}
body{background:#f0f2f7;font-family:"Microsoft YaHei","PingFang SC",-apple-system,sans-serif;min-height:100vh;overflow-x:hidden;color:#1e293b;-webkit-font-smoothing:antialiased}
input,textarea,button,select{font-family:inherit;font-size:inherit}
a{color:inherit;text-decoration:none}

/* ---- Animations ---- */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeUp28{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideIn{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}
@keyframes scaleIn{from{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}60%{transform:translateX(6px)}}
@keyframes pop{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}

/* ---- SVG Icons ---- */
.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon-sm{width:16px;height:16px}

/* ---- Scroll ---- */
.scroll-y{overflow-y:auto;-webkit-overflow-scrolling:touch}

/* ---- Toast ---- */
.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) translateY(-14px);background:rgba(30,41,59,.88);color:#fff;padding:12px 24px;border-radius:16px;font-size:13px;font-weight:500;opacity:0;transition:all .35s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:9999;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.toast.show{opacity:1;transform:translate(-50%,-50%) translateY(0)}

/* ---- Overlay ---- */
.overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:900;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);visibility:hidden;opacity:0;transition:all .3s}
.overlay.show{visibility:visible;opacity:1}

/* ---- Bottom Sheet ---- */
.sheet{position:fixed;bottom:0;left:0;right:0;background:#fff;border-radius:24px 24px 0 0;padding:28px 24px 32px;z-index:910;transform:translateY(100%);transition:transform .4s cubic-bezier(.4,0,.2,1);box-shadow:0 -4px 24px rgba(0,0,0,.08)}
.sheet.show{transform:translateY(0)}
.sheet h3{font-size:17px;color:#1e293b;margin-bottom:12px;text-align:center}
.sheet p{font-size:13px;color:#64748b;line-height:1.8;margin-bottom:16px;text-align:center}

/* ---- Agree Button ---- */
.agree-btn{display:block;width:100%;padding:14px;background:linear-gradient(135deg,#4d8df7,#6eaefd);color:#fff;border:none;border-radius:16px;font-size:15px;font-weight:600;cursor:pointer;letter-spacing:.5px;box-shadow:0 4px 14px rgba(59,130,246,.15);transition:all .2s}
.agree-btn:active{transform:scale(.97)}

/* ---- Content ---- */
.content{padding:14px 18px 24px}

/* ---- Partition Group (shared by tutorial + warehouse) ---- */
.part-group{background:#fff;border-radius:18px;margin-bottom:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.04);transition:box-shadow .3s}
.part-group:hover{box-shadow:0 2px 12px rgba(0,0,0,.06)}

.part-header{display:flex;align-items:center;padding:16px 18px;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;min-height:64px}
.part-header .ph-icon-w{width:44px;height:44px;border-radius:12px;overflow:hidden;flex-shrink:0;background:#f0f4f8;display:flex;align-items:center;justify-content:center;margin-right:12px}
.part-header .ph-icon-w img{width:100%;height:100%;object-fit:cover}
.part-header .ph-svg{width:22px;height:22px;fill:none;stroke:#4d8df7;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.part-header .ph-info{flex:1;min-width:0}
.part-header .ph-name{font-size:15px;font-weight:600;color:#1e293b;letter-spacing:.3px}
.part-header .ph-sub{font-size:12px;color:#93b4e8;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.part-header .ph-right{display:flex;align-items:center;gap:10px;flex-shrink:0}
.part-header .ph-count{font-size:12px;color:#94a3b8;background:#f1f5f9;padding:3px 10px;border-radius:10px}
.part-header .ph-arrow{transition:transform .35s cubic-bezier(.4,0,.2,1);color:#94a3b8}
.part-header .ph-arrow svg{display:block;width:18px;height:18px}
.part-group.open .ph-arrow{transform:rotate(180deg)}

.branch-wrap{overflow:hidden;transition:height .4s cubic-bezier(.4,0,.2,1);height:0}
.branch-wrap .inner{padding:8px 18px 16px;display:flex;flex-direction:column;gap:8px}

.branch-item{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#f8fafe;border-radius:12px;min-height:48px;transition:background .2s}
.branch-item:active{background:#eff6ff}
.branch-item .bi-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.branch-item .bi-dot.has{background:#4d8df7}
.branch-item .bi-dot.no{background:#e2e8f0}
.branch-item .bi-info{flex:1;min-width:0}
.branch-item .bi-name{font-size:14px;color:#1e293b;font-weight:500}
.branch-item .bi-link{font-size:11px;color:#93b4e8;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.branch-item .bi-nolink{font-size:11px;color:#cbd5e1;margin-top:2px}
.bi-btn{padding:8px 18px;border-radius:20px;font-size:12px;font-weight:600;border:none;cursor:pointer;transition:all .2s;flex-shrink:0}
.bi-btn.get,.bi-btn.view{background:linear-gradient(135deg,#4d8df7,#6eaefd);color:#fff;box-shadow:0 2px 8px rgba(59,130,246,.12)}
.bi-btn.get:active,.bi-btn.view:active{transform:scale(.95)}
.bi-btn.nope{background:#f1f5f9;color:#94a3b8}

/* ---- Hero (tutorial) ---- */
.hero-wrap{text-align:center;padding:24px 18px 18px}
.hero{background:linear-gradient(135deg,#4d8df7,#74b9ff);border-radius:24px;padding:28px 20px 22px;color:#fff;position:relative;overflow:hidden;box-shadow:0 8px 28px rgba(59,130,246,.15)}
.hero h2{font-size:20px;font-weight:700;margin-bottom:6px}
.hero .sub{font-size:12px;opacity:.75;letter-spacing:1px}

/* ---- Empty State ---- */
.empty-state{text-align:center;padding:48px 20px;color:#94a3b8}
.em-text{font-size:14px;margin-top:8px}

/* ---- Under Development ---- */
.card-dev{background:#fff;border-radius:18px;padding:32px 24px;text-align:center;margin:40px 18px;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.card-dev .icon{margin-bottom:12px}
.card-dev h2{font-size:18px;color:#1e293b;margin-bottom:6px}
.card-dev p{font-size:13px;color:#94a3b8}
