/**
 * Medical Monitor - Shared Frontend Styles
 * Unified design system for all frontend shortcode templates
 */

/* ============================================
   Design Tokens
   ============================================ */
:root {
    --mm-primary: #2271b1;
    --mm-primary-hover: #135e96;
    --mm-danger: #dc3545;
    --mm-danger-hover: #c82333;
    --mm-warning: #f57c00;
    --mm-warning-hover: #e65100;
    --mm-success-bg: #d4edda;
    --mm-success-text: #155724;
    --mm-success-border: #c3e6cb;
    --mm-error-bg: #f8d7da;
    --mm-error-text: #721c24;
    --mm-error-border: #f5c6cb;
    --mm-info-bg: #d1ecf1;
    --mm-info-text: #0c5460;
    --mm-info-border: #17a2b8;
    --mm-warning-bg: #fff3cd;
    --mm-warning-text: #856404;
    --mm-warning-border: #ffc107;

    --mm-border: #ddd;
    --mm-text: #333;
    --mm-text-muted: #666;
    --mm-radius-sm: 4px;
    --mm-radius-md: 6px;
    --mm-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

/* ============================================
   Buttons
   ============================================ */
.mm-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    padding: 10px 20px !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-align: center !important;
    text-decoration: none !important;
    border: 2px solid transparent !important;
    border-radius: var(--mm-radius-sm) !important;
    cursor: pointer;
    transition: background 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
    line-height: 1.4 !important;
    background: #f0f0f0 !important;
    color: var(--mm-text) !important;
    box-sizing: border-box !important;
    margin: 0 !important;
}

.mm-btn:hover {
    background: #e0e0e0 !important;
    text-decoration: none !important;
    color: var(--mm-text) !important;
}

.mm-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.mm-btn .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
    vertical-align: middle;
}

/* Primary */
.mm-btn-primary {
    background: var(--mm-primary) !important;
    border-color: var(--mm-primary) !important;
    color: #fff !important;
}

.mm-btn-primary:hover {
    background: var(--mm-primary-hover) !important;
    border-color: var(--mm-primary-hover) !important;
    color: #fff !important;
}

.mm-btn-primary:disabled {
    background: #ccc !important;
    border-color: #ccc !important;
    color: #fff !important;
}

/* Secondary (outlined) */
.mm-btn-secondary {
    background: transparent !important;
    border-color: var(--mm-primary) !important;
    color: var(--mm-primary) !important;
}

.mm-btn-secondary:hover {
    background: #f0f6fc !important;
    border-color: var(--mm-primary-hover) !important;
    color: var(--mm-primary-hover) !important;
}

/* Danger */
.mm-btn-danger {
    background: var(--mm-danger) !important;
    border-color: var(--mm-danger) !important;
    color: #fff !important;
}

.mm-btn-danger:hover {
    background: var(--mm-danger-hover) !important;
    border-color: var(--mm-danger-hover) !important;
    color: #fff !important;
}

/* Warning */
.mm-btn-warning {
    background: var(--mm-warning) !important;
    border-color: var(--mm-warning) !important;
    color: #fff !important;
}

.mm-btn-warning:hover {
    background: var(--mm-warning-hover) !important;
    border-color: var(--mm-warning-hover) !important;
    color: #fff !important;
}

/* Outline (neutral outlined) */
.mm-btn-outline {
    background: transparent !important;
    border-color: var(--mm-border) !important;
    color: var(--mm-text-muted) !important;
}

.mm-btn-outline:hover {
    background: #f5f5f5 !important;
    border-color: #999 !important;
    color: var(--mm-text) !important;
}

/* Loading state */
.mm-btn-loading {
    opacity: 0.7;
    cursor: wait;
}

/* Size modifiers */
.mm-btn-small {
    padding: 6px 14px !important;
    font-size: 13px !important;
}

.mm-btn-large {
    padding: 14px 28px !important;
    font-size: 16px !important;
}

/* ============================================
   Article licence tooltip
   ============================================ */
.feed-btn .mm-license-tooltip {
    position: relative;
}

.feed-btn .mm-license-tooltip::after {
    content: attr(data-tooltip);
    position: absolute;
    z-index: 10;
    top: calc(100% + 10px);
    left: 0;
    width: max-content;
    max-width: min(340px, calc(100vw - 32px));
    padding: 10px 12px;
    border-radius: var(--mm-radius-sm);
    background: #1f2937;
    color: #fff;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.4;
    text-align: left;
    white-space: normal;
    box-shadow: var(--mm-shadow);
    opacity: 0;
    pointer-events: none;
    transform: translateY(-4px);
    transition: opacity 0.15s ease, transform 0.15s ease;
    visibility: hidden;
}

