.ps-calculator {
--ps-bg: #FBF7FE;
--ps-natal: #6b5b95;
--ps-solar: #FFD166;
--ps-text: #2b2440;
--ps-line: #ddd4ea;
font-family: 'Manrope', sans-serif;
max-width: 760px;
margin: 0 auto;
color: var(--ps-text);
}
.ps-form { display: flex; flex-direction: column; gap: 24px; }
.ps-fieldset {
border: 1px solid var(--ps-line);
border-radius: 12px;
padding: 20px;
background: var(--ps-bg);
}
.ps-fieldset legend {
font-family: 'Cormorant Garamond', serif;
font-size: 20px;
padding: 0 8px;
color: var(--ps-natal);
}
.ps-row {
display: flex;
flex-wrap: wrap;
gap: 16px;
margin-top: 12px;
position: relative;
}
.ps-field { display: flex; flex-direction: column; gap: 6px; font-size: 14px; flex: 1; min-width: 100px; }
.ps-field--wide { flex-basis: 100%; }
.ps-field input,
.ps-field select {
padding: 10px 12px;
border: 1px solid var(--ps-line);
border-radius: 8px;
font-size: 15px;
background: #fff;
}
.ps-hint { font-size: 13px; color: #7a7190; margin: 4px 0 0; flex-basis: 100%; }
.ps-geo-suggestions {
position: absolute;
top: 100%;
left: 0;
right: 0;
background: #fff;
border: 1px solid var(--ps-line);
border-radius: 8px;
margin-top: 4px;
max-height: 220px;
overflow-y: auto;
z-index: 20;
box-shadow: 0 8px 24px rgba(43, 36, 64, 0.12);
}
.ps-geo-suggestion { padding: 10px 12px; cursor: pointer; font-size: 14px; }
.ps-geo-suggestion:hover { background: var(--ps-bg); }
.ps-geo-suggestion--empty { color: #999; cursor: default; }
.ps-geo-suggestion--empty:hover { background: none; }
.ps-submit {
align-self: flex-start;
padding: 14px 28px;
background: var(--ps-natal);
color: #fff;
border: none;
border-radius: 999px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: opacity .15s ease;
}
.ps-submit:hover { opacity: 0.9; }
.ps-submit:disabled { opacity: 0.5; cursor: default; }
.ps-loader { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 40px 0; }
.ps-spinner {
width: 36px; height: 36px;
border: 3px solid var(--ps-line);
border-top-color: var(--ps-natal);
border-radius: 50%;
animation: ps-spin 0.8s linear infinite;
}
@keyframes ps-spin { to { transform: rotate(360deg); } }
.ps-loader-text { font-size: 14px; color: #7a7190; }
.ps-error {
padding: 14px 18px;
background: #FDEDEE;
border: 1px solid #f2b8bb;
color: #a4373d;
border-radius: 8px;
font-size: 14px;
}
.ps-result { margin-top: 32px; }
.ps-result-meta { text-align: center; font-size: 15px; margin-bottom: 16px; }
.ps-biwheel-container { display: flex; justify-content: center; }
.ps-biwheel-container svg { width: 100%; max-width: 640px; height: auto; }
.ps-legend { display: flex; justify-content: center; gap: 24px; margin-top: 16px; font-size: 13px; }
.ps-legend-item { position: relative; padding-left: 18px; }
.ps-legend-item::before {
content: '';
position: absolute;
left: 0; top: 50%;
width: 12px; height: 12px;
border-radius: 50%;
transform: translateY(-50%);
}
.ps-legend-natal::before { background: var(--ps-natal); }
.ps-legend-solar::before { background: var(--ps-solar); }
@media (max-width: 600px) {
.ps-fieldset { padding: 14px; }
.ps-row { gap: 10px; }
}