* {
    box-sizing: border-box;
}

h2 {
    margin-top: 0;
}

h2 span.heading-description {
    display: block;
    font-size: 14px;
    font-weight: 400;
}

.flex { 
    display: flex;
    align-items: center;
    justify-content: space-around;
    gap: 2px;
}

body {
    font-family: "Roboto", sans-serif;
    background-color: var(--color-bg-body);
    color: var(--color-secondary);
    margin: 0;;
}

.content-wrapper {
    display: block;
}

.container {
    max-width: 84.664rem;
    margin-left: auto;
    margin-right: auto;
    padding-left: 2.666rem;
    padding-right: 2.666rem;
}

@media (max-width: 768px) {
    .container {
        padding-left: 0.666rem;
        padding-right: 0.666rem;
    }
}

.form-grid-wrapper {
    background: var(--color-white);
    border: 1px solid var(--color-border-light);
    border-radius: 12px;
    margin-bottom: 32px;
}

.form-grid {
    display: grid;
}

.form-grid h2 {
    flex: 1;
}

.grid-2 {
    grid-template-columns: repeat(2, 1fr);
    gap: 32px 24px;
}

.grid-3 {
    grid-template-columns: repeat(3, 1fr);
    gap: 32px 24px;
}

.grid-4 {
    grid-template-columns: repeat(4, 1fr);
    gap: 32px 24px;
}

.form-section {
    border-radius: 12px;
    padding: 32px;
}

@media (max-width: 900px) {
    .form-grid {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .form-section {
        padding: 16px 8px 0 8px;
    }
}

.form-row {
    margin-bottom: 18px;
    position: relative;
}

.form-floating {
    position: relative;
    flex: 1 1 auto;
}

.form-description {
    flex: 1 1 640px;
    position: relative;
    top: 2px;
}

.form-description textarea {
    min-height: 43px;
    height: 43px;
    resize: vertical;
}

.form-floating .form-input,
.form-floating select.form-select {
    width: 100%;
    padding: 10px 12px;
    font-size: 1rem;
    outline: none;
}

.form-input,
.form-select,
input,
select,
textarea {
    color: var(--color-secondary);
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: 8px;
}

.form-floating .form-input::placeholder,
.form-floating select.form-select::placeholder {
    color: transparent;
}

.form-floating label {
    position: absolute;
    top: 11px;
    left: 12px;
    color: var(--color-text-muted);
    font-size: 1rem;
    pointer-events: none;
    transition: all 0.16s cubic-bezier(.4,0,.2,1);
    background: var(--color-white);
    padding: 0 3px;
    user-select: none;
}

.form-floating .form-input:focus + label,
.form-floating .form-input:not(:placeholder-shown) + label,
.form-floating .form-select:focus + label,
.form-floating .form-select:not([value=""]) + label {
    top: -10px;
    left: 8px;
    font-size: 0.9em;
    color: var(--color-link);
    background: var(--color-white);
}

.form-floating .form-size-small {
    max-width: 145px !important;
}

.form-label {
    display: none; 
}

.form-label .help-icon {
    margin-left: 6px;
    color: var(--color-text-muted);
    font-size: 1em;
    cursor: pointer;
}

.form-error {
    color: var(--color-error-text);
    font-size: 0.9em;
    margin-top: 3px;
}

.form-floating.form-error input.form-input, 
.form-floating.form-error select.form-select {
    border-color: var(--color-error-text);
}

.form-row.toggle-row {
    margin-bottom: 8px;
    text-align: right;
    font-size: .97rem;
}

.form-link {
    color: var(--color-link);
    text-decoration: underline;
    cursor: pointer;
    font-weight: 600;
    background: none;
    border: none;
    padding: 0;
}

.grouped-inputs {
    display: flex;
    align-items: flex-end;
    gap: 8px; 
}

.input-with-label {
    position: relative;
    flex: 1;
}

.input-prefix {
    max-width: 77px;
}

.input-bank_code {
    max-width: 88px;
}

.separator {
    font-size: 1.2rem;
    color: var(--color-secondary);
    padding-bottom: 6px; 
    user-select: none;
    flex: none;
}

.input-with-label .form-error {
    position: absolute;
    bottom: -1.5em;
    left: 0;
    font-size: 0.75rem;
    color: var(--color-error-text);
}

.form-row input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-right: 8px;
    vertical-align: middle;
}

