:root {
--kal-single-pad-top: 8rem;
--kal-single-border : rgba(0,0,0,.1);
--kal-single-muted  : #666;
}
@media (prefers-color-scheme: dark) {
:root {
--kal-single-border: rgba(255,255,255,.12);
--kal-single-muted : #aaa;
}
}
body.dark-bg .kal-single-wrap {
--kal-single-border: rgba(255,255,255,.12);
--kal-single-muted : #aaa;
}
.kal-single-wrap {
max-width : 1100px;
margin    : 0 auto;
padding   : var(--kal-single-pad-top) 16px 24px;
color     : inherit;
} .kal-single-header { display: flex; gap: 24px; align-items: flex-start; margin-bottom: 28px; }
.kal-single-thumb { width: 260px; flex-shrink: 0; border-radius: 8px; overflow: hidden; }
.kal-single-thumb img { width: 100%; height: 200px; object-fit: cover; display: block; }
.kal-single-title-wrap { flex: 1; }
.kal-single-breadcrumb { font-size: 13px; color: var(--kal-single-muted); margin-bottom: 8px; }
.kal-single-breadcrumb a { color: var(--kal-single-muted); text-decoration: none; }
.kal-single-breadcrumb a:hover { color: inherit; }
.kal-single-breadcrumb span { margin: 0 4px; }
.kal-single-title { font-size: 2em; font-weight: 700; margin: 0 0 10px; line-height: 1.2; }
.kal-single-rating { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.kal-rating-avg { font-size: 18px; font-weight: 700; }
.kal-rating-count { font-size: 13px; color: var(--kal-single-muted); }
.kal-single-type { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 8px; }
.kal-type-badge { background: var(--kal-accent); color: #000; padding: 3px 10px; border-radius: 20px; font-size: 13px; font-weight: 600; } .kal-single-body { display: grid; grid-template-columns: 1fr 300px; gap: 32px; align-items: start; }
.kal-single-description { margin-bottom: 20px; line-height: 1.7; } .kal-single-main {
background   : rgba(128,128,128,.07);
border-radius: 10px;
padding      : 20px 24px;
}
@media (prefers-color-scheme: dark) {
.kal-single-main { background: rgba(255,255,255,.06); }
}
body.dark-bg .kal-single-main { background: rgba(255,255,255,.06); } .kal-single-field { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--kal-single-border); font-size: 14px; }
.kal-single-field:last-of-type { border-bottom: none; }
.kal-field-label { font-weight: 600; min-width: 160px; color: var(--kal-single-muted); flex-shrink: 0; }
.kal-field-value { flex: 1; color: inherit; }
.kal-field-value a { color: inherit; text-decoration: none; }
.kal-field-value a:hover { text-decoration: underline; }
.kal-yes { color: #15803d; font-weight: 600; }
.kal-no  { color: var(--kal-single-muted); }
.kal-oh-display { border-collapse: collapse; font-size: 13px; }
.kal-oh-display td { padding: 2px 8px 2px 0; }
.kal-oh-day { font-weight: 600; min-width: 36px; } .kal-single-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--kal-single-border); }
.kal-tag { background: rgba(0,0,0,.04); border: 1px solid var(--kal-single-border); color: var(--kal-single-muted); padding: 3px 10px; border-radius: 20px; font-size: 12px; } .kal-single-sidebar { position: sticky; top: 80px; }
.kal-sidebar-box { background: rgba(128,128,128,.09); border: 1px solid var(--kal-single-border); border-radius: 8px; padding: 16px 18px; margin-bottom: 16px; }
@media (prefers-color-scheme: dark) {
.kal-sidebar-box { background: rgba(255,255,255,.07); }
}
body.dark-bg .kal-sidebar-box { background: rgba(255,255,255,.07); }
.kal-sidebar-title { font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--kal-single-muted); margin: 0 0 12px; }
.kal-contact-row { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 8px; font-size: 14px; }
.kal-contact-icon { flex-shrink: 0; width: 20px; text-align: center; }
.kal-contact-row a { color: inherit; text-decoration: none; word-break: break-all; }
.kal-map-link { display: block; margin-top: 8px; font-size: 13px; color: inherit; text-decoration: none; }
.kal-map-link:hover { text-decoration: underline; } .kal-single-reviews { margin-top: 32px; padding-top: 32px; border-top: 2px solid var(--kal-single-border); }
.kal-reviews-header { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }
.kal-reviews-title { font-size: 1.3em; font-weight: 700; margin: 0; }
.kal-reviews-count { font-size: 14px; color: var(--kal-single-muted); font-weight: normal; }
.kal-rating-summary { display: flex; align-items: center; gap: 6px; }
.kal-stars-display { display: inline-flex; gap: 1px; }
.kal-star { font-size: 18px; }
.kal-star-full  { color: #f59e0b; }
.kal-star-half  { color: #f59e0b; opacity: .6; }
.kal-star-empty { color: #ddd; } .kal-add-review { background: #f9fafb; border: 1px solid var(--kal-single-border); border-radius: 8px; padding: 20px; margin-bottom: 24px; }
.kal-review-login, .kal-review-already { color: var(--kal-single-muted); font-size: 14px; }
.kal-review-login a { color: inherit; }
.kal-review-form-wrap h4 { margin: 0 0 14px; font-size: 15px; }
.kal-review-field { margin-bottom: 14px; }
.kal-review-field label { display: block; font-weight: 600; font-size: 13px; margin-bottom: 5px; color: var(--kal-single-muted); }
.kal-review-field input[type="text"],
.kal-review-field textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--kal-single-border); border-radius: 4px; font-size: 14px; box-sizing: border-box; }
.kal-review-field textarea { resize: vertical; }
.kal-char-count { display: block; font-size: 12px; color: var(--kal-single-muted); text-align: right; margin-top: 2px; }
.kal-review-rating-pick { margin-bottom: 16px; }
.kal-review-rating-pick label { display: block; font-weight: 600; font-size: 13px; margin-bottom: 6px; color: var(--kal-single-muted); }
.kal-star-picker { display: inline-flex; gap: 4px; margin-right: 10px; }
.kal-star-pick { font-size: 28px; background: none; border: none; cursor: pointer; color: #ddd; padding: 0; line-height: 1; transition: color .1s; }
.kal-star-pick.active, .kal-star-pick:hover { color: #f59e0b; }
.kal-rating-text { font-size: 13px; color: var(--kal-single-muted); }
.kal-review-moderation-note { font-size: 12px; color: var(--kal-single-muted); margin: 8px 0 0; }
.kal-review-notices .kal-notice { padding: 10px 14px; border-radius: 4px; margin-bottom: 10px; font-size: 14px; }
.kal-notice-success { background: #d4edda; color: #155724; }
.kal-notice-error   { background: #f8d7da; color: #721c24; } .kal-review-item { padding: 16px 0; border-bottom: 1px solid var(--kal-single-border); }
.kal-review-item:last-child { border-bottom: none; }
.kal-review-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; flex-wrap: wrap; }
.kal-review-author { font-weight: 600; font-size: 14px; }
.kal-review-date { font-size: 12px; color: var(--kal-single-muted); margin-left: auto; }
.kal-review-title { font-size: 15px; font-weight: 600; margin: 0 0 6px; }
.kal-review-content { font-size: 14px; color: var(--kal-single-muted); line-height: 1.6; }
.kal-no-reviews { color: var(--kal-single-muted); font-style: italic; } @media (max-width: 768px) {
.kal-single-body { grid-template-columns: 1fr; }
.kal-single-header { flex-direction: column; }
.kal-single-thumb { width: 100%; }
.kal-single-sidebar { position: static; }
.kal-field-label { min-width: 120px; }
} .kal-map-links { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.kal-gmaps-btn {
display        : flex;
align-items    : center;
justify-content: center;
gap            : 8px;
padding        : 10px 16px;
background     : #1a73e8;
color          : #fff !important;
border-radius  : 8px;
font-size      : 14px;
font-weight    : 700;
text-decoration: none;
transition     : background .15s;
text-align     : center;
}
.kal-gmaps-btn:hover { background: #1557b0; text-decoration: none; } .kal-cal-links { display: flex; flex-direction: column; gap: 8px; }
.kal-cal-btn {
display      : flex;
align-items  : center;
gap          : 8px;
padding      : 9px 14px;
border       : 1px solid var(--kal-single-border);
border-radius: 6px;
font-size    : 13px;
font-weight  : 600;
color        : inherit;
text-decoration: none;
transition   : background .15s;
}
.kal-cal-btn:hover { background: rgba(128,128,128,.12); text-decoration: none; }