:root{--purple-50: #f1eff6;--purple-100: #e3deed;--purple-200: #c8bedb;--purple-300: #a899c6;--purple-500: #52338d;--purple-600: #462b78;--purple-700: #392463;--purple-800: #291a46;--orange-50: #fef2ef;--orange-100: #fde5df;--orange-300: #f9af9a;--orange-400: #f68767;--orange-700: #aa4224;--orange-800: #7a301a;--orange-900: #491c10;--green-50: #ebf8ed;--green-300: #83d290;--green-700: #057316;--green-800: #045210;--green-900: #02310a;--canvas: #f5f5f5;--surface: #ffffff;--surface-hover: #f5f5f5;--surface-selected: var(--purple-50);--surface-selected-hover: var(--purple-100);--border: #e7e7e7;--border-strong: #7d7d7d;--text: #040415;--text-secondary: #474847;--text-disabled: #979797;--brand: var(--purple-500);--brand-hover: var(--purple-600);--brand-pressed: var(--purple-700);--on-brand: #ffffff;--accent: var(--orange-700);--accent-hover: var(--orange-800);--success: var(--green-700);--success-hover: var(--green-800);--success-subtle: var(--green-50);--warning: var(--orange-700);--warning-subtle: var(--orange-50);--danger: var(--orange-800);--danger-hover: var(--orange-900);--danger-subtle: var(--orange-100);--focus-ring: var(--purple-500);--overlay: rgba(4, 4, 21, .5);--shadow-raised: 0 4px 12px rgba(4, 4, 21, .12);--shadow-overlay: 0 12px 32px rgba(4, 4, 21, .24), 0 2px 6px rgba(4, 4, 21, .12);--font: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--gutter: 64px;color-scheme:light}:root[data-theme=dark]{--canvas: #040415;--surface: #22232c;--surface-hover: #474847;--surface-selected: var(--purple-800);--surface-selected-hover: #392463;--border: #474847;--border-strong: #979797;--text: #f5f5f5;--text-secondary: #bfbfbf;--text-disabled: #7d7d7d;--brand: var(--purple-300);--brand-hover: var(--purple-200);--brand-pressed: var(--purple-100);--on-brand: #040415;--accent: var(--orange-400);--accent-hover: var(--orange-300);--success: var(--green-300);--success-hover: #b0e2b8;--success-subtle: var(--green-900);--warning: var(--orange-300);--warning-subtle: var(--orange-900);--danger: var(--orange-300);--danger-hover: #fbccbe;--danger-subtle: var(--orange-900);--focus-ring: var(--purple-300);--overlay: rgba(0, 0, 0, .7);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--text);font-family:var(--font);font-size:16px;line-height:24px;min-height:100vh}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}button{font:inherit}.label{font-weight:500}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.inner{max-width:1440px;margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 24px;border-radius:16px;border:1px solid transparent;font-weight:500;line-height:24px;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s;background:var(--brand);color:var(--on-brand)}.btn:hover{background:var(--brand-hover)}.btn:active{background:var(--brand-pressed)}.btn.secondary{background:var(--surface-selected);color:var(--brand)}.btn.secondary:hover,.btn.secondary:active{background:var(--surface-selected-hover)}.btn.accent{background:var(--accent);color:var(--on-brand)}.btn.accent:hover,.btn.accent:active{background:var(--accent-hover)}.btn.success{background:var(--success);color:var(--on-brand)}.btn.success:hover,.btn.success:active{background:var(--success-hover)}.btn.danger{background:var(--danger);color:var(--on-brand)}.btn.danger:hover,.btn.danger:active{background:var(--danger-hover)}.btn.ghost{background:transparent;color:var(--brand);border-color:var(--brand)}.btn.ghost:hover,.btn.ghost:active{background:var(--surface-hover)}.btn:disabled{background:var(--surface-hover);color:var(--text-disabled);border-color:transparent;cursor:not-allowed}.btn.ghost:disabled{background:transparent;border-color:var(--border)}.icon-btn{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text);cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s}.icon-btn:hover{background:var(--surface-hover)}.icon-btn:active{background:var(--surface-hover);border-color:var(--border-strong)}.icon-btn.secondary{background:var(--surface-selected);color:var(--brand)}.icon-btn.secondary:hover,.icon-btn.secondary:active{background:var(--surface-selected-hover)}.icon-btn.danger{color:var(--danger)}.icon-btn.danger:hover{background:var(--danger-subtle)}.icon-btn.danger:active{background:var(--danger-subtle);border-color:var(--danger)}.icon-btn[aria-pressed=true]{background:var(--surface-selected);color:var(--brand)}.icon-btn:after,.icon-btn:before{position:absolute;left:50%;opacity:0;pointer-events:none;transition:opacity .12s;z-index:30}.icon-btn:after{content:attr(data-tip);bottom:calc(100% + 6px);transform:translate(-50%);padding:4px 8px;border-radius:8px;background:var(--text);color:var(--on-brand);font-size:12px;line-height:16px;white-space:nowrap}.icon-btn:before{content:"";bottom:calc(100% + 1px);transform:translate(-50%);border:6px solid transparent;border-top-color:var(--text);border-bottom:0}.icon-btn:hover:after,.icon-btn:hover:before,.icon-btn:focus-visible:after,.icon-btn:focus-visible:before{opacity:1}.page-header{background:var(--surface);border-bottom:1px solid var(--border)}.page-header .inner{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding-top:24px;padding-bottom:24px}.titles{display:flex;flex-direction:column;gap:8px;min-width:0}.brand-logo{--logo-h: 72px;display:block;align-self:flex-start;height:var(--logo-h);width:auto;margin:calc(var(--logo-h) * -.22) 0 calc(var(--logo-h) * -.2) calc(var(--logo-h) * -.235)}.page-header h1{margin:0;font-size:48px;line-height:56px;font-weight:700}.page-header p{margin:0;color:var(--text-secondary)}.header-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.tabs-wrap{padding-top:24px}.tabs-bar{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border)}.tablist{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:8px}.tab{height:48px;padding:0 16px;background:none;border:0;color:var(--text-secondary);font-weight:500;line-height:24px;cursor:pointer;border-radius:8px 8px 0 0}.tab:hover{color:var(--text);box-shadow:inset 0 -2px 0 var(--border-strong)}.tab[aria-selected=true]{color:var(--brand);box-shadow:inset 0 -2px 0 var(--brand)}.tab:focus-visible{border-radius:8px}.content{padding-top:32px;padding-bottom:64px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px}.card{position:relative;display:flex;flex-direction:column;gap:16px;min-height:220px;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:16px;transition:border-color .15s,box-shadow .15s}.card:hover,.card:focus-within{border-color:var(--brand)}.card.dragging{border-color:var(--brand);box-shadow:var(--shadow-overlay);opacity:.95}.card.drop-target{border:2px dashed var(--brand);padding:23px;background:var(--surface-selected)}.card.lifted{border-color:var(--brand);box-shadow:var(--shadow-overlay)}.card-head{display:flex;justify-content:space-between;align-items:flex-start}.actions{display:flex;gap:4px;opacity:0;transition:opacity .15s}.card:hover .actions,.card:focus-within .actions{opacity:1}@media (hover: none){.actions,.grip{opacity:1!important}}.grip{position:absolute;top:28px;left:0;width:24px;height:40px;display:grid;place-items:center;padding:0;background:none;border:0;border-radius:8px;color:var(--text-secondary);cursor:grab;opacity:0;transition:opacity .15s}.card:hover .grip,.card:focus-within .grip{opacity:1}.title-row{display:flex;align-items:center;gap:8px}.card h3{margin:0;font-size:18px;line-height:24px;font-weight:700;flex:1;min-width:0}.card p{margin:0;color:var(--text-secondary);font-size:14px;line-height:26px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.open{margin-top:auto;display:inline-flex;align-items:center;gap:4px;align-self:flex-start;color:var(--brand);font-weight:500;text-decoration:none;border-radius:4px}.open:hover{color:var(--brand-hover);text-decoration:underline;text-underline-offset:4px}.card.soon h3{color:var(--text-secondary)}.card.soon .open{color:var(--text-disabled)}.tile{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--surface-hover);color:var(--text-secondary)}.tile.purple{background:var(--surface-selected);color:var(--brand)}.tile.orange{background:var(--warning-subtle);color:var(--warning)}.tile.green{background:var(--success-subtle);color:var(--success)}.tile.neutral,.card.soon .tile{background:var(--surface-hover);color:var(--text-secondary)}.badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:var(--surface-hover);color:var(--text-secondary);font-size:12px;line-height:16px;white-space:nowrap}.card.soon .badge{border:1px solid var(--border)}.card.new{align-items:center;justify-content:center;gap:8px;background:transparent;border:1px dashed var(--border-strong);color:var(--brand);cursor:pointer}.card.new:hover{background:var(--surface-selected);border-color:var(--brand)}.card.new:active{background:var(--surface-selected-hover)}.new-label{font-weight:500}.skeleton{pointer-events:none}.bar{background:var(--surface-hover);border-radius:8px;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}@media (prefers-reduced-motion: reduce){.bar{animation:none}}.empty{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 24px;text-align:center}.empty h2{margin:0;font-size:22px;line-height:28px;font-weight:700}.empty p{margin:0;color:var(--text-secondary)}.banner{display:flex;align-items:flex-start;gap:12px;padding:16px;margin-bottom:24px;border-radius:12px;background:var(--danger-subtle);border:1px solid var(--danger)}.banner .ico{color:var(--danger);margin-top:2px}.banner-text{flex:1;display:flex;flex-direction:column;gap:4px}.banner-text strong{font-weight:500}.banner-text span{font-size:14px;line-height:26px}.banner .btn{height:40px}.toast-region{position:fixed;left:0;right:0;bottom:24px;display:flex;justify-content:center;padding:0 16px;z-index:40;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;min-width:280px;max-width:420px;padding:12px 16px;border-radius:12px;background:var(--text);color:var(--on-brand);box-shadow:var(--shadow-overlay)}.toast span{flex:1}.toast .icon-btn{color:var(--on-brand);width:32px;height:32px}.toast .icon-btn:hover{background:#8080804d}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;overflow:auto;z-index:20;padding:16px}.dialog{width:min(640px,100%);margin:auto;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-overlay)}.dialog.sm{width:min(480px,100%)}.dialog-head{display:flex;align-items:center;gap:16px;padding:24px 24px 16px}.dialog-head h2{margin:0;flex:1;font-size:22px;line-height:28px;font-weight:700}.dialog-head .ico{color:var(--danger)}.dialog-body{display:flex;flex-direction:column;gap:16px;padding:0 24px}.dialog-body p{margin:0;color:var(--text-secondary)}.dialog-footer{display:flex;justify-content:flex-end;gap:12px;padding:24px}.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.field{display:flex;flex-direction:column;gap:8px;min-width:0}.field>.label{color:var(--text)}.input{width:100%;height:48px;padding:0 16px;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:8px}textarea.input{height:auto;min-height:96px;padding:12px 16px;resize:vertical}.input::placeholder{color:var(--text-secondary)}.input:hover{border-color:var(--text-secondary)}.input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.input.error{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.input:disabled{background:var(--surface-hover);border-color:var(--border);color:var(--text-disabled)}.helper{display:flex;align-items:center;gap:4px;font-size:12px;line-height:16px;color:var(--text-secondary)}.helper.error{color:var(--danger)}.select{position:relative}.select-trigger{display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer}.select-trigger .val{flex:1;display:flex;align-items:center;gap:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.select-trigger .chev{color:var(--text-secondary);flex-shrink:0}.select-menu{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 4px);margin:0;padding:4px;list-style:none;max-height:336px;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-overlay)}.option{display:flex;align-items:center;gap:12px;height:40px;padding:0 12px;border-radius:8px;cursor:pointer}.option .grow{flex:1}.option.active{background:var(--surface-hover)}.option[aria-selected=true]{background:var(--surface-selected);color:var(--brand)}.option[aria-selected=true].active{background:var(--surface-selected-hover)}.swatch{width:16px;height:16px;border-radius:50%;background:var(--sw, var(--text-secondary));flex-shrink:0}.swatch.purple{--sw: var(--brand)}.swatch.orange{--sw: var(--warning)}.swatch.green{--sw: var(--success)}.swatch.neutral{--sw: var(--text-secondary)}@media (max-width: 700px){:root{--gutter: 16px}.page-header .inner{flex-direction:column;align-items:stretch;padding-top:16px;padding-bottom:16px;gap:16px}.page-header h1{font-size:28px;line-height:36px}.brand-logo{--logo-h: 56px}.header-actions{justify-content:space-between}.tabs-wrap{padding-top:16px}.tablist{flex-wrap:nowrap;overflow-x:auto}.tab{white-space:nowrap}.content{padding-top:16px;padding-bottom:32px}.grid{grid-template-columns:1fr;gap:16px}.cols3{grid-template-columns:1fr}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}.login-page{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:min(420px,100%);display:flex;flex-direction:column;gap:16px;padding:32px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-raised)}.login-card h1{margin:0;font-size:28px;line-height:36px;font-weight:700}.login-logo{height:72px;width:auto;align-self:flex-start;margin:-16px 0 -8px -17px}:root[data-theme=dark] .login-logo{content:url(/assets/forty2-logo-dark-53hy2Pv7.png)}.login-error{font-size:14px;line-height:20px}.login-card .btn{margin-top:8px}.login-app{margin:0;font-size:18px;line-height:24px;font-weight:700;color:var(--brand)}.login-card h1{margin-top:-12px}.tab-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.tab-row{display:flex;align-items:center;gap:4px}.tab-row .input{flex:1;min-width:0;margin-right:4px}.tab-row .badge{margin-right:4px}.tab-row .btn{flex-shrink:0;margin-left:4px}.icon-btn:disabled{color:var(--text-disabled);cursor:not-allowed;background:transparent}
