﻿/* ==========================================================================
   ISOI 2027 "EVOLVE" - Online Registration layout
   Palette taken from the ISOI 2027 brand creatives:
     deep navy ground, gold rules/labels, electric blue as the active accent.
   Presentation only - no server control IDs or code-behind behaviour rely
   on anything in this file.
   ========================================================================== */

.isoi-reg {
    --navy: #0A1633;
    --navy-2: #122048;
    --navy-3: #1B2B57;
    --gold: #D9A441;
    --gold-lt: #F0C978;
    --blue: #1F6FE0;
    --blue-lt: #4A90F0;
    --blue-tint: #EEF4FE;
    --ink: #16203A;
    --muted: #6B7794;
    --line: #E2E7F0;
    --surface: #FFFFFF;
    --surface-2: #F7F9FD;
}

/* ---------- page header ---------- */
.isoi-reg .isoi-page-head {
    background: linear-gradient(135deg, var(--navy) 0%, var(--navy-3) 100%);
    color: #fff;
    padding: 18px 20px;
    border-radius: 10px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.isoi-reg .isoi-page-head:after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 0;
    transform: translateX(-50%);
    width: 120px;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--gold), transparent);
}

.isoi-reg .isoi-page-head h3 {
    margin: 0;
    font-weight: 700;
    letter-spacing: .04em;
    color: #fff;
    font-size: 22px;
}

.isoi-reg .isoi-page-head .isoi-page-sub {
    margin-top: 4px;
    font-size: 12.5px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--gold-lt);
}

/* ---------- two column shell ---------- */
.isoi-reg .isoi-reg-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 22px;
    align-items: flex-start;
    margin-top: 20px;
}

.isoi-reg .isoi-reg-main {
    flex: 1 1 0;
    min-width: 0; /* lets wide tables scroll instead of blowing out the row */
}

.isoi-reg .isoi-reg-side {
    flex: 0 0 320px;
    max-width: 320px;
    position: sticky;
    top: 20px;
}

@media (max-width: 991px) {
    .isoi-reg .isoi-reg-grid { display: block; }
    .isoi-reg .isoi-reg-side {
        position: static;
        max-width: none;
        margin-top: 22px;
    }
}

/* ---------- step indicator ---------- */
.isoi-reg .isoi-steps {
    display: flex;
    align-items: stretch;
    gap: 0;
    margin-bottom: 16px;
}

.isoi-reg .isoi-step {
    flex: 1 1 0;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    background: var(--surface-2);
    border: 1px solid var(--line);
    color: var(--muted);
}

.isoi-reg .isoi-step:first-child { border-radius: 8px 0 0 8px; }
.isoi-reg .isoi-step:last-child { border-radius: 0 8px 8px 0; }
.isoi-reg .isoi-step + .isoi-step { border-left: none; }

.isoi-reg .isoi-step-num {
    flex: 0 0 auto;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #DCE2ED;
    color: #6B7794;
    font-weight: 700;
    font-size: 13px;
    line-height: 26px;
    text-align: center;
}

.isoi-reg .isoi-step-label { line-height: 1.25; }

.isoi-reg .isoi-step-k {
    display: block;
    font-size: 10px;
    letter-spacing: .16em;
    text-transform: uppercase;
    opacity: .75;
}

.isoi-reg .isoi-step-t {
    display: block;
    font-weight: 700;
    font-size: 13.5px;
    color: inherit;
}

.isoi-reg .isoi-step.is-active {
    background: var(--blue-tint);
    border-color: var(--blue);
    color: var(--navy);
}

.isoi-reg .isoi-step.is-active .isoi-step-num {
    background: var(--blue);
    color: #fff;
}

.isoi-reg .isoi-step.is-done .isoi-step-num {
    background: var(--gold);
    color: var(--navy);
}

@media (max-width: 575px) {
    .isoi-reg .isoi-steps { display: block; }
    .isoi-reg .isoi-step { border-radius: 8px !important; border-left: 1px solid var(--line) !important; }
    .isoi-reg .isoi-step + .isoi-step { margin-top: 6px; }
}

/* ---------- fee structure button ---------- */
.isoi-reg .isoi-feelink-wrap { text-align: center; margin-bottom: 18px; }

.isoi-reg a.isoi-feelink,
.isoi-reg a.isoi-feelink:link,
.isoi-reg a.isoi-feelink:visited {
    display: inline-block;
    padding: 9px 20px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--navy) !important;
    font-weight: 700 !important;
    font-size: 13.5px !important;
    font-family: inherit !important;
    text-decoration: none !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05);
}

.isoi-reg a.isoi-feelink:hover {
    border-color: var(--blue);
    color: var(--blue) !important;
    box-shadow: 0 2px 8px rgba(31, 111, 224, .16);
}

/* ---------- generic card ---------- */
.isoi-reg .isoi-card {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(16, 24, 40, .06);
    margin-bottom: 18px;
}

.isoi-reg .isoi-card-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--line);
    background: var(--surface-2);
    border-radius: 10px 10px 0 0;
}

.isoi-reg .isoi-card-badge {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    border-radius: 7px;
    background: var(--navy);
    color: var(--gold);
    font-weight: 700;
    font-size: 13px;
    line-height: 28px;
    text-align: center;
}

.isoi-reg .isoi-card-title {
    display: block;
    font-weight: 700;
    font-size: 15.5px;
    color: var(--ink);
    line-height: 1.2;
}

.isoi-reg .isoi-card-sub {
    display: block;
    font-size: 12.5px;
    color: var(--muted);
    margin-top: 3px;
}

.isoi-reg .isoi-card-body { padding: 18px; }

/* "Change category" reset, pinned to the right of the step 1 card header */
.isoi-reg .isoi-card-head .isoi-change-cat,
.isoi-reg .isoi-card-head a.isoi-change-cat:link,
.isoi-reg .isoi-card-head a.isoi-change-cat:visited {
    margin-left: auto;
    flex: 0 0 auto;
    padding: 6px 12px;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: var(--surface);
    color: var(--muted) !important;
    font-size: 12px;
    font-weight: 600 !important;
    text-decoration: none !important;
    white-space: nowrap;
}

.isoi-reg .isoi-card-head a.isoi-change-cat:hover {
    border-color: var(--blue);
    color: var(--blue) !important;
    background: var(--blue-tint);
}

/* ---------- category tiles (restyles the RadioButtonList) ---------- */
/* the RadioButtonList renders a real 2-column table (RepeatColumns="2"),
   so each cell is one tile. */
.isoi-reg .isoi-cat-tiles table {
    width: 100%;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 10px 0;
}

