.s360-ui{font-family:var(--font-ui);font-size:13px;line-height:18px;color:var(--fg-1);background:var(--bg-app)}.s360-ui :focus-visible{outline:2px solid var(--brand-violet);outline-offset:2px;border-radius:var(--radius-md)}.s360-ui a{color:var(--brand-violet)}.s360-ui h1,.s360-ui h2,.s360-ui h3{letter-spacing:-.01em;margin:0}.s360-ui :where(button,input,select,textarea){font:inherit}.s360-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:32px;padding:0 14px;box-sizing:border-box;border-radius:var(--radius-md);font:var(--t-body1-strong) var(--font-ui);background:var(--bg-card);border:1px solid var(--stroke-1);color:var(--fg-1);box-shadow:var(--shadow-2);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color .13s,border-color .13s,color .13s,box-shadow .13s;-webkit-appearance:none;-moz-appearance:none;appearance:none}.s360-btn:hover{border-color:var(--stroke-2)}.s360-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.s360-btn[aria-disabled=true],.s360-btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}.s360-btn svg{width:16px;height:16px;flex:none}.s360-btn.primary{background:var(--brand-violet);border-color:var(--brand-violet);color:var(--fg-on-brand);box-shadow:var(--shadow-brand-8)}.s360-btn.primary:hover{background:var(--brand-violet-600);border-color:var(--brand-violet-600)}.s360-btn.primary:focus-visible{box-shadow:var(--shadow-brand-8),var(--focus-ring)}.s360-btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--fg-2)}.s360-btn.ghost:hover{background:var(--bg-violet-tint);border-color:transparent}.s360-btn.ghost:focus-visible{box-shadow:var(--focus-ring)}.s360-btn.danger{background:var(--bg-card);border-color:var(--danger);color:var(--danger)}.s360-btn.danger:hover{background:var(--danger-bg);border-color:var(--danger)}.s360-btn.sm{height:26px;padding:0 10px;font:var(--t-caption1) var(--font-ui);font-weight:600}.s360-btn.lg{height:38px;padding:0 18px;font:var(--t-body2) var(--font-ui);font-weight:600}.s360-btn.full{width:100%}.s360-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;box-sizing:border-box;flex:none;border-radius:var(--radius-md);background:transparent;border:1px solid transparent;color:var(--fg-2);cursor:pointer;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background-color .13s,color .13s}.s360-icon-btn:hover{background:var(--bg-violet-tint)}.s360-icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.s360-icon-btn.danger{color:var(--danger)}.s360-icon-btn.danger:hover{background:var(--danger-bg)}.s360-icon-btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}.s360-icon-btn svg{width:16px;height:16px}.s360-input,.s360-select,.s360-textarea{display:block;width:100%;height:36px;padding:0 12px;box-sizing:border-box;border:1px solid var(--stroke-1);border-radius:var(--radius-md);background:var(--bg-card);font:var(--t-body2) var(--font-ui);color:var(--fg-1);-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;transition:border-color .13s,box-shadow .13s}.s360-textarea{height:auto;min-height:72px;padding:8px 12px;resize:vertical}.s360-select{padding-right:32px;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--fg-2) 50%),linear-gradient(135deg,var(--fg-2) 50%,transparent 50%);background-size:5px 5px,5px 5px;background-position:right 16px center,right 11px center;background-repeat:no-repeat}.s360-input::placeholder,.s360-textarea::placeholder{color:var(--fg-3);opacity:1}.s360-input:focus,.s360-select:focus,.s360-textarea:focus{outline:none;border-color:var(--stroke-focus);box-shadow:var(--focus-ring)}.s360-input:focus-visible,.s360-select:focus-visible,.s360-textarea:focus-visible{outline:none}.s360-input.mono,.s360-textarea.mono{font:var(--t-body2) var(--font-mono);letter-spacing:.01em}.s360-input[aria-invalid=true],.s360-select[aria-invalid=true],.s360-textarea[aria-invalid=true]{border-color:var(--danger)}.s360-input[disabled],.s360-select[disabled],.s360-textarea[disabled]{background:var(--bg-app);color:var(--fg-disabled);cursor:not-allowed}.s360-field{display:grid;grid-gap:var(--space-xxs);gap:var(--space-xxs);min-width:0}.s360-label{font:var(--t-caption1) var(--font-ui);font-weight:500;color:var(--fg-2)}.s360-hint{color:var(--fg-3)}.s360-error,.s360-hint{font:var(--t-caption1) var(--font-ui)}.s360-error{color:var(--danger)}.s360-chip{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;box-sizing:border-box;border-radius:var(--radius-circle);font:600 10px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;background:var(--bg-3);color:var(--fg-2);border:0}.s360-chip.ok{background:var(--success-bg);color:var(--success)}.s360-chip.warn{background:var(--warning-bg);color:var(--warning)}.s360-chip.bad{background:var(--danger-bg);color:var(--danger)}.s360-chip.info{background:var(--info-bg);color:var(--info)}.s360-chip.violet{background:var(--brand-violet-50);color:var(--brand-violet)}.s360-chip.teal{background:var(--brand-teal-100);color:var(--brand-teal-text)}a.s360-chip,button.s360-chip{border:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-decoration:none;transition:filter .13s,box-shadow .13s}a.s360-chip:hover,button.s360-chip:hover{filter:brightness(.95)}a.s360-chip:focus-visible,button.s360-chip:focus-visible{outline:none;box-shadow:var(--focus-ring)}button.s360-chip[disabled]{opacity:.45;cursor:not-allowed}.s360-card{background:var(--bg-card);border:1px solid var(--stroke-1);border-radius:var(--radius-2xl);box-shadow:var(--shadow-2);padding:var(--space-l);box-sizing:border-box}.s360-card>.head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-m);margin-bottom:var(--space-m)}.s360-card>.head h3{font:var(--t-subtitle2) var(--font-ui);margin:0;letter-spacing:-.01em}.s360-card.flat{box-shadow:none}.s360-card.tight{padding:var(--space-m)}.s360-card.flush{padding:0}.s360-card.flush>.head{padding:var(--space-m) var(--space-l) 0;margin-bottom:var(--space-m)}.s360-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-m);margin-bottom:var(--space-l);flex-wrap:wrap}.s360-page-head h1{font:var(--page-head-title);margin:0;letter-spacing:-.01em;color:var(--fg-1)}.s360-page-head .sub{font:var(--page-head-sub);color:var(--fg-3);margin-top:var(--page-head-gap)}.s360-page-head .actions{display:flex;align-items:center;gap:var(--space-s);flex:0 1 auto;flex-wrap:wrap;min-width:0}.s360-eyebrow{font:600 9.5px/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--fg-3)}.s360-tabs{display:flex;gap:var(--space-xl);border-bottom:1px solid var(--stroke-1);margin:0;padding:0;list-style:none}.s360-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 0;margin-bottom:-1px;font:var(--t-body1-strong) var(--font-ui);color:var(--fg-3);background:none;border:0;border-bottom:2px solid transparent;border-radius:0;cursor:pointer;text-decoration:none;white-space:nowrap;transition:color .13s,border-color .13s}.s360-tab:hover{color:var(--fg-1)}.s360-tab[aria-current=page],.s360-tab[aria-selected=true]{color:var(--brand-violet);border-bottom-color:var(--brand-violet)}.s360-tab:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-md)}.s360-banner{display:flex;align-items:flex-start;gap:var(--space-s);padding:var(--space-m) var(--space-l);border-radius:var(--radius-lg);border-left:3px solid var(--stroke-2);background:var(--bg-2);color:var(--fg-1);font:var(--t-body1) var(--font-ui)}.s360-banner svg{width:16px;height:16px;flex:none;margin-top:1px}.s360-banner.info{background:var(--info-bg);border-left-color:var(--info)}.s360-banner.ok{background:var(--success-bg);border-left-color:var(--success)}.s360-banner.warn{background:var(--warning-bg);border-left-color:var(--warning)}.s360-banner.bad{background:var(--danger-bg);border-left-color:var(--danger)}.s360-banner.info svg{color:var(--info)}.s360-banner.ok svg{color:var(--success)}.s360-banner.warn svg{color:var(--warning)}.s360-banner.bad svg{color:var(--danger)}.s360-empty{text-align:center;padding:var(--space-4xl) var(--space-xl);border:1px dashed var(--stroke-1);border-radius:var(--radius-2xl);color:var(--fg-3)}.s360-empty h3,.s360-empty h4{font:var(--t-subtitle2) var(--font-ui);color:var(--fg-1);margin:0}.s360-empty p{font:var(--t-body1) var(--font-ui);color:var(--fg-3);margin:var(--space-xs) auto 0;max-width:46ch}.s360-empty .actions{display:flex;justify-content:center;gap:var(--space-s);margin-top:var(--space-l)}.s360-empty.inline{border:0;border-radius:0;padding:var(--space-xl);background:transparent}.s360-skeleton{display:block;min-height:1em;border-radius:4px;background:linear-gradient(90deg,#eef0f6 25%,#f9fafd 50%,#eef0f6 75%);background-size:200% 100%;animation:s360-shimmer 1.3s linear infinite}@keyframes s360-shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.s360-skeleton{animation:none;background:#eef0f6}}.s360-toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:8px;background:var(--brand-ink);color:var(--fg-on-dark);padding:10px 16px;border-radius:var(--radius-circle);font:var(--t-caption1) var(--font-ui);box-shadow:var(--shadow-16);z-index:900;max-width:calc(100vw - 32px);box-sizing:border-box;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}.s360-toast[data-on=true]{opacity:1;pointer-events:auto}.s360-toast.bad:before,.s360-toast.ok:before,.s360-toast.warn:before{content:"";width:6px;height:6px;border-radius:50%;flex:none}.s360-toast.ok:before{background:var(--success)}.s360-toast.warn:before{background:var(--warning)}.s360-toast.bad:before{background:var(--danger)}.s360-scrim{position:fixed;inset:0;background:var(--scrim);z-index:800}.s360-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:hidden;display:flex;flex-direction:column;background:var(--bg-card);border-radius:var(--radius-2xl);box-shadow:var(--shadow-28);padding:var(--space-xxl);box-sizing:border-box;z-index:801;color:var(--fg-1);font:var(--t-body1) var(--font-ui)}.s360-dialog>.head{flex:none;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-xxs) var(--space-m);margin-bottom:var(--space-m)}.s360-dialog>.head>h2{flex:1 1;min-width:0}.s360-dialog>.head>.sub{flex-basis:100%}.s360-dialog>.head h2{font:var(--t-subtitle1) var(--font-ui);margin:0;letter-spacing:-.01em}.s360-dialog>.head .sub{font:var(--t-caption1) var(--font-ui);color:var(--fg-3);margin:var(--space-xxs) 0 0}.s360-dialog>.body{flex:1 1 auto;min-height:0;overflow-y:auto;font:var(--t-body2) var(--font-ui);color:var(--fg-2)}.s360-dialog>.body p{margin:0 0 var(--space-s)}.s360-dialog>.body p:last-child{margin-bottom:0}.s360-dialog>.foot{flex:none;display:flex;justify-content:flex-end;gap:var(--space-s);margin-top:var(--space-xl)}.s360-scrim.full,.s360-scrim.panel{display:flex;align-items:center;justify-content:center;padding:var(--space-l)}.s360-dialog.full,.s360-dialog.panel{position:static;transform:none;margin:0}.s360-dialog.panel{width:min(880px,100%);max-height:min(88vh,calc(100vh - 32px))}.s360-dialog.full{width:96vw;height:96vh;max-width:none;max-height:none}.s360-seg{gap:2px;padding:2px;border:1px solid var(--stroke-1);border-radius:var(--radius-md);background:var(--bg-card);max-width:100%;overflow-x:auto}.s360-seg,.s360-seg>button{display:inline-flex;align-items:center;box-sizing:border-box}.s360-seg>button{justify-content:center;gap:6px;height:26px;padding:0 10px;flex:none;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--fg-3);font:var(--t-caption1) var(--font-ui);font-weight:600;white-space:nowrap;cursor:pointer;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background-color .13s,color .13s}.s360-seg>button:hover{color:var(--fg-1)}.s360-seg>button[aria-pressed=true]{background:var(--brand-violet-50);color:var(--brand-violet)}.s360-seg>button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.s360-seg>button[disabled]{opacity:.45;cursor:not-allowed}.s360-seg>button svg{width:14px;height:14px;flex:none}.s360-switch{position:relative;display:inline-block;width:36px;height:20px;padding:0;box-sizing:border-box;flex:none;border:0;border-radius:var(--radius-circle);background:var(--bg-4);cursor:pointer;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background-color .15s}.s360-switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--bg-card);box-shadow:var(--shadow-2);transition:transform .15s}.s360-switch[aria-checked=true]{background:var(--brand-violet)}.s360-switch[aria-checked=true]:after{transform:translateX(16px)}.s360-switch:focus-visible{outline:none;box-shadow:var(--focus-ring)}.s360-switch[disabled]{opacity:.45;cursor:not-allowed}.s360-checkbox,.s360-radio,.s360-ui input[type=checkbox],.s360-ui input[type=radio]{accent-color:var(--brand-violet)}.s360-checkbox,.s360-radio{display:inline-block;width:16px;height:16px;margin:0;box-sizing:border-box;flex:none;vertical-align:middle;border:1px solid var(--stroke-2);background:var(--bg-card);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background-color .13s,border-color .13s}.s360-checkbox{border-radius:var(--radius-sm)}.s360-radio{border-radius:50%}.s360-checkbox:checked,.s360-checkbox[aria-checked=true],.s360-radio:checked,.s360-radio[aria-checked=true]{border-color:var(--brand-violet);background:var(--brand-violet)}.s360-checkbox:checked{background-image:linear-gradient(45deg,transparent 0 45%,var(--fg-on-brand) 45% 55%,transparent 55%),linear-gradient(135deg,transparent 0 45%,var(--fg-on-brand) 45% 55%,transparent 55%);background-size:4px 6px,7px 9px;background-position:3px 6px,5px 3px;background-repeat:no-repeat}.s360-radio:checked{box-shadow:inset 0 0 0 3px var(--bg-card)}.s360-checkbox:focus-visible,.s360-radio:focus-visible{outline:none;box-shadow:var(--focus-ring)}.s360-radio:checked:focus-visible{box-shadow:inset 0 0 0 3px var(--bg-card),var(--focus-ring)}.s360-checkbox[disabled],.s360-radio[disabled]{opacity:.45;cursor:not-allowed}.s360-progress{display:block;height:6px;border-radius:var(--radius-circle);background:var(--bg-3);overflow:hidden}.s360-progress>.bar,.s360-progress>i{display:block;height:100%;width:0;border-radius:var(--radius-circle);background:var(--brand-violet);transition:width .25s}.s360-progress.ok>.bar,.s360-progress.ok>i{background:var(--success)}.s360-progress.warn>.bar,.s360-progress.warn>i{background:var(--warning)}.s360-progress.bad>.bar,.s360-progress.bad>i{background:var(--danger)}.s360-separator{display:block;height:1px;border:0;margin:var(--space-m) 0;background:var(--stroke-1)}.s360-separator.vertical{display:inline-block;width:1px;height:1em;margin:0 var(--space-s);vertical-align:middle}.s360-menu{position:absolute;z-index:700;min-width:180px;padding:4px;box-sizing:border-box;background:var(--bg-card);border:1px solid var(--stroke-1);border-radius:var(--radius-lg);box-shadow:var(--shadow-16);display:flex;flex-direction:column;gap:1px;margin:0;list-style:none}.s360-menu>a,.s360-menu>button{display:flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 10px;box-sizing:border-box;border:0;border-radius:var(--radius-md);background:transparent;color:var(--fg-1);font:var(--t-body1) var(--font-ui);text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;transition:background-color .13s}.s360-menu>a:hover,.s360-menu>button:hover{background:var(--bg-violet-tint)}.s360-menu>a:focus-visible,.s360-menu>button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.s360-menu>button[disabled]{opacity:.45;cursor:not-allowed}.s360-menu>a svg,.s360-menu>button svg{width:16px;height:16px;flex:none;color:var(--fg-2)}.s360-menu>a[aria-current=page],.s360-menu>button[aria-current=true]{background:var(--brand-violet-50);color:var(--brand-violet);font-weight:600}.s360-menu>.danger{color:var(--danger)}.s360-menu>.danger:hover{background:var(--danger-bg)}.s360-menu>.danger svg{color:var(--danger)}.s360-menu>.s360-separator{margin:4px 0}.s360-table-wrap{overflow-x:auto;border:1px solid var(--stroke-1);border-radius:var(--radius-lg);background:var(--bg-card)}.s360-table-wrap table{width:100%;border-collapse:collapse;font:var(--t-body1) var(--font-ui)}.s360-table-wrap th{text-align:left;font:600 9.5px/16px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3);padding:8px 12px;white-space:nowrap;border-bottom:1px solid var(--stroke-1);background:var(--bg-row-stripe)}.s360-table-wrap td{padding:8px 12px;border-bottom:1px solid var(--table-border)}.s360-table-wrap tr:last-child td{border-bottom:0}