/* Custom styles for DjangoBase */

/* General */
body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main {
    flex: 1;
}

/* Navigation */
.navbar-brand {
    font-weight: 600;
}

/* Dropdown menu scrollable */
.dropdown-menu {
    max-height: 300px;
    overflow-y: auto;
}

/* Forms */
.form-control:focus {
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}

/* Alerts */
.alert ul {
    margin: 0;
    padding-left: 1rem;
}

/* Pricing */
.pricing-card {
    border-radius: 0.5rem;
    transition: transform 0.2s;
}

.pricing-card:hover {
    transform: translateY(-5px);
}

.pricing-card.featured {
    border: 2px solid var(--bs-primary);
}

/* Payment form */
#card-element {
    border: 1px solid #dee2e6;
    padding: 0.75rem;
    border-radius: 0.375rem;
}

/* Loading spinner */
.spinner-border-sm {
    width: 1rem;
    height: 1rem;
}

/* Utility classes */
.hidden {
    display: none !important;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .display-4 {
        font-size: 2rem;
    }
}

/* ============================================================
   calculator.free — mobile-first, KISS
   ============================================================ */
:root{
  --cf-bg:#f6f8fb; --cf-card:#fff; --cf-ink:#12203a; --cf-muted:#5a6b85;
  --cf-line:#e3e9f2; --cf-brand:#1a6cff; --cf-brand-ink:#0b3ea6;
  --cf-accent:#0fb87a; --cf-shadow:0 2px 14px rgba(20,40,80,.07);
}
body{background:var(--cf-bg);color:var(--cf-ink);}
/* main: no top gap so breadcrumbs peg flush under the nav */
.cf-main{padding:0 0 2rem;}
.navbar{border-bottom:1px solid var(--cf-line);}
.cf-wrap{max-width:960px;margin:0 auto;padding:0 16px 48px;}
.cf-crumbs{font-size:.85rem;color:var(--cf-muted);padding:12px 0 6px;}
.cf-crumbs a{color:var(--cf-muted);text-decoration:none;}
.cf-crumbs a:hover{color:var(--cf-brand);}
.cf-crumbs span{margin:0 6px;}

.cf-hero{text-align:center;padding:28px 0 8px;}
.cf-hero h1{font-weight:800;font-size:clamp(1.7rem,5vw,2.6rem);letter-spacing:-.02em;}
.cf-hero p{color:var(--cf-muted);max-width:620px;margin:10px auto 0;font-size:1.05rem;}

