/* Nutzt bewusst die vorhandenen Design-Variablen/Klassen des FGR-Themes
   (--primaryColor, --darkColor, cta-primary, cta-tabs, globale
   input/textarea-Stile aus style.css) statt eigener Werte, damit sich
   das Portal wie der Rest der Seite anfühlt. */

/* Die Tickets-Seite steckt das Portal in die normale ACF-Textspalte
   (col-12 col-lg-9 col-xl-6) - gedacht für Fließtext, nicht für eine
   App-Oberfläche. Dadurch klebt der Inhalt links in einer halbbreiten
   Spalte mit viel Leerraum rechts. Auf dieser Seite gezielt auf volle
   Container-Breite ziehen (Seiten-ID 462, siehe fgr_ts_portal_page_id). */
body.page-id-462 .col-lg-9.col-xl-6 {
    flex: 0 0 100% !important;
    max-width: 100% !important;
}

/* Die Tickets-Seite bekommt absichtlich kein #content-wrapper (historisch
   für SupportCandy so angelegt), daher greift die Theme-eigene Regel
   ".lightBG #content-wrapper a { color: var(--darkColor) }" hier nicht -
   Links/strong sind sonst (wie im Rest der Seite) weiß und unsichtbar auf
   hellem Grund. Deshalb hier explizit mit !important nachgezogen. */
#fgr_ts_portal {
    font: normal 400 var(--normalFS, 1rem) aktiv-grotesk, sans-serif;
    color: var(--darkColor);
    padding: 20px;
}

/* Die globale Theme-Regel "p { margin: 30px 0 !important }" legt sonst
   nochmal oben drauf - erstes Element soll bündig mit den 20px Padding
   abschließen, nicht zusätzlichen Abstand mitbringen. */
#fgr_ts_portal > *:first-child {
    margin-top: 0 !important;
}

#fgr_ts_portal .fgr-ts-form,
#fgr_ts_portal .fgr-ts-thread {
    max-width: 700px;
    margin-left: auto;
    margin-right: auto;
}

#fgr_ts_portal .fgr-ts-register-form {
    max-width: 480px;
    margin: 0 auto;
}

#fgr_ts_portal textarea::placeholder,
#fgr_ts_portal input::placeholder {
    color: #999 !important;
    opacity: 1;
}

/* Theme setzt global "textarea { resize: none !important }" (style.css) -
   im Ticketsystem soll man das Textfeld aber wie gewohnt größer ziehen
   können, gerade beim Beschreiben eines Problems. */
#fgr_ts_portal textarea {
    resize: vertical !important;
}

#fgr_ts_portal input[type="password"] {
    padding: 7.5px 7.5px 7.5px 0 !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    width: calc(100% - 15px) !important;
    margin: 0 15px 20px 0 !important;
    display: inline-block;
    outline: none;
    border: 0 solid transparent !important;
    border-bottom: 3px solid var(--darkColor) !important;
    color: var(--darkColor) !important;
    background-color: transparent !important;
    font: normal 400 var(--paragraphs, 1.25rem) aktiv-grotesk, sans-serif !important;
    font-style: italic !important;
    border-radius: 0 !important;
    transition: var(--colortransition);
}

#fgr_ts_portal a:not(.cta-primary):not(.cta-tabs),
#fgr_ts_portal strong,
#fgr_ts_portal p,
#fgr_ts_portal h2,
#fgr_ts_portal h3,
#fgr_ts_portal label {
    color: var(--darkColor) !important;
}

#fgr_ts_portal .fgr-ts-message--own strong,
#fgr_ts_portal .fgr-ts-message--own p,
#fgr_ts_portal .fgr-ts-message--own a:not(.cta-primary):not(.cta-tabs) {
    color: var(--darkColor) !important;
}

#fgr_ts_portal h2 {
    font: normal 800 var(--tertiaryHead, 2rem) aktiv-grotesk, sans-serif;
    margin: 0 0 20px;
}

.fgr-ts-list-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 15px;
    margin-bottom: 20px;
}

.fgr-ts-list-head .cta-primary {
    margin-top: 0;
}

.fgr-ts-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 30px;
}

.fgr-ts-tabs .cta-tabs {
    text-decoration: none;
    font-weight: 600 !important;
    font-size: calc(var(--ctaPrimaryFS, 1.125rem) - 2px) !important;
}

/* Gleicher animierter Hover wie der "Neues Ticket erstellen"-Button
   (.cta-primary): Rahmen füllt sich beim Hover links/unten auf. */
.fgr-ts-tabs .cta-tabs:before {
    content: "";
    display: block;
    height: 0;
    width: 3px;
    background: var(--primaryColor);
    transition: height 0.125s linear;
    position: absolute;
    left: 0;
    top: 0;
}

.fgr-ts-tabs .cta-tabs:after {
    content: "";
    display: block;
    height: 3px;
    width: 0;
    background: var(--primaryColor);
    transition: width 0.125s linear;
    position: absolute;
    right: -3px;
    bottom: 0;
}