.isoi-reg .isoi-cat-tiles td {
    width: 50%;
    vertical-align: top;
    padding: 0;
}

@media (max-width: 575px) {
    .isoi-reg .isoi-cat-tiles table,
    .isoi-reg .isoi-cat-tiles tbody,
    .isoi-reg .isoi-cat-tiles tr,
    .isoi-reg .isoi-cat-tiles td {
        display: block;
        width: 100%;
        border-spacing: 0;
    }
}

.isoi-reg .isoi-cat-tiles input[type="radio"] { accent-color: #1F6FE0; }

.isoi-reg .isoi-cat-tiles label {
    display: block !important;
    margin: 0 0 10px 0 !important;
    padding: 14px 16px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: var(--surface);
    color: var(--ink) !important;
    font-weight: 600 !important;
    font-size: 13.5px;
    line-height: 1.3;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s, background .15s;
}

/* the radio sits outside the label in a RadioButtonList, so lift it visually */
.isoi-reg .isoi-cat-tiles td {
    position: relative;
    margin-bottom: 0;
}

.isoi-reg .isoi-cat-tiles input[type="radio"] {
    position: absolute;
    left: 16px;
    top: 18px;
    z-index: 2;
}

.isoi-reg .isoi-cat-tiles label { padding-left: 42px; min-height: 52px; }

.isoi-reg .isoi-cat-tiles label:hover {
    border-color: var(--blue-lt);
    background: var(--blue-tint);
    box-shadow: 0 2px 10px rgba(31, 111, 224, .12);
}

.isoi-reg .isoi-cat-tiles td.is-checked label {
    border-color: var(--blue);
    background: var(--blue-tint);
    box-shadow: 0 0 0 1px var(--blue) inset;
}

/* The server locks the category list once the details form opens
   (rdbRegType.Enabled = false). Stop the tiles inviting a click they
   will not accept - use "Change category" in the card header instead. */
.isoi-reg .isoi-cat-tiles input[type="radio"]:disabled { cursor: not-allowed; }

.isoi-reg .isoi-cat-tiles td.is-disabled label {
    cursor: not-allowed;
    opacity: .62;
    background: var(--surface-2);
}

.isoi-reg .isoi-cat-tiles td.is-disabled label:hover {
    border-color: var(--line);
    background: var(--surface-2);
    box-shadow: none;
}

/* the locked-in choice stays legible rather than greyed out with the rest */
.isoi-reg .isoi-cat-tiles td.is-disabled.is-checked label {
    opacity: 1;
    background: var(--blue-tint);
    border-color: var(--blue);
}

.isoi-reg .isoi-cat-tiles td.is-disabled.is-checked label:hover {
    background: var(--blue-tint);
    border-color: var(--blue);
    box-shadow: 0 0 0 1px var(--blue) inset;
}

/* ---------- sidebar cards ---------- */
.isoi-reg .isoi-side .isoi-card { margin-bottom: 16px; }

.isoi-reg .isoi-side-title {
    font-size: 10.5px;
    letter-spacing: .17em;
    text-transform: uppercase;
    color: var(--muted);
    font-weight: 700;
    margin-bottom: 12px;
}

.isoi-reg .isoi-sum-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    padding: 7px 0;
    font-size: 13.5px;
}

.isoi-reg .isoi-sum-row + .isoi-sum-row { border-top: 1px dashed var(--line); }
.isoi-reg .isoi-sum-k { color: var(--muted); }

.isoi-reg .isoi-sum-v {
    font-weight: 700;
    color: var(--ink);
    text-align: right;
    word-break: break-word;
}

.isoi-reg .isoi-amt {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    margin-top: 12px;
    padding-top: 14px;
    border-top: 2px solid var(--gold);
}

.isoi-reg .isoi-amt-k { font-weight: 700; color: var(--ink); font-size: 14.5px; }

.isoi-reg .isoi-amt-v {
    font-weight: 700;
    font-size: 24px;
    color: var(--navy);
    line-height: 1.1;
}

.isoi-reg .isoi-amt-note {
    margin-top: 10px;
    font-size: 11.5px;
    line-height: 1.45;
    color: var(--muted);
}

/* help card - dark brand tone */
.isoi-reg .isoi-help {
    background: linear-gradient(150deg, var(--navy) 0%, var(--navy-3) 100%);
    border-color: var(--navy);
    color: #fff;
}

