/* Local webfonts are declared in apps/studio/vendor/fonts.css (linked from index.html).
   Paths below keep core/ self-describing if system.css is loaded alone. */
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../apps/studio/vendor/fonts/PlusJakartaSans-Light.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../apps/studio/vendor/fonts/PlusJakartaSans-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../apps/studio/vendor/fonts/PlusJakartaSans-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../apps/studio/vendor/fonts/PlusJakartaSans-SemiBold.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../apps/studio/vendor/fonts/PlusJakartaSans-Bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../apps/studio/vendor/fonts/PlusJakartaSans-ExtraBold.woff2') format('woff2');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('../apps/studio/vendor/fonts/JetBrainsMono-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('../apps/studio/vendor/fonts/JetBrainsMono-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

:root {
  --bg-primary: #090a0f;
  --bg-secondary: #12151e;
  --bg-card: #181c29;
  --bg-card-hover: #1f2436;
  --border-color: rgba(255,255,255,0.08);
  --border-color-focus: rgba(0,240,255,0.4);
  --text-primary: #f0f2f5;
  --text-secondary: #94a3b8;
  --text-muted: #94a3b8;
  --accent-primary: #00f0ff;
  --accent-primary-rgb: 0,240,255;
  --accent-secondary: #7000ff;
  --accent-gradient: linear-gradient(135deg,#00f0ff 0%,#7000ff 100%);
  --danger: #ff3366;
  --success: #00ff66;
  --sidebar-width: 280px;
  --header-height: 60px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 18px;
  --shadow-subtle: 0 4px 20px rgba(0,0,0,0.4);
  --shadow-glow: 0 0 25px rgba(0,240,255,0.2);
  --transition: all 0.25s cubic-bezier(0.16,1,0.3,1);
  --glass-blur: 16px;
}

[data-theme="light"] {
  --bg-primary: #f8fafc;
  --bg-secondary: #ffffff;
  --bg-card: #ffffff;
  --bg-card-hover: #f1f5f9;
  --border-color: rgba(0,0,0,0.08);
  --border-color-focus: rgba(14,116,144,0.4);
  --text-primary: #0f172a;
  --text-secondary: #475569;
  --text-muted: #94a3b8;
  --accent-primary: #0284c7;
  --accent-primary-rgb: 2,132,199;
  --accent-secondary: #7c3aed;
  --accent-gradient: linear-gradient(135deg,#0284c7 0%,#7c3aed 100%);
  --shadow-subtle: 0 4px 20px rgba(0,0,0,0.05);
  --shadow-glow: 0 0 20px rgba(2,132,199,0.15);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-font-smoothing:antialiased}
body{
  font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  background:var(--bg-primary);color:var(--text-primary);
  min-height:100vh;overflow-x:hidden;line-height:1.5;
}
#app-layout{display:grid;grid-template-columns:var(--sidebar-width) 1fr 300px;height:100vh;width:100vw;overflow:hidden}
.app-column{height:100vh;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}

::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bg-card);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}

.glass-panel{background:var(--bg-secondary);border-right:1px solid var(--border-color);transition:background var(--transition),border-color var(--transition)}
.glass-panel:last-child{border-right:none}

.app-header{
  height:var(--header-height);min-height:var(--header-height);
  display:flex;align-items:center;padding:0 20px;
  border-bottom:1px solid var(--border-color);background:var(--bg-secondary);
  position:sticky;top:0;z-index:10;gap:12px;
}
.app-header h1,.app-header h2,.app-header h3{font-size:.9rem;font-weight:600;letter-spacing:-.01em}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:8px 16px;border-radius:var(--radius-sm);
  border:1px solid var(--border-color);background:var(--bg-card);
  color:var(--text-primary);font-size:.82rem;font-weight:600;
  cursor:pointer;transition:var(--transition);white-space:nowrap;user-select:none;line-height:1.4;
}
.btn:hover{border-color:var(--accent-primary)}
.btn:active{transform:scale(.97)}
.btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}
.btn-primary{background:var(--accent-gradient);color:#fff;border:none;box-shadow:var(--shadow-glow)}
.btn-primary:hover{opacity:.9;transform:translateY(-1px)}
.btn-secondary{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-color)}
.btn-secondary:hover{border-color:var(--accent-primary)}
.btn-ghost{background:transparent;border-color:transparent;color:var(--text-secondary)}
.btn-ghost:hover{background:rgba(var(--accent-primary-rgb),0.1);color:var(--accent-primary)}
.btn-sm{padding:5px 10px;font-size:.75rem}
.btn-lg{padding:10px 20px;font-size:.9rem}
.btn-block{width:100%;justify-content:center}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-danger-outline{background:transparent;color:var(--danger);border:1px solid rgba(255,51,102,0.3)}
.btn-danger-outline:hover{background:rgba(255,51,102,0.1)}
.btn-icon{padding:8px;min-width:36px;min-height:36px}

.input-field{
  width:100%;padding:9px 14px;border-radius:var(--radius-sm);
  border:1px solid var(--border-color);background:var(--bg-primary);
  color:var(--text-primary);font-size:.85rem;font-family:inherit;
  outline:none;transition:var(--transition);
}
.input-field:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px rgba(var(--accent-primary-rgb),0.15)}
.input-field::placeholder{color:var(--text-muted)}
textarea.input-field{resize:vertical;min-height:80px;line-height:1.5}