.feed-btn .mm-license-tooltip::before {
    content: '';
    position: absolute;
    z-index: 10;
    top: calc(100% + 4px);
    left: 16px;
    border: 6px solid transparent;
    border-bottom-color: #1f2937;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-4px);
    transition: opacity 0.15s ease, transform 0.15s ease;
    visibility: hidden;
}

.feed-btn .mm-license-tooltip:hover::after,
.feed-btn .mm-license-tooltip:hover::before,
.feed-btn .mm-license-tooltip:focus-visible::after,
.feed-btn .mm-license-tooltip:focus-visible::before {
    opacity: 1;
    transform: translateY(0);
    visibility: visible;
}

.feed-btn .mm-license-button {
    display: inline-block;
    margin-right: 10px;
    padding: 1px 10px;
    border: solid 1px #0051a1;
    color: #0051a1;
    font-size: 14px;
    font-weight: normal;
    line-height: 32px;
    cursor: default;
}

.feed-btn .mm-license-button span {
    margin: 0 10px;
}

@media (max-width: 767px) {
    .feed-btn .mm-license-button {
        display: block;
        width: 100%;
        margin: 7px auto;
        text-align: left;
    }
}

/* ============================================
   Form Controls
   ============================================ */
.mm-form-control {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--mm-border);
    border-radius: var(--mm-radius-sm);
    font-size: 14px;
    font-family: inherit;
    transition: border-color 0.3s, box-shadow 0.3s;
    box-sizing: border-box;
}

.mm-form-control:focus {
    outline: none;
    border-color: var(--mm-primary);
    box-shadow: 0 0 0 3px rgba(34, 113, 177, 0.1);
}

/* Form group (wrapper with label) */
.mm-form-group {
    margin-bottom: 20px;
}

.mm-form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: 600;
    color: var(--mm-text);
}

.mm-form-group label .required {
    color: var(--mm-danger);
}

/* Form field (section-style wrapper) */
.mm-form-field {
    margin-bottom: 20px;
}

.mm-form-field label {
    display: block;
    margin-bottom: 5px;
    font-weight: 600;
}

.mm-form-field.required label::after {
    content: ' *';
    color: var(--mm-danger);
}

.mm-form-field input[type="text"],
.mm-form-field input[type="email"],
.mm-form-field input[type="date"],
.mm-form-field textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--mm-border);
    border-radius: var(--mm-radius-sm);
    font-size: 14px;
    font-family: inherit;
    box-sizing: border-box;
    transition: border-color 0.3s, box-shadow 0.3s;
}

.mm-form-field input[type="text"]:focus,
.mm-form-field input[type="email"]:focus,
.mm-form-field input[type="date"]:focus,
.mm-form-field textarea:focus {
    outline: none;
    border-color: var(--mm-primary);
    box-shadow: 0 0 0 3px rgba(34, 113, 177, 0.1);
}

.mm-form-field textarea {
    resize: vertical;
}

.mm-form-field .description {
    font-size: 13px;
    color: var(--mm-text-muted);
    margin-top: 5px;
}

/* ============================================
   Messages / Alerts
   ============================================ */
.mm-message,
.mm-form-message {
    padding: 15px;
    border-radius: var(--mm-radius-sm);
}

.mm-message.success,
.mm-form-message.success {
    background: var(--mm-success-bg);
    color: var(--mm-success-text);
    border: 1px solid var(--mm-success-border);
    display: block;
}

.mm-message.error,
.mm-form-message.error {
    background: var(--mm-error-bg);
    color: var(--mm-error-text);
    border: 1px solid var(--mm-error-border);
    display: block;
}

.mm-form-message {
    display: none;
    margin-top: 20px;
}

/* ============================================
   Notices
   ============================================ */
.mm-notice {
    padding: 15px;
    margin-bottom: 20px;
    border-radius: var(--mm-radius-sm);
}

.mm-notice p {
    margin: 5px 0;
}

.mm-notice p:first-child {
    margin-top: 0;
}

.mm-notice p:last-child {
    margin-bottom: 0;
}

.mm-notice-warning {
    background: var(--mm-warning-bg);
    border-left: 4px solid var(--mm-warning-border);
    color: var(--mm-warning-text);
}

.mm-notice-info {
    background: var(--mm-info-bg);
    border-left: 4px solid var(--mm-info-border);
    color: var(--mm-info-text);
}

.mm-notice-error {
    background: var(--mm-error-bg);
    border-left: 4px solid var(--mm-danger);
    color: var(--mm-error-text);
}

/* ============================================
   Cards
   ============================================ */
