:root {
    --pt-yellow: #ffcf00;
    --pt-red: #d9232e;
    --pt-ink: #171717;
    --pt-steel: #3b3b3b;
    --pt-paper: #f3f1ea;
    --pt-green: #168653;
}

body {
    background: var(--pt-paper);
    color: var(--pt-ink);
    font-family: 'Barlow', sans-serif;
}

h1,
h2,
h3,
.display-font,
.navbar-brand {
    font-family: 'Archivo Black', sans-serif;
    letter-spacing: -.035em;
}

.utility-bar {
    background: var(--pt-yellow);
    border-bottom: 3px solid var(--pt-ink);
    font-size: .8rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.admin-bar {
    background: black;
    border-bottom: 1px solid #666;
    color: #fff;
    font-size: .8rem;
    padding: .45rem 0;
}

.admin-bar-label {
    color: var(--pt-yellow);
    letter-spacing: .08em;
    text-transform: uppercase;
}

.admin-bar a {
    color: #fff;
    font-weight: 700;
    text-decoration: none;
}

.admin-bar a:hover {
    color: var(--pt-yellow);
}

.navbar {
    background: var(--pt-ink);
}

.navbar-brand {
    color: #fff;
    font-size: 1.3rem;
}

.brand-mark {
    background: var(--pt-yellow);
    color: var(--pt-ink);
    display: inline-grid;
    height: 2.1rem;
    margin-right: .55rem;
    place-items: center;
    transform: skew(-7deg);
    width: 2.1rem;
}

.hero {
    background:
        linear-gradient(115deg, rgba(23, 23, 23, .97), rgba(23, 23, 23, .88)),
        repeating-linear-gradient(135deg, transparent 0 18px, rgba(255, 255, 255, .06) 18px 20px);
    color: #fff;
    overflow: hidden;
    position: relative;
}

.hero::after {
    color: rgba(255, 207, 0, .07);
    content: 'COMPARE';
    font-family: 'Archivo Black', sans-serif;
    font-size: clamp(7rem, 18vw, 17rem);
    line-height: .8;
    position: absolute;
    right: -2rem;
    top: 1.5rem;
    transform: rotate(-5deg);
    white-space: nowrap;
}

.hero-content {
    position: relative;
    z-index: 1;
}

.eyebrow {
    color: var(--pt-red);
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.hero .eyebrow {
    color: var(--pt-yellow);
}

.hero h1 {
    font-size: clamp(2.65rem, 7vw, 6.5rem);
    line-height: .91;
    max-width: 900px;
    text-transform: uppercase;
}

.search-panel {
    background: #fff;
    border: 5px solid var(--pt-yellow);
    box-shadow: 10px 10px 0 var(--pt-red);
    max-width: 970px;
    padding: .5rem;
}

.search-panel .form-control {
    border: 0;
    box-shadow: none;
    font-size: clamp(1rem, 2vw, 1.35rem);
    font-weight: 700;
    min-height: 4rem;
}

.btn-search {
    background: var(--pt-yellow);
    border: 0;
    border-radius: 0;
    color: var(--pt-ink);
    font-weight: 800;
    min-height: 4rem;
    padding-inline: 2rem;
    text-transform: uppercase;
}

.btn-search:hover {
    background: #e9bc00;
}

.popular-searches a {
    color: #fff;
    font-weight: 700;
    margin-inline: .3rem;
    text-underline-offset: .2rem;
}

.popular-searches a:hover {
    color: var(--pt-yellow);
}

.section-heading h2 {
    font-size: clamp(2rem, 4vw, 3.25rem);
    text-transform: uppercase;
}

.section-number {
    color: var(--pt-red);
    font-family: 'Archivo Black', sans-serif;
    font-size: 1rem;
    margin-right: .45rem;
}

.brand-card,
.type-card {
    background: #fff;
    border: 2px solid var(--pt-ink);
    border-radius: 0;
    color: var(--pt-ink);
    display: block;
    height: 100%;
    text-decoration: none;
    transition: transform .15s ease, box-shadow .15s ease;
}

.brand-card:hover,
.type-card:hover {
    box-shadow: 6px 6px 0 var(--pt-ink);
    color: var(--pt-ink);
    transform: translate(-3px, -3px);
}

.brand-card {
    align-items: center;
    display: flex;
    flex-direction: column;
    font-family: 'Archivo Black', sans-serif;
    font-size: 1.2rem;
    justify-content: center;
    min-height: 112px;
    padding: 1rem;
    text-align: center;
    text-transform: uppercase;
}

.brand-card small {
    font-family: 'Barlow', sans-serif;
    font-size: .75rem;
    font-weight: 700;
    margin-top: .25rem;
    opacity: .7;
    text-transform: none;
}

.brand-card--dewalt {
    background: var(--pt-yellow);
}

.brand-card--milwaukee {
    background: var(--pt-red);
    color: #fff;
}

.brand-card--milwaukee:hover {
    color: #fff;
}

.brand-card--makita {
    background: #008c95;
    color: #fff;
}

.brand-card--makita:hover,
.brand-card--bosch:hover,
.brand-card--festool:hover,
.brand-card--hikoki:hover {
    color: #fff;
}

.brand-card--bosch {
    background: #005691;
    color: #fff;
}

.brand-card--festool {
    background: #2f7d32;
    color: #fff;
}

.brand-card--hikoki {
    background: #176b54;
    color: #fff;
}

.types-section {
    background: var(--pt-yellow);
    border-block: 3px solid var(--pt-ink);
}

.type-card {
    padding: 1.4rem;
}

.type-icon {
    align-items: center;
    background: var(--pt-ink);
    color: var(--pt-yellow);
    display: flex;
    font-size: 1.8rem;
    height: 3.5rem;
    justify-content: center;
    margin-bottom: 1.5rem;
    width: 3.5rem;
}

.type-card h3 {
    font-size: 1.15rem;
    margin: 0;
    text-transform: uppercase;
}

.type-card small {
    color: #6a6a6a;
    font-weight: 600;
}

.price-card {
    background: #fff;
    border: 2px solid var(--pt-ink);
    box-shadow: 8px 8px 0 #d7d3c7;
}

.price-table {
    margin: 0;
}

.price-table thead th {
    background: var(--pt-ink);
    color: #fff;
    font-size: .75rem;
    letter-spacing: .08em;
    padding: 1rem;
    text-transform: uppercase;
    white-space: nowrap;
}

.price-table td {
    border-color: #dedbd1;
    padding: 1rem;
    vertical-align: middle;
}

.model-number {
    color: #777;
    display: block;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .05em;
}

.price-now {
    font-size: 1.15rem;
    font-weight: 800;
    white-space: nowrap;
}

.price-tool-link {
    color: var(--pt-ink);
    text-decoration: none;
}

.price-tool-link:hover {
    color: var(--pt-red);
}

.price-was {
    color: #777;
    font-size: .78rem;
    text-decoration: line-through;
}

.change-down {
    background: #dff4e9;
    color: var(--pt-green);
    font-weight: 800;
}

.change-up {
    background: #fde5e7;
    color: var(--pt-red);
    font-weight: 800;
}

.change-amount {
    font-size: .9rem;
    margin-bottom: .1rem;
}

.change-percent {
    font-size: .7rem;
}

footer {
    background: var(--pt-ink);
    color: #aaa;
}

.footer-brand {
    color: #fff;
}

.search-results {
    min-height: 70vh;
}

.search-panel-dark {
    background: var(--pt-ink);
    border-color: var(--pt-ink);
    box-shadow: 8px 8px 0 var(--pt-yellow);
}

.search-results .section-heading h1 {
    font-size: clamp(2rem, 5vw, 4rem);
    overflow-wrap: anywhere;
    text-transform: uppercase;
}

.tool-result-card,
.empty-results {
    background: #fff;
    border: 2px solid var(--pt-ink);
}

.tool-card-link {
    color: inherit;
    display: block;
    height: 100%;
    text-decoration: none;
}

.tool-result-card {
    display: flex;
    flex-direction: column;
    transition: box-shadow .15s ease, transform .15s ease;
}

.tool-result-card:hover {
    box-shadow: 6px 6px 0 var(--pt-yellow);
    transform: translate(-3px, -3px);
}

.tool-result-card > .p-3 {
    display: flex;
    flex: 1;
    flex-direction: column;
}

.tool-result-card h2 {
    font-family: 'Barlow', sans-serif;
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: 0;
}

.tool-result-image {
    align-items: center;
    aspect-ratio: 4 / 3;
    background: #fff;
    border-bottom: 2px solid var(--pt-ink);
    color: #d3d0c7;
    display: flex;
    font-size: 3rem;
    justify-content: center;
    overflow: hidden;
    padding: 1rem;
}

.tool-result-image img {
    height: 100%;
    object-fit: contain;
    width: 100%;
}

.result-price {
    font-size: 1.45rem;
}

.pagination {
    --bs-pagination-bg: #fff;
    --bs-pagination-border-color: var(--pt-ink);
    --bs-pagination-border-radius: 0;
    --bs-pagination-color: var(--pt-ink);
    --bs-pagination-disabled-bg: #e5e2d9;
    --bs-pagination-disabled-border-color: var(--pt-ink);
    --bs-pagination-disabled-color: #8a877f;
    --bs-pagination-focus-bg: var(--pt-yellow);
    --bs-pagination-focus-box-shadow: 0 0 0 .2rem rgba(255, 207, 0, .35);
    --bs-pagination-focus-color: var(--pt-ink);
    --bs-pagination-hover-bg: var(--pt-ink);
    --bs-pagination-hover-border-color: var(--pt-ink);
    --bs-pagination-hover-color: #fff;
    --bs-pagination-active-bg: var(--pt-yellow);
    --bs-pagination-active-border-color: var(--pt-ink);
    --bs-pagination-active-color: var(--pt-ink);
    gap: .35rem;
}

.pagination .page-link {
    border-width: 2px;
    font-weight: 800;
    min-width: 2.75rem;
    text-align: center;
}

.pagination .page-item.active .page-link {
    box-shadow: 3px 3px 0 var(--pt-red);
}

.search-highlight {
    background: var(--pt-yellow);
    color: inherit;
    padding: 0 .08em;
}

.back-link {
    color: var(--pt-ink);
    font-weight: 700;
    text-decoration: none;
}

.tool-page {
    min-height: 70vh;
}

.tool-hero {
    background: #fff;
    border: 2px solid var(--pt-ink);
    box-shadow: 8px 8px 0 var(--pt-yellow);
}

.tool-page-image {
    align-items: center;
    background: #fff;
    color: #d3d0c7;
    display: flex;
    font-size: 5rem;
    height: 100%;
    justify-content: center;
    min-height: 350px;
    padding: 2rem;
}

.tool-page-image img {
    height: 100%;
    max-height: 420px;
    object-fit: contain;
    width: 100%;
}

.tool-page-summary {
    background: var(--pt-ink);
    color: #fff;
}

.tool-page-summary h1 {
    font-size: clamp(2rem, 4vw, 4rem);
    line-height: 1;
}

.tool-meta span {
    border: 1px solid #666;
    color: #ccc;
    padding: .35rem .65rem;
}

.best-price small,
.best-price span {
    display: block;
}

.best-price small {
    color: var(--pt-yellow);
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.best-price-amount {
    color: var(--pt-yellow);
    display: block;
    font-family: 'Archivo Black', sans-serif;
    font-size: clamp(2.5rem, 6vw, 5rem);
    line-height: 1;
}

.recent-low-badge {
    align-items: center;
    background: var(--pt-green);
    color: #fff;
    display: inline-flex;
    font-size: .78rem;
    font-weight: 800;
    gap: .4rem;
    letter-spacing: .06em;
    padding: .5rem .7rem;
    text-transform: uppercase;
}

.best-price .recent-low-badge {
    width: fit-content;
}

.recent-low-badge-period {
    background: transparent;
    border: 1px solid var(--pt-green);
    color: #8ee0b7;
}

.retailer-list {
    border: 2px solid var(--pt-ink);
}

.price-history-section {
    border-top: 3px solid var(--pt-ink);
}

.history-stat {
    background: #fff;
    border: 2px solid var(--pt-ink);
    height: 100%;
    padding: 1.25rem;
}

.history-stat-low {
    box-shadow: 6px 6px 0 var(--pt-green);
}

.history-stat-best {
    box-shadow: 6px 6px 0 var(--pt-yellow);
}

.history-stat-high {
    box-shadow: 6px 6px 0 var(--pt-red);
}

.history-stat small,
.history-stat-amount {
    display: block;
}

.history-stat small {
    color: #666;
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.history-stat-amount {
    font-family: 'Archivo Black', sans-serif;
    font-size: clamp(1.8rem, 4vw, 3rem);
}

.history-stat-value {
    display: block;
}

.history-stat-date {
    color: #666;
    display: block;
    font-size: .85rem;
    font-weight: 700;
}

.history-low-badge {
    align-items: center;
    color: var(--pt-green);
    display: inline-flex;
    font-size: .72rem;
    font-weight: 800;
    gap: .35rem;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.price-chart-card {
    background: #fff;
    border: 2px solid var(--pt-ink);
    box-shadow: 8px 8px 0 #d7d3c7;
    padding: 1.25rem;
}

.price-chart-heading h3 {
    font-size: 1.35rem;
    margin-bottom: .25rem;
    text-transform: uppercase;
}

.price-chart-heading p {
    color: #666;
    margin-bottom: 1.5rem;
}

.price-chart-wrap {
    height: 340px;
    position: relative;
}

.retailer-filters {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.retailer-filter-label {
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .08em;
    margin-right: .25rem;
    text-transform: uppercase;
}

.retailer-toggle {
    cursor: pointer;
    margin: 0;
}

.retailer-toggle input {
    opacity: 0;
    pointer-events: none;
    position: absolute;
}

.retailer-toggle span,
.retailer-filter-reset {
    background: #fff;
    border: 2px solid var(--pt-ink);
    color: var(--pt-ink);
    display: inline-block;
    font-size: .8rem;
    font-weight: 800;
    padding: .4rem .7rem;
    text-decoration: none;
}

.retailer-toggle input:checked + span {
    background: var(--pt-yellow);
    box-shadow: 3px 3px 0 var(--pt-red);
}

.retailer-toggle input:focus-visible + span {
    outline: 3px solid var(--pt-red);
    outline-offset: 2px;
}

.retailer-toggle:hover span,
.retailer-filter-reset:hover {
    background: var(--pt-ink);
    color: #fff;
}

.retailer-sparkline {
    display: block;
    height: 30px;
    margin-top: .5rem;
    width: 120px;
}

.retailer-sparkline polyline {
    fill: none;
    stroke-linecap: square;
    stroke-linejoin: miter;
    stroke-width: 3;
    vector-effect: non-scaling-stroke;
}

.sparkline-down polyline {
    stroke: var(--pt-green);
}

.sparkline-up polyline {
    stroke: var(--pt-red);
}

.recent-retailer-prices {
    margin-top: .75rem;
}

.recent-retailer-prices > small {
    color: #777;
    display: block;
    margin-bottom: .3rem;
}

.recent-retailer-price-list {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
}

.recent-retailer-price {
    background: #eee;
    border-radius: .2rem;
    color: #555;
    cursor: help;
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.2;
    padding: .15rem .35rem;
}

.recent-retailer-price.is-lower {
    background: #d9f1df;
    color: #146c2e;
}

.recent-retailer-price.is-higher {
    background: #f8d7da;
    color: #a51d2d;
}

.no-price-changes {
    color: #777;
    display: block;
    font-size: .75rem;
    font-style: italic;
    margin-top: .5rem;
}

.never-changed-row {
    background: #f7f5ef;
}

.no-change-badge {
    color: #666;
    font-size: .75rem;
    font-style: italic;
    white-space: nowrap;
}

.retailer-row {
    align-items: center;
    background: #fff;
    border-bottom: 1px solid #d7d3c7;
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 1fr) auto auto;
    padding: 1.25rem;
}

.retailer-row:last-child {
    border-bottom: 0;
}

.retailer-row.is-cheapest {
    background: #fff9d9;
    border-left: 8px solid var(--pt-yellow);
}

.retailer-row h3 {
    font-family: 'Barlow', sans-serif;
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: 0;
    margin: 0;
}

.best-badge {
    color: var(--pt-green);
    display: block;
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.stock-status {
    color: #666;
    font-size: .85rem;
}

.retailer-price {
    text-align: right;
}

.retailer-price-amount,
.retailer-price small {
    display: block;
}

.retailer-price-amount {
    font-size: 1.5rem;
}

.retailer-price small {
    color: #777;
}

.btn-retailer {
    background: var(--pt-yellow);
    border: 2px solid var(--pt-ink);
    border-radius: 0;
    font-weight: 800;
    padding: .7rem 1rem;
}

.btn-retailer:hover {
    background: var(--pt-ink);
    color: #fff;
}

.retailer-action {
    align-items: center;
    display: flex;
    flex-direction: column;
    text-align: center;
}

.retailer-action small {
    color: #777;
    display: block;
    margin-top: .35rem;
    white-space: nowrap;
}

@media (max-width: 767.98px) {
    .search-panel {
        box-shadow: 6px 6px 0 var(--pt-red);
    }

    .btn-search {
        padding-inline: 1rem;
    }

    .hero h1 {
        max-width: 520px;
    }

    .tool-page-image {
        min-height: 280px;
    }

    .retailer-row {
        grid-template-columns: 1fr auto;
    }

    .retailer-row .retailer-action {
        grid-column: 1 / -1;
    }
}
