/*
 * Cesivi WebUI Icon System — CSS contract for the SVG sprite at
 * /icons/sprite.svg. Owned by PLAN-1324 (raw-emoji → SVG migration).
 *
 * Loaded as a versioned <link> via _ModernCssLinks.cshtml (page tier),
 * consumed by all modern layouts.
 *
 * The Tabler outline icons in sprite.svg expect:
 *   stroke="currentColor"
 *   stroke-width="2" (24x24 viewBox)
 *   stroke-linecap="round"
 *   stroke-linejoin="round"
 *   fill="none"
 * These are applied here via CSS so the sprite XML stays minimal.
 */

.sp-icon {
    width: 1em;
    height: 1em;
    display: inline-block;
    vertical-align: -0.125em; /* matches font baseline; emoji-equivalent placement */
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    /* Defensive: when used inside a colored container, do not leak background */
    background: transparent;
    /* Predictable hit area for buttons that wrap an icon-only label */
    flex-shrink: 0;
}

/*
 * Size variants — most callers pick up the surrounding font-size, but a few
 * deliberately want a fixed display size (empty-state hero, drop-zone, etc.).
 */
.sp-icon--lg  { width: 1.5em;  height: 1.5em; }
.sp-icon--xl  { width: 2em;    height: 2em; }
.sp-icon--2xl { width: 2.5em;  height: 2.5em; }
.sp-icon--3xl { width: 3rem;   height: 3rem; }

/*
 * Empty-state / drop-zone hero icons traditionally rendered as 32-48px emoji.
 * These class hooks let leaf templates keep their existing layout while
 * receiving an appropriately sized SVG.
 */
.sp-empty-state-icon .sp-icon,
.spm-dropzone-icon .sp-icon,
.osr-empty-icon .sp-icon,
.docset-icon .sp-icon {
    width: 2em;
    height: 2em;
}