.iban-group {
    padding-top: 20px;
    display: none;
}

.iban-container input:checked ~ .iban-group {
    display: block;
}

.form-actions {
    background: var(--color-white);
    border-radius: 12px;
    border: 1px solid var(--color-border-light);
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    padding: 15px 25px;
    transform: translateY(0);
    transition: transform .3s ease-in-out;
    z-index: 1000;
}

@media (max-width: 768px) {
    .form-actions {
        justify-content: space-around;
    }
}

.submit-button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 20px;
    background: var(--color-accent);
    color: var(--color-white);
    border: none;
    border-radius: 8px;
    font-size: 1.09rem;
    font-weight: bold;
    cursor: pointer;
    transition: background .2s;
    box-shadow: 0 2px 6px rgba(0,0,0,0.04);
    outline: none;
    text-decoration: none;
}

.submit-button:focus,
.submit-button:hover {
     background: var(--color-accent-hover);
}

.download-icon {
    display: flex;
    align-items: center;
    margin-right: 4px;
}

.submit-button svg {
    height: 22px;
    width: 22px;
    display: block;
}

.main-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 32px;
  border-bottom: 1px solid var(--color-border-divider);
  background: var(--color-white);
  font-family: 'Segoe UI', Arial, sans-serif;
}
.logo {
  font-size: 1.45rem;
  font-weight: bold;
  letter-spacing: .06em;
  display: flex;
  align-items: center;
}
.logo-blue {
  color: var(--color-primary);
  margin-right: 1px;
}
.logo-black {
  color: var(--color-text-dark);
  font-weight: 700;
}
.main-nav {
  display: flex;
  gap: 34px;
  align-items: center;
}
.nav-link {
  color: var(--color-primary);
  text-decoration: none;
  font-weight: 500;
  font-size: 1.03rem;
  display: flex;
  align-items: center;
  transition: color .18s;
  gap: 7px;
  padding: 2px 4px;
}
.nav-link:hover,
.nav-link:focus {
  color: var(--color-primary-dark);
}
.nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
}

.login-btn {
  display: inline-flex;
  align-items: center;
  border: 1.5px solid var(--color-primary);
  color: var(--color-primary);
  text-decoration: none;
  padding: 6px 16px;
  font-size: 1rem;
  border-radius: 10px;
  font-weight: 500;
  background: #f9fdff;
  gap: 7px;
  transition: background .15s, color .15s, border .15s;
}
.login-btn:hover,
.login-btn:focus {
  background: #e7f3fa;
  color: var(--color-primary-dark);
  border-color: var(--color-primary-dark);
}
.login-icon {
  display: flex;
  align-items: center;
  justify-content: center;
}

@media (max-width: 700px) {
  .main-header {
    padding: 10px 8px;
    flex-direction: column;
    align-items: stretch;
    gap: 9px;
    overflow: hidden;
  }
  .main-nav {
    justify-content: space-around;
    gap: 8px;
  }
  .logo {
    justify-content: center;
  }
}

.flash {
  background: var(--color-bg-flash);
  color: var(--color-white);
  padding: 10px 18px;
  border-radius: 5px;
  margin-top: 10px;
  font-size: 0.95rem;
  opacity: 1;
  pointer-events: auto;
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.3);
  max-width: 320px;
}

.flash.warning { background-color: var(--color-status-warning); }
.flash.success { background-color: var(--color-status-success); }
.flash.error { background-color: var(--color-status-error); }

.invoice-wrap {
  background: var(--color-bg-invoice);
  border-radius: 14px;
  border: 1.5px solid #dbeaf5;
  padding: 18px 28px 26px 28px;
  max-width: 1000px;
  margin: 32px auto 0 auto;
}

.invoice-bar {
  display: flex;
  align-items: center;
  margin-bottom: 24px;
  gap: 16px;
}
.invoice-ico {
  background: var(--color-bg-ico);
  border-radius: 9px;
  padding: 5px;
}
.invoice-bar h2 {
  flex: 1;
  font-size: 1.24em;
  color: var(--color-secondary);
  font-weight: bold;
  margin: 0 10px 0 0;
}
.invoice-price-mode {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: .97em;
  color: var(--color-text-muted);
}
.invoice-price-mode label { color: var(--color-secondary); font-weight: 600; margin-left: 5px; }
.invoice-price-mode input[type="radio"] { accent-color: var(--color-primary); }

