.portal-root{background:var(--color-bg-primary);min-height:100dvh}.portal-auth{min-height:100dvh;padding:var(--space-6);background:radial-gradient(ellipse at top, #3b82f626 0%, transparent 50%), var(--color-bg-primary);place-items:center;display:grid}.portal-auth__card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:440px;padding:var(--space-10) var(--space-8);box-shadow:var(--shadow-lg)}.portal-auth__brand{align-items:center;gap:var(--space-2);margin-bottom:var(--space-8);font-weight:var(--font-weight-bold);color:var(--color-text-primary);font-size:var(--text-lg);letter-spacing:-.02em;display:flex}.portal-auth__brand-dot{border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--color-accent), #6366f1);color:#fff;place-items:center;width:28px;height:28px;font-size:14px;font-weight:700;display:grid}.portal-auth h1{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-2);letter-spacing:-.02em}.portal-auth p{color:var(--color-text-secondary);margin-bottom:var(--space-6);font-size:var(--text-sm);line-height:var(--leading-normal)}.field{gap:var(--space-2);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.input,.textarea,.select{width:100%;padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:inherit;font-size:var(--text-base);transition:border-color var(--transition-fast)}.input:focus,.textarea:focus,.select:focus{border-color:var(--color-accent);outline:none}.textarea{resize:vertical;min-height:120px;line-height:var(--leading-normal)}.input--otp{font-family:var(--font-mono);font-size:var(--text-2xl);text-align:center;letter-spacing:.4em;padding-left:.4em}.help-text{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.error-text{font-size:var(--text-sm);color:#ef4444;margin-top:var(--space-2)}.portal-layout{min-height:calc(100dvh - var(--header-height,0px));grid-template-columns:240px 1fr;display:grid}@media (max-width:900px){.portal-layout{grid-template-columns:1fr}}.portal-sidebar{background:var(--color-bg-secondary);border-right:1px solid var(--color-border);padding:var(--space-6) var(--space-4);gap:var(--space-2);flex-direction:column;height:100dvh;display:flex;position:sticky;top:0}@media (max-width:900px){.portal-sidebar{border-right:none;border-bottom:1px solid var(--color-border);height:auto;padding:var(--space-3) var(--space-4);align-items:center;gap:var(--space-3);flex-direction:row;position:static;overflow-x:auto}}.portal-sidebar__role{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2)}@media (max-width:900px){.portal-sidebar__role{flex-shrink:0;margin-bottom:0;padding:0}}.portal-sidebar__nav{gap:var(--space-1);flex-direction:column;display:flex}@media (max-width:900px){.portal-sidebar__nav{gap:var(--space-1);scrollbar-width:none;flex-direction:row;flex:1;overflow-x:auto}.portal-sidebar__nav::-webkit-scrollbar{display:none}}.portal-nav-link{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast);text-decoration:none;display:flex}.portal-nav-link:hover{background:var(--color-bg-card);color:var(--color-text-primary)}.portal-nav-link.is-active{background:var(--color-accent-muted);color:var(--color-accent-hover)}@media (max-width:900px){.portal-nav-link{padding:var(--space-2) var(--space-3)}}.portal-sidebar__footer{padding-top:var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-xs);color:var(--color-text-muted);margin-top:auto}@media (max-width:900px){.portal-sidebar__footer{border-top:none;border-left:1px solid var(--color-border);padding-top:0;padding-left:var(--space-3);align-items:center;gap:var(--space-3);flex-shrink:0;margin-top:0;margin-left:auto;display:flex}}.portal-sidebar__user{margin-bottom:var(--space-2)}.portal-sidebar__user-email{color:var(--color-text-primary);font-weight:500;font-size:var(--text-sm);word-break:break-all}@media (max-width:900px){.portal-sidebar__user{display:none}}.portal-main{padding:var(--space-8) var(--space-10);min-width:0;max-width:100%;min-height:calc(100dvh - var(--header-height,0px));flex-direction:column;display:flex}@media (max-width:900px){.portal-main{padding:var(--space-6) var(--space-4)}}.portal-main:has(.job-page){height:calc(100dvh - var(--header-height,0px));min-height:0;overflow:hidden}@media (max-width:900px){.portal-main:has(.job-page){height:auto;min-height:calc(100dvh - var(--header-height,0px));overflow:visible}}body:has(.portal-root) .footer{display:none}.portal-page-head{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8);flex-wrap:wrap;display:flex}.portal-page-head h1{font-size:var(--text-3xl);font-weight:var(--font-weight-bold);letter-spacing:-.02em}.job-list{gap:var(--space-3);display:grid}.job-card{gap:var(--space-3) var(--space-6);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);color:inherit;transition:all var(--transition-fast);grid-template-columns:1fr auto;text-decoration:none;display:grid}.job-card:hover{border-color:var(--color-border-hover);background:var(--color-bg-card-hover)}.job-card__title{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.job-card__meta{font-size:var(--text-sm);color:var(--color-text-muted);gap:var(--space-3);flex-wrap:wrap;display:flex}.empty-state{text-align:center;padding:var(--space-16) var(--space-6);border:1px dashed var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-secondary)}.empty-state h3{color:var(--color-text-primary);margin-bottom:var(--space-2)}.pill{border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;align-items:center;padding:4px 10px;display:inline-flex}.pill--draft{color:var(--color-text-secondary);background:#a0a0b826}.pill--pending_payment{color:var(--color-warning);background:#f59e0b26}.pill--paid,.pill--in_progress{color:var(--color-accent-hover);background:#3b82f626}.pill--delivered,.pill--closed{color:var(--color-success);background:#22c55e26}.pill--cancelled,.pill--refunded{color:#f87171;background:#ef444426}.chat-thread{gap:var(--space-4);padding:var(--space-2) 0;flex-direction:column;display:flex}.chat-message{gap:var(--space-2);flex-direction:column;max-width:80%;display:flex}.chat-message--mine{align-self:flex-end;align-items:flex-end}.chat-message--other{align-self:flex-start}.chat-message--system{font-size:var(--text-xs);color:var(--color-text-muted);padding:var(--space-2) var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-full);border:1px solid var(--color-border);align-self:center}.chat-message__bubble{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);line-height:var(--leading-normal);white-space:pre-wrap;word-break:break-word}.chat-message--mine .chat-message__bubble{background:var(--color-accent);color:#fff;border-bottom-right-radius:var(--radius-sm)}.chat-message--other .chat-message__bubble{background:var(--color-bg-card);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm)}.chat-message__meta{font-size:var(--text-xs);color:var(--color-text-muted);gap:var(--space-2);align-items:center;display:flex}.attachment-list{gap:var(--space-2);flex-direction:column;width:100%;display:flex}.attachment{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);gap:var(--space-2);flex-direction:column;display:flex}.chat-message--mine .attachment{background:#ffffff1a;border-color:#fff3}.attachment__head{align-items:center;gap:var(--space-3);font-size:var(--text-sm);display:flex}.attachment__name{font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.attachment__size{font-size:var(--text-xs);color:var(--color-text-muted)}.attachment img{border-radius:var(--radius-md);max-width:100%;max-height:320px;display:block}.attachment audio{width:100%}.composer{gap:var(--space-3);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);margin-top:var(--space-6);flex-direction:column;display:flex}.composer--closed{text-align:center;color:var(--color-text-muted);font-size:var(--text-sm);padding:var(--space-5);background:var(--color-bg-secondary)}.composer__pending{gap:var(--space-2);flex-wrap:wrap;display:flex}.composer__pending-pill{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-xs);align-items:center;gap:var(--space-2);padding:4px 10px 4px 12px;display:inline-flex}.composer__pending-pill button{color:var(--color-text-muted);cursor:pointer;font-size:var(--text-base);background:0 0;border:0;padding:0;line-height:1}.composer__row{gap:var(--space-2);align-items:flex-end;display:flex}.composer__row .textarea{resize:vertical;flex:1;min-height:56px;max-height:200px}.job-page{gap:var(--space-4);min-height:0;margin:calc(var(--space-8) * -1) calc(var(--space-10) * -1);padding:var(--space-6) var(--space-8) 0;flex-direction:column;flex:auto;display:flex}.job-page>.chat-thread{overscroll-behavior:contain;min-height:0;padding:var(--space-2) var(--space-1) var(--space-4);scroll-padding-bottom:var(--space-4);flex:auto;overflow-y:auto}.job-page>.composer{margin-top:0;margin-bottom:var(--space-6);bottom:var(--space-6);flex-shrink:0;position:sticky}.job-page>.composer--closed{position:static}@media (max-width:900px){.job-page{margin:calc(var(--space-6) * -1) calc(var(--space-4) * -1);padding:var(--space-4) var(--space-4) 0;gap:var(--space-3)}.job-page>.chat-thread{padding:var(--space-2) 0 var(--space-3)}.job-page>.composer{margin-bottom:0;margin-left:calc(var(--space-4) * -1);margin-right:calc(var(--space-4) * -1);padding-left:var(--space-4);padding-right:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));border-bottom:0;border-left:0;border-right:0;border-radius:0;position:sticky;bottom:0}}.job-header{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-shrink:0;display:flex}.job-header__main{flex:auto;min-width:0}.job-header h1{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-2);line-height:var(--leading-tight,1.15);word-break:break-word}.job-header__aside{align-items:flex-end;gap:var(--space-2);flex-direction:column;flex-shrink:0;display:flex}@media (max-width:700px){.job-header{padding:var(--space-4) var(--space-4);gap:var(--space-3);flex-direction:column}.job-header__aside{flex-flow:wrap;align-self:flex-start;align-items:center}.job-header h1{font-size:var(--text-xl)}}.job-header__meta{gap:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted);flex-wrap:wrap;display:flex}.btn-block{width:100%}.btn--ghost{color:var(--color-text-secondary);background:0 0}.btn--ghost:hover{color:var(--color-text-primary);background:var(--color-bg-card)}.btn--small{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.type-grid{gap:var(--space-3);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.type-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);cursor:pointer;text-align:left;color:var(--color-text-primary);transition:all var(--transition-fast)}.type-card:hover{border-color:var(--color-border-hover)}.type-card.is-active{border-color:var(--color-accent);background:var(--color-accent-muted)}.type-card h3{font-size:var(--text-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.type-card p{font-size:var(--text-sm);color:var(--color-text-muted)}.package-grid{gap:var(--space-3);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.package-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);text-align:center;cursor:pointer;transition:all var(--transition-fast)}.package-card:hover{border-color:var(--color-border-hover)}.package-card.is-active{border-color:var(--color-accent);background:var(--color-accent-muted)}.package-card__name{font-size:var(--text-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2)}.package-card__price{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-1)}.package-card__hint{font-size:var(--text-xs);color:var(--color-text-muted)}.spinner{vertical-align:middle;border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.callout{background:var(--color-accent-muted);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-6);font-size:var(--text-sm);color:var(--color-text-primary)}.callout strong{margin-bottom:var(--space-2);font-weight:var(--font-weight-semibold);display:block}.callout ul{padding-left:var(--space-5);gap:var(--space-2);color:var(--color-text-muted);flex-direction:column;margin:0;display:flex}.callout li strong{color:var(--color-text-primary);margin:0;display:inline}.pack-mode-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));display:grid}.field-row{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.toggle-group{gap:var(--space-2);flex-wrap:wrap;display:flex}.toggle-group__btn{background:var(--color-bg-card);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast)}.toggle-group__btn:hover{border-color:var(--color-border-hover);color:var(--color-text-primary)}.toggle-group__btn.is-active{background:var(--color-accent-muted);border-color:var(--color-accent);color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.req{color:var(--color-accent)}.song-brief-list{gap:var(--space-3);margin-top:var(--space-4);flex-direction:column;display:flex}.song-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.song-card.is-open{border-color:var(--color-border-hover)}.song-card__head{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-4) var(--space-5);color:var(--color-text-primary);font-size:var(--text-base);font-weight:var(--font-weight-semibold);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.song-card__head:hover{background:var(--color-bg-elevated,#ffffff05)}.song-card__title{flex:1}.song-card__chev{color:var(--color-text-muted);font-size:var(--text-sm)}.song-card__body{padding:0 var(--space-5) var(--space-4);border-top:1px solid var(--color-border)}.song-card__body .field:first-child{margin-top:var(--space-4)}.request-brief{background:var(--color-bg-card);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-lg);overflow:hidden}.request-brief__head{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-5);color:var(--color-text-primary);font-size:var(--text-sm);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.request-brief__head:hover{background:var(--color-bg-elevated,#ffffff05)}.request-brief__head strong{font-weight:var(--font-weight-semibold)}.request-brief__sub{color:var(--color-text-muted);font-size:var(--text-xs)}.request-brief__chev{color:var(--color-text-muted)}.request-brief__body{padding:var(--space-4) var(--space-5) var(--space-5);border-top:1px solid var(--color-border);gap:var(--space-5);flex-direction:column;display:flex}.brief-section{gap:var(--space-1);flex-direction:column;display:flex}.brief-section__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);font-weight:var(--font-weight-semibold)}.brief-text{font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-primary);white-space:pre-wrap;word-break:break-word}.brief-text--mono{font-family:var(--font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);font-size:var(--text-xs);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3)}.brief-link{color:var(--color-accent);word-break:break-all;text-decoration:underline}.brief-songs{gap:var(--space-4);flex-direction:column;display:flex}.brief-song{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.brief-song__head{align-items:center;gap:var(--space-2);font-weight:var(--font-weight-semibold);display:flex}.brief-song__index{background:var(--color-accent);color:#fff;width:22px;height:22px;font-size:var(--text-xs);font-weight:var(--font-weight-bold);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.brief-song__title{font-size:var(--text-base)}.brief-grid{gap:var(--space-2) var(--space-4);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0;display:grid}.brief-grid__row{flex-direction:column;gap:2px;display:flex}.brief-grid dt{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);font-weight:var(--font-weight-semibold)}.brief-grid dd{font-size:var(--text-sm);color:var(--color-text-primary);margin:0}.modal-backdrop{padding:var(--space-4);z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);width:100%;max-width:480px;box-shadow:0 24px 64px #0009}.modal__title{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);margin:0 0 var(--space-2)}.modal__lead{color:var(--color-text-muted);font-size:var(--text-sm);margin:0 0 var(--space-3)}.modal__list{margin:0 0 var(--space-5);padding-left:var(--space-5);gap:var(--space-2);font-size:var(--text-sm);flex-direction:column;display:flex}.modal__actions{justify-content:flex-end;gap:var(--space-2);display:flex}
