/* Customer contract surfaces only. Uses the application's inherited font family. */
.contract-ui{--ct-surface:#fff;--ct-soft:#f5f8fc;--ct-line:#e3eaf3;--ct-ink:#26364d;--ct-muted:#62748b;--ct-blue:#2563eb;--ct-shadow:0 6px 24px -12px rgba(32,63,111,.24);font-family:inherit;font-size:.875rem;line-height:1.6;color:var(--ct-ink)}
.contract-page{width:100%;max-width:none;margin:0;padding:0;background:linear-gradient(135deg,#f3f7ff 0%,#f8fafc 55%,#f0faf8 100%);border-radius:20px;min-width:0}
.contract-ui .contract-stack,.contract-ui .space-y-5{display:flex;flex-direction:column;gap:24px}
.contract-ui .space-y-5>:not([hidden])~:not([hidden]){margin-top:0}
.contract-ui .card{border:1px solid var(--ct-line);border-radius:18px;background:var(--ct-surface);box-shadow:var(--ct-shadow);min-width:0}
.contract-ui .card-header{min-height:64px;padding:18px 24px;gap:14px;flex-wrap:wrap;border-bottom:1px solid var(--ct-line);background:linear-gradient(110deg,rgba(37,99,235,.045),transparent);border-radius:18px 18px 0 0}
.contract-ui .card-body{padding:24px}
.contract-ui .card-body.p-0{padding:0}
.contract-ui .card-footer{padding:16px 24px;border-color:var(--ct-line)}
.contract-ui h1{font-size:1.375rem;font-weight:700;line-height:1.35;letter-spacing:-.025em}
.contract-ui h2,.contract-ui h3,.contract-ui .card-title{font-size:1.0625rem;font-weight:650;line-height:1.45}
.contract-ui p{line-height:1.7}
.contract-ui .text-xs{font-size:.8125rem;line-height:1.5}
.contract-ui .text-sm{font-size:.875rem;line-height:1.55}
.contract-ui .text-gray-400,.contract-ui .text-gray-500{color:var(--ct-muted)}
.contract-ui .btn{font-family:inherit;font-size:.8125rem;font-weight:600;min-height:38px;border-radius:10px;gap:8px;white-space:normal;line-height:1.4;padding:9px 15px;transition:box-shadow .15s,background-color .15s}
.contract-ui .btn-primary{background:#2563eb;color:#fff;border-color:#2563eb;box-shadow:0 4px 12px -5px rgba(37,99,235,.5)}
.contract-ui .btn-light,.contract-ui .btn-secondary{background:var(--ct-surface);border:1px solid var(--ct-line);color:var(--ct-ink)}
.contract-ui .btn:hover:not(:disabled){box-shadow:0 4px 14px -6px rgba(37,99,235,.4)}
.contract-ui .btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
.contract-ui :is(button,a,input,select,textarea,pre):focus-visible{outline:3px solid #93b8ff;outline-offset:3px}
.contract-ui :is(.input,.select,.textarea){font-family:inherit;font-size:.875rem;min-height:42px;background:var(--ct-surface);border:1px solid var(--ct-line);border-radius:10px;color:var(--ct-ink);box-shadow:0 1px 2px rgba(30,50,80,.025)}
.contract-ui .textarea{padding:10px 12px;min-height:84px}
.contract-ui .alert{display:block;padding:16px 20px;border-radius:12px;border:1px solid var(--ct-line);line-height:1.7}
.contract-ui .alert-danger{color:#a4253b;background:#fff1f3;border-color:#ffd4dc}
.contract-ui .alert-success{color:#087454;background:#edfbf5;border-color:#bae9d7}
.contract-ui .alert-warning{color:#85550a;background:#fff8e8;border-color:#f6dda5}
.contract-ui .alert-info{color:#2052a0;background:#eff6ff;border-color:#cbdffc}
.contract-ui .badge{border-radius:8px;padding:5px 9px;font-size:.75rem;font-weight:600;line-height:1.4;height:auto}
.contract-ui .scrollable-x-auto{overflow-x:auto;max-width:100%}
.contract-ui table{width:100%;border-collapse:separate;border-spacing:0;font-size:.8125rem}
.contract-ui table th{padding:14px 16px;background:var(--ct-soft);color:var(--ct-muted);font-size:.75rem;font-weight:650;white-space:nowrap;border-bottom:1px solid var(--ct-line)}
.contract-ui table td{padding:15px 16px;border-bottom:1px solid var(--ct-line);vertical-align:middle}
.contract-ui table tbody tr:last-child td{border-bottom:0}
.contract-ui table tbody tr:hover{background:var(--ct-soft)}
.contract-ui .flex.items-center.gap-2,.contract-ui .card-header>.flex{flex-wrap:wrap}
.contract-ui .fixed>div{max-height:calc(100dvh - 32px);overflow-y:auto;border-radius:18px}
.contract-hero{display:flex;align-items:center;gap:20px;padding:28px;border:1px solid #d6e5fa;border-radius:18px;background:linear-gradient(120deg,#eaf2ff,#f1fafa);box-shadow:var(--ct-shadow)}
.contract-hero h1{margin:4px 0 8px}
.contract-hero p{margin:0;color:var(--ct-muted)}
.contract-hero-icon{display:grid;place-items:center;flex-shrink:0;width:56px;height:56px;background:#fff;border:1px solid #dce8fc;border-radius:16px;color:var(--ct-blue);font-size:1.5rem;box-shadow:0 5px 16px -8px #7192c7}
.contract-eyebrow{font-size:.6875rem;letter-spacing:.12em;font-weight:700;color:#446da8}
.contract-ui .contract-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.contract-metric{display:flex;flex-direction:column;justify-content:space-between;gap:8px;padding:18px;border-radius:14px;background:#eff5ff;border:1px solid #d8e6ff;color:#2859a7}
.contract-metric:nth-child(2){background:#f5f1ff;border-color:#e4dafb;color:#7251a5}
.contract-metric:nth-child(3){background:#eefaf7;border-color:#cceee3;color:#18735b}
.contract-metric:nth-child(4){background:#fff7e9;border-color:#f7e2ba;color:#90611b}
.contract-metric span{font-size:.8125rem;font-weight:550}
.contract-metric strong{font-size:1.625rem;line-height:1.2;font-weight:700;font-variant-numeric:tabular-nums}
.contract-ui .contract-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;border:0;padding:0;margin:6px 0}
.contract-form>label{display:flex;flex-direction:column;gap:8px;font-weight:550;color:var(--ct-muted);min-width:0}
.contract-form :is(input,textarea,select){width:100%;font-weight:400;padding:10px 12px}
.contract-form .contract-wide{grid-column:1/-1}
.contract-form>button{align-self:end;justify-self:start}
.contract-ui .contract-readonly-view{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;margin:6px 0}
.contract-ui .contract-readonly-item{display:flex;flex-direction:column;gap:6px;min-width:0}
.contract-ui .contract-readonly-item.contract-wide{grid-column:1/-1}
.contract-ui .contract-field-label{font-size:.8125rem;font-weight:600;color:var(--ct-muted)}
.contract-ui .contract-field-value{font-size:.9375rem;font-weight:550;color:var(--ct-ink);padding:6px 0;line-height:1.5;word-break:break-word}
.contract-ui .contract-readonly-item select{width:100%;font-weight:400;padding:10px 12px}
.contract-status-line{border-left:3px solid #69a0f1;padding:10px 14px;background:var(--ct-soft);border-radius:0 8px 8px 0;color:var(--ct-muted)}
.contract-text-link{color:var(--ct-blue);font-weight:600;text-decoration:underline;text-underline-offset:4px}
.contract-ui .contract-reader{max-height:480px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:28px;border:1px solid var(--ct-line);border-radius:12px;background:var(--ct-soft);font:inherit;line-height:1.85;scrollbar-gutter:stable}
.contract-read-hint{font-size:.8125rem;color:var(--ct-muted)}
.contract-consent{display:flex;align-items:center;gap:12px;padding:16px;background:var(--ct-soft);border:1px solid var(--ct-line);border-radius:12px;cursor:pointer}
.contract-consent input{flex-shrink:0}
.contract-grace{border-top:3px solid #edb24d!important}
.contract-notice{margin:10px 0;padding:14px 20px;border-radius:12px;gap:14px;flex-wrap:wrap;box-shadow:0 3px 14px -9px #916d20;line-height:1.6;font-size:.875rem}
.contract-ui.contract-contractfailed .card:first-child{border-top:4px solid #f0b453}
.dark .contract-ui{--ct-surface:#172235;--ct-soft:#1c2a40;--ct-line:#30415b;--ct-ink:#e4ecf7;--ct-muted:#a7b7cd;--ct-shadow:0 8px 24px -12px rgba(0,0,0,.5)}
.dark .contract-page{background:linear-gradient(135deg,#152035,#121d2c)}
.dark .contract-hero{background:linear-gradient(120deg,#213654,#1c363b);border-color:#36516f}
.dark .contract-hero-icon{background:#233750;border-color:#36516f;color:#91bdff}
.dark .contract-eyebrow{color:#9bc1f6}
.dark .contract-metric{background:#203653;border-color:#36516f;color:#adccff}
.dark .contract-metric:nth-child(2){background:#33294b;border-color:#4b3d66;color:#d7bfff}
.dark .contract-metric:nth-child(3){background:#193e36;border-color:#2c584b;color:#9ce2c9}
.dark .contract-metric:nth-child(4){background:#41351f;border-color:#635031;color:#f1ce8c}
.dark .contract-ui .alert-danger{background:#402532;border-color:#65344b;color:#ffb9ca}
.dark .contract-ui .alert-success{background:#173b31;border-color:#2c5f4f;color:#a1e6c7}
.dark .contract-ui .alert-warning{background:#403622;border-color:#665431;color:#f3d79c}
.dark .contract-ui .alert-info{background:#21364f;border-color:#375577;color:#b3d3ff}
@media(max-width:767px){.contract-page{padding:0;border-radius:12px}.contract-ui .card-header,.contract-ui .card-body{padding:18px}.contract-ui :is(.contract-form,.contract-readonly-view){grid-template-columns:1fr}.contract-ui .contract-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.contract-hero{padding:20px;align-items:flex-start;gap:12px}.contract-hero-icon{width:42px;height:42px;border-radius:12px}.contract-ui h1{font-size:1.1875rem}.contract-ui .contract-reader{padding:18px;max-height:55dvh}.contract-ui .card-body.p-0{padding:0}.contract-ui .contract-stack,.contract-ui .space-y-5{gap:18px}}
@media(prefers-reduced-motion:reduce){.contract-ui *{transition:none!important;scroll-behavior:auto!important}}
.contract-ui .contract-hero-panel{background:linear-gradient(115deg,#edf4ff 0%,#f5fbfc 100%);border-color:#d4e3fa;padding:24px}
.contract-ui .contract-monitor-metric{border-top:3px solid #669cf0;background:linear-gradient(135deg,#fff,#f0f6ff)}
.contract-ui .contract-monitor-metric:nth-child(2){border-top-color:#43b997;background:linear-gradient(135deg,#fff,#edfaf5)}
.contract-ui .contract-monitor-metric:nth-child(3){border-top-color:#a28ae0;background:linear-gradient(135deg,#fff,#f5f1ff)}
.contract-ui .contract-monitor-metric:nth-child(4){border-top-color:#5dbbc9;background:linear-gradient(135deg,#fff,#edf9fc)}
.contract-ui .contract-monitor-metric:nth-child(5){border-top-color:#e8b557;background:linear-gradient(135deg,#fff,#fff8eb)}
.dark .contract-ui .contract-hero-panel{background:linear-gradient(115deg,#223654,#1b343c);border-color:#36516f}
.dark .contract-ui .contract-monitor-metric{background:var(--ct-surface)}
/* Explicit layout for icon fields and actions; independent of generated utility classes. */
.contract-ui .contract-icon-input{position:relative;min-width:0;flex:1 1 230px;width:100%}
.contract-ui .contract-icon-input>i{position:absolute;left:12px;top:50%;transform:translateY(-50%);line-height:1;pointer-events:none;z-index:1}
.contract-ui .contract-icon-input>input{padding-left:36px;width:100%;box-sizing:border-box}
.contract-ui .contract-action{width:auto;max-width:100%;justify-self:start;align-self:start;display:inline-flex;flex:0 0 auto}
.contract-ui .contract-print{background:#eaf7f5;color:#126f65;border:1px solid #bce3dc;box-shadow:0 3px 10px -6px #2c8b7b}
.contract-ui .contract-print:hover:not(:disabled){background:#d8f0eb}
.contract-ui .contract-enrollment-form{display:grid;grid-template-columns:minmax(220px,320px) minmax(240px,1fr) auto;align-items:end;gap:24px}
.contract-ui .contract-enrollment-form>div{grid-column:auto;min-width:0}
.contract-ui .contract-enrollment-form label{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.contract-ui .contract-enrollment-status{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);gap:24px;align-items:start;border-top:1px solid var(--ct-line);margin-top:24px;padding-top:24px}
.contract-ui .contract-enrollment-status>div:first-child{background:var(--ct-soft);border:1px solid var(--ct-line);border-radius:14px;padding:20px;font-size:.875rem}
.contract-ui .contract-enrollment-status h3{margin:0 0 14px}
.contract-ui .contract-enrollment-status p{margin:6px 0}
.contract-ui .contract-price-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.contract-ui .contract-price-summary>div{display:flex;flex-direction:column;gap:10px;padding:20px;background:var(--ct-soft);border:1px solid var(--ct-line);border-radius:12px}
.contract-ui .contract-price-summary span,.contract-ui .contract-estimate>span{color:var(--ct-muted);font-size:.8125rem}
.contract-ui .contract-price-summary strong{font-size:1rem;font-weight:600}
.contract-ui .contract-estimate{display:flex;flex-direction:column;gap:8px;background:#eff6ff;border:1px solid #cfdef4;border-radius:12px;padding:20px;color:#254c80}
.contract-ui .contract-estimate p{margin:0;font-size:.875rem}
.dark .contract-ui .contract-print{background:#1b3f39;border-color:#38675d;color:#a8e1d4}
.dark .contract-ui .contract-estimate{background:#21364f;border-color:#375577;color:#b3d3ff}
@media(max-width:1000px){.contract-ui .contract-enrollment-form{grid-template-columns:1fr}.contract-ui .contract-enrollment-status{grid-template-columns:1fr}.contract-ui .contract-price-summary{grid-template-columns:1fr}.contract-ui .contract-enrollment-form>div{justify-content:flex-start}}
.contract-ui .alert[role="status"]{position:relative;align-items:center;min-height:52px}
.contract-ui .alert[role="status"]>button{position:static;margin-left:auto;width:32px;height:32px;padding:0;display:grid;place-items:center;flex:0 0 32px}
.contract-ui .alert[role="status"]>button i{line-height:1;font-size:1rem}
.contract-ui .contract-action{border-radius:9px;padding:8px 16px;min-height:38px}
.contract-ui .contract-enrollment-form .contract-action{justify-self:start}

/* Compact dismissible messages: close button anchored independently of text wrapping. */
.contract-ui .contract-dismissible.alert[role="status"]{display:block;position:relative;min-height:0;padding:12px 52px 12px 16px;line-height:1.5}
.contract-ui .contract-dismissible.alert[role="status"]>button{position:absolute;top:8px;right:10px;margin:0;min-height:28px;width:28px;height:28px;padding:0;display:grid;place-items:center}
.contract-ui .dropdown-content{z-index:1050;min-width:min(380px,calc(100vw - 60px));max-width:100%}
.contract-ui .dropdown-content input{width:100%}
.contract-ui .account-tree-match-width{position:relative;width:100%;min-width:0}
.contract-ui .account-tree-match-width>.dropdown-content{width:100%;min-width:0;max-width:100%;box-sizing:border-box}