.cf-head{padding:8px 0 6px;}
.cf-head h1{font-weight:800;font-size:clamp(1.5rem,4.5vw,2.1rem);letter-spacing:-.02em;}
.cf-ico{margin-right:.25em;}
.cf-tagline{color:var(--cf-muted);font-size:1.05rem;margin:.3em 0 0;}
.cf-country-tag{font-size:.6em;font-weight:600;color:var(--cf-brand-ink);background:#eaf1ff;padding:.2em .5em;border-radius:6px;vertical-align:middle;}

.cf-countries{margin:14px 0 4px;}
.cf-countries label{font-size:.8rem;color:var(--cf-muted);display:block;margin-bottom:6px;}
.cf-country-list{display:flex;flex-wrap:wrap;gap:8px;}
.cf-chip{font-size:.85rem;padding:.35em .8em;border:1px solid var(--cf-line);border-radius:999px;
  background:#fff;color:var(--cf-ink);text-decoration:none;transition:.12s;}
.cf-chip:hover{border-color:var(--cf-brand);color:var(--cf-brand);}
.cf-chip.active{background:var(--cf-brand);border-color:var(--cf-brand);color:#fff;}

/* calculator */
.cf-calc{margin:18px 0 8px;}
.cf-grid{display:grid;grid-template-columns:1fr;gap:16px;}
.cf-panel{background:var(--cf-card);border:1px solid var(--cf-line);border-radius:16px;
  box-shadow:var(--cf-shadow);padding:20px;}
.cf-field{margin-bottom:14px;}
.cf-field label{display:block;font-weight:600;font-size:.92rem;margin-bottom:6px;}
.cf-inwrap{display:flex;align-items:stretch;border:1.5px solid var(--cf-line);border-radius:10px;overflow:hidden;background:#fff;}
.cf-inwrap:focus-within{border-color:var(--cf-brand);box-shadow:0 0 0 3px rgba(26,108,255,.12);}
.cf-affix{display:flex;align-items:center;padding:0 12px;background:#f2f5fa;color:var(--cf-muted);font-weight:600;font-size:.95rem;}
.cf-affix-r{border-left:1px solid var(--cf-line);}
.cf-inwrap input{border:0;outline:0;flex:1;padding:12px;font-size:1.05rem;width:100%;background:transparent;color:var(--cf-ink);}
.cf-field select,.cf-field input[type=date]{width:100%;padding:12px;font-size:1.02rem;border:1.5px solid var(--cf-line);border-radius:10px;background:#fff;color:var(--cf-ink);}
.cf-field select:focus,.cf-field input[type=date]:focus{border-color:var(--cf-brand);outline:0;box-shadow:0 0 0 3px rgba(26,108,255,.12);}
.cf-fieldhelp{display:block;color:var(--cf-muted);font-size:.8rem;margin-top:5px;}
.cf-help{display:inline-block;width:16px;height:16px;line-height:16px;text-align:center;border-radius:50%;background:#e7edf6;color:var(--cf-muted);font-size:.72rem;cursor:help;}

/* advanced fields hidden until toggled */
.cf-adv{display:none;}
.adv-open .cf-adv{display:block;}
.cf-actions{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap;}
.cf-adv-btn,.cf-reset{border:1px solid var(--cf-line);background:#fff;color:var(--cf-brand-ink);
  padding:.5em 1em;border-radius:9px;font-weight:600;font-size:.88rem;cursor:pointer;}
.cf-adv-btn:hover,.cf-reset:hover{border-color:var(--cf-brand);}
.adv-open .cf-adv-btn{background:#eaf1ff;}

/* results */
.cf-results{background:linear-gradient(160deg,#0f2a5e,#123a86);color:#fff;border:0;}
.cf-result{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:10px 0;border-bottom:1px solid rgba(255,255,255,.12);}
.cf-result:last-of-type{border-bottom:0;}
.cf-result-label{color:#c7d6f5;font-size:.9rem;}
.cf-result-value{font-weight:700;font-size:1.1rem;text-align:right;}
.cf-primary{padding:4px 0 14px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.22);}
.cf-primary .cf-result-label{color:#eaf1ff;font-size:1rem;}
.cf-primary .cf-result-value{font-size:2rem;font-weight:800;letter-spacing:-.02em;}
.cf-hint{color:#9fb6e0;font-size:.78rem;margin:12px 0 0;text-align:center;}

.cf-note{background:#fff8e6;border:1px solid #f4e2ab;color:#7a5c00;padding:12px 14px;border-radius:12px;font-size:.9rem;margin:12px 0;}

.cf-about,.cf-faq,.cf-related{margin-top:30px;}
.cf-about h2,.cf-faq h2,.cf-related h2,.cf-section h2{font-weight:800;font-size:1.3rem;margin-bottom:12px;letter-spacing:-.01em;}
.cf-about p{color:#33425e;line-height:1.7;}
.cf-faq-item{background:#fff;border:1px solid var(--cf-line);border-radius:12px;padding:14px 16px;margin-bottom:10px;}
.cf-faq-item summary{font-weight:600;cursor:pointer;}
.cf-faq-item p{color:#41506b;margin:10px 0 0;line-height:1.65;}
.cf-related-grid{display:flex;flex-wrap:wrap;gap:10px;}
.cf-related-card{background:#fff;border:1px solid var(--cf-line);border-radius:10px;padding:.6em 1em;
  text-decoration:none;color:var(--cf-ink);font-weight:600;font-size:.9rem;}
.cf-related-card:hover{border-color:var(--cf-brand);color:var(--cf-brand);}
.cf-disclaimer{color:var(--cf-muted);font-size:.8rem;margin-top:28px;text-align:center;}

/* hub / category cards */
.cf-section{margin-top:30px;}
.cf-section h2 a{color:inherit;text-decoration:none;}
.cf-section h2 a:hover{color:var(--cf-brand);}
.cf-section-tag{color:var(--cf-muted);margin:-6px 0 14px;font-size:.95rem;}
.cf-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.cf-card{background:#fff;border:1px solid var(--cf-line);border-radius:14px;padding:16px;
  text-decoration:none;color:var(--cf-ink);display:flex;flex-direction:column;gap:4px;
  box-shadow:var(--cf-shadow);transition:.14s;}
.cf-card:hover{border-color:var(--cf-brand);transform:translateY(-2px);}
.cf-card-ico{font-size:1.6rem;}
.cf-card-name{font-weight:700;font-size:.98rem;}
.cf-card-tag{color:var(--cf-muted);font-size:.8rem;line-height:1.4;}

/* desktop: inputs + results side by side, results sticky */
@media (min-width:768px){
  .cf-grid{grid-template-columns:1.15fr .85fr;align-items:start;}
  .cf-results{position:sticky;top:16px;}
}

/* ============================================================
   Advanced calculators (scientific / graphing / matrix / triangle)
   ============================================================ */
/* Scientific */
.sci{max-width:460px;margin:18px auto;background:var(--cf-card);border:1px solid var(--cf-line);border-radius:18px;box-shadow:var(--cf-shadow);padding:16px;}
.sci-display{background:#0f2a5e;border-radius:12px;padding:14px 16px;color:#fff;margin-bottom:10px;}
.sci-expr{width:100%;background:transparent;border:0;outline:0;color:#eaf1ff;font-size:1.1rem;font-family:ui-monospace,monospace;}
.sci-result{text-align:right;font-size:2rem;font-weight:800;margin-top:6px;overflow:auto;}
.sci-result.sci-err{color:#ff9db0;font-size:1.2rem;}
.sci-modes{display:flex;gap:6px;margin-bottom:10px;}
.sci-mode{flex:0 0 auto;padding:.3em .9em;border:1px solid var(--cf-line);background:#fff;border-radius:8px;font-weight:700;font-size:.8rem;cursor:pointer;color:var(--cf-muted);}
.sci-mode.active{background:var(--cf-brand);color:#fff;border-color:var(--cf-brand);}
.sci-pad{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;}
.sci-pad button{padding:14px 0;border:1px solid var(--cf-line);background:#fff;border-radius:10px;font-size:1.02rem;font-weight:600;cursor:pointer;color:var(--cf-ink);}
.sci-pad button:hover{border-color:var(--cf-brand);}
.sci-pad button:active{background:#eaf1ff;}
.sci-pad .sci-op{background:#f2f5fa;}
.sci-pad .sci-act{color:#e0245e;}
.sci-pad .sci-eq{background:var(--cf-brand);color:#fff;border-color:var(--cf-brand);font-size:1.3rem;}

/* Graphing (2D + 3D) */
.graph{display:grid;grid-template-columns:1fr;gap:14px;margin:18px 0;}
.graph-side{background:var(--cf-card);border:1px solid var(--cf-line);border-radius:14px;padding:16px;}
.graph-exprs{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;}
.graph-row{display:flex;align-items:center;gap:8px;}
.graph-swatch{width:14px;height:14px;border-radius:4px;flex:0 0 auto;}
.graph-row input{flex:1;padding:9px 10px;border:1.5px solid var(--cf-line);border-radius:8px;font-family:ui-monospace,monospace;font-size:.95rem;}
.graph-row input.graph-bad{border-color:#e0245e;background:#fff5f7;}
.graph-del{border:0;background:#f2f5fa;border-radius:6px;width:28px;height:28px;cursor:pointer;color:var(--cf-muted);font-size:1.1rem;}
.graph-add{width:100%;padding:10px;border:1px dashed var(--cf-brand);background:#f4f8ff;color:var(--cf-brand-ink);border-radius:9px;font-weight:600;cursor:pointer;}
.graph-hint{color:var(--cf-muted);font-size:.82rem;margin:10px 0 0;}
.graph-hint code{background:#f2f5fa;padding:.1em .35em;border-radius:4px;}
.graph-canvaswrap{position:relative;background:var(--cf-card);border:1px solid var(--cf-line);border-radius:14px;overflow:hidden;touch-action:none;}
.graph-canvaswrap canvas{display:block;cursor:grab;}
.graph-canvaswrap canvas:active{cursor:grabbing;}
.graph-zoom{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:4px;}
.graph-zoom button{width:34px;height:34px;border:1px solid var(--cf-line);background:#fff;border-radius:8px;font-size:1.1rem;cursor:pointer;box-shadow:var(--cf-shadow);}
@media(min-width:820px){.graph{grid-template-columns:300px 1fr;align-items:start;}}

/* Matrix */
.mtx{margin:18px 0;}
.mtx-panels{display:grid;grid-template-columns:1fr;gap:14px;}
.mtx-box{background:var(--cf-card);border:1px solid var(--cf-line);border-radius:14px;padding:14px;}
.mtx-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
.mtx-head select{padding:2px 4px;border:1px solid var(--cf-line);border-radius:6px;}
.mtx-grid{display:grid;gap:6px;}
.mtx-grid input{width:100%;padding:8px;border:1.5px solid var(--cf-line);border-radius:7px;text-align:center;font-size:.95rem;}
.mtx-ops{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;}
.mtx-ops button{padding:.55em 1em;border:1px solid var(--cf-line);background:#fff;border-radius:9px;font-weight:600;cursor:pointer;color:var(--cf-brand-ink);display:flex;align-items:center;gap:6px;}
.mtx-ops button:hover{border-color:var(--cf-brand);}
.mtx-ops input{width:56px;padding:4px 6px;border:1px solid var(--cf-line);border-radius:6px;}
.mtx-result{background:var(--cf-card);border:1px solid var(--cf-line);border-radius:14px;padding:18px;min-height:70px;}
.mtx-out{display:inline-grid;gap:8px 16px;padding:8px 14px;border-left:2px solid var(--cf-ink);border-right:2px solid var(--cf-ink);border-radius:3px;}
.mtx-out span{text-align:right;font-variant-numeric:tabular-nums;}
.mtx-scalar{font-size:1.6rem;font-weight:800;}
.mtx-msg{color:var(--cf-muted);margin:0;}
@media(min-width:700px){.mtx-panels{grid-template-columns:1fr 1fr;}}

/* Triangle */
.tri-inputs{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.tri-diagram{margin-top:16px;display:flex;justify-content:center;}
.tri-diagram svg{width:100%;max-width:320px;height:auto;}

/* ============================================================
   Home hero — calculator above the fold + scroll-to-browse
   ============================================================ */
.home-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px;padding:30px 0 10px;}
.home-hero-copy{max-width:640px;}
.home-hero-copy h1{font-weight:800;font-size:clamp(1.9rem,5.2vw,3rem);letter-spacing:-.02em;line-height:1.05;}
.home-hero-copy p{color:var(--cf-muted);font-size:1.1rem;margin:14px auto 0;max-width:54ch;}
.home-hero-calc{width:100%;max-width:460px;}
.home-hero-calc .sci{margin:0 auto;}
.home-scroll-cue{display:inline-block;font-weight:700;color:var(--cf-brand-ink);
  background:#eaf1ff;border:1px solid #d5e3ff;border-radius:999px;padding:.5em 1.1em;text-decoration:none;transition:.14s;}
.home-scroll-cue:hover{background:var(--cf-brand);color:#fff;border-color:var(--cf-brand);}
#browse{scroll-margin-top:12px;}
@media(min-width:860px){
  .home-hero{padding:24px 0 8px;}
  .home-hero-copy h1{font-size:clamp(2.4rem,4vw,3.4rem);}
}

/* ============================================================
   Robustness: schedule tables + charts (calculator.net-parity)
   ============================================================ */
.cf-chart{margin:16px 0 0;}
.cf-chart-wrap{display:flex;flex-wrap:wrap;gap:18px;align-items:center;background:var(--cf-card);
  border:1px solid var(--cf-line);border-radius:14px;padding:16px;box-shadow:var(--cf-shadow);}
.cf-pie{width:170px;height:170px;flex:0 0 auto;}
.cf-line{width:100%;max-width:560px;height:auto;}
.cf-legend{display:flex;flex-direction:column;gap:6px;font-size:.88rem;}
.cf-legend-item{display:flex;align-items:center;gap:8px;color:#33425e;}
.cf-legend-item span{width:12px;height:12px;border-radius:3px;flex:0 0 auto;}
.cf-schedule{margin:16px 0 0;}
.cf-sched{background:var(--cf-card);border:1px solid var(--cf-line);border-radius:14px;padding:4px 16px;box-shadow:var(--cf-shadow);}
.cf-sched summary{font-weight:700;cursor:pointer;padding:12px 0;}
.cf-sched-scroll{overflow-x:auto;max-height:440px;overflow-y:auto;margin-bottom:14px;}
.cf-sched-table{width:100%;border-collapse:collapse;font-size:.86rem;font-variant-numeric:tabular-nums;}
.cf-sched-table th{position:sticky;top:0;background:#f2f5fa;text-align:right;padding:8px 10px;color:var(--cf-muted);white-space:nowrap;}
.cf-sched-table th:first-child,.cf-sched-table td:first-child{text-align:left;}
.cf-sched-table td{text-align:right;padding:7px 10px;border-top:1px solid var(--cf-line);white-space:nowrap;}
.cf-sched-table tbody tr:nth-child(even){background:#fafbfe;}
