.cmn-modal-overlay{position:fixed;inset:0;background:#00000073;opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:400;display:flex;align-items:center;justify-content:center}.cmn-modal-overlay.open{opacity:1;pointer-events:auto}.cmn-modal-box{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 40px #00000040;width:440px;max-width:92vw;max-height:90vh;display:flex;flex-direction:column;transform:scale(.96);opacity:0;transition:transform .18s cubic-bezier(.4,0,.2,1),opacity .18s ease;z-index:401;color:var(--text)}.cmn-modal-overlay.open .cmn-modal-box{transform:scale(1);opacity:1}.cmn-modal-header{display:flex;align-items:center;gap:10px;padding:14px 18px 6px}.cmn-modal-title{flex:1;font-size:1rem;font-weight:600;margin:0}.cmn-modal-close{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:1.05rem;padding:4px 8px;border-radius:4px;font-family:inherit}.cmn-modal-close:hover{background:#7f7f7f1f;color:var(--text)}.cmn-modal-body{padding:10px 18px 4px;overflow-y:auto;font-size:.9rem;line-height:1.45}.cmn-modal-msg{margin:0 0 10px;word-break:break-word}.cmn-modal-input,.cmn-modal-select{width:100%;font:inherit;font-size:.88rem;padding:7px 9px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);outline:none;box-sizing:border-box}.cmn-modal-input:focus,.cmn-modal-select:focus{border-color:var(--accent)}.cmn-modal-input.invalid{border-color:var(--err)}.cmn-modal-hint{font-size:.78rem;color:var(--text-muted);margin-top:4px}.cmn-modal-status{font-size:.82rem;padding:4px 18px 0;min-height:1em}.cmn-modal-status.info{color:var(--text-muted)}.cmn-modal-status.success{color:var(--accent)}.cmn-modal-status.err{color:var(--err)}.cmn-modal-progress{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin:8px 18px 0}.cmn-modal-progress-fill{height:100%;width:0%;background:var(--accent);transition:width .2s linear}.cmn-modal-actions{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px 16px}.cmn-modal-btn{font:inherit;font-size:.85rem;font-weight:600;padding:7px 14px;border:1px solid var(--border);border-radius:5px;background:var(--surface);color:var(--text);cursor:pointer;transition:filter .15s ease,background .15s ease,border-color .15s ease}.cmn-modal-btn:hover:not(:disabled){filter:brightness(1.06)}.cmn-modal-btn:disabled{opacity:.55;cursor:not-allowed}.cmn-modal-btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.cmn-modal-btn.danger{background:var(--err);color:#fff;border-color:var(--err)}@media (max-width: 480px){.cmn-modal-box{width:96vw}.cmn-modal-actions{flex-wrap:wrap}.cmn-modal-btn{flex:1 1 auto}}.drawer-overlay{position:fixed;inset:0;background:#00000059;opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:200}.drawer-overlay.open{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:95vw;background:var(--surface);box-shadow:-4px 0 24px #0000001f;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:201;display:flex;flex-direction:column}.drawer.open{transform:translate(0)}.drawer-header{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--border)}.drawer-title{font-size:1rem;font-weight:600;flex:1;margin:0}.drawer-close,.drawer-back{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:1.1rem;padding:4px 8px;border-radius:4px;transition:background .18s ease,color .18s ease;font-family:inherit}.drawer-close:hover,.drawer-back:hover{background:#7f7f7f1f;color:var(--text)}.drawer-body{flex:1;overflow-y:auto;padding:14px 20px}.drawer-footer{padding:12px 20px;border-top:1px solid var(--border)}[dir=rtl] .drawer{right:auto;left:0;transform:translate(-100%);box-shadow:4px 0 24px #0000001f}[dir=rtl] .drawer.open{transform:translate(0)}.cmn-overlay{position:absolute;inset:0;border-radius:inherit;background:#ffffffe0;display:flex;align-items:center;justify-content:center;z-index:50}.cmn-overlay-content{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.cmn-overlay-text{font-weight:600;color:var(--text)}.cmn-overlay.variant-error{background:#fff0f0e6}.cmn-overlay.variant-loading{background:#f8fafce0}.cmn-overlay.variant-success{background:#f0fdf4e6}.cmn-overlay.variant-busy{background:#f8fafce0}