.isoi-reg .isoi-help .isoi-side-title { color: var(--gold-lt); }
.isoi-reg .isoi-help .isoi-help-role { font-size: 12.5px; color: #C3CDE4; margin-bottom: 8px; }

.isoi-reg .isoi-help .isoi-help-num {
    font-size: 17px;
    font-weight: 700;
    color: #fff;
    letter-spacing: .02em;
    line-height: 1.5;
}

.isoi-reg .isoi-help a { color: #fff; text-decoration: none; }
.isoi-reg .isoi-help a:hover { color: var(--gold-lt); text-decoration: underline; }

.isoi-reg .isoi-help hr {
    border: 0;
    border-top: 1px solid rgba(255, 255, 255, .16);
    margin: 14px 0;
}

.isoi-reg .isoi-help .isoi-help-hours {
    margin-top: 8px;
    font-size: 11.5px;
    color: #A8B5D0;
}

/* checklist */
.isoi-reg .isoi-check { list-style: none; margin: 0; padding: 0; }

.isoi-reg .isoi-check li {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    padding: 8px 0;
    font-size: 12.8px;
    line-height: 1.45;
    color: var(--ink);
}

.isoi-reg .isoi-check li + li { border-top: 1px dashed var(--line); }
.isoi-reg .isoi-check .isoi-check-ico { flex: 0 0 auto; font-size: 14px; line-height: 1.3; }

/* ---------- notices ---------- */
.isoi-reg .isoi-note {
    border-radius: 8px;
    padding: 11px 14px;
    font-size: 12.8px;
    line-height: 1.45;
    margin-bottom: 14px;
}

.isoi-reg .isoi-note-gold {
    background: #FDF6E7;
    border: 1px solid #EBD6A2;
    color: #6A4E12;
}

.isoi-reg .isoi-note-req { text-align: right; font-size: 12px; }

/* ---------- keep the server-rendered amount block out of the flow ----------
   The figure is mirrored into the sidebar summary by script; hiding the
   original avoids showing the same amount twice. */
.isoi-reg .isoi-amt-source { display: none !important; }

/* ---------- registration form modernization ---------- */
.isoi-reg .isoi-profile-banner {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 18px;
    padding: 11px 14px;
    border: 1px solid #CFE0FA;
    border-radius: 9px;
    background: var(--blue-tint);
    color: #33415F;
    font-size: 13px;
    line-height: 1.45;
}

.isoi-reg .isoi-profile-icon {
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--blue);
    color: #fff;
    font-weight: 700;
    line-height: 22px;
    text-align: center;
}

.isoi-reg .isoi-profile-banner a { color: #165FC8; font-weight: 700; }
form.isoi-registration-page { overflow-x: clip !important; overflow-y: visible !important; }
.isoi-reg .isoi-details-modern > br { display: none; }
.isoi-reg .isoi-details-modern [id$="divRegistration"] > :not(.isoi-form-section) { display: none !important; }
.isoi-reg .isoi-form-section { margin-top: 18px; }
.isoi-reg .isoi-form-section .isoi-card-body { padding: 22px; }

.isoi-reg .isoi-field-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 18px 16px;
}

.isoi-reg .isoi-modern-field {
    margin: 0 !important;
    width: auto;
}

.isoi-reg .isoi-field-full { grid-column: span 12; }
.isoi-reg .isoi-field-three-quarter { grid-column: span 8; }
.isoi-reg .isoi-field-half { grid-column: span 6; }
.isoi-reg .isoi-field-third { grid-column: span 4; }
.isoi-reg .isoi-field-quarter { grid-column: span 4; }

.isoi-reg .isoi-modern-field > [class*="col-md-"] {
    float: none;
    width: 100%;
    padding: 0;
    text-align: left !important;
}

.isoi-reg .isoi-modern-field > [class*="col-md-"]:empty { display: none; }
.isoi-reg .isoi-modern-field > [class*="col-md-"] + [class*="col-md-"] { margin-top: 7px; }
.isoi-reg .isoi-modern-field br { display: none; }

.isoi-reg .isoi-modern-field .LabelStyles {
    display: inline-block;
    margin-bottom: 6px;
    color: var(--ink);
    font-size: 13px;
    font-weight: 700;
}

.isoi-reg .isoi-modern-field .LabelStyleValidation { color: #D14343 !important; }
.isoi-reg .isoi-modern-field .form-control,
.isoi-reg .isoi-modern-field .TextBox,
.isoi-reg .isoi-modern-field select,
.isoi-reg .isoi-modern-field textarea {
    width: 100% !important;
    min-height: 42px;
    border-color: #CCD5E5;
    border-radius: 7px;
    box-shadow: none;
    color: var(--ink);
}

.isoi-reg .isoi-modern-field .form-control:focus,
.isoi-reg .isoi-modern-field select:focus,
.isoi-reg .isoi-modern-field textarea:focus {
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(31, 111, 224, .12);
}

/* ---------- radio / checkbox lists ----------
   A RadioButtonList renders as a table, which left the control and its
   caption on separate lines at narrow widths. Flowing the row as flex
   keeps each radio glued to its own label and wraps whole options. */
.isoi-reg .isoi-modern-field table,
.isoi-reg .isoi-modern-field table > tbody {
    display: block;
    width: 100% !important;
    border-collapse: collapse;
}

.isoi-reg .isoi-modern-field table > tbody > tr {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 22px;
}

.isoi-reg .isoi-modern-field table td {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 0 !important;
    white-space: nowrap;
    vertical-align: middle;
}

.isoi-reg .isoi-modern-field table td input[type="radio"],
.isoi-reg .isoi-modern-field table td input[type="checkbox"] {
    flex: 0 0 auto;
    margin: 0 !important;
    width: 16px;
    height: 16px;
    accent-color: #1F6FE0;
}

.isoi-reg .isoi-modern-field table td label {
    display: inline !important;
    margin: 0 !important;
    color: var(--ink);
    font-weight: 500;
    font-size: 13.5px;
    line-height: 1.25;
}
.isoi-reg .isoi-phone-field > .aligntext1 { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 8px; }
.isoi-reg .isoi-phone-field [id$="txtCode"],
.isoi-reg .isoi-phone-field [id$="txtMobile"] { width: 100% !important; margin: 0 !important; }
.isoi-reg .isoi-phone-field .LabelStyleRequired { grid-column: 1 / -1; }
.isoi-reg .LabelStyleRequired { display: block; margin-top: 5px; color: #C43D3D; font-size: 12px; }

/* The delegate never sets their own fee online, so the amount box and the
   bank-detail block are hidden there. The offline desk is the opposite case:
   staff must be able to correct the amount, so the rule is scoped away from
   the desk page. */
.isoi-reg:not(.isoi-reg-offline) .isoi-details-modern [id$="divPayDetail"],
.isoi-reg:not(.isoi-reg-offline) .isoi-details-modern [id$="txtAmount"] { display: none !important; }

/* Temporarily disabled for the current registration flow. */
.isoi-reg [id$="DivApply"],
.isoi-reg [id$="DivCoupon"] { display: none !important; }

/* fee restated at the top of the "Fee & Payment" section */
.isoi-reg .isoi-pay-amount {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    margin-bottom: 18px;
    padding: 14px 16px;
    border: 1px solid var(--line);
    border-left: 3px solid var(--gold);
    border-radius: 9px;
    background: var(--surface-2);
}

.isoi-reg .isoi-pay-amount-k {
    font-weight: 700;
    font-size: 14px;
    color: var(--ink);
    line-height: 1.3;
}

.isoi-reg .isoi-pay-amount-cat {
    display: block;
    font-weight: 500;
    font-size: 12px;
    color: var(--muted);
    margin-top: 2px;
}

.isoi-reg .isoi-pay-amount-v {
    font-weight: 700;
    font-size: 24px;
    color: var(--navy);
    line-height: 1.1;
    white-space: nowrap;
}

.isoi-reg .isoi-info-callout {
    margin: 16px 0 0 !important;
    padding: 12px 14px;
    border: 1px solid #CFE0FA;
    border-radius: 8px;
    background: #F3F7FE;
    color: #42506A !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
}

.isoi-reg .isoi-info-callout span { color: inherit !important; }
.isoi-reg .isoi-documents-section [id$="trPhoto"] hr { display: none; }
.isoi-reg .isoi-documents-section [id$="Label62"],
.isoi-reg .isoi-documents-section [id$="Label41"] { display: none; }

.isoi-reg .isoi-dropzone {
    position: relative;
    display: flex;
    min-height: 150px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 24px;
    border: 2px dashed #B9C7DC;
    border-radius: 10px;
    background: var(--surface-2);
    color: var(--muted);
    text-align: center;
    cursor: pointer;
    transition: border-color .15s, background .15s;
}

.isoi-reg .isoi-dropzone strong { color: var(--ink); font-size: 14px; }
.isoi-reg .isoi-dropzone.is-dragging,
.isoi-reg .isoi-dropzone:focus-within { border-color: var(--blue); background: var(--blue-tint); outline: none; }
.isoi-reg .isoi-upload-icon { color: var(--blue); font-size: 25px; font-weight: 700; }
.isoi-reg .isoi-dropzone input[type="file"] { position: absolute; inset: 0; width: 100% !important; height: 100%; opacity: 0; cursor: pointer; }

.isoi-reg [id="PreviewImage"] {
    width: 96px !important;
    height: 96px !important;
    margin-top: 12px;
    border: 1px solid var(--line) !important;
    border-radius: 10px;
    object-fit: cover;
}

.isoi-reg .isoi-submit {
    display: block;
    width: 100%;
    min-height: 48px;
    border: 0;
    border-radius: 8px;
    background: var(--blue);
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .01em;
}

.isoi-reg .isoi-submit:hover,
.isoi-reg .isoi-submit:focus { background: #155DC2; }

@media (max-width: 767px) {
    .isoi-reg .isoi-field-quarter,
    .isoi-reg .isoi-field-three-quarter,
    .isoi-reg .isoi-field-half,
    .isoi-reg .isoi-field-third { grid-column: span 12; }
    .isoi-reg .isoi-form-section .isoi-card-body { padding: 16px; }
}

/* ==========================================================================
   Shared pieces for the smaller ISOI 2027 delegate pages
   (Know Your Registration Number, Download E-Receipt).
   ========================================================================== */

/* ---------- labelled field ---------- */
.isoi-reg .isoi-fld { margin-bottom: 16px; }

.isoi-reg .isoi-fld > label,
.isoi-reg .isoi-fld .LabelStyles {
    display: inline-block;
    margin-bottom: 6px;
    font-weight: 600 !important;
    font-size: 13px !important;
    color: var(--ink) !important;
    letter-spacing: .01em;
}

/* required marker sits beside the caption, not on its own line */
.isoi-reg .isoi-fld .isoi-req {
    display: inline-block;
    margin: 0 0 6px 3px;
    font-size: 13px;
}

.isoi-reg .isoi-fld input[type="text"],
.isoi-reg .isoi-fld .form-control {
    width: 100%;
    height: 42px;
    padding: 8px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink);
    font-size: 14px;
}

.isoi-reg .isoi-fld input[type="text"]:focus,
.isoi-reg .isoi-fld .form-control:focus {
    outline: none;
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(31, 111, 224, .12);
}

.isoi-reg .isoi-req { color: #D14343; font-weight: 700; }

/* ---------- buttons ---------- */
.isoi-reg .isoi-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }

.isoi-reg input.isoi-btn,
.isoi-reg a.isoi-btn {
    display: inline-block;
    height: 42px;
    padding: 0 22px;
    border: 1px solid var(--navy);
    border-radius: 8px;
    background: var(--navy);
    color: #fff !important;
    font-weight: 700;
    font-size: 14px;
    line-height: 40px;
    text-decoration: none !important;
    cursor: pointer;
    transition: background .15s, border-color .15s, box-shadow .15s;
}

.isoi-reg input.isoi-btn:hover,
.isoi-reg a.isoi-btn:hover {
    background: var(--navy-3);
    border-color: var(--navy-3);
    box-shadow: 0 3px 12px rgba(10, 22, 51, .22);
}

.isoi-reg input.isoi-btn-ghost {
    background: var(--surface);
    border-color: var(--line);
    color: var(--muted) !important;
}

.isoi-reg input.isoi-btn-ghost:hover {
    background: var(--surface-2);
    border-color: var(--blue);
    color: var(--blue) !important;
    box-shadow: none;
}

/* ---------- result count ---------- */
.isoi-reg .isoi-count {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 10px 14px;
    margin-bottom: 14px;
    border: 1px solid var(--line);
    border-left: 3px solid var(--gold);
    border-radius: 8px;
    background: var(--surface-2);
    font-size: 13.5px;
}

.isoi-reg .isoi-count .LabelStyles { font-weight: 600 !important; color: var(--ink) !important; }
.isoi-reg .isoi-count .LabelStyleValidation { font-weight: 700 !important; color: var(--blue) !important; font-size: 15px; }

/* ---------- results table (GridView) ---------- */
.isoi-reg .isoi-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--line);
    border-radius: 10px;
}

.isoi-reg table.isoi-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--surface);
    font-size: 14px;
    color: var(--ink);
}

