
:root{--bg:#06040f;--deep:#02010a;--nebula:#150b40;--violet:#301878;--panel:rgba(28,20,54,.62);--panel2:rgba(40,28,74,.5);--glass-line:rgba(180,150,255,.14);--line:rgba(150,120,225,.16);--muted:#a79cc4;--text:#f1ebfb;--accent:#b98cf9;--accent2:#a830d8;--chrome:#f8e0fb;--danger:#f59bb4;--radius:14px;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);font-size:14px;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}button{background:none;color:inherit;border:0}svg.icon{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,h3,p{margin:0}h1{font-size:29px;letter-spacing:-1px;font-weight:600}h2{font-size:16px;font-weight:550;letter-spacing:-.2px}h3{font-size:14px;font-weight:550}.muted{color:var(--muted)}.small{font-size:12px}.mono,code{font-family:"SFMono-Regular",Consolas,monospace;font-size:12px}.layout{min-height:100vh;display:grid;grid-template-columns:236px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:#161519;border-right:1px solid var(--line);padding:29px 18px 18px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:11px;padding:0 12px 28px;font-size:21px;font-weight:650;letter-spacing:-.7px}.brand-mark{width:33px;height:35px;border-radius:9px;background:var(--accent);display:grid;place-items:center;color:#1e1530;font-weight:850;font-size:25px;transform:skew(-5deg)}.brand small{font-size:9px;letter-spacing:1.8px;display:block;font-weight:500;color:var(--muted);margin-top:2px}.server-switch{padding:13px 11px;display:flex;gap:10px;align-items:center;border:1px solid #383340;border-radius:9px;margin-bottom:28px;background:linear-gradient(120deg,#272230,#1e1a24)}.server-switch>.icon{color:var(--accent)}.server-switch strong{font-size:12px;font-weight:550;display:block;margin-bottom:4px}.server-switch small{color:var(--muted);font-size:10px}.nav-label{text-transform:uppercase;letter-spacing:1.6px;color:#6b6071;font-size:9px;font-weight:600;margin:0 14px 10px}.nav-group{margin-bottom:26px}.nav{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:7px;color:#a29ba9;font-size:12px;margin:4px 0;width:100%;text-align:left}.nav.active{background:#2e2440;color:#d4aaf5}.nav:hover{background:#272230;color:var(--text)}.nav.active:before{content:'';position:absolute;left:0;background:var(--accent);height:23px;width:3px;border-radius:0 2px 2px 0}.nav .count{margin-left:auto;background:#362c4a;color:#d4aaf5;padding:2px 6px;font-size:10px;border-radius:4px}.sidebar-bottom{margin-top:auto}.tip{border:1px solid var(--line);border-radius:9px;padding:15px;margin-bottom:19px;background:radial-gradient(ellipse at top right,#2a2338,transparent)}.tip .icon{color:var(--accent);margin-bottom:9px}.tip p{color:var(--muted);font-size:11px;line-height:1.6;margin-top:7px}.tip a{font-size:11px;color:var(--accent);display:flex;align-items:center;gap:6px;margin-top:12px}.profile{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:17px 5px 0}.avatar{height:32px;width:32px;display:grid;place-items:center;background:#36304a;color:#d4c8ee;border-radius:50%;font-weight:600;font-size:11px}.profile strong{font-size:11px;display:block}.profile small{font-size:10px;color:var(--muted);text-transform:capitalize}.icon-button{width:32px;height:32px;display:inline-grid;place-items:center;color:var(--muted);border-radius:6px}.icon-button:hover{background:var(--panel2);color:var(--text)}.workspace{grid-column:2;min-width:0}.topbar{height:77px;border-bottom:1px solid var(--line);padding:0 37px;display:flex;align-items:center;justify-content:space-between;gap:20px}.breadcrumb{display:flex;gap:10px;align-items:center;font-size:11px;color:var(--muted)}.breadcrumb .icon{width:14px}.breadcrumb strong{color:var(--text);font-weight:450}.top-actions{display:flex;gap:17px;align-items:center}.search-trigger{display:flex;gap:9px;align-items:center;color:#7b7388;font-size:11px;padding:8px 10px;border:1px solid var(--line);border-radius:7px;width:220px}.search-trigger .icon{width:15px}.search-trigger kbd{margin-left:auto;font-size:10px;color:var(--muted)}.env{font-size:10px;border:1px solid #3f3548;color:#d0b8e8;background:#241d2e;padding:5px 8px;border-radius:4px}.content{max-width:1600px;margin:0 auto;padding:32px 37px 38px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:20px}.page-heading p{color:var(--muted);font-size:12px;line-height:1.8;margin-top:7px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.button{display:inline-flex;gap:8px;align-items:center;justify-content:center;font-size:11px;font-weight:550;border:1px solid #383240;background:#221e28;border-radius:7px;padding:10px 14px;white-space:nowrap;min-height:36px}.button .icon{width:15px;height:15px}.button:hover{background:#332a40;border-color:#4f4560}.button.primary{background:var(--accent);border-color:var(--accent);color:#1e1530}.button.primary:hover{background:#d0aff8}.button.danger{color:var(--danger);border-color:#573c36;background:#302420}.button.ghost{background:transparent;border-color:var(--line)}.status{display:inline-flex;align-items:center;gap:6px;color:#a5a0a9;font-size:10px;white-space:nowrap}.dot{height:6px;width:6px;background:#878090;border-radius:50%;display:inline-block}.status.online{color:#b6a4e8}.status.online .dot{background:#b891f5;box-shadow:0 0 10px #b891f522}.status.warning{color:#dfbe7f}.status.warning .dot{background:#dfbe7f}.status.danger{color:var(--danger)}.status.danger .dot{background:var(--danger)}.subnav{display:flex;gap:27px;border-bottom:1px solid var(--line);margin-bottom:24px}.subnav button{font-size:11px;color:var(--muted);padding:0 1px 13px;border-bottom:2px solid transparent}.subnav button.active{color:var(--accent);border-color:var(--accent)}.subnav span{margin-left:auto;color:#7a7182;font-size:10px;display:flex;gap:6px;align-items:center;padding-bottom:13px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:23px}.stat{border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;background:linear-gradient(110deg,#1d1a22,#191720)}.stat-head{display:flex;justify-content:space-between;align-items:center;color:#a097a8;font-size:11px}.stat-head .icon{width:17px;color:#7f758e}.stat-value{font-size:29px;letter-spacing:-.8px;font-weight:550;margin:17px 0 10px;display:flex;align-items:center;gap:9px}.stat-value .unit{font-size:13px;color:var(--muted);font-weight:400}.stat-note{color:#7f778b;font-size:10px;display:flex;align-items:center;gap:6px}.stat-note .icon{width:12px;height:12px}.green{color:var(--accent)}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:22px;margin-bottom:23px}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;gap:12px}.panel-header p{color:var(--muted);font-size:11px;margin-top:7px}.text-button{color:var(--accent);font-size:11px;display:inline-flex;align-items:center;gap:5px}.text-button .icon{width:14px}.dropzone{position:relative;border:1px dashed #524461;border-radius:10px;margin:0 22px 20px;min-height:210px;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at center,#2e223855,transparent 75%);text-align:center;padding:24px;transition:background .2s}.dropzone.drag{background:#38294e;border-color:var(--accent)}.upload-art{display:grid;place-items:center;width:54px;height:54px;background:#332840;border:1px solid #504068;border-radius:13px;margin-bottom:19px;box-shadow:0 0 0 7px #2e253a55;transform:rotate(-6deg)}.upload-art .icon{width:25px;height:25px;color:var(--accent);transform:rotate(6deg)}.dropzone h3{font-size:13px;margin-bottom:9px}.dropzone p{font-size:10px;color:var(--muted);line-height:1.8}.dropzone .button{margin-top:18px;padding:8px 14px;min-height:32px}.format-tags{display:flex;justify-content:center;gap:6px;margin-top:15px}.format-tags span{font-size:8px;letter-spacing:.8px;border:1px solid #3e354a;border-radius:3px;color:#9a8caa;padding:3px 5px}.panel-footer{padding:13px 22px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center;color:#8b839e;font-size:10px}.panel-footer .icon{width:14px;height:14px;color:#a589c4}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 20px 18px}.quick{border:1px solid #352f40;background:#201d28;border-radius:8px;padding:16px 13px;text-align:left;display:flex;gap:10px;align-items:center;font-size:11px}.quick:hover{background:#2e2838;border-color:#5a4c70}.quick>.icon{color:#ae9ebf;width:17px}.quick small{display:block;color:#706881;font-size:9px;margin-top:5px}.connect-note{margin:0 20px 20px;background:#242030;border-radius:8px;padding:13px;display:flex;gap:10px;align-items:flex-start}.connect-note>.icon{width:15px;height:15px;color:#a990c7;margin-top:1px}.connect-note h3{font-size:10px;color:#c5b3d9}.connect-note p{font-size:10px;color:#847695;line-height:1.7;margin-top:6px}.section-heading{display:flex;align-items:center;gap:9px}.pill{background:#2e2740;color:#c5add7;border-radius:5px;padding:3px 6px;font-size:9px}.table-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 22px 15px}.filters{display:flex;gap:6px;flex-wrap:wrap}.filter{font-size:10px;color:var(--muted);border:1px solid transparent;border-radius:6px;padding:7px 10px}.filter.active{background:#2e2740;color:#d4c0e9;border-color:#45375a}.filter:hover{color:var(--text)}.input-search{position:relative}.input-search .icon{position:absolute;left:10px;top:9px;width:14px;color:#6e6b80}.input-search input{padding:8px 12px 8px 32px;width:200px;font-size:10px;background:#131218;border:1px solid #332a3b;border-radius:6px;color:var(--text)}table{width:100%;border-collapse:collapse;text-align:left;font-size:11px}th{font-size:9px;font-weight:500;letter-spacing:.4px;color:#807790;background:#171520;padding:12px 21px;white-space:nowrap}td{padding:14px 21px;border-top:1px solid #2a2730;color:#a396ac;max-width:400px}td strong{font-size:11px;color:#d6cddd;font-weight:500}.resource-name{display:flex;align-items:center;gap:11px}.file-icon{width:33px;height:33px;border-radius:7px;background:#2e2840;color:#c4b2d4;display:grid;place-items:center;flex-shrink:0}.file-icon .icon{width:17px}.file-icon.maps{color:#b5c6ed;background:#29313d}.file-icon.weapons{color:#d5b8a9;background:#3a2f29}.file-icon.scripts{color:#c4b4db;background:#332c3d}.resource-name small{font-size:9px;color:#786d86;display:block;margin-top:5px}.table-scroll{overflow:auto}.empty{padding:43px 24px;text-align:center;color:var(--muted);font-size:11px;line-height:1.9}.empty>.icon{width:30px;height:30px;color:#665b77;margin-bottom:12px}.empty h3{color:#c3b9cb;margin-bottom:5px}.empty .button{margin-top:16px}.table-footer{border-top:1px solid var(--line);padding:12px 22px;display:flex;justify-content:space-between;color:#696074;font-size:10px}.page-footer{display:flex;justify-content:space-between;margin-top:25px;font-size:9px;color:#645f74;letter-spacing:.1px}.page-footer span{display:flex;align-items:center;gap:6px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.stack{display:grid;gap:20px}.notice{display:flex;align-items:flex-start;gap:12px;border:1px solid #4b452f;background:#29261b;color:#c7bb95;border-radius:9px;padding:15px 18px;line-height:1.7;font-size:11px;margin-bottom:20px}.notice .icon{color:#d5bc7e;flex-shrink:0}.notice.info{border-color:#3e3550;background:#221c30;color:#b8a8d0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:grid;gap:8px;font-size:11px;color:#baaec4}.field.full{grid-column:1/-1}.field small{font-size:10px;color:var(--muted);line-height:1.7}.field input,.field textarea,.field select{width:100%;padding:11px 12px;border-radius:7px;border:1px solid #3b3544;background:#120f18;color:var(--text);font-size:12px}.field textarea{resize:vertical;min-height:84px}.form-body{padding:0 22px 22px}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.progress{height:5px;border-radius:5px;background:#332a3f;margin:16px 0;overflow:hidden}.progress span{display:block;height:100%;background:var(--accent);transition:width .3s}.job{padding:20px 22px;border-top:1px solid var(--line)}.job-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.job p{font-size:11px;color:var(--muted);line-height:1.7;margin:8px 0}.job-details{background:#161220;border-radius:8px;padding:12px 15px;margin:14px 0;display:grid;gap:13px}.job-resource{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px}.job-resource small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.file-toolbar{padding:15px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.path{font-size:11px;color:#b8aac9;overflow-wrap:anywhere}.file-row{cursor:pointer}.file-row:hover{background:#221c2e}.editor{width:100%;min-height:440px;padding:22px;border:0;resize:vertical;background:#120e18;color:#b4a4d4;font-family:Consolas,monospace;font-size:12px;line-height:1.8;tab-size:4}.terminal{height:370px;background:#100d18;overflow:auto;padding:18px 22px;font-family:Consolas,monospace;font-size:11px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;color:#bdb0cd}.log-time{color:#635a76;margin-right:12px}.command-form{display:flex;gap:10px;border-top:1px solid var(--line);padding:14px 18px;align-items:center}.command-form span{color:var(--accent)}.command-form input{flex:1;min-width:0;background:none;border:0;color:var(--text);padding:8px;font-family:monospace;font-size:12px}.activity-row{display:flex;gap:13px;padding:17px 22px;border-top:1px solid var(--line);align-items:flex-start}.activity-row .icon{color:#9b7fbf;width:16px;margin-top:3px}.activity-row h3{font-size:11px}.activity-row p{font-size:10px;color:var(--muted);margin-top:5px;line-height:1.7;overflow-wrap:anywhere}.activity-row time{font-size:10px;color:#6b607a;margin-left:auto;white-space:nowrap}.login-layout{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-story{display:flex;flex-direction:column;padding:50px 65px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 60% 40%,#352950 0%,#1a1628 43%,#110f18 78%);border-right:1px solid var(--line)}.login-story .brand{padding:0}.login-story:after{content:'';position:absolute;width:550px;height:550px;border:1px solid #a07dda12;border-radius:50%;top:22%;left:10%;box-shadow:0 0 0 60px #a07dda05,0 0 0 120px #a07dda04,0 0 0 180px #a07dda03;pointer-events:none}.login-copy{margin:auto 0;z-index:1;max-width:420px}.eyebrow{text-transform:uppercase;font-size:10px;letter-spacing:2px;color:var(--accent);display:flex;align-items:center;gap:8px;margin-bottom:22px}.login-copy h1{font-size:49px;line-height:1.12;letter-spacing:-2px;font-weight:500}.login-copy h1 em{font-style:normal;color:var(--accent)}.login-copy p{font-size:13px;color:#a397b4;line-height:1.9;margin-top:23px}.login-features{display:flex;gap:18px;margin-top:35px;font-size:10px;color:#9a8dad}.login-features span{display:flex;align-items:center;gap:5px}.login-features .icon{width:13px;color:var(--accent)}.login-story>small{font-size:10px;color:#6e6282}.login-main{display:flex;align-items:center;justify-content:center;padding:40px;background:#151419}.login-card{width:360px;max-width:100%}.login-card h2{font-size:25px;letter-spacing:-.7px}.login-card>p{color:var(--muted);font-size:12px;line-height:1.8;margin:10px 0 30px}.login-card .field{margin:17px 0}.login-card .button{width:100%;margin-top:10px;min-height:42px;font-size:12px}.login-card .foot{font-size:10px;text-align:center;line-height:1.8;color:#736a82;margin-top:24px}.boot{height:100vh;display:flex;gap:16px;align-items:center;justify-content:center;color:var(--muted)}#toast{position:fixed;bottom:24px;left:calc(50% + 100px);transform:translateX(-50%);background:#d4b2f5;color:#1e1530;padding:14px 22px;border-radius:9px;box-shadow:0 10px 50px #0007;z-index:200;max-width:600px;font-size:12px;display:none;line-height:1.6}#toast.error{background:#f6b1a5;color:#3e1711}dialog{width:530px;max-width:calc(100vw - 32px);border:1px solid #463c52;border-radius:15px;background:#1e1a24;color:var(--text);padding:26px;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.modal-head h2{font-size:19px}dialog p{font-size:12px;color:var(--muted);line-height:1.8;margin:10px 0 20px}dialog .field{margin:15px 0}.modal-error{font-size:11px;color:var(--danger);margin-top:14px;line-height:1.6}.search-results{display:grid;gap:5px}.search-result{display:flex;gap:12px;align-items:center;padding:13px 10px;border-radius:7px;text-align:left}.search-result:hover{background:#2e2240}.search-result .icon{color:var(--accent)}.search-result small{color:var(--muted);font-size:10px}.mobile-toggle{display:none}.db-layout{display:grid;grid-template-columns:220px 1fr;gap:20px}.table-select{display:flex;justify-content:space-between;padding:12px 16px;font-size:11px;width:100%;text-align:left}.table-select.active{background:#302540;color:var(--accent)}.table-select:hover{background:#271f32}.db-cell{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.help-copy{padding:0 23px 24px;color:var(--muted);font-size:12px;line-height:1.9}.help-copy h3{color:var(--text);margin:20px 0 8px}.help-copy a{color:var(--accent);text-decoration:underline}.help-copy code{background:#140e1a;padding:3px 5px;border-radius:3px;overflow-wrap:anywhere}.responsive-show{display:none}@media(min-width:1600px){.content{padding-top:40px}.dashboard-grid{grid-template-columns:1.8fr 1fr}.dropzone{min-height:242px}}@media(max-width:1150px){.layout{grid-template-columns:205px 1fr}.sidebar{width:205px;padding-left:12px;padding-right:12px}.content{padding:27px 24px}.topbar{padding:0 24px}.dashboard-grid{gap:16px;grid-template-columns:1.3fr 1fr}.quick{padding:15px 10px;gap:6px}.stats{gap:10px}.stat{padding:16px}.search-trigger{width:165px}.brand{font-size:19px}.two-col{grid-template-columns:1fr}.login-story{padding:40px}.login-copy h1{font-size:42px}}@media(max-width:900px){.dashboard-grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.quick-grid{grid-template-columns:repeat(4,1fr)}.connect-note{margin-bottom:15px}.top-actions .env{display:none}.page-heading{align-items:flex-start}.page-heading>.actions{justify-content:flex-end}.db-layout{grid-template-columns:1fr}.login-layout{grid-template-columns:1fr}.login-story{display:none}.login-main{min-height:100vh}.login-card:before{content:'PARADOX / DEVELOPMENT';display:block;font-size:10px;letter-spacing:2px;color:var(--accent);margin-bottom:45px}.search-trigger{width:130px}.search-trigger kbd{display:none}}@media(max-width:680px){.layout{display:block}.sidebar{transform:translateX(-100%);transition:transform .2s;width:236px;box-shadow:15px 0 70px #0009}.sidebar.open{transform:translateX(0)}.workspace{width:100%}.topbar{height:61px;padding:0 17px}.mobile-toggle{display:inline-grid}.breadcrumb>span:first-of-type{display:none}.top-actions{gap:6px}.search-trigger{width:32px;padding:7px;border:0}.search-trigger span{display:none}.content{padding:23px 16px}h1{font-size:25px}.page-heading{display:block;margin-bottom:24px}.page-heading>.actions{justify-content:flex-start;margin-top:16px}.stat{padding:15px}.stat-value{font-size:26px}.quick-grid{grid-template-columns:1fr 1fr}.table-tools{padding:0 15px 15px;align-items:flex-start;flex-direction:column}.panel-header{padding:18px 16px}.dropzone{margin-left:16px;margin-right:16px}.input-search,.input-search input{width:100%}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.form-body{padding:0 16px 18px}.subnav{gap:22px}.subnav>span{display:none}.file-toolbar{flex-wrap:wrap;padding:14px}.page-footer{gap:15px;line-height:1.7}.page-footer>span:last-child{display:none}#toast{left:50%;width:calc(100% - 30px);max-width:500px}.job-head{align-items:flex-start}.job{padding:18px 16px}.resource-name{gap:8px}td,th{padding-left:15px;padding-right:15px}.activity-row{padding:15px}.activity-row time{font-size:9px}.terminal{padding:14px;font-size:10px}.responsive-hide{display:none}.responsive-show{display:inline-flex}.profile{padding-bottom:6px}.tip{display:none}}
.spawn-code{font-family:"SFMono-Regular",Consolas,monospace;cursor:pointer;transition:background .15s}.spawn-code:hover{background:#2e2740;color:var(--accent)}code.spawn-code{background:#2e2740;color:var(--accent);padding:2px 6px;border-radius:4px;cursor:pointer}
.log-error{color:#f59b94}.log-warn{color:#dfbe7f}.log-player{color:#91c4f5}.log-resource{color:#b891f5}.log-txadmin{color:#948e98}.log-filters{display:flex;gap:4px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #2e2a30;flex-wrap:wrap;position:sticky;top:0;background:#100d18;z-index:1}.log-filter-btn{font-size:9px;padding:4px 8px;border-radius:4px;color:#948e98;border:1px solid transparent;background:none;cursor:pointer}.log-filter-btn.active{background:#2e2740;color:#d4c0e9;border-color:#45375a}.log-filter-btn:hover{color:#eee9f0}.log-count{font-size:8px;opacity:.7}
.sidebar{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#3c2c4a transparent}.profile-account{text-align:left;padding:0;flex:1}.profile-account:hover strong{color:var(--accent)}.sidebar-bottom{flex-shrink:0}.nav-group{flex-shrink:0}

.resource-library { transition: border-color .15s, box-shadow .15s; }
.resource-library.drag { border-color: var(--accent); box-shadow: inset 0 0 0 2px var(--accent); }
.resource-drop-hint { margin: 0; padding: 0 22px 18px; color: var(--muted); font-size: 12px; }

.file-manager.drag { box-shadow: inset 0 0 0 2px var(--accent); }
.file-row.drag { background: #244b3a; outline: 2px solid var(--accent); outline-offset: -2px; }
.file-drop-hint { padding-top: 18px; }

.txadmin-link { flex-shrink: 0; white-space: nowrap; }
@media (max-width: 600px) { .top-actions .txadmin-link { display: inline-flex; padding: 7px 9px; font-size: 11px; } }

/* ---- Team workflow: cards, columns, drag ---- */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;padding:16px 18px 18px}
.card-stack{display:flex;flex-direction:column;gap:9px;min-height:64px}
.kanban,.pool-grid{display:grid;gap:14px;margin-top:20px;align-items:start}
.kanban{grid-template-columns:repeat(3,minmax(0,1fr))}
.pool-grid{grid-template-columns:repeat(auto-fill,minmax(288px,1fr))}
.kanban-col,.pool-col{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px 14px 16px;transition:background .18s ease,border-color .18s ease}
.kanban-col>header,.pool-col>header{display:flex;align-items:center;gap:9px;margin-bottom:4px}
.kanban-col h2,.pool-col h2{font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.pool-note{color:var(--muted);font-size:11px;line-height:1.65;margin:0 0 12px}
.kanban-col>header{margin-bottom:13px}
.col-empty{color:#a99fc0;font-size:11px;padding:15px 12px;text-align:center;border:1px dashed rgba(185,140,249,.28);border-radius:9px;background:radial-gradient(ellipse at 50% 0%,rgba(108,67,192,.18),rgba(20,13,48,.28) 72%);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.task{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px 13px 12px 13px;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}
.task:hover{border-color:#3c3642}
.task.can-drag{padding-left:22px;cursor:grab;touch-action:pan-y}
.task.can-drag:active{cursor:grabbing}
.task.can-drag:hover{background:#262029;box-shadow:0 1px 2px rgba(0,0,0,.34),0 6px 18px -8px rgba(0,0,0,.5)}
.task.can-drag:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.grip{position:absolute;left:8px;top:14px;width:5px;height:18px;border-radius:3px;background:
 radial-gradient(circle at 1.5px 2px,#5d5666 1.1px,transparent 1.2px) 0 0/2.5px 6px repeat-y,
 radial-gradient(circle at 1.5px 2px,#5d5666 1.1px,transparent 1.2px) 2.5px 0/2.5px 6px repeat-y;
 opacity:.75;transition:opacity .16s ease}
.task.can-drag:hover .grip{opacity:1}
.task-open{display:block;width:100%;text-align:left;background:none;border:0;padding:0;cursor:pointer;color:inherit;font:inherit}
.task-open h3{font-size:12.5px;font-weight:550;line-height:1.45;color:var(--text)}
.task-open:hover h3{color:#fff}
.task-open:focus-visible{outline:none}
.task-open:focus-visible h3{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.task-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.task-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums}
.task .actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}
.task .actions .button{font-size:10px;padding:6px 9px;min-height:0}
.pill.hot{background:#3a2534;color:#f3a8c0}
.pill.warn{background:#3a3020;color:#e3bd80}
/* Card in flight */
.task-ghost{position:fixed;left:0;top:0;z-index:120;width:280px;pointer-events:none;margin:0;
 background:var(--panel2);border:1px solid var(--accent);border-radius:10px;
 box-shadow:0 12px 32px -8px rgba(0,0,0,.7),0 2px 6px rgba(0,0,0,.4);
 transform-origin:top left;rotate:1.4deg;opacity:.96}
.task.dragging{opacity:.32;border-style:dashed}
body.is-dragging{cursor:grabbing;user-select:none}
body.is-dragging .task:not(.dragging){pointer-events:none}
.kanban-col.drop-over,.pool-col.drop-over{background:rgba(64,38,124,.5);border-color:var(--accent)}
.kanban-col.drop-over .col-empty{border-color:var(--accent);color:#e0cbff;background:radial-gradient(ellipse at 50% 0%,rgba(143,95,224,.32),rgba(32,19,66,.5) 72%)}
/* Claim tray: only present while a pooled card is in flight */
.claim-tray{position:fixed;left:50%;bottom:0;translate:-50% 0;width:min(680px,calc(100vw - 48px));z-index:110;
 padding:0 0 20px;opacity:0;transform:translateY(14px);pointer-events:none;
 transition:opacity .2s cubic-bezier(.2,.8,.3,1),transform .2s cubic-bezier(.2,.8,.3,1)}
body.claiming .claim-tray{opacity:1;transform:translateY(0);pointer-events:auto}
.claim-tray-inner{display:flex;flex-direction:column;align-items:center;gap:3px;padding:20px 24px;
 border:1px dashed #4b4156;border-radius:14px;background:rgba(30,25,36,.93);backdrop-filter:blur(8px);
 box-shadow:0 -4px 28px -10px rgba(0,0,0,.7)}
.claim-tray-inner strong{font-size:12.5px;font-weight:600;color:var(--text)}
.claim-tray-inner span{font-size:11px;color:var(--muted)}
.claim-tray.drop-over .claim-tray-inner{border-style:solid;border-color:var(--accent);background:#241d31}
.claim-tray.drop-over .claim-tray-inner strong{color:#d8bcff}
.team-board{margin-bottom:6px}
.team-board h3{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 18px}
.team-board .card-grid{padding-top:9px}
/* Segmented control */
.segmented{display:inline-flex;gap:2px;padding:2.5px;margin-top:20px;background:var(--panel2);border:1px solid var(--line);border-radius:9px}
.segmented button{font:inherit;font-size:11px;font-weight:550;color:var(--muted);background:none;border:0;border-radius:6.5px;padding:7px 13px;cursor:pointer;transition:color .15s ease,background .15s ease}
.segmented button:hover{color:var(--text)}
.segmented button.active{background:#2e2740;color:#dcc6fb}
.segmented button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--focus)}
/* Timeline in the task dialog */
.timeline{position:relative;margin:6px 0 0;padding-left:16px}
.timeline::before{content:'';position:absolute;left:3px;top:6px;bottom:6px;width:1px;background:var(--line)}
.timeline-item{position:relative;padding:9px 0}
.timeline-item::before{content:'';position:absolute;left:-16px;top:14px;width:7px;height:7px;border-radius:50%;background:#4b4455;box-shadow:0 0 0 3px var(--panel)}
.timeline-item strong{display:block;font-size:11.5px;font-weight:600;color:var(--text)}
.timeline-item .muted{font-size:10.5px}
.note{color:#b8b2be;white-space:pre-wrap;margin-top:5px;line-height:1.7;font-size:11.5px}
.field.checkbox{flex-direction:row;align-items:center;gap:9px;font-size:12px;padding:7px 0}
.field.checkbox input{width:auto;min-height:0;accent-color:var(--accent)}
/* ---- Sign in ---- */
.signin{min-height:100vh;display:grid;place-items:center;padding:32px 20px}
.signin-card{width:100%;max-width:352px}
.signin-card .brand{margin-bottom:30px}
.signin-card h1{font-size:21px;font-weight:600;letter-spacing:-.015em;margin-bottom:7px}
.signin-lead{color:var(--muted);font-size:12.5px;line-height:1.65;margin-bottom:24px}
.signin-card form{display:flex;flex-direction:column;gap:15px}
.signin-hint{color:var(--muted);font-size:11px;margin-top:-6px}
.signin-foot{color:#6f6a75;font-size:11px;line-height:1.7;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.button.block{width:100%;min-height:40px;margin-top:3px}
.brand{display:flex;flex-direction:column;gap:2px}
.brand-name{font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text)}
.brand-sub{font-size:9.5px;font-weight:550;letter-spacing:.14em;text-transform:uppercase;color:#78727f}
.boot{min-height:100vh;display:grid;place-items:center;color:var(--muted);font-size:12px}
/* ---- Panel-wide polish ---- */
:root{--focus:rgba(184,145,245,.4)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.button:focus-visible,.nav:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
::selection{background:#3d2f57;color:#f3ecfb}
input,textarea{caret-color:var(--accent)}
*{scrollbar-width:thin;scrollbar-color:#3a3441 transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#3a3441;border-radius:6px;border:2.5px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#4b4455}
.button:disabled{opacity:.45;cursor:not-allowed}
.button{transition:background .15s ease,border-color .15s ease,color .15s ease}
.nav{transition:background .15s ease,color .15s ease}
table{font-variant-numeric:tabular-nums}
time,.mono{font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}.claim-tray{transition:none}}
@media(max-width:1150px){.kanban{grid-template-columns:1fr}}
@media(max-width:680px){.card-grid{grid-template-columns:1fr;padding:14px}.pool-grid{grid-template-columns:1fr}.task-ghost{width:min(280px,calc(100vw - 40px))}.claim-tray{width:calc(100vw - 28px);padding-bottom:14px}}

/* Layout corrections from the first inspection round */
.kanban{align-items:stretch}
.kanban-col{display:flex;flex-direction:column}
.kanban-col .card-stack{flex:1}
.col-empty{margin-top:auto;margin-bottom:auto}
.pool-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.pool-col{display:flex;flex-direction:column}
/* Centre the claim tray over the content column, not the whole viewport. */
.claim-tray{left:auto;right:24px;translate:none;width:min(560px,calc(100vw - 284px))}
@media(max-width:900px){.claim-tray{right:14px;left:14px;width:auto}}
.brand-sub{white-space:nowrap}
.sidebar .brand{padding:0 2px}

/* Sign-in: align the wordmark with the form, and tie it to the card. */
.signin-card .brand{align-items:flex-start;margin-bottom:26px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.signin-card .brand-name{font-size:14px}
.signin{align-content:center}
.signin-card{max-width:336px}
.signin-card h1{font-size:20px}

/* Inspection round 2 fixes */
.brand-sub{color:#8d8796}
/* Keyboard focus on a card must show whether or not the browser elects :focus-visible. */
.task.can-drag:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.task.can-drag:focus:not(:focus-visible){box-shadow:0 0 0 3px var(--focus)}

/* ---- Density pass: compact cards, tighter pages, less dead space ---- */
.task{padding:9px 11px}
.task.can-drag{padding-left:20px}
.task-open h3{font-size:12px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.task-line{display:flex;align-items:center;gap:6px;margin-top:6px;color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}
.task-line time{margin-left:auto;white-space:nowrap}
.task-line .who{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:96px}
.task .actions{margin-top:8px;padding-top:8px}
.task .pill{font-size:8.5px;padding:2px 5px}
.grip{top:11px;height:15px}
.card-stack{gap:6px}
.card-grid{gap:8px;padding:12px 14px 14px}
/* Columns: tighter, and they no longer stretch to a fixed min height */
.kanban{gap:11px;margin-top:16px}
.pool-grid{gap:11px;grid-template-columns:repeat(auto-fit,minmax(272px,1fr))}
.kanban-col,.pool-col{padding:12px 11px 13px;min-height:0}
.kanban-col>header,.pool-col>header{margin-bottom:9px}
.pool-note{margin:0 0 9px;font-size:10.5px;line-height:1.55}
.col-empty{padding:10px 2px;font-size:10.5px;margin:0}
.kanban-col .card-stack{flex:0 1 auto;min-height:38px}
/* Page rhythm: less air above and between blocks */
.page-heading{margin-bottom:18px}
.panel{margin-top:16px}
.panel:first-of-type{margin-top:0}
.panel-header{padding:13px 16px}
.form-body{padding:14px 16px}
.segmented{margin-top:14px}
.page-footer{margin-top:22px;padding-top:14px}
.content{padding:26px 30px 30px}
@media(min-width:1600px){.content{padding:28px 34px 32px}}
/* Smaller card while in flight */
.task-ghost{width:216px!important;padding:8px 10px;opacity:.94;
 box-shadow:0 10px 26px -8px rgba(0,0,0,.68),0 2px 5px rgba(0,0,0,.38)}
.task-ghost .actions,.task-ghost .grip{display:none}
.task-ghost .task-open h3{-webkit-line-clamp:1;font-size:11.5px}
.task-ghost .task-line{margin-top:4px}
/* The whole bottom strip is the claim target while a pooled card is in flight */
.claim-zone{position:fixed;left:236px;right:0;bottom:0;height:152px;z-index:110;
 display:grid;place-items:center;pointer-events:none;opacity:0;
 background:transparent;
 transition:opacity .18s cubic-bezier(.2,.8,.3,1)}
body.claiming .claim-zone{opacity:1;pointer-events:auto}
.claim-zone-inner{display:flex;flex-direction:column;align-items:center;gap:3px;
 padding:16px 30px;border:1px dashed #4e4459;border-radius:12px;background:rgba(33,28,40,.9);
 transition:border-color .16s ease,background .16s ease,scale .16s ease}
.claim-zone-inner .icon{width:15px;height:15px;color:var(--muted);margin-bottom:1px}
.claim-zone-inner strong{font-size:12px;font-weight:600}
.claim-zone-inner span{font-size:10.5px;color:var(--muted)}
.claim-zone.drop-over .claim-zone-inner{border-style:solid;border-color:var(--accent);background:#271f36;scale:1.03}
.claim-zone.drop-over .claim-zone-inner .icon{color:var(--accent)}
.claim-zone.drop-over .claim-zone-inner strong{color:#dcc2ff}
/* Table row actions: one consistent button width, flush right */
.row-actions{text-align:right;white-space:nowrap}
.row-actions-inner{display:inline-flex;gap:6px;justify-content:flex-end}
.row-actions-inner .button{min-width:96px;justify-content:center}
.row-actions-inner .button.danger{min-width:88px}
@media(max-width:900px){
 .claim-zone{left:0}
 .row-actions-inner{flex-wrap:wrap;justify-content:flex-start}
 .row-actions-inner .button{min-width:0}
 .content{padding:20px 16px 24px}
}

/* Departments table: fit the actions without clipping, keep descriptions on one line */
.row-actions-inner .button{min-width:0;padding:7px 10px}
.row-actions-inner .button.danger{min-width:0}
.row-actions-inner{gap:5px}
table td.row-actions{padding-right:16px}
.dept-name{min-width:0}
.dept-name strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dept-desc{display:block;color:var(--muted);font-size:10.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42ch}

/* Panels holding cards size to their content instead of stretching the row */
.card-grid{grid-template-columns:repeat(auto-fill,minmax(232px,max-content));justify-content:start}
.task .pill{white-space:nowrap}
.task-line{flex-wrap:nowrap;overflow:hidden}
.card-grid .task{min-width:212px;max-width:300px}
/* Summary cards read on one line rather than stacking pills */
.card-grid .task-open h3{-webkit-line-clamp:1}
.panel-header p{margin-top:2px}

/* Claim zone: a full-width bottom band, not a small box. Label sits high in the band so the
   dragged card never covers it, and the band is tall enough to be an easy target. */
.claim-zone{height:154px;align-items:start;padding-top:20px;background:transparent}
.claim-zone-inner{padding:13px 26px;border-width:1.5px;border-radius:11px;
 background:rgba(28,23,35,.94);box-shadow:0 8px 30px -12px rgba(0,0,0,.8)}
.claim-zone::after{content:'';position:absolute;inset:0;border-top:1.5px dashed #4e4459;
 border-radius:0;pointer-events:none;opacity:.75}
.claim-zone.drop-over::after{border-top-color:var(--accent);opacity:1}
.claim-zone.drop-over{background:linear-gradient(to top,rgba(56,31,112,.28),rgba(24,13,58,.14) 58%,transparent)}

/* The dragged ghost is positioned entirely by its transform; no separate rotate, no
   transition, so it lands exactly where the cursor is on every frame. */
.task-ghost{transition:none!important;will-change:transform;rotate:none}

/* The title button spans the card, so it must show the drag affordance too. */
.task.can-drag .task-open{cursor:grab}
.task.can-drag:active .task-open{cursor:grabbing}
body.is-dragging *{cursor:grabbing!important}

/* ================================================================
   Cosmic glass — derived from the Paradox logo.
   A fixed nebula wash sits behind everything and fades toward the
   working area, so dense task content keeps a calm, dark ground.
   Surfaces above it are frosted glass, not opaque panels.
   ================================================================ */
html{background:var(--deep)}
body{position:relative;background:var(--bg);isolation:isolate}
body::before{
 content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;
 background:
  radial-gradient(120% 80% at 12% -6%, #4a1f9e 0%, rgba(48,24,120,.55) 26%, rgba(21,11,64,0) 58%),
  radial-gradient(90% 70% at 92% 4%, rgba(168,48,216,.5) 0%, rgba(96,32,150,.24) 30%, rgba(21,11,64,0) 62%),
  radial-gradient(140% 100% at 50% 108%, rgba(120,60,220,.3) 0%, rgba(30,16,70,.18) 34%, rgba(2,1,10,0) 68%),
  linear-gradient(180deg, #150b40 0%, #0a0620 42%, var(--deep) 100%);
}
/* Star field: two tiny repeating layers, no image request. */
body::after{
 content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;
 background-image:
  radial-gradient(1.1px 1.1px at 18% 22%, #fff 50%, transparent 51%),
  radial-gradient(1px 1px at 74% 12%, #e6d4ff 50%, transparent 51%),
  radial-gradient(1.3px 1.3px at 41% 68%, #fff 50%, transparent 51%),
  radial-gradient(1px 1px at 88% 54%, #d9c4ff 50%, transparent 51%),
  radial-gradient(1px 1px at 8% 78%, #fff 50%, transparent 51%),
  radial-gradient(1.2px 1.2px at 62% 88%, #f0e2ff 50%, transparent 51%);
 background-size:520px 520px,380px 380px,460px 460px,300px 300px,600px 600px,440px 440px;
}
/* --- Glass surfaces --- */
.panel,.kanban-col,.pool-col,.stat,.signin-card,.terminal,.file-manager{
 background:var(--panel);
 border:1px solid var(--glass-line);
 backdrop-filter:blur(16px) saturate(1.25);
 -webkit-backdrop-filter:blur(16px) saturate(1.25);
 box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 12px 34px -18px rgba(2,1,10,.9);
}
.task{background:var(--panel2);border:1px solid var(--glass-line);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.task.can-drag:hover{background:rgba(56,38,102,.6);border-color:rgba(190,160,255,.28)}
.sidebar{
 background:linear-gradient(180deg,rgba(20,12,48,.86) 0%,rgba(8,5,24,.9) 100%);
 border-right:1px solid var(--glass-line);
 backdrop-filter:blur(22px) saturate(1.2);-webkit-backdrop-filter:blur(22px) saturate(1.2);
}
.topbar{
 background:linear-gradient(180deg,rgba(14,9,36,.78),rgba(10,6,26,.5));
 border-bottom:1px solid var(--glass-line);
 backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
}
/* The workspace fades the nebula out so content sits on calm ground. */
.workspace{position:relative}
.workspace::before{
 content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
 background:linear-gradient(180deg,rgba(6,4,15,.34) 0%,rgba(6,4,15,.74) 26%,rgba(6,4,15,.9) 100%);
}
/* --- Accent surfaces --- */
.button{background:rgba(56,40,96,.5);border:1px solid var(--glass-line);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.button:hover{background:rgba(74,52,130,.62);border-color:rgba(190,160,255,.3)}
.button.primary{
 background:linear-gradient(135deg,#c9a4ff 0%,var(--accent) 42%,#8f4fd8 100%);
 border-color:rgba(240,215,255,.5);color:#1a0b32;
 box-shadow:0 1px 0 rgba(255,255,255,.45) inset,0 6px 18px -8px rgba(168,48,216,.6);
}
.button.primary:hover{background:linear-gradient(135deg,#d7b8ff 0%,#c39bfb 42%,#9d5ee6 100%)}
.button.ghost{background:rgba(40,28,72,.34)}
.button.danger{color:#ffc2d4;border-color:rgba(245,155,180,.34);background:rgba(88,26,52,.42)}
.button.danger:hover{background:rgba(112,32,64,.55)}
.nav.active{
 background:linear-gradient(90deg,rgba(120,70,215,.42),rgba(70,40,140,.18));
 border:1px solid rgba(185,140,249,.26);color:#f4ebff;
}
.nav:hover{background:rgba(80,54,150,.26)}
.pill{background:rgba(90,60,170,.34);border:1px solid rgba(180,150,255,.16);color:#dbc9ff}
.pill.stage{background:rgba(120,70,215,.38);color:#e8d5ff}
.pill.hot{background:rgba(168,48,216,.3);border-color:rgba(255,170,220,.28);color:#ffc4ee}
.pill.warn{background:rgba(150,110,40,.3);border-color:rgba(230,190,120,.26);color:#f0d49a}
.status.online{color:#c9a8ff}
.dot{background:#8f7fb5}
.status.online .dot{background:#c9a8ff}
/* Inputs read as recessed glass */
input,textarea,select{
 background:rgba(10,6,26,.55);border:1px solid var(--glass-line);color:var(--text);
 backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
input:hover,textarea:hover,select:hover{border-color:rgba(180,150,255,.26)}
/* Tables and rows on glass */
thead th{background:rgba(14,9,34,.6);border-bottom:1px solid var(--glass-line);color:#a99ec8}
tbody tr{border-bottom:1px solid rgba(150,120,225,.09)}
tbody tr:hover{background:rgba(90,60,170,.14)}
.terminal{background:rgba(4,2,14,.72)}
.empty{border:1px dashed rgba(180,150,255,.2);background:rgba(20,13,48,.3);border-radius:var(--radius)}
.col-empty{border-color:rgba(180,150,255,.2)}
.notice{background:rgba(40,26,84,.46);border:1px solid var(--glass-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.modal-head{border-bottom:1px solid var(--glass-line)}
dialog#modal{
 background:linear-gradient(180deg,rgba(30,20,62,.92),rgba(12,7,30,.94));
 border:1px solid rgba(185,140,249,.24);
 backdrop-filter:blur(26px) saturate(1.2);-webkit-backdrop-filter:blur(26px) saturate(1.2);
 box-shadow:0 30px 90px -30px rgba(2,1,10,.95);
}
dialog#modal::backdrop{background:rgba(4,2,12,.66);backdrop-filter:blur(4px)}
#toast{
 background:linear-gradient(135deg,rgba(122,72,214,.95),rgba(88,44,168,.95));
 border:1px solid rgba(200,170,255,.34);color:#f6efff;
 backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
 box-shadow:0 14px 40px -14px rgba(2,1,10,.9);
}
#toast.error{background:linear-gradient(135deg,rgba(168,44,92,.95),rgba(120,28,64,.95));border-color:rgba(255,180,205,.36)}
/* Wordmark in the logo's chrome */
.brand-name{
 background:linear-gradient(135deg,var(--chrome) 0%,#cba6fb 38%,#8f5fe0 62%,#f0d0ff 100%);
 -webkit-background-clip:text;background-clip:text;color:transparent;
 letter-spacing:.02em;font-weight:700;
}
.brand-sub{color:#9186b0}
.claim-zone-inner{background:rgba(30,20,60,.86);border-color:rgba(190,160,255,.3);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.claim-zone.drop-over .claim-zone-inner{background:rgba(58,34,110,.9);border-color:var(--accent)}
.kanban-col.drop-over,.pool-col.drop-over{background:rgba(64,38,124,.5);border-color:var(--accent)}
.task-ghost{background:rgba(52,34,100,.96)!important;border-color:var(--accent)!important;
 box-shadow:0 14px 30px -12px rgba(107,62,205,.62),0 0 0 1px rgba(212,181,255,.26)!important}
::selection{background:rgba(120,70,215,.55);color:#fdf8ff}
*{scrollbar-color:rgba(150,110,230,.5) transparent}
::-webkit-scrollbar-thumb{background:rgba(150,110,230,.42);border:2.5px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:rgba(180,140,255,.6);background-clip:padding-box}
/* Sign-in gets the full cosmic treatment: the logo leads. */
.signin{position:relative}
.signin-card{background:rgba(22,14,50,.6);border:1px solid rgba(185,140,249,.22);border-radius:18px;padding:30px 28px 26px;
 backdrop-filter:blur(30px) saturate(1.3);-webkit-backdrop-filter:blur(30px) saturate(1.3);
 box-shadow:0 1px 0 rgba(255,255,255,.07) inset,0 40px 90px -40px rgba(2,1,10,.95)}
.signin-logo{display:block;width:232px;height:232px;max-width:100%;object-fit:contain;margin:-6px auto 14px;border-radius:12px}
.signin-card .brand{align-items:center;text-align:center;border-bottom:0;padding-bottom:0;margin-bottom:22px}
.signin-card h1{text-align:center}
.signin-lead{text-align:center}
@media(prefers-reduced-transparency:reduce){
 .panel,.kanban-col,.pool-col,.stat,.signin-card,.sidebar,.topbar,dialog#modal,.task{backdrop-filter:none;-webkit-backdrop-filter:none}
 .panel,.kanban-col,.pool-col,.stat{background:#171034}
 .task{background:#1d1440}
}

/* The nebula layers are fixed at negative z inside body's own stacking context. */
#app{position:relative;z-index:1}

/* Handover pill: the amber needs more lift against the violet glass. */
.pill.warn{background:rgba(96,66,18,.62);border-color:rgba(240,205,140,.34);color:#ffdfa8}

/* ---- Final workspace rhythm ----
   Keep the brand and server picker as two distinct pieces of the sidebar.
   An earlier density rule reset the brand padding, which made the picker feel
   accidentally attached to the wordmark. */
.sidebar .brand{
 padding:2px 10px 17px;
 margin:0;
}
.sidebar .server-switch{
 margin:0 0 30px;
 padding:14px 12px;
 border-radius:10px;
 background:rgba(34,25,58,.68);
}

/* Primary actions should feel calm and dependable, not like a glossy CTA.
   Use a single accessible violet and reserve gradients for the background only. */
.button.primary{
 background:#a976e5;
 border-color:#c69cff;
 color:#1d1033;
 box-shadow:0 1px 0 rgba(255,255,255,.25) inset,0 5px 14px -10px rgba(185,140,249,.7);
}
.button.primary:hover{
 background:#b889ed;
 border-color:#d1afff;
}
.button.primary:active{
 background:#9565d2;
 box-shadow:inset 0 1px 2px rgba(38,17,68,.22);
}

/* The board is a sequence of sections, not one continuous surface. */
.board-flow{
 display:grid;
 gap:24px;
}
.board-flow .kanban{margin-top:0}
.board-flow .panel{margin-top:0}
.team-boards .form-body{padding:12px 16px 16px}

/* Discord forum suggestions */
.suggestion-stats{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:-4px 0 16px}
.suggestion-panel{margin-top:0}
.suggestion-list{display:grid;border-top:1px solid var(--glass-line)}
.suggestion-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 17px;text-align:left;border:0;border-bottom:1px solid var(--glass-line);background:transparent;color:inherit}
.suggestion-row:last-child{border-bottom:0}
.suggestion-row:hover{background:rgba(90,60,170,.11)}
.suggestion-row h3{font-size:13px;color:var(--text);font-weight:600}
.suggestion-row>div>span{display:block;color:var(--muted);font-size:10.5px;margin-top:4px}
.suggestion-row .icon{width:15px;height:15px;color:var(--muted)}
.suggestion{border-bottom:1px solid var(--glass-line)}
.suggestion:last-child{border-bottom:0}
.suggestion summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 17px}
.suggestion summary::-webkit-details-marker{display:none}
.suggestion summary:hover{background:rgba(90,60,170,.11)}
.suggestion h3{font-size:13px;color:var(--text);font-weight:600}
.suggestion summary span{display:block;color:var(--muted);font-size:10.5px;margin-top:4px}
.suggestion-summary-meta{display:flex;align-items:center;gap:9px;white-space:nowrap;color:var(--muted);font-size:10px}
.suggestion-summary-meta .pill{margin-top:0}
.suggestion-body{padding:0 17px 17px}
.suggestion-message{color:#d9d0e9;font-size:12px;line-height:1.75;margin:0 0 14px}
.suggestion-replies{display:grid;gap:7px;border-left:2px solid rgba(185,140,249,.24);padding-left:12px}
.suggestion-replies article{padding:9px 11px;background:rgba(40,28,74,.28);border:1px solid rgba(180,150,255,.11);border-radius:8px}
.suggestion-replies strong{font-size:10.5px;color:#ded2f2}
.suggestion-replies time{font-size:10px;color:var(--muted);margin-left:8px}
.suggestion-replies p{color:#b9aecb;font-size:11px;line-height:1.65;margin:5px 0 0}
.discord-thread-head{display:flex;align-items:center;gap:8px;margin:0 0 13px}
.discord-chat{display:grid;gap:3px;max-height:58vh;overflow:auto;padding:4px 2px}
.discord-message{display:grid;grid-template-columns:31px minmax(0,1fr);gap:9px;padding:9px 8px;border-radius:7px}
.discord-message:hover{background:rgba(90,60,170,.12)}
.discord-avatar{width:29px;height:29px;display:grid;place-items:center;border-radius:50%;background:rgba(143,95,224,.35);color:#eadfff;font-size:9px;font-weight:700}
.discord-message strong{font-size:11.5px;color:#eee8f8}
.discord-message time{font-size:9.5px;color:var(--muted);margin-left:7px}
.discord-message p{color:#c6bbd7;font-size:11.5px;line-height:1.65;margin:4px 0 0;overflow-wrap:anywhere}
@media(max-width:680px){.suggestion summary{padding:13px 14px;align-items:flex-start}.suggestion-summary-meta{align-items:flex-end;flex-direction:column;gap:2px}.suggestion-body{padding:0 14px 14px}}

/* ---- Planning board & Bugs ---- */
.filter-count{margin-left:7px;font-variant-numeric:tabular-nums;color:#7d7391;font-size:9px}
.filter.active .filter-count{color:#b79ad4}
.idea-list{list-style:none;margin:0;padding:6px}
.idea{display:flex;align-items:flex-start;gap:14px;padding:15px 16px;border-radius:11px;transition:background .15s ease}
.idea+.idea{border-top:1px solid var(--line)}
.idea:hover{background:rgba(46,39,64,.35)}
.vote{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:46px;padding:9px 6px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0;transition:border-color .15s ease,color .15s ease,background .15s ease}
.vote .icon{width:16px;height:16px}
.vote span{font-size:13px;font-weight:600;color:var(--text)}
.vote:hover{border-color:#5a4c70;color:var(--text)}
.vote.on{border-color:var(--accent);background:rgba(168,48,216,.14);color:var(--accent)}
.vote.on span{color:#d8bcff}
.idea-body{flex:1;min-width:0;text-align:left;background:none;border:0;padding:0;cursor:pointer}
.idea-body h3{font-size:13px;font-weight:550;line-height:1.45;color:var(--text)}
.idea-body:hover h3{color:#fff}
.idea-excerpt{color:var(--muted);font-size:11.5px;line-height:1.65;margin-top:5px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.idea-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.idea-by{color:#7d7391;font-size:10.5px;font-variant-numeric:tabular-nums}
.idea-actions{display:flex;gap:5px;flex-shrink:0}
.idea-actions .button{font-size:10px;padding:6px 9px;min-height:0}
.sev{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:5px;white-space:nowrap;border:1px solid transparent}
.sev::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.sev-critical{color:#f3a8c0;background:rgba(58,37,52,.7);border-color:#573c47}
.sev-high{color:#e3bd80;background:rgba(58,48,32,.6);border-color:#544527}
.sev-normal{color:#b6a4e8;background:rgba(46,39,64,.6);border-color:#3f3556}
.sev-low{color:#9a90ab;background:rgba(38,34,44,.6);border-color:#332d3c}
.bug-title{text-align:left;background:none;border:0;padding:0;cursor:pointer;display:block;width:100%}
.bug-title strong{color:#d6cddd;font-size:11px;font-weight:550}
.bug-title:hover strong{color:#fff}
.bug-excerpt{display:block;color:#7d7391;font-size:10px;line-height:1.6;margin-top:4px;max-width:520px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:680px){.idea{gap:11px;padding:14px 12px}.vote{min-width:42px}.idea-actions{flex-direction:column}}

/* ---- Script link chip + datalist ---- */
.script-chip{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:500;color:#a6b6e8;background:rgba(41,49,61,.7);border:1px solid #33414f;border-radius:5px;padding:3px 8px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-ligatures:none}
.script-chip .icon{width:12px;height:12px;flex-shrink:0;color:#8fa4d6}
.bug-script{display:block;margin-top:6px}
.bug-linked{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-size:10px;font-weight:500;color:#c9a8ff;background:rgba(78,52,120,.35);border:1px solid #4a3a6a;border-radius:5px;padding:3px 8px}
.bug-linked .icon{width:12px;height:12px;flex-shrink:0}
input[list]{font-variant-ligatures:none}

/* ============================================================
   Mobile refinement layer — dynamic responsive experience
   ============================================================ */

/* Safe areas for notched phones (viewport-fit=cover) */
.sidebar{padding-left:max(18px,env(safe-area-inset-left));padding-top:max(29px,env(safe-area-inset-top))}
@media(max-width:680px){
  .topbar{padding-left:max(17px,env(safe-area-inset-left));padding-right:max(17px,env(safe-area-inset-right))}
  .content{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-bottom:max(38px,env(safe-area-inset-bottom))}
  #toast{bottom:max(24px,calc(env(safe-area-inset-bottom) + 12px))}
}

/* Sticky top bar so context + menu stay reachable down a long list */
@media(max-width:900px){
  .topbar{position:sticky;top:0;z-index:9;background:var(--deep);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    background:color-mix(in srgb,var(--deep) 86%,transparent)}
}

/* Touch input: every control clears a 44px hit area, with breathing room.
   Keyed on the input method, not the screen, so a touch laptop benefits too. */
@media(pointer:coarse){
  .button{min-height:44px;padding:11px 16px}
  .icon-button{width:44px;height:44px}
  .nav{padding:13px 14px}
  .filter{padding:10px 13px;min-height:40px;display:inline-flex;align-items:center}
  .task .actions .button{min-height:40px;padding:9px 12px}
  .segmented button{padding:10px 15px}
  .search-result{padding:15px 12px}
  .table-select{padding:15px 16px}
  select,.field input,.field textarea{min-height:44px}
  .subnav button{padding-bottom:15px;padding-top:6px}
  /* Hover-only reveals don't exist on touch — show them at rest instead. */
  .grip{opacity:1}
  .task.can-drag{cursor:default}
}

/* Tables become cards on phones: each row a stacked block, each value led by
   its column label. Actions land full-width and thumb-reachable at the foot.
   Driven by data-label stamped after render — no per-page markup. */
@media(max-width:680px){
  .table-scroll:not(.raw-scroll){overflow:visible}
  .table-scroll:not(.raw-scroll) table,
  .table-scroll:not(.raw-scroll) thead,
  .table-scroll:not(.raw-scroll) tbody,
  .table-scroll:not(.raw-scroll) tr,
  .table-scroll:not(.raw-scroll) td{display:block;width:auto}
  .table-scroll:not(.raw-scroll) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .table-scroll:not(.raw-scroll) tr{border-top:1px solid var(--line);padding:14px 15px;max-width:none}
  .table-scroll:not(.raw-scroll) tr:first-child{border-top:0}
  .table-scroll:not(.raw-scroll) td{border-top:0;padding:0;max-width:none}
  .table-scroll:not(.raw-scroll) td[data-label]{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:5px 0;color:var(--text)}
  .table-scroll:not(.raw-scroll) td[data-label]::before{content:attr(data-label);flex:0 0 auto;font-size:9px;letter-spacing:.5px;text-transform:uppercase;color:#807790;font-weight:600;padding-top:2px}
  .table-scroll:not(.raw-scroll) td[data-label]>*{text-align:right;min-width:0}
  /* A cell whose only content is a name/avatar block reads as the card title. */
  .table-scroll:not(.raw-scroll) td[data-label]:first-child{display:block;padding-bottom:9px}
  .table-scroll:not(.raw-scroll) td[data-label]:first-child::before{display:block;margin-bottom:6px}
  .table-scroll:not(.raw-scroll) td[data-label]:first-child>*{text-align:left}
  .table-scroll:not(.raw-scroll) td .resource-name{justify-content:flex-start}
  /* The trailing actions cell (no header) spreads full width. */
  .table-scroll:not(.raw-scroll) td[data-actions]{padding-top:12px;margin-top:10px;border-top:1px dashed var(--line)}
  .table-scroll:not(.raw-scroll) td[data-actions] .actions,
  .table-scroll:not(.raw-scroll) td[data-actions] .row-actions-inner{display:flex;flex-wrap:wrap;gap:8px}
  .table-scroll:not(.raw-scroll) td[data-actions] .button{flex:1 1 auto}
  .table-scroll:not(.raw-scroll) td[data-actions] a.button{flex:1 1 auto;justify-content:center}
  /* Keep the raw DB scroller obviously swipeable. */
  .raw-scroll{-webkit-overflow-scrolling:touch}
}

/* Long DB scroller: hint that it pans horizontally. */
.raw-scroll{position:relative}
@media(max-width:900px){
  .raw-scroll::after{content:'';position:absolute;top:0;right:0;bottom:0;width:26px;pointer-events:none;
    background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--panel) 88%,transparent))}
}

/* Filter chip rows scroll sideways rather than wrapping into a tall stack.
   Kept inside the content padding so nothing bleeds past the viewport. */
@media(max-width:680px){
  .table-tools{overflow:hidden}
  .filters{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px;max-width:100%}
  .filters::-webkit-scrollbar{display:none}
  .filter{white-space:nowrap;flex:0 0 auto}
  .subnav{overflow-x:auto;scrollbar-width:none;max-width:100%}
  .subnav::-webkit-scrollbar{display:none}
}

/* Breadcrumb: keep to one line, let the page title truncate instead of wrapping. */
@media(max-width:680px){
  .breadcrumb{min-width:0;flex:1}
  .breadcrumb strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* Page-heading action buttons go full-width and even on phones. */
@media(max-width:680px){
  .page-heading>.actions{display:flex;gap:8px}
  .page-heading>.actions>.button{flex:1 1 auto;justify-content:center}
}

/* ---- Asset importer ------------------------------------------------------ */
.imp-h{font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--text);margin:34px 0 12px}
.imp-hint{color:var(--muted);font-size:13px;margin:22px 2px;max-width:70ch}
.imp-sep{display:inline-flex;vertical-align:-2px;margin:0 3px;opacity:.55}.imp-sep .icon{width:11px;height:11px}
.imp-meta{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.imp-drop{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"art copy" "art formats";column-gap:22px;row-gap:14px;align-items:center;padding:34px 32px;border:1px dashed rgba(190,160,255,.32);border-radius:var(--radius);background:rgba(24,16,52,.5);cursor:pointer;transition:border-color .2s ease,background .2s ease}
.imp-drop:hover,.imp-drop:focus-visible{border-color:rgba(200,170,255,.6);background:rgba(34,22,72,.58);outline:none}
.imp-drop:focus-visible{box-shadow:0 0 0 3px var(--focus)}
.imp-drop.drag{border-style:solid;border-color:var(--accent);background:rgba(58,36,120,.6)}
.imp-drop.drag .imp-drop-art{transform:translateY(-4px)}
.imp-drop-art{grid-area:art;width:64px;height:64px;border-radius:16px;display:grid;place-items:center;background:rgba(120,80,220,.22);border:1px solid rgba(190,160,255,.22);color:var(--accent);transition:transform .35s cubic-bezier(.16,1,.3,1)}
.imp-drop-art .icon{width:26px;height:26px}
.imp-drop-copy{grid-area:copy}.imp-drop-copy h3{font-size:17px;font-weight:600;margin:0 0 6px;text-wrap:balance}.imp-drop-copy p{margin:0;color:var(--muted);font-size:13px;line-height:1.6;max-width:72ch}
.imp-formats{grid-area:formats;display:flex;flex-wrap:wrap;gap:6px}.imp-formats span{font-size:10px;font-weight:600;letter-spacing:.06em;color:#cdbdf0;background:rgba(90,60,170,.26);border:1px solid rgba(180,150,255,.14);border-radius:6px;padding:4px 8px}
.imp-drop.compact{padding:18px 22px;row-gap:8px}.imp-drop.compact .imp-drop-art{width:44px;height:44px;border-radius:12px}.imp-drop.compact .imp-drop-art .icon{width:20px;height:20px}.imp-drop.compact .imp-drop-copy h3{font-size:14px;margin-bottom:3px}.imp-drop.compact .imp-drop-copy p{font-size:12px}

.imp-run{margin-top:16px;padding:16px 18px 18px}
.imp-run-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}
.imp-run-head h3{font-size:14px;font-weight:600;margin:0 0 3px;overflow-wrap:anywhere}.imp-run-head small{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.imp-track{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.imp-track li{display:flex;flex-direction:column;gap:7px;min-width:0}
.imp-bar{height:4px;border-radius:2px;background:rgba(150,120,225,.18);overflow:hidden;display:block}
.imp-bar i{display:block;height:100%;width:100%;background:var(--accent);transform-origin:left center;transition:transform .6s cubic-bezier(.16,1,.3,1)}
.imp-step{font-size:11px;color:#8f84ac;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.imp-track li.done .imp-step{color:#cdbdf0}.imp-track li.now .imp-step{color:var(--text);font-weight:600}
.imp-track li.now .imp-bar{background:rgba(150,120,225,.3)}
.imp-track li.failed .imp-bar i{background:var(--danger)}.imp-track li.failed .imp-step{color:var(--danger);font-weight:600}

.imp-job{padding:0;overflow:visible;margin-top:12px}
.imp-job.picking{position:relative;z-index:40}
.imp-job-head{display:flex;align-items:center;gap:12px;width:100%;padding:15px 18px;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius)}
.imp-job-head:hover{background:rgba(90,60,170,.12)}.imp-job-head:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent)}
.imp-caret{display:inline-flex;color:var(--muted);transition:transform .25s cubic-bezier(.16,1,.3,1)}.imp-job.open .imp-caret{transform:rotate(90deg)}
.imp-job-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.imp-job-title strong{font-size:14px;overflow-wrap:anywhere}.imp-job-title small{color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
.imp-job-body{padding:0 18px 18px;border-top:1px solid var(--line)}
.imp-callout{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:start;margin-top:16px;padding:14px 16px;border-radius:10px;border:1px solid rgba(240,205,140,.26);background:rgba(96,66,18,.28)}
.imp-callout>.icon{color:#ffdfa8;margin-top:1px}.imp-callout strong{font-size:13px;color:#ffe9c4}.imp-callout p{margin:4px 0 0;font-size:12px;line-height:1.6;color:#e6d3ad;overflow-wrap:anywhere}
.imp-callout.bad{border-color:rgba(245,155,180,.3);background:rgba(88,26,52,.34)}.imp-callout.bad>.icon,.imp-callout.bad strong{color:#ffc2d4}
.imp-callout-actions{display:flex;gap:8px;flex-wrap:wrap}
.imp-notes{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:6px}.imp-notes li{display:flex;gap:9px;font-size:12px;line-height:1.55;color:var(--muted)}.imp-notes .icon{width:14px;height:14px;flex-shrink:0;margin-top:2px;color:#8f84ac}

.imp-rows{margin-top:14px;border:1px solid var(--line);border-radius:10px;background:rgba(14,9,34,.42)}
.imp-row{display:grid;grid-template-columns:auto minmax(0,1.25fr) minmax(0,1fr);column-gap:14px;row-gap:10px;align-items:start;padding:14px 16px;border-top:1px solid var(--line)}
.imp-row:first-child{border-top:0}
.imp-row.off .imp-ident,.imp-row.off .imp-dest{opacity:.42}
.imp-check{padding-top:9px}.imp-check input,.imp-fix input,.imp-all input{width:15px;height:15px;min-height:0;accent-color:var(--accent);cursor:pointer}
.imp-ident{display:flex;gap:12px;min-width:0}
.imp-type{width:34px;height:34px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;background:rgba(90,60,170,.24);color:#d3c0fb}.imp-type .icon{width:17px;height:17px}
.imp-name{min-width:0;flex:1;display:flex;flex-direction:column;gap:7px}
.imp-rename{width:100%;min-height:32px;padding:5px 9px;font-size:13px;font-weight:600;background:transparent;border:1px solid transparent;border-radius:7px;margin-left:-9px}
.imp-rename:hover{border-color:var(--line);background:rgba(20,13,48,.5)}
.imp-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.imp-tag{font-size:10.5px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:6px;background:rgba(70,60,100,.4);color:#cfc5e6;border:1px solid rgba(180,160,230,.12);font-family:inherit}
.imp-tag.ready{background:rgba(110,70,210,.34);color:#e6d6ff;border-color:rgba(190,160,255,.24)}
.imp-tag.dlc{background:rgba(96,66,18,.5);color:#ffdfa8;border-color:rgba(240,205,140,.24)}
.imp-tag.link{cursor:pointer}.imp-tag.link:hover{color:var(--text);border-color:rgba(190,160,255,.4)}
.imp-codes{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.imp-codes code{font-size:11px}
.imp-dest{position:relative;display:flex;flex-direction:column;gap:6px;min-width:0}
.imp-label{font-size:10.5px;color:#8f84ac;letter-spacing:.03em}
.imp-path{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:7px 10px;border-radius:8px;border:1px solid var(--glass-line);background:rgba(20,13,48,.55);color:var(--text);font:inherit;font-size:12.5px;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.imp-path>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.imp-path>.icon{width:14px;height:14px;color:var(--muted);flex-shrink:0}
.imp-path:hover:not(:disabled){border-color:rgba(190,160,255,.36);background:rgba(34,22,72,.6)}.imp-path:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.imp-path:disabled{opacity:.45;cursor:not-allowed}
.imp-suggest{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:8px;border:1px solid rgba(190,160,255,.2);background:rgba(110,70,210,.16);color:#dccbff;font:inherit;font-size:11.5px;cursor:pointer;text-align:left}
.imp-suggest>span{flex:1;min-width:0}.imp-suggest .icon{width:13px;height:13px;flex-shrink:0}.imp-suggest b{font-weight:600;color:var(--text);padding:2px 8px;border-radius:5px;background:rgba(150,110,240,.34)}
.imp-suggest:hover{background:rgba(110,70,210,.28)}.imp-suggest:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.imp-pop{position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;min-width:280px;background:#1a1236;border:1px solid rgba(190,160,255,.26);border-radius:10px;box-shadow:0 10px 18px -8px rgba(0,0,0,.75);padding:6px;animation:imp-pop .18s cubic-bezier(.16,1,.3,1)}
@keyframes imp-pop{from{opacity:0;transform:translateY(-4px)}}
.imp-pop ul{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto}
.imp-pop li button{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;border-radius:6px;background:none;color:var(--text);font:inherit;font-size:12.5px;text-align:left;cursor:pointer}
.imp-pop li button .icon{width:14px;height:14px;color:var(--muted);flex-shrink:0}.imp-pop li button span{flex:1}.imp-pop li button small{color:#8f84ac;font-size:10.5px}
.imp-pop li button:hover,.imp-pop li button:focus-visible{background:rgba(110,70,210,.26);outline:none}.imp-pop li button.on{background:rgba(110,70,210,.4)}
.imp-new{border-top:1px solid var(--line);margin-top:6px;padding:10px 6px 4px}.imp-new label{display:block;font-size:11.5px;color:var(--muted)}.imp-new strong{color:var(--text);font-weight:600}
.imp-new-row{display:flex;gap:8px;margin-top:7px}.imp-new-row input{flex:1;min-height:34px}
.imp-all{display:flex;align-items:center;gap:8px;padding:10px 6px 6px;font-size:12px;color:var(--text);cursor:pointer}
.imp-issues{grid-column:2/-1;font-size:12px;color:var(--muted)}
.imp-issues summary{display:inline-flex;align-items:center;gap:7px;cursor:pointer;color:#cdbdf0;list-style:none;padding:3px 0;border-radius:5px}.imp-issues summary::-webkit-details-marker{display:none}.imp-issues summary .icon{width:14px;height:14px}
.imp-issues summary:hover{color:var(--text)}.imp-issues summary:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.imp-issues p{margin:7px 0 0;line-height:1.55;max-width:80ch;display:flex;gap:8px}.imp-issues p.bad{color:#ffc2d4}.imp-issues p .icon{width:14px;height:14px;flex-shrink:0;margin-top:2px}
.imp-fix{display:flex;align-items:center;gap:8px;margin-top:10px;color:var(--text);cursor:pointer}
.imp-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}.imp-foot-left,.imp-foot-right{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.imp-seg{display:inline-flex;border:1px solid var(--glass-line);border-radius:8px;overflow:hidden}.imp-seg button{padding:8px 12px;border:0;background:rgba(40,28,72,.34);color:var(--muted);font:inherit;font-size:12px;cursor:pointer}
.imp-seg button[aria-pressed="true"]{background:rgba(110,70,210,.42);color:var(--text)}.imp-seg button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent)}
.imp-history{padding:4px 0}.imp-hrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto;gap:14px;align-items:center;padding:12px 16px;border-top:1px solid var(--line)}.imp-hrow:first-child{border-top:0}
.imp-hmain{min-width:0}.imp-hmain strong{display:block;font-size:13px;overflow-wrap:anywhere}.imp-hmain small{color:var(--muted);font-size:11.5px;line-height:1.6;overflow-wrap:anywhere}.imp-hact{display:flex;gap:6px}
.imp-confirm{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}.imp-confirm li{display:flex;flex-direction:column;gap:2px}.imp-confirm .mono{font-size:11.5px;color:var(--muted);overflow-wrap:anywhere}

.imp-tree{list-style:none;margin:0;padding:0 0 0 22px}.imp-tree.top{padding:0}.imp-tree.top>li{border-top:1px solid var(--line);padding:6px 0}.imp-tree.top>li:first-child{border-top:0}
.imp-node{display:flex;align-items:center;gap:10px;padding:4px 0}.imp-node>.icon{width:15px;height:15px;color:var(--muted);flex-shrink:0}
.imp-node input{flex:0 1 240px;min-width:0;min-height:32px;padding:5px 9px}.imp-folder{font-size:11.5px;color:#8f84ac;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-node-actions{margin-left:auto;display:flex;gap:6px;align-items:center}.imp-node-actions label.button{cursor:pointer}
.imp-keys{padding:4px 16px}.imp-key{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.imp-key:first-child{border-top:0}
.imp-key strong{display:block;font-size:12.5px;overflow-wrap:anywhere}.imp-key small{color:var(--muted);font-size:11.5px}

@media(max-width:900px){
 .imp-drop{grid-template-columns:1fr;grid-template-areas:"art" "copy" "formats";padding:24px 18px}
 .imp-row{grid-template-columns:auto minmax(0,1fr)}.imp-dest{grid-column:2}.imp-issues{grid-column:2}
 .imp-callout{grid-template-columns:auto 1fr}.imp-callout-actions{grid-column:1/-1}
 .imp-hrow{grid-template-columns:auto minmax(0,1fr)}.imp-hrow>.imp-meta,.imp-hrow>.status,.imp-hact{grid-column:2}
 .imp-step{font-size:10px}.imp-key{grid-template-columns:1fr}.imp-node{flex-wrap:wrap}
 .imp-path,.imp-suggest,.imp-pop li button{min-height:44px}
}
@media(prefers-reduced-motion:reduce){.imp-bar i,.imp-caret,.imp-drop-art{transition:none}.imp-pop{animation:none}}

/* ---- Development tracker (workflow v2) ----
   One pipeline, six places: Backlog → Up next → In development → Install → Needs adding → Live.
   Phase hues: lilac = available, violet = being built, amber = waiting on install,
   rose = needs adding, mint = live. Everything else stays in the incumbent violet/neutral. */
:root{--wf-next:#c9b6f2;--wf-dev:#b98cf9;--wf-install:#e8c27f;--wf-setup:#f2a7c7;--wf-live:#8ed9b5;--wf-idle:#8a8198}
.wf-rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));margin-top:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);overflow:hidden}
.wf-rail-step{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:13px 22px 12px 16px;text-align:left;color:var(--muted);border-right:1px solid var(--line);transition:background .16s ease,color .16s ease}
.wf-rail-step:last-child{border-right:0}
.wf-rail-step:not(:last-child)::after{content:'';position:absolute;right:-5px;top:50%;width:9px;height:9px;margin-top:-5px;border-top:1px solid var(--line);border-right:1px solid var(--line);background:#1a1330;transform:rotate(45deg);z-index:1}
.wf-rail-step strong{font-size:21px;line-height:1;font-weight:600;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums}
.wf-rail-step span{font-size:10.5px;font-weight:550;white-space:nowrap}
.wf-rail-step:hover{background:rgba(120,80,210,.14);color:var(--text)}
.wf-rail-step.current{background:rgba(120,70,215,.3);color:#e8d9ff}
.wf-rail-step.current strong{color:#e4cdff}
.wf-rail-step.current::before{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent)}
.wf-rail-step.hot strong::after{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--wf-install);margin-left:7px;vertical-align:4px}
.wf-rail-step:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent)}

/* Phase pill: one glyph + hue per place in the pipeline */
.wf-phase{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:550;color:var(--muted);white-space:nowrap}
.wf-phase i{width:7px;height:7px;border-radius:50%;background:var(--wf-idle);flex-shrink:0}
.wf-phase-next{color:var(--wf-next)}.wf-phase-next i{background:transparent;box-shadow:inset 0 0 0 1.5px var(--wf-next)}
.wf-phase-dev{color:#d6bcff}.wf-phase-dev i{background:var(--wf-dev)}
.wf-phase-install{color:var(--wf-install)}.wf-phase-install i{background:var(--wf-install)}
.wf-phase-setup{color:var(--wf-setup)}.wf-phase-setup i{background:var(--wf-setup)}
.wf-phase-live{color:var(--wf-live)}.wf-phase-live i{background:var(--wf-live)}
.wf-phase-backlog i,.wf-phase-proposed i{background:transparent;box-shadow:inset 0 0 0 1.5px var(--wf-idle)}
.wf-phase-closed{color:#7f778c}
.pill.wf-low{background:transparent;color:var(--muted);border-color:var(--line)}
.wf-n{font-variant-numeric:tabular-nums;opacity:.7;margin-left:2px}

/* Avatars */
.wf-avatar{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#33284d;color:#dccbf7;font-size:10.5px;font-weight:650;letter-spacing:.02em;flex-shrink:0}
.wf-avatar.sm{width:20px;height:20px;font-size:8.5px}
.wf-who{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#d6cddd}

/* Tracker: people + attention */
.wf-split{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:14px;align-items:start}
.wf-split>.panel{margin-top:16px}
.wf-people-list,.wf-attn-list,.wf-rows,.wf-setup-list,.wf-live-list,.wf-files{list-style:none;margin:0;padding:0}
.wf-person{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:14px;align-items:center;padding:11px 16px;border-top:1px solid var(--line)}
.wf-person.inactive .wf-person-head small{color:var(--danger)}
.wf-person-head{display:flex;align-items:center;gap:10px;text-align:left;min-width:0;border-radius:8px;padding:2px}
.wf-person-head span{display:flex;flex-direction:column;min-width:0}
.wf-person-head strong{font-size:12px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-person-head small{font-size:10px;color:var(--muted);text-transform:capitalize}
.wf-person-head:hover strong{color:#fff;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.wf-person-work{display:flex;flex-wrap:wrap;gap:5px;min-width:0}
.wf-mini{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:5px 9px;border-radius:7px;background:rgba(90,60,170,.2);border:1px solid rgba(180,150,255,.12);font-size:11px;color:#e3d6f7;text-align:left}
.wf-mini:hover{background:rgba(110,70,200,.34);border-color:rgba(190,160,255,.3)}
.wf-mini{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--wf-dev)}
.wf-dot.live{background:var(--wf-live)}
.wf-idle{font-size:11px;color:#7f778c}
.wf-person-counts{display:flex;gap:10px;font-size:10.5px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.wf-person-counts .good{color:var(--wf-live)}
.wf-attn{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;width:100%;text-align:left;padding:12px 16px;border-top:1px solid var(--line);color:var(--muted)}
.wf-attn>.icon{color:var(--accent);margin-top:1px}
.wf-attn.warn>.icon{color:var(--danger)}
.wf-attn span{display:flex;flex-direction:column;gap:3px;min-width:0}
.wf-attn strong{font-size:12px;font-weight:600;color:var(--text);line-height:1.45}
.wf-attn small{font-size:10.5px;line-height:1.6;color:var(--muted)}
.wf-attn>.icon:last-child{width:15px;height:15px;opacity:.5;margin-top:2px}
.wf-attn:hover{background:rgba(120,80,210,.1)}
.wf-attn:hover>.icon:last-child{opacity:1}
.wf-calm{display:flex;gap:12px;padding:14px 16px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:11.5px;line-height:1.7}
.wf-calm .icon{color:var(--wf-live)}
.wf-calm strong{color:var(--text);font-weight:600}

/* All tasks */
.wf-all .panel-header{padding-bottom:6px}
.wf-tools{display:flex;gap:8px;flex-wrap:wrap;padding:6px 16px 0}
.wf-search{flex:1 1 260px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--line);border-radius:8px;background:rgba(10,6,24,.4)}
.wf-search .icon{width:15px;height:15px;color:var(--muted)}
.wf-search input{flex:1;min-width:0;background:none;border:0;color:var(--text);font-size:12px;padding:9px 0;outline:none}
.wf-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.wf-tools select{flex:0 1 190px;min-height:36px;border:1px solid var(--line);border-radius:8px;background:#1a1430;color:var(--text);font-size:11.5px;padding:0 10px}
.wf-filters{padding:12px 16px 4px;gap:4px}
.wf-filters .filter{display:inline-flex;align-items:center;gap:5px}
.wf-filters .filter .icon{width:13px;height:13px}
.wf-table td{vertical-align:middle}
.wf-table .bug-title strong{font-size:12px;color:var(--text)}

/* Task pool */
.wf-pool-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.wf-pool-bar .segmented{margin-top:16px}
.wf-group-head{display:flex;align-items:center;gap:9px;padding:12px 16px;border-bottom:1px solid var(--line);background:rgba(20,13,44,.35)}
.wf-group-head .icon{width:16px;height:16px;color:var(--accent)}
.wf-group-head h2{font-size:12.5px;font-weight:600}
.wf-note{margin-left:auto}
.wf-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:10px 16px;border-top:1px solid rgba(150,120,225,.09)}
.wf-row:first-child{border-top:0}
.wf-row:hover{background:rgba(120,80,210,.07)}
.wf-row-main{display:flex;flex-direction:column;gap:3px;min-width:0;text-align:left}
.wf-row-title{font-size:12.5px;font-weight:600;color:var(--text);line-height:1.4}
.wf-row-sub{font-size:11px;color:#9a90b0;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:72ch}
.wf-row-main:hover .wf-row-title{color:#fff;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.wf-row-meta{display:flex;align-items:center;gap:6px;white-space:nowrap}
.wf-row-meta .pill .icon{width:11px;height:11px;margin-right:3px;vertical-align:-2px}
.wf-row-actions{display:flex;gap:5px;justify-content:flex-end}
.wf-row-actions .button,.wf-install-actions .button,.wf-dialog-actions .button,.wf-upload .button{margin-top:0;min-width:0;width:auto}

/* Board */
.wf-kanban{grid-template-columns:repeat(4,minmax(0,1fr))}
.wf-card .actions .button{min-width:0;width:auto;margin-top:0}
.wf-card .actions .button .icon{width:13px;height:13px}
.wf-done-col{background:linear-gradient(180deg,rgba(64,40,118,.38),var(--panel) 140px)}
.wf-drop-done{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px dashed rgba(185,140,249,.36);border-radius:10px;color:var(--muted);margin-bottom:10px;transition:border-color .16s ease,background .16s ease}
.wf-drop-done .icon{color:var(--accent);width:17px;height:17px;margin-top:1px}
.wf-drop-done span{display:flex;flex-direction:column;gap:2px}
.wf-drop-done strong{font-size:11.5px;color:var(--text);font-weight:600}
.wf-drop-done small{font-size:10.5px;line-height:1.55}
body.is-dragging .wf-drop-done{border-color:var(--accent);background:rgba(120,70,215,.16)}
.wf-done-col.drop-over .wf-drop-done{border-style:solid;background:rgba(150,95,240,.3)}
.wf-done-col.drop-over .wf-drop-done strong{color:#f0e2ff}
.wf-finished{display:flex;flex-direction:column;gap:2px}
.wf-fin{display:flex;align-items:center;gap:4px;border-radius:8px}
.wf-fin:hover{background:rgba(120,80,210,.1)}
.wf-fin-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left;padding:7px 8px}
.wf-fin-main strong{font-size:11.5px;font-weight:550;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wf-fix .icon{width:15px;height:15px}
.wf-quiet{font-size:11px;color:#8a8198;line-height:1.6;padding:4px 2px}
.wf-more{font-size:11px;color:var(--accent);padding:8px;text-align:left}
.wf-more:hover{text-decoration:underline;text-underline-offset:3px}
.wf-board-switch{display:inline-flex;align-items:center;gap:7px;padding:0 4px 0 10px;border:1px solid var(--line);border-radius:8px;background:#1a1430;color:var(--muted)}
.wf-board-switch .icon{width:15px;height:15px}
.wf-board-switch select{background:none;border:0;color:var(--text);font-size:11.5px;min-height:34px;padding-right:6px}
.page-heading .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* Install queue */
.wf-installs{display:flex;flex-direction:column}
.wf-install{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;padding:16px 18px}
.wf-install-title{text-align:left}
.wf-install-title h3{font-size:14px;font-weight:600;color:var(--text)}
.wf-install-title:hover h3{color:#fff;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.wf-install-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:7px;font-size:11px;color:var(--muted)}
.wf-install-meta strong{color:#e3d6f7;font-weight:600}
.wf-quote{margin:12px 0 0;padding:10px 13px;border-radius:9px;background:rgba(10,6,24,.45);border:1px solid var(--line);color:#cfc5dc;font-size:11.5px;line-height:1.7;white-space:pre-wrap;max-width:80ch}
.wf-flagged{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px}
.wf-step-chip{display:inline-flex;align-items:center;gap:5px;font-size:10px!important;padding:3px 7px!important;background:rgba(242,167,199,.12)!important;border-color:rgba(242,167,199,.28)!important;color:#f7c9dc!important}
.wf-step-chip .icon{width:12px;height:12px}
.wf-files{margin-top:12px;display:flex;flex-direction:column;gap:4px}
.wf-files li{display:flex;align-items:center;gap:9px;padding:6px 8px 6px 10px;border-radius:8px;background:rgba(10,6,24,.32);font-size:11.5px}
.wf-files li>.icon{width:15px;height:15px;color:var(--muted)}
.wf-file-name{font-family:"SFMono-Regular",Consolas,monospace;font-size:11px;color:#e6dcf3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.wf-files li .muted{margin-left:auto;white-space:nowrap}
.wf-files li .button{margin-top:0;min-width:0;width:auto}
.wf-nofiles{margin-top:12px}
.wf-install-actions{display:flex;flex-direction:column;gap:7px;align-items:stretch;min-width:150px}

/* Needs adding */
.wf-setup{padding:13px 16px;border-top:1px solid var(--line)}
.wf-setup:first-child{border-top:0}
.wf-setup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.wf-steps{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.wf-step{display:inline-flex;align-items:center;gap:8px;padding:7px 12px 7px 9px;border-radius:999px;border:1px solid rgba(242,167,199,.3);background:rgba(242,167,199,.07);color:#f7d3e2;font-size:11.5px;font-weight:550;transition:background .16s ease,border-color .16s ease,color .16s ease}
.wf-step>.icon{width:17px;height:17px;color:var(--wf-setup)}
.wf-step span{display:inline-flex;align-items:center;gap:6px}
.wf-step .wf-kind-ico{width:13px;height:13px;opacity:.75}
.wf-step:hover:not(:disabled){background:rgba(242,167,199,.16);border-color:rgba(242,167,199,.5)}
.wf-step.done{border-color:rgba(142,217,181,.28);background:rgba(142,217,181,.08);color:#bfe9d3}
.wf-step.done>.icon{color:var(--wf-live)}
.wf-step.done span{text-decoration:line-through;text-decoration-color:rgba(191,233,211,.5)}
.wf-step:disabled{opacity:1;cursor:default}
.wf-step:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.wf-live-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 16px;border-top:1px solid rgba(150,120,225,.09)}

/* Task dialog */
dialog#modal.wf-wide{width:680px}
.wf-progress{display:flex;list-style:none;margin:0 0 14px;padding:0;gap:3px}
.wf-progress li{flex:1;display:flex;flex-direction:column;gap:6px;font-size:9.5px;color:#7f778c;min-width:0}
.wf-progress li::before{content:'';height:3px;border-radius:2px;background:rgba(150,120,225,.18)}
.wf-progress li.past::before{background:rgba(185,140,249,.5)}
.wf-progress li.here::before{background:var(--accent)}
.wf-progress li.here{color:#e4cdff;font-weight:600}
.wf-progress span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wf-dialog .task-meta{align-items:center;gap:8px}
.wf-detail{font-size:12px;color:#d0c7dc;margin-top:12px}
.wf-dialog-actions{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 4px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.wf-h{margin-top:18px;font-size:12px;font-weight:600}
.wf-dialog .timeline{max-height:260px;overflow:auto}

/* Pickers inside dialogs */
.wf-pick{border:0;margin:16px 0 4px;padding:0}
.wf-pick legend{font-size:11.5px;font-weight:600;color:var(--text);margin-bottom:9px;padding:0}
.wf-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
.wf-pick-item{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:rgba(10,6,24,.3);font-size:11.5px;color:#d6cddd;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.wf-pick-item input{accent-color:var(--accent);margin:0}
.wf-pick-item .icon{width:15px;height:15px;color:var(--muted)}
.wf-pick-item:hover{border-color:rgba(185,140,249,.4)}
.wf-pick-item:has(input:checked){border-color:var(--accent);background:rgba(120,70,215,.22);color:#f1e6ff}
.wf-pick-item:has(input:checked) .icon{color:var(--accent)}
.wf-pick-item:has(input:disabled){opacity:.45;cursor:not-allowed}
.wf-pick-item:has(input:focus-visible){box-shadow:0 0 0 3px var(--focus)}
dialog .field.wf-pick-other{margin:10px 0 0}
.wf-radio{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.wf-radio label{display:flex;gap:9px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:9px;cursor:pointer}
.wf-radio label:has(input:checked){border-color:var(--accent);background:rgba(120,70,215,.22)}
.wf-radio input{accent-color:var(--accent);margin:2px 0 0}
.wf-radio span,.wf-take span{display:flex;flex-direction:column;gap:2px}
.wf-radio strong,.wf-take strong{font-size:12px;color:var(--text);font-weight:600}
.wf-radio small,.wf-take small{font-size:10.5px;color:var(--muted)}
dialog .field.wf-take{margin:16px 0 4px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;align-items:flex-start}
.wf-upload{margin:14px 0 4px;padding:12px;border:1px dashed rgba(185,140,249,.3);border-radius:10px}
.wf-upload-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.wf-upload-done{list-style:none;margin:0;padding:0}
.wf-upload-done li{display:flex;align-items:center;gap:7px;margin-top:8px;font-size:11.5px;color:#d6cddd}
.wf-upload-done .icon{width:14px;height:14px;color:var(--wf-live)}
[data-upload-status].wf-error{color:var(--danger)}

@media(max-width:1250px){.wf-kanban{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1100px){.wf-split{grid-template-columns:1fr}}
@media(max-width:760px){
 .wf-rail{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(104px,1fr);overflow-x:auto;scrollbar-width:none}
 .wf-rail::-webkit-scrollbar{display:none}
 .wf-kanban{grid-template-columns:1fr}
 .wf-person{grid-template-columns:minmax(0,1fr);gap:8px}
 .wf-person-counts{flex-wrap:wrap}
 .wf-row{grid-template-columns:minmax(0,1fr);gap:8px}
 .wf-row-meta{flex-wrap:wrap}
 .wf-row-actions{justify-content:flex-start;flex-wrap:wrap}
 .wf-install{grid-template-columns:1fr}
 .wf-install-actions{flex-direction:row;flex-wrap:wrap;min-width:0}
 .wf-files li{flex-wrap:wrap}
 .wf-files li .muted{margin-left:0}
 .wf-setup-head{flex-direction:column}
 .wf-radio{grid-template-columns:1fr}
 .wf-tools select{flex:1 1 140px}
 .wf-progress span{font-size:8.5px}
}
/* Inspection round 1 */
.wf-row-actions .button{padding:6px 10px;min-height:30px;font-size:10.5px}
.wf-row-actions .button .icon{width:13px;height:13px}
.button.wf-take-btn{background:rgba(120,70,215,.22);border-color:rgba(185,140,249,.55);color:#ecdcff}
.button.wf-take-btn:hover{background:var(--accent);border-color:var(--accent);color:#1e1530}
.button.wf-quiet-btn{color:var(--muted)}
.button.wf-quiet-btn:hover{color:var(--text)}
.wf-table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-top:1px solid var(--line)}
.wf-table-foot .button{margin-top:0;min-width:0;width:auto}
.col-empty a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
dialog .field.wf-take{display:flex;flex-direction:row;align-items:flex-start;gap:11px}
dialog .field.wf-take input{width:auto;min-height:0;margin:3px 0 0;flex-shrink:0;accent-color:var(--accent)}
dialog .field.wf-take:has(input:checked){border-color:var(--accent);background:rgba(120,70,215,.22)}
[data-live="wf-setup"]+.wf-live,.wf-live{margin-top:16px}

/* ---- Layout pass: roster, attention strip, check lists, pool rows ---- */
/* Tracker: attention is a full-width strip; the roster is a dense table with one column per stage. */
.wf-attention .panel-header,.wf-people .panel-header{padding:12px 16px}
.wf-attention .panel-header h2,.wf-people .panel-header h2{font-size:13.5px}
.wf-attn-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}
.wf-attn-list li{border-top:1px solid var(--line);border-right:1px solid var(--line);margin-right:-1px}
.wf-attn{border-top:0;padding:11px 16px;height:100%}
.wf-calm{border-top:1px solid var(--line);padding:12px 16px}
.wf-roster{display:grid;grid-template-columns:minmax(170px,220px) minmax(0,1fr) repeat(4,minmax(64px,84px))}
.wf-roster-row{display:contents}
.wf-roster-row>*{display:flex;align-items:center;min-width:0;padding:8px 16px;border-top:1px solid var(--line)}
.wf-roster-row>:nth-child(n+3){justify-content:flex-end;padding-left:8px}
.wf-roster-head>*{padding-top:7px;padding-bottom:7px;font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#8a8198;background:rgba(14,9,34,.45)}
.wf-roster-row:not(.wf-roster-head):hover>*{background:rgba(120,80,210,.07)}
.wf-roster .wf-person-head{gap:9px;padding:0;flex-wrap:nowrap}
.wf-roster .wf-person-head strong{font-size:12px}
.wf-roster .wf-person-head small{font-size:10px;color:var(--muted);text-transform:capitalize;white-space:nowrap}
.wf-roster-row.inactive .wf-person-head small{color:var(--danger)}
.wf-person-work{gap:5px;flex-wrap:wrap}
.wf-mini{padding:4px 9px;font-size:11px}
.wf-num{font-size:13px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.wf-num.zero{color:#5f5772;font-weight:500}
.wf-num.install{color:var(--wf-install)}
.wf-num.good{color:var(--wf-live)}
.wf-roster-idle{margin:0;padding:10px 16px 12px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.wf-roster-idle button{color:#d6cddd;font-size:11px;padding:0}
.wf-roster-idle button:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}

/* Pool rows: the description uses the row; secondary actions stay quiet until wanted */
.wf-row{grid-template-columns:minmax(0,1fr) auto auto;gap:16px;padding:9px 16px}
.wf-row-sub{max-width:none}
.wf-row-actions .wf-quiet-btn{opacity:.55;transition:opacity .15s ease}
.wf-row:hover .wf-quiet-btn,.wf-row:focus-within .wf-quiet-btn{opacity:1}
@media(hover:none){.wf-row-actions .wf-quiet-btn{opacity:1}}

/* Check list (department members and similar multi-selects) */
.check-list{display:flex;flex-direction:column;max-height:360px;overflow:auto;margin:4px 0 8px;border:1px solid var(--line);border-radius:10px}
.check-row{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid rgba(150,120,225,.1);cursor:pointer;font-size:12px;color:#d6cddd}
.check-row:first-child{border-top:0}
.check-row:hover{background:rgba(120,80,210,.1)}
.check-row:has(input:checked){background:rgba(120,70,215,.18);color:var(--text)}
.check-row input{margin:0;accent-color:var(--accent);width:15px;height:15px}
.check-row strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.check-role{font-size:10.5px;color:var(--muted);text-transform:capitalize}
.avatar.sm{width:24px;height:24px;font-size:9px}
/* Any remaining .field.checkbox keeps its box beside its label */
.field.checkbox{display:flex;flex-direction:row;align-items:center;gap:9px}
.field.checkbox input{width:auto;min-height:0;flex-shrink:0}
@media(max-width:760px){
 .wf-attn-list{grid-template-columns:1fr}
 .wf-roster{display:block}
 .wf-roster-row{display:grid;grid-template-columns:minmax(0,1fr) repeat(4,42px);border-top:1px solid var(--line)}
 .wf-roster-row>*{border-top:0;padding:8px 6px}
 .wf-roster-row>:first-child{padding-left:14px}
 .wf-roster-row>.wf-person-work{grid-column:1/-1;grid-row:2;padding:0 14px 10px}
 .wf-roster-head>:nth-child(2){display:none}
 .wf-roster-head>*{font-size:8.5px;letter-spacing:.02em}
}

/* ==== Layout system ====================================================
   One rhythm for every page, replacing the drifted per-page values above.
   Scale (4px base): 4 · 8 · 12 · 16 · 24 · 32.
   - Page sections stack with one 16px gap set by the container, never by child margins.
   - Panels: 12px/16px header, 16px body. Tables: 44px single-line rows.
   - Grids align to the top and never inherit a sibling margin. */
:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px}

/* Page stack */
.content{display:flex;flex-direction:column;gap:var(--s4)}
.content>*{margin-top:0!important;margin-bottom:0!important}
.content>.segmented,.content>.filters,.content>.suggestion-stats{align-self:flex-start}
.stack{display:flex;flex-direction:column;gap:var(--s4)}
.stack>*{margin-top:0!important;margin-bottom:0!important}
[data-live]>.panel+.panel,[data-live]>section+section,[data-live]>.wf-installs>.panel+.panel{margin-top:var(--s3)}
.wf-installs{gap:var(--s3)}
.wf-installs>.panel{margin-top:0}
.two-col,.db-layout,.quick-grid,.form-grid,.wf-split{align-items:start}
.two-col>*,.db-layout>*,.quick-grid>*,.card-grid>*,.wf-pool-bar>*{margin-top:0!important}
.page-footer{padding-top:var(--s3)}

/* Page heading: the page name, one line of context, actions on the right */
.page-heading{gap:var(--s4)}
.page-heading h1{font-size:24px;letter-spacing:-.025em;line-height:1.2}
.page-heading p{margin-top:var(--s1);line-height:1.6;max-width:80ch}

/* Panels */
.panel{margin-top:0}
.panel-header{padding:var(--s3) var(--s4);gap:var(--s3)}
.panel-header h2{font-size:14px}
.panel-header p{margin-top:2px;line-height:1.5}
.form-body{padding:var(--s4)}
.help-copy{padding:0 var(--s4) var(--s4)}
.table-tools{padding:0 var(--s4) var(--s3);gap:var(--s3)}
.empty{padding:var(--s6) var(--s5)}
.empty>.icon{margin-bottom:var(--s2)}
.empty .button{margin-top:var(--s3)}
.notice{margin-bottom:0;padding:var(--s3) var(--s4)}

/* Tables: compact rows, actions pinned right */
th{padding:8px 14px}
td{padding:9px 14px;vertical-align:middle}
th:first-child,td:first-child{padding-left:var(--s4)}
th:last-child,td:last-child{padding-right:var(--s4)}
td.row-actions{width:1%;white-space:nowrap;text-align:right}
.row-actions-inner{justify-content:flex-end;gap:6px}
.row-actions .button,.row-actions-inner .button{margin-top:0}
.resource-name{gap:10px}
.bug-excerpt{margin-top:2px}

/* Filters align to the panel edge */
.filters{gap:var(--s1)}
.filter{padding:6px 10px;font-size:11px}

/* Activity: one line per event */
.activity-row{align-items:center;gap:var(--s3);padding:8px var(--s4)}
.activity-row>.icon{width:15px;height:15px;color:var(--muted)}
.activity-row>div{display:flex;align-items:baseline;gap:var(--s2);min-width:0;flex:1}
.activity-row h3{font-size:12px;white-space:nowrap}
.activity-row p{margin-top:0;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

/* Overview quick links sit on the panel grid */
.quick-grid{padding:0 var(--s4) var(--s4);gap:var(--s2)}
.quick{padding:12px}

/* Database: the table list scrolls on its own instead of stretching the page */
@media(min-width:901px){
 .db-layout{grid-template-columns:240px minmax(0,1fr);gap:var(--s4)}
 .db-layout>.panel:first-child{position:sticky;top:var(--s4);max-height:calc(100vh - 160px);overflow:auto}
}

/* Live console fills the window */
.terminal{height:max(280px,calc(100vh - 360px))}

/* Settings: short values do not need 1500px inputs */
#settings-form .form-body{max-width:860px}

/* Importer drop target: a strip, not a hero */
.imp-drop{padding:18px 22px;row-gap:6px}

/* Sidebar: tighter pitch so every section fits a laptop screen */
@media(min-width:901px){
 .sidebar{padding-top:20px}
 .server-switch{padding:9px 10px;margin-bottom:var(--s5)}
 .nav-group{margin-bottom:var(--s4)}
 .nav-label{margin-bottom:var(--s1)}
 .nav{padding:8px 12px;margin:1px 0}
 .topbar{height:60px}
}

/* Tracker pieces */
.wf-rail{margin-top:0}
.wf-rail-step{padding:9px 16px 8px 14px}
.wf-rail-step strong{font-size:18px}
.wf-avatar{line-height:1}
.wf-all .panel-header{padding-bottom:var(--s1)}
.wf-tools{padding:var(--s2) var(--s4) 0}
.wf-filters{padding:var(--s3) var(--s4) var(--s2)}
.wf-table td{padding-top:8px;padding-bottom:8px}

/* Board: columns fill the screen so a card can be dropped anywhere */
.wf-kanban{margin-top:0}
@media(min-width:761px){.wf-kanban .kanban-col{min-height:calc(100vh - 300px)}}

/* Install queue: actions live in the card's header row */
.wf-install{display:block;padding:var(--s3) var(--s4)}
.wf-install-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4)}
.wf-install-id{min-width:0}
.wf-install-meta{margin-top:var(--s1)}
.wf-install-actions{flex-direction:row;align-items:center;gap:6px;min-width:0;flex-shrink:0}
.wf-install-actions .button{margin-top:0;min-width:0;width:auto}
.wf-quote{max-width:none;margin-top:var(--s2)}
.wf-flagged{margin-top:var(--s2)}
.wf-files{margin-top:var(--s2);gap:2px}
.wf-files li{padding:4px 6px 4px 10px}
.wf-files li .button{padding:5px 9px;min-height:28px}
.wf-nofiles{margin-top:var(--s2)}

/* Needs adding rows */
.wf-setup{padding:var(--s3) var(--s4)}
.wf-steps{margin-top:var(--s2);gap:6px}
.wf-step{padding:5px 11px 5px 8px}
.wf-live{margin-top:0}

/* Dialogs */
.wf-dialog-actions{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:var(--s2);margin:var(--s4) 0 var(--s1);padding:var(--s3) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.wf-dialog-actions .actions{display:flex;flex-wrap:wrap;gap:6px}
.wf-dialog-actions .button{margin-top:0;min-width:0}
.wf-risky .button.ghost{color:var(--muted)}
.dialog-aside{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line)}
.dialog-aside .muted{flex:1 1 220px;line-height:1.5}
.dialog-aside .button{margin-top:0;min-width:0}
.modal-head{padding-bottom:var(--s3)}

@media(max-width:760px){
 .wf-install-head{flex-direction:column;gap:var(--s2)}
 .wf-progress li:not(.here) span{visibility:hidden}
}
@media(max-width:640px){
 .page-heading h1{font-size:22px}
 .panel-header{flex-wrap:wrap}
 .panel-header>div:first-child{flex:1 1 100%}
 /* The first cell is the record's title: it does not need a label above it. */
 td[data-label]:first-child::before{display:none}
 td[data-label]:first-child{padding-bottom:6px}
}

/* Layout system, inspection round 1 */
.wf-person-head .wf-avatar{display:inline-grid;place-items:center;flex-direction:initial}
/* Rows sit on the content edge, not inset inside an invisible panel */
.content>.table-tools,.content>.quick-grid{padding:0}
.content>.quick-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
/* Tables: compact buttons, last-column actions pinned right */
td .button{margin-top:0;min-height:30px;padding:6px 11px;min-width:0}
td:last-child:has(>.button),td:last-child:has(>a.button){text-align:right;width:1%;white-space:nowrap}
/* Bug chips run inline under the title */
.bug-title .bug-script,.bug-title .bug-linked{display:inline-flex;vertical-align:middle;margin:6px 6px 0 0}
/* Console: overview keeps a modest preview; the console page fills the window */
.terminal{height:300px}
[data-page="console"] .terminal{height:max(320px,calc(100vh - 340px))}
/* Settings: on wide screens the page itself is a two-column grid; wrappers dissolve into it,
   so database pairs with the key files and the category tree takes the full width last. */
@media(min-width:1280px){
 #content[data-page="settings"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
 #content[data-page="settings"]>.page-heading,#content[data-page="settings"]>.page-footer{grid-column:1/-1}
 #content[data-page="settings"]>.page-footer{order:20}
 #content[data-page="settings"] #settings-form,#content[data-page="settings"] #imp-settings{display:contents}
 #content[data-page="settings"] #settings-form>section,#content[data-page="settings"] #imp-settings>section{margin:0!important}
 #content[data-page="settings"] #imp-settings>section:first-child{grid-column:1/-1;order:10}
}
#settings-form .form-body{max-width:none}
#settings-form .form-actions{justify-content:flex-start}
#settings-form .form-actions .button{margin-top:0}
/* Role reference: one compact list */
.role-list{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}
.role-list>div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:var(--s3);padding:9px var(--s4);border-top:1px solid var(--line)}
.role-list dt{font-size:12px;font-weight:600;color:var(--text)}
.role-list dd{margin:0;font-size:11.5px;line-height:1.55;color:var(--muted)}
@media(max-width:640px){.role-list{grid-template-columns:1fr}.role-list>div{grid-template-columns:1fr;gap:2px}}
/* Category rows keep their actions next to the row content */
.imp-node{max-width:980px}
/* Tracker list on phones: a two-line row (title; where · who · when), no repeated labels */
@media(max-width:640px){
 .wf-table tr{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:10px 14px}
 .wf-table td,.wf-table td[data-label]{display:inline-flex!important;align-items:center;width:auto;padding:0!important}
 .wf-table td[data-label]::before{display:none!important}
 .wf-table td:first-child{flex:1 1 100%;padding-bottom:2px!important}
 .wf-table td:nth-child(4):not(:has(.pill)){display:none!important}
 .wf-table td:last-child{margin-left:auto;color:var(--muted)}
}

/* ---- Heist progression planner ----------------------------------------
   A season tree on a dotted canvas beside a details rail. Inherits the cosmic-glass
   world: violet glass, workflow phase hues for status, the accent only for selection,
   the focused path and the playback cursor. Items read by their inventory picture and a
   dashed link; heists by the vault tile; milestones by an outlined flag. */
:root{--pg-node:rgba(28,19,60,.95);--pg-node-line:rgba(180,150,255,.2);--pg-edge:rgba(185,150,255,.36);--pg-edge-on:#c9a8ff;--pg-gold:#f0d49a;--pg-flow:rgba(240,206,140,.78)}
.pg-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#modal .field[hidden],.pg-play[hidden],.pg-tip[hidden]{display:none!important}

/* Season switcher in the page heading */
.pg-season{display:inline-flex;align-items:center;gap:10px;padding:6px 10px 6px 12px;min-height:40px;border-radius:10px;border:1px solid var(--glass-line);background:rgba(40,28,72,.5);text-align:left;color:var(--text);transition:background .15s,border-color .15s}
.pg-season:hover{background:rgba(74,52,130,.55);border-color:rgba(190,160,255,.3)}
.pg-season>.icon:first-child{color:var(--accent)}
.pg-season>.icon:last-child{width:14px;height:14px;color:var(--muted)}
.pg-season strong{display:block;font-size:12.5px;font-weight:600;line-height:1.25}
.pg-season small{display:block;font-size:10.5px;color:var(--muted);margin-top:1px}

/* Workbench */
.pg-bench{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:var(--s4);height:max(560px,calc(100vh - 190px))}
.pg-stage{display:flex;flex-direction:column;min-height:0}
.pg-toolbar{display:flex;align-items:center;gap:var(--s3);padding:8px 10px 8px 16px;border-bottom:1px solid var(--glass-line);min-height:52px;flex-wrap:wrap}
.pg-facts{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.pg-find input{width:170px;font-size:11.5px}
.pg-tidy{min-height:32px;padding:6px 10px}
.pg-find .icon{z-index:1}
.pg-tools{display:flex;gap:2px;margin-left:auto}
.pg-save-slot{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pg-save{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis}
.pg-save .icon{width:14px;height:14px;flex-shrink:0}
.pg-save.ok .icon{color:var(--wf-live)}
.pg-save.warn{color:var(--pg-gold)}
.pg-save-slot .button{min-height:30px;padding:5px 10px}

/* Canvas */
.pg-canvas{position:relative;flex:1;min-height:0;overflow:hidden;cursor:grab;touch-action:none;outline:none;border-radius:0 0 var(--radius) var(--radius);
 background-color:rgba(6,4,18,.38);background-image:radial-gradient(circle,rgba(185,150,255,.15) 1px,transparent 1.5px);background-size:24px 24px}
.pg-canvas:focus-visible{box-shadow:inset 0 0 0 2px var(--focus)}
.pg-canvas.is-panning{cursor:grabbing}
.pg-world{position:absolute;left:0;top:0;transform-origin:0 0}
.pg-world.is-gliding{transition:transform .26s cubic-bezier(.16,1,.3,1)}
.pg-edges{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}
.pg-edge{fill:none;stroke:var(--pg-edge);stroke-width:1.6;transition:opacity .18s}
/* Item lines: gold, dashed, and moving from the heist that gives an item to the one that needs it. */
.pg-edge.flow,.pg-edge.carries{stroke:var(--pg-flow);stroke-width:1.8;stroke-dasharray:7 6;animation:pg-ants 1.2s linear infinite}
.pg-edge.flow.on,.pg-edge.carries.on{stroke:var(--pg-gold);stroke-width:2.3}
.pg-edge.flow.faded,.pg-edge.carries.faded{animation-play-state:paused}
@keyframes pg-ants{to{stroke-dashoffset:-26}}
.pg-edge.on{stroke:var(--pg-edge-on);stroke-width:2.1}
.pg-edge.faded{opacity:.32}
.pg-arrow{fill:none;stroke:var(--pg-edge);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.pg-arrow.on{stroke:var(--pg-edge-on)}
.pg-arrow.flow{stroke:var(--pg-gold)}
.pg-edge-label{position:absolute;transform:translate(-50%,-50%);font-size:10px;font-weight:600;color:#e6dbff;background:rgba(20,13,46,.97);border:1px solid var(--glass-line);border-radius:999px;padding:2px 7px;white-space:nowrap;font-variant-numeric:tabular-nums;transition:opacity .18s}
.pg-edge-label.item{color:var(--pg-gold);border-color:rgba(240,212,154,.34)}
.pg-edge-label{display:inline-flex;align-items:center;gap:4px}
.pg-edge-label b{font-weight:700;color:#fff3dc}
.pg-edge-label em{font-style:normal;font-weight:500;color:#d9c6a0}
.pg-edge-label>i{font-style:normal;opacity:.5;margin:0 1px}
.pg-thumb.xs{width:16px;height:16px;border-radius:4px;padding:0;border:0;background:transparent}
.pg-gate{position:absolute;transform:translateX(-100%);font-size:10px;font-weight:550;color:#cbbde6;background:rgba(14,9,34,.94);border:1px solid var(--line);border-radius:6px;padding:2px 7px;white-space:nowrap;transition:opacity .18s}
.pg-edge-label.faded,.pg-gate.faded{opacity:.32}
.pg-loose-label{position:absolute;display:flex;gap:6px;align-items:center;font-size:11px;font-weight:550;color:var(--muted);white-space:nowrap}
.pg-loose-label .icon{width:14px;height:14px}

/* Nodes */
.pg-node{position:absolute;width:248px;height:112px;display:flex;flex-direction:column;justify-content:space-between;padding:12px 12px 10px;border-radius:12px;
 background:var(--pg-node);border:1px solid var(--pg-node-line);box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 12px 26px -16px rgba(2,1,10,.95);
 cursor:pointer;user-select:none;-webkit-user-select:none;transition:opacity .18s,border-color .15s,box-shadow .15s,background .15s}
.pg-node:hover{border-color:rgba(200,170,255,.4);background:rgba(38,26,78,.97)}
.pg-node.can-move{cursor:grab}
.pg-canvas.is-dragging,.pg-canvas.is-dragging .pg-node{cursor:grabbing}
.pg-node.is-moving{z-index:5;box-shadow:0 0 0 3px var(--focus),0 22px 40px -18px rgba(2,1,10,.95);transition:none}
.pg-guide{position:absolute;pointer-events:none;border-color:rgba(240,212,154,.7);border-style:dashed;border-width:0}
.pg-guide.v{width:0;border-left-width:1px}
.pg-guide.h{height:0;border-top-width:1px}
.pg-script{display:inline-flex;align-items:center;gap:4px;max-width:100%;margin-top:4px;font-family:"SFMono-Regular",Consolas,monospace;font-size:10px;color:#cbb8ee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-script .icon{width:11px;height:11px;flex-shrink:0}
.pg-script.missing{color:var(--pg-gold)}
.pg-node.is-finale{background:linear-gradient(165deg,rgba(92,54,172,.96),rgba(36,22,80,.97) 62%);border-color:rgba(205,170,255,.5)}
.pg-node.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus),0 16px 34px -16px rgba(107,62,205,.75)}
.pg-node.is-dim{opacity:.42}
.pg-node.is-match{border-color:var(--pg-gold);box-shadow:0 0 0 3px rgba(240,212,154,.2)}
.pg-node-head{display:flex;gap:10px;align-items:flex-start;min-width:0}
.pg-node-title{min-width:0;flex:1}
.pg-node-title strong{display:block;font-size:13px;font-weight:600;line-height:1.3;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-node-title span{display:block;font-size:10.5px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.pg-kind{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;background:rgba(120,80,210,.3);color:#dcc6ff}
.pg-kind .icon{width:16px;height:16px}
.pg-kind.sm{width:22px;height:22px;border-radius:6px}.pg-kind.sm .icon{width:13px;height:13px}
.pg-kind.lg{width:38px;height:38px;border-radius:10px}.pg-kind.lg .icon{width:19px;height:19px}
.kind-milestone .pg-kind,.pg-li .pg-kind.flagged{background:transparent;box-shadow:inset 0 0 0 1px rgba(201,182,242,.45);color:var(--wf-next)}
.is-finale .pg-kind{background:rgba(240,225,255,.16);color:#fff}
.pg-thumb{width:30px;height:30px;border-radius:8px;object-fit:contain;flex-shrink:0;padding:2px;background:rgba(10,6,26,.62);border:1px solid rgba(240,212,154,.22)}
.pg-thumb-blank{display:grid;place-items:center;color:var(--pg-gold)}
.pg-thumb-blank .icon{width:15px;height:15px}
.pg-thumb.sm{width:22px;height:22px;border-radius:6px;padding:1px}.pg-thumb-blank.sm .icon{width:12px;height:12px}
.pg-thumb.lead{width:30px;height:30px}
.pg-inspect-head .pg-thumb.lead{width:38px;height:38px;border-radius:10px}
.pg-tier{font-size:10px;font-weight:650;color:#dcc6ff;border:1px solid rgba(185,140,249,.34);border-radius:5px;padding:2px 5px;font-variant-numeric:tabular-nums;flex-shrink:0}
.pg-node-foot{display:flex;align-items:center;gap:8px;min-width:0;padding-right:30px}
.pg-node-foot .wf-phase{flex-shrink:0}
.pg-glance{display:flex;align-items:center;gap:4px;margin-left:auto;min-width:0}
.pg-cash{font-size:10.5px;font-weight:550;color:#e2d8f0;font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:2px}
.pg-new{font-size:10px;font-weight:550;color:var(--pg-gold);white-space:nowrap}
.pg-add{position:absolute;right:8px;bottom:8px;width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:#d6c4f5;border:1px solid var(--glass-line);background:rgba(56,40,96,.6);opacity:0;transition:opacity .15s,background .15s,color .15s}
.pg-node:hover .pg-add,.pg-node.is-selected .pg-add,.pg-add:focus-visible{opacity:1}
.pg-add:hover{color:#fff;background:rgba(120,80,210,.6)}
.pg-add .icon{width:14px;height:14px}
.pg-finale-tag{position:absolute;top:-9px;left:12px;font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#1d1033;background:#cfa9ff;border-radius:4px;padding:2px 6px}
.pg-flag{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#3a2c12;border:1px solid rgba(240,212,154,.6);color:var(--pg-gold)}
.pg-flag .icon{width:12px;height:12px}
.pg-flag.error{background:#3a1424;border-color:rgba(245,155,180,.6);color:var(--danger)}
.pg-simbadge{position:absolute;top:-9px;right:14px;font-size:10px;font-weight:700;color:#0f2a1f;background:var(--wf-live);border-radius:999px;padding:1px 7px;font-variant-numeric:tabular-nums}
.pg-simbadge:empty{display:none}
/* Playback: the one moving thing on the page */
.pg-canvas.is-playing .pg-node{opacity:1}
.pg-canvas.is-playing .pg-flag{display:none}
.pg-canvas.is-playing .pg-node.sim-idle{opacity:.45}
.pg-node.sim-done{border-color:rgba(142,217,181,.6)}
.pg-node.sim-active{opacity:1;border-color:var(--accent);animation:pg-pulse 1.1s cubic-bezier(.16,1,.3,1) infinite}
@keyframes pg-pulse{0%{box-shadow:0 0 0 0 rgba(185,140,249,.55),0 16px 34px -16px rgba(107,62,205,.75)}100%{box-shadow:0 0 0 16px rgba(185,140,249,0),0 16px 34px -16px rgba(107,62,205,.75)}}

/* Canvas controls */
.pg-overlay-top{position:absolute;left:12px;right:12px;top:12px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;pointer-events:none;z-index:2}
.pg-regions{display:flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:10px;background:rgba(18,11,42,.9);border:1px solid var(--glass-line);pointer-events:auto;box-shadow:0 10px 24px -14px rgba(2,1,10,.9)}
.pg-regions button{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:7px;font-size:11px;font-weight:550;color:var(--muted);transition:background .15s,color .15s}
.pg-regions button:hover{background:rgba(120,70,215,.28);color:var(--text)}
.pg-regions button .icon{width:14px;height:14px}
.pg-regions button span{font-size:10px;font-weight:650;color:#dcc6ff;background:rgba(120,70,215,.3);border-radius:999px;padding:0 6px;font-variant-numeric:tabular-nums}
.pg-regions button.add{color:#ffe7bd}
.pg-regions button.add .icon{color:var(--pg-gold)}
.pg-legend{display:flex;gap:14px;padding:6px 10px;border-radius:8px;background:rgba(18,11,42,.82);border:1px solid var(--glass-line);font-size:10.5px;color:var(--muted);pointer-events:none;white-space:nowrap}
.pg-legend span{display:inline-flex;align-items:center;gap:6px}
.pg-key{display:inline-block;width:22px;height:0;border-top:2px solid var(--pg-edge-on)}
.pg-key.flow{border-top:2px dashed var(--pg-gold)}
.pg-zoom{position:absolute;right:12px;bottom:12px;display:flex;align-items:center;gap:2px;padding:3px;border-radius:10px;background:rgba(18,11,42,.9);border:1px solid var(--glass-line);box-shadow:0 10px 24px -14px rgba(2,1,10,.9)}
.pg-zoom span{font-size:10.5px;color:var(--muted);min-width:38px;text-align:center;font-variant-numeric:tabular-nums}
.pg-zoom .icon-button .icon{width:16px;height:16px}
.pg-play{position:absolute;left:12px;right:168px;bottom:12px;display:flex;align-items:center;gap:6px;padding:5px 10px 5px 6px;border-radius:12px;background:rgba(22,14,50,.95);border:1px solid rgba(185,140,249,.32);box-shadow:0 14px 30px -16px rgba(2,1,10,.95)}
.pg-play .icon-button .icon{width:16px;height:16px}
.pg-play-main{color:var(--text)}
.pg-scrub{flex:1;min-width:60px;accent-color:var(--accent);background:none;border:0;backdrop-filter:none;-webkit-backdrop-filter:none}
.pg-play-time{font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pg-play .filter{min-width:38px}

/* Details rail */
.pg-side{display:flex;flex-direction:column;min-height:0}
.pg-tabs{display:flex;gap:2px;padding:6px 10px 0;border-bottom:1px solid var(--glass-line);flex-shrink:0}
.pg-tabs button{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:550;color:var(--muted);padding:10px 11px 11px;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}
.pg-tabs button:hover{color:var(--text)}
.pg-tabs button.active{color:var(--text);border-color:var(--accent)}
.pg-tabs .icon{width:14px;height:14px}
.pg-count{font-size:10px;font-weight:650;background:rgba(150,110,40,.5);color:#ffdfa8;border-radius:999px;padding:1px 6px;font-variant-numeric:tabular-nums}
.pg-side-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
.pg-inspect{padding:var(--s4);display:flex;flex-direction:column;gap:var(--s4)}
.pg-inspect-head{display:flex;align-items:center;gap:8px}
.pg-name{flex:1;min-width:0;font-size:17px;font-weight:600;letter-spacing:-.01em;padding:6px 8px;border-radius:8px;color:var(--text);background:transparent;border:1px solid transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.pg-name:hover:not(:disabled){border-color:var(--glass-line)}
.pg-name:focus{outline:none;border-color:var(--accent);background:rgba(10,6,26,.55);box-shadow:0 0 0 3px var(--focus)}
.pg-name:disabled{opacity:1;color:var(--text)}
.pg-where{display:flex;flex-wrap:wrap;align-items:center;gap:5px 6px;margin-top:-8px;font-size:11.5px;line-height:1.5;color:var(--muted)}
.pg-where .icon{width:14px;height:14px}
.pg-chip-link{font-size:11px;font-weight:550;color:#e2d0ff;background:rgba(90,60,170,.3);border:1px solid var(--glass-line);border-radius:6px;padding:2px 7px}
.pg-chip-link:hover{background:rgba(120,80,210,.45);color:#fff}
.pg-fieldset{display:grid;gap:8px}
.pg-row-label{font-size:10.5px;font-weight:550;color:var(--muted);margin-bottom:-2px}
.pg-seg{margin-top:0;display:flex;flex-wrap:wrap;justify-self:start}
.pg-seg button{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;font-size:11px}
.pg-seg button:disabled{opacity:1;cursor:default}
.pg-seg button:disabled:not(.active){opacity:.55}
.pg-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--wf-idle)}
.pg-dot.wf-phase-backlog{background:transparent;box-shadow:inset 0 0 0 1.5px var(--wf-idle)}
.pg-dot.wf-phase-next{background:transparent;box-shadow:inset 0 0 0 1.5px var(--wf-next)}
.pg-dot.wf-phase-dev{background:var(--wf-dev)}
.pg-dot.wf-phase-live{background:var(--wf-live)}
.pg-numgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pg-numfield{display:grid;gap:6px;font-size:10.5px;font-weight:550;color:var(--muted);min-width:0}
.pg-numwrap{display:flex;align-items:center;gap:6px;min-height:34px;padding:0 9px;border-radius:8px;background:rgba(10,6,26,.55);border:1px solid var(--glass-line);min-width:0;transition:border-color .15s,box-shadow .15s}
.pg-numwrap:hover{border-color:rgba(180,150,255,.28)}
.pg-numwrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.pg-numwrap input{flex:1;width:100%;min-width:0;padding:7px 0;background:none;border:0;color:var(--text);font-size:12.5px;font-variant-numeric:tabular-nums;backdrop-filter:none;-webkit-backdrop-filter:none;-moz-appearance:textfield;appearance:textfield}
.pg-numwrap input::-webkit-outer-spin-button,.pg-numwrap input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.pg-numwrap input:focus,.pg-numwrap input:focus-visible{outline:none}
.pg-numwrap input:disabled{color:var(--text);opacity:1}
.pg-numwrap i,.pg-numwrap b{font-style:normal;font-weight:500;font-size:11px;color:var(--muted);white-space:nowrap}
.pg-numwrap.sm{flex:0 0 auto;min-height:30px;padding:0 7px;gap:4px}
.pg-numwrap.sm input{width:42px;flex:0 0 auto}
.pg-numwrap.md{flex:1 1 auto;min-height:30px;padding:0 8px}
.pg-crew input{width:38px;flex:0 0 auto}
.pg-text{display:grid;gap:6px;font-size:10.5px;font-weight:550;color:var(--muted)}
.pg-text i{font-style:normal;font-weight:400}
.pg-text input,.pg-text textarea{width:100%;padding:8px 10px;border-radius:8px;font-size:12px;color:var(--text)}
.pg-text textarea{resize:vertical;min-height:70px;line-height:1.55}
.pg-text input:focus,.pg-text textarea:focus,.pg-rowtext:focus,.pg-li select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.pg-section{display:grid;gap:10px;padding-top:var(--s4);border-top:1px solid var(--line)}
.pg-section header h3{font-size:12.5px;font-weight:600;color:var(--text)}
.pg-section header p{font-size:11px;line-height:1.5;color:var(--muted);margin-top:3px}
.pg-section code{font-size:11px;color:var(--pg-gold)}
.pg-gate-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:11.5px;color:var(--muted)}
.pg-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.pg-li{display:flex;align-items:center;gap:8px;min-width:0;padding:5px 5px 5px 8px;border-radius:9px;background:rgba(40,28,74,.42);border:1px solid var(--glass-line)}
.pg-rows>.pg-li{display:block;padding:0}
.pg-li-main{display:flex;align-items:center;gap:8px;min-width:0;padding:5px 5px 5px 8px}
.pg-rows>.pg-li.has-recipe{border-color:rgba(240,212,154,.34)}
.pg-craft{color:var(--muted)}
.pg-craft.on{color:var(--pg-gold)}
.pg-craft.open{background:rgba(150,110,40,.3);color:#ffdfa8}
.pg-recipe{display:grid;gap:8px;margin:0 6px 6px;padding:10px;border-radius:8px;background:rgba(10,6,26,.5);border:1px dashed rgba(240,212,154,.3)}
.pg-recipe.empty p{font-size:11.5px;color:var(--muted);line-height:1.5}
.pg-recipe.empty .button{justify-self:start;min-height:30px;padding:6px 10px;font-size:11px}
.pg-recipe-head{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#ffe7bd}
.pg-recipe-head .icon{width:14px;height:14px;color:var(--pg-gold)}
.pg-recipe-head span{font-weight:400;color:var(--muted)}
.pg-recipe .pg-li{background:rgba(40,28,74,.5)}
.pg-recipe-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}
.pg-recipe-grid .pg-text{grid-column:1/-1}
.pg-recipe .text-button{justify-self:start}
.text-button.danger{color:var(--danger)}
.pg-pair{display:flex;flex-wrap:wrap;gap:8px}
.pg-script-row{display:flex;align-items:center;gap:6px}
.pg-script-row .pg-itempick.wide{flex:1;min-width:0}
.pg-itempick.missing small{color:var(--pg-gold)}
.pg-kind.code{background:rgba(90,60,170,.32);color:#d6c4f5}
.pg-li-name{flex:1;min-width:0;text-align:left;font-size:12px;font-weight:550;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-li-name small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:1px}
.pg-li-name:hover{color:#fff;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.pg-toggle{flex-shrink:0;font-size:10.5px;font-weight:550;padding:5px 8px;border-radius:6px;border:1px solid var(--glass-line);color:var(--muted);white-space:nowrap;transition:background .15s,color .15s}
.pg-toggle:hover:not(:disabled){color:var(--text);background:rgba(90,60,170,.25)}
.pg-toggle.on{color:#c4f2dc;border-color:rgba(142,217,181,.42);background:rgba(60,120,95,.24)}
.pg-toggle:disabled{opacity:1;cursor:default}
.icon-button.sm{width:28px;height:28px;flex-shrink:0}
.icon-button.sm .icon{width:15px;height:15px}
.pg-itempick{display:flex;align-items:center;gap:8px;flex:1;min-width:0;text-align:left;padding:3px 6px 3px 3px;border-radius:7px;border:1px solid transparent;color:var(--text)}
.pg-itempick:hover:not(:disabled){border-color:var(--glass-line);background:rgba(90,60,170,.2)}
.pg-itempick:disabled{opacity:1;cursor:default}
.pg-itempick>span{min-width:0}
.pg-itempick strong{display:block;font-size:12px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-itempick small{display:block;font-size:10px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-itempick small.pg-new{color:var(--pg-gold)}
.pg-itempick.wide{flex:none;width:100%;padding:8px;border-color:var(--glass-line);background:rgba(10,6,26,.45)}
.pg-itempick.wide .pg-thumb{width:36px;height:36px}
.pg-itempick.wide>.icon:last-child{margin-left:auto;width:14px;height:14px;color:var(--muted)}
.pg-rowicon{display:grid;place-items:center;color:var(--muted);flex-shrink:0}
.pg-rowicon .icon{width:16px;height:16px}
.pg-li select{flex-shrink:0;min-height:30px;padding:5px 8px;border-radius:7px;font-size:11.5px;color:var(--text)}
.pg-rowtext{flex:1;min-width:0;min-height:30px;padding:6px 8px;border-radius:7px;font-size:12px;color:var(--text)}
.pg-adds{display:flex;flex-wrap:wrap;gap:6px}
.pg-adds .button{min-height:30px;padding:6px 10px;font-size:11px}
.pg-adds .button .icon{width:14px;height:14px}
.pg-none{font-size:11.5px;color:var(--muted)}

/* Checks */
.pg-checks{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pg-check{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:10px;background:rgba(40,28,74,.42);border:1px solid var(--glass-line)}
.pg-check>.icon{width:16px;height:16px;flex-shrink:0;margin-top:1px}
.pg-check.warn>.icon{color:var(--pg-gold)}
.pg-check.error{border-color:rgba(245,155,180,.32)}
.pg-check.error>.icon{color:var(--danger)}
.pg-check.info>.icon{color:var(--muted)}
.pg-check p{font-size:12px;line-height:1.5;color:#e8e0f4}
.pg-check-actions{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px}
.pg-allgood{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:10px;background:rgba(60,120,95,.16);border:1px solid rgba(142,217,181,.3)}
.pg-allgood>.icon{color:var(--wf-live);flex-shrink:0}
.pg-allgood strong{font-size:13px}
.pg-allgood p{font-size:11.5px;color:var(--muted);margin-top:3px;line-height:1.5}
.pg-newitems{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.pg-newitems li{display:flex;gap:10px;align-items:baseline;font-size:12px;color:var(--muted)}
.pg-newitems code{color:var(--pg-gold);font-size:11.5px}
.pg-section>.button{justify-self:start;min-height:30px;padding:6px 10px;font-size:11px}

/* Simulation */
.pg-sim-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.pg-sim-copy{font-size:11.5px;line-height:1.55;color:var(--muted);margin-top:-6px}
.pg-sim-actions{display:flex;flex-wrap:wrap;gap:8px}
.pg-stale{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--pg-gold)}
.pg-stale .icon{width:15px;height:15px;flex-shrink:0}
.pg-result{display:grid;gap:8px}
.pg-lead{font-size:14px;line-height:1.5;color:var(--text);text-wrap:pretty}
.pg-lead strong{font-weight:650;color:#fff}
.pg-result>.muted{font-size:11.5px;line-height:1.5}
.pg-verdict{display:inline-flex;align-items:center;gap:6px;justify-self:start;font-size:11.5px;font-weight:550;padding:4px 10px 4px 8px;border-radius:999px}
.pg-verdict .icon{width:14px;height:14px}
.pg-verdict.ok{color:#c4f2dc;background:rgba(60,120,95,.24)}
.pg-verdict.over{color:#ffdfa8;background:rgba(150,110,40,.32)}
.pg-hist{position:relative;margin:8px 0 0}
.pg-hist-plot{position:relative;height:132px;display:flex;align-items:flex-end;gap:2px;padding-top:42px;border-bottom:1px solid rgba(150,120,225,.3)}
.pg-bar{flex:1;min-width:0;border-radius:4px 4px 0 0;background:var(--accent);opacity:.78;transition:opacity .15s}
.pg-bar:hover{opacity:1}
.pg-mark{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed rgba(241,235,251,.7);pointer-events:none}
.pg-mark.target{border-left-color:var(--pg-gold)}
.pg-mark b{position:absolute;top:2px;font-size:10px;font-weight:600;white-space:nowrap;color:var(--text);background:rgba(18,11,42,.92);padding:1px 5px;border-radius:4px;font-variant-numeric:tabular-nums}
.pg-mark.target b{color:var(--pg-gold)}
.pg-mark b.l{right:4px}.pg-mark b.r{left:4px}.pg-mark b.row2{top:21px}
.pg-hist-axis{display:flex;justify-content:space-between;gap:8px;margin-top:5px;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.pg-tip{position:absolute;top:18px;transform:translate(-50%,-100%);z-index:2;font-size:10.5px;font-weight:550;color:#1d1033;background:#f1ebfb;padding:4px 8px;border-radius:6px;white-space:nowrap;pointer-events:none;font-variant-numeric:tabular-nums;box-shadow:0 6px 16px -6px rgba(0,0,0,.6)}
.pg-share{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pg-share li{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) 48px;gap:10px;align-items:center}
.pg-share-name{min-width:0;text-align:left;font-size:12px;font-weight:550;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-share-name small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:1px}
.pg-share-name:hover{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.pg-share-bar{height:8px;border-radius:4px;background:rgba(150,120,225,.13);overflow:hidden}
.pg-share-bar i{display:block;height:100%;border-radius:0 4px 4px 0;background:var(--accent)}
.pg-share-n{text-align:right;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.pg-share-n small{display:block;font-size:10px;font-weight:400;color:var(--muted)}
.pg-facts-list{list-style:none;margin:0;padding:0}
.pg-facts-list li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid var(--line);font-size:12px}
.pg-facts-list li:first-child{border-top:0;padding-top:0}
.pg-facts-list span{color:var(--muted)}
.pg-facts-list strong{font-weight:600;font-variant-numeric:tabular-nums}
.pg-facts-list li.warn span,.pg-facts-list li.warn strong{color:var(--pg-gold)}
.pg-events{list-style:none;margin:0;padding:0;display:grid;gap:2px;max-height:340px;overflow:auto;overscroll-behavior:contain}
.pg-event{display:flex;gap:10px;width:100%;text-align:left;padding:6px 8px;border-radius:7px;font-size:11.5px;line-height:1.45;color:#ddd4ea;transition:background .12s,opacity .12s}
.pg-event:hover{background:rgba(90,60,170,.2)}
.pg-event time{min-width:36px;color:var(--muted);font-variant-numeric:tabular-nums}
.pg-event.past{opacity:.62}
.pg-event.current{background:rgba(120,70,215,.32);color:#fff;opacity:1}
.pg-event.fail strong{color:var(--danger)}
.pg-event.wait{color:var(--muted)}
.pg-event.missing strong,.pg-event.ext strong{color:var(--pg-gold)}

/* Popovers */
.pg-pop{position:fixed;z-index:150;min-width:230px;max-width:calc(100vw - 24px);padding:6px;border-radius:12px;background:linear-gradient(180deg,rgba(32,21,66,.98),rgba(15,9,36,.98));border:1px solid rgba(185,140,249,.28);box-shadow:0 22px 50px -18px rgba(2,1,10,.95);animation:pg-pop .14s cubic-bezier(.16,1,.3,1)}
.pg-pop.wide{width:340px}
.pg-pop button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border-radius:8px;font-size:12px;color:var(--text)}
.pg-pop button:hover,.pg-pop button:focus-visible{background:rgba(120,70,215,.32);outline:none}
.pg-pop button>.icon{width:16px;height:16px;color:#c9a8ff;flex-shrink:0}
.pg-pop button>span{min-width:0}
.pg-pop button small{display:block;font-size:10.5px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-pop button.current{background:rgba(120,70,215,.2)}
.pg-pop button.danger,.pg-pop button.danger>.icon{color:var(--danger)}
.pg-pop-search{display:flex;align-items:center;gap:8px;padding:2px 8px 8px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.pg-pop-search .icon{width:15px;height:15px;color:var(--muted);flex-shrink:0}
.pg-pop-search input{flex:1;min-width:0;padding:7px 0;background:none;border:0;font-size:12.5px;color:var(--text);backdrop-filter:none;-webkit-backdrop-filter:none}
.pg-pop-search input:focus{outline:none}
.pg-pop-list{display:grid;gap:1px;max-height:min(300px,calc(100vh - 200px));overflow:auto;overscroll-behavior:contain}
.pg-pop-sep{height:1px;margin:4px 2px;background:var(--line)}
.pg-pop-empty,.pg-pop-foot{font-size:11px;color:var(--muted);padding:8px 10px}
.pg-pop-foot{margin-top:4px;padding-bottom:4px;border-top:1px solid var(--line)}
@keyframes pg-pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.pg-keylist{margin:0;padding:6px 8px;display:grid;gap:7px}
.pg-keylist div{display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:11.5px}
.pg-keylist dd{margin:0;color:var(--muted);text-align:right}
.pg-keylist kbd{font-family:inherit;font-size:10.5px;padding:2px 6px;border-radius:5px;border:1px solid var(--glass-line);background:rgba(10,6,26,.6);color:var(--text);white-space:nowrap}

/* First run */
.pg-start{display:grid;justify-items:center;gap:12px;padding:48px 24px 44px;text-align:center}
.pg-start-art{width:220px;height:132px}
.pg-art-line{fill:none;stroke:rgba(185,150,255,.45);stroke-width:1.5}
.pg-art-top{fill:rgba(120,70,215,.5);stroke:#c9a4ff}
.pg-art-box{fill:rgba(40,28,74,.7);stroke:rgba(180,150,255,.32)}
.pg-art-text{stroke:#efe4ff;stroke-width:2.5;stroke-linecap:round}
.pg-art-faint{stroke:rgba(200,180,240,.35);stroke-width:2.5;stroke-linecap:round}
.pg-start h2{font-size:20px;letter-spacing:-.02em}
.pg-start>p{max-width:54ch;font-size:12.5px;line-height:1.6;color:var(--muted)}
.pg-start-form{display:grid;grid-template-columns:minmax(0,170px) minmax(0,300px) auto;align-items:end;gap:10px;margin-top:8px;text-align:left}
.pg-start-form .button{min-height:42px}
.pg-history{list-style:none;margin:0;padding:0;max-height:360px;overflow:auto}
.pg-history li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.pg-history strong{font-size:12.5px}
.pg-history small{display:block;font-size:11px;color:var(--muted);margin-top:2px}

@media(max-width:1180px){.pg-bench{grid-template-columns:minmax(0,1fr) 340px}}
@media(max-width:980px){
 .pg-bench{grid-template-columns:1fr;height:auto}
 .pg-stage{height:min(68vh,640px)}
 .pg-side-body{overflow:visible}
}
@media(max-width:680px){
 .pg-stage{height:62vh}
 .pg-toolbar{padding:8px 10px}
 .pg-facts{display:none}
 .pg-find{order:3;flex:1 1 100%}
 .pg-find input{width:100%}
 .pg-play{right:12px;bottom:58px}
 .pg-start{padding:32px 16px}
 .pg-start-form{grid-template-columns:1fr;width:100%}
 .pg-season{width:100%}
 .pg-sim-form{grid-template-columns:1fr 1fr}
 .pg-legend{display:none}
}
@media(pointer:coarse){
 .pg-tools [data-action="pg-keys"]{display:none}
 .pg-add{opacity:1;width:34px;height:34px}
 .pg-li .icon-button.sm{width:40px;height:40px}
 .pg-toggle{padding:9px 10px}
}
@media(prefers-reduced-motion:reduce){
 .pg-world.is-gliding{transition:none}
 .pg-node.sim-active{animation:none;box-shadow:0 0 0 3px var(--focus)}
 .pg-pop{animation:none}
}

/* Simpler details rail: essentials first, everything else folded under More. */
.pg-li-sub{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin:0;padding:0 8px 7px 38px;font-size:10.5px;line-height:1.45;color:var(--muted)}
.pg-li-sub.linked{color:#e8d3a6}
.pg-li-sub.pg-new{color:var(--pg-gold)}
.pg-li-sub .pg-key{width:14px}
.pg-li-sub .text-button{font-size:10.5px}
.pg-more{border-top:1px solid var(--line);padding-top:var(--s3)}
.pg-more>summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font-size:12.5px;font-weight:600;color:var(--text);padding:4px 0}
.pg-more>summary::-webkit-details-marker{display:none}
.pg-more>summary .icon{width:14px;height:14px;color:var(--muted);transition:transform .15s}
.pg-more[open]>summary .icon{transform:rotate(90deg)}
.pg-more>summary span{font-size:11px;font-weight:400;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.pg-more>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
.pg-more-body{display:grid;gap:12px;margin-top:10px}

/* Item node on a link: the items a heist hands up, as one small card. */
.pg-itemnode{position:absolute;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:6px;max-width:190px;height:26px;padding:0 9px 0 4px;border-radius:8px;
 background:#24183a;border:1px solid rgba(240,212,154,.5);color:#ffe7bd;font-size:10.5px;font-weight:600;white-space:nowrap;
 box-shadow:0 6px 14px -8px rgba(2,1,10,.9);transition:opacity .18s,border-color .15s,background .15s;cursor:pointer}
.pg-itemnode:hover{background:#30214c;border-color:var(--pg-gold)}
.pg-itemnode.on{border-color:var(--pg-gold);background:#2e2045}
.pg-itemnode.faded{opacity:.35}
.pg-itemnode-pics{display:inline-flex;flex-shrink:0}
.pg-itemnode-pics .pg-thumb{width:18px;height:18px;border-radius:5px;padding:1px;background:rgba(10,6,26,.7);border:1px solid rgba(240,212,154,.3)}
.pg-itemnode-pics .pg-thumb+.pg-thumb{margin-left:-6px}
.pg-itemnode-pics .pg-thumb-blank .icon{width:11px;height:11px}
.pg-itemnode-name{overflow:hidden;text-overflow:ellipsis;min-width:0}
.pg-runs{font-weight:700;color:#e6dbff;padding-left:4px}
.pg-itemnode .pg-runs{padding-left:5px;padding-right:2px;border-right:1px solid rgba(240,212,154,.25);margin-right:2px}
/* What the heist above needs, offered on the heist below */
.pg-wants{display:grid;gap:6px;padding:10px;border-radius:9px;background:rgba(150,110,40,.1);border:1px dashed rgba(240,212,154,.32)}
.pg-wants>p{font-size:11px;color:var(--muted)}
.pg-wants>p strong{color:#ffe7bd;font-weight:600}
.pg-want-list{display:flex;flex-wrap:wrap;gap:6px}
.pg-want{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:3px 8px 3px 4px;border-radius:7px;border:1px solid rgba(240,212,154,.34);background:rgba(36,24,58,.8);color:#ffe7bd;font-size:11.5px;font-weight:550;transition:background .15s,border-color .15s}
.pg-want:hover:not(:disabled){background:rgba(90,62,24,.55);border-color:var(--pg-gold)}
.pg-want .icon{width:13px;height:13px;color:var(--pg-gold)}
.pg-want.on{background:rgba(60,120,95,.22);border-color:rgba(142,217,181,.45);color:#c4f2dc}
.pg-want.on .icon{color:var(--wf-live)}
.pg-want .pg-thumb{width:20px;height:20px;border-radius:5px}
.pg-want:disabled{opacity:1;cursor:default}
.pg-itempick small.linked{color:#e8d3a6}
@media(pointer:coarse){.pg-want{min-height:40px}}

/* Side heists: their own area beside the path to the finale */
.pg-region{position:absolute;border-radius:18px;border:1px dashed rgba(240,212,154,.28);background:rgba(150,110,40,.05);pointer-events:none}
.pg-region-label{position:absolute;display:grid;gap:2px;pointer-events:none;white-space:nowrap}
.pg-region-label strong{display:inline-flex;align-items:center;gap:7px;font-size:15px;font-weight:650;letter-spacing:-.01em;color:#ffe7bd}
.pg-region-label strong .icon{width:16px;height:16px;color:var(--pg-gold)}
.pg-region-label span{font-size:11.5px;color:var(--muted)}
.pg-region-label.main strong{color:#e8d9ff}
.pg-region-label.main strong .icon{color:var(--accent)}
.pg-finale-tag.side{background:#3a2c12;color:#ffdfa8;border:1px solid rgba(240,212,154,.45)}
.pg-fed{position:absolute;top:-9px;right:46px;display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;color:#ffdfa8;background:#3a2c12;border:1px solid rgba(240,212,154,.5);border-radius:999px;padding:1px 7px 1px 5px;font-variant-numeric:tabular-nums}
.pg-fed .icon{width:11px;height:11px}
.pg-edge.drop{stroke:var(--pg-gold);stroke-width:2;stroke-dasharray:3 6;stroke-linecap:round;animation:pg-ants 1.6s linear infinite}
.pg-itemnode.drop{border-style:dashed}
.pg-chance{font-weight:700;color:#fff3dc;background:rgba(240,212,154,.18);border-radius:5px;padding:1px 5px;margin-left:1px;font-variant-numeric:tabular-nums}
.pg-where.feeds{margin-top:-10px}
.pg-chip-link.gold{color:#ffe7bd;background:rgba(150,110,40,.28);border-color:rgba(240,212,154,.34)}
.pg-want em{font-style:normal;font-weight:700;font-size:10.5px;color:#fff3dc}
/* Quantity and drop chance on a reward, spelled out */
.pg-li-nums{display:flex;flex-wrap:wrap;gap:6px 14px;padding:0 8px 8px 38px}
.pg-li-nums label{display:inline-flex;align-items:center;gap:7px;font-size:10.5px;font-weight:550;color:var(--muted)}
.pg-li-nums .pg-numwrap.sm input{width:40px}
@media(max-width:680px){.pg-legend{display:none}.pg-regions button{padding:6px 8px}}
@media(prefers-reduced-motion:reduce){.pg-edge.flow,.pg-edge.carries,.pg-edge.drop{animation:none}}

/* ---- Big seasons: calm by default, detail by zoom, room to breathe ---- */
/* Area titles and link badges keep a readable size at any zoom (the canvas sets --inv-k / --badge-k). */
.pg-region-label{transform:translateY(-100%) scale(var(--inv-k,1));transform-origin:0 100%}
.pg-itemnode,.pg-edge-label{transform:translate(-50%,-50%) scale(var(--badge-k,1))}
/* Mid zoom: the script line goes; everything else stays. */
.pg-canvas.lod-mid .pg-script{display:none}
/* Far zoom: a map. Name and status in larger type, badges as pictures, lines still. */
.pg-canvas.lod-far .pg-node-title span,.pg-canvas.lod-far .pg-script,.pg-canvas.lod-far .pg-glance,.pg-canvas.lod-far .pg-tier,.pg-canvas.lod-far .pg-add,.pg-canvas.lod-far .pg-fed{display:none}
.pg-canvas.lod-far .pg-node-title strong{font-size:21px;line-height:1.2;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pg-canvas.lod-far .pg-node .wf-phase{font-size:15px}
.pg-canvas.lod-far .pg-node .wf-phase i{width:10px;height:10px}
.pg-canvas.lod-far .pg-kind{width:38px;height:38px}
.pg-canvas.lod-far .pg-itemnode-name,.pg-canvas.lod-far .pg-chance,.pg-canvas.lod-far .pg-runs{display:none}
.pg-canvas.lod-far .pg-itemnode{padding:0 4px;gap:0}
.pg-canvas.lod-far .pg-edge{animation:none}
.pg-canvas.lod-far .pg-finale-tag{font-size:13px;top:-14px}

/* No stray highlighting: the canvas, toolbars and tabs are controls, not text. */
.pg-stage,.pg-tabs,.pg-overlay-top,.pg-zoom,.pg-play,.pg-node{user-select:none;-webkit-user-select:none}
.pg-stage input,.pg-side input,.pg-side textarea{user-select:text;-webkit-user-select:text}
.pg-canvas img,.pg-side img{-webkit-user-drag:none;user-drag:none}
body.pg-dragging,body.pg-dragging *{user-select:none!important;-webkit-user-select:none!important;cursor:inherit}

/* Toolbar: focus and panel controls */
.pg-tools{align-items:center}
.pg-tools .icon-button.on{color:var(--text);background:rgba(120,70,215,.24)}
.pg-focus-btn,.pg-exit{min-height:32px;padding:6px 11px}
.pg-focus-title{display:inline-flex;align-items:center;gap:7px;margin-right:auto;font-size:13px;font-weight:600;color:var(--text);white-space:nowrap}
.pg-focus-title .icon{width:16px;height:16px;color:var(--accent)}

/* Details panel hidden: the canvas takes the width. */
.pg-bench.side-collapsed{grid-template-columns:minmax(0,1fr)}
.pg-bench.side-collapsed .pg-side{display:none}

/* Focus workspace: the planner fills the screen; the site chrome steps away. */
body.pg-focus{overflow:hidden}
body.pg-focus .sidebar,body.pg-focus .topbar,body.pg-focus #content>.page-heading,body.pg-focus .page-footer{display:none}
body.pg-focus .pg-bench{position:fixed;inset:0;z-index:60;height:100vh;height:100dvh;gap:0;background:var(--deep);grid-template-columns:minmax(0,1fr) 400px}
body.pg-focus .pg-bench.side-collapsed{grid-template-columns:minmax(0,1fr)}
body.pg-focus .pg-stage,body.pg-focus .pg-side{border-radius:0;border:0;box-shadow:none}
body.pg-focus .pg-side{border-left:1px solid var(--glass-line)}
body.pg-focus .pg-canvas{border-radius:0}
body.pg-focus .pg-toolbar{min-height:50px;padding-left:14px;background:rgba(14,9,34,.92)}
body.pg-focus .pg-tools{margin-left:0}
body.pg-focus .pg-facts{display:none}
@media(max-width:980px){
 body.pg-focus .pg-bench{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
 body.pg-focus .pg-side{display:none}
 body.pg-focus .pg-stage{height:100vh;height:100dvh}
}

/* Season overview when nothing is selected */
.pg-overview{gap:var(--s4)}
.pg-ov-head h2{font-size:18px;letter-spacing:-.01em}
.pg-ov-head p{margin-top:6px;font-size:12.5px;line-height:1.6;color:var(--muted);text-wrap:pretty}
.pg-ov-finale{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border-radius:12px;text-align:left;color:var(--text);
 background:linear-gradient(165deg,rgba(92,54,172,.6),rgba(36,22,80,.7) 70%);border:1px solid rgba(205,170,255,.4);transition:border-color .15s,background .15s}
.pg-ov-finale:hover{border-color:var(--accent)}
.pg-ov-finale>span:nth-child(2){display:grid;gap:2px;min-width:0;flex:1}
.pg-ov-finale small{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#d9c2ff}
.pg-ov-finale strong{font-size:15px;font-weight:600}
.pg-ov-finale em{font-style:normal;font-size:11.5px;color:var(--muted)}
.pg-ov-finale>.icon:last-child{width:16px;height:16px;color:var(--muted)}
.pg-ov-rows{display:grid;gap:6px}
.pg-ov-row{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:10px;text-align:left;font-size:12.5px;color:var(--text);background:rgba(40,28,74,.42);border:1px solid var(--glass-line);transition:background .15s,border-color .15s}
.pg-ov-row:hover{background:rgba(74,52,130,.5);border-color:rgba(190,160,255,.3)}
.pg-ov-row>.icon{width:16px;height:16px;color:#c9a8ff;flex-shrink:0}
.pg-ov-row>span{flex:1}
.pg-ov-row>.icon:last-child{width:14px;height:14px;color:var(--muted)}
.pg-ov-row.warn>.icon:first-child{color:var(--pg-gold)}
.pg-ov-tips{margin:0;padding:12px 0 0;border-top:1px solid var(--line);list-style:none;display:grid;gap:8px;font-size:11.5px;line-height:1.55;color:var(--muted)}
.pg-ov-tips b{color:var(--text)}
.pg-ov-tips kbd{font-family:inherit;font-size:10.5px;padding:1px 5px;border-radius:4px;border:1px solid var(--glass-line);background:rgba(10,6,26,.6);color:var(--text)}

/* Several trees: each finale gets its own area; ties between trees are violet and dashed. */
.pg-region.tree{border-color:rgba(185,140,249,.26);background:rgba(120,70,215,.05)}
.pg-tie-chip{position:absolute;left:12px;bottom:-12px;display:inline-flex;align-items:center;gap:5px;max-width:200px;height:22px;padding:0 8px 0 6px;border-radius:7px;
 font-size:10px;font-weight:650;color:#e8d9ff;background:#2a1b52;border:1px dashed rgba(201,168,255,.6);white-space:nowrap;box-shadow:0 6px 14px -8px rgba(2,1,10,.9)}
.pg-tie-chip:hover{background:#3a2670;border-style:solid}
.pg-tie-chip .icon{width:12px;height:12px;flex-shrink:0}
.pg-tie-chip span{overflow:hidden;text-overflow:ellipsis}
.pg-tie-chip b{font-weight:700;color:#cbb3f2}
.pg-edge.tie{stroke:var(--pg-edge-on);stroke-width:2;stroke-dasharray:8 6}
.pg-itemnode.tie{color:#e8d9ff;border-color:rgba(201,168,255,.6);border-style:dashed;background:#24183f;padding-left:8px}
.pg-itemnode.tie .icon{width:13px;height:13px;color:var(--accent)}
.pg-ov-row>span small{display:block;font-size:11px;color:var(--muted);margin-top:1px}
.pg-canvas.lod-far .pg-tie-chip span,.pg-canvas.lod-far .pg-tie-chip b{display:none}
.pg-canvas.lod-far .pg-tie-chip{padding:0 6px}

/* All links: every drop line and tie, with the unselected ones kept quiet */
.pg-overlay-right{display:flex;align-items:center;gap:8px;pointer-events:none}
.pg-alllinks{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 11px 0 8px;border-radius:9px;font-size:11px;font-weight:600;color:var(--muted);
 background:rgba(18,11,42,.9);border:1px solid var(--glass-line);box-shadow:0 10px 24px -14px rgba(2,1,10,.9);transition:color .15s,border-color .15s}
.pg-alllinks:hover{color:var(--text);border-color:rgba(190,160,255,.3)}
.pg-alllinks.on{color:#ffe7bd;border-color:rgba(240,212,154,.45)}
.pg-switch{position:relative;width:26px;height:15px;border-radius:999px;background:rgba(150,120,225,.25);transition:background .15s}
.pg-switch::after{content:'';position:absolute;left:2px;top:2px;width:11px;height:11px;border-radius:50%;background:#cbbde6;transition:transform .18s cubic-bezier(.16,1,.3,1),background .15s}
.pg-alllinks.on .pg-switch{background:rgba(240,212,154,.55)}
.pg-alllinks.on .pg-switch::after{transform:translateX(11px);background:#fff3dc}
.pg-alllinks:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pg-key.drop{border-top:2px dotted var(--pg-gold)}
.pg-edge.drop.quiet{stroke:rgba(240,206,140,.45);stroke-width:1.5;animation:none}
.pg-edge.tie.quiet{stroke:rgba(201,168,255,.5);stroke-width:1.6}
@media(max-width:680px){.pg-overlay-right .pg-legend{display:none}}

/* ---- Item economy and petty crime (economy.js) ---- */
.ec-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ec-progress{padding:18px 22px 20px}
.ec-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:#d8cdef}
.ec-progress-head strong{font-size:20px;color:#fff;font-variant-numeric:tabular-nums;margin-right:2px}
.ec-scan{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}
.ec-scan .icon{width:13px;height:13px;animation:ec-spin 1.4s linear infinite}
@keyframes ec-spin{to{transform:rotate(360deg)}}
.ec-bar{display:flex;height:8px;margin-top:12px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden}
.ec-bar i{display:block;height:100%;transition:width .3s ease}
.ec-bar i.done{background:linear-gradient(90deg,#9d5ee6,#c9a8ff)}
.ec-bar i.part{background:rgba(185,140,249,.32)}
.ec-bar.thin{height:4px;margin-top:6px}
.ec-groupstart{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;font-size:11.5px;color:#b3a8c9}
.ec-select select{padding:9px 12px;border-radius:8px;border:1px solid #3b3544;background:#120f18;color:var(--text);font-size:12px;max-width:100%}
.ec-tools{margin-top:18px;padding:0;align-items:center}
.ec-tool-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ec-search{display:flex;align-items:center;gap:7px;padding:0 10px;border-radius:8px;border:1px solid #3b3544;background:#120f18}
.ec-search .icon{width:14px;height:14px;color:var(--muted);flex-shrink:0}
.ec-search input{width:230px;padding:9px 0;background:none;border:0;color:var(--text);font-size:12px;backdrop-filter:none}
.ec-search input:focus{outline:none}
.ec-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.ec-table-panel{margin-top:12px}
.ec-table td{vertical-align:middle;font-size:12px}
.ec-row{cursor:pointer}
.ec-row:hover td{background:rgba(120,70,215,.08)}
.ec-item{display:flex;align-items:center;gap:11px;text-align:left;min-width:190px;color:inherit}
.ec-item strong{display:block;font-size:12.5px;font-weight:600;color:var(--text)}
.ec-item small{display:block;font-size:10.5px;color:#9d93b4;font-family:"SFMono-Regular",Consolas,monospace;margin-top:1px}
.ec-item:focus-visible{outline:none}.ec-item:focus-visible strong{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.ec-thumb{width:34px;height:34px;flex-shrink:0;object-fit:contain;padding:3px;border-radius:8px;background:rgba(255,255,255,.04);border:1px solid rgba(180,150,255,.1)}
.ec-thumb.sm{width:24px;height:24px;padding:2px;border-radius:6px}
.ec-thumb.lg{width:76px;height:76px;padding:6px;border:0;background:none}
.ec-thumb-none{display:inline-grid;place-items:center;color:#8d83a6}
.ec-thumb-none .icon{width:55%;height:55%}
.ec-group-row th{padding-top:16px;padding-bottom:7px;background:rgba(24,15,52,.7);font-size:11px;font-weight:650;letter-spacing:.02em;text-transform:none;color:#dccbf7;text-align:left}
.ec-group-row th span{margin-left:8px;font-weight:500;color:#8d83a6;font-variant-numeric:tabular-nums}
.ec-price strong{font-weight:600;color:var(--text)}.ec-price small{display:block;font-size:10.5px;color:#a99ec8}
.ec-chip{display:inline-flex;align-items:center;font-size:10.5px;line-height:1.3;padding:3px 8px;margin:2px 4px 2px 0;border-radius:99px;background:rgba(90,60,170,.28);border:1px solid rgba(180,150,255,.12);color:#dbc9ff;white-space:nowrap}
.ec-chip.more{background:none;color:#a99ec8}
.ec-dim{color:#8d83a6}
.ec-live-val{color:#b3a8c9;border-bottom:1px dotted rgba(179,168,201,.5)}
.ec-fx{display:inline-flex;align-items:center;gap:4px;margin-right:9px;font-size:11px;color:#e3d6fb;white-space:nowrap}
.ec-fx .icon{width:13px;height:13px;color:#c9a8ff}
.ec-scripts{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#cdbdf0;font-family:"SFMono-Regular",Consolas,monospace;white-space:nowrap}
.ec-scripts .icon{width:13px;height:13px;color:#a99ec8}.ec-scripts b{font-weight:500;color:#a99ec8;font-family:Inter,sans-serif}
.ec-dots{display:inline-flex;gap:4px;vertical-align:middle}
.ec-dots i{width:9px;height:9px;border-radius:50%;box-shadow:inset 0 0 0 1.5px #5d5378}
.ec-dots i.done{background:#c9a8ff;box-shadow:none}
.ec-dots i.skipped{background:repeating-linear-gradient(135deg,#7d7298 0 2px,transparent 2px 4px);box-shadow:inset 0 0 0 1.5px #7d7298}
.ec-flag{display:inline-flex;margin-left:8px;vertical-align:middle;color:#f0d49a}.ec-flag .icon{width:14px;height:14px}
#ec-root>.panel+.panel{margin-top:14px}
.ec-changes .panel-header{padding-bottom:6px}
.ec-change-list{list-style:none;margin:0;padding:4px 10px 10px}
.ec-change-list button{display:flex;align-items:center;gap:10px;width:100%;padding:7px 12px;border-radius:8px;text-align:left;font-size:12px;color:#ddd2f0}
.ec-change-list button:hover{background:rgba(120,70,215,.14)}
.ec-more{margin:0 22px 16px}
/* quiz stage */
.ec-stage{max-width:840px;margin:0 auto}
.ec-stage-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}
.ec-stage-progress{flex:1;max-width:340px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.ec-card{border:1px solid var(--line);border-radius:var(--radius);background:#171034;padding:26px 28px 20px}
.ec-head{display:grid;grid-template-columns:88px 1fr auto;gap:18px;align-items:start}
.ec-pic{width:88px;height:88px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.04);border:1px solid rgba(180,150,255,.12)}
.ec-pic>.icon{width:36px;height:36px;color:#c9a8ff}
.ec-kicker{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:11px;color:#a99ec8;margin:2px 0 4px}
.ec-kicker code{font-size:10.5px;padding:2px 6px;border-radius:5px;background:rgba(255,255,255,.06);color:#d8cdef}
.ec-title h2{font-size:22px;letter-spacing:-.02em;line-height:1.25;color:#fff}
.ec-desc{margin-top:6px;font-size:12.5px;line-height:1.6;color:#c6bbdc}
.ec-facts{margin-top:6px;font-size:11px;color:#a99ec8}
.ec-head-act{margin-top:4px;white-space:nowrap}
.ec-server{display:grid;gap:10px;margin-top:18px;padding:14px 16px;border-radius:10px;background:rgba(8,5,22,.5);border:1px solid var(--line)}
.ec-script-line{display:grid;grid-template-columns:104px 1fr;gap:12px;align-items:start}
.ec-script-line>div{margin-bottom:-6px}
.ec-label{font-size:9.5px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:#a99ec8;padding-top:5px}
.ec-script{display:inline-flex;align-items:center;gap:5px;margin:0 6px 6px 0;padding:3px 8px;border-radius:6px;font-size:11px;font-family:"SFMono-Regular",Consolas,monospace;background:rgba(120,90,200,.16);border:1px solid rgba(180,150,255,.14);color:#dccbff;white-space:nowrap}
.ec-script .icon{width:12px;height:12px}
.ec-script.own{background:rgba(150,100,240,.3);border-color:rgba(200,170,255,.32);color:#fff}
.ec-script em{font-style:normal;font-family:Inter,sans-serif;font-size:10px;color:#cdb8f5;margin-left:2px}
.ec-live{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.ec-live li{display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.5;color:#d8cdef}
.ec-live .icon{width:14px;height:14px;margin-top:2px;color:#c9a8ff;flex-shrink:0}
.ec-live strong{color:#fff;font-weight:600}
.ec-needs{margin:14px 0 0;padding:12px 14px;border-radius:10px;background:rgba(8,5,22,.45);border:1px solid var(--line)}
.ec-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:22px 0 20px}
.ec-steps button{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:9px;border:1px solid var(--line);background:rgba(30,20,60,.35);color:#b3a8c9;font-size:11.5px;text-align:left;cursor:pointer}
.ec-steps button:hover{color:var(--text);border-color:rgba(185,140,249,.35)}
.ec-steps b{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;flex-shrink:0;background:rgba(255,255,255,.07);font-size:10px;font-weight:650;color:#d8cdef}
.ec-steps b .icon{width:12px;height:12px}
.ec-steps .done b{background:rgba(185,140,249,.28);color:#f1e6ff}
.ec-steps .skipped b{background:none;box-shadow:inset 0 0 0 1.5px #7d7298;color:#a99ec8}
.ec-steps button.on{border-color:var(--accent);background:rgba(120,70,215,.24);color:#fff}
.ec-steps button.on b{background:var(--accent);color:#1e1530}
.ec-steps button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.ec-ask{font-size:18px;font-weight:600;letter-spacing:-.01em;color:#fff}
.ec-help{margin:6px 0 16px;font-size:12px;line-height:1.6;color:#b3a8c9}
.ec-prefill{display:flex;align-items:center;gap:7px;margin:-4px 0 14px;padding:8px 11px;border-radius:8px;font-size:11.5px;color:#e2d3ff;background:rgba(120,70,215,.14);border:1px solid rgba(185,140,249,.24)}
.ec-prefill .icon{width:14px;height:14px;color:#c9a8ff;flex-shrink:0}
.ec-money-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ec-money{display:grid;gap:8px;align-content:start}
.ec-money>span:first-child{font-size:11.5px;font-weight:600;color:#d8cdef}
.ec-money-in{display:flex;align-items:center;padding:0 12px;border-radius:9px;border:1px solid #3b3544;background:#120f18}
.ec-money-in:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.ec-money-in b{font-size:16px;font-weight:600;color:#a99ec8}
.ec-money-in input{width:100%;min-width:0;padding:12px 8px;background:none;border:0;color:#fff;font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;backdrop-filter:none}
.ec-money-in input:focus{outline:none;box-shadow:none}
.ec-money-in.sm{padding:0 9px}.ec-money-in.sm b{font-size:13px}.ec-money-in.sm input{width:84px;padding:8px 6px;font-size:14px}
.ec-money small{font-size:11px;line-height:1.55;color:#b3a8c9}
.ec-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:8px}
.ec-choice{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:rgba(30,20,60,.35);color:#d0c4e6;font-size:12px;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.ec-choice .icon{width:16px;height:16px;color:#a99ec8;flex-shrink:0}
.ec-choice:hover{border-color:rgba(185,140,249,.4)}
.ec-choice.on{border-color:var(--accent);background:rgba(120,70,215,.26);color:#fff}
.ec-choice.on .icon{color:#d9bfff}
.ec-choice:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.ec-choice:disabled{cursor:default}
.ec-detail-list{display:grid;gap:8px;margin-top:16px}
.ec-detail{display:grid;grid-template-columns:200px 1fr;align-items:center;gap:12px;font-size:12px;color:#d8cdef}
.ec-detail>span{display:flex;align-items:center;gap:8px}.ec-detail .icon{width:15px;height:15px;color:#c9a8ff}
.ec-detail input,.ec-fx-text{width:100%;padding:9px 11px;border-radius:7px;border:1px solid #3b3544;background:#120f18;color:var(--text);font-size:12px}
.ec-seg{margin-top:0}
.ec-use{margin-bottom:22px;flex-wrap:wrap}
.ec-sub{font-size:13px;font-weight:600;color:#e7dcfa;margin:0 0 10px}
.ec-fx-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ec-fx-row{display:grid;grid-template-columns:150px 1fr auto;gap:6px 14px;align-items:center;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:rgba(30,20,60,.3)}
.ec-fx-name{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:#f0e8fd}
.ec-fx-name .icon{width:16px;height:16px;color:#c9a8ff}
.ec-fx-body{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.ec-fx-in{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#d0c4e6;white-space:nowrap}
.ec-fx-in input{width:74px;padding:7px 8px;border-radius:7px;border:1px solid #3b3544;background:#120f18;color:#fff;font-size:12.5px;text-align:right;font-variant-numeric:tabular-nums}
.ec-fx-in em{font-style:normal;color:#b3a8c9}
.ec-fx-hint{grid-column:2/-1;margin:0;font-size:11px;color:#a99ec8}
.ec-rate{font-size:11px;color:#d6bcff}
.ec-add-fx{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.ec-gchip{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:99px;border:1px dashed rgba(185,140,249,.4);color:#e0d0ff;font-size:11.5px;cursor:pointer}
.ec-gchip .icon{width:13px;height:13px}
.ec-gchip:hover{background:rgba(120,70,215,.16);border-style:solid}
.ec-gchip:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.ec-field{margin-top:16px}
.ec-field textarea{resize:vertical;min-height:58px;line-height:1.5}
.ec-foot{display:flex;align-items:center;gap:8px;margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}
.ec-foot-gap{flex:1}
.ec-foot .button .icon{width:14px;height:14px}
.ec-upnext{display:flex;align-items:center;gap:8px;margin:12px 6px 0;font-size:11.5px;color:#a99ec8}
.ec-upnext strong{color:#e7dcfa;font-weight:600}
.ec-upnext .text-button{margin-left:auto}
.ec-finished{text-align:center;padding:48px 28px 40px}
.ec-finished h2{font-size:21px;color:#fff;margin-top:16px}
.ec-finished p{margin:8px auto 0;max-width:460px;font-size:12.5px;line-height:1.6;color:#c6bbdc}
.ec-done-mark{display:inline-grid;place-items:center;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#d7b8ff,#9d5ee6);color:#1e1530}
.ec-done-mark .icon{width:26px;height:26px}
.ec-finish-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:22px}
/* petty crime */
.ec-crimes{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;margin-top:4px}
.ec-crime{position:relative;display:flex;flex-direction:column;gap:10px;padding:16px 18px;border-radius:var(--radius);border:1px solid var(--line);background:#171034;transition:border-color .15s ease}
.ec-crime:hover{border-color:rgba(185,140,249,.45)}
.ec-crime:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.ec-crime-open{position:absolute;inset:0;z-index:1;border-radius:inherit;background:none;cursor:pointer}
.ec-crime-open:focus-visible{outline:none}
.ec-crime header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ec-crime h3{font-size:14px;font-weight:600;color:#fff}
.ec-crime-sum{font-size:12px;line-height:1.55;color:#c6bbdc}
.ec-crime-rows{display:grid;gap:7px;margin:2px 0 0}
.ec-crime-rows>div{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:start}
.ec-crime-rows dt{font-size:9.5px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:#a99ec8;padding-top:5px}
.ec-crime-rows dd{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;font-size:12px;color:#ddd2f0}
.ec-crime-item,.ec-crime-cash{display:inline-flex;align-items:center;gap:6px}
.ec-crime-item em{font-style:normal;color:#b3a8c9;font-size:11px}
.ec-crime-cash .icon{width:15px;height:15px;color:#e7c27a}
.ec-crime-cond{font-size:11px;color:#b3a8c9}
.ec-crime footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:auto;padding-top:10px;border-top:1px solid var(--line);font-size:11px}
.ec-crime footer .ec-script{margin:0}
.ec-earn{color:#e2cfff;font-weight:600;font-variant-numeric:tabular-nums}
.ec-open-q{color:#f0d49a}
.ec-irows{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px}
.ec-irow{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:rgba(30,20,60,.3)}
.ec-ipick{display:flex;align-items:center;gap:10px;flex:1;min-width:210px;text-align:left;padding:4px;border-radius:8px;color:inherit}
.ec-ipick:hover:not(:disabled){background:rgba(120,70,215,.16)}
.ec-ipick strong{display:block;font-size:12.5px;color:#fff;font-weight:600}
.ec-ipick small{display:block;font-size:10.5px;color:#b3a8c9;margin-top:1px}
.ec-cash-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:18px;color:#a99ec8}
.ec-cash-row .ec-label{padding-top:0;margin-right:4px}
.ec-estimate{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin-top:18px;padding:14px 16px;border-radius:10px;background:rgba(120,70,215,.14);border:1px solid rgba(185,140,249,.24);font-size:12px;color:#d8cdef}
.ec-estimate .ec-label{margin-right:6px}
.ec-estimate strong{font-size:18px;color:#fff;font-variant-numeric:tabular-nums;margin-left:6px}
.ec-estimate small{flex-basis:100%;font-size:11px;color:#b3a8c9}
.ec-estimate small.warn{color:#f0d49a}
.ec-risk-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}
.ec-risk{display:grid;gap:7px;font-size:11.5px;color:#d8cdef}
.ec-risk .ec-fx-in input{width:96px}
@media(prefers-reduced-motion:reduce){.ec-scan .icon{animation:none}.ec-bar i{transition:none}}
@media(max-width:760px){
 .ec-tools{flex-direction:column;align-items:stretch}.ec-tool-right{flex-direction:column;align-items:stretch}.ec-search input{width:100%}
 .ec-card{padding:18px 16px 16px}
 .ec-head{grid-template-columns:64px 1fr}.ec-pic{width:64px;height:64px}.ec-thumb.lg{width:54px;height:54px}.ec-head-act{grid-column:1/-1;justify-self:start}
 .ec-script-line{grid-template-columns:1fr;gap:4px}
 .ec-steps{grid-template-columns:1fr 1fr}
 .ec-money-grid,.ec-risk-grid,.ec-detail{grid-template-columns:1fr}
 .ec-fx-row{grid-template-columns:1fr auto}.ec-fx-body,.ec-fx-hint{grid-column:1/-1}
 .ec-foot{flex-wrap:wrap}.ec-foot .button{flex:1 1 auto;justify-content:center}.ec-foot-gap{display:none}
 .ec-stage-top{flex-wrap:wrap}.ec-upnext{flex-wrap:wrap}
 .ec-crimes{grid-template-columns:1fr}
}

/* Item economy dialog, opened from an item in Heist progression */
dialog#modal.ec-modal{width:840px}
.ec-dialog .ec-steps{margin-top:18px}
.ec-dialog .ec-foot{margin-top:20px}
.ec-pending{display:flex;align-items:flex-start;gap:9px;margin-bottom:12px;padding:10px 12px;border-radius:9px;background:rgba(232,190,110,.1);border:1px solid rgba(232,190,110,.3);font-size:12px;line-height:1.5;color:#f3dcae}
.ec-pending .icon{width:15px;height:15px;margin-top:1px;flex-shrink:0;color:#f0d49a}
.ec-pending p{margin:0}
.ec-name{margin:0 0 16px}
.ec-script-line .ec-dim{font-size:12px}
.pg-swap{flex-shrink:0;color:var(--muted)}
.pg-swap .icon{width:14px;height:14px}
.pg-newitems li button{display:flex;align-items:baseline;gap:10px;width:100%;padding:6px 8px;border-radius:7px;text-align:left;font-size:12px;color:var(--muted)}
.pg-newitems li button:hover{background:rgba(90,60,170,.2);color:var(--text)}
.pg-newitems li button .icon{margin-left:auto;width:13px;height:13px;align-self:center}
.ec-rename-btn{font-size:10.5px;margin-left:4px}
.ec-rename-btn .icon{width:12px;height:12px}
.ec-rename{position:relative;margin-top:14px;padding:4px 16px 14px;border-radius:10px;border:1px solid rgba(185,140,249,.3);background:rgba(120,70,215,.1)}
.ec-rename .ec-field{margin-top:12px}
.ec-code-row{display:flex;gap:8px}
.ec-code-row input{flex:1;min-width:0;font-family:"SFMono-Regular",Consolas,monospace}
.ec-note{display:block;margin:8px 0 0;font-size:11px;line-height:1.55;color:#b3a8c9}
.ec-note code{font-size:10.5px;padding:1px 5px;border-radius:4px;background:rgba(255,255,255,.07);color:#e3d6fb}
.ec-rename-done{position:absolute;top:12px;right:14px}
@media(max-width:760px){.ec-code-row{flex-direction:column}}
/* Item economy: script picker and the Not In-Game tag */
.ec-tag{display:inline-flex;align-items:center;margin-left:8px;padding:2px 7px;border-radius:99px;border:1px solid rgba(232,190,110,.42);background:rgba(232,190,110,.12);color:#f3dcae;font-size:9.5px;font-weight:650;letter-spacing:.02em;line-height:1.4;white-space:nowrap;vertical-align:middle}
.ec-item strong .ec-tag{margin-left:7px}
.ec-group-row th .ec-tag{margin-left:10px;color:#f3dcae;font-weight:650}
.pg-li-sub .ec-tag,.pg-itempick small .ec-tag{margin:0 6px 0 0;padding:1px 6px;font-size:9px}
.ec-scriptpick{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:11px;color:#a99ec8}
.ec-scriptbtn{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:6px 10px;border-radius:8px;border:1px solid #3b3544;background:#120f18;color:var(--text);font-size:12px;cursor:pointer}
.ec-scriptbtn:hover{border-color:rgba(185,140,249,.45)}
.ec-scriptbtn:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}
.ec-scriptbtn .icon{width:13px;height:13px;color:#a99ec8;flex-shrink:0}
.ec-scriptbtn strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-scriptbtn em{font-style:normal;font-size:10.5px;color:#a99ec8;white-space:nowrap}
.ec-scriptbtn .ec-tag{margin-left:0}
.ec-scriptbtn.wide{width:100%;padding:10px 12px}
.ec-scriptbtn.wide>.icon:last-child{margin-left:auto}
.ec-scriptpop .ec-tag{margin-left:6px}
.ec-pop-head{margin:6px 10px 2px;font-size:9.5px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:#a99ec8}
.ec-detail-in{position:relative;display:flex;min-width:0}
.ec-detail-in input{padding-right:38px}
.ec-detail-pick{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:28px;height:28px;border-radius:6px;color:#cdbdf0}
.ec-detail-pick:hover{background:rgba(120,70,215,.25);color:#fff}
.ec-detail-pick .icon{width:15px;height:15px}
.ec-detail-list>.pg-pop.inline{margin:0 0 4px}
.pg-pop.inline{position:relative;left:auto;top:auto;z-index:auto;width:100%;max-width:none;margin:8px 0 2px;box-shadow:none}
.pg-pop.inline .pg-pop-list{max-height:min(260px,40vh)}
.form-grid>.pg-pop.inline{grid-column:1/-1;margin-top:-26px}
.ec-scriptpop .ec-newscript{border:1px dashed rgba(232,190,110,.4)}
.ec-group-add{float:right;font-size:11px;font-weight:500}
.ec-group-menu{float:right;margin:-5px 4px -5px 0;width:26px;height:26px;min-height:0}
.ec-table .ec-act-col{width:1%;padding-left:0;text-align:right}
.ec-row-menu,.ec-group-menu{color:#cdbdf0;border:1px solid rgba(180,150,255,.18);background:rgba(30,20,60,.45)}
.ec-row-menu{width:30px;height:30px;min-height:0}
.ec-row-menu .icon,.ec-group-menu .icon{width:18px;height:18px;stroke-width:3.4}
.ec-row-menu:hover,.ec-group-menu:hover{color:#fff;border-color:rgba(185,140,249,.5);background:rgba(120,70,215,.28)}
.ec-also{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:6px;font-size:11px;color:#a99ec8}
.ec-also>span:first-child{margin-right:2px}
.ec-also-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 3px 2px 9px;border-radius:99px;border:1px solid var(--line);background:rgba(30,20,60,.45);color:#e7dcfa;font-size:11px}
.ec-also-chip .ec-tag{margin-left:2px}
.ec-also-x{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;color:#a99ec8}
.ec-also-x:hover{background:rgba(245,155,180,.18);color:var(--danger)}
.ec-also-x .icon{width:11px;height:11px}
.ec-also .text-button{font-size:11px}
.ec-script-notes{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px}
.ec-script-notes li{display:flex;align-items:flex-start;gap:7px;padding:6px 8px;border-radius:8px;border:1px solid rgba(232,190,110,.28);background:rgba(232,190,110,.07);font-size:11.5px;line-height:1.5;color:#f3e3c2}
.ec-script-notes li>.icon{width:13px;height:13px;margin-top:2px;flex-shrink:0;color:#f0d49a}
.ec-script-notes li>span{flex:1}
.ec-script-notes strong{color:#fff;font-weight:600}
.ec-note-edit{margin-top:4px}
.ec-note-edit .ec-field{margin-top:6px}
.ec-note-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.ec-reuse-item{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:rgba(8,5,22,.45)}
.ec-reuse-item strong{font-size:14px;color:#fff}
.ec-reuse-item small{display:block;margin-top:2px;font-size:11px;color:#b3a8c9}
.ec-reuse-item p{margin:4px 0 0;font-size:11.5px;color:#d8cdef}
.ec-reuse .ec-ask{margin-top:18px;font-size:16px}
.ec-reuse-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ec-reuse-go{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:12px}
.ec-reuse-back{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
@media(max-width:600px){.ec-reuse-choice{grid-template-columns:1fr}}
.ec-similar button .ec-add-here{margin-left:auto;padding:3px 9px;border-radius:99px;border:1px solid rgba(185,140,249,.4);font-style:normal;font-size:10.5px;color:#e2cfff;white-space:nowrap}
.ec-group-add .icon{width:12px;height:12px}
.ec-twin{display:flex;align-items:flex-start;gap:7px;margin-top:8px;padding:7px 10px;border-radius:8px;border:1px solid rgba(232,190,110,.3);background:rgba(232,190,110,.08);font-size:11.5px;line-height:1.5;color:#f3dcae}
.ec-twin>.icon{width:14px;height:14px;margin-top:2px;flex-shrink:0;color:#f0d49a}
.ec-twin .text-button{font-size:11.5px;color:#ffe2a8;text-decoration:underline;text-underline-offset:2px}
.ec-twin code{font-size:10px;color:#e8d3a6}
.ec-similar{margin-top:12px}
.ec-similar:empty{display:none}
.ec-similar-head{display:flex;align-items:center;gap:6px;margin:0 0 6px;font-size:11.5px;color:#b3a8c9}
.ec-similar-head.warn{color:#f0d49a}
.ec-similar-head .icon{width:14px;height:14px}
.ec-similar button{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;border-radius:8px;text-align:left;color:var(--text)}
.ec-similar button:hover{background:rgba(120,70,215,.16)}
.ec-similar button strong{display:block;font-size:12px;font-weight:600}
.ec-similar button small{display:block;font-size:10.5px;color:#b3a8c9}
.ec-similar button>.icon{margin-left:auto;width:13px;height:13px;color:#a99ec8}
.ec-tools{flex-direction:column;align-items:stretch;gap:10px}
.ec-tools .ec-tool-right{justify-content:flex-start}

/* Code access: read-only viewer and request dialog */
.code-view{max-height:72vh;overflow:auto;background:#120e18;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.code-page{position:relative;min-width:max-content;overflow:hidden}
.code-view pre{margin:0;padding:22px;min-height:440px;font-family:Consolas,monospace;font-size:12px;line-height:1.8;color:#b4a4d4;tab-size:4;white-space:pre}
.code-mark{position:absolute;inset:-40px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:56px 72px;padding:24px;pointer-events:none;transform:rotate(-16deg);color:#f1ebfb;opacity:.045;font-size:12px;white-space:nowrap}
.ca-durations{display:flex;gap:8px;flex-wrap:wrap}
.ca-durations label{position:relative;cursor:pointer}
.ca-durations input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.ca-durations span{display:inline-flex;align-items:center;min-height:36px;padding:9px 16px;border:1px solid #3b3544;border-radius:7px;background:#120f18;color:#baaec4;font-size:12px}
.ca-durations input:checked+span{border-color:var(--accent);background:#2e2440;color:#e6d4fb}
.ca-durations input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
@media print{.code-view{display:none}}

/* Uploads tray (transfers.js): bottom-right, above page content, never covers the whole screen */
.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}
.transfers{position:fixed;right:18px;bottom:18px;z-index:150;width:360px;max-width:calc(100vw - 32px);border:1px solid #463c52;border-radius:12px;background:#1e1a24;box-shadow:0 18px 60px #0008;overflow:hidden}
.transfers-head{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;font-size:12px;font-weight:550;text-align:left;color:var(--text)}
.transfers-head span{flex:1}
.transfers-head .icon{width:16px;height:16px;color:var(--accent)}
.transfers-head:hover{background:#262030}
.transfers-list{list-style:none;margin:0;padding:0 14px 6px;max-height:min(50vh,380px);overflow:auto}
.transfer{padding:12px 0;border-top:1px solid var(--line)}
.transfer-top{display:flex;align-items:center;gap:8px}
.transfer-top strong{flex:1;min-width:0;font-size:11px;font-weight:550;color:#e6dcf3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.transfer-top .icon-button{width:26px;height:26px}
.transfer .progress{margin:9px 0 7px}
.transfer small{display:block;font-size:10.5px;color:var(--muted);line-height:1.5;font-variant-numeric:tabular-nums}
.transfer .text-button{margin-top:6px;margin-right:12px}
.transfer.done .progress span{background:#8ed9b5}
.transfer.failed .progress span,.transfer.partial .progress span{background:var(--danger)}
.transfer.failed small{color:var(--danger)}
.transfer.cancelled .progress span{background:#6b6075}
@media(max-width:680px){.transfers{right:16px;left:16px;bottom:16px;width:auto}}

/* Activity log (activity.js): grouped, filtered, paged */
.act-tools{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 22px 6px;flex-wrap:wrap}
.act-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:4px;border-radius:9px;background:#4a2430;color:#ffc9d6;font-size:10px}
.act-day{font-size:11px;font-weight:550;letter-spacing:.3px;color:var(--muted);padding:18px 22px 8px;border-top:1px solid var(--line);margin-top:6px}
.act-day:first-of-type{border-top:0}
.act-list{list-style:none;margin:0;padding:0}
.act-group{padding:13px 22px;border-top:1px solid #2a2730}
.act-head{display:flex;gap:13px;align-items:flex-start}
.act-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:#2a2238;color:#b99fd8;flex-shrink:0}
.act-icon .icon{width:15px;height:15px}
.act-group.problem .act-icon{background:#3a2028;color:var(--danger)}
.act-body{flex:1;min-width:0}
.act-body p{font-size:11.5px;line-height:1.6;color:#cfc4da}
.act-body strong{font-weight:550;color:#ece4f6}
.act-flag{margin-left:8px;padding:1px 7px;border-radius:5px;background:#3a2028;color:#ffc9d6;font-size:10px;font-weight:550}
.act-what .pill{margin-left:3px}
.act-sep{margin:0 7px;color:#5f566e}
.act-where{color:var(--muted);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.act-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0;text-align:right}
.act-side time{font-size:10.5px;color:#8a8098;white-space:nowrap;font-variant-numeric:tabular-nums}
.act-entries{list-style:none;margin:10px 0 0 43px;padding:8px 12px;max-height:340px;overflow:auto;border-radius:8px;background:#151219}
.act-entries li{display:grid;grid-template-columns:52px minmax(120px,auto) 1fr;gap:10px;padding:5px 0;font-size:10.5px;color:#b5aac3;border-top:1px solid #221e29}
.act-entries li:first-child{border-top:0}
.act-entries time{color:#7d7390;font-variant-numeric:tabular-nums}
.act-entries .mono{overflow-wrap:anywhere;color:#9d93ad}
.act-more{margin:8px 0 0 43px}
.act-older{display:flex;justify-content:center;padding:18px;border-top:1px solid var(--line)}
@media(max-width:680px){.act-tools{padding:16px 15px 4px}.act-group{padding:12px 15px}.act-side{display:none}.act-entries{margin-left:0}.act-entries li{grid-template-columns:44px 1fr}.act-entries li .mono{grid-column:1/-1}.act-more{margin-left:0}}

/* Sign in with Discord */
.signin-or{display:flex;align-items:center;gap:12px;margin:18px 0 12px;color:var(--muted);font-size:11px}
.signin-or:before,.signin-or:after{content:'';flex:1;height:1px;background:var(--line)}
.button.discord-signin{background:#5865f2;border-color:#5865f2;color:#fff}
.button.discord-signin:hover{background:#6b76f4;border-color:#6b76f4}
.discord-signin+.signin-hint{margin-top:10px}