.fgr-ts-tabs .cta-tabs:hover:before {
    height: 100%;
}

.fgr-ts-tabs .cta-tabs:hover:after {
    width: 100%;
}

.fgr-ts-tabs .cta-tabs:hover {
    border-color: transparent !important;
    color: var(--primaryColor) !important;
    transition: border-color 0.25s linear !important;
}

.fgr-ts-ticket-list {
    display: flex;
    flex-direction: column;
}

.fgr-ts-ticket-row {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 15px 0;
    border-bottom: 1px solid var(--middleColor);
    text-decoration: none;
    color: var(--darkColor);
}

.fgr-ts-ticket-row:hover {
    background-color: var(--middleColor);
}

.fgr-ts-ticket-subject {
    flex: 1;
    font-weight: 500;
}

.fgr-ts-ticket-date {
    font-size: var(--smallFS, 0.75rem);
    color: var(--darkColor);
    opacity: 0.6;
    white-space: nowrap;
}

.fgr-ts-badge {
    display: inline-block;
    padding: 3px 12px;
    font-size: var(--smallFS, 0.75rem);
    font-weight: 800;
    white-space: nowrap;
}

/* Badge, Zurück-Link, Titel, Status-Buttons, Konversation und Formular
   bilden zusammen EINE Spalte: untereinander linksbündig, die Spalte
   selbst aber mittig auf der Seite (nicht links drangeklatscht). */
.fgr-ts-status-actions,
.fgr-ts-closed-note {
    max-width: 700px;
    margin-left: auto !important;
    margin-right: auto !important;
}

.fgr-ts-back-link {
    margin-top: 0 !important;
    margin-bottom: 25px !important;
}

#fgr_ts_portal > .fgr-ts-badge {
    display: block;
    width: fit-content;
    margin-bottom: 15px;
}

.fgr-ts-status-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 20px;
    margin-bottom: 25px;
}

/* <button class="cta-tabs">: gleiches "replaced element"-Problem wie bei
   .fgr-ts-submit - Browser-Standardrahmen muss explizit zurückgesetzt
   werden, sonst zeigt sich ein voller Rahmen statt nur oben/rechts. */
#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs {
    appearance: none !important;
    -webkit-appearance: none !important;
    background: transparent !important;
    font-family: inherit;
    cursor: pointer;
    position: relative;
    border-style: solid !important;
    border-width: 3px !important;
    border-bottom-color: transparent !important;
    border-left-color: transparent !important;
}

/* Gleicher animierter Hover wie bei .fgr-ts-tabs .cta-tabs / .fgr-ts-submit:
   fehlte hier bisher komplett - die Buttons hatten gar keinen Hovereffekt. */
#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:before {
    content: "";
    display: block;
    height: 0;
    width: 3px;
    background: var(--primaryColor);
    transition: height 0.125s linear;
    position: absolute;
    left: 0;
    top: 0;
}

#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:after {
    content: "";
    display: block;
    height: 3px;
    width: 0;
    background: var(--primaryColor);
    transition: width 0.125s linear;
    position: absolute;
    right: -3px;
    bottom: 0;
}

#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:hover:before {
    height: 100%;
}

#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:hover:after {
    width: 100%;
}

#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:hover {
    border-color: transparent !important;
    color: var(--primaryColor) !important;
    transition: border-color 0.25s linear !important;
}

/* Button für den aktuell aktiven Status ergibt keinen Sinn zum Klicken
   (Ticket ist ja schon "offen"/"geschlossen"/...) - ausgegraut und per
   :disabled nicht mehr klickbar, auch kein Hover-Effekt mehr. */
#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:disabled {
    cursor: not-allowed;
    opacity: 0.4;
    border-top-color: var(--darkColor) !important;
    border-right-color: var(--darkColor) !important;
    color: var(--darkColor) !important;
}

#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:disabled:hover:before,
#fgr_ts_portal .fgr-ts-status-actions button.cta-tabs:disabled:hover:after {
    height: 0;
    width: 0;
}

.fgr-ts-detail-head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    max-width: 700px;
    margin: 0 0 25px;
}

.fgr-ts-detail-head h2 {
    margin: 0;
    font-size: 1.5rem !important;
}

.fgr-ts-thread {
    display: flex;
    flex-direction: column;
    gap: 50px;
    margin-top: 80px;
    margin-bottom: 30px;
}

.fgr-ts-message {
    max-width: 80%;
    padding: 15px 20px;
    background: var(--middleColor);
}

.fgr-ts-message--own {
    align-self: flex-end;
    background: #f7f7f7;
    color: var(--darkColor);
}

.fgr-ts-message-meta {
    display: flex;
    gap: 10px;
    font-size: var(--smallFS, 0.75rem);
    font-weight: 800;
    margin-bottom: 8px;
    opacity: 0.8;
}

.fgr-ts-message-body p:first-child { margin-top: 0; }
.fgr-ts-message-body p:last-child { margin-bottom: 0; }

