.mfa-grace-banner[data-v-330dc41a]{background:linear-gradient(135deg,#3b82f6,var(--primary,#2100ad));color:#fff;padding:20px 0;position:relative;z-index:100}.mfa-grace-banner__content[data-v-330dc41a]{max-width:1200px;margin:0 auto;padding:0 16px;gap:12px}.mfa-grace-banner__content[data-v-330dc41a],.mfa-grace-banner__icon[data-v-330dc41a]{display:flex;align-items:center;justify-content:center}.mfa-grace-banner__icon[data-v-330dc41a]{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:#fff3}.mfa-grace-banner__text[data-v-330dc41a]{font-size:14px;margin:0}.mfa-grace-banner__cta[data-v-330dc41a]{flex-shrink:0;background:#fff;color:var(--primary-hover,#180f85);border:none;border-radius:9999px;padding:4px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:background-color .2s}.mfa-grace-banner__cta[data-v-330dc41a]:hover{background:#eef2ff}.mfa-grace-banner__dismiss[data-v-330dc41a]{flex-shrink:0;background:none;border:none;color:#fff;opacity:.7;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:opacity .2s}.mfa-grace-banner__dismiss[data-v-330dc41a]:hover{opacity:1}.ws-picker[data-v-e8caf1a1]{display:flex;flex-direction:column;gap:var(--space-2)}.ws-picker-input[data-v-e8caf1a1]{width:100%}.ws-picker-list[data-v-e8caf1a1]{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);max-height:16rem;overflow-y:auto}.ws-picker-list li[data-v-e8caf1a1]{display:grid;grid-template-columns:1fr auto auto;gap:var(--space-3);align-items:baseline;padding:var(--space-2) var(--space-3);font-size:.84rem;cursor:pointer;border-top:1px solid var(--border)}.ws-picker-list li[data-v-e8caf1a1]:first-child{border-top:none}.ws-picker-list li[data-v-e8caf1a1]:focus-visible,.ws-picker-list li[data-v-e8caf1a1]:hover{background:var(--accent-bg);outline:none}.ws-picker-name[data-v-e8caf1a1]{color:var(--fg);font-weight:500}.ws-picker-list code[data-v-e8caf1a1],.ws-picker-pkg[data-v-e8caf1a1]{font-size:.74rem}.ws-picker-pkg[data-v-e8caf1a1]{color:var(--fg-faint);font-variant-numeric:tabular-nums}.ws-picker-empty[data-v-e8caf1a1]{padding:var(--space-3);font-size:.8rem;color:var(--fg-muted);text-align:center}.ws-picker-cap[data-v-e8caf1a1]{margin:0;padding:var(--space-2) var(--space-3);font-size:.72rem;color:var(--fg-faint);text-align:center}.tray[data-v-7823e9e7]{position:fixed;bottom:var(--space-4);right:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000;pointer-events:none}.toast[data-v-7823e9e7]{display:flex;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border:1px solid var(--border);background:var(--bg);box-shadow:0 1px 2px #27201d0d,0 8px 24px #27201d0f;max-width:28rem;font-size:.82rem;line-height:1.4;pointer-events:auto;border-radius:var(--radius-sm);animation:slide-in-7823e9e7 .18s cubic-bezier(.16,1,.3,1)}.toast.ok[data-v-7823e9e7]{border-color:var(--accent)}.toast.err[data-v-7823e9e7]{border-color:var(--danger)}.toast.undo[data-v-7823e9e7]{border-color:var(--warn)}.kind[data-v-7823e9e7]{flex:0 0 auto;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;padding:.05rem var(--space-1)}.toast.ok .kind[data-v-7823e9e7]{color:var(--accent)}.toast.err .kind[data-v-7823e9e7]{color:var(--danger)}.toast.undo .kind[data-v-7823e9e7]{color:var(--warn)}.msg[data-v-7823e9e7]{flex:1;word-break:break-word;color:var(--fg)}.msg .ref[data-v-7823e9e7]{display:inline-block;margin-left:var(--space-2);color:var(--fg-faint);font-size:.7rem}.action[data-v-7823e9e7]{font-size:.72rem;padding:.1rem var(--space-2);color:var(--warn);border-color:var(--warn)}.action[data-v-7823e9e7]:hover{background:var(--warn-bg)}.close[data-v-7823e9e7]{border:none;background:transparent;color:var(--fg-faint);font-size:.95rem;line-height:1;padding:0 var(--space-1)}.close[data-v-7823e9e7]:hover{color:var(--fg);border:none}@keyframes slide-in-7823e9e7{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sheet-mask[data-v-01600e05]{position:fixed;inset:0;background:#27201d73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;justify-content:flex-end;z-index:200;animation:fade-01600e05 .12s ease-out}.sheet[data-v-01600e05]{width:22rem;max-width:90vw;background:var(--bg);border-left:1px solid var(--border);padding:var(--space-5) var(--space-4);height:100vh;overflow-y:auto;animation:slide-01600e05 .16s cubic-bezier(.16,1,.3,1)}.sheet-hdr[data-v-01600e05]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-4)}.sheet h2[data-v-01600e05]{margin:0;font-size:.95rem;font-weight:500;letter-spacing:.04em}.sheet h3[data-v-01600e05]{font-size:.72rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.08em;margin:var(--space-5) 0 var(--space-2)}dl[data-v-01600e05]{margin:0;display:grid;gap:var(--space-2);grid-template-columns:1fr}dl>div[data-v-01600e05]{gap:var(--space-3);align-items:baseline}dl>div[data-v-01600e05],dt[data-v-01600e05]{display:flex}dt[data-v-01600e05]{flex:0 0 5rem;gap:var(--space-1)}dd[data-v-01600e05]{margin:0;color:var(--fg-muted);font-size:.82rem}@keyframes fade-01600e05{0%{opacity:0}to{opacity:1}}@keyframes slide-01600e05{0%{transform:translate(8px);opacity:0}to{transform:translate(0);opacity:1}}:root{--bg:#fff;--bg-elev:#f9f9fa;--bg-sunken:#f5f5f9;--bg-cream:var(--accent);--fg:#1e293b;--fg-muted:#525670;--fg-faint:#878ca6;--border:#dbdef0;--border-strong:#b9bfdd;--accent:#2017ad;--accent-bg:#ecebf6;--accent-strong:#180f85;--accent-soft:#d6d4ee;--tech:#3462e8;--tech-bg:#eaf0fe;--navy:#4475fb;--cyan:#3ad9d8;--primary:#2017ad;--primary-hover:#180f85;--danger:#dc2626;--danger-bg:#fdecec;--warn:#c2410c;--warn-bg:#fff2e8;--warning:#fd9147;--success:#22c55e;--info:#0b6fa8;--info-bg:#e7f3fc;--space-1:.25rem;--space-2:.375rem;--space-3:.55rem;--space-4:.9rem;--space-5:1.35rem;--space-6:2.25rem;--radius-input:6px;--radius-sm:8px;--radius-lg:12px;--small-shadow:0px 1px 2px 0px rgba(30,41,59,.1);--medium-shadow:0px 2px 4px 0px rgba(30,41,59,.1);--large-shadow:0px 6px 8px 0px rgba(30,41,59,.1);--font-sans:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:"JetBrains Mono","JetBrains Mono Variable",ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-family:var(--font-sans);color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}body,html{background:var(--bg);color:var(--fg);margin:0}body{font-family:var(--font-sans);font-size:.92rem;line-height:1.5;font-weight:400}.app{min-height:100vh}.shell{max-width:1100px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-6)}header{border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:50;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px)}.hdr-inner{max-width:1100px;margin:0 auto;padding:var(--space-3) var(--space-4);display:flex;gap:var(--space-5)}.brand,.hdr-inner{align-items:center}.brand{display:inline-flex;gap:var(--space-3);text-decoration:none;color:var(--fg);font-weight:600;font-size:.95rem;letter-spacing:-.005em;flex:0 0 auto}.brand-logo{height:16px;width:auto;display:block}.brand-rule{width:1px;height:16px;background:var(--border)}.brand-name{white-space:nowrap}nav{display:flex;align-items:center;flex:1 1 auto}nav,nav a{gap:var(--space-1)}nav a{color:var(--fg-muted);text-decoration:none;font-size:.86rem;font-weight:500;display:inline-flex;align-items:baseline;padding:.35rem .6rem;border-radius:var(--radius-sm);transition:color .12s ease-out,background .12s ease-out}nav a:hover{color:var(--fg);background:var(--bg-elev)}nav a.router-link-exact-active{color:var(--accent-strong);background:var(--accent-bg)}nav .kbd-hint{display:none}@media(min-width:1024px){nav .kbd-hint{display:inline;font-family:var(--font-mono);font-size:.66rem;color:var(--fg-faint);letter-spacing:.04em;font-weight:500}nav a.router-link-exact-active .kbd-hint{color:var(--accent)}}.user{margin-left:auto;display:flex;gap:var(--space-3);align-items:center;font-size:.84rem}.user .avatar{width:26px;height:26px;border-radius:50%;border:1px solid var(--border)}.user .who{display:flex;flex-direction:column;line-height:1.15}.user .name{color:var(--fg);font-weight:500;font-size:.84rem}.user .email{color:var(--fg-muted);font-family:var(--font-mono);font-size:.72rem}.user{position:relative}.profile-trigger{display:inline-flex;align-items:center;gap:var(--space-3);padding:.25rem var(--space-2);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--fg);font:inherit}.profile-trigger:hover{background:var(--bg-elev);border-color:var(--border)}.profile-trigger[aria-expanded=true]{background:var(--bg-elev);border-color:var(--border-strong)}.profile-trigger .caret{color:var(--fg-faint);font-size:.7rem}.avatar-fallback{display:inline-grid;place-items:center;background:var(--accent-bg);color:var(--accent-strong);font-weight:600;font-size:.74rem;letter-spacing:.02em}.profile-menu{position:absolute;right:0;top:calc(100% + 4px);min-width:16rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:0 6px 16px #1e293b24;z-index:60;gap:.1rem}.menu-section,.profile-menu{padding:var(--space-2);display:flex;flex-direction:column}.menu-section{gap:.2rem}.menu-section-hdr{display:flex;align-items:center;gap:var(--space-2);font-size:.74rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.2rem}.menu-section-hdr .view-dot{width:7px;height:7px;border-radius:50%}.menu-section-hdr .view-dot.platform{background:var(--accent)}.menu-section-hdr .view-dot.workspace{background:var(--warn)}.menu-section-title{font-weight:500}.menu-section-title .ws-tag{color:var(--accent-strong);font-weight:500;text-transform:none;letter-spacing:0}.menu-note{margin:0;font-size:.74rem;color:var(--fg-muted);line-height:1.45}.menu-note code{font-size:.7rem;background:var(--bg-sunken);padding:0 .2rem;border-radius:2px}.menu-item{background:transparent;border:none;text-align:left;padding:.45rem var(--space-3);font:inherit;font-size:.84rem;color:var(--fg);border-radius:var(--radius-input);cursor:pointer;text-decoration:none}.menu-item:hover{background:var(--accent-bg);color:var(--accent-strong)}.menu-item.danger{color:var(--danger)}.menu-item.danger:hover{background:var(--danger-bg)}.menu-hint{float:right;font-size:.62rem;letter-spacing:.05em;color:var(--fg-muted);border:1px solid var(--border);border-radius:3px;padding:0 4px;line-height:1.5}.menu-divider{height:1px;background:var(--border);margin:.2rem 0}.menu-picker{padding:var(--space-2);border-top:1px solid var(--border)}.mode-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:.25rem .6rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elev);font:inherit;font-size:.78rem;font-weight:500;cursor:pointer;color:var(--fg);max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mode-chip:hover{border-color:var(--border-strong);background:var(--bg-sunken)}.mode-chip.is-platform{background:var(--accent-bg);border-color:var(--accent-soft);color:var(--accent-strong)}.mode-chip.is-platform:hover{background:var(--accent-soft)}.mode-chip.is-workspace{background:var(--warn-bg);border-color:#fcd9bf;color:var(--warn)}.mode-chip .mode-dot{width:7px;height:7px;border-radius:50%}.mode-chip .mode-dot.platform{background:var(--accent)}.mode-chip .mode-dot.workspace{background:var(--warn)}table{width:100%;border-collapse:collapse;font-size:.9rem}td,th{padding:var(--space-3) var(--space-3);text-align:left;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--fg-faint);font-weight:600;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border-strong);white-space:nowrap}tbody tr{transition:background .12s ease-out}tbody tr:hover{background:var(--bg-elev)}button{background:var(--bg);color:var(--fg);border:1px solid var(--border);padding:.35rem .7rem;cursor:pointer;font-family:var(--font-sans);font-size:.82rem;font-weight:500;border-radius:var(--radius-sm);transition:border-color .12s ease-out,background .12s ease-out,color .12s ease-out;line-height:1.3}button:hover{border-color:var(--border-strong);background:var(--bg-elev)}button:focus-visible{outline:1.5px solid var(--accent);outline-offset:1px}button:disabled{opacity:.5;cursor:not-allowed}button:disabled:hover{background:var(--bg);border-color:var(--border)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600;box-shadow:0 2px 5px #180f852b}button.primary:hover{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong)}button.primary:disabled:hover{background:var(--accent);border-color:var(--accent)}button.danger{color:var(--danger);border-color:#f4c7c7}button.danger:hover{border-color:var(--danger);background:var(--danger-bg)}button.link{background:transparent;border:none;color:var(--accent);padding:0;font-size:.82rem;font-weight:500;text-decoration:underline;text-underline-offset:.15em}button.link:hover{color:var(--accent-strong)}input,select,textarea{background:var(--bg);color:var(--fg);border:1px solid var(--border);padding:.4rem .6rem;font-family:var(--font-sans);font-size:.88rem;border-radius:var(--radius-input);transition:border-color .12s ease-out,box-shadow .12s ease-out}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}input::-moz-placeholder{color:var(--fg-faint)}input::placeholder{color:var(--fg-faint)}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:14px;height:14px;padding:0;border:1px solid var(--border-strong);border-radius:3px;background:var(--bg);cursor:pointer;display:inline-grid;place-content:center;vertical-align:middle;box-shadow:none}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";width:8px;height:8px;background:var(--bg);clip-path:polygon(14% 44%,0 60%,40% 100%,100% 22%,84% 8%,39% 70%)}input[type=checkbox]:focus-visible{outline:1.5px solid var(--accent);outline-offset:2px}.badge{display:inline-block;padding:.1rem .5rem;border-radius:var(--radius-sm);font-size:.72rem;line-height:1.3;letter-spacing:.02em;vertical-align:middle;font-family:var(--font-sans);font-weight:500}.badge.allow,.badge.ok{background:var(--accent-bg);color:var(--accent-strong)}.badge.deny,.badge.err{background:var(--danger-bg);color:var(--danger)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.muted{background:var(--bg-sunken);color:var(--fg-muted)}.badge.write{background:var(--tech-bg);color:var(--tech)}code{color:var(--tech);font-family:var(--font-mono);font-size:.86em}.badge code{color:inherit}.muted{color:var(--fg-muted)}.faint{color:var(--fg-faint)}.kbd-key{border:1px solid var(--border);padding:0 var(--space-1);border-radius:3px;font-size:.7rem;color:var(--fg-muted)}.kbd-key,pre.code,pre.json{font-family:var(--font-mono);background:var(--bg-sunken)}pre.code,pre.json{color:var(--fg);padding:var(--space-3) var(--space-4);font-size:.78rem;line-height:1.55;overflow-x:auto;margin:0;border-radius:var(--radius-sm);border:0}section h2{font-size:1.35rem;font-weight:500;margin:0 0 var(--space-3);letter-spacing:-.01em;line-height:1.15}section>p.lead{color:var(--fg-muted);margin:0 0 var(--space-5);font-size:.92rem;max-width:68ch;line-height:1.55}section h3{font-size:.78rem;font-weight:600;color:var(--fg-muted);letter-spacing:.06em;text-transform:uppercase;margin:var(--space-5) 0 var(--space-3)}.page-enter-active{transition:opacity .1s ease-out}.page-enter-from{opacity:0}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-left:calc(var(--space-4)*-1);margin-right:calc(var(--space-4)*-1);padding-left:var(--space-4);padding-right:var(--space-4)}.table-scroll>table{min-width:36rem}@media(max-width:960px){.shell{padding:var(--space-4) var(--space-3) var(--space-5)}.hdr-inner{gap:var(--space-3);padding:var(--space-2) var(--space-3)}nav a{padding:.3rem .5rem;font-size:.82rem}}@media(max-width:640px){body{font-size:.88rem}.hdr-inner{flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.brand-name{font-size:.86rem}nav{order:3;flex:1 0 100%;overflow-x:auto;gap:var(--space-1);padding:var(--space-1) 0;-webkit-overflow-scrolling:touch;scrollbar-width:none}nav::-webkit-scrollbar{display:none}nav a{font-size:.82rem;white-space:nowrap}.user{margin-left:auto;gap:var(--space-2)}.user .who{display:none}.profile-menu{min-width:14rem;right:-.4rem}.mode-chip{max-width:11rem;padding:.2rem .4rem;font-size:.72rem}}
