:root{--tyto-blue: #413FB6;--tyto-accent: #7171FF;--tyto-lilac: #CABEFF;--tyto-body: #332c66;--tyto-bg: #f5f5f7;--tyto-footer: #0f0f1a;--shadow-sm: 0 4px 16px rgba(65,63,182,.08);--shadow-md: 0 8px 32px rgba(65,63,182,.12);--shadow-lg: 0 16px 56px rgba(65,63,182,.16);--radius: 16px;--radius-sm: 10px;--font: "Inter", "Poppins", system-ui, -apple-system, sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}body{font-family:var(--font);background:var(--tyto-bg);color:var(--tyto-body);min-height:100vh;display:flex;flex-direction:column;font-size:15px;line-height:1.6}#root{display:flex;flex-direction:column;min-height:100vh}.portal-header{background:var(--tyto-blue);padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 12px #0000002e;position:sticky;top:0;z-index:100}.header-logo img{height:32px;display:block}.header-title{color:#ffffffe0;font-size:14px;font-weight:500;letter-spacing:.3px}.portal-main{flex:1;padding:40px 24px 64px;max-width:860px;width:100%;margin:0 auto}.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:28px 32px;margin-bottom:24px}.card:hover{box-shadow:var(--shadow-md);transition:box-shadow .2s ease}.hero-card{padding:0;overflow:hidden;border:1px solid rgba(65,63,182,.14);border-radius:var(--radius);margin-bottom:24px}.hero-header{background:var(--tyto-blue);padding:28px 32px 24px;border-radius:var(--radius) var(--radius) 0 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.hero-header-text{flex:1;min-width:0}.hero-quote-name{font-size:22px;font-weight:700;color:#fff;line-height:1.3;margin-bottom:6px;font-family:var(--font)}.hero-quote-number{font-size:13px;font-family:var(--font);color:#ffffffa6;font-weight:500;letter-spacing:.5px}.hero-owl-logo{width:52px;height:52px;object-fit:contain;flex-shrink:0;filter:brightness(0) invert(1);opacity:.88}.hero-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;background:#fff;border-top:2px solid rgba(65,63,182,.1)}.hero-meta-item{padding:16px 24px;border-right:1px solid rgba(65,63,182,.08)}.hero-meta-item:last-child{border-right:none}.hero-meta-label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:#9992cc;margin-bottom:5px}.hero-meta-value{font-size:14px;font-weight:600;color:var(--tyto-body)}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:100px;font-size:12px;font-weight:600;letter-spacing:.2px}.status-badge:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor}.status-draft{background:#f0f0f0;color:#666}.status-active{background:#e6f4ea;color:#1e7e34}.status-won{background:#e8f5e9;color:#2e7d32}.status-revised{background:#fff3e0;color:#e65100}.status-cancelled{background:#fce4ec;color:#c62828}.section-heading{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9992cc;margin-bottom:16px;display:flex;align-items:center;gap:8px}.section-heading:after{content:"";flex:1;height:1px;background:#413fb61a}.line-items-table{width:100%;border-collapse:collapse;font-size:14px}.line-items-table thead tr{background:var(--tyto-blue);color:#fff}.line-items-table thead th{padding:12px 16px;text-align:left;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.line-items-table thead th:not(:first-child){text-align:right}.line-items-table thead th:first-child{border-radius:var(--radius-sm) 0 0 0}.line-items-table thead th:last-child{border-radius:0 var(--radius-sm) 0 0}.line-items-table tbody tr:nth-child(2n){background:#f8f7ff}.line-items-table tbody tr:hover{background:#413fb60a}.line-items-table tbody td{padding:12px 16px;vertical-align:top;border-bottom:1px solid rgba(65,63,182,.06)}.line-items-table tbody td:not(:first-child){text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.td-description{font-weight:500;color:var(--tyto-body);line-height:1.4}.td-number{color:#666}.totals-tfoot td{font-variant-numeric:tabular-nums}.totals-row-sub td{background:#f5f4ff;padding:9px 16px;font-size:13px;color:#5a5a7a;font-weight:500}.totals-row-sub td:last-child{text-align:right;font-weight:600;color:var(--tyto-body)}.totals-row-total td{background:var(--tyto-blue);padding:16px;font-size:15px;font-weight:700;color:#fff}.totals-row-total td:last-child{text-align:right;font-size:18px;font-weight:800}.description-text{font-size:14px;line-height:1.7;color:#4a4070;white-space:pre-wrap}.terms-inline-note{margin-top:14px;font-size:12px;color:#999;line-height:1.6;text-align:center}.terms-link{color:var(--tyto-accent);text-decoration:none;font-weight:600}.terms-link:hover{text-decoration:underline}.signature-card{border:2px solid var(--tyto-lilac);background:linear-gradient(135deg,#fff,#f8f7ff)}.signature-card.signing-disabled{border-color:#e0e0e0;background:#fafafa}.sig-intro{font-size:14px;color:#4a4070;margin-bottom:20px;line-height:1.6}.sig-terms-block{margin-bottom:20px}.sig-terms-text{font-size:13px;color:#666;line-height:1.6;margin-top:6px}.sig-form{display:flex;flex-direction:column;gap:16px}.sig-field label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#9992cc;margin-bottom:6px}.sig-input{width:100%;padding:12px 16px;border:2px solid #e8e6f0;border-radius:var(--radius-sm);font-family:var(--font);font-size:15px;color:var(--tyto-body);background:#fff;transition:border-color .15s,box-shadow .15s;outline:none}.sig-input:focus{border-color:var(--tyto-accent);box-shadow:0 0 0 3px #7171ff26}.sig-input.input-error{border-color:#e53935;box-shadow:0 0 0 3px #e539351a}.sig-input:disabled{background:#f5f5f5;cursor:not-allowed}.input-error-msg{font-size:12px;color:#e53935;margin-top:4px}.sig-checkbox-row{display:flex;align-items:flex-start;gap:10px}.sig-checkbox{width:18px;height:18px;accent-color:var(--tyto-blue);margin-top:2px;flex-shrink:0;cursor:pointer}.sig-checkbox-label{font-size:13px;color:#4a4070;line-height:1.5;cursor:pointer;-webkit-user-select:none;user-select:none}.sig-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:48px;padding:0 24px;background:linear-gradient(135deg,#413fb6,#7171ff);color:#fff;border:none;border-radius:var(--radius-sm);font-family:var(--font);font-size:15px;font-weight:700;letter-spacing:.3px;cursor:pointer;transition:opacity .15s,transform .1s,box-shadow .15s;box-shadow:0 4px 16px #413fb659}.sig-btn:hover:not(:disabled){opacity:.92;transform:translateY(-1px);box-shadow:0 6px 20px #413fb673}.sig-btn:active:not(:disabled){transform:translateY(0)}.sig-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.sign-success{display:flex;flex-direction:column;align-items:center;text-align:center;padding:12px 0 4px}.checkmark-circle{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#413fb6,#7171ff);display:flex;align-items:center;justify-content:center;margin-bottom:20px;animation:popIn .4s cubic-bezier(.34,1.56,.64,1) both;box-shadow:0 8px 24px #413fb666}.checkmark-circle svg{animation:drawCheck .35s ease .3s both}.success-title{font-size:22px;font-weight:800;color:var(--tyto-blue);margin-bottom:8px}.success-subtitle{font-size:14px;color:#666;line-height:1.6;max-width:380px;margin-bottom:20px}.success-meta{background:#f0effc;border-radius:var(--radius-sm);padding:12px 20px;text-align:left;font-size:13px;min-width:260px}.success-meta-row{display:flex;justify-content:space-between;gap:24px;padding:4px 0;color:#4a4070}.success-meta-row strong{color:var(--tyto-blue)}.already-signed-banner{background:#e8f5e9;border:1px solid #a5d6a7;border-radius:var(--radius-sm);padding:16px 20px;display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}.already-signed-icon{font-size:20px;flex-shrink:0;margin-top:1px}.already-signed-text h4{font-size:14px;font-weight:700;color:#2e7d32;margin-bottom:4px}.already-signed-text p{font-size:13px;color:#388e3c;line-height:1.5}.loading-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:80px 24px}.loading-logo{height:40px;opacity:.9;animation:pulse 1.5s ease-in-out infinite}.loading-spinner{width:40px;height:40px;border:3px solid rgba(65,63,182,.15);border-top-color:var(--tyto-blue);border-radius:50%;animation:spin .8s linear infinite}.loading-text{font-size:14px;color:#9992cc;font-weight:500}.error-state{flex:1;display:flex;align-items:center;justify-content:center;padding:80px 24px}.error-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);padding:48px 40px;max-width:480px;text-align:center}.error-icon{font-size:48px;margin-bottom:16px}.error-title{font-size:20px;font-weight:700;color:var(--tyto-blue);margin-bottom:12px}.error-message{font-size:14px;color:#666;line-height:1.6;margin-bottom:24px}.error-help{font-size:13px;color:#9992cc}.error-help a{color:var(--tyto-accent);text-decoration:none;font-weight:600}.error-help a:hover{text-decoration:underline}.portal-footer{background:var(--tyto-footer);color:#ffffffb3;padding:40px 24px 32px;margin-top:auto}.footer-inner{max-width:860px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}.footer-logo img{height:28px;opacity:.9}.footer-details{display:flex;flex-wrap:wrap;gap:6px 24px;justify-content:center;font-size:13px}.footer-details a{color:#fff9;text-decoration:none;transition:color .15s}.footer-details a:hover{color:var(--tyto-lilac)}.footer-copy{font-size:12px;color:#ffffff59}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.03)}}@keyframes popIn{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes drawCheck{0%{stroke-dashoffset:100}to{stroke-dashoffset:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .4s ease both}@media (max-width: 600px){.portal-main{padding:24px 16px 48px}.card{padding:20px}.quote-name{font-size:18px}.line-items-table{font-size:13px}.line-items-table thead th,.line-items-table tbody td{padding:10px}.totals-inner{min-width:100%;width:100%}.totals-card{text-align:left}.success-meta{min-width:auto;width:100%}.error-card{padding:32px 24px}}