.fgr-ts-message-body p {
    font-size: 0.95rem !important;
    line-height: 1.5 !important;
    margin: 0 0 12px !important;
}

.fgr-ts-message-body,
.fgr-ts-message-body p,
.fgr-ts-message-body a {
    overflow-wrap: break-word;
    word-break: break-word;
}

.fgr-ts-attachments {
    margin: 10px 0 0;
    padding-left: 18px;
    font-size: var(--smallFS, 0.75rem);
}

.fgr-ts-message--own .fgr-ts-attachments a {
    color: var(--darkColor) !important;
}

.fgr-ts-form {
    display: flex;
    flex-direction: column;
}

.fgr-ts-form label {
    font-weight: 800;
    font-size: var(--smallFS, 0.75rem);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.fgr-ts-form select {
    border: 0;
    border-bottom: 3px solid var(--darkColor);
    background: transparent;
    padding: 10px 10px 10px 0;
    margin: 0 15px 20px 0;
    font: normal 400 var(--paragraphs, 1.25rem) aktiv-grotesk, sans-serif;
    width: calc(100% - 15px);
}

.fgr-ts-form input[type="file"] {
    margin-bottom: 20px;
}


.fgr-ts-gdpr label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-weight: 400;
    text-transform: none;
    font-size: var(--smallFS, 0.75rem);
    line-height: 1.5;
}

/* Eigene Checkbox statt nativer Darstellung: der native "checked"-Zustand
   (Browser-Standard-Haken) war kaum von unchecked zu unterscheiden, da
   Füllfarbe und Rahmenfarbe identisch sind - jetzt ein deutlich sichtbarer
   weißer Haken auf dunklem Grund. */
.fgr-ts-gdpr input[type="checkbox"] {
    flex: 0 0 auto !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    width: 18px !important;
    height: 18px !important;
    margin: 2px 0 0 !important;
    padding: 0 !important;
    border: 3px solid var(--darkColor) !important;
    border-radius: 0 !important;
    background-color: transparent !important;
    position: relative !important;
    cursor: pointer;
    transition: var(--colortransition);
}

.fgr-ts-gdpr input[type="checkbox"]:checked {
    background-color: var(--darkColor) !important;
}

.fgr-ts-gdpr input[type="checkbox"]:checked::after {
    content: "" !important;
    display: block !important;
    position: absolute !important;
    left: 4px;
    top: 0px;
    width: 4px;
    height: 9px;
    border: solid var(--lightColor, #fff);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

/* <button> statt <input type="submit">: ::before/::after (für den
   animierten Hover wie bei .cta-primary/.cta-tabs) werden auf <input>
   von Browsern nicht gerendert, da es ein "replaced element" ist. */
.fgr-ts-submit {
    align-self: flex-start;
    appearance: none !important;
    -webkit-appearance: none !important;
    box-shadow: none !important;
    outline: none !important;
    border-style: solid !important;
    border-width: 3px !important;
    border-top-color: var(--darkColor) !important;
    border-right-color: var(--darkColor) !important;
    border-bottom-color: transparent !important;
    border-left-color: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    color: var(--darkColor) !important;
    width: auto !important;
    font: 800 normal var(--ctaPrimaryFS, 1.125rem) aktiv-grotesk, sans-serif !important;
    padding: var(--buttonPadding, 15px 35px) !important;
    margin-top: 10px !important;
    border-radius: 0;
    position: relative;
    cursor: pointer;
    transition: border-color 0.125s linear;
}

.fgr-ts-submit:before {
    content: "";
    display: block;
    height: 0;
    width: 3px;
    background: var(--primaryColor);
    transition: height 0.125s linear;
    position: absolute;
    left: 0;
    top: 0;
}

.fgr-ts-submit:after {
    content: "";
    display: block;
    height: 3px;
    width: 0;
    background: var(--primaryColor);
    transition: width 0.125s linear;
    position: absolute;
    right: -3px;
    bottom: 0;
}

.fgr-ts-submit:hover:before {
    height: 100%;
}

.fgr-ts-submit:hover:after {
    width: 100%;
}

.fgr-ts-submit:hover {
    border-color: transparent !important;
    color: var(--primaryColor) !important;
    transition: border-color 0.25s linear !important;
}

.fgr-ts-submit:active {
    background: var(--primaryColor) !important;
    color: var(--lightColor) !important;
}

.fgr-ts-error {
    color: #c0392b;
    font-weight: 700;
}

.fgr-ts-login-prompt {
    text-align: center;
}

.fgr-ts-login-message {
    font-size: 1.5rem !important;
    font-weight: 700 !important;
}

.fgr-ts-login-prompt .cta-primary {
    margin: var(--outerMargin) auto 0;
}

.fgr-ts-register-hint {
    margin-top: 20px !important;
    font-size: 14px !important;
}

.fgr-ts-register-hint a {
    font-weight: 700 !important;
    text-decoration: underline !important;
}
