/* warframe.requires.management — service-specific styles
   Decrypt Ecosystem design system — v0.1
   Extends the Null_Point() substrate with Warframe-flavoured components.
   data-service="warframe" on <html> sets --color-accent to log amber.

   Key semantic decisions:
   - .plat-value: amber (--color-accent) — platinum is a persisted traded value. Correct.
   - .status-badge--sold: net cyan (--color-info) — a completed state, not active.
     Was amber before. Sold = past tense. Cyan = system record.
   - .status-badge--posted: success green — live and active on the market.
   - .status-badge--draft: muted — not yet committed.
   - .status-badge--cancelled: alarm red — ended without completion.
   - service-card hover: translateY(-1px) only, no box-shadow glow.
   - Relic reward card: amber left border on selected/active state.
*/

/* ── Pricing strategy selector ── */
.strategy-grid {
    display:               grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap:                   var(--space-3);
}

.strategy-card {
    padding:     var(--space-4);
    background:  var(--color-foreground);
    border:      1px solid var(--color-border);
    cursor:      pointer;
    transition:  border-color var(--transition-fast), background var(--transition-fast);
    text-align:  center;
}
.strategy-card:hover    { border-color: var(--color-accent); }
.strategy-card.selected {
    border-color: var(--color-accent);
    background:   color-mix(in srgb, var(--color-accent) 6%, var(--color-foreground));
}

.strategy-card__name {
    font-family:    var(--font-family-mono);
    font-size:      var(--font-small);
    color:          var(--color-text-primary);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom:  var(--space-1);
}

.strategy-card__desc {
    font-family: var(--font-family-mono);
    font-size:   var(--font-tiny);
    color:       var(--color-text-secondary);
}

/* ── Inventory table ── */
.inv-table {
    width:           100%;
    border-collapse: collapse;
    font-size:       var(--font-small);
}

.inv-table th {
    font-family:    var(--font-family-mono);
    font-size:      var(--font-tiny);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    /* Table headers are system labels → net cyan */
    color:          var(--color-info);
    text-align:     left;
    padding:        var(--space-2) var(--space-3);
    border-bottom:  1px solid var(--color-border);
}

.inv-table td {
    padding:       var(--space-3);
    border-bottom: 1px solid var(--color-divider);
    color:         var(--color-text-primary);
}

.inv-table tr:hover td { background: var(--color-surface-hover); }

.inv-table .item-name {
    display:     flex;
    align-items: center;
    gap:         var(--space-3);
}

.item-thumb {
    width:         32px;
    height:        32px;
    object-fit:    contain;
    border:        1px solid var(--color-border);
    background:    var(--color-background);
    flex-shrink:   0;
}

/* ── Listing status badges ── */
.status-badge {
    font-family:    var(--font-family-mono);
    font-size:      var(--font-tiny);
    letter-spacing: 0.10em;
    text-transform: uppercase;
    padding:        2px var(--space-2);
    border:         1px solid transparent;
}

/* draft — uncommitted, muted */
.status-badge--draft {
    color:        var(--color-text-secondary);
    border-color: var(--color-border);
}
/* posted — live on market → success green */
.status-badge--posted {
    color:        var(--color-success);
    border-color: color-mix(in srgb, var(--color-success) 30%, transparent);
}
/* sold — completed transaction → net cyan (past tense, system record) */
/* Not amber. Amber = active/persisted. Sold = archived. */
.status-badge--sold {
    color:        var(--color-info);
    border-color: color-mix(in srgb, var(--color-info) 30%, transparent);
}
/* cancelled — ended without completion → alarm red */
.status-badge--cancelled {
    color:        var(--color-danger);
    border-color: color-mix(in srgb, var(--color-danger) 30%, transparent);
}

/* ── Price display ── */
/* Platinum value = persisted traded value → amber correct */
.plat-value {
    font-family:    var(--font-family-mono);
    color:          var(--color-accent);
    letter-spacing: 0.04em;
}
.plat-value::after {
    content:      'p';
    font-size:    0.8em;
    opacity:      0.65;
    margin-left:  2px;
    color:        var(--color-text-secondary);
}

/* ── Market connection panel ── */
.wfm-connect-panel {
    background:  var(--color-foreground);
    border:      1px solid var(--color-border);
    padding:     var(--space-8);
    text-align:  center;
    max-width:   480px;
    margin:      0 auto;
}

.wfm-connect-panel h3     { margin-bottom: var(--space-3); }
.wfm-connect-panel p      { margin-bottom: var(--space-6); color: var(--color-text-secondary); }
.wfm-connect-panel .eyebrow { justify-content: center; display: flex; }

