:root{ --zoom:1; /* Base backgrounds */ --bg0:#060709; --bg1:#0a0c10; /* Strokes - consistent opacity scale */ --stroke:rgba(255,255,255,.07); --strokeLight:rgba(255,255,255,.04); --strokeMed:rgba(255,255,255,.10); /* Text - consistent hierarchy */ --text:rgba(240,244,255,.91); --textMuted:rgba(155,165,190,.68); --textDim:rgba(120,132,165,.50); /* Surfaces */ --surface:rgba(255,255,255,.025); --surfaceHover:rgba(255,255,255,.045); --surfaceActive:rgba(255,255,255,.06); /* Shadows */ --shadow:0 16px 48px rgba(0,0,0,.50); --shadow2:0 8px 24px rgba(0,0,0,.32); /* Radii */ --r:6px; --r2:5px; /* Fonts */ --mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; --sans:"Manrope", ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; --brand:"Sora","Manrope", ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; /* Icons */ --icon:rgba(175,185,210,.65); --iconStrong:rgba(220,228,248,.85); /* Accent - consistent blue */ --accent:rgb(95,175,255); --accentGlow:rgba(95,175,255,.12); --accentBorder:rgba(95,175,255,.22); --accentBg:rgba(95,175,255,.07); /* Success - consistent green */ --success:rgb(75,200,130); --successBg:rgba(75,200,130,.07); --successBorder:rgba(75,200,130,.20); /* Tree */ --tree:rgba(195,205,230,.10); --treeNode:rgba(200,212,238,.52); } *{box-sizing:border-box;} html,body{height:100%;} body{ margin:0; padding:0; font-family:var(--sans); color:var(--text); overflow:hidden; width:100vw; height:100vh; background: radial-gradient(800px 500px at 10% 5%, rgba(95,175,255,.08), transparent 60%), radial-gradient(700px 500px at 90% 8%, rgba(75,200,130,.05), transparent 65%), linear-gradient(180deg, var(--bg1), var(--bg0)); letter-spacing:.04px; } #zoomRoot{ transform:scale(var(--zoom)); transform-origin:0 0; width:calc(100vw / var(--zoom)); height:calc(100vh / var(--zoom)); overflow:hidden; box-sizing:border-box; } .app{height:100%; display:flex; flex-direction:column; position:relative; overflow:hidden;} .fa, i.fa-solid, i.fa-regular, i.fa-light, i.fa-thin{color:var(--icon)!important;} .topbar{ display:flex; align-items:center; gap:14px; padding:12px 14px; height:72px; flex:0 0 72px; border-bottom:1px solid var(--stroke); background: linear-gradient(135deg, transparent 0%, transparent 48%, rgba(255,255,255,.015) 50%, transparent 52%, transparent 100%) 0 0 / 8px 8px, linear-gradient(180deg, rgba(22,26,38,1), rgba(18,22,32,1)); min-width:0; z-index:5; position:relative; box-sizing:border-box; } .topbar::before{ content:""; position:absolute; inset:0; background: radial-gradient(circle, rgba(180,210,255,.096) 2px, transparent 2.5px) 0 0 / 12px 12px, radial-gradient(circle, rgba(220,230,255,.08) 2px, transparent 2.5px) 6px 6px / 12px 12px; pointer-events:none; z-index:1; -webkit-mask-image: linear-gradient(90deg, black 0%, rgba(0,0,0,.5) 20%, transparent 40%); mask-image: linear-gradient(90deg, black 0%, rgba(0,0,0,.5) 20%, transparent 40%); } .topbar::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(255,255,255,.03), transparent); pointer-events:none; z-index:0; } .brand{display:flex; align-items:center; gap:12px; min-width:0; flex:1 1 auto; position:relative; z-index:1;} .appIcon{ display:flex; align-items:center; justify-content:center; flex:0 0 auto; filter: drop-shadow(0 8px 16px rgba(0,0,0,.35)); overflow:visible; transition: transform .4s cubic-bezier(.34,1.56,.64,1), filter .3s ease; cursor:pointer; position:relative; } .appIconGlow{ position:absolute; inset:-15px; border-radius:50%; pointer-events:none; opacity:0; transition:opacity .4s ease; } .appIconGlow::before{ content:""; position:absolute; inset:0; border-radius:50%; background:radial-gradient(circle, rgba(100,180,255,.25), rgba(130,230,180,.15), transparent 70%); transform:scale(.5); transition:transform .4s ease; } .appIconGlow::after{ content:""; position:absolute; inset:0; border-radius:50%; background:conic-gradient(from 0deg, rgba(100,180,255,.5), rgba(130,230,180,.5), rgba(210,160,255,.5), rgba(100,180,255,.5)); mask:radial-gradient(circle, transparent 45%, black 47%, black 53%, transparent 55%); -webkit-mask:radial-gradient(circle, transparent 45%, black 47%, black 53%, transparent 55%); animation:none; } @keyframes logoSpin{ 0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);} } @keyframes logoWiggle{ 0%,100%{transform:rotate(0deg) scale(1);} 10%{transform:rotate(-12deg) scale(1.15);} 20%{transform:rotate(10deg) scale(1.12);} 30%{transform:rotate(-8deg) scale(1.18);} 40%{transform:rotate(6deg) scale(1.14);} 50%{transform:rotate(-4deg) scale(1.2);} 60%{transform:rotate(3deg) scale(1.16);} 70%{transform:rotate(-2deg) scale(1.12);} 80%{transform:rotate(1deg) scale(1.08);} 90%{transform:rotate(0deg) scale(1.04);} } .appIcon:hover{ animation:logoWiggle .8s ease-out; filter: drop-shadow(0 0 20px rgba(100,180,255,.5)) drop-shadow(0 0 40px rgba(130,230,180,.3)) drop-shadow(0 12px 24px rgba(0,0,0,.4)); } .appIcon:hover .appIconGlow{ opacity:1; } .appIcon:hover .appIconGlow::before{ transform:scale(1.2); } .appIcon:hover .appIconGlow::after{ animation:logoSpin 3s linear infinite; } .appIcon i{ font-size:36px; line-height:1; background:linear-gradient(135deg, rgba(100,180,255,.98), rgba(130,230,180,.92), rgba(210,160,255,.82)); -webkit-background-clip:text; background-clip:text; color:transparent!important; -webkit-text-stroke: 0.5px rgba(0,0,0,.16); opacity:.98; transition:all .3s ease; position:relative; z-index:2; } .appIcon:hover i{ background:linear-gradient(135deg, rgba(130,210,255,1), rgba(160,250,200,1), rgba(230,180,255,1)); -webkit-background-clip:text; background-clip:text; } .brandText{min-width:0; position:relative; z-index:1;} .appName{ font-family:var(--brand); font-weight:900; font-size:18px; line-height:1.02; letter-spacing:.35px; margin:0; padding:0; transition:text-shadow .3s ease; } .brand:hover .appName{ text-shadow:0 0 20px rgba(100,180,255,.4), 0 0 40px rgba(130,230,180,.2); } .tagline{ margin-top:5px; font-size:11.5px; line-height:1.2; color:rgba(180,188,210,.76); letter-spacing:.18px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:52vw; transition:color .3s ease; } .brand:hover .tagline{ color:rgba(200,210,230,.9); } .actions{ display:flex; align-items:center; gap:8px; flex:0 0 auto; flex-wrap:nowrap; white-space:nowrap; position:relative; z-index:7; } .actionGroup{ display:flex; align-items:center; gap:6px; } .actionDivider{ width:1px; height:28px; background:linear-gradient(180deg, transparent, rgba(255,255,255,.12) 20%, rgba(255,255,255,.12) 80%, transparent); margin:0 4px; } /* Zoom control */ .zoomControl{ display:flex; align-items:center; gap:0; background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.015)); border:1px solid rgba(255,255,255,.08); border-radius:8px; padding:2px; box-shadow:0 2px 8px rgba(0,0,0,.15), inset 0 1px 0 rgba(255,255,255,.05); } .zoomBtn{ width:28px; height:28px; border:none; background:transparent; border-radius:6px; color:var(--text); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all .15s ease; } .zoomBtn:hover{ background:rgba(255,255,255,.08); } .zoomBtn:active{ background:rgba(255,255,255,.12); transform:scale(.95); } .zoomBtn .fa{font-size:10px; opacity:.8;} .zoomValue{ min-width:48px; text-align:center; font-family:var(--mono); font-size:11px; font-weight:600; color:var(--text); opacity:.9; cursor:pointer; padding:4px 6px; border-radius:4px; transition:background .15s ease; } .zoomValue:hover{ background:rgba(255,255,255,.06); } /* Toolbar buttons */ .toolbarBtn{ width:34px; height:34px; border:1px solid rgba(255,255,255,.08); border-radius:8px; background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02)); color:var(--text); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all .2s cubic-bezier(.4,0,.2,1); position:relative; overflow:hidden; box-shadow:0 2px 6px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.06); } .toolbarBtn::before{ content:""; position:absolute; inset:0; background:radial-gradient(circle at 50% 0%, rgba(255,255,255,.15), transparent 70%); opacity:0; transition:opacity .2s ease; } .toolbarBtn:hover{ border-color:rgba(255,255,255,.15); background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.03)); transform:translateY(-1px); box-shadow:0 4px 12px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.1); } .toolbarBtn:hover::before{opacity:1;} .toolbarBtn:active{ transform:translateY(0); box-shadow:0 1px 4px rgba(0,0,0,.15); } .toolbarBtn .fa{font-size:13px; opacity:.85; transition:transform .2s ease;} .toolbarBtn:hover .fa{transform:scale(1.1);} /* Primary split button styling */ .splitBtn.primary{ border-color:rgba(95,175,255,.25); background:linear-gradient(180deg, rgba(95,175,255,.12), rgba(95,175,255,.04)); box-shadow:0 2px 8px rgba(0,0,0,.15), 0 4px 20px rgba(95,175,255,.1), inset 0 1px 0 rgba(255,255,255,.1); } .splitBtn.primary:hover{ border-color:rgba(95,175,255,.4); box-shadow:0 4px 12px rgba(0,0,0,.2), 0 8px 32px rgba(95,175,255,.15), inset 0 1px 0 rgba(255,255,255,.15); } .splitBtn.primary .drop{ border-left-color:rgba(95,175,255,.2); } .btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:9px 14px; border-radius:var(--r2); border:1px solid rgba(255,255,255,.08); background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02)); color:var(--text); cursor:pointer; user-select:none; box-shadow: 0 2px 4px rgba(0,0,0,.2), 0 8px 24px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.08), inset 0 -1px 0 rgba(0,0,0,.1); transition:all .2s cubic-bezier(.4,0,.2,1); font-size:12.5px; font-weight:700; letter-spacing:.02em; position:relative; overflow:hidden; } .btn::before{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(255,255,255,.1), transparent 50%); opacity:0; transition:opacity .2s ease; } .btn:hover{ border-color:rgba(255,255,255,.15); background:linear-gradient(180deg, rgba(255,255,255,.09), rgba(255,255,255,.04)); transform:translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,.2), 0 12px 32px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.12), inset 0 -1px 0 rgba(0,0,0,.1); } .btn:hover::before{opacity:1;} .btn:active{ transform:translateY(0); box-shadow: 0 1px 2px rgba(0,0,0,.2), 0 4px 12px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.06); } .btn.primary{ border-color:rgba(95,175,255,.3); background:linear-gradient(180deg, rgba(95,175,255,.2), rgba(95,175,255,.08)); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.3); } .btn.primary::before{ background:linear-gradient(180deg, rgba(255,255,255,.15), transparent 60%); } .btn.primary:hover{ border-color:rgba(95,175,255,.45); background:linear-gradient(180deg, rgba(95,175,255,.28), rgba(95,175,255,.12)); box-shadow: 0 4px 8px rgba(0,0,0,.2), 0 12px 32px rgba(95,175,255,.2), 0 0 0 1px rgba(95,175,255,.1), inset 0 1px 0 rgba(255,255,255,.15); } .btn .fa{font-size:14px; opacity:.95; color:var(--iconStrong)!important; transition:transform .2s ease; position:relative; z-index:1;} .btn.primary .fa{color:#fff!important;} .btn:hover .fa{transform:scale(1.1);} .splitBtn{ display:inline-flex; border-radius:var(--r2); overflow:hidden; border:1px solid rgba(255,255,255,.08); box-shadow: 0 2px 4px rgba(0,0,0,.2), 0 8px 24px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.06); background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02)); position:relative; z-index:8; transition:all .2s ease; } .splitBtn:hover{ border-color:rgba(255,255,255,.14); box-shadow: 0 4px 8px rgba(0,0,0,.2), 0 12px 32px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.08); transform:translateY(-1px); } .splitBtn .btn{border:none; box-shadow:none; border-radius:0; background:transparent; padding:9px 12px; transform:none;} .splitBtn .btn::before{display:none;} .splitBtn .btn:hover{background:rgba(255,255,255,.06); transform:none; box-shadow:none;} .splitBtn .drop{ width:40px; padding:8px 0; border-left:1px solid rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; transition:background .15s ease; background:linear-gradient(180deg, rgba(255,255,255,.02), transparent); } .splitBtn .drop:hover{background:rgba(255,255,255,.06);} .splitBtn .drop .fa{font-size:16px; opacity:.88; color:var(--iconStrong)!important; transition:transform .2s ease;} .splitBtn .drop:hover .fa{transform:translateY(2px);} .dropdownPortal{ position:fixed; z-index:99999; min-width:320px; max-width:560px; max-height:360px; overflow:auto; border-radius:7px; border:1px solid rgba(255,255,255,.12); background:rgba(18,20,26,.94); box-shadow:0 26px 70px rgba(0,0,0,.70); backdrop-filter:blur(16px); padding:6px; display:none; transform:scale(var(--zoom)); transform-origin:top left; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.14) rgba(255,255,255,.02); } .dropdownPortal::-webkit-scrollbar{width:4px; height:4px;} .dropdownPortal::-webkit-scrollbar-track{background:rgba(255,255,255,.015);} .dropdownPortal::-webkit-scrollbar-thumb{background:rgba(255,255,255,.11); border-radius:999px;} .dropdownPortal::-webkit-scrollbar-button{width:0; height:0; display:none;} .dropItem{display:flex; align-items:center; gap:10px; padding:10px 10px; border-radius:6px; cursor:pointer; user-select:none; color:rgba(246,248,255,.92); font-weight:760; font-size:12.7px; letter-spacing:.12px; line-height:1.25; transition:all .15s ease; position:relative;} .dropItem:hover{background:rgba(255,255,255,.06); padding-right:36px;} .dropItem:active{transform:none;} .dropIcon{width:18px; height:18px; display:flex; align-items:center; justify-content:center; flex:0 0 auto; opacity:.9; transition:transform .2s ease;} .dropItem:hover .dropIcon{transform:scale(1.1);} .dropIcon .fa{font-size:14px; color:var(--iconStrong)!important;} .dropName{white-space:nowrap; flex:1 1 auto; min-width:0; transition:mask-image .15s ease, -webkit-mask-image .15s ease;} .dropItem:hover .dropName{overflow:hidden; mask-image:linear-gradient(90deg, #000 80%, transparent 100%); -webkit-mask-image:linear-gradient(90deg, #000 80%, transparent 100%);} .dropRemove{position:absolute; right:8px; top:50%; transform:translateY(-50%); width:24px; height:24px; border-radius:8px; background:rgba(255,100,100,.15); border:1px solid rgba(255,100,100,.25); color:rgba(255,180,180,.9); display:none; align-items:center; justify-content:center; font-size:12px; cursor:pointer; transition:all .15s ease;} .dropItem:hover .dropRemove{display:flex;} .dropRemove:hover{background:rgba(255,100,100,.25); border-color:rgba(255,100,100,.4); color:rgba(255,220,220,1);} .dropEmpty{padding:10px 10px; color:rgba(165,172,196,.78); font-size:12.5px;} .seg{display:inline-flex; border:1px solid rgba(255,255,255,.09); border-radius:var(--r2); overflow:hidden; background:rgba(255,255,255,.02); box-shadow:var(--shadow2); transition:border-color .15s ease;} .seg:hover{border-color:rgba(255,255,255,.14);} .seg .btn{border:none; box-shadow:none; border-radius:0; padding:8px 9px; background:transparent; font-weight:820; transform:none;} .seg .btn:hover{background:rgba(255,255,255,.06); transform:none; box-shadow:none;} .seg .btn:active{background:rgba(255,255,255,.08);} .seg .mid{border-left:1px solid rgba(255,255,255,.10); border-right:1px solid rgba(255,255,255,.10); min-width:62px; font-variant-numeric:tabular-nums;} .switch{ display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:6px 10px; border-radius:8px; border:1px solid rgba(255,255,255,.08); background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.015)); box-shadow:0 2px 6px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.05); cursor:pointer; user-select:none; font-size:11.5px; font-weight:650; letter-spacing:.01em; color:var(--text); line-height:1; transition:all .2s ease; } .switch:hover{ border-color:rgba(255,255,255,.14); background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.025)); box-shadow:0 4px 10px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.08); } .switch input{display:none;} .track{ width:32px; height:18px; border-radius:999px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.10); position:relative; transition:all .25s cubic-bezier(.4,0,.2,1); flex:0 0 auto; display:flex; align-items:center; } .knob{ margin-left:2px; width:14px; height:14px; border-radius:999px; background:linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,.18)); box-shadow:0 2px 6px rgba(0,0,0,.25); transition:transform .2s cubic-bezier(.4,0,.2,1), background .2s ease, box-shadow .2s ease; } .switch input:checked + .track{ background:linear-gradient(90deg, rgba(95,175,255,.25), rgba(130,200,255,.2)); border-color:rgba(95,175,255,.3); box-shadow:0 0 12px rgba(95,175,255,.15); } .switch input:checked + .track .knob{ transform:translateX(14px); background:linear-gradient(180deg, rgba(255,255,255,.9), rgba(200,230,255,.8)); box-shadow:0 2px 8px rgba(95,175,255,.3), 0 0 0 2px rgba(95,175,255,.15); } .content{flex:1 1 auto; min-height:0; padding:12px; display:grid; grid-template-columns:calc(62% - 7px) 14px calc(38% - 7px); gap:0; overflow:hidden;} @media (max-width:1100px){ .content{grid-template-columns:1fr; gap:12px; padding:12px;} .dividerWrap{display:none;} .actions{flex-wrap:wrap;} .seg{width:100%;} .dock{grid-template-columns:1fr;} .dockDividerWrap{display:none;} .tagline{max-width:70vw;} }