1import{u as F,r as i,R as D,j as e,A as O,a as Z,c as V}from"./app-h2-CaMDwLtx.js";import{d as K,B as q}from"./chunk-h2-G4U56Vgv.js";import{A as W}from"./chunk-h2-CBQcCsu_.js";import{K as J}from"./chunk-h2-BagjpMii.js";import{W as Y}from"./chunk-h2-Gjs2BBRj.js";import"./chunk-h2-BnlG2grR.js";import"./chunk-h2-t36DQXcU.js";import"./chunk-h2-VgFbgV8D.js";import"./chunk-h2-BJ2Z-M58.js";import"./chunk-h2-BTduS5Rh.js";import"./chunk-h2-CX-3Nm72.js";import"./chunk-h2-B7hveERD.js";import"./chunk-h2-DFANrooV.js";import"./chunk-h2-CcmbjmSj.js";import"./chunk-h2-DeNHcAD4.js";import"./chunk-h2-C7Wa-1FM.js";import"./chunk-h2-DleuWAXj.js";import"./chunk-h2-CYJaTVvb.js";import"./chunk-h2-l1t1zFEz.js";import"./chunk-h2-DItr2wol.js";import"./chunk-h2-C04bTt4H.js";import"./chunk-h2-DCADjnpI.js";import"./chunk-h2-DJi0WWXe.js";import"./chunk-h2-CIpe016p.js";import"./chunk-h2-DjKsMVvs.js";import"./chunk-h2-C_HEmSgO.js";import"./chunk-h2-D6cgktSm.js";import"./chunk-h2-BkdPFeEG.js";import"./chunk-h2-DnOzX2Lt.js";import"./chunk-h2-BIA8scch.js";import"./chunk-h2-eGXKevlS.js";import"./chunk-h2-C7CUFV-A.js";import"./chunk-h2-tL4rpmNv.js";import"./chunk-h2-Dvh5WSaK.js";import"./chunk-h2-Bof9GlKE.js";import"./chunk-h2-BSgWmPDF.js";import"./chunk-h2-Dsn45ySM.js";import"./chunk-h2-0ZZTf1TM.js";import"./chunk-h2-DQ3Rezfs.js";import"./chunk-h2-BUFQVpEH.js";import"./chunk-h2-8gexJsUN.js";import"./chunk-h2-uNE4VCd8.js";import"./chunk-h2-86TbWscO.js";import"./chunk-h2-YL9Fg1_1.js";import"./chunk-h2-B85UIU1G.js";import"./chunk-h2-BYJfVZjl.js";import"./chunk-h2-BChkfxf1.js";import"./chunk-h2-BfPIzGjB.js";import"./chunk-h2-BOoWBfXN.js";import"./chunk-h2-CUs_SD2O.js";import"./chunk-h2-DrWfk_ua.js";import"./chunk-h2-D3CexasR.js";import"./chunk-h2-DfSSh66O.js";import"./chunk-h2-Bj-JHiWZ.js";import"./chunk-h2-wvKB7jbv.js";import"./chunk-h2-BbiqXcli.js";import"./chunk-h2-BO3haKId.js";import"./chunk-h2-B3u1PB91.js";let R=null;function X(){try{R||(R=new AudioContext);const t=R,r=t.currentTime,a=t.createOscillator(),s=t.createGain();a.type="sine",a.frequency.setValueAtTime(830,r),s.gain.setValueAtTime(0,r),s.gain.linearRampToValueAtTime(.12,r+.005),s.gain.exponentialRampToValueAtTime(.001,r+.5),a.connect(s),s.connect(t.destination),a.start(r),a.stop(r+.5)}catch{}}const Q=t=>{const r=t.trim().split(" ");return r.length>=2?(r[0][0]+r[r.length-1][0]).toUpperCase():t.substring(0,2).toUpperCase()},L=[{bg:"rgba(255,213,0,.22)",text:"rgba(255,235,140,1)"},{bg:"rgba(17,214,149,.22)",text:"rgba(140,250,210,1)"},{bg:"rgba(255,180,60,.22)",text:"rgba(255,220,150,1)"},{bg:"rgba(96,165,250,.22)",text:"rgba(180,210,255,1)"},{bg:"rgba(244,114,182,.22)",text:"rgba(255,200,225,1)"}],H=t=>{let r=0;for(let a=0;a<t.length;a++)r=t.charCodeAt(a)+((r<<5)-r);return L[Math.abs(r)%L.length]},U=t=>{if(!t)return"";const r=new Date(t),s=new Date().getTime()-r.getTime(),p=Math.floor(s/6e4),d=Math.floor(s/36e5),f=Math.floor(s/864e5),b=r.toLocaleTimeString("de-DE",{hour:"2-digit",minute:"2-digit",timeZone:"Europe/Berlin"}),h=r.toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",timeZone:"Europe/Berlin"});return p<1?"Gerade eben":p<60?`Vor ${p} Min.`:d<24?b:f===1?`Gestern, ${b}`:f<7?`Vor ${f} Tagen`:h};function $(){const[t,r]=i.useState(!1);return i.useEffect(()=>{const a=()=>r(window.innerWidth<768);return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[]),t}function _({item:t,index:r,onDismiss:a}){var A,N,y,E,k;const[s,p]=i.useState("entering"),d=i.useRef(!1),f=Array.isArray(t.fields.projectName)&&t.fields.projectName.length>0?(A=t.fields.projectName[0])==null?void 0:A.id:(N=t.fields.projectName)==null?void 0:N.id,b=Array.isArray(t.fields.projectName)&&t.fields.projectName.length>0?(y=t.fields.projectName[0])==null?void 0:y.label:((E=t.fields.projectName)==null?void 0:E.label)??null,h=Array.isArray(t.fields.userAvatar)?t.fields.userAvatar:t.fields.userAvatar?[t.fields.userAvatar]:[],w=t.fields.message,m=K(t.fields.userName,"LIBERDA Media"),u=(k=h[0])==null?void 0:k.url,x=H(m);i.useEffect(()=>{const n=90+r*190,l=setTimeout(()=>{p("visible"),r===0&&!d.current&&(d.current=!0,X())},n);return()=>clearTimeout(l)},[]);const c=i.useCallback(()=>{p("exiting"),setTimeout(()=>a(t.id),450)},[t.id,a]);return e.jsxs("div",{className:`ntf-wrap ntf-wrap--${s}`,children:[e.jsx("button",{className:"ntf-close",onClick:n=>{n.stopPropagation(),c()}
1,"aria-label":"SchlieÃen",children:e.jsxs("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:[e.jsx("line",{x1:"1",y1:"1",x2:"7",y2:"7"}),e.jsx("line",{x1:"7",y1:"1",x2:"1",y2:"7"})]})}),e.jsxs("div",{className:"ntf-slide",onClick:()=>{f&&(window.location.href=`/projektdetails?recordId=${f}`)},children:[e.jsx("div",{className:"ntf-sheen","aria-hidden":"true"}),e.jsx("div",{className:"ntf-timer"}),e.jsxs("div",{className:"ntf-inner",children:[e.jsx("div",{className:"ntf-icon",children:u?e.jsx("img",{src:u,alt:m,className:"ntf-icon-img"}):e.jsx("span",{className:"ntf-icon-ini",style:{background:x.bg,color:x.text},children:Q(m)})}),e.jsxs("div",{className:"ntf-content",children:[e.jsx("div",{className:"ntf-line1",children:e.jsx("span",{className:"ntf-sender",children:m})}),b&&e.jsx("div",{className:"ntf-project",children:b}),w&&e.jsx("div",{className:"ntf-message",children:w})]}),e.jsxs("div",{className:"ntf-aside",children:[e.jsx("span",{className:"ntf-time",children:U(t.fields.timestamp)}),t.fields.cover?e.jsx("div",{className:"ntf-thumb",children:e.jsx("img",{src:t.fields.cover,alt:"",className:"ntf-thumb-img",loading:"lazy",onError:n=>{const l=n.currentTarget.parentElement;l&&(l.style.display="none")}})}):null]})]})]})]})}function ee({item:t}){var h,w,m,u,x;const r=Array.isArray(t.fields.projectName)&&t.fields.projectName.length>0?(h=t.fields.projectName[0])==null?void 0:h.id:(w=t.fields.projectName)==null?void 0:w.id,a=Array.isArray(t.fields.projectName)&&t.fields.projectName.length>0?(m=t.fields.projectName[0])==null?void 0:m.label:((u=t.fields.projectName)==null?void 0:u.label)??null,s=Array.isArray(t.fields.userAvatar)?t.fields.userAvatar:t.fields.userAvatar?[t.fields.userAvatar]:[],p=t.fields.message,d=K(t.fields.userName,"LIBERDA Media"),f=(x=s[0])==null?void 0:x.url,b=H(d);return e.jsxs("a",{href:r?`/projektdetails?recordId=${r}`:"#",className:"ntf-mob-card",onClick:r?void 0:c=>c.preventDefault(),children:[e.jsx("div",{className:"ntf-mob-card-icon",children:f?e.jsx("img",{src:f,alt:d,className:"ntf-icon-img"}):e.jsx("span",{className:"ntf-icon-ini",style:{background:b.bg,color:b.text},children:Q(d)})}),e.jsxs("div",{className:"ntf-mob-card-content",children:[e.jsx("div",{className:"ntf-mob-card-row1",children:e.jsx("span",{className:"ntf-mob-card-sender",children:d})}),a&&e.jsx("div",{className:"ntf-mob-card-project",children:a}),p&&e.jsx("div",{className:"ntf-mob-card-message",children:p})]}),e.jsxs("div",{className:"ntf-aside",children:[e.jsx("span",{className:"ntf-mob-card-time",children:U(t.fields.timestamp)}),t.fields.cover?e.jsx("div",{className:"ntf-thumb ntf-thumb--mob",children:e.jsx("img",{src:t.fields.cover,alt:"",className:"ntf-thumb-img",loading:"lazy",onError:c=>{const A=c.currentTarget.parentElement;A&&(A.style.display="none")}})}):null]})]})}function te(){const t=$(),r=F(),[a,s]=i.useState([]),[p,d]=i.useState("pending");i.useEffect(()=>{const n=String((r==null?void 0:r.email)||"").trim().toLowerCase();if(!n){s([]);return}let l=!0;const S=async()=>{try{const z=await fetch(O+"/api/hub/messages?limit=30",{headers:{...Z(),"X-User-Email":n}}),v=z.ok?await z.json():null;if(!l)return;s(Array.isArray(v==null?void 0:v.messages)?v.messages:[]),d("success")}catch{l&&(s([]),d("success"))}};S();const C=setInterval(()=>{typeof document<"u"&&document.hidden||S()},6e4);return()=>{l=!1,clearInterval(C)}},[r==null?void 0:r.email]);const[f,b]=i.useState(new Set),h=i.useCallback(n=>{b(l=>new Set(l).add(n))},[]),[w,m]=i.useState(!1),u=i.useRef(!1);i.useEffect(()=>{t&&a.length>0&&!u.current&&(u.current=!0,X())},[t,a.length]);const x=i.useRef(null),[c,A]=i.useState(!1),[N,y]=i.useState(!1),E=i.useCallback(()=>{y(!0),setTimeout(()=>{b(new Set(a.map(n=>n.id))),y(!1)},430)},[a]);if(i.useEffect(()=>{if(t)return;const n=x.current;if(!n)return;const l=11,S=.05,C=.16,z=4,v=()=>{const I=Array.from(n.querySelectorAll(".ntf-wrap")).filter(o=>!o.classList.contains("ntf-wrap--exiting"));if(c){I.forEach((o,g)=>{o.style.transform="",o.style.opacity="1",o.style.filter="none",o.style.visibility="visible",o.style.zIndex=String(1e3-g)});return}const P=I.map(o=>o.offsetTop);I.forEach((o,g)=>{if(g>=z){o.style.visibility="hidden",o.style.opacity="0",o.style.zIndex=String(1e3-g);return}o.style.visibility="visible",o.style.transform="translateY("+-(P[g]-g*l)+"px) scale("+(1-g*S)+")",o.style.opacity=String(Math.max(0,1-g*C)),o.style.filter="brightness("+(1-g*.05)+")",o.style.zIndex=String(1e3-g)})};let j=0;const M=()=>{j||(j=requestAnimationFrame(()=>{j=0,v()}))};v();let B=null;try{B=new ResizeObserver(M),B.observe(n)}catch{}const T=new MutationObserver(M);return T.observe(n,{childList:!0}),()=>{j&&cancelAnimationFrame(j),B&&B.disconnect(),T.disconnect()}},[c,a.length,t]),p!=="success"||a.length===0)return null;
1const k=a.filter(n=>!f.has(n.id));return t?D.createPortal(e.jsxs(e.Fragment,{children:[e.jsx(G,{}),e.jsxs("button",{className:"ntf-bell-btn",onClick:()=>m(!0),"aria-label":`${a.length} Benachrichtigungen`,children:[e.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"}),e.jsx("path",{d:"M13.73 21a2 2 0 0 1-3.46 0"})]}),e.jsx("span",{className:"ntf-bell-badge",children:a.length})]}),w&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"ntf-mob-backdrop",onClick:()=>m(!1)}),e.jsxs("div",{className:"ntf-mob-drawer",children:[e.jsx("div",{className:"ntf-mob-drawer-handle"}),e.jsxs("div",{className:"ntf-mob-drawer-header",children:[e.jsx("h3",{className:"ntf-mob-drawer-title",children:"Benachrichtigungen"}),e.jsx("span",{className:"ntf-mob-drawer-count",children:a.length}),e.jsx("button",{className:"ntf-mob-drawer-close",onClick:()=>m(!1),children:e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[e.jsx("line",{x1:"3",y1:"3",x2:"13",y2:"13"}),e.jsx("line",{x1:"13",y1:"3",x2:"3",y2:"13"})]})})]}),e.jsx("div",{className:"ntf-mob-drawer-list",children:a.map(n=>e.jsx(ee,{item:n},n.id))})]})]})]}),document.body):k.length===0?null:D.createPortal(e.jsxs(e.Fragment,{children:[e.jsx(G,{}),e.jsx("div",{"aria-hidden":"true",style:{position:"absolute",width:0,height:0,overflow:"hidden",pointerEvents:"none"},dangerouslySetInnerHTML:{__html:'<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" color-interpolation-filters="sRGB"><filter id="ntfGlass" x="0%" y="0%" width="100%" height="100%"><feImage href="data:image/png;base64,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" preserveAspectRatio="none" x="0%" y="0%" width="100%" height="100%" result="map"/><feDisplacementMap in="SourceGraphic" in2="map" scale="34" xChannelSelector="R" yChannelSelector="G"/></filter></svg>'}}),e.jsx("svg",{width:"0",height:"0",style:{position:"absolute"},"aria-hidden":"true",children:e.jsxs("filter",{id:"ntfLiquid",x:"0%",y:"0%",width:"100%",height:"100%",colorInterpolationFilters:"sRGB",children:[e.jsx("feImage",{href:"/nav-displace.png",preserveAspectRatio:"none",x:"0%",y:"0%",width:"100%",height:"100%",result:"map"}),e.jsx("feDisplacementMap",{in:"SourceGraphic",in2:"map",scale:90,xChannelSelector:"R",yChannelSelector:"G"})]})}),e.jsx("div",{className:"ntf-scrim"+(c?" ntf-scrim--on":""),"aria-hidden":"true"}),e.jsxs("div",{className:"ntf-portal"+(c?" ntf-portal--expanded":"")+(N?" ntf-clearing":""),onMouseEnter:()=>A(!0),onMouseLeave:()=>A(!1),children:[!c&&e.jsx("div",{className:"ntf-hoverzone","aria-hidden":"true"}),k.length>=2&&e.jsxs("button",{className:"ntf-clearall",onClick:E,"aria-label":"Alle Benachrichtigungen schlieÃen",children:[e.jsx("span",{className:"ntf-clearall-x","aria-hidden":"true",children:e.jsxs("svg",{width:"9",height:"9",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",children:[e.jsx("line",{x1:"1",y1:"1",x2:"7",y2:"7"}),e.jsx("line",{x1:"7",y1:"1",x2:"1",y2:"7"})]})}),"Alle schlieÃen"]}),e.jsx("div",{className:"ntf-stack"+(c?" ntf-stack--expanded":" ntf-stack--collapsed"),ref:x,children:k.map((n,l)=>e.jsx(_,{item:n,index:l,onDismiss:h},n.id))})]})]}),document.body)}function G(){return e.jsx("style",{children:` 2:root { 3 /* Glas-Basis an das Referenz-Aufgaben-Menü (.np-preview) angeglichen: gleicher 4 dunkler Blau-Schwarz-Ton statt des früheren Grün-Stichs. Etwas weniger transparent 5 als die Referenz (.32), weil Toasts über beliebigem Content schweben â Lesbarkeit. */ 6 --ntf-glass-solid: rgba(200,202,205,0.12); /* HELLE, fast farblose Glasflaeche (Rezept §3) â liquid + hell statt dunkel */ 7 --ntf-glass-mobile: rgba(20,20,26,0.80); 8 --ntf-border: rgba(255,255,255,0.09); 9 --ntf-gold: 255,213,0; 10 --ntf-green: 17,214,149; 11} 12
13/* ââââââââââââââââââââââââââ 14 DESKTOP TOAST STACK 15ââââââââââââââââââââââââââ */ 16/* Portal = fixe Hover-Zone (overflow sichtbar, damit der seitliche Button nicht abgeschnitten wird) */ 17/* Lese-Scrim hinter dem Toast-Stack â dimmt + blurrt das Dashboard, nur beim Auffächern (Hover) */ 18.ntf-scrim { 19 position:fixed; inset:0; z-index:99990; 20 pointer-events:none; 21 opacity:0; 22 /* KEIN Vollbild-Blur â nur ein schwarzer VERLAUF von der rechten Seite (wo das Panel reinkommt): 23 dunkel am rechten Rand hinter dem Panel, laeuft nach links aus. Kein backdrop-filter â der 24 Hintergrund bleibt SCHARF, damit die Liquid-Refraktion der Kacheln etwas zum Brechen hat. */ 25 background:linear-gradient(to left, rgba(0,0,0,.55) 0%, rgba(0,0,0,.30) 45%, transparent 80%); 26 transition:opacity 280ms cubic-bezier(.22,1,.36,1); 27} 28/* KEIN Screen-Blur (Gaussian nur als Safari-Kachel-Fallback) â nur sanftes Abdunkeln. Ein Blur wuerde die 29 Liquid-Refraktion der Kacheln toeten (die Verzerrung braucht SCHARFEN Inhalt dahinter, wie das Menue ueber 30 dem scharfen Hero). Der Hintergrund bleibt also scharf, nur leicht abgedunkelt fuer den Fokus. */ 31.ntf-scrim--on { opacity:1; pointer-events:none; z-index:2147483050; } 32/* Doppel-Klasse = hoehere Spezifitaet, damit dieses z-index die Basis-Regel .ntf-portal (z-index 99999, 33 steht im Stylesheet DANACH) sicher schlaegt. Sonst bliebe das Portal auf 99999 = UNTER dem Scrim 34 (2147483050) und die Karten wuerden mit-geblurrt. Jetzt 2147483060 = UEBER dem Scrim = Nachrichten scharf. */ 35.ntf-portal.ntf-portal--expanded { z-index:2147483060; } /* aufgefaechert -> ueber Conny-Pill + Scrim */ 36 37.ntf-portal { 38 position:fixed; top:36px; right:16px; z-index:99999; 39 width:400px; max-width:calc(100vw - 32px); 40 pointer-events:none; 41 font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",sans-serif; 42 -webkit-font-smoothing:antialiased; 43} 44/* Hover-Zone über dem zusammengeklappten Deck â macht das Mouseover-Ãffnen wieder zuverlässig 45 (das Portal selbst ist pointer-events:none, damit das Dashboard dahinter klickbar bleibt). */ 46.ntf-hoverzone { 47 position:absolute; top:-8px; right:0; 48 width:100%; height:170px; 49 pointer-events:auto; 50 z-index:0; 51} 52.ntf-stack { 53 position:relative; display:flex; flex-direction:column; gap:10px; 54 padding:0 10px; pointer-events:none; 55} 56.ntf-stack > * { pointer-events:auto; } 57/* Aufgefächert: alle Karten sichtbar; bei vielen scrollbar (Stack wird klickbar/scrollbar) */ 58.ntf-stack--expanded { 59 pointer-events:auto; 60 max-height:calc(100vh - 64px); overflow-y:auto; overflow-x:hidden; 61 padding-bottom:16px; overscroll-behavior:contain; 62 scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.22) transparent; 63} 64.ntf-stack--expanded::-webkit-scrollbar{ width:7px; } 65.ntf-stack--expanded::-webkit-scrollbar-thumb{ background:rgba(255,255,255,.18); border-radius:99px; } 66.ntf-stack--expanded::-webkit-scrollbar-track{ background:transparent; } 67 68/* âAlle schlieÃen"-Button â NEBEN den Karten (links), nicht drüber: Layout darunter bleibt unberührt */ 69.ntf-clearall{ 70 position:absolute; top:2px; right:calc(100% + 12px); white-space:nowrap; 71 display:none; align-items:center; gap:7px; 72 padding:7px 14px 7px 11px; border-radius:999px; cursor:pointer; 73 background:rgba(28,34,30,.72); border:1px solid rgba(255,255,255,.14); 74 color:rgba(255,255,255,.72); font:inherit; font-size:12px; font-weight:600; 75 backdrop-filter:blur(22px) saturate(150%); -webkit-backdrop-filter:blur(22px) saturate(150%); 76 box-shadow:0 10px 28px -12px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.1); 77 opacity:0; transform:translateX(10px); transition:background .2s, color .2s, border-color .2s, transform .25s, opacity .25s; 78} 79.ntf-clearall-x{ display:inline-flex; align-items:center; justify-content:center; width:15px; height:15px; border-radius:50%; 80 background:rgba(255,255,255,.10); color:rgba(255,255,255,.8); } 81.ntf-portal--expanded .ntf-clearall{ display:inline-flex; pointer-events:auto;
81 opacity:1; transform:none; transition:opacity .3s ease .05s, transform .32s cubic-bezier(.22,1,.36,1) .05s, background .2s, color .2s, border-color .2s; } 82.ntf-clearall:hover{ background:rgba(255,90,70,.16); color:#fff; border-color:rgba(255,90,70,.4); } 83.ntf-clearall:hover .ntf-clearall-x{ background:rgba(255,90,70,.85); color:#fff; } 84.ntf-clearall:active{ transform:scale(.96); } 85 86/* âAlle schlieÃen": alle Karten smooth raus + kollabieren */ 87.ntf-clearing .ntf-wrap{ 88 opacity:0 !important; transform:translateX(28px) scale(.97) !important; 89 max-height:0 !important; margin-top:0 !important; pointer-events:none; overflow:hidden; 90 transition:transform .3s cubic-bezier(.4,0,.2,1), opacity .26s ease, max-height .32s cubic-bezier(.4,0,.2,1), margin-top .32s cubic-bezier(.4,0,.2,1) !important; 91} 92.ntf-clearing .ntf-clearall{ opacity:0 !important; pointer-events:none; transition:opacity .2s ease; } 93 94.ntf-wrap { 95 position:relative; margin-top:10px; max-height:150px; 96 transform-origin:top center; will-change:transform, margin-top; 97 /* Transform/Opacity/Filter werden per JS gesetzt (Stapeln/Auffaechern); Höhen-Kollaps fürs SchlieÃen */ 98 transition:transform 420ms cubic-bezier(.4,0,.2,1), opacity 300ms ease, filter 340ms ease, 99 margin-top 500ms cubic-bezier(.22,1,.36,1), max-height 500ms cubic-bezier(.22,1,.36,1); 100} 101.ntf-stack > .ntf-wrap:first-of-type { margin-top:0; } 102/* Enter/Exit-Animation liegt auf der Karte (Wrapper bleibt fürs Stapeln frei). 103 Reveal wie das Referenz-Aufgaben-Menü (.np-preview): kurzer Slide (12px) + Fade, 104 nicht mehr der weite 48px-Slide â blendet jetzt identisch zum Aufgaben-Menü auf. */ 105.ntf-wrap--entering .ntf-slide { transform:translateX(12px); opacity:0; } 106.ntf-wrap--visible .ntf-slide { transform:translateX(0); opacity:1; } 107.ntf-wrap--exiting .ntf-slide { transform:none; opacity:1; 108 transition:opacity 200ms ease; } 109/* SchlieÃen: Wrapper kollabiert -> die anderen ziehen smooth nach */ 110.ntf-wrap--exiting { 111 max-height:0 !important; margin-top:0 !important; opacity:0 !important; 112 transform:translateX(28px) scale(.97) !important; overflow:hidden; pointer-events:none; 113 transition:transform 300ms cubic-bezier(.4,0,.2,1), opacity 240ms ease, 114 max-height 320ms cubic-bezier(.4,0,.2,1), margin-top 320ms cubic-bezier(.4,0,.2,1); 115} 116 117.ntf-close { 118 position:absolute; top:-7px; left:-7px; z-index:10; 119 width:22px; height:22px; border:none; cursor:pointer; padding:0; 120 display:flex; align-items:center; justify-content:center; border-radius:50%; 121 background:rgba(24,30,26,.95); 122 border:1px solid rgba(255,255,255,.12); 123 color:rgba(255,255,255,.55); 124 box-shadow:0 2px 8px rgba(0,0,0,.4); 125 backdrop-filter:blur(12px); 126 -webkit-backdrop-filter:blur(12px); 127 transition:all 180ms ease; 128 opacity:0; transform:scale(.5); 129} 130.ntf-wrap:hover .ntf-close { opacity:1; transform:scale(1); } 131.ntf-close:hover { 132 background:rgba(255,80,60,.9); color:#fff; 133 border-color:rgba(255,80,60,.4); 134 transform:scale(1.1); 135 box-shadow:0 2px 12px rgba(255,80,60,.35); 136} 137 138/* Toast-Card â Liquid Glass: Glas-Look 1:1 wie das Referenz-Aufgaben-Menü (.np-preview). 139 Gleicher BG-Gradient + dunkle Glas-Basis, blur(28px) saturate(160%), gleicher Border, 140 Radius 22px und derselbe Box-Shadow. (url(#ntfGlass)-Refraktion bleibt für Chrome darunter.) */ 141.ntf-slide { 142 position:relative; z-index:1; 143 border-radius:22px; overflow:hidden; cursor:pointer; 144 background: 145 linear-gradient(135deg, rgba(255,255,255,.06), rgba(255,255,255,.02)), 146 var(--ntf-glass-solid); 147 /* LIQUID (Rezept): niedriger Blur â die REFRAKTION macht den Glas-Look, nicht die Unschaerfe. 148 Hoher Blur = frosted (nur Safari-Fallback ueber .lgm-safari). */ 149 -webkit-backdrop-filter:blur(2px) saturate(1.7) brightness(1.04); 150 backdrop-filter:blur(2px) saturate(1.7) brightness(1.04); 151 /* Kein harter Border (der war der sichtbare âRand"/Kasten) â nur ein hauchzarter 1px-Shadow-Saum 152 wie beim linken Menü (.lm-sidebar-glass). */ 153 border:none; 154 /* KEIN 0 0 0 1px-Ring mehr â der war die sichtbare Kante um die Kachel. Nur weicher Tiefen-Schatten 155 + zarter Top-Gloss; der Rand entsteht jetzt allein durch das Glas selbst (randlos). */ 156 box-shadow: 157 0 20px 60px rgba(0,0,0,.45), 158 inset 0 1px 0 rgba(255,255,255,.10); 159 /* Reveal exakt wie .np-preview: 240ms cubic-bezier(.22,1,.36,1) auf transform+opacity */ 160 transition:transform 240ms cubic-bezier(.22,1,.36,1), opacity 240ms cubic-bezier(.22,1,.36,1), background 200ms, box-shadow 200ms, filter 320ms ease; 161} 162/* CHROME/EDGE: echte Liquid-Glass-Refraktion via generierter Displace-Map (Safari faellt auf Basis+Bezel zurueck) */ 163@supports (backdrop-filter: url("#ntfLiquid")) { 164 /* Liquid-Glass via #ntfLiquid = EXAKT der Menue-Filter (/nav-displace.png, scale 90), im Portal 165 definiert (erreichbar). Safari faellt ueber .lgm-safari .ntf-slide auf echten Gauss-Blur zurueck. */ 166 .ntf-slide { backdrop-filter:blur(2px) saturate(1.7) brightness(1.04) url(#ntfLiquid); } 167}
168/* SAFARI (Fallback = frosted/gaussian, NUR hier): rendert url() nicht â echter Gauss-Blur (Rezept §6: blur 10px). */ 169.lgm-safari .ntf-slide { 170 -webkit-backdrop-filter:blur(10px) saturate(1.7) !important; 171 backdrop-filter:blur(10px) saturate(1.7) !important; 172} 173.ntf-wrap:hover .ntf-slide { 174 /* Rahmen/Bezel bleibt â Karte heller (120%) + leichter Zoom, sanfter Fade in/out */ 175 filter:brightness(1.20); 176 transform:scale(1.03); 177} 178 179/* Sheen-Layer â subtiler Highlight + Brand-Glows */ 180.ntf-sheen { 181 position:absolute; inset:0; pointer-events:none; z-index:1; 182 border-radius:inherit; 183 /* farbigen Gold/Grün-Glow um die Nachricht entfernt â nur dezenter oberer Highlight */ 184 background:linear-gradient(180deg, rgba(255,255,255,.05) 0%, rgba(255,255,255,0) 30%); 185} 186 187/* Timer-Bar â Gold-Verlauf statt Cyan */ 188.ntf-timer { 189 /* gelber âdurchlaufender" Timer-Glow entfernt (auf Wunsch) */ 190 display:none; 191} 192.ntf-wrap:hover .ntf-timer { animation-play-state:paused; } 193@keyframes ntf-timer { from{transform:scaleX(1)} to{transform:scaleX(0)} } 194 195.ntf-inner { 196 position:relative; z-index:2; 197 display:flex; align-items:flex-start; gap:13px; 198 padding:14px 15px 15px 14px; 199} 200 201.ntf-icon { 202 flex-shrink:0; width:46px; height:46px; 203 border-radius:50%; overflow:hidden; align-self:center; 204 box-shadow:0 2px 10px rgba(0,0,0,.30); 205 border:1px solid rgba(255,255,255,.06); 206} 207.ntf-icon-img { width:100%; height:100%; object-fit:cover; display:block; } 208.ntf-icon-ini { 209 width:100%; height:100%; 210 display:flex; align-items:center; justify-content:center; 211 font-size:17px; font-weight:700; 212 letter-spacing:.02em; 213} 214 215.ntf-content { flex:1; min-width:0; } 216/* Rechte Spalte: Uhrzeit oben-rechts (rechtsbündig) â Apple-Layout */ 217.ntf-aside { 218 flex-shrink:0; align-self:stretch; 219 display:flex; flex-direction:column; align-items:flex-end; gap:8px; 220} 221.ntf-line1 { display:flex; align-items:baseline; gap:5px; margin-bottom:3px; } 222.ntf-sender { 223 flex:1; font-size:15px; font-weight:680; letter-spacing:-.01em; 224 color:#fff; 225 white-space:nowrap; overflow:hidden; text-overflow:ellipsis; 226} 227.ntf-time { font-size:13px; color:rgba(255,255,255,.5); white-space:nowrap; flex-shrink:0; font-variant-numeric:tabular-nums; } 228/* Apple-Style Projekt-Titelbild rechts: Zeit oben, Bild vertikal zentriert darunter (margin:auto) â wie intern (Dima 05.07.). */ 229.ntf-thumb { flex-shrink:0; width:46px; height:46px; margin-top:auto; margin-bottom:auto; border-radius:11px; overflow:hidden; box-shadow:0 2px 10px rgba(0,0,0,.32); border:1px solid rgba(255,255,255,.08); background:rgba(255,255,255,.04); } 230.ntf-thumb-img { width:100%; height:100%; object-fit:cover; display:block; } 231.ntf-thumb--mob { width:42px; height:42px; border-radius:10px; } 232.ntf-project { 233 font-size:15px; font-weight:680; letter-spacing:-.01em; 234 color:#fff; 235 margin-bottom:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; 236} 237.ntf-message { 238 font-size:14.5px; font-weight:400; color:rgba(255,255,255,.82); 239 line-height:1.42; 240 display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; 241} 242 243/* ââââââââââââââââââââââââââ 244 MOBILE BELL BUTTON 245ââââââââââââââââââââââââââ */ 246.ntf-bell-btn { 247 position:fixed; 248 top:36px; right:48px; 249 z-index:99998; 250 width:44px; height:44px; 251 border-radius:50%; 252 background: 253 linear-gradient(135deg, rgba(255,255,255,.04), rgba(255,255,255,.01)), 254 rgba(24,30,26,.85); 255 backdrop-filter:blur(20px) saturate(155%); 256 -webkit-backdrop-filter:blur(20px) saturate(155%); 257 border:1px solid rgba(255,255,255,.10); 258 box-shadow:0 6px 20px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.05); 259 display:none; 260 align-items:center; justify-content:center; 261 color:rgba(255,255,255,.85); 262 cursor:pointer; 263 -webkit-tap-highlight-color:transparent; 264 transition:transform 150ms ease, background 150ms ease; 265} 266.ntf-bell-btn:active { 267 transform:scale(.9); 268 background:rgba(var(--ntf-gold),.16); 269 border-color:rgba(var(--ntf-gold),.35); 270 color:rgba(var(--ntf-gold),1); 271} 272@media(max-width:767px){ .ntf-bell-btn { display:flex; } } 273 274.ntf-bell-badge { 275 position:absolute; 276 top:-3px; right:-3px; 277 min-width:20px; height:20px; 278 padding:0 6px; 279 border-radius:999px; 280 background:#ef4444; 281 color:#fff; 282 font-size:11px; 283 font-weight:700; 284 display:flex; align-items:center; justify-content:center; 285 box-shadow:0 2px 8px rgba(239,68,68,.5); 286 animation:ntf-badge-pop 400ms cubic-bezier(.22,1,.36,1); 287} 288@keyframes ntf-badge-pop { 289 0% { transform:scale(0); } 290 60% { transform:scale(1.2); } 291 100% { transform:scale(1); } 292} 293 294/* ââââââââââââââââââââââââââ 295 MOBILE DRAWER â Liquid Glass 296ââââââââââââââââââââââââââ */ 297.ntf-mob-backdrop { 298 position:fixed; inset:0; z-index:99998; 299 background:rgba(0,0,0,.55); 300 backdrop-filter:blur(4px); 301 -webkit-backdrop-filter:blur(4px); 302 animation:ntf-fade-in 200ms ease; 303} 304@keyframes ntf-fade-in { from{opacity:0}
304 to{opacity:1} } 305 306.ntf-mob-drawer { 307 position:fixed; 308 bottom:0; left:0; right:0; 309 z-index:99999; 310 max-height:75vh; 311 background: 312 linear-gradient(135deg, rgba(255,255,255,.03), rgba(255,255,255,.01) 50%, transparent), 313 var(--ntf-glass-mobile); 314 backdrop-filter:blur(24px) saturate(150%); 315 -webkit-backdrop-filter:blur(24px) saturate(150%); 316 border-top-left-radius:24px; 317 border-top-right-radius:24px; 318 border:1px solid var(--ntf-border); 319 border-bottom:none; 320 box-shadow:0 -10px 40px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.05); 321 display:flex; flex-direction:column; 322 animation:ntf-drawer-up 300ms cubic-bezier(.22,1,.36,1); 323 font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",sans-serif; 324 -webkit-font-smoothing:antialiased; 325} 326@keyframes ntf-drawer-up { 327 from { transform:translateY(100%); } 328 to { transform:translateY(0); } 329} 330 331.ntf-mob-drawer-handle { 332 width:36px; height:4px; 333 border-radius:2px; 334 background:rgba(255,255,255,.18); 335 margin:10px auto 0; 336 flex-shrink:0; 337} 338 339.ntf-mob-drawer-header { 340 display:flex; align-items:center; gap:8px; 341 padding:16px 20px 12px; 342 flex-shrink:0; 343 border-bottom:1px solid rgba(255,255,255,.05); 344} 345.ntf-mob-drawer-title { 346 font-size:17px; font-weight:700; 347 color:rgba(255,255,255,.92); 348 margin:0; flex:1; 349 letter-spacing:-.01em; 350} 351.ntf-mob-drawer-count { 352 display:inline-flex; align-items:center; justify-content:center; 353 min-width:24px; height:24px; padding:0 7px; 354 border-radius:999px; 355 background:rgba(var(--ntf-gold),.15); 356 border:1px solid rgba(var(--ntf-gold),.30); 357 color:rgba(var(--ntf-gold),.95); 358 font-size:12px; font-weight:700; 359 font-variant-numeric:tabular-nums; 360} 361.ntf-mob-drawer-close { 362 width:32px; height:32px; 363 border-radius:50%; 364 border:1px solid rgba(255,255,255,.08); 365 background:rgba(255,255,255,.04); 366 color:rgba(255,255,255,.55); 367 display:flex; align-items:center; justify-content:center; 368 cursor:pointer; 369 transition:all 150ms; 370 padding:0; 371} 372.ntf-mob-drawer-close:active { 373 background:rgba(var(--ntf-gold),.12); 374 border-color:rgba(var(--ntf-gold),.25); 375 color:rgba(var(--ntf-gold),.95); 376} 377 378.ntf-mob-drawer-list { 379 flex:1; 380 overflow-y:auto; 381 -webkit-overflow-scrolling:touch; 382 padding:12px; 383 padding-bottom:max(20px, env(safe-area-inset-bottom)); 384 display:flex; flex-direction:column; gap:8px; 385} 386 387/* Mobile Notification Card â Liquid Glass */ 388.ntf-mob-card { 389 position:relative; 390 display:flex; align-items:flex-start; gap:12px; 391 padding:14px; 392 border-radius:16px; 393 background: 394 linear-gradient(135deg, rgba(255,255,255,.03), rgba(255,255,255,.01) 50%, transparent), 395 rgba(24,30,26,.50); 396 border:1px solid rgba(255,255,255,.07); 397 text-decoration:none; 398 color:inherit; 399 transition:background 150ms, border-color 150ms, transform 150ms; 400} 401.ntf-mob-card:active { 402 background: 403 linear-gradient(135deg, rgba(255,255,255,.05), rgba(255,255,255,.01) 50%, transparent), 404 rgba(var(--ntf-gold),.08); 405 border-color:rgba(var(--ntf-gold),.20); 406 transform:scale(.98); 407} 408 409.ntf-mob-card-icon { 410 flex-shrink:0; width:40px; height:40px; 411 border-radius:10px; overflow:hidden; 412 box-shadow:0 2px 8px rgba(0,0,0,.30); 413 border:1px solid rgba(255,255,255,.06); 414} 415 416.ntf-mob-card-content { flex:1; min-width:0; } 417.ntf-mob-card-row1 { 418 display:flex; align-items:baseline; 419 justify-content:space-between; gap:8px; 420 margin-bottom:2px; 421} 422.ntf-mob-card-sender { 423 font-size:13px; font-weight:700; 424 color:rgba(255,255,255,.92); 425 white-space:nowrap; overflow:hidden; text-overflow:ellipsis; 426} 427.ntf-mob-card-time { 428 font-size:11px; color:rgba(255,255,255,.32); 429 white-space:nowrap; flex-shrink:0; 430 font-variant-numeric:tabular-nums; 431} 432.ntf-mob-card-project { 433 font-size:11px; font-weight:500; 434 color:rgba(var(--ntf-gold),.70); 435 margin-bottom:2px; 436 white-space:nowrap; overflow:hidden; text-overflow:ellipsis; 437} 438.ntf-mob-card-message { 439 font-size:12.5px; color:rgba(255,255,255,.55); 440 line-height:1.4; 441 display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; 442} 443 `})}function st(){const t=F(),r=V(),a=!!r;return t?!a&&(t.role==="team"||t.role==="admin")||a&&!!(r!=null&&r.team)?e.jsx(q,{}):e.jsxs(J,{children:[e.jsx(W,{}),e.jsx(Y,{}),e.jsx(te,{})]}):e.jsx("div",{style:{minHeight:"100vh",background:"#0a0a0f"}})}export{st as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.