.mm-card {
    background: #fff;
    padding: 25px;
    border-radius: var(--mm-radius-md);
    box-shadow: var(--mm-shadow);
}

/* ============================================
   Spinner
   ============================================ */
.mm-spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 3px solid #f3f3f3;
    border-top: 3px solid var(--mm-primary);
    border-radius: 50%;
    animation: mm-spin 1s linear infinite;
    vertical-align: middle;
}

.mm-spin {
    animation: mm-spin 1s linear infinite;
}

@keyframes mm-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* ============================================
   Submit Article Form
   ============================================ */
.mm-submit-article-wrapper {
    max-width: 900px;
    margin: 0 auto;
    padding: 20px;
}

/* Revision banner */
.mm-revision-banner {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%);
    border-left: 4px solid #5c6bc0;
    padding: 20px;
    margin-bottom: 25px;
    border-radius: var(--mm-radius-sm);
}

.mm-revision-banner > .dashicons {
    color: #5c6bc0;
    font-size: 24px;
    width: 24px;
    height: 24px;
    flex-shrink: 0;
    margin-top: 2px;
}

.mm-revision-banner-content {
    flex: 1;
}

.mm-revision-banner-content strong {
    display: block;
    font-size: 16px;
    color: #3949ab;
    margin-bottom: 5px;
}

.mm-revision-banner-content p {
    margin: 5px 0;
    color: #3f51b5;
}

.mm-revision-banner-content a {
    color: #1a237e;
    font-weight: 600;
}

.mm-revision-note {
    font-size: 13px;
    font-style: italic;
    opacity: 0.85;
}

/* Form sections */
.mm-form-section {
    margin-bottom: 40px;
    padding: 20px;
    background: #f9f9f9;
    border-radius: var(--mm-radius-md);
}

.mm-form-section h3 {
    margin-top: 0;
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--mm-border);
}

/* Coauthors list */
.mm-coauthors-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px;
}

.mm-coauthor-item {
    padding: 8px;
    background: white;
    border: 1px solid var(--mm-border);
    border-radius: var(--mm-radius-sm);
    cursor: pointer;
}

.mm-coauthor-item:hover {
    background: #f0f0f0;
}

.mm-coauthor-item input[type="checkbox"] {
    margin-right: 8px;
}