.isoi-reg table.isoi-table th {
    padding: 12px 14px;
    background: var(--navy);
    color: var(--gold-lt);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    text-align: left;
    white-space: nowrap;
}

.isoi-reg table.isoi-table td {
    padding: 12px 14px;
    border-top: 1px solid var(--line);
    color: var(--ink);
    vertical-align: middle;
}

.isoi-reg table.isoi-table td span { font-size: inherit; color: inherit; }
.isoi-reg table.isoi-table tr:nth-child(even) td { background: var(--surface-2); }
.isoi-reg table.isoi-table tr:hover td { background: var(--blue-tint); }

/* the registration number is the thing people came for */
.isoi-reg table.isoi-table td:nth-child(2) {
    font-weight: 700;
    color: var(--navy);
    letter-spacing: .02em;
    white-space: nowrap;
}

.isoi-reg .isoi-empty {
    padding: 26px 18px;
    text-align: center;
    color: var(--muted);
    font-size: 14px;
}

/* ---------- status panels ---------- */
.isoi-reg .isoi-status {
    padding: 18px 20px;
    border-radius: 10px;
    border: 1px solid var(--line);
    background: var(--surface-2);
}

.isoi-reg .isoi-status-title {
    display: block;
    font-weight: 700;
    font-size: 16px;
    color: var(--ink);
    margin-bottom: 6px;
}

.isoi-reg .isoi-status span { color: var(--muted) !important; font-size: 13.5px !important; }
.isoi-reg .isoi-status .isoi-status-title { color: var(--ink) !important; font-size: 16px !important; }

