*{box-sizing:border-box;margin:0;padding:0}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460)}.login-card{background:#fff;border-radius:16px;padding:3rem 2.5rem;text-align:center;box-shadow:0 20px 60px #0000004d;max-width:420px;width:90%}.login-card h1{font-size:1.6rem;color:#1a1a2e;margin-bottom:.5rem}.login-subtitle{color:#888;font-size:.9rem;margin-bottom:2rem}.login-btn{display:inline-flex;align-items:center;gap:.6rem;padding:.75rem 1.5rem;border:1px solid #ddd;border-radius:8px;background:#fff;color:#1a1a2e;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s}.login-btn:hover:not(:disabled){border-color:#4361ee;background:#f0f4ff}.login-btn:disabled{opacity:.6;cursor:not-allowed}.ms-logo{width:20px;height:20px;flex-shrink:0}.login-error{color:#e74c3c;font-size:.85rem;margin-top:1rem}.user-bar{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:.75rem}.user-name{font-size:.85rem;color:#555}.logout-btn{padding:.25rem .75rem;border:1px solid #ddd;border-radius:6px;background:#fff;color:#888;font-size:.75rem;cursor:pointer;transition:all .2s}.logout-btn:hover{border-color:#e74c3c;color:#e74c3c;background:#fdedec}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5;color:#1a1a2e;background:#f0f2f5;min-height:100vh}.app{max-width:1600px;margin:0 auto;padding:2rem 1rem}.header{text-align:center;margin-bottom:2rem}.header h1{font-size:2rem;color:#1a1a2e;margin-bottom:.25rem}.subtitle{color:#666;margin-bottom:1rem}.header-actions{display:flex;justify-content:center;align-items:center;gap:1.5rem;flex-wrap:wrap}.view-toggle{display:inline-flex;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.view-toggle button{padding:.5rem 1.5rem;border:none;background:#fff;color:#666;cursor:pointer;font-size:.9rem;transition:all .2s}.view-toggle button.active{background:#4361ee;color:#fff}.io-toolbar{position:fixed;top:.75rem;right:1rem;display:flex;gap:.35rem;z-index:50}.io-btn{padding:.3rem .6rem;border:1px solid #ddd;border-radius:6px;background:#fff;color:#555;font-size:.7rem;cursor:pointer;transition:all .2s;white-space:nowrap;display:inline-flex;align-items:center;gap:.2rem}.io-btn:hover{border-color:#4361ee;color:#4361ee;background:#f0f4ff}.legend{display:flex;justify-content:center;gap:1.5rem;margin-bottom:1.5rem;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:#555}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.dot-implemented,.dot-green{background:#2ecc71}.dot-supported,.dot-blue{background:#4361ee}.dot-partner{background:#64b5f6}.dot-pending,.dot-yellow{background:#f39c12}.dot-unavailable,.dot-red{background:#e74c3c}.dot-none,.dot-gray{background:#ddd}.filter-bar{display:flex;gap:1.5rem;margin-bottom:1rem;padding:.75rem 1rem;background:#fff;border-radius:10px;box-shadow:0 1px 4px #0000000f;align-items:flex-start;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.35rem}.filter-label{font-size:.75rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.03em}.filter-chips{display:flex;flex-wrap:wrap;gap:.3rem}.filter-chip{padding:.25rem .6rem;border:1px solid #ddd;border-radius:14px;background:#f8f9fa;color:#888;font-size:.75rem;cursor:pointer;transition:all .15s;white-space:nowrap}.filter-chip:hover{border-color:#4361ee;color:#4361ee}.filter-chip.active{background:#e8eaf6;border-color:#4361ee;color:#4361ee;font-weight:500}.filter-chip.filter-reset{background:transparent;border-style:dashed;color:#999}.filter-chip.filter-reset:hover{border-color:#e74c3c;color:#e74c3c}.filter-select{padding:.3rem .6rem;border:1px solid #ddd;border-radius:8px;font-size:.8rem;background:#fff;color:#1a1a2e;cursor:pointer;outline:none;transition:border-color .2s}.filter-select:focus{border-color:#4361ee}.matrix-wrapper{overflow-x:auto;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014}.matrix{width:100%;border-collapse:collapse;font-size:.85rem}.matrix th{background:#1a1a2e;color:#fff;padding:.75rem .5rem;text-align:center;position:sticky;top:0;z-index:10;min-width:120px}.matrix th.sticky-col{left:0;z-index:20;min-width:220px;text-align:left;padding-left:1rem}.provider-header{display:flex;flex-direction:column;gap:.2rem}.endpoint{font-size:.7rem;opacity:.7;font-weight:400}.matrix td{padding:.5rem;border-bottom:1px solid #eee;text-align:center;cursor:pointer;transition:background .15s}.matrix td:hover{filter:brightness(.95)}.matrix td.sticky-col{position:sticky;left:0;background:#fff;z-index:5;text-align:left;padding-left:1rem;font-weight:500;cursor:default}.func-name{white-space:nowrap}.sub-row .func-name{padding-left:2rem!important;font-weight:400;color:#555}.section-row .func-name{font-weight:700;color:#1a1a2e;background:#f8f9fa!important}.section-row td{background:#f8f9fa}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:.3rem;vertical-align:middle}.status-label{font-size:.8rem;vertical-align:middle}.doc-row{background:#f0f2f5;border-top:2px solid #ddd}.doc-row td{padding:.6rem .5rem;text-align:center}.doc-row .sticky-col{font-weight:700;background:#f0f2f5!important}.doc-link{color:#4361ee;text-decoration:none;font-weight:600;font-size:.85rem}.doc-link:hover{text-decoration:underline}.doc-cell{cursor:pointer}.no-doc{color:#ccc}.no-doc.clickable{color:#aab;font-size:.8rem;cursor:pointer;transition:color .2s}.no-doc.clickable:hover{color:#4361ee}.cell-implemented{background:#eafaf1}.cell-supported{background:#e8eaf6}.cell-partner{background:#e1f0ff}.cell-pending{background:#fef9e7}.cell-unavailable{background:#fdedec}.cell-none{background:#fafafa}.cards-wrapper{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1.5rem}.provider-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.card-header{padding:1.25rem 1.25rem .75rem;border-bottom:1px solid #eee}.card-header h2{font-size:1.2rem;color:#1a1a2e;margin-bottom:.25rem}.endpoint-badge{display:inline-block;background:#e8eaf6;color:#4361ee;padding:.15rem .6rem;border-radius:12px;font-size:.75rem;margin-bottom:.5rem}.card-stats{display:flex;gap:.75rem;margin-top:.5rem}.stat{font-size:.8rem;font-weight:600;padding:.15rem .5rem;border-radius:6px}.stat-green{background:#eafaf1;color:#27ae60}.stat-blue{background:#e8eaf6;color:#4361ee}.stat-lightblue{background:#e1f0ff;color:#64b5f6}.stat-yellow{background:#fef9e7;color:#e67e22}.stat-red{background:#fdedec;color:#c0392b}.card-progress{padding:.5rem 1.25rem}.progress-bar{height:6px;background:#eee;border-radius:3px;display:flex;overflow:hidden}.progress-green{background:#2ecc71;transition:width .3s}.progress-blue{background:#4361ee;transition:width .3s}.progress-lightblue{background:#64b5f6;transition:width .3s}.progress-yellow{background:#f39c12;transition:width .3s}.card-doc{padding:.25rem 1.25rem .5rem}.card-doc a{color:#4361ee;font-size:.85rem;text-decoration:none}.card-doc a:hover{text-decoration:underline}.card-info{padding:0 1.25rem .5rem;font-size:.8rem;color:#888}.card-assessment{padding:0 1.25rem .75rem;font-size:.82rem;color:#444;background:#f8f9fa;margin:0 .75rem .5rem;border-radius:6px;padding:.5rem .75rem;border-left:3px solid #6c5ce7}.card-functions{list-style:none;padding:.5rem 0;max-height:500px;overflow-y:auto}.card-functions li{display:flex;align-items:center;gap:.5rem;padding:.4rem 1.25rem;cursor:pointer;transition:background .15s;font-size:.85rem}.card-functions li:hover{background:#f8f9fa}.child-func{padding-left:2.5rem!important;color:#555}.section-func{font-weight:700;background:#f8f9fa;cursor:default!important}.func-section-header{grid-column:1 / -1;padding:1rem 0 .25rem}.func-section-header h2{font-size:1.1rem;color:#1a1a2e;border-bottom:2px solid #ddd;padding-bottom:.3rem}.func-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.func-card-parent{border-left:3px solid #4361ee}.func-section-toggle{cursor:pointer;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;user-select:none;padding-right:.5rem}.func-section-toggle:hover h2{color:#4361ee}.card-header-toggle{cursor:pointer;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;user-select:none}.card-header-toggle:hover{background:#f8f9fa}.toggle-icon{font-size:.85rem;color:#999;flex-shrink:0;margin-left:.75rem}.card-collapsible{animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:2000px}}.func-child-section{border-top:1px solid #eee;padding-top:.5rem}.func-child-header{display:flex;align-items:center;justify-content:space-between;padding:.25rem 1.25rem 0;gap:.75rem}.func-child-header h3{font-size:.95rem;color:#555;font-weight:600}.func-child-header .card-stats{margin-top:0}.func-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.func-label{flex:1}.func-status-text{font-size:.75rem;color:#888;flex-shrink:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:12px;padding:2rem;max-width:500px;width:90%;position:relative;box-shadow:0 10px 40px #0003}.modal-close{position:absolute;top:.75rem;right:1rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:#999}.modal h3{margin-bottom:1.25rem;color:#1a1a2e}.modal-field{margin-bottom:1rem}.modal-field label{display:block;font-size:.85rem;font-weight:600;color:#555;margin-bottom:.35rem}.status-select-wrapper{display:flex;align-items:center;gap:.5rem}.status-select{flex:1;padding:.5rem .75rem;border:1px solid #ddd;border-radius:8px;font-size:.9rem;background:#fff;color:#1a1a2e;cursor:pointer;outline:none;transition:border-color .2s}.status-select:focus{border-color:#4361ee}.status-dot.large{width:16px;height:16px;flex-shrink:0}.detail-textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:8px;font-size:.9rem;font-family:inherit;resize:vertical;outline:none;transition:border-color .2s;color:#1a1a2e}.detail-textarea:focus{border-color:#4361ee}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.25rem}.btn{padding:.5rem 1.25rem;border:none;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .2s}.btn-cancel{background:#f0f2f5;color:#666}.btn-cancel:hover{background:#e0e2e5}.btn-save{background:#4361ee;color:#fff}.btn-save:hover{background:#3451de}.btn-save:disabled{background:#b0b0b0;cursor:not-allowed}.add-provider-col{min-width:50px!important;width:50px;cursor:pointer;transition:background .2s}.add-provider-col:hover{background:#2a2a4e!important}.add-provider-btn{font-size:1.5rem;font-weight:300;opacity:.7}.add-provider-col-cell{width:50px;min-width:50px;cursor:default!important;background:#fafafa!important}.add-provider-card{cursor:pointer;border:2px dashed #ccc;background:transparent;transition:all .2s;min-height:200px;display:flex;align-items:center;justify-content:center}.add-provider-card:hover{border-color:#4361ee;background:#f0f4ff}.add-provider-placeholder{display:flex;flex-direction:column;align-items:center;gap:.5rem;color:#999;font-size:.95rem}.add-provider-icon{font-size:2.5rem;font-weight:300;line-height:1;color:#bbb}.add-provider-card:hover .add-provider-placeholder,.add-provider-card:hover .add-provider-icon{color:#4361ee}.modal-wide{max-width:700px}.add-provider-func-list{max-height:400px;overflow-y:auto;border:1px solid #eee;border-radius:8px}.add-provider-func-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;border-bottom:1px solid #f0f0f0}.add-provider-func-row:last-child{border-bottom:none}.add-provider-section{background:#f8f9fa;font-weight:700;padding:.5rem .75rem}.add-provider-child{padding-left:1.5rem}.add-provider-func-name{flex:1;font-size:.85rem;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.add-provider-comment{flex:0 0 180px;padding:.3rem .5rem;border:1px solid #ddd;border-radius:6px;font-size:.8rem;font-family:inherit;outline:none;transition:border-color .2s}.add-provider-comment:focus{border-color:#4361ee}.func-edit-icon{font-size:.85rem;color:#bbb;cursor:pointer;margin-left:.3rem;transition:color .2s}.func-edit-icon:hover{color:#4361ee}.func-detail-block{padding:.5rem 1.25rem;border-top:1px solid #eee}.func-description{font-size:.85rem;color:#555;line-height:1.5;margin-bottom:.5rem}.func-code{background:#1a1a2e;color:#e0e0e0;padding:.75rem 1rem;border-radius:8px;font-size:.8rem;overflow-x:auto;white-space:pre;line-height:1.4}.func-code code{font-family:Fira Code,Consolas,Monaco,monospace}.code-textarea{font-family:Fira Code,Consolas,Monaco,monospace;font-size:.85rem;-moz-tab-size:2;tab-size:2}
