NJ Tax Calculator: Estimate Your New Jersey Income Tax
:root {
–primary-color: #004a99;
–success-color: #28a745;
–background-color: #f8f9fa;
–text-color: #333;
–border-color: #ddd;
–card-background: #fff;
–shadow: 0 2px 5px rgba(0,0,0,0.1);
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: var(–background-color);
color: var(–text-color);
line-height: 1.6;
margin: 0;
padding: 0;
}
.container {
max-width: 1000px;
margin: 20px auto;
padding: 20px;
background-color: var(–card-background);
border-radius: 8px;
box-shadow: var(–shadow);
}
h1, h2, h3 {
color: var(–primary-color);
text-align: center;
margin-bottom: 20px;
}
h1 {
font-size: 2.5em;
}
h2 {
font-size: 1.8em;
border-bottom: 2px solid var(–primary-color);
padding-bottom: 10px;
margin-top: 30px;
}
h3 {
font-size: 1.4em;
margin-top: 25px;
}
.loan-calc-container {
background-color: var(–card-background);
padding: 30px;
border-radius: 8px;
box-shadow: var(–shadow);
margin-bottom: 30px;
}
.input-group {
margin-bottom: 20px;
text-align: left;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: bold;
color: var(–primary-color);
}
.input-group input[type="number"],
.input-group input[type="text"],
.input-group select {
width: calc(100% – 22px);
padding: 12px;
border: 1px solid var(–border-color);
border-radius: 5px;
font-size: 1em;
box-sizing: border-box;
}
.input-group input[type="number"]:focus,
.input-group input[type="text"]:focus,
.input-group select:focus {
outline: none;
border-color: var(–primary-color);
box-shadow: 0 0 0 3px rgba(0, 74, 153, 0.2);
}
.input-group .helper-text {
font-size: 0.85em;
color: #666;
margin-top: 5px;
display: block;
}
.error-message {
color: #dc3545;
font-size: 0.85em;
margin-top: 5px;
display: none; /* Hidden by default */
}
.error-message.visible {
display: block;
}
.button-group {
display: flex;
justify-content: space-between;
margin-top: 30px;
gap: 10px;
}
button {
padding: 12px 25px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 1em;
font-weight: bold;
transition: background-color 0.3s ease;
}
.btn-calculate {
background-color: var(–primary-color);
color: white;
}
.btn-calculate:hover {
background-color: #003366;
}
.btn-reset {
background-color: #6c757d;
color: white;
}
.btn-reset:hover {
background-color: #5a6268;
}
.btn-copy {
background-color: var(–success-color);
color: white;
}
.btn-copy:hover {
background-color: #218838;
}
#results {
margin-top: 30px;
padding: 25px;
background-color: var(–primary-color);
color: white;
border-radius: 8px;
box-shadow: var(–shadow);
text-align: center;
}
#results h3 {
color: white;
margin-bottom: 15px;
}
.result-item {
margin-bottom: 15px;
}
.result-item span {
font-weight: bold;
font-size: 1.2em;
}
.primary-result {
font-size: 2em !important;
font-weight: bold;
color: #fff;
background-color: var(–success-color);
padding: 10px 20px;
border-radius: 5px;
display: inline-block;
margin-top: 10px;
}
.formula-explanation {
font-size: 0.9em;
color: #eee;
margin-top: 15px;
border-top: 1px solid #eee;
padding-top: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
margin-bottom: 30px;
box-shadow: var(–shadow);
}
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid var(–border-color);
}
thead {
background-color: var(–primary-color);
color: white;
}
tbody tr:nth-child(even) {
background-color: #f2f2f2;
}
tbody tr:hover {
background-color: #e9ecef;
}
caption {
font-size: 1.1em;
font-weight: bold;
color: var(–text-color);
margin-bottom: 10px;
text-align: left;
}
canvas {
display: block;
margin: 20px auto;
max-width: 100%;
border: 1px solid var(–border-color);
border-radius: 5px;
background-color: var(–card-background);
}
.chart-container {
text-align: center;
margin-top: 30px;
padding: 20px;
background-color: var(–card-background);
border-radius: 8px;
box-shadow: var(–shadow);
}
.chart-container h3 {
margin-bottom: 20px;
}
.article-content {
margin-top: 40px;
background-color: var(–card-background);
padding: 30px;
border-radius: 8px;
box-shadow: var(–shadow);
}
.article-content p, .article-content ul, .article-content ol {
margin-bottom: 15px;
}
.article-content ul, .article-content ol {
padding-left: 25px;
}
.article-content li {
margin-bottom: 8px;
}
.article-content a {
color: var(–primary-color);
text-decoration: none;
}
.article-content a:hover {
text-decoration: underline;
}
.faq-item {
margin-bottom: 15px;
border-bottom: 1px dashed var(–border-color);
padding-bottom: 10px;
}
.faq-item:last-child {
border-bottom: none;
}
.faq-item strong {
display: block;
color: var(–primary-color);
margin-bottom: 5px;
}
.related-tools ul {
list-style: none;
padding: 0;
}
.related-tools li {
margin-bottom: 10px;
}
.related-tools a {
font-weight: bold;
}
.related-tools span {
font-size: 0.9em;
color: #555;
display: block;
margin-top: 3px;
}
.highlight {
background-color: var(–success-color);
color: white;
padding: 2px 5px;
border-radius: 3px;
}
.text-center {
text-align: center;
}
.text-primary {
color: var(–primary-color);
}
.font-bold {
font-weight: bold;
}
.mb-15 {
margin-bottom: 15px;
}
.mt-20 {
margin-top: 20px;
}
.pb-10 {
padding-bottom: 10px;
}
.pt-10 {
padding-top: 10px;
}
.fs-085 {
font-size: 0.85em;
}
.fs-09 {
font-size: 0.9em;
}
.fs-12 {
font-size: 1.2em;
}
.fs-18 {
font-size: 1.8em;
}
.fs-20 {
font-size: 2em;
}
.fs-25 {
font-size: 2.5em;
}
.lh-16 {
line-height: 1.6;
}
.w-100 {
width: 100%;
}
.br-5 {
border-radius: 5px;
}
.b-none {
border: none;
}
.bg-primary {
background-color: var(–primary-color);
}
.bg-success {
background-color: var(–success-color);
}
.c-white {
color: white;
}
.fw-bold {
font-weight: bold;
}
.d-block {
display: block;
}
.d-inline-block {
display: inline-block;
}
.jc-space-between {
justify-content: space-between;
}
.gap-10 {
gap: 10px;
}
.flex {
display: flex;
}
.flex-col {
flex-direction: column;
}
.align-items-center {
align-items: center;
}
.justify-content-center {
justify-content: center;
}
.shadow-sm {
box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
.shadow-md {
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.shadow-lg {
box-shadow: 0 10px 15px rgba(0,0,0,0.1);
}
.rounded-md {
border-radius: 0.375rem;
}
.rounded-lg {
border-radius: 0.5rem;
}
.border-primary {
border: 1px solid var(–primary-color);
}
.border-success {
border: 1px solid var(–success-color);
}
.p-15 {
padding: 15px;
}
.m-0 {
margin: 0;
}
.m-auto {
margin: auto;
}
.border-top {
border-top: 1px solid #eee;
}
.pb-0 {
padding-bottom: 0;
}
.pt-0 {
padding-top: 0;
}
.mb-0 {
margin-bottom: 0;
}
.mt-0 {
margin-top: 0;
}
.flex-wrap {
flex-wrap: wrap;
}
.align-self-start {
align-self: flex-start;
}
.align-self-end {
align-self: flex-end;
}
.align-self-center {
align-self: center;
}
.align-self-stretch {
align-self: stretch;
}
.justify-self-start {
justify-self: flex-start;
}
.justify-self-end {
justify-self: flex-end;
}
.justify-self-center {
justify-self: center;
}
.justify-self-stretch {
justify-self: stretch;
}
.grid {
display: grid;
}
.grid-cols-1 {
grid-template-columns: 1fr;
}
.grid-cols-2 {
grid-template-columns: repeat(2, 1fr);
}
.gap-20 {
gap: 20px;
}
.gap-30 {
gap: 30px;
}
.col-span-1 {
grid-column: span 1 / span 1;
}
.col-span-2 {
grid-column: span 2 / span 2;
}
.row-span-1 {
grid-row: span 1 / span 1;
}
.row-span-2 {
grid-row: span 2 / span 2;
}
.col-start-1 {
grid-column-start: 1;
}
.col-start-2 {
grid-column-start: 2;
}
.col-end-1 {
grid-column-end: 1;
}
.col-end-2 {
grid-column-end: 2;
}
.row-start-1 {
grid-row-start: 1;
}
.row-start-2 {
grid-row-start: 2;
}
.row-end-1 {
grid-row-end: 1;
}
.row-end-2 {
grid-row-end: 2;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-justify {
text-align: justify;
}
.text-uppercase {
text-transform: uppercase;
}
.text-lowercase {
text-transform: lowercase;
}
.text-capitalize {
text-transform: capitalize;
}
.font-normal {
font-weight: normal;
}
.font-medium {
font-weight: 500;
}
.font-semibold {
font-weight: 600;
}
.font-extrabold {
font-weight: 800;
}
.italic {
font-style: italic;
}
.underline {
text-decoration: underline;
}
.line-through {
text-decoration: line-through;
}
.no-underline {
text-decoration: none;
}
.opacity-0 {
opacity: 0;
}
.opacity-50 {
opacity: 0.5;
}
.opacity-100 {
opacity: 1;
}
.invisible {
visibility: hidden;
}
.visible {
visibility: visible;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.relative {
position: relative;
}
.absolute {
position: absolute;
}
.fixed {
position: fixed;
}
.sticky {
position: sticky;
}
.top-0 {
top: 0;
}
.bottom-0 {
bottom: 0;
}
.left-0 {
left: 0;
}
.right-0 {
right: 0;
}
.z-0 {
z-index: 0;
}
.z-10 {
z-index: 10;
}
.z-20 {
z-index: 20;
}
.z-30 {
z-index: 30;
}
.z-40 {
z-index: 40;
}
.z-50 {
z-index: 50;
}
.z-auto {
z-index: auto;
}
.transform {
transform: translate3d(0, 0, 0);
}
.transform-gpu {
transform: translate3d(0, 0, 0);
}
.scale-0 {
transform: scale(0);
}
.scale-50 {
transform: scale(0.5);
}
.scale-75 {
transform: scale(0.75);
}
.scale-90 {
transform: scale(0.9);
}
.scale-100 {
transform: scale(1);
}
.scale-110 {
transform: scale(1.1);
}
.scale-125 {
transform: scale(1.25);
}
.scale-150 {
transform: scale(1.5);
}
.rotate-0 {
transform: rotate(0deg);
}
.rotate-90 {
transform: rotate(90deg);
}
.rotate-180 {
transform: rotate(180deg);
}
.rotate-270 {
transform: rotate(270deg);
}
.skew-x-0 {
transform: skewX(0deg);
}
.skew-x-12 {
transform: skewX(12deg);
}
.skew-y-0 {
transform: skewY(0deg);
}
.skew-y-12 {
transform: skewY(12deg);
}
.translate-x-0 {
transform: translateX(0px);
}
.translate-x-1 {
transform: translateX(0.25rem);
}
.translate-x-2 {
transform: translateX(0.5rem);
}
.translate-x-3 {
transform: translateX(0.75rem);
}
.translate-x-4 {
transform: translateX(1rem);
}
.translate-x-5 {
transform: translateX(1.25rem);
}
.translate-x-6 {
transform: translateX(1.5rem);
}
.translate-x-8 {
transform: translateX(2rem);
}
.translate-x-10 {
transform: translateX(2.5rem);
}
.translate-x-12 {
transform: translateX(3rem);
}
.translate-x-16 {
transform: translateX(4rem);
}
.translate-x-20 {
transform: translateX(5rem);
}
.translate-x-24 {
transform: translateX(6rem);
}
.translate-x-32 {
transform: translateX(8rem);
}
.translate-x-40 {
transform: translateX(10rem);
}
.translate-x-48 {
transform: translateX(12rem);
}
.translate-x-56 {
transform: translateX(14rem);
}
.translate-x-64 {
transform: translateX(16rem);
}
.translate-x-72 {
transform: translateX(18rem);
}
.translate-x-80 {
transform: translateX(20rem);
}
.translate-x-96 {
transform: translateX(24rem);
}
.translate-x-auto {
transform: translateX(auto);
}
.translate-y-0 {
transform: translateY(0px);
}
.translate-y-1 {
transform: translateY(0.25rem);
}
.translate-y-2 {
transform: translateY(0.5rem);
}
.translate-y-3 {
transform: translateY(0.75rem);
}
.translate-y-4 {
transform: translateY(1rem);
}
.translate-y-5 {
transform: translateY(1.25rem);
}
.translate-y-6 {
transform: translateY(1.5rem);
}
.translate-y-8 {
transform: translateY(2rem);
}
.translate-y-10 {
transform: translateY(2.5rem);
}
.translate-y-12 {
transform: translateY(3rem);
}
.translate-y-16 {
transform: translateY(4rem);
}
.translate-y-20 {
transform: translateY(5rem);
}
.translate-y-24 {
transform: translateY(6rem);
}
.translate-y-32 {
transform: translateY(8rem);
}
.translate-y-40 {
transform: translateY(10rem);
}
.translate-y-48 {
transform: translateY(12rem);
}
.translate-y-56 {
transform: translateY(14rem);
}
.translate-y-64 {
transform: translateY(16rem);
}
.translate-y-72 {
transform: translateY(18rem);
}
.translate-y-80 {
transform: translateY(20rem);
}
.translate-y-96 {
transform: translateY(24rem);
}
.translate-y-auto {
transform: translateY(auto);
}
.transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.transition-none {
transition-property: none;
}
.transition-all {
transition-property: all;
}
.duration-75 {
transition-duration: 75ms;
}
.duration-100 {
transition-duration: 100ms;
}
.duration-150 {
transition-duration: 150ms;
}
.duration-200 {
transition-duration: 200ms;
}
.duration-300 {
transition-duration: 300ms;
}
.duration-500 {
transition-duration: 500ms;
}
.duration-750 {
transition-duration: 750ms;
}
.duration-1000 {
transition-duration: 1000ms;
}
.ease-linear {
transition-timing-function: linear;
}
.ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.motion-reduce\:transition {
transition-property: none;
}
.motion-reduce\:ease-linear {
transition-timing-function: linear;
}
.motion-reduce\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.motion-reduce\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.motion-reduce\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.motion-reduce\:duration-0 {
transition-duration: 0ms;
}
.motion-reduce\:duration-75 {
transition-duration: 75ms;
}
.motion-reduce\:duration-100 {
transition-duration: 100ms;
}
.motion-reduce\:duration-150 {
transition-duration: 150ms;
}
.motion-reduce\:duration-200 {
transition-duration: 200ms;
}
.motion-reduce\:duration-300 {
transition-duration: 300ms;
}
.motion-reduce\:duration-500 {
transition-duration: 500ms;
}
.motion-reduce\:duration-750 {
transition-duration: 750ms;
}
.motion-reduce\:duration-1000 {
transition-duration: 1000ms;
}
.motion-safe\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.motion-safe\:ease-linear {
transition-timing-function: linear;
}
.motion-safe\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.motion-safe\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.motion-safe\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.motion-safe\:duration-0 {
transition-duration: 0ms;
}
.motion-safe\:duration-75 {
transition-duration: 75ms;
}
.motion-safe\:duration-100 {
transition-duration: 100ms;
}
.motion-safe\:duration-150 {
transition-duration: 150ms;
}
.motion-safe\:duration-200 {
transition-duration: 200ms;
}
.motion-safe\:duration-300 {
transition-duration: 300ms;
}
.motion-safe\:duration-500 {
transition-duration: 500ms;
}
.motion-safe\:duration-750 {
transition-duration: 750ms;
}
.motion-safe\:duration-1000 {
transition-duration: 1000ms;
}
@media (min-width: 640px) {
.sm\:grid-cols-1 {
grid-template-columns: 1fr;
}
.sm\:grid-cols-2 {
grid-template-columns: repeat(2, 1fr);
}
.sm\:col-span-1 {
grid-column: span 1 / span 1;
}
.sm\:col-span-2 {
grid-column: span 2 / span 2;
}
.sm\:row-span-1 {
grid-row: span 1 / span 1;
}
.sm\:row-span-2 {
grid-row: span 2 / span 2;
}
.sm\:col-start-1 {
grid-column-start: 1;
}
.sm\:col-start-2 {
grid-column-start: 2;
}
.sm\:col-end-1 {
grid-column-end: 1;
}
.sm\:col-end-2 {
grid-column-end: 2;
}
.sm\:row-start-1 {
grid-row-start: 1;
}
.sm\:row-start-2 {
grid-row-start: 2;
}
.sm\:row-end-1 {
grid-row-end: 1;
}
.sm\:row-end-2 {
grid-row-end: 2;
}
.sm\:text-left {
text-align: left;
}
.sm\:text-right {
text-align: right;
}
.sm\:text-justify {
text-align: justify;
}
.sm\:text-uppercase {
text-transform: uppercase;
}
.sm\:text-lowercase {
text-transform: lowercase;
}
.sm\:text-capitalize {
text-transform: capitalize;
}
.sm\:font-normal {
font-weight: normal;
}
.sm\:font-medium {
font-weight: 500;
}
.sm\:font-semibold {
font-weight: 600;
}
.sm\:font-extrabold {
font-weight: 800;
}
.sm\:italic {
font-style: italic;
}
.sm\:underline {
text-decoration: underline;
}
.sm\:line-through {
text-decoration: line-through;
}
.sm\:no-underline {
text-decoration: none;
}
.sm\:opacity-0 {
opacity: 0;
}
.sm\:opacity-50 {
opacity: 0.5;
}
.sm\:opacity-100 {
opacity: 1;
}
.sm\:invisible {
visibility: hidden;
}
.sm\:visible {
visibility: visible;
}
.sm\:sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.sm\:relative {
position: relative;
}
.sm\:absolute {
position: absolute;
}
.sm\:fixed {
position: fixed;
}
.sm\:sticky {
position: sticky;
}
.sm\:top-0 {
top: 0;
}
.sm\:bottom-0 {
bottom: 0;
}
.sm\:left-0 {
left: 0;
}
.sm\:right-0 {
right: 0;
}
.sm\:z-0 {
z-index: 0;
}
.sm\:z-10 {
z-index: 10;
}
.sm\:z-20 {
z-index: 20;
}
.sm\:z-30 {
z-index: 30;
}
.sm\:z-40 {
z-index: 40;
}
.sm\:z-50 {
z-index: 50;
}
.sm\:z-auto {
z-index: auto;
}
.sm\:transform {
transform: translate3d(0, 0, 0);
}
.sm\:transform-gpu {
transform: translate3d(0, 0, 0);
}
.sm\:scale-0 {
transform: scale(0);
}
.sm\:scale-50 {
transform: scale(0.5);
}
.sm\:scale-75 {
transform: scale(0.75);
}
.sm\:scale-90 {
transform: scale(0.9);
}
.sm\:scale-100 {
transform: scale(1);
}
.sm\:scale-110 {
transform: scale(1.1);
}
.sm\:scale-125 {
transform: scale(1.25);
}
.sm\:scale-150 {
transform: scale(1.5);
}
.sm\:rotate-0 {
transform: rotate(0deg);
}
.sm\:rotate-90 {
transform: rotate(90deg);
}
.sm\:rotate-180 {
transform: rotate(180deg);
}
.sm\:rotate-270 {
transform: rotate(270deg);
}
.sm\:skew-x-0 {
transform: skewX(0deg);
}
.sm\:skew-x-12 {
transform: skewX(12deg);
}
.sm\:skew-y-0 {
transform: skewY(0deg);
}
.sm\:skew-y-12 {
transform: skewY(12deg);
}
.sm\:translate-x-0 {
transform: translateX(0px);
}
.sm\:translate-x-1 {
transform: translateX(0.25rem);
}
.sm\:translate-x-2 {
transform: translateX(0.5rem);
}
.sm\:translate-x-3 {
transform: translateX(0.75rem);
}
.sm\:translate-x-4 {
transform: translateX(1rem);
}
.sm\:translate-x-5 {
transform: translateX(1.25rem);
}
.sm\:translate-x-6 {
transform: translateX(1.5rem);
}
.sm\:translate-x-8 {
transform: translateX(2rem);
}
.sm\:translate-x-10 {
transform: translateX(2.5rem);
}
.sm\:translate-x-12 {
transform: translateX(3rem);
}
.sm\:translate-x-16 {
transform: translateX(4rem);
}
.sm\:translate-x-20 {
transform: translateX(5rem);
}
.sm\:translate-x-24 {
transform: translateX(6rem);
}
.sm\:translate-x-32 {
transform: translateX(8rem);
}
.sm\:translate-x-40 {
transform: translateX(10rem);
}
.sm\:translate-x-48 {
transform: translateX(12rem);
}
.sm\:translate-x-56 {
transform: translateX(14rem);
}
.sm\:translate-x-64 {
transform: translateX(16rem);
}
.sm\:translate-x-72 {
transform: translateX(18rem);
}
.sm\:translate-x-80 {
transform: translateX(20rem);
}
.sm\:translate-x-96 {
transform: translateX(24rem);
}
.sm\:translate-x-auto {
transform: translateX(auto);
}
.sm\:translate-y-0 {
transform: translateY(0px);
}
.sm\:translate-y-1 {
transform: translateY(0.25rem);
}
.sm\:translate-y-2 {
transform: translateY(0.5rem);
}
.sm\:translate-y-3 {
transform: translateY(0.75rem);
}
.sm\:translate-y-4 {
transform: translateY(1rem);
}
.sm\:translate-y-5 {
transform: translateY(1.25rem);
}
.sm\:translate-y-6 {
transform: translateY(1.5rem);
}
.sm\:translate-y-8 {
transform: translateY(2rem);
}
.sm\:translate-y-10 {
transform: translateY(2.5rem);
}
.sm\:translate-y-12 {
transform: translateY(3rem);
}
.sm\:translate-y-16 {
transform: translateY(4rem);
}
.sm\:translate-y-20 {
transform: translateY(5rem);
}
.sm\:translate-y-24 {
transform: translateY(6rem);
}
.sm\:translate-y-32 {
transform: translateY(8rem);
}
.sm\:translate-y-40 {
transform: translateY(10rem);
}
.sm\:translate-y-48 {
transform: translateY(12rem);
}
.sm\:translate-y-56 {
transform: translateY(14rem);
}
.sm\:translate-y-64 {
transform: translateY(16rem);
}
.sm\:translate-y-72 {
transform: translateY(18rem);
}
.sm\:translate-y-80 {
transform: translateY(20rem);
}
.sm\:translate-y-96 {
transform: translateY(24rem);
}
.sm\:translate-y-auto {
transform: translateY(auto);
}
.sm\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.sm\:transition-none {
transition-property: none;
}
.sm\:transition-all {
transition-property: all;
}
.sm\:duration-75 {
transition-duration: 75ms;
}
.sm\:duration-100 {
transition-duration: 100ms;
}
.sm\:duration-150 {
transition-duration: 150ms;
}
.sm\:duration-200 {
transition-duration: 200ms;
}
.sm\:duration-300 {
transition-duration: 300ms;
}
.sm\:duration-500 {
transition-duration: 500ms;
}
.sm\:duration-750 {
transition-duration: 750ms;
}
.sm\:duration-1000 {
transition-duration: 1000ms;
}
.sm\:ease-linear {
transition-timing-function: linear;
}
.sm\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.sm\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.sm\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.sm\:motion-reduce\:transition {
transition-property: none;
}
.sm\:motion-reduce\:ease-linear {
transition-timing-function: linear;
}
.sm\:motion-reduce\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.sm\:motion-reduce\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.sm\:motion-reduce\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.sm\:motion-reduce\:duration-0 {
transition-duration: 0ms;
}
.sm\:motion-reduce\:duration-75 {
transition-duration: 75ms;
}
.sm\:motion-reduce\:duration-100 {
transition-duration: 100ms;
}
.sm\:motion-reduce\:duration-150 {
transition-duration: 150ms;
}
.sm\:motion-reduce\:duration-200 {
transition-duration: 200ms;
}
.sm\:motion-reduce\:duration-300 {
transition-duration: 300ms;
}
.sm\:motion-reduce\:duration-500 {
transition-duration: 500ms;
}
.sm\:motion-reduce\:duration-750 {
transition-duration: 750ms;
}
.sm\:motion-reduce\:duration-1000 {
transition-duration: 1000ms;
}
.sm\:motion-safe\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.sm\:motion-safe\:ease-linear {
transition-timing-function: linear;
}
.sm\:motion-safe\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.sm\:motion-safe\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.sm\:motion-safe\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.sm\:motion-safe\:duration-0 {
transition-duration: 0ms;
}
.sm\:motion-safe\:duration-75 {
transition-duration: 75ms;
}
.sm\:motion-safe\:duration-100 {
transition-duration: 100ms;
}
.sm\:motion-safe\:duration-150 {
transition-duration: 150ms;
}
.sm\:motion-safe\:duration-200 {
transition-duration: 200ms;
}
.sm\:motion-safe\:duration-300 {
transition-duration: 300ms;
}
.sm\:motion-safe\:duration-500 {
transition-duration: 500ms;
}
.sm\:motion-safe\:duration-750 {
transition-duration: 750ms;
}
.sm\:motion-safe\:duration-1000 {
transition-duration: 1000ms;
}
}
@media (min-width: 768px) {
.md\:grid-cols-1 {
grid-template-columns: 1fr;
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, 1fr);
}
.md\:col-span-1 {
grid-column: span 1 / span 1;
}
.md\:col-span-2 {
grid-column: span 2 / span 2;
}
.md\:row-span-1 {
grid-row: span 1 / span 1;
}
.md\:row-span-2 {
grid-row: span 2 / span 2;
}
.md\:col-start-1 {
grid-column-start: 1;
}
.md\:col-start-2 {
grid-column-start: 2;
}
.md\:col-end-1 {
grid-column-end: 1;
}
.md\:col-end-2 {
grid-column-end: 2;
}
.md\:row-start-1 {
grid-row-start: 1;
}
.md\:row-start-2 {
grid-row-start: 2;
}
.md\:row-end-1 {
grid-row-end: 1;
}
.md\:row-end-2 {
grid-row-end: 2;
}
.md\:text-left {
text-align: left;
}
.md\:text-right {
text-align: right;
}
.md\:text-justify {
text-align: justify;
}
.md\:text-uppercase {
text-transform: uppercase;
}
.md\:text-lowercase {
text-transform: lowercase;
}
.md\:text-capitalize {
text-transform: capitalize;
}
.md\:font-normal {
font-weight: normal;
}
.md\:font-medium {
font-weight: 500;
}
.md\:font-semibold {
font-weight: 600;
}
.md\:font-extrabold {
font-weight: 800;
}
.md\:italic {
font-style: italic;
}
.md\:underline {
text-decoration: underline;
}
.md\:line-through {
text-decoration: line-through;
}
.md\:no-underline {
text-decoration: none;
}
.md\:opacity-0 {
opacity: 0;
}
.md\:opacity-50 {
opacity: 0.5;
}
.md\:opacity-100 {
opacity: 1;
}
.md\:invisible {
visibility: hidden;
}
.md\:visible {
visibility: visible;
}
.md\:sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.md\:relative {
position: relative;
}
.md\:absolute {
position: absolute;
}
.md\:fixed {
position: fixed;
}
.md\:sticky {
position: sticky;
}
.md\:top-0 {
top: 0;
}
.md\:bottom-0 {
bottom: 0;
}
.md\:left-0 {
left: 0;
}
.md\:right-0 {
right: 0;
}
.md\:z-0 {
z-index: 0;
}
.md\:z-10 {
z-index: 10;
}
.md\:z-20 {
z-index: 20;
}
.md\:z-30 {
z-index: 30;
}
.md\:z-40 {
z-index: 40;
}
.md\:z-50 {
z-index: 50;
}
.md\:z-auto {
z-index: auto;
}
.md\:transform {
transform: translate3d(0, 0, 0);
}
.md\:transform-gpu {
transform: translate3d(0, 0, 0);
}
.md\:scale-0 {
transform: scale(0);
}
.md\:scale-50 {
transform: scale(0.5);
}
.md\:scale-75 {
transform: scale(0.75);
}
.md\:scale-90 {
transform: scale(0.9);
}
.md\:scale-100 {
transform: scale(1);
}
.md\:scale-110 {
transform: scale(1.1);
}
.md\:scale-125 {
transform: scale(1.25);
}
.md\:scale-150 {
transform: scale(1.5);
}
.md\:rotate-0 {
transform: rotate(0deg);
}
.md\:rotate-90 {
transform: rotate(90deg);
}
.md\:rotate-180 {
transform: rotate(180deg);
}
.md\:rotate-270 {
transform: rotate(270deg);
}
.md\:skew-x-0 {
transform: skewX(0deg);
}
.md\:skew-x-12 {
transform: skewX(12deg);
}
.md\:skew-y-0 {
transform: skewY(0deg);
}
.md\:skew-y-12 {
transform: skewY(12deg);
}
.md\:translate-x-0 {
transform: translateX(0px);
}
.md\:translate-x-1 {
transform: translateX(0.25rem);
}
.md\:translate-x-2 {
transform: translateX(0.5rem);
}
.md\:translate-x-3 {
transform: translateX(0.75rem);
}
.md\:translate-x-4 {
transform: translateX(1rem);
}
.md\:translate-x-5 {
transform: translateX(1.25rem);
}
.md\:translate-x-6 {
transform: translateX(1.5rem);
}
.md\:translate-x-8 {
transform: translateX(2rem);
}
.md\:translate-x-10 {
transform: translateX(2.5rem);
}
.md\:translate-x-12 {
transform: translateX(3rem);
}
.md\:translate-x-16 {
transform: translateX(4rem);
}
.md\:translate-x-20 {
transform: translateX(5rem);
}
.md\:translate-x-24 {
transform: translateX(6rem);
}
.md\:translate-x-32 {
transform: translateX(8rem);
}
.md\:translate-x-40 {
transform: translateX(10rem);
}
.md\:translate-x-48 {
transform: translateX(12rem);
}
.md\:translate-x-56 {
transform: translateX(14rem);
}
.md\:translate-x-64 {
transform: translateX(16rem);
}
.md\:translate-x-72 {
transform: translateX(18rem);
}
.md\:translate-x-80 {
transform: translateX(20rem);
}
.md\:translate-x-96 {
transform: translateX(24rem);
}
.md\:translate-x-auto {
transform: translateX(auto);
}
.md\:translate-y-0 {
transform: translateY(0px);
}
.md\:translate-y-1 {
transform: translateY(0.25rem);
}
.md\:translate-y-2 {
transform: translateY(0.5rem);
}
.md\:translate-y-3 {
transform: translateY(0.75rem);
}
.md\:translate-y-4 {
transform: translateY(1rem);
}
.md\:translate-y-5 {
transform: translateY(1.25rem);
}
.md\:translate-y-6 {
transform: translateY(1.5rem);
}
.md\:translate-y-8 {
transform: translateY(2rem);
}
.md\:translate-y-10 {
transform: translateY(2.5rem);
}
.md\:translate-y-12 {
transform: translateY(3rem);
}
.md\:translate-y-16 {
transform: translateY(4rem);
}
.md\:translate-y-20 {
transform: translateY(5rem);
}
.md\:translate-y-24 {
transform: translateY(6rem);
}
.md\:translate-y-32 {
transform: translateY(8rem);
}
.md\:translate-y-40 {
transform: translateY(10rem);
}
.md\:translate-y-48 {
transform: translateY(12rem);
}
.md\:translate-y-56 {
transform: translateY(14rem);
}
.md\:translate-y-64 {
transform: translateY(16rem);
}
.md\:translate-y-72 {
transform: translateY(18rem);
}
.md\:translate-y-80 {
transform: translateY(20rem);
}
.md\:translate-y-96 {
transform: translateY(24rem);
}
.md\:translate-y-auto {
transform: translateY(auto);
}
.md\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.md\:transition-none {
transition-property: none;
}
.md\:transition-all {
transition-property: all;
}
.md\:duration-75 {
transition-duration: 75ms;
}
.md\:duration-100 {
transition-duration: 100ms;
}
.md\:duration-150 {
transition-duration: 150ms;
}
.md\:duration-200 {
transition-duration: 200ms;
}
.md\:duration-300 {
transition-duration: 300ms;
}
.md\:duration-500 {
transition-duration: 500ms;
}
.md\:duration-750 {
transition-duration: 750ms;
}
.md\:duration-1000 {
transition-duration: 1000ms;
}
.md\:ease-linear {
transition-timing-function: linear;
}
.md\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.md\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.md\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.md\:motion-reduce\:transition {
transition-property: none;
}
.md\:motion-reduce\:ease-linear {
transition-timing-function: linear;
}
.md\:motion-reduce\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.md\:motion-reduce\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.md\:motion-reduce\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.md\:motion-reduce\:duration-0 {
transition-duration: 0ms;
}
.md\:motion-reduce\:duration-75 {
transition-duration: 75ms;
}
.md\:motion-reduce\:duration-100 {
transition-duration: 100ms;
}
.md\:motion-reduce\:duration-150 {
transition-duration: 150ms;
}
.md\:motion-reduce\:duration-200 {
transition-duration: 200ms;
}
.md\:motion-reduce\:duration-300 {
transition-duration: 300ms;
}
.md\:motion-reduce\:duration-500 {
transition-duration: 500ms;
}
.md\:motion-reduce\:duration-750 {
transition-duration: 750ms;
}
.md\:motion-reduce\:duration-1000 {
transition-duration: 1000ms;
}
.md\:motion-safe\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.md\:motion-safe\:ease-linear {
transition-timing-function: linear;
}
.md\:motion-safe\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.md\:motion-safe\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.md\:motion-safe\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.md\:motion-safe\:duration-0 {
transition-duration: 0ms;
}
.md\:motion-safe\:duration-75 {
transition-duration: 75ms;
}
.md\:motion-safe\:duration-100 {
transition-duration: 100ms;
}
.md\:motion-safe\:duration-150 {
transition-duration: 150ms;
}
.md\:motion-safe\:duration-200 {
transition-duration: 200ms;
}
.md\:motion-safe\:duration-300 {
transition-duration: 300ms;
}
.md\:motion-safe\:duration-500 {
transition-duration: 500ms;
}
.md\:motion-safe\:duration-750 {
transition-duration: 750ms;
}
.md\:motion-safe\:duration-1000 {
transition-duration: 1000ms;
}
}
@media (min-width: 1024px) {
.lg\:grid-cols-1 {
grid-template-columns: 1fr;
}
.lg\:grid-cols-2 {
grid-template-columns: repeat(2, 1fr);
}
.lg\:col-span-1 {
grid-column: span 1 / span 1;
}
.lg\:col-span-2 {
grid-column: span 2 / span 2;
}
.lg\:row-span-1 {
grid-row: span 1 / span 1;
}
.lg\:row-span-2 {
grid-row: span 2 / span 2;
}
.lg\:col-start-1 {
grid-column-start: 1;
}
.lg\:col-start-2 {
grid-column-start: 2;
}
.lg\:col-end-1 {
grid-column-end: 1;
}
.lg\:col-end-2 {
grid-column-end: 2;
}
.lg\:row-start-1 {
grid-row-start: 1;
}
.lg\:row-start-2 {
grid-row-start: 2;
}
.lg\:row-end-1 {
grid-row-end: 1;
}
.lg\:row-end-2 {
grid-row-end: 2;
}
.lg\:text-left {
text-align: left;
}
.lg\:text-right {
text-align: right;
}
.lg\:text-justify {
text-align: justify;
}
.lg\:text-uppercase {
text-transform: uppercase;
}
.lg\:text-lowercase {
text-transform: lowercase;
}
.lg\:text-capitalize {
text-transform: capitalize;
}
.lg\:font-normal {
font-weight: normal;
}
.lg\:font-medium {
font-weight: 500;
}
.lg\:font-semibold {
font-weight: 600;
}
.lg\:font-extrabold {
font-weight: 800;
}
.lg\:italic {
font-style: italic;
}
.lg\:underline {
text-decoration: underline;
}
.lg\:line-through {
text-decoration: line-through;
}
.lg\:no-underline {
text-decoration: none;
}
.lg\:opacity-0 {
opacity: 0;
}
.lg\:opacity-50 {
opacity: 0.5;
}
.lg\:opacity-100 {
opacity: 1;
}
.lg\:invisible {
visibility: hidden;
}
.lg\:visible {
visibility: visible;
}
.lg\:sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.lg\:relative {
position: relative;
}
.lg\:absolute {
position: absolute;
}
.lg\:fixed {
position: fixed;
}
.lg\:sticky {
position: sticky;
}
.lg\:top-0 {
top: 0;
}
.lg\:bottom-0 {
bottom: 0;
}
.lg\:left-0 {
left: 0;
}
.lg\:right-0 {
right: 0;
}
.lg\:z-0 {
z-index: 0;
}
.lg\:z-10 {
z-index: 10;
}
.lg\:z-20 {
z-index: 20;
}
.lg\:z-30 {
z-index: 30;
}
.lg\:z-40 {
z-index: 40;
}
.lg\:z-50 {
z-index: 50;
}
.lg\:z-auto {
z-index: auto;
}
.lg\:transform {
transform: translate3d(0, 0, 0);
}
.lg\:transform-gpu {
transform: translate3d(0, 0, 0);
}
.lg\:scale-0 {
transform: scale(0);
}
.lg\:scale-50 {
transform: scale(0.5);
}
.lg\:scale-75 {
transform: scale(0.75);
}
.lg\:scale-90 {
transform: scale(0.9);
}
.lg\:scale-100 {
transform: scale(1);
}
.lg\:scale-110 {
transform: scale(1.1);
}
.lg\:scale-125 {
transform: scale(1.25);
}
.lg\:scale-150 {
transform: scale(1.5);
}
.lg\:rotate-0 {
transform: rotate(0deg);
}
.lg\:rotate-90 {
transform: rotate(90deg);
}
.lg\:rotate-180 {
transform: rotate(180deg);
}
.lg\:rotate-270 {
transform: rotate(270deg);
}
.lg\:skew-x-0 {
transform: skewX(0deg);
}
.lg\:skew-x-12 {
transform: skewX(12deg);
}
.lg\:skew-y-0 {
transform: skewY(0deg);
}
.lg\:skew-y-12 {
transform: skewY(12deg);
}
.lg\:translate-x-0 {
transform: translateX(0px);
}
.lg\:translate-x-1 {
transform: translateX(0.25rem);
}
.lg\:translate-x-2 {
transform: translateX(0.5rem);
}
.lg\:translate-x-3 {
transform: translateX(0.75rem);
}
.lg\:translate-x-4 {
transform: translateX(1rem);
}
.lg\:translate-x-5 {
transform: translateX(1.25rem);
}
.lg\:translate-x-6 {
transform: translateX(1.5rem);
}
.lg\:translate-x-8 {
transform: translateX(2rem);
}
.lg\:translate-x-10 {
transform: translateX(2.5rem);
}
.lg\:translate-x-12 {
transform: translateX(3rem);
}
.lg\:translate-x-16 {
transform: translateX(4rem);
}
.lg\:translate-x-20 {
transform: translateX(5rem);
}
.lg\:translate-x-24 {
transform: translateX(6rem);
}
.lg\:translate-x-32 {
transform: translateX(8rem);
}
.lg\:translate-x-40 {
transform: translateX(10rem);
}
.lg\:translate-x-48 {
transform: translateX(12rem);
}
.lg\:translate-x-56 {
transform: translateX(14rem);
}
.lg\:translate-x-64 {
transform: translateX(16rem);
}
.lg\:translate-x-72 {
transform: translateX(18rem);
}
.lg\:translate-x-80 {
transform: translateX(20rem);
}
.lg\:translate-x-96 {
transform: translateX(24rem);
}
.lg\:translate-x-auto {
transform: translateX(auto);
}
.lg\:translate-y-0 {
transform: translateY(0px);
}
.lg\:translate-y-1 {
transform: translateY(0.25rem);
}
.lg\:translate-y-2 {
transform: translateY(0.5rem);
}
.lg\:translate-y-3 {
transform: translateY(0.75rem);
}
.lg\:translate-y-4 {
transform: translateY(1rem);
}
.lg\:translate-y-5 {
transform: translateY(1.25rem);
}
.lg\:translate-y-6 {
transform: translateY(1.5rem);
}
.lg\:translate-y-8 {
transform: translateY(2rem);
}
.lg\:translate-y-10 {
transform: translateY(2.5rem);
}
.lg\:translate-y-12 {
transform: translateY(3rem);
}
.lg\:translate-y-16 {
transform: translateY(4rem);
}
.lg\:translate-y-20 {
transform: translateY(5rem);
}
.lg\:translate-y-24 {
transform: translateY(6rem);
}
.lg\:translate-y-32 {
transform: translateY(8rem);
}
.lg\:translate-y-40 {
transform: translateY(10rem);
}
.lg\:translate-y-48 {
transform: translateY(12rem);
}
.lg\:translate-y-56 {
transform: translateY(14rem);
}
.lg\:translate-y-64 {
transform: translateY(16rem);
}
.lg\:translate-y-72 {
transform: translateY(18rem);
}
.lg\:translate-y-80 {
transform: translateY(20rem);
}
.lg\:translate-y-96 {
transform: translateY(24rem);
}
.lg\:translate-y-auto {
transform: translateY(auto);
}
.lg\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.lg\:transition-none {
transition-property: none;
}
.lg\:transition-all {
transition-property: all;
}
.lg\:duration-75 {
transition-duration: 75ms;
}
.lg\:duration-100 {
transition-duration: 100ms;
}
.lg\:duration-150 {
transition-duration: 150ms;
}
.lg\:duration-200 {
transition-duration: 200ms;
}
.lg\:duration-300 {
transition-duration: 300ms;
}
.lg\:duration-500 {
transition-duration: 500ms;
}
.lg\:duration-750 {
transition-duration: 750ms;
}
.lg\:duration-1000 {
transition-duration: 1000ms;
}
.lg\:ease-linear {
transition-timing-function: linear;
}
.lg\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.lg\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.lg\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.lg\:motion-reduce\:transition {
transition-property: none;
}
.lg\:motion-reduce\:ease-linear {
transition-timing-function: linear;
}
.lg\:motion-reduce\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.lg\:motion-reduce\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.lg\:motion-reduce\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.lg\:motion-reduce\:duration-0 {
transition-duration: 0ms;
}
.lg\:motion-reduce\:duration-75 {
transition-duration: 75ms;
}
.lg\:motion-reduce\:duration-100 {
transition-duration: 100ms;
}
.lg\:motion-reduce\:duration-150 {
transition-duration: 150ms;
}
.lg\:motion-reduce\:duration-200 {
transition-duration: 200ms;
}
.lg\:motion-reduce\:duration-300 {
transition-duration: 300ms;
}
.lg\:motion-reduce\:duration-500 {
transition-duration: 500ms;
}
.lg\:motion-reduce\:duration-750 {
transition-duration: 750ms;
}
.lg\:motion-reduce\:duration-1000 {
transition-duration: 1000ms;
}
.lg\:motion-safe\:transition {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.lg\:motion-safe\:ease-linear {
transition-timing-function: linear;
}
.lg\:motion-safe\:ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.lg\:motion-safe\:ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.lg\:motion-safe\:ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.lg\:motion-safe\:duration-0 {
transition-duration: 0ms;
}
.lg\:motion-safe\:duration-75 {
transition-duration: 75ms;
}
.lg\:motion-safe\:duration-100 {
transition-duration: 100ms;
}
.lg\:motion-safe\:duration-150 {
transition-duration: 150ms;
}
.lg\:motion-safe\:duration-200 {
transition-duration: 200ms;
}
.lg\:motion-safe\:duration-300 {
transition-duration: 300ms;
}
.lg\:motion-safe\:duration-500 {
transition-duration: 500ms;
}
.lg\:motion-safe\:duration-750 {
transition-duration: 750ms;
}
.lg\:motion-safe\:duration-1000 {
transition-duration: 1000ms;
}
}
Calculate Tax
Reset
Copy Results
Your Estimated NJ Tax
$0.00
Taxable Income: $0.00
Tax Before Credits: $0.00
Dependent Exemption Credit: $0.00
Calculated based on NJ tax brackets, deductions, and credits.
NJ Tax Liability Breakdown
Visual representation of your tax components.
What is NJ Tax?
New Jersey (NJ) tax refers to the state income tax levied by the government of New Jersey on the income earned by its residents and non-residents who derive income from sources within the state. This tax is a significant source of revenue for the state, funding public services such as education, infrastructure, and healthcare. Understanding your NJ tax obligations is crucial for financial planning and compliance. The state employs a progressive tax system, meaning higher earners generally pay a larger percentage of their income in taxes.
Who should use the NJ Tax Calculator?
Anyone who earns income in New Jersey, whether they are a resident or a non-resident with NJ-sourced income, should be concerned with NJ tax . This includes employees, self-employed individuals, retirees receiving pensions or retirement income, and investors with capital gains or dividend income from NJ sources. The calculator is particularly useful for estimating your annual tax burden, planning for tax payments, and making informed financial decisions throughout the year.
Common Misconceptions about NJ Tax:
One common misconception is that New Jersey has a flat tax rate, similar to some other states. In reality, NJ uses a progressive tax bracket system. Another misconception is that all retirement income is tax-free; while some retirement income may be exempt, much of it is taxable. Finally, many people underestimate the impact of tax credits and deductions, believing they only apply to very high or very low incomes. Our NJ tax calculator helps clarify these points by applying the actual tax rules.
NJ Tax Formula and Mathematical Explanation
Calculating your New Jersey state income tax involves several steps, primarily determining your taxable income and then applying the appropriate tax rates and credits. The general formula can be broken down as follows:
Gross Income: This is all income you receive from all sources, including wages, salaries, tips, bonuses, interest, dividends, capital gains, business income, and retirement income.
Adjusted Gross Income (AGI): For New Jersey purposes, AGI is generally your Gross Income minus certain allowable deductions (like contributions to retirement plans, student loan interest, etc.). For simplicity in this calculator, we'll assume Gross Income is the starting point for calculating taxable income after standard or itemized deductions.
Deductions: You can choose either the Standard Deduction or Itemized Deductions, whichever yields a lower tax liability. The standard deduction amounts vary by filing status. Itemized deductions can include things like medical expenses (above a threshold), state and local taxes (SALT) up to $10,000, home mortgage interest, and charitable contributions.
Taxable Income: This is calculated as Gross Income (or AGI) minus your chosen deductions. Taxable Income = Gross Income - Deductions
Tax Before Credits: New Jersey uses a progressive tax rate schedule. Your Taxable Income is divided into income tiers, and each tier is taxed at a specific rate. The total tax is the sum of the tax calculated for each tier.
Dependent Exemption Credit: New Jersey provides a tax credit for each dependent. This credit directly reduces your tax liability.
Other Tax Credits: Additional credits may be available, such as the Earned Income Tax Credit (EITC), property tax credits, etc.
Net Tax Due: This is your final tax liability after applying all applicable credits. Net Tax Due = Tax Before Credits - Dependent Exemption Credit - Other Tax Credits
Variables Table:
Variable
Meaning
Unit
Typical Range / Notes
Gross Annual Income
Total income earned before any deductions or credits.
USD ($)
$0 – $1,000,000+
Filing Status
Marital status and household situation.
Category
Single, Married Filing Jointly, Married Filing Separately, Head of Household
Number of Dependents
Qualifying children or relatives claimed on your tax return.
Count
0 – 10+
Deductions
Expenses subtracted from income to reduce taxable income. Can be Standard or Itemized.
USD ($)
$0 – $20,000+ (Standard deductions are fixed amounts based on filing status; itemized can vary widely)
Tax Credits
Direct dollar-for-dollar reduction of tax liability.
USD ($)
$0 – $1,000+ (Varies greatly based on specific credits)
Taxable Income
Income remaining after deductions, subject to tax rates.
USD ($)
$0 – Gross Income – Deductions
Tax Before Credits
Calculated tax based on Taxable Income and NJ tax brackets.
USD ($)
$0 – Varies significantly
Dependent Exemption Credit
Credit for each qualifying dependent.
USD ($)
$0 – $300 per dependent (as of recent tax years)
Estimated Tax
Final tax liability after all credits.
USD ($)
$0 – Varies significantly
Practical Examples (Real-World Use Cases)
Let's illustrate how the NJ tax calculator works with two distinct scenarios:
Example 1: Single Filer with Moderate Income
Scenario: Sarah is single and lives in Hoboken, NJ. She earns a gross annual income of $80,000. She has one qualifying child and chooses to take the standard deduction for a single filer. She also has $200 in total tax credits (e.g., from specific state programs).
Inputs:
Gross Annual Income: $80,000
Filing Status: Single
Number of Dependents: 1
Deductions: Standard Deduction (for Single filer, approx. $6,700 for 2023)
Total Tax Credits: $200
Calculation Steps (Simplified):
Taxable Income = $80,000 (Gross Income) – $6,700 (Standard Deduction) = $73,300
Tax Before Credits: Using NJ's progressive tax brackets for a single filer, $73,300 would fall into several brackets, resulting in an estimated tax liability (e.g., around $3,000 – $3,500, depending on exact bracket calculations). Let's estimate $3,250 for illustration.
Dependent Exemption Credit: For 1 dependent, this might be $300.
Estimated Tax = $3,250 (Tax Before Credits) – $300 (Dependent Credit) – $200 (Other Credits) = $2,750
Result: Sarah's estimated NJ tax liability is approximately $2,750. This shows how deductions and credits significantly reduce the final tax owed.
Example 2: Married Couple Filing Jointly with Higher Income
Scenario: John and Jane are married and file jointly. Their combined gross annual income is $150,000. They have two qualifying children. They choose to itemize their deductions, totaling $18,000 (including mortgage interest, property taxes, and charitable donations). They have no additional tax credits.
Inputs:
Gross Annual Income: $150,000
Filing Status: Married Filing Jointly
Number of Dependents: 2
Deductions: Itemized Deductions = $18,000
Total Tax Credits: $0
Calculation Steps (Simplified):
Taxable Income = $150,000 (Gross Income) – $18,000 (Itemized Deductions) = $132,000
Tax Before Credits: Applying NJ's progressive tax brackets for married filing jointly to $132,000 would result in a higher tax amount than Sarah's case (e.g., around $7,000 – $8,000). Let's estimate $7,500.
Dependent Exemption Credit: For 2 dependents, this might be 2 * $300 = $600.
Estimated Tax = $7,500 (Tax Before Credits) – $600 (Dependent Credits) – $0 (Other Credits) = $6,900
Result: John and Jane's estimated NJ tax liability is approximately $6,900. This example highlights how higher income and more dependents affect the tax calculation, while itemizing deductions can be beneficial.
How to Use This NJ Tax Calculator
Our NJ tax calculator is designed for ease of use. Follow these simple steps to get your estimated tax liability:
Enter Gross Annual Income: Input your total income from all sources before any deductions or credits. This includes wages, salaries, self-employment income, interest, dividends, etc.
Select Filing Status: Choose the status that accurately reflects your situation: Single, Married Filing Jointly, Married Filing Separately, or Head of Household. This choice impacts tax brackets and standard deduction amounts.
Enter Number of Dependents: Specify the number of qualifying children or other dependents you claim. This affects your dependent exemption credit.
Enter Deductions: You have two options:
Standard Deduction: If you don't itemize, use the standard deduction amount appropriate for your filing status (the calculator may use a default or you can input it if known).
Itemized Deductions: If your itemized deductions (e.g., mortgage interest, state/local taxes up to $10k, charitable contributions) exceed the standard deduction, enter the total amount here.
For simplicity, this calculator assumes you input the *larger* of the two applicable deduction amounts.
Enter Total Tax Credits: Input the total value of any tax credits you are eligible for. This includes the dependent exemption credit (calculated by the tool based on dependents) and any other state-specific credits.
Click "Calculate Tax": The calculator will instantly display your estimated New Jersey income tax.
How to Read Results:
Estimated Tax: This is your primary result – the total amount of New Jersey income tax you are estimated to owe.
Taxable Income: The amount of your income that is subject to New Jersey's progressive tax rates after deductions.
Tax Before Credits: The initial tax calculated based on your taxable income and the state's tax brackets.
Dependent Exemption Credit: The specific credit amount applied for your dependents.
Decision-Making Guidance:
Use these results to budget for your tax payments. If the estimated tax is higher than expected, consider strategies to increase deductions or utilize available tax credits. If you are self-employed, remember to factor in estimated tax payments. For complex situations, consulting a tax professional is always recommended. This tool provides an estimate, not a definitive tax return.
Key Factors That Affect NJ Tax Results
Several factors significantly influence your New Jersey tax liability. Understanding these can help you optimize your tax situation:
Gross Income Level: As a progressive tax state, New Jersey taxes higher income levels at higher rates. A $10,000 increase in income at the top of a tax bracket will have a larger impact than the same increase at the bottom.
Filing Status: Your filing status (Single, Married Filing Jointly, etc.) determines which tax brackets and standard deduction amounts apply. Married couples filing jointly often benefit from lower effective tax rates compared to two single individuals with the same combined income.
Deductions (Standard vs. Itemized): Choosing between the standard deduction and itemizing is critical. If your itemized deductions (mortgage interest, SALT, medical expenses, charitable donations) exceed the standard deduction for your filing status, itemizing will lower your taxable income and thus your NJ tax .
Number of Dependents: Each qualifying dependent provides a tax credit, directly reducing your tax bill. Maximizing legitimate dependent claims is essential.
Tax Credits: Beyond the dependent credit, New Jersey offers various credits (e.g., Property Tax Relief, Earned Income Tax Credit). These credits offer dollar-for-dollar reductions and can significantly lower your final tax owed. Always research available credits.
Retirement Income: While New Jersey offers some exemptions for certain retirement income (like Social Security benefits for lower/middle incomes), pensions and withdrawals from retirement accounts are generally taxable. The amount and type of retirement income are key factors.
Investment Income: Capital gains and dividends are taxed in New Jersey. The rates can vary, and understanding these is important for investors.
Residency Status: New Jersey taxes residents on all income and non-residents only on income earned within the state. This distinction is crucial for those who work in NJ but live elsewhere, or vice versa.
Frequently Asked Questions (FAQ)
Q1: Is New Jersey income tax progressive?
Yes, New Jersey has a progressive income tax system. This means the tax rate increases as your income increases. Different portions of your taxable income are taxed at different rates according to established tax brackets.
Q2: What is the difference between a tax deduction and a tax credit in NJ?
A tax deduction (like mortgage interest or charitable donations) reduces your *taxable income*. A tax credit (like the dependent exemption credit) directly reduces the amount of *tax you owe* dollar-for-dollar. Credits are generally more valuable than deductions.
Q3: How much is the standard deduction in New Jersey?
Standard deduction amounts vary by filing status and are updated annually. For example, for the 2023 tax year, the standard deduction for a single filer was $6,700, and for married filing jointly, it was $13,400. Always check the latest figures from the NJ Division of Taxation.
Q4: Are retirement benefits taxed in New Jersey?
It depends. Social Security benefits may be exempt for taxpayers below certain income thresholds. Pensions and withdrawals from 401(k)s, IRAs, and other retirement accounts are generally taxable as ordinary income, though some exemptions or deductions might apply based on age and income.
Q5: Do I have to pay NJ tax if I work remotely from another state but my employer is in NJ?
Generally, if you work for a New Jersey employer, even remotely from another state, your wages are considered New Jersey-sourced income and are subject to NJ income tax. However, New Jersey has "Totalization Agreements" with certain states (like Pennsylvania) that may provide relief from double taxation. You might be able to claim a credit for taxes paid to your state of residence. It's complex and often requires professional advice.
Q6: What is the NJ dependent exemption credit amount?
The amount of the dependent exemption credit can change annually. For recent tax years, it has been around $300 per qualifying dependent. This credit directly reduces your tax liability.
Q7: Can I deduct my property taxes on my NJ tax return?
Yes, you can typically deduct state and local taxes (SALT), including property taxes, up to a limit of $10,000 per household per year. This deduction is part of itemized deductions. If you don't itemize, you cannot deduct property taxes.
Q8: How often should I update my tax withholding (W-4) based on NJ tax changes?
It's wise to review your withholding annually, especially if there are significant changes to tax laws, your income, or your personal circumstances (like marriage, having a child, or buying a home). This ensures you're not overpaying or underpaying your NJ tax throughout the year.
var taxBrackets = {
single: [
{ limit: 0, rate: 0.014, baseTax: 0 },
{ limit: 20000, rate: 0.0175, baseTax: 28 },
{ limit: 35000, rate: 0.0245, baseTax: 134.5 },
{ limit: 40000, rate: 0.0315, baseTax: 257.75 },
{ limit: 75000, rate: 0.0475, baseTax: 1415.25 },
{ limit: 150000, rate: 0.05525, baseTax: 7540.25 },
{ limit: 200000, rate: 0.0637, baseTax: 11901.50 },
{ limit: 1000000, rate: 0.0897, baseTax: 17001.50 },
{ limit: Infinity, rate: 0.1075, baseTax: 88001.50 }
],
married_filing_jointly: [
{ limit: 0, rate: 0.014, baseTax: 0 },
{ limit: 20000, rate: 0.0175, baseTax: 28 },
{ limit: 40000, rate: 0.0245, baseTax: 63 },
{ limit: 50000, rate: 0.0315, baseTax: 155.5 },
{ limit: 100000, rate: 0.0475, baseTax: 770.5 },
{ limit: 170000, rate: 0.05525, baseTax: 10530.5 },
{ limit: 250000, rate: 0.0637, baseTax: 14716.5 },
{ limit: Infinity, rate: 0.1075, baseTax: 19816.5 }
],
married_filing_separately: [
{ limit: 0, rate: 0.014, baseTax: 0 },
{ limit: 10000, rate: 0.0175, baseTax: 14 },
{ limit: 20000, rate: 0.0245, baseTax: 42 },
{ limit: 25000, rate: 0.0315, baseTax: 100.75 },
{ limit: 50000, rate: 0.0475, baseTax: 1875.75 },
{ limit: 85000, rate: 0.05525, baseTax: 5265.75 },
{ limit: 125000, rate: 0.0637, baseTax: 7358.75 },
{ limit: Infinity, rate: 0.1075, baseTax: 10108.75 }
],
head_of_household: [
{ limit: 0, rate: 0.014, baseTax: 0 },
{ limit: 20000, rate: 0.0175, baseTax: 28 },
{ limit: 40000, rate: 0.0245, baseTax: 63 },
{ limit: 50000, rate: 0.0315, baseTax: 155.5 },
{ limit: 100000, rate: 0.0475, baseTax: 770.5 },
{ limit: 170000, rate: 0.05525, rate: 10530.5 },
{ limit: 250000, rate: 0.0637, baseTax: 14716.5 },
{ limit: Infinity, rate: 0.1075, baseTax: 19816.5 }
]
};
var standardDeductions = {
single: 6700,
married_filing_jointly: 13400,
married_filing_separately: 6700,
head_of_household: 9700
};
var dependentCreditAmount = 300; // Per dependent
var chart = null;
function validateInput(id, min, max) {
var input = document.getElementById(id);
var errorElement = document.getElementById(id + 'Error');
var value = parseFloat(input.value);
var isValid = true;
errorElement.innerText = ";
errorElement.classList.remove('visible');
input.classList.remove('border-danger');
if (isNaN(value)) {
errorElement.innerText = 'Please enter a valid number.';
isValid = false;
} else if (value max) {
errorElement.innerText = 'Value exceeds maximum limit.';
isValid = false;
}
if (!isValid) {
input.classList.add('border-danger');
}
return isValid;
}
function calculateNJTax() {
var grossIncome = parseFloat(document.getElementById('grossIncome').value);
var filingStatus = document.getElementById('filingStatus').value;
var dependents = parseInt(document.getElementById('dependents').value);
var deductionsInput = parseFloat(document.getElementById('deductions').value);
var taxCredits = parseFloat(document.getElementById('taxCredits').value);
var resultsDiv = document.getElementById('results');
var estimatedTaxEl = document.getElementById('estimatedTax');
var taxableIncomeEl = document.getElementById('taxableIncome');
var taxBeforeCreditsEl = document.getElementById('taxBeforeCredits');
var dependentExemptionCreditEl = document.getElementById('dependentExemptionCredit');
// Input Validation
var allValid = true;
if (!validateInput('grossIncome', 0)) allValid = false;
if (!validateInput('dependents', 0)) allValid = false;
if (!validateInput('deductions', 0)) allValid = false;
if (!validateInput('taxCredits', 0)) allValid = false;
if (!allValid) {
resultsDiv.classList.add('hidden');
return;
}
// Determine Deductions (Standard vs. Itemized)
var standardDeduction = standardDeductions[filingStatus] || 0;
var actualDeductions = Math.max(deductionsInput, standardDeduction);
if (deductionsInput < standardDeduction) {
document.getElementById('deductions').value = standardDeduction; // Update input to reflect chosen deduction
}
var taxableIncome = grossIncome – actualDeductions;
if (taxableIncome < 0) {
taxableIncome = 0;
}
var taxBeforeCredits = 0;
var brackets = taxBrackets[filingStatus];
var remainingIncome = taxableIncome;
for (var i = 0; i < brackets.length; i++) {
var bracket = brackets[i];
var taxableInBracket = 0;
if (remainingIncome 0 ? brackets[i-1].limit : 0);
taxableInBracket = Math.min(remainingIncome, incomeInThisBracket);
}
taxBeforeCredits += taxableInBracket * bracket.rate;
remainingIncome -= taxableInBracket;
}
var dependentExemptionCredit = dependents * dependentCreditAmount;
var totalCredits = dependentExemptionCredit + taxCredits;
var estimatedTax = taxBeforeCredits – totalCredits;
if (estimatedTax < 0) {
estimatedTax = 0;
}
// Format and display results
estimatedTaxEl.textContent = '$' + estimatedTax.toFixed(2);
taxableIncomeEl.textContent = 'Taxable Income: $' + taxableIncome.toFixed(2);
taxBeforeCreditsEl.textContent = 'Tax Before Credits: $' + taxBeforeCredits.toFixed(2);
dependentExemptionCreditEl.textContent = 'Dependent Exemption Credit: $' + dependentExemptionCredit.toFixed(2);
resultsDiv.classList.remove('hidden');
// Update Chart
updateChart(taxableIncome, taxBeforeCredits, dependentExemptionCredit, taxCredits);
}
function updateChart(taxableIncome, taxBeforeCredits, dependentCredit, otherCredits) {
var ctx = document.getElementById('taxChart').getContext('2d');
if (chart) {
chart.destroy();
}
var dataSeries1 = [taxBeforeCredits – dependentCredit – otherCredits, dependentCredit, otherCredits];
var dataSeries2 = [taxableIncome, 0, 0]; // Representing income base
chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Net Tax Due', 'Dependent Credit', 'Other Credits'],
datasets: [{
label: 'Tax Amount ($)',
data: dataSeries1,
backgroundColor: [
'rgba(40, 167, 69, 0.7)', // Net Tax Due (Success color)
'rgba(0, 74, 153, 0.7)', // Dependent Credit (Primary color)
'rgba(108, 117, 125, 0.7)' // Other Credits (Muted color)
],
borderColor: [
'rgba(40, 167, 69, 1)',
'rgba(0, 74, 153, 1)',
'rgba(108, 117, 125, 1)'
],
borderWidth: 1
},
{
label: 'Taxable Income Base ($)',
data: dataSeries2,
backgroundColor: 'rgba(255, 193, 7, 0.5)', // Warning color for base
borderColor: 'rgba(255, 193, 7, 1)',
borderWidth: 1,
type: 'line', // Use line for base income
fill: false,
tension: 0.1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
title: {
display: true,
text: 'Amount ($)'
}
},
x: {
title: {
display: true,
text: 'Tax Components'
}
}
},
plugins: {
legend: {
position: 'top',
},
title: {
display: true,
text: 'NJ Tax Breakdown'
}
}
}
});
}
function copyResults() {
var estimatedTax = document.getElementById('estimatedTax').textContent;
var taxableIncome = document.getElementById('taxableIncome').textContent;
var taxBeforeCredits = document.getElementById('taxBeforeCredits').textContent;
var dependentExemptionCredit = document.getElementById('dependentExemptionCredit').textContent;
var assumptions = "Key Assumptions:\n";
assumptions += "- Filing Status: " + document.getElementById('filingStatus').options[document.getElementById('filingStatus').selectedIndex].text + "\n";
assumptions += "- Number of Dependents: " + document.getElementById('dependents').value + "\n";
assumptions += "- Deductions Used: " + document.getElementById('deductions').value + "\n"; // Shows input, not necessarily chosen deduction type
assumptions += "- Total Tax Credits Entered: " + document.getElementById('taxCredits').value + "\n";
var resultsText = "— NJ Tax Calculation Results —\n\n";
resultsText += "Estimated Tax: " + estimatedTax + "\n";
resultsText += taxableIncome + "\n";
resultsText += taxBeforeCredits + "\n";
resultsText += dependentExemptionCredit + "\n\n";
resultsText += assumptions;
// Use a temporary textarea to copy text
var textArea = document.createElement("textarea");
textArea.value = resultsText;
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'Results copied to clipboard!' : 'Failed to copy results.';
alert(msg); // Simple feedback
} catch (err) {
alert('Oops, unable to copy');
}
document.body.removeChild(textArea);
}
function resetCalculator() {
document.getElementById('grossIncome').value = '';
document.getElementById('filingStatus').value = 'single';
document.getElementById('dependents').value = '0';
document.getElementById('deductions').value = '';
document.getElementById('taxCredits').value = '0';
document.getElementById('results').classList.add('hidden');
document.getElementById('grossIncomeError').innerText = '';
document.getElementById('dependentsError').innerText = '';
document.getElementById('deductionsError').innerText = '';
document.getElementById('taxCreditsError').innerText = '';
if (chart) {
chart.destroy();
chart = null;
}
// Re-initialize chart canvas if needed, or just ensure it's cleared
var canvas = document.getElementById('taxChart');
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
// Initial calculation on load if inputs have default values
document.addEventListener('DOMContentLoaded', function() {
// Add Chart.js library dynamically if not present
if (typeof Chart === 'undefined') {
var script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/chart.js';
script.onload = function() {
calculateNJTax(); // Calculate after chart library is loaded
};
document.head.appendChild(script);
} else {
calculateNJTax(); // Calculate if Chart.js is already available
}
});