/* ── Search input ── */
.item-search {
    width:       100%;
    padding:     var(--space-3) var(--space-4);
    background:  var(--color-foreground);
    border:      1px solid var(--color-border);
    color:       var(--color-text-primary);
    font-family: var(--font-family-mono);
    font-size:   var(--font-base);
    outline:     none;
    transition:  border-color var(--transition-fast);
}
.item-search:focus { border-color: var(--color-accent); }
.item-search::placeholder { color: var(--color-text-disabled); font-style: normal; }

/* ── Item search results dropdown ── */
.search-results {
    position:   absolute;
    top:        100%;
    left:       0;
    right:      0;
    background: var(--color-foreground);
    border:     1px solid var(--color-border);
    border-top: none;
    max-height: 320px;
    overflow-y: auto;
    z-index:    50;
}

.search-result-item {
    display:     flex;
    align-items: center;
    gap:         var(--space-3);
    padding:     var(--space-3) var(--space-4);
    cursor:      pointer;
    transition:  background var(--transition-fast);
    font-size:   var(--font-small);
}
.search-result-item:hover { background: var(--color-surface-raised); }

.search-result-item .item-name-text { color: var(--color-text-primary); }
.search-result-item .item-slug-text {
    font-family: var(--font-family-mono);
    font-size:   var(--font-tiny);
    color:       var(--color-text-disabled);
    margin-left: auto;
}

/* ── Card header pattern ── */
.card-header {
    display:         flex;
    align-items:     center;
    justify-content: space-between;
    margin-bottom:   var(--space-4);
    padding-bottom:  var(--space-4);
    border-bottom:   1px solid var(--color-divider);
}

/* Card titles use mono — Decrypt terminal voice, not stencil display */
.card-title {
    font-family:    var(--font-family-mono);
    font-size:      var(--font-h4);
    font-weight:    400;
    color:          var(--color-text-primary);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

/* ── Relic reward card meta rows ── */
.relic-card__meta-row {
    display:         flex;
    align-items:     baseline;
    justify-content: space-between;
    gap:             var(--space-3);
}

.relic-card__meta-label {
    font-family:  var(--font-family-mono);
    font-size:    var(--font-tiny);
    /* Relic meta labels are system voice → net cyan */
    color:        var(--color-info);
    white-space:  nowrap;
    flex-shrink:  0;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    opacity:      0.75;
}

.relic-card__meta-value {
    font-family: var(--font-family-mono);
    font-size:   var(--font-tiny);
    color:       var(--color-text-secondary);
    text-align:  right;
}

/* ── Relic reward active/selected state ── */
.relic-card--active {
    border-left: 2px solid var(--color-accent);
}

/* ── Daemon connection status ── */
/* Used in settings panel — status-badge--posted repurposed */
/* but also provide explicit daemon states */
.daemon-status {
    display:        inline-flex;
    align-items:    center;
    gap:            var(--space-2);
    font-family:    var(--font-family-mono);
    font-size:      var(--font-tiny);
    letter-spacing: 0.10em;
    text-transform: uppercase;
}

.daemon-status__dot {
    width:         5px;
    height:        5px;
    border-radius: 50%;
    background:    var(--color-border);
    flex-shrink:   0;
}

.daemon-status--online  .daemon-status__dot { background: var(--color-success); }
.daemon-status--online                      { color: var(--color-success); }
.daemon-status--active  .daemon-status__dot { background: var(--color-accent); }
.daemon-status--active                      { color: var(--color-accent); }
.daemon-status--offline .daemon-status__dot { background: var(--color-border); }
.daemon-status--offline                     { color: var(--color-text-disabled); }
.daemon-status--alarm   .daemon-status__dot { background: var(--color-danger); }
.daemon-status--alarm                       { color: var(--color-danger); }

/* ── Cursor blink — live/waiting indicator ── */
/* One per view max. Never on static content. */
@keyframes cursor-blink {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

.cursor-blink {
    animation:  cursor-blink 1.1s step-end infinite;
    color:      var(--color-accent);
    font-family: var(--font-family-mono);
}

/* ── Log entry append animation ── */
@keyframes log-entry-in {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.log-entry--new {
    animation: log-entry-in 180ms ease-out both;
}

/* ── Tier watchlist badges ── */
.tier-badge {
    font-family:    var(--font-family-mono);
    font-size:      var(--font-micro);
    letter-spacing: 0.10em;
    text-transform: uppercase;
    padding:        1px var(--space-2);
    border:         1px solid transparent;
}

.tier-badge--hot {
    color:        var(--color-danger);
    border-color: color-mix(in srgb, var(--color-danger) 30%, transparent);
}
.tier-badge--active {
    color:        var(--color-accent);
    border-color: color-mix(in srgb, var(--color-accent) 30%, transparent);
}
.tier-badge--passive {
    color:        var(--color-text-disabled);
    border-color: var(--color-border);
}