.isoi-reg .isoi-status-warn { border-left: 3px solid var(--gold); }
.isoi-reg .isoi-status-none { border-left: 3px solid #D14343; }

/* ---------- receipt download ---------- */
.isoi-reg .isoi-receipt-name {
    display: block;
    font-weight: 700;
    font-size: 17px;
    color: var(--ink);
    margin-bottom: 4px;
}

.isoi-reg .isoi-receipt-sub { font-size: 13px; color: var(--muted); margin-bottom: 16px; }

.isoi-reg a.isoi-dl {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 15px 18px;
    margin-bottom: 12px;
    border: 1px solid var(--gold);
    border-radius: 10px;
    background: linear-gradient(135deg, #FDF6E7, #FBEFD3);
    color: var(--navy) !important;
    font-weight: 700;
    font-size: 14.5px;
    text-decoration: none !important;
    transition: box-shadow .15s, transform .05s;
}

.isoi-reg a.isoi-dl:hover {
    box-shadow: 0 4px 16px rgba(217, 164, 65, .35);
    text-decoration: none !important;
}

.isoi-reg a.isoi-dl:active { transform: translateY(1px); }
.isoi-reg a.isoi-dl .isoi-dl-go { font-size: 18px; color: var(--gold); }

/* ---------- sidebar helper link ---------- */
.isoi-reg .isoi-side-link {
    display: inline-block;
    margin-top: 10px;
    padding: 9px 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--navy) !important;
    font-weight: 700;
    font-size: 13px;
    text-decoration: none !important;
}

.isoi-reg .isoi-side-link:hover {
    border-color: var(--blue);
    color: var(--blue) !important;
    background: var(--blue-tint);
    text-decoration: none !important;
}

/* ---------- admin login ---------- */
.isoi-reg .isoi-login {
    max-width: 430px;
    margin: 0 auto;
}

.isoi-reg .isoi-login .isoi-card-body { padding: 24px; }

.isoi-reg .isoi-captcha {
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: var(--surface-2);
}

.isoi-reg .isoi-captcha-q {
    display: block;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--muted);
    margin-bottom: 10px;
}

.isoi-reg .isoi-captcha-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.isoi-reg .isoi-captcha-row .LabelStyles,
.isoi-reg .isoi-captcha-row span {
    font-size: 22px !important;
    font-weight: 700 !important;
    color: var(--navy) !important;
    line-height: 1;
}

.isoi-reg .isoi-captcha-row input[type="text"] {
    width: 84px !important;
    height: 42px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink) !important;
    font-size: 17px !important;
    font-weight: 700;
    text-align: center;
}

.isoi-reg .isoi-captcha-row input[type="text"]:focus {
    outline: none;
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(31, 111, 224, .12);
}

.isoi-reg .isoi-captcha-op { color: var(--gold) !important; }

.isoi-reg a.isoi-captcha-refresh,
.isoi-reg a.isoi-captcha-refresh:link,
.isoi-reg a.isoi-captcha-refresh:visited {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--muted) !important;
    text-decoration: none !important;
}

.isoi-reg a.isoi-captcha-refresh:hover {
    border-color: var(--blue);
    color: var(--blue) !important;
    background: var(--blue-tint);
}

.isoi-reg .isoi-login-actions {
    display: flex;
    gap: 10px;
    margin-top: 20px;
}

.isoi-reg .isoi-login-actions input { flex: 1 1 0; }

.isoi-reg input.isoi-btn-cancel {
    background: var(--surface);
    border-color: var(--line);
    color: var(--muted) !important;
}

.isoi-reg input.isoi-btn-cancel:hover {
    border-color: #D14343;
    color: #D14343 !important;
    background: #FDF3F3;
    box-shadow: none;
}

/* ==========================================================================
   "View registration fee structure" panel
   gvFees runs with ShowHeader="false" and the stored procedure returns the
   column captions as the FIRST DATA ROW, which gvFees_RowDataBound colours
   inline. Inline colours land on the <tr>, so these rules target <td> to
   win, and row 1 is styled as the header.
   ========================================================================== */
.isoi-reg .isoi-fee-panel {
    max-width: 640px;
    margin: 0 auto 20px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface);
    box-shadow: 0 8px 28px rgba(16, 24, 40, .12);
    overflow: hidden;
}

.isoi-reg .isoi-fee-panel-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: var(--surface-2);
    border-bottom: 1px solid var(--line);
}

.isoi-reg .isoi-fee-panel-title {
    font-weight: 700;
    font-size: 14px;
    color: var(--ink);
    letter-spacing: .01em;
}

.isoi-reg button.isoi-fee-close {
    margin-left: auto;
    width: 28px;
    height: 28px;
    padding: 0;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: var(--surface);
    color: var(--muted);
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}

.isoi-reg button.isoi-fee-close:hover {
    border-color: #D14343;
    color: #D14343;
    background: #FDF3F3;
}

.isoi-reg .isoi-fee-body {
    border: none;
    border-radius: 0;
    overflow-x: auto;
}

.isoi-reg table.isoi-fee-table { margin: 0; }

.isoi-reg table.isoi-fee-table td {
    padding: 12px 16px !important;
    border-top: 1px solid var(--line);
    background: var(--surface) !important;
    color: var(--ink) !important;
    text-align: left;
    font-size: 14px;
}

/* first row carries the column captions */
.isoi-reg table.isoi-fee-table tr:first-child td {
    background: var(--navy) !important;
    color: var(--gold-lt) !important;
    border-top: none;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .13em;
    text-transform: uppercase;
    white-space: nowrap;
}

.isoi-reg table.isoi-fee-table tr:first-child td span { color: var(--gold-lt) !important; font-size: inherit !important; }

.isoi-reg table.isoi-fee-table tr:nth-child(even) td { background: var(--surface-2) !important; }
.isoi-reg table.isoi-fee-table tr:hover:not(:first-child) td { background: var(--blue-tint) !important; }

/* narrow serial column, and the amount reads as the important figure */
.isoi-reg table.isoi-fee-table td:first-child {
    width: 46px;
    text-align: center;
    color: var(--muted) !important;
}

.isoi-reg table.isoi-fee-table tr:first-child td:first-child { color: var(--gold-lt) !important; }

.isoi-reg table.isoi-fee-table td:last-child {
    text-align: right;
    font-weight: 700;
    color: var(--navy) !important;
    white-space: nowrap;
}

.isoi-reg table.isoi-fee-table tr:first-child td:last-child { color: var(--gold-lt) !important; }
.isoi-reg table.isoi-fee-table td span { color: inherit !important; font-size: inherit !important; }

/* ==========================================================================
   Membership verification + conference-manual rows inside the Step 1 card
   ========================================================================== */
.isoi-reg .isoi-verify {
    margin-top: 18px;
    padding: 16px 18px;
    border: 1px solid #CFE0FA;
    border-radius: 10px;
    background: var(--blue-tint);
}

.isoi-reg .isoi-verify-head {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    margin-bottom: 14px;
}

.isoi-reg .isoi-verify-ico { flex: 0 0 auto; font-size: 17px; line-height: 1.2; }

