/** TesImpôts Design System 2.0 — Components */
.ti-button{min-height:44px;border-radius:var(--ti-radius-md,14px);transition:transform var(--ti-duration-normal) var(--ti-ease-standard),box-shadow var(--ti-duration-normal) var(--ti-ease-standard),background var(--ti-duration-normal) var(--ti-ease-standard)}
.ti-button:hover{transform:translateY(-1px)}
.ti-button:active{transform:translateY(0)}
.ti-button[aria-disabled="true"],.ti-button.is-loading{pointer-events:none;opacity:.68}
.ti-card,.ti-ui-panel{border:1px solid var(--ti-border-subtle);border-radius:var(--ti-radius-lg,18px);background:var(--ti-surface-raised);box-shadow:var(--ti-shadow-sm,0 6px 18px rgba(0,28,69,.06))}
.ti-card{position:relative;overflow:hidden;transition:transform var(--ti-duration-normal) var(--ti-ease-standard),box-shadow var(--ti-duration-normal) var(--ti-ease-standard),border-color var(--ti-duration-normal) var(--ti-ease-standard)}
.ti-card:hover{transform:translateY(-2px);border-color:rgba(0,28,69,.2);box-shadow:var(--ti-shadow-md,0 14px 34px rgba(0,28,69,.10))}
.ti-card[data-ti-accent]::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--ti-card-accent,var(--ti-accent))}
.ti-stat-card{display:flex;min-height:150px;padding:22px;gap:18px}
.ti-stat-card__icon{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;border-radius:14px;color:var(--ti-primary);background:var(--ti-surface-alt,#eef3f9)}
.ti-stat-card__content{min-width:0;flex:1}.ti-stat-card__label{display:block;color:var(--ti-text-muted);font-size:13px;font-weight:700}.ti-stat-card__value{display:block;margin-top:8px;color:var(--ti-primary);font-size:34px;font-weight:900;line-height:1;letter-spacing:-.04em}.ti-stat-card__meta{display:flex;align-items:center;gap:7px;margin-top:12px;color:var(--ti-text-muted);font-size:12px}.ti-stat-card__meta.is-positive{color:var(--ti-success,#17663b)}.ti-stat-card__meta.is-negative{color:var(--ti-red,#d41118)}
.ti-empty-state{display:flex;min-height:280px;padding:42px 24px;align-items:center;justify-content:center;text-align:center}.ti-empty-state__inner{max-width:480px}.ti-empty-state__icon{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 18px;border-radius:22px;color:var(--ti-primary);background:var(--ti-surface-alt,#eef3f9)}.ti-empty-state h3{margin:0;color:var(--ti-primary);font-size:22px}.ti-empty-state p{margin:9px 0 20px;color:var(--ti-text-muted);line-height:1.6}
.ti-skeleton{display:block;overflow:hidden;border-radius:8px;background:#e8edf4}.ti-skeleton::after{content:"";display:block;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);transform:translateX(-100%);animation:ti-skeleton 1.35s infinite}@keyframes ti-skeleton{100%{transform:translateX(100%)}}
.ti-spinner{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ti-spin .7s linear infinite}@keyframes ti-spin{to{transform:rotate(360deg)}}
.ti-icon{stroke-linecap:round;stroke-linejoin:round}

/* UI Framework 8.0 — complete component library */
.ti-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border:1px solid transparent;text-decoration:none!important;font-weight:750;line-height:1;cursor:pointer}
.ti-button-primary{background:var(--ti-primary);color:#fff}.ti-button-primary:hover{background:var(--ti-primary-hover);color:#fff}
.ti-button-secondary{border-color:var(--ti-border-subtle);background:#fff;color:var(--ti-primary)}
.ti-button-outline{border-color:var(--ti-primary);background:transparent;color:var(--ti-primary)}
.ti-button-ghost{background:transparent;color:var(--ti-primary)}.ti-button-ghost:hover{background:var(--ti-surface-subtle)}
.ti-button-dark{background:#101828;color:#fff}.ti-button-danger{background:var(--ti-danger);color:#fff}.ti-button-success{background:var(--ti-success);color:#fff}
.ti-icon-button{display:inline-grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--ti-border-subtle);border-radius:12px;background:#fff;color:var(--ti-primary);cursor:pointer}
.ti-alert{display:flex;gap:14px;padding:16px;border:1px solid;border-radius:var(--ti-radius-md);background:#fff}.ti-alert strong{display:block;color:var(--ti-text-strong)}.ti-alert p{margin:4px 0 0;color:var(--ti-text-muted)}
.ti-alert-success{border-color:#b9dfca;background:var(--ti-success-soft)}.ti-alert-info{border-color:#b9d9f2;background:var(--ti-info-soft)}.ti-alert-warning{border-color:#efd39e;background:var(--ti-warning-soft)}.ti-alert-danger{border-color:#edb8b8;background:var(--ti-danger-soft)}
.ti-field{display:flex;flex-direction:column;gap:7px}.ti-field__label{color:var(--ti-text-strong);font-size:13px;font-weight:800}.ti-field__label span{color:var(--ti-danger)}
.ti-input,.ti-select,.ti-textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--ti-border-subtle);border-radius:var(--ti-radius-md);background:#fff;color:var(--ti-text-strong);font:inherit;transition:border-color var(--ti-duration-normal),box-shadow var(--ti-duration-normal)}
.ti-textarea{resize:vertical}.ti-input:focus,.ti-select:focus,.ti-textarea:focus{outline:0;border-color:var(--ti-primary);box-shadow:var(--ti-focus-ring)}.ti-field.has-error .ti-input{border-color:var(--ti-danger)}.ti-field__message{color:var(--ti-text-muted);font-size:12px}.ti-field__message--error{color:var(--ti-danger)}
.ti-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.ti-form-grid .ti-field:last-child{grid-column:1/-1}
.ti-table-wrap{overflow:hidden;border:1px solid var(--ti-border-subtle);border-radius:var(--ti-radius-lg);background:#fff;box-shadow:var(--ti-shadow-sm)}.ti-table-scroll{overflow:auto}.ti-table{width:100%;border-collapse:collapse}.ti-table th,.ti-table td{padding:14px 16px;border-bottom:1px solid var(--ti-border-subtle);text-align:left;vertical-align:middle}.ti-table th{background:var(--ti-surface-subtle);color:var(--ti-text-muted);font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.ti-table tbody tr:hover{background:#fbfcfe}.ti-table tbody tr:last-child td{border-bottom:0}.ti-table__empty{text-align:center!important;color:var(--ti-text-muted)}.ti-table__subline{display:block;margin-top:3px;color:var(--ti-text-muted)}
.ti-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:850}.ti-pill--success{background:var(--ti-success-soft);color:var(--ti-success)}.ti-pill--warning{background:var(--ti-warning-soft);color:var(--ti-warning)}
.ti-tabs__list{display:flex;gap:4px;border-bottom:1px solid var(--ti-border-subtle)}.ti-tabs__tab{padding:11px 14px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ti-text-muted);font-weight:800;cursor:pointer}.ti-tabs__tab.is-active{border-bottom-color:var(--ti-accent);color:var(--ti-primary)}.ti-tabs__panel{padding:20px 4px 4px}.ti-tabs__panel[hidden]{display:none}
.ti-modal[hidden]{display:none}.ti-modal{position:fixed;z-index:var(--ti-z-modal);inset:0;display:grid;place-items:center;padding:24px}.ti-modal__backdrop{position:absolute;inset:0;background:rgba(0,19,48,.62);backdrop-filter:blur(3px)}.ti-modal__dialog{position:relative;width:min(560px,100%);max-height:min(720px,calc(100vh - 48px));overflow:auto;border-radius:var(--ti-radius-xl);background:#fff;box-shadow:var(--ti-shadow-lg)}.ti-modal__header,.ti-modal__footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--ti-border-subtle)}.ti-modal__header h2{margin:0;color:var(--ti-primary)}.ti-modal__body{padding:22px}.ti-modal__footer{justify-content:flex-end;border-top:1px solid var(--ti-border-subtle);border-bottom:0}
.ti-dropdown{position:relative;display:inline-flex}.ti-dropdown__menu{position:absolute;z-index:var(--ti-z-dropdown);top:calc(100% + 8px);right:0;min-width:220px;padding:7px;border:1px solid var(--ti-border-subtle);border-radius:14px;background:#fff;box-shadow:var(--ti-shadow-md)}.ti-dropdown__menu[hidden]{display:none}.ti-dropdown__menu a{display:flex;align-items:center;gap:9px;padding:10px;border-radius:9px;color:var(--ti-text-strong);text-decoration:none}.ti-dropdown__menu a:hover{background:var(--ti-surface-subtle)}
.ti-tooltip{position:relative;display:inline-flex}.ti-tooltip::after{content:attr(data-tooltip);position:absolute;z-index:var(--ti-z-toast);width:max-content;max-width:240px;padding:7px 9px;border-radius:8px;background:#101828;color:#fff;font-size:12px;line-height:1.35;opacity:0;pointer-events:none;transform:translate(-50%,-4px);transition:opacity var(--ti-duration-fast),transform var(--ti-duration-fast)}.ti-tooltip[data-position="top"]::after{left:50%;bottom:calc(100% + 8px)}.ti-tooltip:hover::after,.ti-tooltip:focus-within::after{opacity:1;transform:translate(-50%,0)}
.ti-playground-nav{position:sticky;z-index:20;top:32px;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:24px;padding:8px;border:1px solid var(--ti-border-subtle);border-radius:16px;background:rgba(255,255,255,.94);box-shadow:var(--ti-shadow-sm);backdrop-filter:blur(12px)}.ti-playground-nav a{padding:8px 10px;border-radius:9px;color:var(--ti-primary);font-size:12px;font-weight:800;text-decoration:none}.ti-playground-nav a:hover{background:var(--ti-surface-subtle)}
.ti-playground-section{scroll-margin-top:110px;margin:0 0 28px;padding:24px;border:1px solid var(--ti-border-subtle);border-radius:var(--ti-radius-xl);background:#fff;box-shadow:var(--ti-shadow-sm)}.ti-playground-section>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.ti-playground-section h2{margin:0;color:var(--ti-primary);font-size:23px}.ti-playground-section code{padding:6px 9px;border-radius:8px;background:var(--ti-surface-subtle);color:var(--ti-accent)}.ti-preview{padding:22px}.ti-preview--row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ti-skeleton-stack{display:grid;gap:12px;margin-bottom:24px}
@media(max-width:700px){.ti-form-grid{grid-template-columns:1fr}.ti-playground-section{padding:18px}.ti-playground-section>header{flex-direction:column}.ti-table th,.ti-table td{padding:11px 12px}}
