.app-btn[data-v-d5a94ae2]{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);border:1px solid transparent;border-radius:var(--r-md);font-family:var(--font-sans);font-size:var(--fs-callout);font-weight:600;line-height:var(--lh-normal);cursor:pointer;transition:background-color .15s,color .15s,border-color .15s,transform .1s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.app-btn.is-md[data-v-d5a94ae2]{padding:var(--s-3) var(--s-4);min-height:40px}.app-btn.is-sm[data-v-d5a94ae2]{padding:var(--s-2) var(--s-3);min-height:32px;font-size:var(--fs-caption)}.app-btn[data-v-d5a94ae2]:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.app-btn[data-v-d5a94ae2]:active:not(:disabled){transform:scale(.98)}.app-btn.is-primary[data-v-d5a94ae2]{background:var(--brand);color:#fff}.app-btn.is-primary[data-v-d5a94ae2]:hover:not(:disabled){background:var(--brand-hover)}.app-btn.is-secondary[data-v-d5a94ae2]{background:var(--brand-soft);color:var(--brand)}.app-btn.is-secondary[data-v-d5a94ae2]:hover:not(:disabled){background:#c7dcfa}.app-btn.is-ghost[data-v-d5a94ae2]{background:transparent;color:var(--text);border-color:var(--line)}.app-btn.is-ghost[data-v-d5a94ae2]:hover:not(:disabled){background:var(--bg-soft)}.app-btn.is-danger[data-v-d5a94ae2]{background:var(--red);color:#fff}.app-btn.is-danger[data-v-d5a94ae2]:hover:not(:disabled){background:#b91c1c}.app-btn[data-v-d5a94ae2]:disabled{cursor:not-allowed;opacity:.5}.app-btn.is-loading .label[data-v-d5a94ae2]{opacity:.7}.spinner[data-v-d5a94ae2]{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:app-btn-spin-d5a94ae2 .7s linear infinite}@keyframes app-btn-spin-d5a94ae2{to{transform:rotate(360deg)}}.app-dialog[data-v-ced7b8cc]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--s-4);font-family:var(--font-sans)}.app-dialog__scrim[data-v-ced7b8cc]{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.app-dialog__panel[data-v-ced7b8cc]{position:relative;width:100%;max-width:420px;background:var(--bg);border-radius:var(--r-lg);box-shadow:var(--shadow-2);overflow:hidden}.app-dialog__header[data-v-ced7b8cc]{padding:var(--s-6) var(--s-6) 0}.app-dialog__title[data-v-ced7b8cc]{margin:0;font-size:var(--fs-subtitle);font-weight:600;color:var(--text);line-height:var(--lh-tight)}.app-dialog__body[data-v-ced7b8cc]{padding:var(--s-3) var(--s-6) var(--s-4)}.app-dialog__desc[data-v-ced7b8cc]{margin:0;font-size:var(--fs-body);color:var(--text-dim);line-height:var(--lh-relaxed);white-space:pre-wrap}.app-dialog__footer[data-v-ced7b8cc]{display:flex;justify-content:flex-end;gap:var(--s-2);padding:var(--s-3) var(--s-6) var(--s-6)}.fade-enter-active[data-v-ced7b8cc],.fade-leave-active[data-v-ced7b8cc]{transition:opacity .18s ease}.fade-enter-from[data-v-ced7b8cc],.fade-leave-to[data-v-ced7b8cc]{opacity:0}.fade-enter-active .app-dialog__panel[data-v-ced7b8cc],.fade-leave-active .app-dialog__panel[data-v-ced7b8cc]{transition:transform .2s cubic-bezier(.4,0,.2,1)}.fade-enter-from .app-dialog__panel[data-v-ced7b8cc]{transform:translateY(8px) scale(.98)}.fade-leave-to .app-dialog__panel[data-v-ced7b8cc]{transform:translateY(4px) scale(.99)}.app-input[data-v-16895abd]{display:flex;flex-direction:column;gap:var(--s-1);font-family:var(--font-sans)}.app-input__label[data-v-16895abd]{font-size:var(--fs-callout);font-weight:600;color:var(--text);line-height:var(--lh-tight)}.req[data-v-16895abd]{color:var(--red);margin-left:2px}.app-input__field[data-v-16895abd]{width:100%;padding:var(--s-3) var(--s-4);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);transition:border-color .15s,box-shadow .15s;-webkit-appearance:none}.app-input__field[data-v-16895abd]::placeholder{color:var(--text-muted)}.app-input__field[data-v-16895abd]:focus{outline:none;border-color:var(--brand);box-shadow:var(--shadow-focus)}.app-input.is-error .app-input__field[data-v-16895abd]{border-color:var(--red)}.app-input.is-error .app-input__field[data-v-16895abd]:focus{box-shadow:0 0 0 3px #dc26262e}.app-input.is-disabled .app-input__field[data-v-16895abd]{background:var(--bg-soft);cursor:not-allowed;opacity:.7}.app-input__hint[data-v-16895abd]{margin:0;font-size:var(--fs-caption);color:var(--text-muted)}.app-input__error[data-v-16895abd]{margin:0;font-size:var(--fs-caption);color:var(--red)}.app-toast-host[data-v-1f54b946]{position:fixed;top:var(--s-6);left:50%;transform:translate(-50%);z-index:1100;display:flex;flex-direction:column;gap:var(--s-2);pointer-events:none;font-family:var(--font-sans)}.app-toast[data-v-1f54b946]{display:inline-flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-2);font-size:var(--fs-callout);line-height:var(--lh-normal);pointer-events:auto;cursor:pointer;max-width:min(420px,calc(100vw - var(--s-8)))}.app-toast__dot[data-v-1f54b946]{width:8px;height:8px;border-radius:50%;background:var(--brand);flex-shrink:0}.app-toast.is-success .app-toast__dot[data-v-1f54b946]{background:var(--mint)}.app-toast.is-error .app-toast__dot[data-v-1f54b946]{background:var(--red)}.app-toast.is-warning .app-toast__dot[data-v-1f54b946]{background:var(--amber)}.app-toast.is-info .app-toast__dot[data-v-1f54b946]{background:var(--lilac)}.app-toast__msg[data-v-1f54b946]{flex:1}.toast-enter-active[data-v-1f54b946],.toast-leave-active[data-v-1f54b946]{transition:opacity .18s ease,transform .2s cubic-bezier(.4,0,.2,1)}.toast-enter-from[data-v-1f54b946]{opacity:0;transform:translateY(-8px)}.toast-leave-to[data-v-1f54b946]{opacity:0;transform:translateY(-4px)}.toast-move[data-v-1f54b946]{transition:transform .18s ease}:root{--brand: #2563eb;--brand-hover: #1d4ed8;--brand-soft: #dbeafe;--mint: #10b981;--mint-soft: #d1fae5;--mint-text: #065f46;--amber: #b45309;--amber-soft: #fef3c7;--amber-text: #92400e;--red: #dc2626;--red-soft: #fee2e2;--red-text: #991b1b;--lilac: #8b5cf6;--lilac-soft: #ede9fe;--lilac-text: #5b21b6;--text: #0f172a;--text-dim: #475569;--text-muted: #94a3b8;--line: #e2e8f0;--bg: #ffffff;--bg-soft: #f0f7ff;--bg-cream: #fff6ec;--bg-mint: #ecfdf5;--bg-lilac: #f5f3ff;--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", Arial, sans-serif;--fs-display: 34px;--fs-title: 22px;--fs-subtitle: 17px;--fs-body: 15px;--fs-callout: 14px;--fs-caption: 12px;--lh-tight: 1.25;--lh-normal: 1.5;--lh-relaxed: 1.65;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px;--shadow-1: 0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);--shadow-2: 0 4px 6px rgba(15,23,42,.05), 0 10px 20px rgba(15,23,42,.06);--shadow-focus: 0 0 0 3px rgba(37,99,235,.18);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-6: 24px;--s-8: 32px;--s-12: 48px}:root{--primary: var(--brand);--success: var(--mint);--muted: var(--text-dim);--card: var(--bg);--warning-bg: var(--amber-soft)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);background:var(--bg-soft);color:var(--text);line-height:var(--lh-relaxed);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;max-width:960px;margin:0 auto;padding:var(--s-3);padding-bottom:calc(var(--s-3) + 76px + env(safe-area-inset-bottom,0px))}.app-shell-admin{max-width:none;padding:0}.app-header{background:var(--brand);border-radius:var(--r-lg);padding:var(--s-4);color:#fff;margin-bottom:var(--s-4)}.app-header h1{margin:0 0 var(--s-1);font-size:var(--fs-title);font-weight:600}.app-tagline{margin:0 0 var(--s-3);font-size:var(--fs-caption);font-weight:400;opacity:.92;letter-spacing:.2px}.app-header nav{display:flex;gap:var(--s-4);font-size:var(--fs-callout)}.app-main{background:var(--bg);border-radius:var(--r-lg);padding:var(--s-4);padding-bottom:calc(var(--s-12) + env(safe-area-inset-bottom,0px));box-shadow:var(--shadow-1)}.app-main-admin{min-height:100vh;border-radius:0;padding:0;box-shadow:none;background:var(--bg-soft)}.tab-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:var(--bg);border-top:1px solid var(--line);padding:var(--s-1) 0;padding-bottom:calc(var(--s-1) + env(safe-area-inset-bottom,0px));z-index:100}.tab-item{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;text-decoration:none;color:var(--text-muted);font-size:var(--fs-caption);transition:color .15s ease}.tab-item.active{color:var(--brand)}.tab-icon{font-size:20px;line-height:1}.tab-label{font-size:var(--fs-caption)}.card{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-3);margin-bottom:var(--s-3)}.btn{border:none;border-radius:var(--r-pill);padding:var(--s-2) var(--s-4);cursor:pointer;font-family:inherit;transition:background-color .15s ease,color .15s ease,transform .1s cubic-bezier(.4,0,.2,1);-webkit-tap-highlight-color:transparent}.btn:active:not(:disabled){transform:scale(.98)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn.primary{background:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-hover)}.btn.ghost{background:var(--brand-soft);color:var(--brand-hover)}.btn.ghost:hover{background:#c7dcfa}.grid{display:grid;gap:var(--s-2)}input,select,textarea{width:100%;border-radius:var(--r-sm);border:1px solid var(--line);padding:var(--s-2);font:inherit;background:var(--bg);color:var(--text)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--brand);box-shadow:var(--shadow-focus)}.muted{color:var(--text-dim)}.warning{background:var(--amber-soft);border:1px solid #ffd591;border-radius:var(--r-sm);padding:var(--s-3)}.badge{display:inline-flex;align-items:center;padding:2px var(--s-2);border-radius:var(--r-pill);font-size:var(--fs-caption);margin-right:var(--s-1);background:var(--brand-soft);color:var(--brand-hover)}@media(min-width:1024px){.app-shell{max-width:1120px}}@media(max-width:640px){.app-shell{padding:10px}.app-main{padding:var(--s-3);padding-bottom:calc(var(--s-12) + env(safe-area-inset-bottom,0px))}}
