.toast-container[data-v-70b2eb83]{position:fixed;top:1rem;right:1rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;max-width:min(380px,calc(100vw - 2rem))}.toast[data-v-70b2eb83]{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:8px;font-size:.875rem;cursor:pointer;box-shadow:0 4px 12px #00000026;transition:all .25s ease}.toast-success[data-v-70b2eb83]{background:#dcfce7;color:#15803d;border:1px solid #86efac}.toast-error[data-v-70b2eb83]{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5}.toast-info[data-v-70b2eb83]{background:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.toast-warn[data-v-70b2eb83]{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.toast-icon[data-v-70b2eb83]{font-weight:700;font-size:1rem;flex-shrink:0}.toast-msg[data-v-70b2eb83]{flex:1;line-height:1.4}.toast-enter-from[data-v-70b2eb83],.toast-leave-to[data-v-70b2eb83]{opacity:0;transform:translate(100%)}@media(max-width:768px){.toast-container[data-v-70b2eb83]{left:.75rem;right:.75rem;max-width:none;top:calc(.75rem + env(safe-area-inset-top))}.toast-enter-from[data-v-70b2eb83],.toast-leave-to[data-v-70b2eb83]{transform:translateY(-100%)}}:root{--c-primary: #2563eb;--c-primary-dark: #1d4ed8;--c-primary-light: #dbeafe;--c-ok: #16a34a;--c-ok-bg: #dcfce7;--c-warn: #d97706;--c-warn-bg: #fef3c7;--c-danger: #dc2626;--c-danger-bg: #fee2e2;--c-bg: #f1f5f9;--c-card: #ffffff;--c-border: #e2e8f0;--c-text: #1e293b;--c-text2: #64748b;--c-text3: #94a3b8;--radius: 8px;--radius-lg: 14px;--shadow: 0 1px 3px rgba(0,0,0,.08);--shadow-lg: 0 18px 44px rgba(15,23,42,.16);--tabbar-h: 3.75rem}html{-webkit-text-size-adjust:100%}body.nav-open{overflow:hidden}a{color:var(--c-primary);text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border:none;border-radius:var(--radius);font:inherit;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,transform .08s;-webkit-tap-highlight-color:transparent}.btn:active:not(:disabled){transform:scale(.985)}.btn-primary{background:var(--c-primary);color:#fff}.btn-primary:hover{background:var(--c-primary-dark)}.btn-primary:disabled{background:#94a3b8;cursor:not-allowed}.btn-ghost{background:#fff;color:var(--c-text);border:1px solid var(--c-border)}.btn-ghost:hover{background:#f8fafc}.btn-danger{background:var(--c-danger);color:#fff}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}input,select,textarea{font:inherit;font-size:.875rem;padding:.5rem .75rem;width:100%;border:1px solid var(--c-border);border-radius:var(--radius);outline:none;transition:.15s;-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%2364748b' d='M1 1l5 5 5-5'/></svg>");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2rem}input:focus,select:focus,textarea:focus{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-light)}label{display:block;font-size:.8125rem;font-weight:500;color:var(--c-text2);margin-bottom:.375rem}.form-group{margin-bottom:1rem}.card{background:var(--c-card);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--c-border);font-size:.875rem}th{background:#f8fafc;font-weight:600;color:var(--c-text2);white-space:nowrap}tr:hover td{background:#f8fafc}td div{flex-wrap:wrap}td .btn{white-space:nowrap}.badge{display:inline-block;padding:.125rem .625rem;border-radius:99px;font-size:.75rem;font-weight:500}.badge-ok{background:var(--c-ok-bg);color:#15803d}.badge-warn{background:var(--c-warn-bg);color:#a16207}.badge-danger{background:var(--c-danger-bg);color:#b91c1c}.page-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem}.page-head h1{font-size:1.5rem;font-weight:700}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.stat{background:var(--c-card);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.stat .label{font-size:.8125rem;color:var(--c-text3);margin-bottom:.25rem}.stat .val{font-size:1.75rem;font-weight:700}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:#fff;border-radius:var(--radius);padding:1.5rem;width:90%;max-width:480px;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal h2{font-size:1.125rem;margin-bottom:1rem}.modal-foot{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.auth-wrap{position:relative;overflow:hidden;min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:calc(1.5rem + env(safe-area-inset-top)) 1rem calc(1.5rem + env(safe-area-inset-bottom));background:#0b1220}.auth-wrap:before,.auth-wrap:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.auth-wrap:before{width:46rem;height:46rem;top:-22rem;left:-12rem;background:radial-gradient(circle,#2563eb8c,#2563eb00 65%)}.auth-wrap:after{width:34rem;height:34rem;bottom:-17rem;right:-10rem;background:radial-gradient(circle,#0ea5e961,#0ea5e900 65%)}.auth-box{width:100%;max-width:420px;position:relative;z-index:1}.auth-card{background:#fff;border-radius:16px;padding:1.75rem 1.5rem 1.25rem;box-shadow:0 20px 50px #02061759}.auth-brand{text-align:center;margin-bottom:1.5rem;color:#fff}.auth-mark{width:3rem;height:3rem;margin:0 auto .75rem;border-radius:.875rem;display:flex;align-items:center;justify-content:center;font-size:1.5rem;background:linear-gradient(135deg,#3b82f6,#0ea5e9);box-shadow:0 10px 24px #2563eb73}.auth-brand h1{font-size:1.375rem;letter-spacing:-.01em}.auth-brand p{color:#fff9;font-size:.8125rem;margin-top:.3rem}.auth-back{display:block;text-align:center;margin-top:1.25rem;font-size:.8125rem;color:#ffffff8c}.auth-back:hover{color:#fff}.app-layout{display:flex;min-height:100vh;min-height:100svh}.sidebar{width:220px;background:#0f172a;color:#fff;padding:1.5rem 0;flex-shrink:0;display:flex;flex-direction:column}.sidebar .logo{font-weight:700;padding:0 1.25rem;margin-bottom:2rem;font-size:1rem}.sidebar nav a{display:flex;align-items:center;gap:.625rem;padding:.5rem 1.25rem;color:#94a3b8;font-size:.875rem;text-decoration:none;transition:.15s}.sidebar nav a:hover{color:#fff;background:#ffffff0d;text-decoration:none}.sidebar nav a.active{color:#fff;background:#ffffff1a;border-right:3px solid var(--c-primary)}.sidebar .foot{margin-top:auto;padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.1)}.main{flex:1;padding:2rem;overflow-y:auto}.empty{text-align:center;padding:3rem;color:var(--c-text3)}@media(max-width:768px){.app-layout{flex-direction:column}.sidebar{display:none}.main{overflow:visible;padding:1rem 1rem calc(var(--tabbar-h) + 1rem + env(safe-area-inset-bottom))}.form-row{grid-template-columns:1fr}.card{padding:1rem;border-radius:var(--radius-lg)}th,td{padding:.625rem .75rem}input,select,textarea{font-size:16px}.btn{min-height:44px}.btn-sm{min-height:38px;padding:.45rem .7rem}.page-head{margin-bottom:1rem}.page-head h1{font-size:1.25rem}.page-head>div{width:100%}.page-head .btn{flex:1}.stat{padding:1rem;border-radius:var(--radius-lg)}.stat .val{font-size:1.5rem}.empty{padding:2rem 1rem}.card .table-wrap th:first-child,.card .table-wrap td:first-child{position:sticky;left:0;background:var(--c-card)}.card .table-wrap th:first-child,.card .table-wrap tr:hover td:first-child{background:#f8fafc}.modal-bg{align-items:flex-end;padding:0}.modal{width:100%;max-width:none;max-height:92svh;border-radius:18px 18px 0 0;padding:1.25rem 1rem calc(1.25rem + env(safe-area-inset-bottom));box-shadow:0 -12px 40px #0f172a38;animation:sheet-up .22s cubic-bezier(.2,.8,.3,1)}.modal-foot{position:sticky;bottom:0;background:#fff;padding-top:.75rem}.modal-foot .btn{flex:1}.auth-wrap{align-items:flex-start}.auth-box{padding-top:max(1rem,4vh)}}@keyframes sheet-up{0%{transform:translateY(14%);opacity:.6}to{transform:none;opacity:1}}.fade-enter-active,.fade-leave-active{transition:opacity .18s}.fade-enter-from,.fade-leave-to{opacity:0}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
