@keyframes breathe{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.015);opacity:.96}}@keyframes float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{box-shadow:var(--shadow-md),0 0 #8db3c44d}50%{box-shadow:var(--shadow-lg),0 0 0 7px #8db3c400}}@keyframes spring-select{0%{transform:scale(1)}42%{transform:scale(1.055)}72%{transform:scale(.985)}to{transform:scale(1.025)}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@keyframes route-bloom{0%{opacity:0;transform:translateY(10px) scale(.992)}to{opacity:1;transform:translateY(0) scale(1)}}.glass{background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur)) saturate(1.12);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.12)}.card-shine{position:relative;overflow:hidden}.card-shine:before{content:"";position:absolute;top:0;right:0;left:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.54),transparent);pointer-events:none}.card-3d{transform:translateZ(0);transition:transform var(--duration-normal) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out)}.animate-breathe{animation:breathe var(--duration-breathe) var(--ease-breathe) infinite}.animate-float{animation:float-soft 3.4s var(--ease-breathe) infinite}.animate-pulse-glow{animation:pulse-glow 2.2s var(--ease-breathe) infinite}.reveal-stack{display:block}.reveal-item{opacity:0;transform:translateY(16px)}.reveal-item.is-visible{animation:fadeInUp .52s var(--ease-out) both}@media (hover: hover){.card-3d:hover{transform:perspective(800px) rotateX(.8deg) rotateY(-.45deg) translateY(-2px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}:root{color:#3d3d3d;background:#f4ecd8;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--color-tianqing: #8db3c4;--color-zheshi: #b5836a;--color-juanbai: #f4ecd8;--color-yuebai: #f5f0eb;--color-mohui: #3d3d3d;--color-qian-mohui: #8c8c8c;--color-ouhe: #e4c6d0;--color-qingbi: #7bae8e;--color-xiangse: #c9a96e;--color-primary: var(--color-tianqing);--color-primary-2: #a7c5cf;--color-accent: var(--color-zheshi);--color-bg: var(--color-juanbai);--color-card: var(--color-yuebai);--color-text: var(--color-mohui);--color-muted: var(--color-qian-mohui);--color-border: rgba(141, 179, 196, .42);--color-success: var(--color-qingbi);--color-warning: var(--color-xiangse);--color-danger: #b8645c;--shadow-soft: 0 8px 24px rgba(61, 61, 61, .07);--shadow-ink: 0 1px 0 rgba(255, 255, 255, .55) inset, 0 10px 22px rgba(97, 82, 62, .08);--shadow-sm: 0 1px 2px rgba(61, 61, 61, .06), 0 2px 8px rgba(61, 61, 61, .03);--shadow-md: 0 1px 2px rgba(61, 61, 61, .06), 0 4px 12px rgba(61, 61, 61, .04), 0 12px 32px rgba(61, 61, 61, .025);--shadow-lg: 0 2px 4px rgba(61, 61, 61, .08), 0 8px 24px rgba(61, 61, 61, .06), 0 20px 48px rgba(61, 61, 61, .035);--shadow-inner: inset 0 1px 3px rgba(61, 61, 61, .1);--radius-card: 12px;--radius-control: 8px;--radius-button: 24px;--spacing-base: 8px;--ease-breathe: cubic-bezier(.4, 0, .6, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--duration-fast: .15s;--duration-normal: .3s;--duration-slow: .5s;--duration-breathe: 2.5s;--glass-bg: rgba(245, 240, 235, .76);--glass-blur: 16px;--glass-border: rgba(244, 236, 216, .56);--adm-color-primary: var(--color-primary);--adm-color-success: var(--color-success);--adm-color-warning: var(--color-warning);--adm-color-danger: var(--color-danger);--adm-color-text: var(--color-text);--adm-font-size-main: 15px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:-1;opacity:.32;background:radial-gradient(circle at 15% 10%,rgba(181,131,106,.08),transparent 24%),linear-gradient(135deg,rgba(141,179,196,.08) 0 1px,transparent 1px 14px),var(--color-juanbai)}button,input,textarea{font:inherit}.page-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(#f4ecd8eb,#f4ecd8f5),url(/song-walker-reference.jpg) center top / 720px auto no-repeat,var(--color-bg);animation:page-in .3s ease both}.top-bar{position:sticky;top:0;z-index:10;padding:calc(env(safe-area-inset-top) + 14px) 18px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f5f0ebe6;border-bottom:1px solid rgba(141,179,196,.36);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.top-bar__main{min-width:0}.top-bar__title{margin:0;color:var(--color-mohui);font-family:STSong,SimSun,Songti SC,serif;font-size:22px;line-height:30px;font-weight:700;letter-spacing:0}.top-bar__subtitle{margin:2px 0 0;color:var(--color-muted);font-size:13px;line-height:20px}.top-bar__action{flex:none}.top-icon-button,.icon-button{width:38px;height:38px;display:inline-grid;place-items:center;border:1px solid rgba(141,179,196,.38);border-radius:999px;color:var(--color-mohui);background:#f5f0ebeb;box-shadow:var(--shadow-soft);transition:transform .16s ease,background .16s ease,border-color .16s ease}.top-icon-button:active,.icon-button:active,.adm-button:active,.owner-action:active,.duration-toggle__item:active{transform:scale(.97)}.top-icon-button--logout svg{transform:rotate(180deg)}.page-content{width:100%;max-width:760px;margin:0 auto;padding:16px 16px 96px;flex:1}.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:20;border-top:1px solid rgba(141,179,196,.36);background:#f5f0ebf0;padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.bottom-nav .adm-tab-bar-item{color:var(--color-qian-mohui)}.bottom-nav .adm-tab-bar-item-active{color:var(--color-tianqing)}.summary-card{margin-bottom:14px;border-radius:var(--radius-card);background:#f5f0ebf5;border:1px solid rgba(141,179,196,.3);box-shadow:var(--shadow-ink)}.summary-card .adm-card,.summary-card .adm-card-body{border-radius:var(--radius-card)}.summary-card .adm-card-header-title{color:var(--color-mohui);font-weight:700}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric,.owner-action,.friendly-empty{border-radius:var(--radius-card);background:#f5f0ebf2;border:1px solid rgba(141,179,196,.3);box-shadow:var(--shadow-ink)}.metric{min-height:78px;padding:14px}.metric__label{margin:0 0 8px;color:var(--color-muted);font-size:13px}.metric__value{margin:0;color:var(--color-text);font-size:22px;font-weight:700}.map-status{margin-top:12px;padding:12px;border-radius:8px;color:#61706f;background:#8db3c424;font-size:13px;line-height:20px}.auth-page,.role-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:30px 18px;background:linear-gradient(#f4ecd8e0,#f4ecd8f0),url(/song-login-reference.jpg) center bottom / cover no-repeat,var(--color-juanbai)}.auth-panel,.role-panel{width:100%;max-width:420px}.song-dog-mark{width:154px;height:126px;margin:0 auto 6px;overflow:hidden;display:grid;place-items:center;border-radius:999px;opacity:.92}.song-dog-mark--small{width:128px;height:104px}.song-dog-mark img{width:250px;height:250px;object-fit:cover;object-position:50% 34%;filter:saturate(.7) contrast(1.02)}.auth-logo{width:72px;height:72px;margin:0 auto 16px;display:grid;place-items:center;border-radius:24px;color:#fff;background:var(--color-tianqing);font-size:34px;font-weight:800}.auth-title,.role-title{margin:0;color:var(--color-mohui);font-family:STSong,SimSun,Songti SC,serif;font-size:38px;line-height:46px;text-align:center;font-weight:800;letter-spacing:0}.auth-subtitle{margin:8px 0 24px;color:#62626b;text-align:center;font-size:18px;line-height:26px}.auth-form{overflow:hidden;margin-bottom:14px;border-radius:var(--radius-card);background:#f5f0ebd6;border:1px solid rgba(141,179,196,.48);box-shadow:var(--shadow-ink)}.auth-form .adm-list{--border-inner: 1px solid rgba(141, 179, 196, .22);--border-top: 0;--border-bottom: 0;background:transparent}.auth-form .adm-list-item{background:transparent}.auth-form .adm-list-item-content-prefix{color:var(--color-mohui);font-weight:700}.auth-form .adm-input{--placeholder-color: #97928a;color:var(--color-mohui)}.auth-form .adm-list-item:focus-within{background:#fffdf861}.auth-form--compact{margin-bottom:12px}.phone-login{display:grid;gap:14px;margin-bottom:12px}.phone-field{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;min-height:52px;overflow:hidden;border:1px solid rgba(141,179,196,.5);border-radius:14px;background:#f5f0ebe0;box-shadow:var(--shadow-sm);transition:transform var(--duration-normal) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out)}.phone-field:focus-within{transform:translateY(-1px);border-color:var(--color-tianqing);box-shadow:var(--shadow-sm),0 0 0 3px #8db3c429}.phone-field__prefix{display:grid;place-items:center;height:100%;color:var(--color-mohui);font-weight:700;border-right:1px solid rgba(141,179,196,.26)}.phone-field input{width:100%;height:52px;padding:0 14px;border:0;outline:0;color:var(--color-mohui);background:transparent;font-size:18px}.otp-grid{display:grid;grid-template-columns:repeat(6,minmax(0,48px));justify-content:center;gap:8px}.otp-grid--shake{animation:shake .3s var(--ease-out)}.otp-cell{width:48px;height:48px;border:1px solid rgba(140,140,140,.72);border-radius:8px;outline:0;background:var(--color-yuebai);color:var(--color-mohui);text-align:center;font-size:24px;font-weight:700;box-shadow:var(--shadow-sm);transition:transform var(--duration-normal) var(--ease-spring),border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out)}.otp-cell:focus{border-color:var(--color-tianqing);box-shadow:var(--shadow-sm),0 0 0 3px #8db3c429;transform:translateY(-1px) scale(1.025)}.otp-cell:not(:placeholder-shown){border-color:#8db3c4bd}.alternate-login{margin-top:18px;color:var(--color-muted);text-align:center;font-size:14px}.alternate-login__toggle{position:relative;width:100%;border:0;background:transparent;color:var(--color-muted);cursor:pointer}.alternate-login__toggle:before,.alternate-login__toggle:after{content:"";position:absolute;top:50%;width:28%;height:1px;background:#8c8c8c47}.alternate-login__toggle:before{left:0}.alternate-login__toggle:after{right:0}.email-login-panel{margin-top:14px;padding:14px;border:1px solid rgba(141,179,196,.28);border-radius:var(--radius-card);background:#f5f0eb85;box-shadow:var(--shadow-sm);animation:fadeInUp .3s var(--ease-out) both}.email-login-panel__switch{margin-top:12px;border:0;background:transparent;color:var(--color-muted);font-size:14px;cursor:pointer}.password-field{display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:center;gap:8px}.code-row{display:grid;grid-template-columns:minmax(0,1fr) 104px;align-items:center;gap:10px}.agreement{margin:6px 0 20px;color:#59586a;font-size:13px;line-height:20px}.link-text,.auth-switch a{color:var(--color-zheshi)}.pilot-note{margin-top:18px;color:#7b8798;text-align:center;font-size:12px;line-height:18px}.auth-switch{margin:18px 0 0;color:var(--color-mohui);text-align:center;font-size:16px;line-height:24px}.auth-switch a{font-weight:700;text-decoration:underline;text-underline-offset:4px}.role-page{background:linear-gradient(#f4ecd8eb,#f4ecd8f5),url(/song-walker-reference.jpg) center center / cover no-repeat,var(--color-juanbai)}.role-kicker{width:fit-content;margin:0 auto 10px;padding:5px 14px;border:1px solid rgba(181,131,106,.4);border-radius:999px;color:var(--color-zheshi);background:#f5f0ebc7;font-family:STSong,SimSun,Songti SC,serif}.role-title{margin-bottom:22px;font-size:28px;line-height:38px}.role-list{display:grid;gap:14px}.role-card{position:relative;cursor:pointer;border-radius:var(--radius-card);border:1px solid rgba(141,179,196,.42);background:#f5f0ebeb;box-shadow:var(--shadow-ink);transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.role-card:active{transform:scale(.98)}.role-card:hover,.role-card--selected{border-color:var(--color-zheshi);box-shadow:0 10px 26px #b5836a29}.role-card--loading{pointer-events:none;opacity:.9}.role-card__badge{position:absolute;right:14px;top:14px;color:var(--color-zheshi);font-size:12px;font-weight:700}.role-card .adm-card-body{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:14px}.role-card__icon{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;color:var(--color-tianqing);background:#8db3c426;font-size:24px}.role-card__title{margin:0;color:var(--color-text);font-size:18px;line-height:26px;font-weight:700}.role-card__desc,.role-tip{margin:4px 0 0;color:var(--color-muted);font-size:13px;line-height:20px}.role-tip{margin-top:18px;text-align:center}.owner-location{display:inline-flex;align-items:center;gap:6px;margin-bottom:12px;padding:6px 11px;border:1px solid rgba(141,179,196,.32);border-radius:999px;color:#616264;background:#f5f0ebbd;font-size:14px}.owner-hero{position:relative;overflow:hidden;margin-bottom:14px;padding:20px;border:1px solid rgba(181,131,106,.28);border-radius:var(--radius-card);color:var(--color-mohui);background:linear-gradient(135deg,#f5f0ebeb,#f4ecd8db),url(/song-walker-reference.jpg) right center / 300px auto no-repeat;box-shadow:var(--shadow-ink);animation:fade-up .36s ease both}.owner-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#f5f0ebf5,#f5f0ebd1 58%,#f5f0eb8f);pointer-events:none}.owner-hero>*{position:relative;z-index:1}.song-label{display:inline-flex;margin-bottom:9px;padding:4px 10px;border:1px solid rgba(181,131,106,.38);border-radius:999px;color:var(--color-zheshi);background:#f5f0ebd1;font-size:12px;font-weight:700}.owner-hero h2{max-width:310px;margin:0 0 8px;font-size:22px;line-height:31px;font-weight:800}.owner-hero p{max-width:320px;margin:0 0 16px;color:#67645f;line-height:22px}.owner-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px}.owner-action{min-height:104px;padding:12px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--color-text);animation:fade-up .36s ease both;transition:transform .16s ease,box-shadow .16s ease}.owner-action:nth-child(2){animation-delay:.1s}.owner-action:nth-child(3){animation-delay:.2s}.owner-action:nth-child(4){animation-delay:.3s}.owner-action__icon{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;color:var(--color-tianqing);background:#8db3c424;font-size:20px}.owner-action__label{font-weight:700;font-size:14px}.owner-action__desc,.muted-text,.notice-text{color:var(--color-muted);font-size:12px;line-height:18px}.is-empty-count{color:#b8b4aa}@media (min-width: 560px){.owner-action-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.plain-list{margin:0;padding-left:18px;color:#626264;line-height:24px}.section-stack{margin-top:14px}.danger-card{border:1px solid rgba(184,100,92,.48);background:#fff7f2c7}.owner-form{overflow:hidden;margin-bottom:14px;border-radius:var(--radius-card);background:var(--color-card);border:1px solid var(--color-border);box-shadow:var(--shadow-soft)}.upload-placeholder{min-height:92px;margin-bottom:14px;display:grid;place-items:center;border:1px dashed var(--color-tianqing);border-radius:var(--radius-card);color:var(--color-tianqing);background:#8db3c417}.native-input{width:100%;height:34px;border:0;outline:0;font:inherit;color:var(--color-text);background:transparent}.price-row,.card-row,.mock-map__info,.score-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.price-row{padding:8px 0;color:#626264}.price-row--total{border-top:1px solid var(--color-border);color:var(--color-text);font-size:16px}.mock-map{overflow:hidden;margin-bottom:14px;border:1px solid rgba(141,179,196,.42);border-radius:var(--radius-card);background:var(--color-card)}.mock-map--danger{border-color:#b8645c7a}.mock-map__canvas,.map-placeholder{position:relative;height:220px;background:linear-gradient(90deg,rgba(141,179,196,.1) 1px,transparent 1px),linear-gradient(0deg,rgba(141,179,196,.1) 1px,transparent 1px),#f5f0ebdb;background-size:24px 24px}.mock-map__radius{position:absolute;width:150px;height:150px;left:calc(50% - 75px);top:calc(50% - 75px);border-radius:999px;border:2px dashed rgba(141,179,196,.65);background:#8db3c41a}.mock-map__pin,.mock-map__dot{position:absolute;width:16px;height:16px;transform:translate(-50%,-50%);border-radius:999px;background:var(--color-tianqing);box-shadow:0 0 0 5px #8db3c429}.mock-map__dot{width:8px;height:8px;background:var(--color-qingbi);box-shadow:none}.mock-map__dot--current{width:18px;height:18px;background:var(--color-zheshi)}.mock-map__path{position:absolute;left:12px;bottom:12px;color:var(--color-tianqing);font-size:12px}.mock-map__info{padding:10px 12px;color:#626264;font-size:13px}.mock-map__points{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 12px 12px}.mock-map__points button{height:34px;border:1px solid rgba(141,179,196,.42);border-radius:8px;color:var(--color-tianqing);background:#f5f0ebe6}.media-strip{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}.media-thumb{width:104px;min-width:104px;height:92px;display:grid;place-items:end center;padding:8px;border-radius:var(--radius-control);color:#fff;background:linear-gradient(135deg,var(--color-tianqing),var(--color-zheshi));font-size:12px}.textarea-panel{margin-bottom:14px;padding:12px;border-radius:var(--radius-card);background:var(--color-card)}.score-row{min-height:42px}.score-stars{display:flex;gap:4px}.score-star{border:0;color:#c8d0dc;background:transparent;font-size:22px}.score-star--active{color:var(--color-zheshi)}.admin-login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px;background:var(--color-bg)}.admin-login__panel{width:100%;max-width:420px}.admin-login__panel h1{margin:0 0 18px;font-size:28px;text-align:center}.admin-shell{min-height:100vh;background:#f6f8fb;padding:16px}.admin-header{max-width:1180px;margin:0 auto 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-header h1{margin:0;font-size:24px}.admin-header p{margin:4px 0 0;color:#6f7c91}.admin-shell .adm-tabs{max-width:1180px;margin:0 auto}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px 0}.admin-stat-card p{margin:0 0 8px;color:#6f7c91}.admin-stat-card strong{font-size:24px}.admin-panel{display:grid;gap:12px;padding:14px 0}.admin-actions{margin-top:12px}.admin-dialog{color:#506176;text-align:left;line-height:22px}.admin-list-title{margin-bottom:8px;font-weight:700}.error-boundary{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--paper)}.error-boundary__panel{width:min(100%,360px);padding:28px 24px;border:1px solid var(--line);border-radius:12px;background:var(--moon-white);color:var(--ink);text-align:center;box-shadow:0 12px 30px #3d3d3d14}.error-boundary__panel h1{margin:0 0 8px;font-family:var(--song-serif);font-size:24px;line-height:32px}.error-boundary__panel p{margin:0 0 20px;color:var(--light-ink);line-height:22px}.page-shell{animation:route-bloom .42s var(--ease-out) both}.top-bar,.bottom-nav{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--shadow-sm);backdrop-filter:blur(var(--glass-blur)) saturate(1.12);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.12)}.top-bar{transition:transform var(--duration-normal) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out)}.bottom-nav .adm-tab-bar-item{transition:transform var(--duration-normal) var(--ease-spring),color var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.bottom-nav .adm-tab-bar-item-active{transform:translateY(-2px) scale(1.08)}.auth-page{background:radial-gradient(circle at 20% 18%,rgba(141,179,196,.2),transparent 28%),radial-gradient(circle at 80% 72%,rgba(228,198,208,.2),transparent 28%),var(--color-juanbai);animation:breathe 6s var(--ease-breathe) infinite}.auth-panel,.admin-login__panel,.summary-card,.admin-stat-card,.owner-card,.walker-order-card,.friendly-empty,.mock-map{position:relative;border:1px solid rgba(244,236,216,.68);box-shadow:var(--shadow-md);transform:translateZ(0);transition:transform var(--duration-normal) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out)}.auth-panel:before,.admin-login__panel:before,.summary-card:before,.admin-stat-card:before,.owner-card:before,.walker-order-card:before,.friendly-empty:before,.mock-map:before{content:"";position:absolute;top:0;right:0;left:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.56),transparent);pointer-events:none}.summary-card,.admin-stat-card,.owner-card,.walker-order-card{animation:breathe 4.8s var(--ease-breathe) infinite;animation-delay:var(--stagger-delay, 0ms)}.summary-card:nth-of-type(2n),.owner-card:nth-of-type(2n),.walker-order-card:nth-of-type(2n){animation-delay:.42s}.song-dog-mark,.auth-title,.friendly-empty__icon,.admin-stat-card strong{animation:breathe var(--duration-breathe) var(--ease-breathe) infinite}.friendly-empty__image,.mock-map__pin{animation:float-soft 3.2s var(--ease-breathe) infinite}.mock-map{overflow:hidden;border-color:#8db3c43d}.mock-map__canvas{box-shadow:var(--shadow-inner)}.adm-button{box-shadow:var(--shadow-sm);transition:transform var(--duration-normal) var(--ease-spring),box-shadow var(--duration-normal) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.adm-button-primary{background:linear-gradient(135deg,var(--color-zheshi),#c29a83);border-color:#b5836ab8;animation:pulse-glow 2.6s var(--ease-breathe) infinite}.adm-button:active{transform:translateY(1px) scale(.985);box-shadow:var(--shadow-inner)}.adm-selector-item,.duration-toggle__item,.owner-action,.score-star,.mock-map__points button{transition:transform var(--duration-normal) var(--ease-spring),box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.adm-selector-item-active,.duration-toggle__item--active,.score-star--active{animation:spring-select .36s var(--ease-spring) both}.owner-action{box-shadow:var(--shadow-sm)}.owner-action__icon{transition:transform var(--duration-normal) var(--ease-spring)}.order-step__dot{transition:transform var(--duration-normal) var(--ease-spring),box-shadow var(--duration-normal) var(--ease-out)}.order-step--current .order-step__dot{animation:pulse-glow 2.1s var(--ease-breathe) infinite;transform:scale(1.12)}.score-star--active{color:var(--color-xiangse);text-shadow:0 5px 14px rgba(201,169,110,.22)}@media (hover: hover){.summary-card:hover,.admin-stat-card:hover,.owner-card:hover,.walker-order-card:hover,.friendly-empty:hover,.mock-map:hover{transform:perspective(800px) rotateX(.8deg) rotateY(-.45deg) translateY(-2px);box-shadow:var(--shadow-lg)}.adm-button:hover,.owner-action:hover,.mock-map__points button:hover{transform:translateY(-2px) scale(1.015);box-shadow:var(--shadow-md)}.owner-action:hover .owner-action__icon{transform:translateY(-2px) rotate(2deg)}.top-bar:hover{box-shadow:var(--shadow-md)}input:focus,textarea:focus,.adm-input:focus-within,.password-field:focus-within,.native-input:focus{transform:translateY(-1px);box-shadow:var(--shadow-sm),0 0 0 3px #8db3c429}}.adm-button{--border-radius: var(--radius-button);transition:transform var(--duration-normal) var(--ease-spring),opacity var(--duration-fast) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out)}.adm-button-primary{--background-color: var(--color-zheshi);--border-color: rgba(181, 131, 106, .72);--text-color: #fffdf8;box-shadow:var(--shadow-md),0 8px 20px #b5836a33}.adm-button:not(.adm-button-primary){--border-color: rgba(141, 179, 196, .48);--text-color: var(--color-mohui)}.pulse-cta{animation:pulse-glow 2.4s var(--ease-breathe) infinite}.friendly-empty{min-height:220px;display:grid;place-items:center;justify-items:center;gap:10px;padding:28px 18px;text-align:center}.friendly-empty__icon{width:84px;height:84px;overflow:hidden;display:grid;place-items:center;border-radius:999px;background:#8db3c41f}.friendly-empty__image{width:160px;height:160px;object-fit:cover;object-position:50% 34%;filter:saturate(.75) contrast(1.04)}.friendly-empty h2,.empty-order-card h2{margin:0;color:var(--color-text);font-size:18px;line-height:26px;font-weight:700}.friendly-empty p,.empty-order-card p{max-width:280px;margin:0;color:var(--color-muted);font-size:14px;line-height:22px}.empty-order-card .adm-card-body{display:grid;justify-items:center;gap:10px;text-align:center}.song-empty-figure{width:132px;height:92px;overflow:hidden;border-radius:999px;opacity:.72}.song-empty-figure img{width:230px;height:180px;object-fit:cover;object-position:center 22%;filter:saturate(.72)}.skeleton-list{display:grid;gap:12px}.skeleton-list span{height:92px;border-radius:var(--radius-card);background:linear-gradient(90deg,#eee5d4,#fbfaf7 45%,#eee5d4);background-size:220% 100%;animation:shimmer 1.2s var(--ease-breathe) infinite}.risk-tag{border:0}.risk-tag--low{color:#166a46;background:#7bae8e2e}.risk-tag--mid{color:#8a620d;background:#c9a96e33}.risk-tag--high{color:#9b2424;background:#b8645c29}.default-address-tag{color:#875306;background:#c9a96e2e;font-weight:700}.swipe-card{touch-action:pan-y}.pet-select-preview{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px;border-radius:var(--radius-control);background:#8db3c41a}.pet-avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:999px;color:#fff;background:var(--color-tianqing);font-weight:700}.pet-select-preview strong{color:var(--color-text)}.pet-select-preview p{margin:2px 0 0;color:var(--color-muted);font-size:12px}.field-hint{margin:8px 0 0;color:var(--color-muted);font-size:12px;line-height:18px}.field-hint--error{padding:8px 10px;border-radius:10px;color:#9b2424;background:#b8645c1a}.duration-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.duration-toggle__item{min-height:72px;display:grid;gap:4px;padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:#f5f0ebe6;color:var(--color-text);text-align:left;transition:transform .16s ease,border-color .16s ease,background .16s ease}.duration-toggle__item span{color:var(--color-muted);font-size:12px}.duration-toggle__item--active{border-color:var(--color-tianqing);background:#8db3c429}.price-pop{display:inline-block;animation:price-pop .22s ease both}.walker-state-card{border-color:#8db3c46b}.walker-filter{margin:0 0 12px;padding:10px 12px;border:1px solid rgba(141,179,196,.36);border-radius:999px;color:var(--color-qian-mohui);background:#f5f0ebc2;font-size:13px;text-align:center}.walker-status{position:relative}.walker-status--online:before{content:"";width:10px;height:10px;position:absolute;left:-2px;top:50%;border-radius:999px;background:var(--color-qingbi);transform:translateY(-50%);box-shadow:0 0 #7bae8e59;animation:online-glow 1.8s var(--ease-breathe) infinite}.walker-income strong{color:var(--color-zheshi);font-size:22px}.order-card strong{color:var(--color-zheshi)}.order-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin-top:12px}.order-step{position:relative;min-width:0;display:grid;justify-items:center;gap:7px;color:#b3ada2;font-size:12px}.order-step:before{content:"";position:absolute;top:6px;left:-50%;right:50%;height:2px;background:#e3ded4}.order-step:first-child:before{display:none}.order-step--reached:before{background:var(--color-tianqing)}.order-step__dot{width:14px;height:14px;position:relative;z-index:1;border-radius:999px;background:#d8d2c7;transition:transform .2s ease,background .2s ease}.order-step--reached{color:var(--color-text)}.order-step--reached .order-step__dot{background:var(--color-tianqing)}.order-step--current .order-step__dot{transform:scale(1.18);box-shadow:0 0 0 6px #8db3c424}.order-steps--stopped .order-step__dot{background:#d8d2c7}.map-placeholder{min-height:220px;margin-bottom:14px;display:grid;place-items:center;border-radius:var(--radius-card);color:var(--color-muted)}.skeleton{display:block;border-radius:999px;background:linear-gradient(90deg,#f4ecd8cc,#fffcf4f2,#f4ecd8cc);background-size:220% 100%;animation:shimmer 1.35s linear infinite}.skeleton-avatar,.skeleton-image,.skeleton-card{border-radius:var(--radius-card)}.skeleton-card{min-height:96px;padding:16px;display:flex;gap:14px;border:1px solid rgba(61,61,61,.08);background:#f5f0ebd1}.skeleton-card__body{flex:1;display:grid;gap:10px;align-content:center}.retention-sheet,.walk-report-sheet{padding:20px;border-radius:24px 24px 0 0;background:var(--color-paper);color:var(--color-text)}.retention-tip,.prefill-note,.weather-advice{padding:12px 14px;border-radius:12px;border:1px solid rgba(141,179,196,.28);background:#f5f0ebbd;color:var(--color-text);line-height:1.55}.retention-bar,.report-switch-row,.badge-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.muted-text,.weather-advice span{color:var(--color-muted)}.walk-report-card{overflow:hidden}.walk-report-photos,.report-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}.walk-report-photos img,.report-photo-tile img,.walk-report-placeholder{width:100%;aspect-ratio:1;border-radius:12px;object-fit:cover;background:#8db3c41f}.walk-report-placeholder{display:grid;place-items:center;color:var(--color-muted)}.walk-report-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.walk-report-metrics div,.walker-achievement-metric{padding:12px;border-radius:12px;background:#fffcf4b8}.walk-report-metrics strong,.walker-achievement-metric strong{display:block;font-size:22px;color:var(--color-ochre)}.walk-report-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.walk-report-tags span,.walker-badge{padding:5px 9px;border-radius:999px;background:#8db3c429;color:var(--color-text);font-size:12px}.pet-list-toolbar{margin-bottom:14px}.pet-carousel{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(245px,82%);gap:12px;overflow-x:auto;padding:2px 4px 12px;scroll-snap-type:x mandatory;scrollbar-width:none}.pet-carousel::-webkit-scrollbar{display:none}.pet-wallet-card,.add-pet-dashed{min-height:220px;scroll-snap-align:start}.pet-wallet-card{border:1px solid rgba(61,61,61,.08);background:radial-gradient(circle at 92% 10%,rgba(141,179,196,.2),transparent 28%),#f5f0ebe0;transition:transform .18s ease,border-color .18s ease}.pet-wallet-card--active{border-color:#8db3c4b8;transform:translateY(-2px)}.pet-wallet-avatar{width:58px;height:58px;display:grid;place-items:center;border-radius:18px;background:#b5836a24;color:var(--color-ochre);font-size:26px;font-weight:700;margin-bottom:14px}.pet-wallet-meta{display:grid;gap:6px;margin-bottom:14px}.pet-wallet-meta span{color:var(--color-muted)}.add-pet-dashed{border:1px dashed rgba(141,179,196,.72);border-radius:var(--radius-card);background:#fffcf494;color:var(--color-tianqing);display:grid;place-items:center;align-content:center;gap:8px}.walker-achievement-card .adm-card-body{display:grid;gap:12px}.walker-achievement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.walker-achievement-metric{min-width:0;text-align:center}.walker-achievement-metric span{color:var(--color-ochre);font-weight:700}.walker-achievement-metric small{display:block;margin-top:4px;color:var(--color-muted);font-size:11px}.walker-badge--locked{opacity:.45;filter:grayscale(1)}.weather-advice{margin-top:10px;display:grid;gap:3px}.weather-advice--warm{border-color:#b5836a59}.weather-advice--danger{border-color:#ae4a3773;background:#ae4a3714}.report-photo-tile,.report-photo-add{border:0;padding:0;background:transparent}.report-photo-add{aspect-ratio:1;display:grid;place-items:center;align-content:center;gap:6px;border:1px dashed rgba(141,179,196,.7);border-radius:12px;color:var(--color-tianqing)}.report-textarea{margin:12px 0 16px}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-breathe{0%,to{box-shadow:0 0 #b5836a3d}50%{box-shadow:0 0 0 10px #b5836a00}}@keyframes shimmer{to{background-position:-220% 0}}@keyframes price-pop{0%{opacity:0;transform:translateY(4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes online-glow{50%{box-shadow:0 0 0 8px #7bae8e00}}.walker-activity-hint{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:8px;padding:6px 0;color:var(--color-mohui, #3d3d3d);font-size:13px;line-height:1.45;text-align:center}.walker-activity-hint--none{color:var(--color-qian-mohui, #8c8c8c);font-size:12px}.walker-activity-dot{width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:var(--color-qingbi, #7bae8e);animation:walker-pulse 2s cubic-bezier(.32,.72,0,1) infinite}.walker-activity-dot--few{background:var(--color-xiangse, #c9a96e)}@keyframes walker-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}.network-banner{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 16px;background:var(--color-juanbai, #f4ecd8);border-bottom:1px solid var(--color-zheshi, #b5836a);color:var(--color-zheshi, #b5836a);font-size:13px;line-height:1.4;text-align:center}.network-banner__retry{min-height:44px;padding:4px 12px;border:1px solid var(--color-zheshi, #b5836a);border-radius:8px;background:transparent;color:var(--color-zheshi, #b5836a);font-size:12px;white-space:nowrap;cursor:pointer}.update-prompt{position:sticky;top:0;z-index:99;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;background:var(--color-tianqing, #8db3c4);color:var(--color-yuebai, #f5f0eb);font-size:14px}.update-prompt__actions{display:flex;align-items:center;gap:8px}.update-prompt__refresh,.update-prompt__close{min-height:44px;border:0;border-radius:8px;cursor:pointer}.update-prompt__refresh{padding:4px 16px;background:var(--color-yuebai, #f5f0eb);color:var(--color-tianqing, #8db3c4);font-size:13px}.update-prompt__close{min-width:44px;background:transparent;color:var(--color-yuebai, #f5f0eb);font-size:16px}.pwa-install-content,.share-report-content{padding:24px 20px;text-align:center}.pwa-install-content h3,.share-report-content h3{margin:0 0 8px;color:var(--color-mohui, #3d3d3d);font-size:18px}.pwa-install-desc,.share-report-desc{margin:0 0 20px;color:var(--color-qian-mohui, #8c8c8c);font-size:14px;line-height:1.6}.share-report-desc{font-size:13px}.pwa-install-ios-steps{margin-bottom:16px;padding:16px;border-radius:12px;background:var(--color-yuebai, #f5f0eb);text-align:left}.pwa-install-ios-steps p{margin:0 0 8px;color:var(--color-mohui, #3d3d3d);font-size:14px;line-height:1.55}.pwa-install-ios-steps p:last-child{margin-bottom:0}.pwa-install-btn{width:100%;margin-bottom:12px;padding:12px;border:0;border-radius:8px;background:var(--color-zheshi, #b5836a);color:var(--color-juanbai, #f4ecd8);font-size:16px;cursor:pointer}.pwa-install-dismiss,.share-report-dismiss{padding:8px 16px;border:0;background:transparent;color:var(--color-qian-mohui, #8c8c8c);font-size:14px;cursor:pointer}.share-report-dismiss{margin-top:12px}.phone-ready-hint{margin-top:8px;color:var(--color-tianqing, #8db3c4);font-size:13px;line-height:1.4;text-align:center}@media (prefers-reduced-motion: reduce){.walker-activity-dot{animation:none}}@media (min-width: 820px){.admin-shell{padding:24px}.admin-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-panel{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.admin-panel>.adm-selector,.admin-panel>.adm-empty,.admin-panel>.adm-list{grid-column:1 / -1}}@media (max-width: 380px){.auth-title{font-size:34px;line-height:42px}.auth-subtitle{font-size:16px}.owner-hero h2{font-size:20px;line-height:28px}}