.isoi-reg .isoi-verify-title {
    display: block;
    font-weight: 700 !important;
    font-size: 14.5px !important;
    color: var(--ink) !important;
    line-height: 1.25;
}

.isoi-reg .isoi-verify-sub {
    display: block;
    margin-top: 3px;
    font-size: 12.5px;
    color: var(--muted);
    line-height: 1.45;
}

.isoi-reg .isoi-verify-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    flex-wrap: wrap;
}

.isoi-reg .isoi-verify-input {
    position: relative;
    flex: 1 1 260px;
    min-width: 0;
}

.isoi-reg .isoi-verify-input .isoi-req {
    position: absolute;
    left: 10px;
    top: 11px;
    z-index: 2;
    font-size: 13px;
    line-height: 1;
}

.isoi-reg .isoi-verify-input .form-control {
    width: 100%;
    height: 42px;
    padding: 8px 12px 8px 22px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink);
    font-size: 14px;
}

.isoi-reg .isoi-verify-input .form-control:focus {
    outline: none;
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(31, 111, 224, .12);
}

.isoi-reg a.isoi-verify-go,
.isoi-reg a.isoi-verify-go:link,
.isoi-reg a.isoi-verify-go:visited {
    flex: 0 0 auto;
    min-width: 132px;
    text-align: center;
    background: var(--navy);
    border-color: var(--navy);
    color: #fff !important;
}

@media (max-width: 575px) {
    .isoi-reg .isoi-verify-row { display: block; }
    .isoi-reg a.isoi-verify-go { display: block; width: 100%; margin-top: 10px; }
}

/* ---------- yes/no option row ---------- */
.isoi-reg .isoi-optrow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 16px;
    padding: 14px 16px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface-2);
}

.isoi-reg .isoi-optrow-title {
    font-weight: 700 !important;
    font-size: 14px !important;
    color: var(--ink) !important;
}

.isoi-reg .isoi-optrow-note {
    display: block;
    margin-top: 2px;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    color: var(--muted) !important;
}

.isoi-reg .isoi-optrow-control table { border-collapse: collapse; }

.isoi-reg .isoi-optrow-control td {
    padding: 0 0 0 18px !important;
    white-space: nowrap;
    vertical-align: middle;
}

.isoi-reg .isoi-optrow-control td input[type="radio"] {
    margin: 0 7px 0 0 !important;
    width: 16px;
    height: 16px;
    vertical-align: middle;
    accent-color: #1F6FE0;
}

.isoi-reg .isoi-optrow-control td label {
    display: inline !important;
    margin: 0 !important;
    color: var(--ink) !important;
    font-weight: 600 !important;
    font-size: 13.5px !important;
    vertical-align: middle;
}

/* ==========================================================================
   Payment result / confirmation page
   The code-behind sets lbl_result to "Successful" or "Failed" and applies an
   inline ForeColor, so the badge tint is driven from script by reading that
   text rather than fighting the inline colour.
   ========================================================================== */
.isoi-reg .isoi-result { max-width: 620px; margin: 0 auto; }

.isoi-reg .isoi-result-top {
    padding: 28px 24px 22px;
    text-align: center;
    border-bottom: 1px solid var(--line);
}

.isoi-reg .isoi-result-mark {
    width: 64px;
    height: 64px;
    margin: 0 auto 16px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 32px;
    line-height: 1;
    background: #E9F7EF;
    color: #16A34A;
    border: 2px solid #16A34A;
}

.isoi-reg .isoi-result-greet {
    display: block;
    font-size: 19px !important;
    font-weight: 700 !important;
    color: var(--ink) !important;
    margin-bottom: 10px;
}

.isoi-reg .isoi-result-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 16px;
    border-radius: 999px;
    background: #E9F7EF;
    border: 1px solid #16A34A;
    font-size: 13px;
    font-weight: 700;
}

.isoi-reg .isoi-result-status .isoi-result-k {
    color: var(--muted) !important;
    font-weight: 600 !important;
    font-size: 12.5px !important;
}

.isoi-reg .isoi-result-status .Heading { font-size: 13.5px !important; font-weight: 700 !important; }

/* failed variant, toggled by script */
.isoi-reg .isoi-result.is-failed .isoi-result-mark {
    background: #FDF3F3;
    color: #D14343;
    border-color: #D14343;
}

.isoi-reg .isoi-result.is-failed .isoi-result-status {
    background: #FDF3F3;
    border-color: #D14343;
}

/* ---------- detail rows ---------- */
.isoi-reg .isoi-result-rows { padding: 6px 24px 20px; }

.isoi-reg .isoi-result-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 0;
    border-bottom: 1px dashed var(--line);
}

.isoi-reg .isoi-result-row:last-child { border-bottom: none; }

.isoi-reg .isoi-result-row .isoi-result-k {
    flex: 0 0 auto;
    font-size: 13px !important;
    font-weight: 600 !important;
    color: var(--muted) !important;
}

.isoi-reg .isoi-result-row .Heading,
.isoi-reg .isoi-result-row .isoi-result-v {
    text-align: right;
    font-weight: 700 !important;
    font-size: 15px !important;
    color: var(--ink) !important;
    word-break: break-all;
}

/* the two figures people actually look for */
.isoi-reg .isoi-result-amount .Heading { font-size: 22px !important; color: var(--navy) !important; }

.isoi-reg .isoi-result-regno .Heading {
    font-size: 20px !important;
    color: var(--navy) !important;
    letter-spacing: .06em;
}

/* ---------- note panel ---------- */
.isoi-reg .isoi-result-note {
    margin: 0 24px 20px;
    padding: 16px 18px;
    border: 1px solid #EBD6A2;
    border-left: 3px solid var(--gold);
    border-radius: 9px;
    background: #FDF6E7;
}

.isoi-reg .isoi-result-note .Heading {
    display: block;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    color: #6A4E12 !important;
    text-align: left !important;
    margin-bottom: 6px;
    text-decoration: none !important;
}

.isoi-reg .isoi-result-note .isoi-note-head {
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--gold) !important;
}

/* ---------- actions ---------- */
.isoi-reg .isoi-result-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 0 24px 26px;
}

.isoi-reg .isoi-result-actions input.isoi-btn { min-width: 130px; }

.isoi-reg a.isoi-result-link,
.isoi-reg a.isoi-result-link:link,
.isoi-reg a.isoi-result-link:visited {
    display: inline-block;
    padding: 10px 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--navy) !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    text-decoration: none !important;
}

.isoi-reg a.isoi-result-link:hover {
    border-color: var(--blue);
    color: var(--blue) !important;
    background: var(--blue-tint);
    text-decoration: none !important;
}

