.portal-dashboard{max-width:1200px;margin:0 auto;padding:24px 16px}.portal-welcome{margin-bottom:24px}.portal-welcome h2{font-size:24px;font-weight:600;margin:0 0 4px;color:var(--text-primary, #1a1a2e)}.portal-date{font-size:14px;color:var(--text-secondary, #666);margin:0}.portal-notifications-banner{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--warning-bg, #fff8e1);border:1px solid var(--warning-border, #ffc107);border-radius:8px;margin-bottom:20px;font-size:14px}.notification-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;background:var(--warning-color, #f57c00);color:#fff;border-radius:12px;font-size:13px;font-weight:600}.portal-dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}@media(max-width:768px){.portal-dashboard-grid{grid-template-columns:1fr}}.portal-card{background:var(--card-bg, #fff);border:1px solid var(--border-color, #e0e0e0);border-radius:12px;overflow:hidden;transition:box-shadow .2s}.portal-card:hover{box-shadow:0 2px 12px #00000014}.portal-card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border-light, #f0f0f0)}.portal-card-header h3{font-size:16px;font-weight:600;margin:0;color:var(--text-primary, #1a1a2e)}.portal-card-body{padding:16px 20px}.portal-list-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border-light, #f5f5f5);cursor:pointer;transition:background .15s}.portal-list-item:last-child{border-bottom:none}.portal-list-item:hover{background:var(--hover-bg, #f8f9fa);margin:0 -20px;padding:10px 20px}.item-label{flex:1;font-size:14px;font-weight:500;color:var(--text-primary, #1a1a2e)}.item-value{font-size:14px;font-weight:600;color:var(--text-primary, #1a1a2e)}.item-status{font-size:12px;padding:2px 8px;border-radius:4px;font-weight:500;text-transform:capitalize}.status-pending_approval,.status-pending-approval{background:var(--warning-bg, #fff8e1);color:var(--warning-color, #f57c00)}.status-revision_requested,.status-revision-requested{background:#fff3e0;color:#e65100}.status-approved{background:var(--success-bg, #e8f5e9);color:var(--success-color, #2e7d32)}.status-pending{background:var(--warning-bg, #fff8e1);color:var(--warning-color, #f57c00)}.status-in_production,.status-in-production{background:#e3f2fd;color:#1565c0}.status-completed{background:var(--success-bg, #e8f5e9);color:var(--success-color, #2e7d32)}.status-shipped{background:#e8eaf6;color:#283593}.status-delivered{background:var(--success-bg, #e8f5e9);color:var(--success-color, #2e7d32)}.balance-amount{font-size:32px;font-weight:700;margin-bottom:8px}.balance-due{color:var(--danger-color, #c62828)}.balance-zero{color:var(--success-color, #2e7d32)}.balance-detail{font-size:13px;color:var(--text-secondary, #666);margin:0 0 12px}.portal-quick-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.portal-action-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;background:var(--bg-subtle, #f8f9fa);border:1px solid var(--border-color, #e0e0e0);border-radius:8px;cursor:pointer;transition:all .15s;font-size:13px;color:var(--text-primary, #1a1a2e)}.portal-action-btn:hover{background:var(--primary-light, #e3f2fd);border-color:var(--primary-color, #1565c0)}.action-icon{font-size:24px}.portal-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px}.portal-modal{background:var(--card-bg, #fff);border-radius:12px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #00000026}.portal-modal-lg{max-width:800px}.portal-modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e0e0e0)}.portal-modal .modal-header h3{font-size:18px;font-weight:600;margin:0;color:var(--text-primary, #1a1a2e)}.portal-modal .modal-body{padding:20px 24px}.portal-modal .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e0e0e0)}.btn-close{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary, #666);padding:0;line-height:1}.btn-close:hover{color:var(--text-primary, #1a1a2e)}.portal-table{width:100%;border-collapse:collapse;font-size:14px;margin:12px 0}.portal-table thead th{text-align:left;padding:10px 12px;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary, #666);border-bottom:2px solid var(--border-color, #e0e0e0)}.portal-table tbody td{padding:10px 12px;border-bottom:1px solid var(--border-light, #f0f0f0);color:var(--text-primary, #1a1a2e)}.portal-table tfoot td{padding:12px;border-top:2px solid var(--border-color, #e0e0e0)}.row-overdue{background:#fff5f5}.text-center{text-align:center}.text-right{text-align:right}.portal-order-history{max-width:1200px;margin:0 auto;padding:24px 16px}.portal-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.portal-section-header h2{font-size:20px;font-weight:600;margin:0}.portal-filters select{padding:8px 12px;border:1px solid var(--border-color, #e0e0e0);border-radius:6px;font-size:14px;background:var(--card-bg, #fff)}.portal-orders-list{display:flex;flex-direction:column;gap:16px}.portal-order-card{background:var(--card-bg, #fff);border:1px solid var(--border-color, #e0e0e0);border-radius:10px;overflow:hidden;transition:box-shadow .2s}.portal-order-card:hover{box-shadow:0 2px 8px #0000000f}.order-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--bg-subtle, #f8f9fa);border-bottom:1px solid var(--border-light, #f0f0f0)}.order-number{font-weight:600;font-size:15px}.order-status{font-size:12px;padding:3px 10px;border-radius:4px;font-weight:500}.order-card-body{display:flex;gap:24px;padding:12px 20px;font-size:14px;color:var(--text-secondary, #666)}.order-total{font-weight:600;color:var(--text-primary, #1a1a2e)}.order-card-items{padding:0 20px 12px}.order-item-row{display:flex;gap:12px;padding:6px 0;font-size:13px;border-bottom:1px solid var(--border-light, #f5f5f5)}.order-item-row:last-child{border-bottom:none}.item-desc{flex:1;color:var(--text-secondary, #666)}.item-qty,.item-price{color:var(--text-primary, #1a1a2e);font-weight:500}.order-item-more{font-size:12px;color:var(--text-muted, #999);padding-top:4px}.order-card-actions{display:flex;gap:8px;padding:12px 20px;border-top:1px solid var(--border-light, #f0f0f0)}.order-detail-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px;background:var(--bg-subtle, #f8f9fa);border-radius:8px;padding:16px}.tracking-info{background:var(--bg-subtle, #f8f9fa);padding:16px;border-radius:8px;margin-bottom:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.tracking-timeline{display:flex;align-items:flex-start;gap:0;padding:24px 0;position:relative}.timeline-step{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.timeline-step:before{content:"";position:absolute;top:12px;left:0;right:0;height:2px;background:var(--border-color, #e0e0e0);z-index:0}.timeline-step:first-child:before{left:50%}.timeline-step:last-child:before{right:50%}.timeline-step.completed:before{background:var(--success-color, #2e7d32)}.timeline-dot{width:24px;height:24px;border-radius:50%;background:var(--border-color, #e0e0e0);border:3px solid var(--card-bg, #fff);position:relative;z-index:1;margin-bottom:8px}.timeline-step.completed .timeline-dot{background:var(--success-color, #2e7d32)}.timeline-step.active .timeline-dot{background:var(--primary-color, #1565c0);box-shadow:0 0 0 4px #1565c033}.timeline-label{font-size:12px;text-align:center;color:var(--text-secondary, #666)}.timeline-step.completed .timeline-label{color:var(--success-color, #2e7d32);font-weight:500}.timeline-step.active .timeline-label{color:var(--primary-color, #1565c0);font-weight:600}.estimate-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;background:var(--bg-subtle, #f8f9fa);padding:16px;border-radius:8px;margin-bottom:16px;font-size:14px}.estimate-notes{margin:16px 0;padding:12px;background:var(--bg-subtle, #f8f9fa);border-radius:6px;font-size:14px}.estimate-pdf-link{margin:12px 0}.file-upload-zone{border:2px dashed var(--border-color, #ccc);border-radius:12px;padding:40px 20px;text-align:center;transition:all .2s;background:var(--bg-subtle, #fafafa);cursor:pointer}.file-upload-zone.drag-over{border-color:var(--primary-color, #1565c0);background:var(--primary-light, #e3f2fd)}.upload-icon{font-size:48px;margin-bottom:12px}.upload-hint{font-size:12px;color:var(--text-muted, #999);margin-top:12px}.btn-upload{cursor:pointer}.upload-file-row{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-subtle, #f8f9fa);border-radius:6px;margin-top:8px}.file-name{flex:1;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-size:13px;color:var(--text-secondary, #666)}.upload-fields{margin-top:16px}.upload-fields label{display:block;font-size:13px;font-weight:500;margin:12px 0 4px;color:var(--text-primary, #1a1a2e)}.payment-summary{display:flex;gap:24px;padding:20px;background:var(--bg-subtle, #f8f9fa);border-radius:10px;margin-bottom:20px}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-label{font-size:13px;color:var(--text-secondary, #666)}.summary-value{font-size:24px;font-weight:700}.payment-form .form-group{margin-bottom:16px}.payment-form label{display:block;font-size:14px;margin-bottom:4px}.form-hint{font-size:12px;color:var(--text-muted, #999);margin:4px 0 0}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:14px;font-weight:500;margin-bottom:6px;color:var(--text-primary, #1a1a2e)}.notification-item{padding:12px;border-bottom:1px solid var(--border-light, #f0f0f0)}.notification-item.unread{background:var(--primary-light, #e3f2fd);border-left:3px solid var(--primary-color, #1565c0)}.notification-title{font-weight:600;font-size:14px;margin-bottom:4px}.notification-message{font-size:13px;color:var(--text-secondary, #666);margin-bottom:4px}.notification-time{font-size:12px;color:var(--text-muted, #999)}.saved-item-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border-light, #f0f0f0)}.saved-item-row:last-child{border-bottom:none}.saved-item-name{font-weight:500;font-size:14px}.saved-item-desc{font-size:13px;color:var(--text-secondary, #666)}.saved-item-date{font-size:12px;color:var(--text-muted, #999)}.saved-item-actions{display:flex;gap:8px}.reorder-options{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.reorder-option-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;background:var(--bg-subtle, #f8f9fa);border:2px solid var(--border-color, #e0e0e0);border-radius:12px;cursor:pointer;transition:all .2s;text-align:center}.reorder-option-card:hover{border-color:var(--primary-color, #1565c0);background:var(--primary-light, #e3f2fd)}.reorder-option-card h4{margin:0;font-size:16px}.reorder-option-card p{font-size:13px;color:var(--text-secondary, #666);margin:0}.reorder-intro{font-size:14px;color:var(--text-secondary, #666);margin-bottom:16px}.reorder-table .input-sm{width:100px;padding:6px 8px;text-align:center}.recalc-status{font-size:13px;color:var(--primary-color, #1565c0);padding:8px;text-align:center;font-style:italic}.reorder-fields{margin-top:20px;display:grid;gap:16px}.reorder-note{font-size:13px;color:var(--text-muted, #999);font-style:italic;margin-top:16px}.signature-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--border-color, #e0e0e0)}.signature-section h4{margin:0 0 4px}.signature-hint{font-size:13px;color:var(--text-secondary, #666);margin:0 0 16px}.signature-pad-wrapper{display:flex;flex-direction:column;gap:8px}.signature-pad-container{position:relative;background:#fff;border:2px solid var(--border-color, #ccc);border-radius:8px;overflow:hidden}.signature-canvas{display:block;width:100%;max-width:500px;height:200px;cursor:crosshair;touch-action:none}.signature-line{position:absolute;bottom:40px;left:20px;right:20px;height:1px;background:var(--border-light, #ddd);pointer-events:none}.signature-actions{display:flex;gap:8px}.signature-legal{margin-top:12px}.signature-consent{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--text-secondary, #666);cursor:pointer}.signature-consent input[type=checkbox]{margin-top:2px}.saved-signatures{margin-bottom:16px;padding:12px;background:var(--bg-subtle, #f8f9fa);border-radius:8px}.saved-signatures h5{margin:0 0 8px;font-size:14px}.saved-sig-list{display:flex;gap:12px;flex-wrap:wrap}.saved-sig-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;border:1px solid var(--border-color, #e0e0e0);border-radius:6px;cursor:pointer;transition:border-color .15s}.saved-sig-item:hover{border-color:var(--primary-color, #1565c0)}.saved-sig-preview{width:120px;height:48px;object-fit:contain}.saved-sig-label{font-size:11px;color:var(--text-secondary, #666)}.asset-library-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.asset-filters{display:flex;gap:6px;flex-wrap:wrap}.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-bottom:24px}.asset-card{background:var(--card-bg, #fff);border:1px solid var(--border-color, #e0e0e0);border-radius:10px;overflow:hidden;transition:box-shadow .2s}.asset-card:hover{box-shadow:0 2px 8px #00000014}.asset-card.asset-primary{border-color:var(--primary-color, #1565c0);border-width:2px}.asset-preview{height:120px;display:flex;align-items:center;justify-content:center;background:var(--bg-subtle, #f5f5f5);overflow:hidden}.asset-thumb{max-width:100%;max-height:100%;object-fit:contain}.asset-type-icon{font-size:32px;font-weight:700;color:var(--text-muted, #999);text-transform:uppercase}.asset-info{padding:12px}.asset-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:6px}.asset-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:4px}.asset-category-badge{font-size:11px;padding:2px 6px;background:var(--bg-subtle, #f0f0f0);border-radius:4px;color:var(--text-secondary, #666)}.asset-version{font-size:11px;padding:2px 6px;background:#e8eaf6;color:#3f51b5;border-radius:4px}.asset-primary-badge{font-size:11px;padding:2px 6px;background:var(--primary-light, #e3f2fd);color:var(--primary-color, #1565c0);border-radius:4px;font-weight:600}.asset-size{font-size:12px;color:var(--text-muted, #999)}.asset-actions{display:flex;gap:4px;padding:8px 12px 12px;flex-wrap:wrap}.asset-empty{grid-column:1 / -1;text-align:center;padding:40px;color:var(--text-muted, #999)}.asset-upload-form{background:var(--bg-subtle, #f8f9fa);border:1px solid var(--border-color, #e0e0e0);border-radius:10px;padding:20px;margin-bottom:20px}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.color-specs-section{margin-top:24px;padding-top:20px;border-top:1px solid var(--border-color, #e0e0e0)}.color-specs-section .section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.color-specs-section .section-header h4{margin:0}.color-spec-grid{display:flex;flex-wrap:wrap;gap:12px}.color-spec-card{display:flex;align-items:center;gap:12px;padding:12px;background:var(--card-bg, #fff);border:1px solid var(--border-color, #e0e0e0);border-radius:8px;min-width:200px}.color-swatch{width:48px;height:48px;border-radius:8px;flex-shrink:0;border:1px solid rgba(0,0,0,.1)}.color-name{font-weight:600;font-size:14px;margin-bottom:2px}.color-value{font-size:12px;color:var(--text-secondary, #666)}.color-add-form{background:var(--card-bg, #fff);border:1px solid var(--primary-color, #1565c0);border-radius:8px;padding:16px;margin-bottom:12px;width:100%}.form-row{display:flex;gap:12px;margin-bottom:12px}.form-row .form-group{flex:1;margin-bottom:0}.portal-input,.portal-textarea,.portal-select{width:100%;padding:10px 12px;border:1px solid var(--border-color, #e0e0e0);border-radius:6px;font-size:14px;font-family:inherit;background:var(--card-bg, #fff);color:var(--text-primary, #1a1a2e);transition:border-color .15s;box-sizing:border-box}.portal-input:focus,.portal-textarea:focus,.portal-select:focus{outline:none;border-color:var(--primary-color, #1565c0);box-shadow:0 0 0 3px #1565c01a}.portal-textarea{resize:vertical;min-height:60px}.badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600}.badge-warning{background:var(--warning-bg, #fff8e1);color:var(--warning-color, #f57c00)}.badge-success{background:var(--success-bg, #e8f5e9);color:var(--success-color, #2e7d32)}.badge-danger{background:#ffebee;color:var(--danger-color, #c62828)}.empty-state{text-align:center;color:var(--text-muted, #999);font-size:14px;padding:20px}.portal-spinner{width:36px;height:36px;border:3px solid var(--border-color, #e0e0e0);border-top-color:var(--primary-color, #1565c0);border-radius:50%;animation:portal-spin .8s linear infinite;margin:24px auto}@keyframes portal-spin{to{transform:rotate(360deg)}}@media(max-width:600px){.portal-modal{max-width:100%;margin:10px;max-height:calc(100vh - 20px)}.portal-modal-lg{max-width:100%}.reorder-options,.portal-quick-actions{grid-template-columns:1fr}.payment-summary{flex-direction:column;gap:12px}.asset-grid{grid-template-columns:1fr}.form-row{flex-direction:column}.order-card-body{flex-wrap:wrap;gap:8px}.tracking-timeline{flex-direction:column;gap:16px;padding-left:24px}.timeline-step{flex-direction:row;gap:12px;align-items:center}.timeline-step:before{display:none}}