.qty-btn {
  width: 30px; height: 34px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  font-size: 1.16em;
  font-weight: bold;
  background: var(--color-bg-body);
  color: var(--color-primary);
  cursor: pointer;
  margin: 0 4px;
  transition: background .15s;
}
.qty-btn:hover { background: #e2eef7; }
.qty-input { width: 46px; text-align: center; font-weight: 600; }
.form-control {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 7px 12px;
  background: var(--color-white);
  font-size: 1em;
}
.unit-select, .vat-select { min-width: 66px; }
.price-input, .total-input { min-width: 74px; text-align: right; }
.percent-btn, .tool-btn {
  background: var(--color-bg-body);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  width: 27px; height: 28px;
  color: var(--color-primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 1em;
  cursor: pointer;
}
.percent-btn:hover, .tool-btn:hover { background: #e2eef7; }
.add-item-btn {
  background: none;
  border: 1.5px solid var(--color-primary);
  color: var(--color-primary);
  padding: 8px 16px;
  font-weight: 600;
  font-size: 1rem;
  border-radius: 7px;
  margin-bottom: 10px;
  margin-top: 1px;
  transition: background .15s, color .16s, border .15s;
  cursor: pointer;
}
.add-item-btn:hover { background: #eaf6fd; }
.add-note { margin: 18px 0; }
.add-note-btn {
  background: none; border: none; color: var(--color-primary);
  display: flex; align-items: center; gap: 6px;
  font-weight: 600; cursor: pointer; font-size: 1em;
  margin-bottom: 8px;
}
.add-note-btn:hover { color: var(--color-primary-dark); }
.note-input {
  display: block; width: 100%; margin-top: 4px;
}
.invoice-summary {
  margin-top: 24px;
  background: var(--color-bg-summary);
  border-radius: 12px;
  border: 1px solid #e4eefa;
  max-width: 420px;
  margin-left: auto;
  padding: 18px 28px;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 5px;
  font-size: 1.12em;
}
.summary-label { margin-top: 4px; font-weight: 600; text-align: right;}
.summary-value { font-size: 1.12em; color: var(--color-secondary); }
.summary-value-main { font-size: 1.26em; color: var(--color-text-dark); font-weight: bold;}

@media (max-width: 600px) {
  .invoice-wrap { padding: 5px; }
  .invoice-summary { padding: 10px 8px; max-width: 100%; }
}

.no-top-padding { padding-top: 0; }
.no-bottom-padding { padding-bottom: 0; }
.no-padding { padding: 0; }
.grid-item-center { align-items: center; }
.full-size { width: 100%; height: 100px; }
.readonly { border: none !important; text-align: right; pointer-events: none; user-select: none; }
.text-right { text-align: right; }

.form-total-without_vat { font-size: 18px; }
.form-total-without_vat input { font-size: 18px; width: 250px; }
.form-total { font-weight: 700; font-size: 28px; }
.form-total input { font-size: 28px; width: 250px; font-weight: 700; }
.padding-m-around { padding: 25px; }
@media (min-width: 768px) {
    .form-button { margin-left: 50px; }
}


.invoice-print-preview { font-family: "Roboto", "Arial", sans-serif; }
.WPsCRM_pdf-page {
    margin: 0 auto;
    box-sizing: border-box;
    box-shadow: 0 5px 10px 0 rgba(0,0,0,.3);
    background-color: var(--color-white);
    color: #333;
    position: relative;
    font-size: 14px;
    line-height: 1.3;
}
.WPsCRM_pdf-wrapper { margin: 20px; }
.WPsCRM_businessName { font-size: 20px }
.WPsCRM_customerData { float: right }
.WPsCRM_businessAddress { border-bottom: 1px solid var(--color-border-pdf); padding-bottom: 8px }
.WPsCRM_for { background: #fafafa; float: left; width: 100%; border: 1px dotted var(--color-border-pdf) }
.WPsCRM_for p { color: var(--color-text-grey); }
.WPsCRM_companylogo { max-width: 200px; max-height: 200px; margin: 10px; }
.WPsCRM_customer_data { float: left; }
.WPsCRM_document-body { padding: 2%; position: relative; top: 2% }
.WPsCRM_document_subject { float: left; width: 100%; }
.WPsCRM_text-before, .WPsCRM_text-free, .WPsCRM_text-after { width: 100%; float: left; margin-top: 2%; }
.WPsCRM_items_body, .WPsCRM_items_header { background: transparent; border: none !important; }
.WPsCRM_document-table { width: 100%; float: left; margin-top: 2%; border: none; }
.WPsCRM_price { width: 14%; }
.WPsCRM_discount { width: 12% }
.WPsCRM_qty { width: 11% }
.WPsCRM_total { width: 15% }
.WPsCRM-total { width: 100%; float: left; background: transparent; }
.WPsCRM_paid { opacity: .5; transform: rotate(-7deg) scale(.7); }
.WPsCRM_pdf-footer {
    position: absolute; bottom: .5in; height: .6in; left: .5in; right: .5in;
    padding-top: 10px; border-top: 1px solid #e5e5e5; text-align: left;
    color: var(--color-text-grey); font-size: 12px;
}
.WPsCRM_pdf-body, .WPsCRM_document-header { float: left; width: 100%; }
.size-a4 { width: 8.3in; height: 11.7in; }
.WPsCRM_signatures { float: right; width: 300px; display: inline-block; clear: both; }
.WPsCRM_headerlines { line-height: 1em; width: 100%; float: left; display: inline-block; clear: none; }

.WPsCRM_pdf-page .table>tbody>tr>td, 
.WPsCRM_pdf-page .table>tbody>tr>th, 
.WPsCRM_pdf-page .table>tfoot>tr>td, 
.WPsCRM_pdf-page .table>tfoot>tr>th,
.WPsCRM_pdf-page .table>thead>tr>td,
.WPsCRM_pdf-page .table>thead>tr>th { padding: 8px; }
.WPsCRM_pdf-page .table th { text-align: right; } 
.WPsCRM_pdf-page .small, .WPsCRM_pdf-page small { font-size: 85%; }
.WPsCRM_pdf-page .h4, .WPsCRM_pdf-page h4 { font-size: 18px; font-weight: 600; }

/* Statusy v reportech */
.status--new::before { background: var(--color-status-new); }
.status--paid::before { background: var(--color-status-paid); }
.status--cancelled::before { background: var(--color-status-cancelled); }
.status--unpaid::before { background: var(--color-status-unpaid); }
.status--overdue::before { background: var(--color-status-overdue); }
.status--future::before { background: var(--color-status-future); }

.graph.status--new { stroke: var(--color-status-new); }
.graph.status--paid { stroke: var(--color-status-paid); }
.graph.status--cancelled { stroke: var(--color-status-cancelled); }
.graph.status--unpaid { stroke: var(--color-status-unpaid); }
.graph.status--overdue { stroke: var(--color-status-overdue); }
.graph.status--future { stroke: var(--color-status-future); }

.status--paid .stat-report__label, .status--paid .cell.status span { color: var(--color-status-paid); background: var(--color-status-paid-bg); }
.status--new .stat-report__label, .status--new .cell.status span { color: var(--color-status-new); background: var(--color-status-new-bg); }
.status--cancelled .stat-report__label, .status--cancelled .cell.status span { color: var(--color-status-cancelled); background: var(--color-status-cancelled-bg); }
.status--future .stat-report__label, .status--future .cell.status span { background-color: var(--color-status-future-bg); color: var(--color-status-future); }
.status--unpaid .stat-report__label, .status--unpaid .cell.status span { background-color: var(--color-status-unpaid-bg); color: var(--color-status-unpaid); }
.status--overdue .stat-report__label, .status--overdue .cell.status span { background-color: var(--color-status-overdue-bg); color: var(--color-status-overdue); }

/* Seznam faktur */
.invoice-list { background: var(--color-white); border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.05); }
.header-row, .invoice-row { display: flex; align-items: center; min-height: 48px; border-bottom: 1px solid #e8ecef; }
.invoice-row { position: relative; }
.invoice-row::before { content: ''; position: absolute; left: 0; top: 0; width: 5px; height: 100%; }

.header-row { background: var(--color-link-hover); color: var(--color-white); font-weight: 700; border-radius: 6px 6px 0 0; border-bottom: 0; }
.cell { padding: 8px 10px; flex: 1 1 0; white-space: nowrap; text-overflow: ellipsis; }
.cell.checkbox { flex: 0 0 36px; text-align: center; }
.cell.number { flex: 0 0 65px; text-align: center; }
.cell.due_date { flex: 0 0 150px; text-align: right; }
.cell.status { flex: 0 0 150px; text-align: center; }
.cell.total { flex: 0 0 150px; text-align: right; }
.cell.actions { flex: 0 0 150px; display: flex; gap: 7px; justify-content: center; }
.cell.status span { font-weight: bold; border-radius: 8px; display: inline-block; padding: 2px 10px; font-size: 90%; }

.invoice-row:hover { background: #f3f6fa; }
a { text-decoration: underline; color: var(--color-link-hover); }
.action-btn { cursor: pointer; border: none; background: none; font-size: 1.2em; line-height: 1; padding: 0px; stroke: var(--color-link-hover); transition: stroke 0.2s; }
.action-btn.delete { stroke: var(--color-status-cancelled); }
.action-btn:hover { stroke: #959595; }

@media (max-width: 820px) { .header-row .cell, .invoice-row .cell { font-size: 15px; } }

@media (max-width: 768px) {
    .invoice-list .header-row { display: none; }
    .invoice-row { display: flex; flex-direction: column; padding: 16px; border: 1px solid #ddd; margin-bottom: 12px; background: var(--color-white); border-radius: 8px; }
    .invoice-row .cell { display: flex; justify-content: space-between; padding: 4px 0; flex: none; width: 100% }
    .invoice-row .cell.actions { justify-content: space-around; }
    .invoice-row .cell:not(.actions)::before { content: attr(data-label); font-weight: bold; color: #666; text-align: left; }
}


.el-checkbox {
	display: flex;
	align-items: center;
	font-size: 16px;
	font-weight: bold;
	cursor: pointer;
}

.el-checkbox__input {
	position: absolute;
	opacity: 0;
	cursor: pointer;
	height: 0;
	width: 0;
}

.el-checkbox__inner {
	position: relative;
	height: 20px;
	width: 20px;
	background-color: #ffffff;
	border: 2px solid var(--color-border-checkbox);
	border-radius: 4px;
	margin-right: 10px;
	transition: all 0.2s;
}

.status--new .el-checkbox__inner {
    border-color: var(--color-status-new);
}
.status--paid .el-checkbox__inner {
    border-color: var(--color-status-paid);
}
.status--unpaid .el-checkbox__inner {
    border-color: var(--color-status-unpaid);
}
.status--future .el-checkbox__inner {
    border-color: var(--color-status-future);
}
.status--overdue .el-checkbox__inner {
    border-color: var(--color-status-overdue);
}

.el-checkbox__input:checked ~ .el-checkbox__inner,
.status--new .el-checkbox__input:checked ~ .el-checkbox__inner {
	background-color: var(--color-status-new);
	border-color:  var(--color-status-new);
}
.status--paid .el-checkbox__input:checked ~ .el-checkbox__inner {
	background-color: var(--color-status-paid);
	border-color:  var(--color-status-paid);
}
.status--overdue .el-checkbox__input:checked ~ .el-checkbox__inner {
	background-color: var(--color-status-overdue);
	border-color:  var(--color-status-overdue);
}
.status--unpaid .el-checkbox__input:checked ~ .el-checkbox__inner {
	background-color: var(--color-status-unpaid);
	border-color:  var(--color-status-unpaid);
}

.status--future .el-checkbox__input:checked ~ .el-checkbox__inner {
	background-color: var(--color-status-future);
	border-color:  var(--color-status-future);
}

.el-checkbox__inner:after {
	content: "";
	position: absolute;
	display: none;
	left: 6px;
	top: 0px;
	width: 6.666666666666667px;
	height: 10px;
	border: solid #ffffff;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

.el-checkbox__input:checked ~ .el-checkbox__inner:after {
	display: block;
}

.status--new .el-checkbox__input:focus ~ .el-checkbox__inner {
  	box-shadow: 0 0 0 2px var(--color-status-new-shadow);
}
.status--paid .el-checkbox__input:focus ~ .el-checkbox__inner {
  	box-shadow: 0 0 0 2px var(--color-status-paid-shadow);
}
.status--unpaid .el-checkbox__input:focus ~ .el-checkbox__inner {
  	box-shadow: 0 0 0 2px var(--color-status-unpaid-shadow);
}
.status--future .el-checkbox__input:focus ~ .el-checkbox__inner {
  	box-shadow: 0 0 0 2px var(--color-status-future-shadow);
}
.status--overdue .el-checkbox__input:focus ~ .el-checkbox__inner {
  	box-shadow: 0 0 0 2px var(--color-status-overdue-shadow);
}


.text--bold {
	font-weight: bold;
}

.text--lg {
	font-size: 1.067rem;
}

.stat-report__wrapper {
	display: flex;
	flex-wrap: wrap;
	/* grid-gap: .8rem; */
	/* gap: .8rem; */
	align-items: center;
	justify-content: space-between;
	flex: 8 1 auto;
	list-style: none;
	margin: 0;
	padding: 0;
}

.stat-report__tile {
	text-align: center;
    padding: 8px;
    border-radius: 8px;
    transition: background 0.2s ease-in-out;
}

.stat-report__tile:hover,
.stat-report__tile.hover {
    background-color: var(--color-bg-body);
}

.stat-report__label {
	padding: 4px 10px;
	border-radius:  8px;
	height: 28px;
    line-height: 26px;
	font-size: 1rem;
	display: flex;
}

.stat-report__tile--total {
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='12' ry='12' stroke='%23CBE0ED' stroke-width='2' stroke-dasharray='6, 10' stroke-linecap='square'/%3E%3C/svg%3E");
	background-position: 50%;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-basis: 327px;
	flex-shrink: 0;
	grid-gap: 24px;
	gap: 24px;
	margin: 1px 12px 1px 1px;
	padding: 6px 16px;
	text-align: left;
}


@media (max-width: 768px) {
  .stat-report__tile {
    width: 100%;
    margin-bottom: 10px;
  }
}


.graph { 
	cursor: pointer;
	fill:none; 
	stroke-linecap: butt; 
	stroke-width: 12; 
	transition: stroke-width 0.2s, stroke-dasharray 0.8s ease-in-out, stroke-dashoffset 0.8s ease-in-out; 
}

.graph.hover { 
	stroke-width: 15; 
}

#segments {
    transform: rotate(-90deg);
    transform-origin: center;
}

.mb-8 {
	margin-bottom: 8px !important;
}
.mb-6 {
	margin-bottom: 6px !important;
}

.mt-8 {
	margin-top: 8px !important;
}

.material-symbols-outlined {
  font-variation-settings:
  'FILL' 0,
  'wght' 400,
  'GRAD' 0,
  'opsz' 24
}

[data-tooltip] {
    position: relative;
    /* display: inline-flex;
    align-items: center;
    justify-content: center; */
    cursor: pointer;
}

[data-tooltip]::before {
    content: attr(data-tooltip);
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translate(-50%, -10px);
    background-color: var(--color-link-hover);
    color: white;
    padding: 6px 10px;
    border-radius: 4px;
    font-size: 13px;
    white-space: nowrap;
    z-index: 100;
    opacity: 0;
    visibility: hidden;
    transition: all 0.2s ease;
    transform: translate(-50%, -8px);
}

[data-tooltip]::after {
    content: "";
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translate(-50%, 0);
    border-width: 6px 6px 0 6px;
    border-style: solid;
    border-color: var(--color-link-hover) transparent transparent transparent;
    z-index: 99;
    opacity: 0;
    visibility: hidden;
    transition: all 0.2s ease;
    transform: translate(-50%, -2px);
}

[data-tooltip]:hover::before {
    opacity: 1;
    visibility: visible;
}

[data-tooltip]:hover::after {
    opacity: 1;
    visibility: visible;
}

.login-card {
    max-width: 500px;
    margin: 100px auto;
}