.confirm-mask[data-v-4b93462a]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-dialog);padding:var(--sp-5);background:#15212f6b;display:grid;place-items:center}.confirm-box[data-v-4b93462a]{width:min(360px,100%);padding:var(--sp-5);background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-pop)}.confirm-title[data-v-4b93462a]{display:block;margin-bottom:var(--sp-2);font-size:var(--fs-lg)}.confirm-text[data-v-4b93462a]{color:var(--muted);font-size:var(--fs-md);line-height:1.7}.confirm-actions[data-v-4b93462a]{margin-top:var(--sp-5);display:flex;gap:var(--sp-2)}.confirm-actions>button[data-v-4b93462a]{flex:1}.primary-button.is-danger[data-v-4b93462a]{background:var(--danger)}.primary-button.is-danger[data-v-4b93462a]:hover{background:#8f1c13}:root{--ink: #15212f;--ink-soft: #344054;--muted: #667085;--faint: #98a2b3;--line: #dce3ec;--line-soft: #f0f3f8;--paper: #f6f8fc;--surface: #ffffff;--surface-sunken: #fafbfe;--brand: #5d6bdf;--brand-deep: #3543a9;--accent: #2f6f73;--soft: #eef2ff;--danger: #b42318;--danger-bg: #fff1f0;--warn: #9a5b13;--warn-bg: #fff7ed;--ok: #287055;--ok-bg: #eef8f4;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 24px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-pill: 999px;--tap-min: 44px;--control-h: 44px;--control-h-sm: 36px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--appbar-h: 52px;--tabbar-h: 56px;--rail-w: 280px;--page-max: 1120px;--form-max: 760px;--gutter: var(--sp-4);--sh-card: 0 10px 28px rgba(21, 33, 47, .05);--sh-raised: 0 8px 20px rgba(21, 33, 47, .08);--sh-pop: 0 24px 70px rgba(21, 33, 47, .16);--sh-bar: 0 -2px 12px rgba(21, 33, 47, .06);--z-bar: 20;--z-overlay: 30;--z-dialog: 40;--ease: cubic-bezier(.4, 0, .2, 1)}@media (min-width: 768px){:root{--gutter: var(--sp-5)}}@media (min-width: 1024px){:root{--control-h: 40px;--gutter: var(--sp-6)}}@media (prefers-reduced-motion: reduce){:root{--ease: linear}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:var(--fs-md);line-height:1.6;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;line-height:1.3;letter-spacing:0}h1{font-size:var(--fs-xl);font-weight:700}h2{font-size:var(--fs-lg);font-weight:700}h3{font-size:var(--fs-md);font-weight:700}p{margin:0}a{color:var(--brand-deep);text-decoration:none}img{max-width:100%}dl{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-1) var(--sp-4);margin:0}dt{color:var(--muted);font-size:var(--fs-sm)}dd{margin:0 0 var(--sp-2);word-break:break-word}dd:last-child{margin-bottom:0}@media (min-width: 768px){dl{grid-template-columns:120px minmax(0,1fr);gap:var(--sp-3) var(--sp-4);align-items:baseline}dd{margin-bottom:0}}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}input,select{width:100%;height:var(--control-h);padding:0 var(--sp-3);border:1px solid #cfd8e3;border-radius:var(--r-sm);background:var(--surface);font-size:16px}textarea{width:100%;padding:var(--sp-3);border:1px solid #cfd8e3;border-radius:var(--r-sm);background:var(--surface);font-size:16px;line-height:1.6;resize:vertical}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:var(--sp-6);background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}input::placeholder,textarea::placeholder{color:var(--faint)}input:disabled,select:disabled,textarea:disabled{background:#f7f8fa;color:var(--muted)}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@media (min-width: 1024px){input,select,textarea{font-size:var(--fs-md)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}.app-shell{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--paper)}.app-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.app-page{width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--gutter);display:flex;flex-direction:column;gap:var(--sp-4)}.app-page--narrow{max-width:var(--form-max)}.page-head{display:flex;flex-direction:column;gap:var(--sp-3)}.page-head__text{min-width:0}.page-head__text p{margin-top:var(--sp-1);color:var(--muted);font-size:var(--fs-sm)}.page-head__actions{display:flex;gap:var(--sp-2);align-items:center}.page-head__actions>*{flex:1}@media (min-width: 768px){.page-head{flex-direction:row;align-items:center;gap:var(--sp-4)}.page-head__text{flex:1}.page-head__actions>*{flex:0 0 auto}}.eyebrow{margin-bottom:var(--sp-1);color:var(--brand);font-size:var(--fs-xs);font-weight:800;letter-spacing:.04em}.primary-button,.ghost-button,.upload-action{min-height:var(--control-h);padding:0 var(--sp-4);border:1px solid transparent;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:600;white-space:nowrap;transition:background-color .15s var(--ease),border-color .15s var(--ease)}.primary-button{background:var(--brand);color:#fff}.primary-button:hover:not(:disabled){background:var(--brand-deep)}.ghost-button,.upload-action{background:var(--surface);border-color:var(--line);color:var(--brand-deep)}.ghost-button:hover:not(:disabled){background:var(--soft)}.ghost-button.is-primary{border-color:var(--brand);color:var(--brand-deep);font-weight:700}.ghost-button.is-primary:hover:not(:disabled){background:var(--soft)}.ghost-button.danger{color:var(--danger)}.ghost-button.danger:hover:not(:disabled){background:var(--danger-bg)}.primary-button:disabled,.ghost-button:disabled,.upload-action:has(input:disabled){opacity:.6}.button-sm{min-height:var(--control-h-sm);padding:0 var(--sp-3);font-size:var(--fs-sm);font-weight:500}.upload-action{position:relative;width:max-content}.upload-action input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.field{display:grid;gap:var(--sp-2);min-width:0}.field>span{color:var(--ink-soft);font-size:var(--fs-sm);font-weight:700}.field.wide{grid-column:1 / -1}.required-mark{color:var(--danger);font-style:normal}.form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}@media (min-width: 768px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.meter-field{position:relative}.meter-field input,.meter-field textarea{padding-right:68px}.meter-field em{position:absolute;right:var(--sp-3);bottom:var(--sp-3);color:var(--faint);font-size:var(--fs-xs);font-style:normal;pointer-events:none}.meter-field input+em{top:50%;bottom:auto;transform:translateY(-50%)}.textarea-meter textarea{min-height:92px}.radio-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.radio-item{min-height:var(--control-h);padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer}.radio-item input{width:auto;height:auto;margin:0}.panel{padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-card)}@media (min-width: 768px){.panel{padding:var(--sp-5)}}.panel-title{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-4)}.panel-title p{margin-top:var(--sp-1);color:var(--muted);font-size:var(--fs-sm)}.panel-kicker{flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--soft);color:var(--brand);font-size:var(--fs-xs);font-weight:800}.section-line{display:flex;align-items:center;gap:var(--sp-3);color:var(--ink-soft);font-size:var(--fs-md);font-weight:700}.section-line:after{content:"";flex:1;height:1px;background:var(--line)}.error-banner,.diff-note,.audit-note{padding:var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm);line-height:1.6}.error-banner{background:var(--danger-bg);color:var(--danger)}.diff-note,.audit-note{background:var(--warn-bg);color:var(--warn)}.status-tag{width:max-content;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-pill);background:var(--soft);color:var(--brand-deep);font-size:var(--fs-xs);font-weight:700;white-space:nowrap}.status-pending{background:var(--warn-bg);color:var(--warn)}.status-rejected{background:var(--danger-bg);color:var(--danger)}.status-published{background:var(--ok-bg);color:var(--ok)}.status-offline,.status-cancelled{background:#f2f4f7;color:var(--muted)}.chip{display:inline-block;padding:0 var(--sp-2);border-radius:var(--r-pill);border:1px solid rgba(93,107,223,.4);color:var(--brand);font-size:var(--fs-xs)}.kpi-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}.kpi{padding:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);min-width:0}.kpi__label{display:flex;align-items:center;gap:var(--sp-1);color:var(--muted);font-size:var(--fs-xs)}.kpi__value{display:block;margin-top:var(--sp-1);font-size:var(--fs-xl);font-weight:700;font-variant-numeric:tabular-nums}.kpi--wide{grid-column:1 / -1}.online-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);animation:pulse-dot 2s var(--ease) infinite}@media (min-width: 768px){.kpi--wide{grid-column:auto}.kpi-strip{grid-template-columns:repeat(5,minmax(0,1fr));gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.kpi{border:0;border-right:1px solid var(--line);border-radius:0;display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4)}.kpi:last-child{border-right:0}.kpi__value{margin-top:0;font-size:var(--fs-lg)}}.search-input{flex:1;min-width:0}@media (min-width: 768px){.search-input{width:200px;flex:0 0 auto}}.filter-chips{display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter)}.filter-chips::-webkit-scrollbar{display:none}.filter-chips button{flex:0 0 auto;min-height:var(--control-h-sm);padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-soft);font-size:var(--fs-sm)}.filter-chips button.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}@media (min-width: 1024px){.filter-chips{flex-wrap:wrap;overflow:visible;margin:0;padding:0}}.board{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-card);overflow:hidden}.data-list{display:grid;gap:var(--sp-2);padding:var(--sp-3);background:var(--paper)}.data-list__head{display:none}.data-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main   status" "meta   meta" "actions actions";gap:var(--sp-2) var(--sp-3);padding:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.data-row__main{grid-area:main;min-width:0}.data-row__main strong{display:block;font-size:var(--fs-md);line-height:1.4}.data-row__main p{margin-top:var(--sp-1);color:var(--muted);font-size:var(--fs-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.data-row__status{grid-area:status;justify-self:end;align-self:start}.data-row__meta{grid-area:meta;color:var(--muted);font-size:var(--fs-xs)}.data-row__actions{grid-area:actions;display:flex;flex-wrap:wrap;gap:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--line-soft)}.data-row__actions>*{flex:1 1 calc(50% - var(--sp-2))}.data-row__actions>.is-primary{flex-basis:100%;order:-1}@media (min-width: 1024px){.data-list{display:block;padding:0;background:transparent}.data-list__head,.data-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 160px 210px;grid-template-areas:"main status meta actions";align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);border:0;border-bottom:1px solid var(--line-soft);border-radius:0}.data-list__head{background:var(--surface-sunken);color:var(--muted);font-size:var(--fs-xs);border-bottom:1px solid var(--line)}.data-list__head span:last-child{text-align:right}.data-row:last-child{border-bottom:0}.data-row__status{justify-self:start}.data-row__actions{justify-content:flex-end;padding-top:0;border-top:0;flex-wrap:nowrap}.data-row__actions>*{flex:0 0 auto}.data-row__actions>.is-primary{flex-basis:auto}}.pager{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line-soft);font-size:var(--fs-sm);color:var(--muted)}.pager__total{margin-right:auto}.pager button{min-width:var(--control-h-sm);min-height:var(--control-h-sm);padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-soft);font-size:var(--fs-sm)}.pager button:disabled{opacity:.45}.empty-state{padding:var(--sp-6) var(--sp-4);display:grid;justify-items:center;gap:var(--sp-2);text-align:center}.empty-state__mark{width:48px;height:48px;border-radius:var(--r-lg);display:grid;place-items:center;background:var(--soft);color:var(--brand);font-size:24px}.empty-state p{max-width:34em;color:var(--muted);font-size:var(--fs-sm);line-height:1.7}.empty-state .primary-button{margin-top:var(--sp-2)}.sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);background:#15212f6b;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-height:92dvh;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg) var(--r-lg) 0 0;overflow:hidden}.sheet__head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--line)}.sheet__body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:var(--sp-4);padding-bottom:calc(var(--sp-4) + var(--safe-b))}@media (min-width: 768px){.sheet-mask{align-items:center;padding:var(--sp-5)}.sheet{width:min(760px,100%);max-height:calc(100dvh - var(--sp-6) * 2);border-radius:var(--r-md)}.sheet__body{padding-bottom:var(--sp-4)}}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-dialog);display:grid;place-items:center;background:#f6f8fcd1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.loading-card{width:min(320px,calc(100vw - var(--sp-6)));padding:var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-pop);text-align:center}.loading-card strong{display:block;margin-top:var(--sp-3);font-size:var(--fs-lg)}.loading-card p{margin-top:var(--sp-2);color:var(--muted);font-size:var(--fs-sm)}.loading-mark,.mini-spinner,.button-spinner{display:inline-block;border-radius:50%;border:3px solid rgba(93,107,223,.18);border-top-color:var(--brand);animation:spin .8s linear infinite}.loading-mark{width:40px;height:40px}.mini-spinner,.button-spinner{width:16px;height:16px;border-width:2px}.button-spinner{border-color:#ffffff59;border-top-color:#fff}@media (prefers-reduced-motion: reduce){.loading-mark,.mini-spinner,.button-spinner,.online-dot{animation:none}}