.isoi-reg .isoi-result-hint {
    padding: 0 24px 24px;
    text-align: center;
    font-size: 12.5px;
    color: var(--muted);
    line-height: 1.5;
}

@media (max-width: 575px) {
    .isoi-reg .isoi-result-row { display: block; }
    .isoi-reg .isoi-result-row .Heading,
    .isoi-reg .isoi-result-row .isoi-result-v { text-align: left; display: block; margin-top: 4px; }
    .isoi-reg .isoi-result-actions input.isoi-btn,
    .isoi-reg a.isoi-result-link { width: 100%; text-align: center; }
}

/* currency prefix on the result page amount */
.isoi-reg .isoi-result-amount .isoi-result-cur {
    font-size: 15px !important;
    font-weight: 600 !important;
    color: var(--muted) !important;
    margin-right: 2px;
}

.isoi-reg .isoi-result-amount .Heading { white-space: nowrap; }

/* submit + reset side by side, submit carrying the weight */
.isoi-reg .isoi-submit-row {
    display: flex;
    gap: 12px;
    align-items: stretch;
}

.isoi-reg .isoi-submit-row .isoi-submit { flex: 1 1 auto; width: auto; }

.isoi-reg .isoi-submit-row .isoi-submit-reset {
    flex: 0 0 auto;
    width: auto;
    min-width: 150px;
    background: var(--surface);
    border: 1px solid var(--line);
    color: var(--muted);
}

.isoi-reg .isoi-submit-row .isoi-submit-reset:hover,
.isoi-reg .isoi-submit-row .isoi-submit-reset:focus {
    background: #FDF3F3;
    border-color: #D14343;
    color: #D14343;
}

@media (max-width: 575px) {
    .isoi-reg .isoi-submit-row { display: block; }
    .isoi-reg .isoi-submit-row .isoi-submit,
    .isoi-reg .isoi-submit-row .isoi-submit-reset { width: 100%; }
    .isoi-reg .isoi-submit-row .isoi-submit-reset { margin-top: 10px; }
}

/* ---------- Fees Master (admin) ---------- */
.isoi-reg .isoi-fld-hint {
    display: block;
    margin-top: 5px;
    font-size: 11.5px;
    line-height: 1.4;
    color: var(--muted);
}

.isoi-reg .isoi-fld select.form-control {
    width: 100%;
    height: 42px;
    padding: 8px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink);
    font-size: 14px;
}

.isoi-reg .isoi-card-head .isoi-change-cat { cursor: pointer; }

/* row actions in the grid */
.isoi-reg a.isoi-row-act,
.isoi-reg a.isoi-row-act:link,
.isoi-reg a.isoi-row-act:visited {
    display: inline-block;
    padding: 5px 11px;
    margin: 2px 3px;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: var(--surface);
    color: var(--navy) !important;
    font-size: 12px;
    font-weight: 600 !important;
    text-decoration: none !important;
    white-space: nowrap;
}

.isoi-reg a.isoi-row-act:hover {
    border-color: var(--blue);
    color: var(--blue) !important;
    background: var(--blue-tint);
    text-decoration: none !important;
}

.isoi-reg a.isoi-row-del:hover {
    border-color: #D14343;
    color: #D14343 !important;
    background: #FDF3F3;
}

/* the payable figure is what the delegate is charged */
.isoi-reg table.isoi-table td.isoi-fee-payable {
    font-weight: 700;
    color: var(--navy);
    white-space: nowrap;
}

/* ==========================================================================
   Fees Master editable grid: categories down, date slabs across.
   ========================================================================== */
.isoi-reg .isoi-grid-hint {
    margin-bottom: 14px;
    padding: 11px 14px;
    border: 1px solid #CFE0FA;
    border-radius: 8px;
    background: var(--blue-tint);
    font-size: 12.5px;
    color: #42506A;
}

.isoi-reg .isoi-grid-wrap { overflow-x: auto; }

.isoi-reg table.isoi-fee-grid {
    width: 100%;
    border-collapse: collapse;
    background: var(--surface);
}

.isoi-reg table.isoi-fee-grid th {
    padding: 10px 12px;
    background: var(--navy);
    color: var(--gold-lt);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    text-align: left;
    vertical-align: top;
    white-space: nowrap;
}

.isoi-reg table.isoi-fee-grid td {
    padding: 10px 12px;
    border-top: 1px solid var(--line);
    vertical-align: top;
}

.isoi-reg table.isoi-fee-grid tbody tr:nth-child(even) td { background: var(--surface-2); }
.isoi-reg table.isoi-fee-grid .isoi-c-num { width: 42px; text-align: center; color: var(--muted); font-weight: 700; }
.isoi-reg table.isoi-fee-grid .isoi-c-cat { width: 250px; min-width: 250px; }
.isoi-reg table.isoi-fee-grid .isoi-c-slab { width: 195px; min-width: 195px; }

/* the trailing spacer soaks up any leftover width so the slab columns keep
   their size instead of stretching when there are only one or two of them */
.isoi-reg table.isoi-fee-grid .isoi-c-act { width: 100%; min-width: 12px; padding: 0 !important; }

/* inputs inside the grid */
.isoi-reg table.isoi-fee-grid input[type="text"] {
    display: block;          /* th has white-space:nowrap, so stack explicitly */
    width: 100%;
    height: 38px;
    padding: 6px 10px;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: var(--surface);
    color: var(--ink);
    font-size: 13.5px;
}

.isoi-reg table.isoi-fee-grid input[type="text"]:focus {
    outline: none;
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(31, 111, 224, .12);
}

.isoi-reg table.isoi-fee-grid input.is-bad,
.isoi-reg table.isoi-fee-grid th.is-bad input {
    border-color: #D14343;
    background: #FDF3F3;
    box-shadow: 0 0 0 3px rgba(209, 67, 67, .12);
}

/* slab heading + date stacked in the column header */
.isoi-reg table.isoi-fee-grid .isoi-slab-hdr {
    font-weight: 700 !important;
    margin-bottom: 6px;
}

.isoi-reg table.isoi-fee-grid .isoi-slab-date {
    font-size: 12.5px !important;
    cursor: pointer;
    background: var(--surface-2) !important;
}

