@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";
.portal-root{--portal-bg:#0a0a0f;--portal-surface:#111118;--portal-card:#16161f;--portal-card-hover:#1c1c28;--portal-border:#ffffff0f;--portal-border-hover:#ffffff1f;--portal-text:#e8e8ee;--portal-text-secondary:#8888a0;--portal-text-muted:#55556a;--portal-accent:#ffd053;--portal-accent-dim:#ffd05314;--portal-accent-glow:#ffd05326;--portal-teal:#55c9ca;--portal-teal-dim:#55c9ca14;--portal-coral:#e86b73;--portal-coral-dim:#e86b7314;--portal-green:#34d399;--portal-green-dim:#34d39914;--portal-blue:#60a5fa;--portal-blue-dim:#60a5fa14;--portal-font:"Outfit",-apple-system,BlinkMacSystemFont,sans-serif;--portal-radius:10px;--portal-radius-lg:16px;--portal-ease:cubic-bezier(.16,1,.3,1);font-family:var(--portal-font);background:var(--portal-bg);color:var(--portal-text);-webkit-font-smoothing:antialiased;min-height:100vh}.portal-auth{background:radial-gradient(at 50% 30%,#ffd05308 0%,#0000 60%);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.portal-auth__card{background:var(--portal-card);border:1px solid var(--portal-border);border-radius:var(--portal-radius-lg);text-align:center;width:100%;max-width:440px;animation:portalFadeIn .5s var(--portal-ease);padding:3rem 2.5rem}.portal-auth__logo{letter-spacing:-.03em;margin-bottom:.5rem;font-size:2rem;font-weight:700}.portal-auth__logo span{color:var(--portal-accent)}.portal-auth__subtitle{color:var(--portal-text-secondary);margin-bottom:2rem;font-size:.9rem;font-weight:300}.portal-auth__input-group{gap:.5rem;margin-bottom:1rem;display:flex}.portal-auth__input{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:var(--portal-radius);color:var(--portal-text);font-family:var(--portal-font);outline:none;flex:1;padding:.85rem 1rem;font-size:.9rem;transition:border-color .2s}.portal-auth__input:focus{border-color:var(--portal-accent)}.portal-auth__input::placeholder{color:var(--portal-text-muted)}.portal-auth__error{color:var(--portal-coral);background:var(--portal-coral-dim);border-radius:var(--portal-radius);margin-bottom:1rem;padding:.75rem;font-size:.8rem}.portal-btn{font-family:var(--portal-font);letter-spacing:.03em;border-radius:var(--portal-radius);cursor:pointer;transition:all .25s var(--portal-ease);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.85rem 1.5rem;font-size:.85rem;font-weight:500;display:inline-flex}.portal-btn--primary{background:var(--portal-accent);color:#0a0a0f}.portal-btn--primary:hover{background:#ffe080;transform:translateY(-1px);box-shadow:0 6px 20px #ffd05340}.portal-btn--primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.portal-btn--secondary{color:var(--portal-text);border:1px solid var(--portal-border);background:#ffffff0d}.portal-btn--secondary:hover{border-color:var(--portal-border-hover);background:#ffffff14}.portal-btn--ghost{color:var(--portal-text-secondary);background:0 0;padding:.5rem .75rem}.portal-btn--ghost:hover{color:var(--portal-accent)}.portal-btn--sm{padding:.5rem 1rem;font-size:.8rem}.portal-btn--approve{background:var(--portal-green-dim);color:var(--portal-green);border:1px solid #34d39933}.portal-btn--approve:hover{background:#34d39926}.portal-btn--revision{background:var(--portal-coral-dim);color:var(--portal-coral);border:1px solid #e86b7333}.portal-btn--revision:hover{background:#e86b7326}.portal-header{background:var(--portal-surface);border-bottom:1px solid var(--portal-border);z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;padding:1.25rem 2rem;display:flex;position:sticky;top:0}.portal-header__brand{align-items:center;gap:.75rem;display:flex}.portal-header__logo{letter-spacing:-.02em;font-size:1.2rem;font-weight:700}.portal-header__logo span{color:var(--portal-accent)}.portal-header__divider{background:var(--portal-border);width:1px;height:20px}.portal-header__client{color:var(--portal-text-secondary);font-size:.85rem;font-weight:400}.portal-header__actions{align-items:center;gap:.75rem;display:flex}.portal-nav{background:var(--portal-surface);border-bottom:1px solid var(--portal-border);gap:.25rem;padding:.75rem 2rem;display:flex;overflow-x:auto}.portal-nav__tab{color:var(--portal-text-secondary);border-radius:var(--portal-radius);transition:all .2s var(--portal-ease);white-space:nowrap;cursor:pointer;font-size:.85rem;font-weight:400;font-family:var(--portal-font);background:0 0;border:none;align-items:center;gap:.5rem;padding:.6rem 1.25rem;display:flex}.portal-nav__tab:hover{color:var(--portal-text);background:#ffffff0a}.portal-nav__tab.active{color:var(--portal-accent);background:var(--portal-accent-dim);font-weight:500}.portal-nav__badge{background:#ffffff0f;border-radius:100px;padding:.1rem .5rem;font-size:.7rem;font-weight:500}.portal-nav__tab.active .portal-nav__badge{background:var(--portal-accent-glow);color:var(--portal-accent)}.portal-content{max-width:1400px;animation:portalFadeIn .3s var(--portal-ease);margin:0 auto;padding:2rem}.portal-stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.portal-stat{background:var(--portal-card);border:1px solid var(--portal-border);border-radius:var(--portal-radius);padding:1.25rem 1.5rem;transition:border-color .2s}.portal-stat:hover{border-color:var(--portal-border-hover)}.portal-stat__label{color:var(--portal-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem;font-size:.75rem}.portal-stat__value{letter-spacing:-.02em;font-size:1.75rem;font-weight:600}.portal-stat__value--accent{color:var(--portal-accent)}.portal-stat__value--teal{color:var(--portal-teal)}.portal-stat__value--green{color:var(--portal-green)}.portal-stat__value--coral{color:var(--portal-coral)}.portal-section{margin-bottom:2rem}.portal-section__header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.portal-section__title{letter-spacing:-.01em;font-size:1.1rem;font-weight:600}.portal-cards{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;display:grid}.portal-card{background:var(--portal-card);border:1px solid var(--portal-border);border-radius:var(--portal-radius);transition:all .2s var(--portal-ease);cursor:pointer;padding:1.5rem}.portal-card:hover{background:var(--portal-card-hover);border-color:var(--portal-border-hover);transform:translateY(-1px)}.portal-card__title{margin-bottom:.5rem;font-size:1rem;font-weight:600}.portal-card__meta{color:var(--portal-text-secondary);flex-wrap:wrap;gap:.75rem;margin-bottom:.75rem;font-size:.8rem;display:flex}.portal-card__meta span{align-items:center;gap:.3rem;display:flex}.portal-progress{background:#ffffff0f;border-radius:3px;width:100%;height:6px;margin-top:.75rem;overflow:hidden}.portal-progress__fill{background:linear-gradient(90deg,var(--portal-accent),var(--portal-teal));height:100%;transition:width .5s var(--portal-ease);border-radius:3px}.portal-badge{letter-spacing:.03em;text-transform:uppercase;border-radius:100px;align-items:center;gap:.4rem;padding:.2rem .65rem;font-size:.7rem;font-weight:500;display:inline-flex}.portal-badge__dot{border-radius:50%;width:6px;height:6px;animation:2s infinite portalDotPulse}.portal-badge--approved{background:var(--portal-green-dim);color:var(--portal-green)}.portal-badge--approved .portal-badge__dot{background:var(--portal-green)}.portal-badge--pending{background:var(--portal-accent-dim);color:var(--portal-accent)}.portal-badge--pending .portal-badge__dot{background:var(--portal-accent)}.portal-badge--revision{background:var(--portal-coral-dim);color:var(--portal-coral)}.portal-badge--revision .portal-badge__dot{background:var(--portal-coral)}.portal-badge--sent{background:var(--portal-blue-dim);color:var(--portal-blue)}.portal-badge--sent .portal-badge__dot{background:var(--portal-blue)}.portal-badge--draft{color:var(--portal-text-muted);background:#ffffff0a}.portal-badge--draft .portal-badge__dot{background:var(--portal-text-muted)}.portal-badge--paid{background:var(--portal-green-dim);color:var(--portal-green)}.portal-badge--paid .portal-badge__dot{background:var(--portal-green)}.portal-badge--overdue{background:var(--portal-coral-dim);color:var(--portal-coral)}.portal-badge--overdue .portal-badge__dot{background:var(--portal-coral)}.portal-badge--accepted{background:var(--portal-green-dim);color:var(--portal-green)}.portal-badge--accepted .portal-badge__dot{background:var(--portal-green)}.portal-badge--rejected{background:var(--portal-coral-dim);color:var(--portal-coral)}.portal-badge--rejected .portal-badge__dot{background:var(--portal-coral)}.portal-badge--expired{color:var(--portal-text-muted);background:#ffffff0a}.portal-badge--expired .portal-badge__dot{background:var(--portal-text-muted)}.portal-badge--in_review{background:var(--portal-blue-dim);color:var(--portal-blue)}.portal-badge--in_review .portal-badge__dot{background:var(--portal-blue)}.portal-badge--cancelled{color:var(--portal-text-muted);background:#ffffff0a}.portal-badge--cancelled .portal-badge__dot{background:var(--portal-text-muted)}.portal-table-wrapper{border-radius:var(--portal-radius);border:1px solid var(--portal-border);overflow-x:auto}.portal-table{border-collapse:collapse;width:100%;font-size:.85rem}.portal-table th{background:var(--portal-surface);text-align:left;color:var(--portal-text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--portal-border);padding:.75rem 1rem;font-size:.75rem;font-weight:500}.portal-table td{border-bottom:1px solid var(--portal-border);color:var(--portal-text);padding:.85rem 1rem}.portal-table tr:last-child td{border-bottom:none}.portal-table tr:hover td{background:#ffffff05}.portal-table__amount{font-variant-numeric:tabular-nums;font-weight:600}.portal-detail{background:var(--portal-card);border:1px solid var(--portal-border);border-radius:var(--portal-radius-lg);animation:portalSlideIn .3s var(--portal-ease);padding:2rem}.portal-detail__header{border-bottom:1px solid var(--portal-border);justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;padding-bottom:1.5rem;display:flex}.portal-detail__back{color:var(--portal-text-secondary);cursor:pointer;font-size:.85rem;font-family:var(--portal-font);background:0 0;border:none;align-items:center;gap:.4rem;margin-bottom:.75rem;transition:color .2s;display:flex}.portal-detail__back:hover{color:var(--portal-accent)}.portal-shots{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.portal-shot{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:var(--portal-radius);transition:all .2s var(--portal-ease);overflow:hidden}.portal-shot:hover{border-color:var(--portal-border-hover)}.portal-shot__preview{aspect-ratio:16/9;background:var(--portal-bg);color:var(--portal-text-muted);border-bottom:1px solid var(--portal-border);justify-content:center;align-items:center;font-size:2rem;display:flex}.portal-shot__preview img{object-fit:cover;width:100%;height:100%}.portal-shot__body{padding:1rem}.portal-shot__title{margin-bottom:.25rem;font-size:.9rem;font-weight:600}.portal-shot__scene{color:var(--portal-text-secondary);margin-bottom:.5rem;font-size:.8rem}.portal-shot__desc{color:var(--portal-text-muted);margin-bottom:.75rem;font-size:.8rem;line-height:1.5}.portal-shot__actions{gap:.5rem;display:flex}.portal-comments{border-top:1px solid var(--portal-border);margin-top:1.5rem;padding-top:1.5rem}.portal-comments__title{align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.9rem;font-weight:600;display:flex}.portal-comment{background:var(--portal-surface);border-radius:var(--portal-radius);gap:.75rem;margin-bottom:1rem;padding:.75rem;display:flex}.portal-comment__avatar{background:var(--portal-accent-dim);width:32px;height:32px;color:var(--portal-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.portal-comment__body{flex:1}.portal-comment__author{margin-bottom:.25rem;font-size:.8rem;font-weight:500}.portal-comment__text{color:var(--portal-text-secondary);font-size:.8rem;line-height:1.5}.portal-comment__time{color:var(--portal-text-muted);margin-top:.25rem;font-size:.7rem}.portal-comment-form{gap:.5rem;margin-top:.75rem;display:flex}.portal-comment-form input{background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:var(--portal-radius);color:var(--portal-text);font-family:var(--portal-font);outline:none;flex:1;padding:.6rem .85rem;font-size:.8rem}.portal-comment-form input:focus{border-color:var(--portal-accent)}.portal-empty{text-align:center;color:var(--portal-text-muted);padding:3rem 2rem}.portal-empty__icon{opacity:.4;margin-bottom:1rem;font-size:3rem}.portal-empty__text{font-size:.9rem}.portal-loading{justify-content:center;align-items:center;padding:4rem;display:flex}.portal-spinner{border:2px solid var(--portal-border);border-top-color:var(--portal-accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite portalSpin}.portal-statement{background:var(--portal-card);border:1px solid var(--portal-border);border-radius:var(--portal-radius-lg);padding:2rem}.portal-statement__header{border-bottom:1px solid var(--portal-border);justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.portal-statement__summary{grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-bottom:1.5rem;display:grid}.portal-statement__item{text-align:center}.portal-statement__item-label{text-transform:uppercase;letter-spacing:.05em;color:var(--portal-text-muted);margin-bottom:.3rem;font-size:.75rem}.portal-statement__item-value{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600}@keyframes portalFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes portalSlideIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes portalSpin{to{transform:rotate(360deg)}}@keyframes portalDotPulse{0%,to{opacity:1}50%{opacity:.4}}@media (max-width:768px){.portal-header{flex-wrap:wrap;gap:.75rem;padding:1rem}.portal-nav{padding:.5rem 1rem}.portal-content{padding:1rem}.portal-stats{grid-template-columns:repeat(2,1fr)}.portal-cards,.portal-shots{grid-template-columns:1fr}.portal-statement__summary{grid-template-columns:1fr;gap:.75rem}.portal-detail{padding:1.25rem}}@media (max-width:480px){.portal-stats{grid-template-columns:1fr}.portal-header__client,.portal-header__divider{display:none}}