.card{
  background:var(--bg-card);border:1px solid var(--border-color);
  border-radius:var(--radius-md);padding:16px;transition:var(--transition);
}
.card:hover{box-shadow:var(--shadow-subtle)}

.toast-container{
  position:fixed;bottom:24px;right:24px;z-index:9999;
  display:flex;flex-direction:column;gap:8px;pointer-events:none;
}
.toast{
  display:flex;align-items:center;gap:10px;
  padding:12px 20px;border-radius:var(--radius-sm);
  background:var(--bg-card);border:1px solid var(--border-color);
  border-left:4px solid var(--accent-primary);
  box-shadow:0 10px 30px rgba(0,0,0,0.5);color:var(--text-primary);
  font-size:.85rem;font-weight:500;pointer-events:auto;
  animation:toastIn .3s cubic-bezier(.16,1,.3,1) forwards;max-width:380px;
}
.toast.toast-out{animation:toastOut .3s ease forwards}
.toast.success{border-left-color:var(--success)}
.toast.error{border-left-color:var(--danger)}
.toast.info{border-left-color:var(--accent-primary)}

@keyframes toastIn{from{opacity:0;transform:translateY(20px);scale:.95}to{opacity:1;transform:translateY(0);scale:1}}
@keyframes toastOut{from{opacity:1;transform:translateY(0);scale:1}to{opacity:0;transform:translateY(20px);scale:.95}}

.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;z-index:9998;animation:fadeIn .2s ease;
}
.modal-box{
  background:var(--bg-secondary);border-radius:var(--radius-lg);padding:28px;
  min-width:360px;max-width:520px;width:90%;box-shadow:var(--shadow-subtle);
  border:1px solid var(--border-color);animation:modalIn .25s ease;
}
.modal-title{font-size:1.1rem;font-weight:600;margin-bottom:12px}
.modal-body{font-size:.9rem;color:var(--text-secondary);margin-bottom:20px;line-height:1.6}
.modal-actions{display:flex;gap:10px;justify-content:flex-end}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}

.empty-state{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:40px 20px;color:var(--text-muted);
}
.empty-state i{font-size:2.5rem;margin-bottom:12px}
.empty-state p{font-size:.9rem}

.pill-group{display:flex;flex-wrap:wrap;gap:6px}
.pill{
  display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;
  border:1px solid var(--border-color);background:var(--bg-card);
  color:var(--text-secondary);font-size:.78rem;font-weight:500;
  cursor:pointer;transition:var(--transition);user-select:none;
  font-family:inherit;line-height:1.4;
}
.pill:hover{border-color:var(--accent-primary);color:var(--accent-primary)}
.pill.active{background:var(--accent-gradient);border-color:transparent;color:#fff}
.pill:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}

.mobile-tab-bar{display:none}

.skip-link{
  position:absolute;left:12px;top:12px;z-index:10000;
  padding:10px 14px;border-radius:var(--radius-sm);
  background:var(--accent-primary);color:#090a0f;font-weight:700;font-size:.85rem;
  text-decoration:none;transform:translateY(-120%);
}
.skip-link:focus{transform:translateY(0);outline:2px solid #fff;outline-offset:2px}
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.action-panel-heading{font-size:.9rem;font-weight:600;letter-spacing:-.01em}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:0.01ms!important;animation-iteration-count:1!important;
    transition-duration:0.01ms!important;scroll-behavior:auto!important;
  }
}

.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flex{display:flex}
.flex-col{flex-direction:column}
.flex-1{flex:1}
.items-center{align-items:center}
.justify-between{justify-content:space-between}
.justify-center{justify-content:center}
.gap-sm{gap:8px}
.gap-md{gap:12px}
.gap-lg{gap:16px}
.mt-sm{margin-top:8px}
.mt-md{margin-top:12px}
.mt-lg{margin-top:16px}
.mb-sm{margin-bottom:8px}
.mb-md{margin-bottom:12px}
.p-sm{padding:8px}
.p-md{padding:12px}
.p-lg{padding:16px}
.hidden{display:none!important}

@media(max-width:968px){
  #app-layout{grid-template-columns:1fr}
  .app-column{height:auto;max-height:none;overflow-y:visible}
  .app-column:not(.mobile-active){display:none}
  .mobile-tab-bar{
    display:flex;position:fixed;bottom:0;left:0;right:0;height:56px;
    background:var(--bg-secondary);backdrop-filter:blur(16px);
    border-top:1px solid var(--border-color);z-index:100;
  }
  .mobile-tab{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:2px;font-size:.65rem;color:var(--text-muted);cursor:pointer;
    transition:color var(--transition);border:none;background:none;padding:4px;
  }
  .mobile-tab.active{color:var(--accent-primary)}
  .mobile-tab:focus-visible{outline:2px solid var(--accent-primary);outline-offset:-2px}
  .mobile-tab i{font-size:1.3rem}
  body{overflow-y:auto}
}