.isoi-reg table.isoi-fee-grid th.is-new { background: linear-gradient(180deg, #17306B, #0A1633); }

.isoi-reg .isoi-slab-newtag {
    display: inline-block;
    margin-top: 6px;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--gold);
    color: var(--navy);
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: .1em;
}

/* amounts read as money */
.isoi-reg table.isoi-fee-grid .isoi-amt {
    text-align: right;
    font-weight: 700 !important;
    color: var(--navy) !important;
}

.isoi-reg .isoi-cell-hint {
    display: block;
    margin-top: 4px;
    font-size: 10.5px;
    color: var(--muted);
    text-align: right;
    min-height: 13px;
}

.isoi-reg table.isoi-fee-grid .isoi-cat-name { font-weight: 600 !important; }
.isoi-reg table.isoi-fee-grid tr.isoi-row-new td { background: #FBFCFE; }
.isoi-reg table.isoi-fee-grid tr.isoi-row-new .isoi-c-num { color: var(--gold); font-size: 17px; }

/* footer */
.isoi-reg .isoi-grid-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 18px;
}

.isoi-reg .isoi-grid-note { font-size: 12.5px; }
.isoi-reg .isoi-status-ok { color: #16A34A; font-weight: 700; }
.isoi-reg .isoi-status-bad { color: #D14343; font-weight: 700; }

.isoi-reg .isoi-newslab-btn {
    background: var(--gold) !important;
    border-color: var(--gold) !important;
    color: var(--navy) !important;
    font-weight: 700 !important;
}

.isoi-reg .isoi-newslab-btn:hover {
    background: var(--gold-lt) !important;
    border-color: var(--gold-lt) !important;
}

/* existing category names are fixed - shown as text, not an input, so they
   keep matching the options on the registration page */
.isoi-reg table.isoi-fee-grid .isoi-cat-fixed {
    display: block;
    padding: 9px 2px;
    font-weight: 700;
    font-size: 13.5px;
    color: var(--ink);
    line-height: 1.3;
}

/* ==========================================================================
   Admin dashboard (Home.aspx)
   The breakdown lists are DataLists that emit hand-built tables with inline
   styles on the cells, so these rules need !important to take over.
   ========================================================================== */

/* ---------- KPI tiles ---------- */
.isoi-dash .isoi-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 16px;
    margin: 20px 0 26px;
}

.isoi-dash a.isoi-kpi,
.isoi-dash a.isoi-kpi:link,
.isoi-dash a.isoi-kpi:visited {
    display: block;
    padding: 18px 20px;
    border: 1px solid var(--line);
    border-top: 3px solid var(--blue);
    border-radius: 10px;
    background: var(--surface);
    box-shadow: 0 1px 3px rgba(16, 24, 40, .06);
    text-decoration: none !important;
    transition: box-shadow .15s, transform .05s;
}

.isoi-dash a.isoi-kpi:hover {
    box-shadow: 0 6px 20px rgba(16, 24, 40, .12);
    text-decoration: none !important;
}

.isoi-dash a.isoi-kpi:active { transform: translateY(1px); }
.isoi-dash a.isoi-kpi.is-approved { border-top-color: #16A34A; }
.isoi-dash a.isoi-kpi.is-pending { border-top-color: var(--gold); }

.isoi-dash .isoi-kpi-k {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--muted);
}

.isoi-dash .isoi-kpi-v {
    display: block;
    margin: 8px 0 4px;
    font-size: 34px;
    font-weight: 800;
    line-height: 1;
    color: var(--navy);
}

.isoi-dash .isoi-kpi-v span { color: inherit !important; font-size: inherit !important; font-weight: inherit !important; }
.isoi-dash a.isoi-kpi.is-approved .isoi-kpi-v { color: #16A34A; }
.isoi-dash a.isoi-kpi.is-pending .isoi-kpi-v { color: #B4801F; }

.isoi-dash .isoi-kpi-go {
    display: block;
    font-size: 12px;
    color: var(--muted);
}

/* ---------- breakdown panels ---------- */
.isoi-dash u { text-decoration: none !important; }

.isoi-dash .LabelStyle[id*="Label"] { color: var(--ink) !important; }

/* section captions above each list */
.isoi-dash u > span {
    display: inline-block;
    margin-bottom: 4px;
    font-size: 13px !important;
    font-weight: 700 !important;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--navy) !important;
}

/* ---------- the DataList tables ----------
   A DataList emits its own outer <table id="..."> and wraps every template in
   a <tr><td>. The HeaderTemplate here opens a second, hand-built table inside
   that cell, so the real data table is the nested one WITHOUT an id, and each
   item leaves behind an empty single-cell spacer row. Both are handled below. */

/* outer DataList shell - make it disappear */
.isoi-dash table[id] {
    width: 100% !important;
    border: 0 !important;
    border-collapse: collapse !important;
    background: transparent !important;
    box-shadow: none !important;
}

.isoi-dash table[id] > tbody > tr > td { padding: 0 !important; border: 0 !important; background: transparent !important; }

/* the real data table */
.isoi-dash table:not([id]) {
    width: 100% !important;
    border: 0 !important;
    border-collapse: collapse !important;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(16, 24, 40, .06);
}

.isoi-dash table:not([id]) td {
    border: 0 !important;
    border-bottom: 1px solid var(--line) !important;
    padding: 10px 13px !important;
    background: var(--surface) !important;
    font-size: 13px;
    vertical-align: middle;
}

.isoi-dash table:not([id]) td span { color: var(--ink) !important; font-size: 13px !important; }

/* header row from the HeaderTemplate */
.isoi-dash table:not([id]) tr:first-child td {
    background: var(--navy) !important;
    border-bottom: 0 !important;
    padding: 11px 13px !important;
}

.isoi-dash table:not([id]) tr:first-child td span {
    color: var(--gold-lt) !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
    letter-spacing: .12em;
    text-transform: uppercase;
}

/* collapse the empty spacer row the DataList leaves after every item */
.isoi-dash table:not([id]) td:only-child:empty {
    display: none !important;
    padding: 0 !important;
    border: 0 !important;
}

.isoi-dash table:not([id]) tr:hover td { background: var(--blue-tint) !important; }
.isoi-dash table:not([id]) tr:hover:first-child td { background: var(--navy) !important; }

/* the closing TOTAL row reads as a summary */
.isoi-dash table:not([id]) tr:last-of-type td,
.isoi-dash table:not([id]) tr:nth-last-child(2) td {
    border-bottom: 0 !important;
    background: var(--surface-2) !important;
    font-weight: 700;
}

/* the fixed-height scroll boxes around each list */
.isoi-dash [id$="statewise"],
.isoi-dash div[style*="overflow-y"] {
    height: auto !important;
    max-height: 360px;
    overflow-y: auto !important;
    padding-right: 2px;
}

.isoi-dash .col-md-5,
.isoi-dash .col-md-6,
.isoi-dash .col-md-7 { margin-bottom: 24px; }
