.portal-shell{min-height:100svh;padding:6.5rem 0 3rem}.portal-narrow{max-width:620px;margin:auto}.portal-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem}.portal-header h1{margin:.25rem 0}.portal-panel,.portal-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.25rem;backdrop-filter:blur(16px)}.portal-grid{display:grid;gap:1rem}.portal-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.portal-form{display:grid;gap:1rem}.portal-form label{display:grid;gap:.4rem;color:var(--muted);font-size:.85rem}.portal-form input,.portal-form textarea,.portal-form select{width:100%;padding:.8rem;border:1px solid var(--line);border-radius:8px;background:#080e1b;color:var(--text);font:inherit}.portal-form textarea{min-height:110px;resize:vertical}.portal-form .actions{margin-top:.25rem}.portal-tabs{display:flex;gap:.5rem;margin-bottom:1.25rem}.portal-tabs button{border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--muted);padding:.55rem .75rem;cursor:pointer}.portal-tabs button.active{color:var(--text);border-color:var(--blue);background:#62a7ff12}.portal-stat{font-size:2rem;font-weight:800;color:var(--blue)}.portal-muted{color:var(--muted)}.portal-list{display:grid;gap:.7rem;padding:0;list-style:none}.portal-list li{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:.7rem}.progress{height:8px;border-radius:99px;background:#ffffff12;overflow:hidden}.progress span{display:block;height:100%;background:var(--blue);border-radius:inherit}.portal-message{padding:.7rem;border-radius:8px;background:#62a7ff12}.portal-message.staff{background:#ffffff0b}.portal-status{min-height:1.25rem;color:var(--muted)}
.portal-topbar{position:fixed;z-index:10;top:0;left:0;right:0;padding:.8rem 1.25rem;background:#070a13b8;border-bottom:1px solid var(--line);backdrop-filter:blur(18px)}.portal-topbar-inner{display:flex;align-items:center;justify-content:space-between;max-width:1120px;margin:auto}.portal-menu-toggle{width:42px;height:42px;border:1px solid #62a7ff55;border-radius:50%;background:#62a7ff16;color:var(--text);cursor:pointer;display:grid;place-content:center;gap:4px;transition:transform .25s,background .25s}.portal-menu-toggle span{display:block;width:16px;height:1px;background:currentColor;transition:transform .25s}.portal-menu-toggle[aria-expanded=true]{background:#62a7ff35;transform:rotate(90deg)}.portal-menu-panel{position:fixed;z-index:9;top:4.8rem;right:1rem;width:min(88vw,300px);padding:.65rem;border:1px solid #62a7ff55;border-radius:16px;background:#0c1a31dd;backdrop-filter:blur(24px);box-shadow:0 20px 60px #02061180;opacity:0;visibility:hidden;transform:translateY(-10px) scale(.98);transition:opacity .25s,transform .25s,visibility .25s}.portal-menu-panel.open{opacity:1;visibility:visible;transform:none}.portal-menu-panel a,.portal-menu-panel button{display:block;width:100%;padding:.85rem .9rem;border:0;border-radius:10px;background:transparent;color:var(--text);font:600 .84rem Manrope;text-align:left;text-decoration:none;cursor:pointer}.portal-menu-panel a:hover,.portal-menu-panel button:hover{background:#62a7ff20}.portal-page-title{margin:.25rem 0 0}.milestone{display:grid;grid-template-columns:1rem 1fr;gap:.75rem;align-items:start}.milestone-dot{width:.75rem;height:.75rem;margin-top:.3rem;border-radius:50%;background:var(--blue);box-shadow:0 0 16px #62a7ff}.milestone.pending .milestone-dot{background:#ffffff22;box-shadow:none}.chat-log{display:grid;gap:.65rem;min-height:18rem;max-height:55vh;overflow:auto;margin-bottom:1rem}.chat-bubble{max-width:88%;padding:.7rem .85rem;border-radius:14px;background:#62a7ff18}.chat-bubble.mine{justify-self:end;background:#62a7ff38}.chat-compose{display:grid;grid-template-columns:auto 1fr auto;gap:.5rem;align-items:end}.chat-compose textarea{min-height:44px!important}.icon-button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:#62a7ff15;color:var(--text);cursor:pointer}.file-preview{font-size:.75rem;color:var(--muted)}.portal-motion{position:fixed;z-index:-1;inset:0;overflow:hidden;pointer-events:none}.portal-motion i,.portal-motion b{position:absolute;display:block;border-radius:50%;filter:blur(1px);opacity:.22;will-change:transform}.portal-motion i{width:18rem;height:18rem;background:#176aff;animation:portalDrift 14s ease-in-out infinite}.portal-motion i:nth-child(1){top:-8rem;left:-6rem}.portal-motion i:nth-child(2){right:-7rem;bottom:5%;background:#6042ff;animation-delay:-6s}.portal-motion b{width:6px;height:6px;background:#8ebdff;animation:portalPulse 5s ease-in-out infinite}.portal-motion b:nth-child(3){top:30%;left:15%}.portal-motion b:nth-child(4){right:20%;bottom:28%;animation-delay:-2s}@keyframes portalDrift{50%{transform:translate3d(10vw,8vh,0) scale(1.18)}to{transform:translate3d(-4vw,14vh,0) scale(.92)}}@keyframes portalPulse{50%{opacity:.7;transform:scale(2)}}@media(max-width:480px){.portal-shell{padding-top:5.8rem}.portal-topbar{padding:.7rem .9rem}.portal-menu-panel{right:.7rem;top:4.35rem}.portal-card,.portal-panel{padding:1rem}.chat-compose{grid-template-columns:auto 1fr}.chat-compose .button{grid-column:1/-1;width:100%}}@media(prefers-reduced-motion:reduce){.portal-menu-toggle,.portal-menu-toggle span,.portal-menu-panel,.portal-motion *{animation:none;transition:none}}
.invoice-doc{display:grid;gap:.6rem;padding:1rem;margin-bottom:.9rem;border:1px solid var(--line);border-radius:12px;background:#080e1b}.invoice-doc-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:.6rem;border-bottom:1px solid var(--line)}.invoice-doc-brand{font-weight:800;font-size:.85rem;letter-spacing:.02em}.invoice-doc-number{font:700 .72rem "DM Mono",monospace;color:var(--muted)}.invoice-doc-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.5rem}.invoice-doc-meta span{display:flex;flex-direction:column;gap:.15rem;font-size:.62rem;color:var(--muted)}.invoice-doc-meta strong{color:var(--text);font-size:.78rem}.invoice-doc-items{width:100%;border-collapse:collapse;font-size:.75rem}.invoice-doc-items th,.invoice-doc-items td{padding:.5rem .1rem;text-align:left;border-bottom:1px solid var(--line)}.invoice-doc-items th:last-child,.invoice-doc-items td:last-child{text-align:right}.invoice-doc-totals{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:1rem;padding-top:.3rem}.invoice-doc-totals span{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem;font-size:.62rem;color:var(--muted)}.invoice-doc-totals strong{color:var(--text);font-size:.85rem}.invoice-doc-footer{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;padding-top:.6rem;border-top:1px solid var(--line)}.invoice-status{padding:.25rem .6rem;border-radius:99px;font:700 .62rem Manrope;text-transform:capitalize}.invoice-status-paid{background:#1f6b3f55;color:#8fe5ad}.invoice-status-pending{background:#6b5a1f55;color:#f0d383}.invoice-status-overdue{background:#6b1f1f55;color:#f09d9d}
.portal-topbar-actions{display:flex;align-items:center;gap:.55rem;margin-left:auto}
.portal-nova-toggle{display:grid;place-items:center;width:42px;height:42px;border:1px solid #62a7ff55;border-radius:50%;background:#62a7ff16;color:#dce9ff;font-size:1.3rem;cursor:pointer;transition:background .2s,transform .2s}
.portal-nova-toggle:hover{background:#62a7ff35;transform:translateY(-1px)}
.portal-topbar-brand{width:42px;height:42px;flex:0 0 42px}
.portal-topbar-brand .brand-name{display:none}
.portal-topbar-brand .brand-mark{animation:none}
.portal-nova-toggle{position:relative}
.portal-nova-toggle::after{content:"Chat with Nova";position:absolute;top:calc(100% + .45rem);right:0;z-index:20;padding:.4rem .6rem;border:1px solid #c9ddff40;border-radius:8px;background:#16223a;color:#eaf2ff;font:600 .68rem Manrope,Arial,sans-serif;white-space:nowrap;opacity:0;visibility:hidden;transform:translateY(-3px);transition:opacity .18s,transform .18s,visibility .18s;pointer-events:none}
.portal-nova-toggle:hover::after,.portal-nova-toggle:focus-visible::after{opacity:1;visibility:visible;transform:none}
.portal-menu-panel button[data-enable-notifications]::before{content:"";display:inline-block;width:.55rem;height:.55rem;margin-right:.55rem;border-radius:50%;background:#ff8585;box-shadow:0 0 8px #ff858577;vertical-align:middle}
.portal-menu-panel button[data-enable-notifications].notifications-enabled::before{background:#75e2a4;box-shadow:0 0 8px #75e2a477}
.portal-menu-panel button[data-enable-notifications]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid #ffffff12;background:#ffffff08;font-size:.76rem}
.portal-menu-panel button[data-enable-notifications]::after{content:"";width:.5rem;height:.5rem;flex:none;border-radius:50%;background:#9aa9bd}
.portal-menu-panel button[data-enable-notifications].notifications-enabled::after{background:#74d8aa;box-shadow:0 0 9px #74d8aa}
.portal-loading-overlay{position:fixed;z-index:3000;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#070a13ed;color:#f4f7ff;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;backdrop-filter:blur(12px)}
.portal-loading-overlay.visible{opacity:1;visibility:visible}
.portal-loading-overlay img{width:64px;height:64px;animation:portalLogoSpin 1.2s linear infinite}
.portal-loading-overlay span{font:600 .9rem Manrope;letter-spacing:.02em}
.chat-bubble a,.admin-bubble a{color:#b8d8ff;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.chat-bubble a:hover,.admin-bubble a:hover{color:#fff}
@keyframes portalLogoSpin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.portal-loading-overlay img{animation:none}.portal-loading-overlay{transition:none}}
