:root{--posh: #d7324e;--posh-light: #fce8ec;--ink: #1a1a1a;--muted: #7a7a7a;--bg: #f2f2f7;--surface: #ffffff;--card: #ffffff;--border: rgba(0,0,0,.08);--green: #34c759;--green-bg: #e9faf0;--orange: #ff9500;--orange-bg: #fff4e0;--red: #ff3b30;--red-bg: #ffeceb;--blue: #007aff;--blue-bg: #e5f0ff;--safe-top: env(safe-area-inset-top);--safe-bottom: env(safe-area-inset-bottom);--radius: 14px;--shadow: 0 1px 4px rgba(0,0,0,.08), 0 4px 16px rgba(0,0,0,.04)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg);color:var(--ink);font:16px/1.45 -apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100%}.topbar{position:sticky;top:0;padding:calc(var(--safe-top) + 14px) 20px 14px;background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:10;display:flex;align-items:center;justify-content:space-between}.topbar h1{font-size:20px;font-weight:700;color:var(--posh);letter-spacing:-.3px}.topbar-status{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.status-dot.green{background:var(--green)}.status-dot.orange{background:var(--orange)}.status-dot.red{background:var(--red)}main{flex:1;padding:20px 16px calc(72px + var(--safe-bottom));display:flex;flex-direction:column;gap:16px}.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;padding-bottom:var(--safe-bottom);background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border);z-index:10}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 0 12px;color:var(--muted);text-decoration:none;font-size:11px;font-weight:500;transition:color .15s}.tabbar a.active{color:var(--posh)}.tab-icon{font-size:22px;line-height:1}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-header{padding:16px 16px 0}.card-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:12px}.card-body{padding:16px}button.primary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:54px;border:0;border-radius:12px;background:var(--posh);color:#fff;font-size:17px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .15s,transform .1s}button.primary:active{transform:scale(.97);opacity:.9}button.primary:disabled{opacity:.45;pointer-events:none}button.secondary{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:44px;border:1.5px solid var(--posh);border-radius:10px;background:transparent;color:var(--posh);font-size:15px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s}button.secondary:active{background:var(--posh-light)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:13px;font-weight:600}.badge.green{background:var(--green-bg);color:#1a7a35}.badge.orange{background:var(--orange-bg);color:#8a5200}.badge.red{background:var(--red-bg);color:#b0120a}.badge.blue{background:var(--blue-bg);color:#05c}.badge.muted{background:var(--bg);color:var(--muted)}.item-list{list-style:none;display:flex;flex-direction:column}.item-list li{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}.item-list li:last-child{border-bottom:0}.item-check{flex-shrink:0;width:24px;height:24px;border-radius:50%;border:2px solid #ccc;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s}.item-check.checked{border-color:var(--posh);background:var(--posh)}.item-check.checked:after{content:"";width:12px;height:6px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:translateY(-2px) rotate(-45deg)}.item-text{flex:1;min-width:0}.item-title{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-meta{font-size:13px;color:var(--muted);margin-top:2px}.timeline{list-style:none;display:flex;flex-direction:column;gap:10px;padding:0}.timeline-item{background:var(--card);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px}.timeline-info{flex:1;min-width:0}.timeline-name{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-time{font-size:14px;font-weight:500;margin-bottom:4px}.empty{text-align:center;padding:40px 16px;color:var(--muted)}.empty-icon{font-size:48px;margin-bottom:12px}.empty-text{font-size:15px}.feedback{padding:12px 16px;border-radius:10px;font-size:14px;font-weight:500}.feedback.success{background:var(--green-bg);color:#1a7a35}.feedback.error{background:var(--red-bg);color:#b0120a}.feedback.info{background:var(--blue-bg);color:#05c}.spinner{display:inline-block;width:20px;height:20px;border:2.5px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.spinner.dark{border-color:#0000001f;border-top-color:var(--posh)}@keyframes spin{to{transform:rotate(360deg)}}.page-loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;color:var(--muted);font-size:14px}.muted{color:var(--muted);font-size:14px}.row{display:flex;align-items:center;justify-content:space-between}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:24px}.login-card{width:100%;max-width:360px;text-align:center}.login-logo{font-size:36px;font-weight:800;color:var(--posh);letter-spacing:-.5px;margin-bottom:4px}.login-sub{color:var(--muted);margin:0 0 40px;font-size:15px}.pin-input{display:block;width:100%;padding:16px;font-size:20px;text-align:center;letter-spacing:6px;border:1.5px solid #ddd;border-radius:14px;background:var(--surface);color:var(--ink);outline:none;margin-bottom:14px;-webkit-appearance:none;transition:border-color .15s}.pin-input:focus{border-color:var(--posh)}.pin-error{color:var(--posh);font-size:14px;font-weight:500;margin:-6px 0 12px}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-10px)}40%{transform:translate(10px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}.shake{animation:shake .45s ease}
