*,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;padding:0;width:100%}body{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;color:#222;background:#f6f8f9;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.logo[data-v-bc29ed2b]{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo[data-v-bc29ed2b]:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.vue[data-v-bc29ed2b]:hover{filter:drop-shadow(0 0 2em #42b883aa)}.content{width:100%;min-height:100vh;min-height:100dvh;background:radial-gradient(circle at 50% 0%,#eaf7ef,#f6f8f9 55%);display:flex;align-items:center;justify-content:center}.page{width:min(560px,92vw);padding:32px 0 calc(32px + env(safe-area-inset-bottom));box-sizing:border-box;display:flex;flex-direction:column;align-items:center;text-align:center}.dots{display:flex;gap:12px;margin-bottom:14px}.dot{width:8px;height:8px;border-radius:50%}.dot-green{background:#2ecc71}.dot-red{background:#e74c3c}.dot-yellow{background:#f1c40f}.dot-blue{background:#3498db}.title{font-size:clamp(19px,2.6vw + 12px,24px);font-weight:700;letter-spacing:1px;color:#111;margin:0 0 6px}.subtitle{font-size:clamp(13px,1.2vw + 9px,15px);color:#98a0a8;margin:0}.hero{width:clamp(160px,40vw,240px);margin:clamp(20px,4vh,36px) 0 clamp(24px,4vh,36px);animation:fadeUp .5s ease-out both,breathe 4s .5s ease-in-out infinite}.hero-route{aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#eaf2ff,#d7e6fb 70%);display:flex;align-items:center;justify-content:center;box-shadow:0 16px 40px #3b82f62e}.hero-route svg{width:55%;height:55%}.card{width:100%;background:#ffffffd1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:16px;box-shadow:0 1px 2px #0000000a,0 12px 32px #2fb45d14;padding:clamp(16px,2.6vh,22px) clamp(18px,4vw,26px);margin-bottom:clamp(14px,2.6vh,20px);box-sizing:border-box;text-align:left}.card-status{animation:fadeUp .45s .15s ease-out both}.card-progress{animation:fadeUp .45s .3s ease-out both}.card-row{display:flex;align-items:center;gap:12px}.icon-box{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon-blue{background:#eaf2ff}.icon-green{background:#e8f8ef}.main-text{flex:1;font-size:clamp(14px,1.4vw + 10px,16px);font-weight:600;color:#222}.spinner{width:18px;height:18px;border:2px solid #e5e5e5;border-top-color:#2fb45d;border-radius:50%;animation:spin 1s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.p-info{flex:1;display:flex;flex-direction:column;gap:2px}.p-title{font-size:clamp(14px,1.4vw + 10px,16px);font-weight:600;color:#222}.p-sub{font-size:clamp(11px,1vw + 8px,13px);color:#a6adb4}.pct{font-size:clamp(15px,1.6vw + 10px,18px);color:#2fb45d;font-weight:700}.track{height:10px;background:#e9edf0;border-radius:5px;margin-top:14px;overflow:hidden}.fill{position:relative;height:100%;background:linear-gradient(90deg,#34d17d,#2fb45d);border-radius:5px;overflow:hidden;transition:width .12s linear}.fill:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translate(-100%);animation:shine 2s linear infinite}@keyframes shine{to{transform:translate(100%)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.retry-btn{margin-top:6px;width:100%;height:48px;font-size:16px;font-weight:600;letter-spacing:2px;color:#fff;background:linear-gradient(90deg,#34d17d,#2fb45d);border:none;border-radius:12px;box-shadow:0 8px 20px #2fb45d47;cursor:pointer;animation:fadeUp .45s .45s ease-out both}@media (hover: hover){.retry-btn:hover{filter:brightness(1.05);transform:translateY(-1px)}}@media (min-width: 768px){.retry-btn{width:auto;min-width:220px;padding:0 32px}}@media (max-height: 560px){.hero{width:120px;margin:12px 0 16px}.page{padding-top:16px}.card{margin-bottom:10px}}@media (prefers-reduced-motion: reduce){.hero,.card,.retry-btn,.fill:after,.spinner{animation:none}}