/* File upload / gallery preview */
.mm-file-preview,
.mm-gallery-preview {
    margin-top: 10px;
    padding: 10px;
    background: white;
    border: 1px solid var(--mm-border);
    border-radius: var(--mm-radius-sm);
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.mm-file-item {
    display: flex;
    align-items: center;
    gap: 10px;
    position: relative;
    padding: 10px 12px;
    background: #f0f0f0;
    border-radius: var(--mm-radius-sm);
}

.mm-file-item a {
    color: var(--mm-primary);
    text-decoration: none;
    word-break: break-all;
}

.mm-file-item a:hover {
    text-decoration: underline;
}

.mm-file-item .mm-remove-file {
    position: static;
    flex-shrink: 0;
    margin-left: auto;
}

.mm-gallery-item {
    display: flex;
    flex-direction: column;
    position: relative;
    padding: 0;
    background: #f0f0f0;
    border-radius: var(--mm-radius-sm);
    overflow: hidden;
    width: 140px;
}

.mm-gallery-item-image {
    position: relative;
    padding: 10px;
}

.mm-remove-file {
    position: absolute;
    top: 5px;
    right: 5px;
    width: 22px;
    height: 22px;
    background: var(--mm-danger);
    color: white;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    font-size: 14px;
    line-height: 22px;
    text-align: center;
    padding: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
}

.mm-remove-file:hover {
    background: var(--mm-danger-hover, #c0392b);
}

.mm-gallery-item img {
    max-width: 120px;
    height: auto;
    display: block;
}

.mm-gallery-item-description {
    padding: 5px;
    background: #fff;
    border-top: 1px solid var(--mm-border);
}

.mm-gallery-item-description input {
    width: 100%;
    padding: 5px;
    font-size: 12px;
    border: 1px solid var(--mm-border);
    border-radius: var(--mm-radius-sm);
    box-sizing: border-box;
}

.mm-gallery-item-description input:focus {
    border-color: var(--mm-primary);
    outline: none;
}

/* Gallery drag-and-drop reordering */
.mm-gallery-item {
    cursor: grab;
}

.mm-gallery-item:active {
    cursor: grabbing;
}

.mm-gallery-item-ghost {
    opacity: 0.4;
}

.mm-gallery-item-drag {
    opacity: 0.9;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    transform: rotate(2deg);
}

.mm-gallery-item-chosen {
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

/* File description wrapper */
.mm-file-description-wrapper {
    margin-top: 10px;
}

.mm-file-description-wrapper label {
    display: block;
    font-weight: 500;
    margin-bottom: 5px;
    font-size: 13px;
    color: var(--mm-text-muted);
}

.mm-file-description-wrapper textarea {
    width: 100%;
    padding: 8px;
    font-size: 14px;
    border: 1px solid var(--mm-border);
    border-radius: var(--mm-radius-sm);
    resize: vertical;
    min-height: 60px;
    box-sizing: border-box;
}

.mm-file-description-wrapper textarea:focus {
    border-color: var(--mm-primary);
    outline: none;
}

/* Form disclaimer */
.mm-form-disclaimer {
    margin-top: 30px;
    padding: 12px 16px;
    background: var(--mm-warning-bg);
    border: 1px solid var(--mm-warning-border);
    border-radius: var(--mm-radius-sm);
    font-size: 14px;
    color: var(--mm-warning-text);
    line-height: 1.5;
}

.mm-form-disclaimer p {
    margin: 0;
}

/* Form actions */
.mm-form-actions {
    margin-top: 16px;
    padding-top: 20px;
    border-top: 2px solid var(--mm-border);
    display: flex;
    gap: 10px;
    align-items: center;
}

/* Fix TinyMCE toolbar button height in frontend forms */
.mm-submit-article-wrapper .mce-toolbar .mce-btn button {
    padding: 4px 6px;
    line-height: 1;
    height: 30px;
}

.mm-submit-article-wrapper .mce-toolbar .mce-btn {
    margin: 2px;
}

/* Hide editor tab switcher as fallback */
.mm-submit-article-wrapper .wp-editor-tabs {
    display: none;
}

/* Auto-save status indicator */
.mm-auto-save-status {
    font-size: 13px;
    color: var(--mm-text-muted);
    font-style: italic;
    margin-left: auto;
}

.mm-auto-save-status.saving {
    color: var(--mm-warning);
}

.mm-auto-save-status.saved {
    color: var(--mm-success-text);
}

/* Draft restored notice */
.mm-draft-restored-notice {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    margin-bottom: 16px;
    background: var(--mm-warning-bg);
    border: 1px solid var(--mm-warning-border);
    border-radius: var(--mm-radius-sm);
    color: var(--mm-warning-text);
    font-size: 14px;
    line-height: 1.4;
}

.mm-draft-restored-notice .dashicons {
    flex-shrink: 0;
    font-size: 18px;
    width: 18px;
    height: 18px;
}

.mm-draft-restored-notice span:not(.dashicons) {
    flex: 1;
}

.mm-draft-restored-dismiss {
    background: none;
    border: none;
    color: var(--mm-warning-text);
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    padding: 0 2px;
    opacity: 0.7;
}

.mm-draft-restored-dismiss:hover {
    opacity: 1;
}

/* Field change indicator toggle (sits inside the label, inline with text) */
.mm-field-change-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    margin-left: 6px;
    vertical-align: baseline;
    color: var(--mm-warning);
    opacity: 0.85;
    transition: opacity 0.15s;
    font-weight: normal;
}

.mm-field-change-toggle:hover {
    opacity: 1;
}

.mm-field-change-toggle .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* Highlight field wrapper when it has local changes */
.mm-field-has-local-change {
    border-left: 3px solid var(--mm-warning);
    padding-left: 10px;
}

/* When showing server value, change indicator to blue */
.mm-field-showing-server .mm-field-change-toggle {
    color: var(--mm-primary);
}

.mm-field-showing-server {
    border-left-color: var(--mm-primary);
}

/* Description field revert icons (PDF descriptions & article image captions) */
.mm-desc-revert-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    margin-left: 6px;
    vertical-align: baseline;
    color: var(--mm-warning);
    opacity: 0.85;
    transition: opacity 0.15s;
}

.mm-desc-revert-icon:hover {
    opacity: 1;
}

.mm-desc-revert-icon .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.mm-desc-has-local-change {
    border-left: 2px solid var(--mm-warning);
    padding-left: 6px;
}

.mm-desc-showing-server .mm-desc-revert-icon {
    color: var(--mm-primary);
}

.mm-desc-showing-server {
    border-left-color: var(--mm-primary);
}

/* Gallery description revert icon positioning */
.mm-gallery-item-description {
    position: relative;
}

.mm-gallery-item-description .mm-desc-revert-icon {
    position: absolute;
    top: 50%;
    left: 4px;
    transform: translateY(-50%);
    margin-left: 0;
}

.mm-gallery-item-description.mm-desc-has-local-change input {
    padding-left: 22px;
}
